RFC-046: What a Cell Records

ProposedPartially implemented
Depends onRequired by

Context

RFC-022 brings the vocabulary of the Chronolexografie position paper: a cell keeps a chronicle of dated recordings, the chronolexograms. An earlier proof of concept put a chronolexography block in each establishing article, and most of it repeated the law. This RFC decides where recording lives and where a recording gets its shape.

Decision

Chronolexography shows this at work.

  1. An optional layer. Recording lives in its own crate, packages/cel. It depends on the law and the engine; neither depends on it. Another runtime may record the same law differently.
  2. A cell is a directory with cel.yaml: who it is, and which answers it gives from which reduction (answers, RFC-048 §1). The catalogue holds no logic; the reductions sit in the corpus. Identity cannot come from the law, so cel.yaml is the only cell configuration. The engine matches it against the law’s competent_authority (RFC-051). A cell without it does not open.
  3. The law gives the shape. A submission holds the parameters of its produces item and of the hooks on it, minus the moment (RFC-045). A decision holds its inputs, findings included, and its outputs. An executogram holds the parameters of a fact an article requires (RFC-051). The cell refuses any other field and a wrong type.
  4. A chronolexogram does not repeat the law. Its keys follow RFC-022 §1.3 (recording_actor, grondslag, fields); the rest comes from the law in force on recorded_on (Chronolexography). Numbers are stored without loss (regelrecht_law_model::stored).
  5. The cell guards the chronicle. It is append-only, in date order. One submission gets one decision, and a decision is replaced at most once. That last guard is ours, not an Awb rule. Chronolexography lists every refusal.
  6. A decision is replayed, not explained from storage. The cell retakes it on its own day, with the law and the chronicle of that moment (Chronolexography). This assumes every source can say what it knew on a given day.
{ "id": "019a1b2c-…", "kind": "AANVRAAG", "grondslag": "leerplichtwet_1969#13a", "recording_actor": "obs_de_klimop", "recorded_on": "2026-10-13", "moment": { "parameter": "datum_ontvangst", "on": "2026-10-13", "declared_by": "algemene_wet_bestuursrecht#4:13" }, "fields": { "eerste_verlofdag": "2027-02-01", "adres_aanvrager": null }, "outputs": { "redelijke_beslistermijn_einddatum": "2026-12-08" } }

Why

Benefits

  • A rulework holds no recording vocabulary. A jurist reads it without knowing what a cell is.
  • An Awb article that asks one more thing reaches every record through one Awb version.
  • One record_submission and one decide serve every procedure. A second case needs rulework and tests, no code.

Tradeoffs

  • No provenance per field is stored; what a decision used is known only by replaying it.

Open points are listed in Open Points in Chronolexography.

Alternatives Considered

  • A chronolexography block in the law (RFC-022 §3.2 extensions). Recording vocabulary in a rulework, mostly repeating the law.
  • A field list in cell configuration, or a chronicle-stream in chronicles/ (RFC-022 §1.3). Both drift from the law.
  • The provisions per field (field_basis, output_basis). Repeats the law in every entry.
  • The cell runs the objection procedure (record_objection, decide_on_objection). That put Awb 7:11 in Rust; it is now rulework (RFC-045).
  • A decision taken ex officio (Cell::decide_ex_officio) for a school’s own holidays. Dropped 19 October 2026: holidays are policy.
  • The place of establishment in the cell’s identity. A place changes over time, so it is an executogram (author’s decision, Tim de Jager, 18 October 2026). That fits the paper’s definition (“de vastlegging van daadwerkelijke levering of afhandeling”) loosely, but the paper calls its three types a first enumeration.

Implementation

packages/cel: shape derives fields from the law; Cell::record_submission, decide, record_executogram, explain, findings; Chronicle holds the Grams; identity::read reads cel.yaml. Cells under corpus/cells/, tests in packages/cel/tests/.

References

RegelRecht

An exploration into transparent, executable legislation, and one of the three projects in the starting selection of the Nederlandse Digitale Dienst.

Links

GitHub repository
How it works
Stay informed
Roadmap (Dutch)
Documentation
Research

Contact

regelrecht@minbzk.nl

Part of

Nederlandse Digitale Dienst
Ministry of Economic Affairs and Climate Policy