Decided after measuring what renumbering actually costs: 96 references in code comments across two repositories, none of which would have failed to compile. They would have pointed at the wrong reasoning, which is worse than a broken link because nothing reports it. So a number identifies a record and never changes. It cannot also be a position -- a position moves when the set changes, and an identity that moves is not one. The reading order moves into an index generated from each record's `topic:`. Six topics, in the order somebody learns the system. The index is WRITTEN rather than only generated on demand, which reverses what this repository previously said. The reason it said otherwise is that a hand-written index drifts -- but a reader looking at the folder on a forge sees the folder, not a command, and the drift objection is answered by checking rather than by refusing to write one. That is §5's own rule: a rule states how it is checked. Two checks, both confirmed to bite. index.py fails when the written order no longer matches the records. records.py fails when a record has no topic or one nobody defined -- the quiet failure being a record that vanishes from the order rather than appearing in the wrong place.
65 lines
3.0 KiB
Markdown
65 lines
3.0 KiB
Markdown
---
|
|
topic: how we work
|
|
status: accepted
|
|
date: 2026-07-10
|
|
deciders: jochen
|
|
reconstructed: true
|
|
---
|
|
|
|
# 20. The mesh is governed by a constitution, injected where work is decided
|
|
|
|
> Reconstructed after the fact from the evidence cited below.
|
|
|
|
## Context
|
|
|
|
By mid-2026 the mesh was doing a large share of its own design and implementation work through
|
|
agents. The rules those agents were expected to follow existed — in operating instructions, in
|
|
convention documents, in the knowledge base — but they were **retrieved**: an agent had to know
|
|
a rule existed in order to look it up.
|
|
|
|
Rules that must be looked up are followed by whoever already knows them, which is precisely the
|
|
population that does not need them. The rules being violated were the ones nobody thought to
|
|
search for.
|
|
|
|
## Considered options
|
|
|
|
1. **Documentation plus review.** Rejected — it is what existed. Review catches a violation
|
|
after the work is done, and only if the reviewer knows the rule.
|
|
2. **Lint and automated checks only.** Rejected as insufficient, not wrong. A check catches
|
|
what can be expressed mechanically; most of these rules are about judgement — what belongs
|
|
in a repository, when a criterion counts as verified.
|
|
3. **A canonical rule set, injected into context wherever work is decided, with a check phase
|
|
before output is accepted.** Chosen.
|
|
|
|
## Decision
|
|
|
|
A single canonical document states the mesh's non-negotiable rules. It is **injected
|
|
proactively** into every eligible design and analysis session — agents do not fetch it, it
|
|
arrives — and a check phase verifies the session's output against it before the work proceeds.
|
|
|
|
It is a governed document, not a page. Changing it requires a proposal, sign-off by reviewers
|
|
who are not the proposer, and a recorded decision. Drive-by edits are reverted.
|
|
|
|
Scoped override pages may **tighten** it for a team or product. They may never relax it.
|
|
|
|
## Consequences
|
|
|
|
- A rule reaches the work whether or not anyone remembered it existed.
|
|
- The check phase makes a violation a blocking outcome rather than a review comment.
|
|
- Two copies of the same rules now exist: this document, and the reasoning in HQ that earned
|
|
them. The enforced copy wins by default, so the reasoned copy quietly stops being true —
|
|
which is why [`00-META/how-we-build.md`](../00-META/how-we-build.md) is now the source
|
|
and the governed page is derived from it, via playbook
|
|
[`05-constitution-sync.md`](../00-META/process/05-constitution-sync.md).
|
|
- Injection costs context on every eligible turn, and grows with the document. Nothing
|
|
currently bounds that.
|
|
- The amendment process requires two reviewers, which a mesh with one human operator satisfies
|
|
only by counting agents. That tension is real and unresolved.
|
|
|
|
## References
|
|
|
|
- The governed page was authored 2026-07-10 and carries its own amendment process.
|
|
- `feat(noxflow): HAL architectural conformance gate for reviewer + architect` (#296),
|
|
2026-06-10 — the check phase, predating the document it checks against.
|
|
- Knowledge base: `platform/constitution`.
|