Conversation
… amend campaign doc Phase 2 PR-2.2 of the link-rot-elimination campaign. Resolver is the first user of itself: every new klappy:// URI was test-resolved against live prod (oddkit v0.25.0) before commit. Writings cleanup (10 link edits across 3 files): - writings/getting-started-with-odd-and-oddkit.md (4 /page/ → klappy://) - writings/from-passive-to-proactive.md (4 /page/ → klappy://) - writings/agentic-software-development.md (1 typo URI: klappy://writings/nothing-new-even-ai → klappy://writings/preface-nothing-new-even-ai — verified via resolver, the actual canonical URI) Verified resolves before commit: - klappy://writings/the-journey-from-ai-tasks-to-ai-augmented-workflows - klappy://docs/oddkit/proactive/proactive-bootstrap - klappy://docs/examples/project-instructions-template - klappy://writings/learning-in-the-open - klappy://writings/getting-started-with-odd-and-oddkit - klappy://writings/preface-nothing-new-even-ai Out-of-scope notes (will not be "fixed" by this PR): - klappy://draft-zeros/appendix-a-the-biblical-roots in writings/the-broken-wall-and-the-buried-talent.md is NOT_FOUND because the target is a draft-zero with stability=placeholder and is filtered from the index by design. A published essay linking to an unpublished draft is a different problem class — content gap, not link rot. Campaign doc amendment (bundled per operator decision): - Named the explicit promote PR (main → prod) step for oddkit changes; CF auto-deploys from prod, not main. The original draft elided this because the author hadn't observed the prod-branch convention; PR-2.1 surfaced it when prod stayed on 0.24.0 after the merge to main. - Corrected PR-2.2's scope: dropped the "re-audit the 49" task. The April 9 audit's 49 remaining items are correctly classified as intentional (template placeholders, site routes, historical archive refs); they fall outside writings/ and don't need re-classification via the new resolver. - Recorded both amendments in Origin section as v2.1. Refs: - klappy://docs/oddkit/specs/oddkit-resolve (DRAFT v4 — KISS, in prod) - klappy://canon/principles/identity-resolved-by-protocol - klappy://docs/planning/link-rot-elimination-campaign (v2.1 amendment) - klappy://canon/principles/vodka-architecture - klappy/oddkit#140 (resolver implementation, merged + promoted) - klappy/oddkit#142 (promote PR, merged)
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.
Summary
Phase 2 PR-2.2 of the link-rot-elimination campaign. Converts legacy
/page/...markdown link patterns and one typoklappy://URI inwritings/to canonicalklappy://URIs that resolve through the protocol perklappy://canon/principles/identity-resolved-by-protocol.The recursive moment: the resolver is the first user of itself. Every new
klappy://URI in this PR was test-resolved against live prod (oddkit v0.25.0) before commit. Validates the resolver and fixes the link rot in one motion.Writings cleanup (10 link edits across 3 files)
writings/getting-started-with-odd-and-oddkit.md/page/patterns →klappy://URIswritings/from-passive-to-proactive.md/page/patterns →klappy://URIswritings/agentic-software-development.mdklappy://writings/nothing-new-even-ai→klappy://writings/preface-nothing-new-even-ai(verified via resolver — the actual canonical URI for this article)URIs verified resolving against live prod before commit
klappy://writings/the-journey-from-ai-tasks-to-ai-augmented-workflowsklappy://docs/oddkit/proactive/proactive-bootstrapklappy://docs/examples/project-instructions-templateklappy://writings/learning-in-the-openklappy://writings/getting-started-with-odd-and-oddkitklappy://writings/preface-nothing-new-even-aiOut-of-scope (deliberately left alone)
klappy://draft-zeros/appendix-a-the-biblical-rootsinwritings/the-broken-wall-and-the-buried-talent.mdreturns NOT_FOUND because the target is a draft-zero (stability: placeholderin its frontmatter) and is filtered from the index by design. A published essay linking to an unpublished draft is a different problem class — content gap, not link rot. Will not be "fixed" by URI substitution; needs separate decision (publish the appendix, remove the link, or accept the draft-link convention).Campaign sequencing doc amendment (bundled per operator decision)
docs/planning/link-rot-elimination-campaign.mdupdated:prod, notmain. The original draft elided this; PR-2.1 surfaced it when prod stayed on 0.24.0 after merging to main. (promote: 0.25.0 to prod (oddkit_resolve action — link-rot Phase 2) oddkit#142 was the promote PR for PR-2.1.)writings/scope. The new resolver wouldn't reclassify them.Both amendments preserve the campaign's KISS shape; neither adds new artifacts.
What this does NOT do
oddkit_audit(PR-2.3, separate)Refs
klappy://docs/oddkit/specs/oddkit-resolve(DRAFT v4 — KISS, deployed in prod)klappy://canon/principles/identity-resolved-by-protocolklappy://docs/planning/link-rot-elimination-campaign(this PR amends to v2.1)klappy://canon/principles/vodka-architectureNote
Low Risk
Low risk documentation-only change: updates internal links and planning text with no runtime or build logic modifications. Main risk is accidental broken/incorrect URIs if any were mis-resolved.
Overview
Updates public writings to eliminate legacy
/page/...markdown links by switching them to canonicalklappy://URIs, and fixes one incorrectklappy://writings/...target.Amends
docs/planning/link-rot-elimination-campaign.mdto clarify Phase 2 PR ownership/scope (including dropping the “re-audit the 49” task) and to add an explicit main → prod promote PR step for load-bearingoddkitchanges.Reviewed by Cursor Bugbot for commit 7167d1a. Bugbot is set up for automated code reviews on this repo. Configure here.