docs: add the rule-candidate register, and put RC-1 in it unhardened - #2
Merged
Conversation
Principle 5 says every defect becomes a rule. It does not say immediately, and the difference had no home until now. A rule is a claim about a class. One occurrence cannot establish one — it is either the first sighting of a real class or a local quirk that never recurs, and there is no way to tell from inside the run that produced it. Both ways of resolving that immediately are wrong in opposite directions: hardening on sight fills the catalogue with rules written by one incident each, until nobody can afford to read it; discarding means the second occurrence arrives with nothing to match against and reads as a first one too. docs/rule-candidates.md is the waiting room. Promotion needs the five conditions in CONTRIBUTING plus a sixth that applies only to candidates: the class has recurred INDEPENDENTLY — a different project, a different author, or a different state reached without knowledge of the first. Two instances in one sweep are one occurrence. So are two that a single fix removes. A candidate has no rule code, is cited in no plan or gate record, is checked by no tool, and blocks nothing. RC-n indexes the register; it is not a namespace. That constraint is the point: the failure mode here is a candidate quietly acquiring the authority of a rule. RC-1 is the observation from the reference run — a source comment naming the APIs it claims not to use, inside the file swept for those names. Recorded with the mechanism, why it might be a class, what would promote it, and the workaround meanwhile. Not hardened. Manufacturing a second instance to justify it would be the thing this method exists to prevent. Wired into CONTRIBUTING, docs/method-rules.md, docs/README.md, GLOSSARY.md, CHANGELOG.md and DOCS_AUDIT.md. Verified: 943/943 internal links resolve · 0 findings 39 mermaid blocks · 0 findings Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
Why
Principle 5 says every defect becomes a rule. It does not say immediately, and until now that difference had nowhere to live — the observation from the reference run was sitting in a changelog bullet labelled "rule candidate", which is a note, not a process.
A rule is a claim about a class. One occurrence cannot establish one. Resolving that immediately fails in both directions:
What this adds
docs/rule-candidates.md— the waiting room.Promotion needs the five conditions already in
CONTRIBUTING.md, plus a sixth that applies only to candidates: the class has recurred independently — a different project, a different author, or a different state reached without knowledge of the first. Two instances in one sweep are one occurrence. So are two that a single fix removes.A candidate deliberately has no authority: no rule code, cited in no plan or gate record, checked by no tool, blocks nothing.
RC-nindexes the register and is not a namespace. The failure mode being guarded against is a candidate quietly acquiring the standing of a rule.RC-1
The observation from
examples/signin: a source comment naming the APIs it claims not to use, inside the file being swept for those names. Recorded with the mechanism, why it might generalise past network APIs, what would promote it, and the workaround meanwhile.Not hardened. Manufacturing a second instance to justify it would be exactly what this method exists to prevent.
Verified
No workflow state, transition, guard, gate, ceiling, validation rule or tool behaviour changed.
🤖 Generated with Claude Code