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.
This commit is contained in:
@@ -582,6 +582,51 @@ from this point forward reflects the discipline; past versions
|
|||||||
record what happened under the previous rule. The pre/post boundary
|
record what happened under the previous rule. The pre/post boundary
|
||||||
is the amendment-effective commit, not the rule itself.
|
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)
|
## Issue → AFK dispatch hygiene (Sleipnir)
|
||||||
|
|
||||||
Before marking any issue `ready-for-agent` (the label that gates AFK
|
Before marking any issue `ready-for-agent` (the label that gates AFK
|
||||||
|
|||||||
Reference in New Issue
Block a user