Decisions were the one link the cycle checks skipped, and measuring found 19 of 70 records orphaned — the credential flow and the module-runtime cluster among them, which is how a stale premise about a settled decision survived in working memory. cycle.py now refuses an accepted record nothing cites; the 19 got true homes (design frontmatter, the playbook that implements 0021, META for the process records). The overview names the practice: spec-driven development with provenance. https://claude.ai/code/session_01D6qtiYU3P9jk3pnAXyAFyx
41 lines
1.9 KiB
Markdown
41 lines
1.9 KiB
Markdown
# Playbook 05 — Constitution sync
|
|
|
|
Implements [ADR 0021](../../02-DECISIONS/0021-hq-is-the-source-of-the-constitution.md): HQ is
|
|
the source of the constitution, and the knowledge-base page is derived, never edited.
|
|
|
|
**Trigger.** [`how-we-build.md`](../how-we-build.md) changed a rule that the mesh enforces at
|
|
runtime.
|
|
|
|
**Who runs it.** Whoever made the change.
|
|
|
|
## Why this playbook exists
|
|
|
|
The mesh injects a constitution into every eligible design meeting; agents check their output
|
|
against it and a constitution-check phase can block a meeting. That text is **derived**.
|
|
`how-we-build.md` is the source.
|
|
|
|
Two texts stating the same rules will drift, and the enforced copy winning by default means
|
|
the reasoned copy quietly stops being true. This playbook is the mechanism that stops that —
|
|
and, per the repository's own rule, it is how the rule "HQ is the source" is checked.
|
|
|
|
## Steps
|
|
|
|
1. Edit [`how-we-build.md`](../how-we-build.md). Each rule keeps the reasoning that earned it;
|
|
the derived page carries the rule alone.
|
|
2. Record the change as a decision — a rule the mesh enforces is architecturally significant.
|
|
Playbook [02](02-graduation.md).
|
|
3. Publish the derived page to the knowledge base under the constitution slug, replacing its
|
|
body. Keep the section numbering stable: the meeting orchestrator and the review fragments
|
|
cite sections by number.
|
|
4. Verify the derived page reads back with the change present. A publish that reported success
|
|
and did nothing is exactly the failure class this repository exists to name.
|
|
5. Note the sync in the decision record's Consequences.
|
|
|
|
## Rules
|
|
|
|
- **Never edit the derived page directly.** An edit there survives until the next sync and
|
|
then vanishes, taking its reasoning with it.
|
|
- The derived page may only be **tightened** by per-team override pages, never relaxed.
|
|
- If the sync cannot be performed, say so in the record. An unsynced rule is a rule the
|
|
mesh does not enforce, whatever `how-we-build.md` says.
|