Lab 18 / the whole platform, walked against the system
Every route in the five workspaces, every doctrine in the module documents, walked against the ten archetypes, twenty-four components and forty-three laws. Accounting got the deepest pass because it is the module the labs never gave a dedicated screen: thirty-six routes, an append-only journal, three-way matching, bank reconciliation, period close, segregation of duties and an AI agent that posts within a delegation.
The honest headline: the system holds, and the audit still earned its keep. It found three places where the system contradicts itself or the platform's own facts, one of which would have made accounting unbuildable as written, plus eight primitives the modules need that the labs never named, and a handful of places where the existing wireframes will have to change to comply.
01 / coverage
The strongest evidence came from accounting itself: its own design grammar, written independently, names five shapes, and they map onto the archetypes almost one to one. Two vocabularies arrived at the same building.
02 / the three contradictions
These are the reason to run an audit. All three are cheap to fix now and expensive after adoption.
Law K1/L10, written during the marketplace lab, says no supplier exists on any screen. But the accounting module has a Suppliers register, supplier statements, supplier ledgers and remittance advices, and it must: an agency has its own direct suppliers, DMCs, local operators, its contracted airlines, and those are the agency's own data in the agency's own books. The concealment ruling was about the marketplace's upstream wholesalers, where the agency buys from Tripbooks and Tripbooks is supplier number one.
Fix, applied: the law is rescoped. Marketplace sourcing is invisible everywhere: no wholesaler name, rate id or third party code reaches subscriber or traveller, and marketplace purchases post against Tripbooks as the supplier. The agency's own suppliers are their data, fully visible in their own books, and still never on a customer artefact. One sentence of scoping keeps both truths.
The specification names three places hue leaves disposition: the exposure tick, margin below floor, the destructive button. But the drift component, ruled in Lab 06, colours +1,240.00 red and −310.00 green, and the bills register colours a Difference beyond tolerance the same way. The list was wrong, not the component.
Fix, applied: the exceptions are restated as one family with one meaning: hue leaves disposition only for money moving against you: drift and match variance, margin below its floor, the exposure tick, the destructive button. Four members, one sentence, and the bills register's red Difference is now lawful instead of accidental.
Bad debts has Approve on the row. The Tripbooks AI queue has Accept and Reject with the evidence on the row. Both are correct designs and both break the law as written, which named a page instead of a principle.
Fix, applied: restated at the level that survives: a row carries a decision in place only when the decision is one of two words and every fact needed to make it is on the row. Anything else opens a dialog that states its consequence. Approvals, bad-debt approvals and the AI queue all pass; everything else still links out.
03 / additions
None of these bends an existing rule. Most are the fill rule and the gate finding yet more work to do.
Lab 08 built a condition counter for forms. The audit found the same shape five more times: send a quotation, sign off a reconciliation (enabled only when it ties), soft-close a period (only when the checklist is green), activate a supplier (once onboarding names nothing missing), hard-close (only from soft, only at quarter end). One primitive: segments count the conditions, the outstanding ones are named in words beside the control, the control is never disabled without that sentence, and passing it records who and when. The attestation is the gate plus a signature.
Already latent in three places: a marketplace rate point expanding to its options, batch payments grouped by supplier with subtotals, registers grouped by agent with per-currency rollups. Formalised: a parent row that expands to child rows and carries their subtotal. The parent obeys every cell rule; expansion is for children of the row, never for detail of the row, which stays the peek, the dialog or the record. This also settles the service desk's inline expansion, section 05.
Profit and loss, balance sheet, cash flow, the aged matrix, the trial balance, the customer statement, TOMS. All one shape the labs never named: label rows with mono figures right, section heads, a heavy rule above every subtotal, indent for containment, signed minus for negatives. It is the table grammar minus the toolbar, and it is what prints.
Every journal line carries a transaction amount and a functional amount with the stamped rate and its source. The registers show the row's currency and keep functional behind Columns. Formalised: transaction amount is primary, functional is secondary, the rate and source live in the tooltip, and the two never render at the same visual weight, so a converted figure can never be mistaken for an exact one. This is law L6 finally given its component.
Passport scans into the vault, supplier KYC files, recorded bills, brand logos, item library assets. No lab built a dropzone. Spec: a drop target that becomes a document row; an uploading file is hatched because it is literally open and in flight; refusal names the type or size limit; identity documents land straight behind the vault gate, never previewed on the way in. The fill rule's eighth job.
The vault's access half is designed; the surface that shows the file is not. Also needed by the tax document page, which renders the document beside its payload. Spec: a full-width document pane on the workspace grammar; for vaulted files it carries the grant countdown on the same clock component as the queue, and the file goes dark when the grant expires.
Departures, the Event Calendar, leave and availability, the service heatmap. Promoted from tool-space freedom to a specified component: a month grid where a day carries count and load, load is the sequential ramp (its second lawful use after the heatmap, same rule: colour carrying a quantity), and hard deadlines mark the day with a solid edge, soft with hatched.
The one true hierarchy on the platform. No node-and-wire diagrams: hierarchy renders as indented disclosure rows on the register grammar, one line per person, the same row anatomy as everywhere else. If a future surface genuinely needs a drawn tree it makes its case in a lab; nothing today does.
04 / stress
05 / adoption notes
Not gaps in the system; places where the built product predates it. Recorded so adoption is a checklist, not archaeology.
What I need from you