LAYAK — Indonesian for fit to operate. Inspection certificates for cranes, written as Arkiv entities whose lifetime is the validity period.
Same question at the gate: is this crane fit? On a normal database the expired certificate is still a row — one forgotten WHERE clause and it shows green.
On Arkiv the lifetime is the validity. When it lapses, the row no longer exists to be returned. Zero rows means the machine does not move. No date comparison anywhere.
Testing against the regulations found a conflict: the statutory report must be kept for the life of the machine — but the certificate must vanish.
So one riksa uji writes two entities with opposite lifetimes, in one batch. A failed exam writes the record and no certificate — absence is the fail state.
Arkiv executes nothing, and only the owner can extend. Both limits pushed the design somewhere better: a separate Prohibition, a recorded GateCheck, escalation as a new entity.
The queries the product lives on — the gate check is two trivial predicates, and the extension anomaly makes “never extended” a checkable statement, by anyone.
This is not pseudocode. The sketch type-checks with tsc --strict against the published SDK, installed from npm — which corrected the first draft in four places.
Then it is executed: nine invariants against a cited spec of the documented semantics, all passing. One test's first run failed — the test was wrong, the design was right.
Read against the September architecture, 0.8.0-dev: the design gets smaller, and the protocol feedback still stands.
Why Arkiv: the party holding the data is the party the data is about. Expiry must be a guarantee, not a filter. The reader is a stranger. The record must outlive the operator.
The weekend slice: a certificate with a two-minute lifetime. Green. Wait. Refresh. Red — with no code run, no job fired, no date compared. Nothing is deployed.