From c2eafe08d802e1563f26d8a36d1640956abf8bfb Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 15 Jun 2026 11:19:06 -0700 Subject: [PATCH] claude: add roadmap discipline (v1 target + parking lot, anti-creep) New "## Roadmap discipline" section in the global CLAUDE.md: every project carries a ROADMAP.md (v1 target = 3-7 capabilities + parking lot; the feature-gate defaults to parking lot regardless of who proposed the feature; creep-check at checkpoints). The feature-axis analog of value-of-information (probes) + patch-default (SemVer). Per-project file defined as a skeleton in corviduo-project-template. --- home_root/.claude/CLAUDE.md | 45 +++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/home_root/.claude/CLAUDE.md b/home_root/.claude/CLAUDE.md index 3c23122..37e2d0f 100644 --- a/home_root/.claude/CLAUDE.md +++ b/home_root/.claude/CLAUDE.md @@ -582,6 +582,51 @@ from this point forward reflects the discipline; past versions record what happened under the previous rule. The pre/post boundary is the amendment-effective commit, not the rule itself. +## Roadmap discipline — v1 target + parking lot (anti-creep) + +Projects sprawl at v0 when features land with **no v1 target to gate +them against** — every good idea, lacking a home, becomes v0 scope by +default, and the project never converges. This is the feature-axis +analog of two disciplines already in force: **value-of-information** +for probes (don't-measure-what-won't-change-behavior) and +**patch-default** for version bumps. Same posture — +*asymmetric default toward not-doing* — applied to features. + +**Every project carries a `ROADMAP.md`** (a screenful, not a PRD): + +1. **v1 target** — the small, explicit "what must be true to cut + 1.0": **3–7 capabilities**. A big v1 is itself the creep; keep it + tight. This is the done-definition AND the anchor every feature is + gated against. + +2. **Parking lot (post-v1 / vNext / spinout)** — every deferred idea, + named, with a home. Creep lands *here* instead of silently + becoming v0 scope. A "feature" that's really its own project is a + **spinout**, not v1 scope. + +3. **The gate (the anti-creep mechanism):** a proposed feature → *on + the v1 path? → in; else → parking lot.* **Default = parking lot.** + When both "v1" and "park" are defensible, park it — the same + tie-break-to-the-cheaper-tier asymmetry as the SemVer patch-default. + Applies regardless of who proposed the feature (operator included); + the gate is about v1-path-fit, not provenance. + +4. **Creep-check at checkpoints:** when surfacing progress, ask "is + what we're building on the v1 path?" Off-path-but-worth-keeping → + parking lot, surfaced to the operator, never silently into v0. + +The per-project `ROADMAP.md` file shape + location is defined in +`corviduo-project-template` as a copied-in **skeleton** (like +`persistent-memory.md` — new projects copy it, then the content +diverges per project), NOT a byte-identical canonical. The skeleton +carries the shape; the discipline itself lives in this rule (loaded +every session), so no byte-sync of content is needed. This mirrors +the SemVer global-rule + per-project-version-file split: the version +*field* is conventional, its *value* diverges per project — nobody +canonical-syncs version values, and likewise nobody syncs roadmap +content. v1.0 is cut when the ROADMAP's v1 target is met — tying +directly into the SemVer "v1.0 = discipline-tightening event." + ## Issue → AFK dispatch hygiene (Sleipnir) Before marking any issue `ready-for-agent` (the label that gates AFK