docs(canon): open CHANGE-PROCEDURE step 1 for "Always leave it working" (PROVISIONAL — merging opens the proposal, does not adopt it) - #1041
Merged
Conversation
The owner asked whether an AI can be bound to prototype-first, evolutionary delivery — a working thing at every budget boundary, with the version moving in named jumps rather than cracking mid-cut — and asked, honestly, whether doing so would inflate credit cost or produce a bittier project. The answer is no: the dominant cost in the current mode is re-understanding after an interruption, which is paid per interruption rather than per increment, so an always-working default branch caps the blast radius at one increment instead of one campaign. The two real risks are prototype permanence (contained by an explicit promote-or-delete obligation, and already governed by "holes before goals") and invariant inflation — an agent reading "a working thing every week" as "re-prove the whole estate weekly" — contained by defining "working" narrowly in the principle text itself. This does not adopt the principle. 0-canon/constitution/CHANGE-PROCEDURE.adoc permits steps 1 and 2 without the owner; steps 3-6 (review by the named constitutional authority, contest period, recorded decision, regeneration) are owed. So: - 0-canon/RSR-PHILOSOPHY.adoc gains "Always leave it working" marked PROVISIONAL, using the same [IMPORTANT] proposal-status block as "Elegance by default", and barred from the CLAUDE.md projection until its ratification record is complete. - docs/decisions/ADR-006 is the step-1 proposal record: authority affected, rationale, alternatives, compatibility, evidence status (assumed, not measured) and tensions — plus the exact one-rule arrival-pack delta ratification would apply, so step 6 is a single follow-up commit. - The arrival-pack is deliberately NOT edited. Adding rule 16 before ratification would repeat the defect this PR also records. That defect is real and now registered: "Elegance by default" is emitted as estate-common doctrine rule 15 in every generated CLAUDE.md while the canon states it MUST NOT be until ratified. AUTHORITY-AND-PRECEDENCE.adoc requires a `contradiction` tension where requirements conflict, so KNOWN-TENSIONS.adoc gains that row. Two tensions are declared rather than hidden: irreversible cutovers (runtime swap, format change, retiring a still-required gate) admit no always-working increment without a shim, and the shim is the cost; and an enforced version jump is unsatisfiable on the four repos whose Immutable-Tags ruleset carries `creation` with an empty bypass list, so ratification must not precede that repair. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YJ6PbZUYBcjJv7FTRfyogo
Contributor
|
Warning Review limit reachedNext included review available in 6 minutes. View limit detailsLimit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (3)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
hyperpolymath
enabled auto-merge (squash)
September 23, 2026 09:07
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



What you asked
The answer to the risk question, first
It lowers cost rather than raising it, and the reason is not the one you'd expect.
The dominant cost in the current mode is not the code left unwritten — it is the re-understanding after a crack. An interrupted migration forces whoever arrives next to rebuild the entire mental model from a cold start before they can safely touch anything, and that reconstruction costs more than the increment it is trying to resume. That cost is paid per interruption, not per increment. An always-working default branch therefore caps the blast radius of an interruption at one increment instead of one campaign, and makes spend predictable, which is a stronger property than merely lower.
The three names for what you described, so this is not an invention: walking skeleton (Cockburn) / tracer bullet, evolutionary design under Gall's Law, and a release train — fixed date, flexing scope, which is exactly what "jumps to the next version" means operationally.
Two risks are real, and neither is the one you feared:
One genuine exclusion, and it is not a corner case here. Irreversible cutovers — a runtime swap, a format change all consumers must adopt at once, retiring a still-required gate — admit no increment that leaves both states working. They need a shim first (feature flag, strangler façade, parallel run) and the shim is the cost. The bun migration, the signing campaign and the A2ML retirement are all that shape, so this is declared up front rather than discovered halfway.
What this PR does — and deliberately does not do
You asked me to "add it to my software engineering approach document in standards and get it to be the case for all bots visiting". Two findings changed how that had to be done.
1. The document you named is downstream of the real source.
RSR-PHILOSOPHY.adocstates that the full Doctrine lives in the arrival-pack and is projected from there into the top of everyCLAUDE.mdbyjust claude-md. Editing the philosophy doc alone would have been precisely the downstream symptom-patch its own §1 forbids. The real chain isarrival-pack.ncl(the Nickel projection engine) →just claude-md→ every repo'sCLAUDE.md, with0-canon/RSR-PHILOSOPHY.adocas the canonical prose.2. Your estate has a constitution, and it gates exactly this.
0-canon/constitution/CHANGE-PROCEDURE.adocis a six-step procedure. Steps 1–2 (open a proposal; provide human- and machine-readable impact) I can do. Steps 3–6 — review by the named constitutional authority, a meaningful contest period, the recorded decision, and regeneration of derived registries — are yours, and permanent policy may not skip them. A new principle enters as PROVISIONAL, explicitly barred from theCLAUDE.mdprojection until ratification is recorded.So the honest answer to "get it to be the case for all bots visiting" is: your own constitution gates that projection on your ratification, and the draft is staged ready for it. Following the procedure is what makes the principle actually bind rather than becoming another ignored line.
0-canon/RSR-PHILOSOPHY.adoc== Always leave it working, marked PROVISIONAL using the same[IMPORTANT]proposal-status block as Elegance by default, barred from projection until ratifieddocs/decisions/ADR-006-always-leave-it-working.adoc0-canon/constitution/KNOWN-TENSIONS.adoccontradictionrow (see below)arrival-pack.nclis deliberately NOT edited. Adding rule 16 before ratification would repeat the exact defect this PR also records.A live governance defect found on the way, now recorded
Elegance by defaultis already projected as estate-common doctrine rule 15 in every generatedCLAUDE.md, while0-canon/RSR-PHILOSOPHY.adocstates it MUST NOT be until its ratification record is complete. Those two cannot both stand.AUTHORITY-AND-PRECEDENCE.adocmandates recording acontradictiontension where requirements conflict, so that row is added. Partial containment: the whole estate-common block carriesmanifesto_pin = "DRAFT-unratified". The next action is binary — complete the record, or remove rule 15 and regenerate.Two things that must be settled before ratification
Immutable-Tagsdeadlock. Fourhyperpolymathrepos carry a ruleset with thecreationrule and an emptybypass_actorslist, meaning no tag can be cut by anyone, you included. A version-jump obligation on those repos is unsatisfiable today. Ratification must not precede that repair (tracked as R9.2).assumed, notmeasured, and the ADR says so explicitly. The interruption-cost argument is reasoned from measured inputs (the 57%-of-open-PRs abandonment figure; this session's own compaction volume) but has not been run against a control.Enforcement — no new mechanism is proposed
Both halves already have teeth, so inventing a hook would duplicate them: "leave it working" is enforced by the green-default-branch rulesets already armed on
standards(23787415) and propagating under R5/R9; "jump to the next version" by the R9 tag floor, subject to the repair above.Validation
asciidoctor -o /dev/nullclean on all three files (zero warnings)KNOWN-TENSIONS.adoctable verified at 6 cells per row, header included%G?=G, which matters because ruleset 23787415 carriesrequired_signatureswithcurrent_user_can_bypass=neverorigin/main, not the local working copy:RSR-PHILOSOPHY.adocwas moved to0-canon/and the stale local root copy (78 lines) is 59 lines behind the live file (137) and absent fromorigin/main. Editing it would have re-created a deleted file at a retired path and dropped the entire PROVISIONAL apparatus.🤖 Generated with Claude Code
https://claude.ai/code/session_01YJ6PbZUYBcjJv7FTRfyogo