Compliance by Construction, Not Education


Most general ledgers handle SOX and GAAP compliance the same way: they hand you double-entry bookkeeping, a role-permissions screen, and a PDF of best practices, and then trust your team to follow all three, every time, for years. NetSuite is the reference point most people already know — powerful, configurable, and entirely dependent on your controller remembering to enforce the controls it makes possible rather than automatic.

That’s a teaching model. It scales the way training scales: well at first, worse as people turn over, worse still under deadline pressure, and worst of all in exactly the moment an auditor asks you to prove it held up for the last twelve months.

The alternative is to stop trusting discipline and start trusting architecture.

Concretely, that means:

  • Segregation of duties enforced at the command layer, not the UI. A clerk role that physically cannot invoke a reversal command doesn’t need a policy telling it not to — there’s no code path that would let it happen.
  • An append-only event store, not an editable “audit log” table. Every posted entry is permanent. Corrections post as new reversing entries. Nothing is ever overwritten, so there’s no scenario where a well-meaning edit quietly destroys the evidence an audit needs.
  • Write-time balance validation, not review-time. An unbalanced entry is rejected before it can be persisted at all — GAAP double-entry integrity isn’t a QA checkpoint, it’s the only path through the write.

None of this is a roadmap promise. It’s the current behavior of LedgerWriter’s core ledger domain — see ADR-02 for the event-sourcing model and ADR-05 for the full requirement-by-requirement SOX/GAAP mapping.

The bet is simple: a system that can’t drift out of compliance is worth more than a system that promises not to, no matter how good the promise sounds in a sales deck.

← Back to the blog