Originally created by: grynn-in
The warehouse says so when the historical rate is declared on the wrong kind of account, or keyed to one. Closes grynn-in/konsolidat#92's remaining finding. Pairs with grynn-in/konsol#241, which refuses the declaration at publish; they merge together.
The decision behind it (user, 16 Sep 2026). konsol does step two of IAS 21: it translates a functional-currency trial balance into the presentation currency, so the historical rate is for equity. Remeasuring books kept in a non-functional currency is the entity's own step one, upstream.
What was silent. gold_consolidated_trial_balance applies a historical rate only where the chart declares one, so two mistakes produced no signal at all:
historical that is not equity, which under translation-only is simply the wrong method;In both cases the number quietly falls back to the closing rate. That is konsolidat#92's finding 4: a misplaced rate is dropped without a word.
What changes. One singular test, assert_historical_is_equity_only, at error severity because each row is a wrong declaration rather than a missing input with a defined fallback. It returns one row per offender across both kinds, naming the account and its type, or the group, entity and account of the dead rate, and saying why it has no effect.
Verified: red then green on a fixture that must flag it, which now yields two results, the wrong declaration and the ignored rate, while sparing the equity rows beside them. Against a clone of the live warehouse the test passes: every account declaring historical there is equity, and no historical rate is declared at all.
Deploy: with konsol#241. No model SQL changed, so no rebuild is required for correctness; the next full build picks the test up.
🤖 Generated with Claude Code
Ticket changed by: grynn-in