papa-hq reads 01 research -> 03 decision -> 02 design. The order is a scar, not a choice: 02-DESIGN existed from its initial commit, and when adr/ was finally promoted on 2026-07-13 it took the next free number rather than its place in the sequence. By then design was too settled to renumber. hal-hq was three commits old, so it is not. adr/ becomes 02-DECISIONS and 02-DESIGN becomes 03-DESIGN, and following the folder numbers now walks the process in the order it happens: research produces a decision, the decision authorises a design. 00-GENESIS becomes 00-META, matching papa's rename from the same restructure. Every path reference rewritten across documents, frontmatter, playbooks and skills. All links resolve; all 58 frontmatter blocks parse and their path fields still point at files that exist.
38 lines
1.8 KiB
Markdown
38 lines
1.8 KiB
Markdown
# Playbook 05 — Constitution sync
|
|
|
|
**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 ledger line for the decision.
|
|
|
|
## 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 ledger line. An unsynced rule is a rule the
|
|
mesh does not enforce, whatever `how-we-build.md` says.
|