Conversation
…nt + bootstrap bullet Operator-authorized exception to the agent-canon-read-only rule in AGENTS.md. Authorization: operator directive 'Let's do 3/4' on 2026-05-05 in the recurrence-escalation conversation following AMS PR #33's hosted /mcp handroll (the sixth occurrence of the pattern P0002 documents). The default rule remains: agents do not write canon. This commit is the mechanical application of operator-accepted drafts (P0002 status: accepted 2026-05-05) to the three named target files. Per docs/promotions/README.md, this corresponds to the 'executed' step of the promotion lifecycle. THREE COORDINATED EDITS: Edit 1 — canon/methods/borrow-bend-break-beget-build.md - Frontmatter: title and # heading updated to 'Borrow, Bend, Break, Beget, Bide, Build'; tags add 6B, bide, strategic-patience, reversibility; epoch advanced E0005 -> E0008.5; date updated; complements adds the new constraint; supersedes_concept records the 5B->6B history. - Filename and URI retained for backward compatibility (renaming would break existing references). - Opening blockquote: extended to acknowledge Bide as deliberate strategic patience with a tripwire and inspection step. - Summary: 'Five Steps' -> 'Six Steps'; intro paragraph adds the strategic-patience concept; new closing paragraph names Bide's discipline and points at the agent-binding constraint. - The Sequence: new 'Bide — Wait for the Field to Build It For You, Then Inspect What Surfaces' subsection inserted between Beget and Build. Names the three resolution paths (waiting / inspected-and-adopted / inspected-and-rejected), the three required components (reason, tripwire, inspection step), the six inspection criteria for rejection, and the framing that both fork outcomes are success states. - Build subsection retitled to 'Only What Nobody Else Can Carry and What Waiting Cannot Resolve'. - Constraints section: 'borrow, bend, and beget' -> 'borrow, bend, beget, and bide'; new paragraph naming reversibility as a planning-time criterion the method requires consideration of. Edit 2 — canon/constraints/borrow-evaluation-before-implementation.md (NEW) - Tier-1 constraint, ~330 lines, semi_stable. - Operationalizes the 6B method as a falsifiable planning-mode artifact. - Includes: Goldratt frame, when the constraint binds, the six-row evaluation table with verdict vocabulary, what counts as a real Borrow vs. a real Bide, the six inspection criteria, operational sequence, what is forbidden, three worked examples (oddkit write layer adopted; AMS wire layer rejected-then-built-minimal; six MCP server failure shape), failure-mode table, risks and reversibility of the constraint itself, relationship to other canon, see-also. Edit 3 — canon/bootstrap/model-operating-contract.md - New bullet under 'Before Shipping Code' pointing at the new constraint. - Restates the rule's surface: six-row evaluation; named justifications; named criteria for rejected; tripwires for waiting; reversibility note; falsifiable, not ritual; explicit empirical base ('six times across six MCP server projects; do not be the seventh'). NOT INCLUDED: - P0002 status flip from 'accepted' to 'executed' — left to a follow-up PR after this PR merges and the canon-edit commit SHAs are stable, to avoid merge-order coupling with the in-flight PR #165 that touches P0002's frontmatter for the accepted-status flip. - Filename rename to 'borrow-bend-break-beget-bide-build.md' — declined to preserve URI continuity for existing references across canon and consumer projects. URI integrity: all internal references between the three files resolve at merge time. External references (ams://canon/constraints/mcp-build- side-governance) resolve once the companion AMS PR #35 merges. Reversibility: two-way. The 6B method's filename/URI are unchanged; the in-doc title and content are extensions, not rewrites. The new constraint is itself reversible per its own 'Risks and Reversibility' section.
Canon Quality —
|
| Line | Rule | Occurrence | Message |
|---|---|---|---|
| 242 | dead-reference |
klappy://writings/nothing-new-even-ai |
URI does not resolve |
writings/choosing-faith-not-fear.md — 1 finding(s)
| Line | Rule | Occurrence | Message |
|---|---|---|---|
| 203 | dead-reference |
klappy://writings/four-questions-that-change-everything |
URI does not resolve |
writings/getting-started-with-odd-and-oddkit.md — 4 finding(s)
| Line | Rule | Occurrence | Message |
|---|---|---|---|
| 69 | legacy-link-pattern |
/page/writings/the-journey-from-ai-tasks-to-ai-augmented-workflows |
Use a klappy:// URI instead of /page/ path |
| 202 | legacy-link-pattern |
/page/docs/oddkit/proactive/proactive-bootstrap |
Use a klappy:// URI instead of /page/ path |
| 204 | legacy-link-pattern |
/page/docs/examples/project-instructions-template |
Use a klappy:// URI instead of /page/ path |
| 260 | legacy-link-pattern |
/page/writings/the-journey-from-ai-tasks-to-ai-augmented-workflows |
Use a klappy:// URI instead of /page/ path |
writings/the-broken-wall-and-the-buried-talent.md — 1 finding(s)
| Line | Rule | Occurrence | Message |
|---|---|---|---|
| 332 | dead-reference |
klappy://draft-zeros/appendix-a-the-biblical-roots |
URI does not resolve |
writings/the-voice-came-first.md — 1 finding(s)
| Line | Rule | Occurrence | Message |
|---|---|---|---|
| 244 | dead-reference |
klappy://writings/four-questions-that-change-everything |
URI does not resolve |
Soft-block mode — this status is informational; the job will not fail. Hard-block ships in PR-3.2 after the observation cycle.
What to do for each finding:
- Fix the slug if the target now lives at a different
klappy://URI.- Remove the link if it is no longer needed.
- Allowlist with a reason if the rot is intentional (e.g. forward-ref to an upcoming article): place
<!-- audit-allow: dead-reference reason="..." -->on the line above the offending link. The directive is line-level and scopes to the next markdown link.
Spec: klappy://docs/oddkit/specs/oddkit-audit · Workflow: .github/workflows/canon-quality.yml · Run: #36
5 tasks
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.
Executes the three coordinated canon edits proposed by
docs/promotions/P0002-borrow-evaluation-before-implementation.md(status:acceptedper PR #165). Perklappy.dev/AGENTS.md, agents do not write canon — this PR is opened under explicit operator authorization on 2026-05-05 ("Let's do 3/4") in the recurrence-escalation conversation following AMS PR #33's hosted/mcphandroll.What this PR does
Edit 1 —
canon/methods/borrow-bend-break-beget-build.md(modified)#heading updated to "Borrow, Bend, Break, Beget, Bide, Build"; tags add6B,bide,strategic-patience,reversibility;epochadvanced E0005 → E0008.5;complementsadds the new constraint;supersedes_conceptrecords the 5B → 6B history.waiting/inspected-and-adopted/inspected-and-rejected), the three required components (reason, tripwire, inspection step), the six inspection criteria for rejection, and the framing that both fork outcomes are success states.Edit 2 —
canon/constraints/borrow-evaluation-before-implementation.md(NEW)Tier-1 constraint,
semi_stable, ~330 lines. Operationalizes the 6B method as a falsifiable planning-mode artifact the agent must produce before implementation execution. Contents:Bide → inspected-and-adopted), AMS wire layer (Bide → inspected-and-rejected → Build = minimal), six MCP server failure shapeEdit 3 —
canon/bootstrap/model-operating-contract.md(modified)New bullet under "Before Shipping Code" pointing at the new constraint. Restates the surface: six-row evaluation; named justifications for skips; named criteria for
inspected-and-rejected; tripwires forwaiting; one-line Reversibility Note; falsifiable, not ritual; explicit empirical base ("six times across six MCP server projects; do not be the seventh").Authorization context
klappy.dev/AGENTS.mdsays:This PR is an operator-authorized exception for this specific case. The operator wrote the rule; the operator is exercising authority to authorize this specific application; the PR documents the authorization in commit and PR text so the precedent is visible. The rule remains unchanged for default agent behavior; this PR is not a precedent for agents touching
canon/without explicit operator directive.The substantive criteria for the exception are met:
accepted)What this PR does NOT include
acceptedtoexecuted— left to a tiny follow-up PR after this PR merges and the canon-edit commit SHAs are stable. Avoids merge-order coupling with the in-flight PR docs(promotions): P0002 — sixth evidence row + accepted (operator decision) #165 that touches P0002's frontmatter for theacceptedflip.borrow-bend-break-beget-bide-build.md— declined to preserve URI continuity. The in-doc title carries the rename; the URI does not.URI integrity
Verified:
klappy://canon/constraints/borrow-evaluation-before-implementation— created in this PR.klappy://canon/methods/borrow-bend-break-beget-build— already exists.klappy://canon/constraints/borrow-evaluation-before-implementation— created in this PR.ams://canon/constraints/mcp-build-side-governance— resolves once companion AMS PR Add writings directory with first two essays #35 merges.Reversibility
Two-way. The 6B method's filename/URI are unchanged; the in-doc title and content are extensions, not rewrites. The new constraint is itself reversible per its own "Risks and Reversibility" section. If the constraint produces ritual rather than insight, or systematically rejects substrates that turn out to be the right answer, it is updated via canon revision. The disconfirmer is named in the doc.
Sequence with related PRs
acceptedaccepted→executed+ Execution Record SHAsAfter all four land,
klappy://canon/constraints/borrow-evaluation-before-implementationwill resolve, the bootstrap will surface it on first turn of every session, the 6B method will be canonical, andoddkit_searchfor "borrow" / "build" / "SDK" / "handroll" will surface the rule during preflight on any new MCP server (or any other implementation task with an upstream substrate) project across all of klappy's work.Note
Medium Risk
Medium risk because it changes tier-1 canon governance that will affect agent planning/execution behavior across projects; mistakes or unclear requirements could cause process friction or inconsistent compliance.
Overview
Canon governance update: extends the
borrow-bend-break-beget-buildmethod to 6B by insertingBide(wait-with-tripwire + inspection) and updating the method’s constraints to require considering reversibility before choosing to build.New binding constraint: adds
canon/constraints/borrow-evaluation-before-implementation.md, requiring a falsifiable planning artifact (6-row 6B evaluation + one-line Reversibility Note) before executing implementation work when an upstream substrate or field convergence exists.Bootstrap surfaced: updates
canon/bootstrap/model-operating-contract.mdto include a new “Before Shipping Code” bullet that points operators/agents to the new Borrow Evaluation constraint.Reviewed by Cursor Bugbot for commit 422772c. Bugbot is set up for automated code reviews on this repo. Configure here.