Integrity in the database
An entry cannot post unless it balances and has at least one line โ
an entry with no lines trivially sums to zero, which is the easy bug. Once posted it
cannot be edited, deleted or un-posted by any code path. Corrections are reversing
entries only, and posted entries are chained by SHA-256 so tampering shows even if the
triggers were dropped.
GST/QST that reports per component
QST is computed on the pre-GST base, not compounded. Rates carry validity dates โ
Nova Scotia moved 15% to 14% inside the first fiscal year, so a rate change is a data
edit, not a code change. Zero-rated and exempt stay distinct: both
charge no tax, but only zero-rated preserves recovery, and merging them forfeits
refunds quietly.
Trading segmented, deliberately
Trading results sit in their own block rather than folded into revenue. It is not
cosmetic โ a statement reading as mostly investment income invites the specified
investment business question. Both presentations produce identical net income, and a
test asserts it.
Foreign currency held, not converted
Translation measures every transaction in CAD for reporting; conversion is an actual
exchange. USD costs are paid from USD cash and only the residual is ever converted.
Realized FX books on settlement; unrealized on revaluation, and only monetary balances
are retranslated.
Reconciled, not asserted
The first fiscal year ties to the previous system month by month. Twelve accounts
agree to the cent; six differ for recorded reasons and must net to zero between
themselves โ which is what a presentation difference looks like, as against a
difference in the numbers.
Filed returns kept as fact
A working paper says what a return should say. The system separately records what it
did say, item by item, and reports the difference per component rather
than netting it โ because two errors in opposite directions nearly cancel, and netting
would hide both.