docs/adr/ in the repository. They record the
context, the decision, and the consequences — including the ones that turned out to be
expensive.
The ones that shape day-to-day work
ADR-004 — Module architecture
ADR-004 — Module architecture
Features live in
src/modules/{module}/ and expose a curated index.ts contract. Cross-module
imports go through the contract, never into another module’s internals. See Project
structure.ADR-005 — In-process event bus
ADR-005 — In-process event bus
Modules communicate by emitting and listening to
{module}.{entity}.{action} events rather than
by importing each other. The pre-boarding orchestrator is the reference implementation.ADR-006 — Compassionate Systems Framework
ADR-006 — Compassionate Systems Framework
The product’s design philosophy, and a list of things that will not be built. It overrides
other guidance when they conflict. See Design philosophy.
ADR-007 — Decimal payroll arithmetic
ADR-007 — Decimal payroll arithmetic
All CHF math is decimal end to end. Floating point produced reproducible drift on hourly
proration, four-decimal QST tariffs, and twelve-month booking aggregates. Rounding at the
boundary does not recover it.
ADR-009 — Versioned portal API contract
ADR-009 — Versioned portal API contract
The OpenAPI specification is generated from the Zod schemas and verified byte-for-byte in CI.
The mobile app regenerates its client from it. See API reference.
ADR-010 — Multiple legal entities
ADR-010 — Multiple legal entities
One installation can employ through several Rechtsträger. The entity routes every statutory
declaration, which is why write paths must resolve it explicitly. See Legal
entities.
ADR-011 — One User for the whole lifecycle
ADR-011 — One User for the whole lifecycle
A person is one
User row from applicant to alumnus. Applicant data and employee data hang off
the same identity. See Surfaces.Open decisions
Writing an ADR
Write one when a decision commits future effort, reverses a prior choice, or would otherwise have to be re-litigated from memory. Include:- Status — Proposed, Accepted, Superseded — with a date and a change log.
- Context — what is actually true today, verified rather than assumed.
- Decision — what was chosen, and what was rejected.
- Consequences — including the costs.