You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
chore: archive v1.3 milestone (shipped as plugin v4.0.0)
Archive ROADMAP/REQUIREMENTS/audit to milestones/v1.3-*, collapse ROADMAP,
promote carried backlog to a top-level section, evolve PROJECT.md (validated
CONV-01..04 + DRIFT-01..05, versioning decoupled), add the v1.3 retrospective
section, and remove REQUIREMENTS.md (fresh for the next milestone).
Copy file name to clipboardExpand all lines: .planning/MILESTONES.md
+15Lines changed: 15 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,20 @@
1
1
# Milestones
2
2
3
+
## v1.3 Consistency and Code-Integrity Safeguards (Shipped: 2026-06-27)
4
+
5
+
**Phases completed:** 2 phases, 8 plans, 7 tasks
6
+
7
+
**Key accomplishments:**
8
+
9
+
- Zero-dep CJS module deriving file-name/identifier casing + export/import style by majority vote with normalized Shannon entropy, plus per-file CONVENTION-tier conformance, verb-vs-body intent, and catch-handling checks that never block.
- ✓ PostToolUse periodic checkpoint bridges Claude Code's microcompact gap — file-mutation tool calls trigger a fresh HANDOFF write (throttled to once per 60s) so resume reflects recent state even when only microcompact (not PreCompact) has run — quick task 260425-mct
45
45
46
-
### Active (v1.3 — Consistency & Code-Integrity Safeguards)
46
+
- ✓ Convention and architectural conformance gate: pattern-mapper Conventions section + code-review convention/verb-vs-body/architectural-split checks, zero new runtime dep (CONV-01..04) — v4.0.0 (Phase 10)
- ✓ VibeDrift adopted as a second upstream: heuristics ported natively (pinned v0.14.0 baseline), repo watched, never invoked at runtime (DRIFT-01) — v4.0.0 (Phase 11)
-[ ]**DRIFT-04** — `/gsd:scan --drift` produces a ranked drift report
59
-
-[ ]**DRIFT-05** — native fallback heuristics run when VibeDrift is absent
53
+
No active requirements: v1.3 shipped as plugin **v4.0.0** (2026-06-27). Scope the next milestone via `/gsd:new-milestone`.
60
54
61
-
Deferred (not in v1.3): `allowed-tools` on verification skills, tool restriction profiles, empirical token measurement.
55
+
Deferred (carried to ROADMAP `## Backlog`): LIFE-02, LIFE-03, BEHAVIOR-01, UPST-03/04. Also deferred: `allowed-tools` on verification skills, tool restriction profiles, empirical token measurement.
62
56
63
57
### Out of Scope
64
58
@@ -71,27 +65,21 @@ Deferred (not in v1.3): `allowed-tools` on verification skills, tool restriction
71
65
72
66
## Current State
73
67
74
-
**In progress:** v1.3 Consistency & Code-Integrity Safeguards. Phase 10 (Convention & Architectural Conformance) complete 2026-06-26 — `bin/lib/conventions.cjs`ships as the deterministic single source of truth (derive + conformance, zero-dep, never-throws), wired through `gsd-tools verify conventions` + CI and surfaced via the pattern-mapper Conventions section and the code-reviewer advisory CONVENTION tier. CONV-01..04 validated (12/12 must-haves + both human-UAT items passed). Phase 11 (repo-wide detection) is next.
68
+
**Shipped:** v1.3 Consistency & Code-Integrity Safeguards, released as plugin **v4.0.0** (2026-06-27). Phase 10 delivered the convention conformance gate (`bin/lib/conventions.cjs`+ `verify conventions` + pattern-mapper/code-review wiring, CONV-01..04). Phase 11 delivered native drift detection (`semantic-dup` + `phantom-scaffolding` + `drift-allowlist` composed via `verify drift`), `/gsd:scan --drift`, the opt-in warn-first audit-milestone integrity gate, and VibeDrift adopted as a second upstream (heuristics ported natively, never invoked at runtime). DRIFT-01..05 validated; both phases nyquist-compliant. v4.0.0 also moved the plugin to its own version line (decoupled from the gsd-core `+2` scheme). Full v1.3 details: [milestones/v1.3-ROADMAP.md](milestones/v1.3-ROADMAP.md).
75
69
76
70
**Shipped:** v1.2 Upstream Resilience — 2026-04-24. Three detectors now run in CI on every push (file-layout, HANDOFF schema, namespace drift), each with a committed ratchet baseline that hard-fails on regression. Unified `check-drift.cjs` orchestrator + post-sync upstream-schema detector close the loop. Plus a skill-directory rename that fixed a duplicated-prefix UX bug in tab completion. Full v1.2 details: [milestones/v1.2-ROADMAP.md](milestones/v1.2-ROADMAP.md).
## Current Milestone: v1.3 Consistency & Code-Integrity Safeguards
74
+
## Current Milestone
81
75
82
-
**Goal:** Catch cross-session drift — duplicate logic under different names, oscillating naming conventions, split architectural patterns, and half-finished stubs — through prevention at authoring time and detection repo-wide.
76
+
None active. v1.3 Consistency & Code-Integrity Safeguards shipped 2026-06-27 as plugin **v4.0.0**. Run `/gsd:new-milestone` to scope the next one. Archived roadmap: [milestones/v1.3-ROADMAP.md](milestones/v1.3-ROADMAP.md); requirements: [milestones/v1.3-REQUIREMENTS.md](milestones/v1.3-REQUIREMENTS.md).
83
77
84
-
**Target features:**
85
-
- Convention/architectural conformance in plan -> execute -> review (Phase 10): pattern-mapper emits a derived Conventions section; code-review gains conformance, verb-vs-body, and architectural-split dimensions.
86
-
- Repo-wide drift detection (Phase 11): a consistency sweep plus an optional, config-gated VibeDrift gate with an intentional-duplication allowlist and a GSD-native fallback.
87
-
88
-
**Scoped:** 2026-06-26 via `/gsd:explore`; requirements formalized via `/gsd:new-milestone`. Roadmap: [milestones/v1.3-ROADMAP.md](milestones/v1.3-ROADMAP.md). Requirements: [REQUIREMENTS.md](REQUIREMENTS.md).
89
-
90
-
Carried backlog (still deferred, not in v1.3):
91
-
-**LIFE-02** — staleness threshold detection for HANDOFF.json
-**UPST-03/04**: upstream PR packaging (blocked on upstream-direction review)
95
83
96
84
## Context
97
85
@@ -101,7 +89,7 @@ Shipped v1.2 with 3 phases, 3 plans, 14 tasks, plus 3 structurally related quick
101
89
Tech stack: Node.js CJS (bin/lib), MCP server (stdio JSON-RPC), Claude Code plugin system.
102
90
~14k LOC in bin/*.cjs, ~573 LOC MCP server, 81 self-contained skill files (~21k LOC).
103
91
Published as [jnuyens/gsd-plugin](https://github.com/jnuyens/gsd-plugin) on GitHub.
104
-
Based on [GSD 1.41.2](https://github.com/gsd-build/get-shit-done)by TACHES (Lex Christopherson).
92
+
Based on the [GSD](https://github.com/open-gsd/gsd-core) base tree by TÂCHES (Lex Christopherson), now community-maintained at open-gsd; selectively cherry-picked from the gsd-core 1.x line. As of v4.0.0 the plugin tracks its own version line.
105
93
106
94
## Constraints
107
95
@@ -123,6 +111,8 @@ Based on [GSD 1.41.2](https://github.com/gsd-build/get-shit-done) by TACHES (Lex
123
111
| Lightweight MCP transport | Custom stdio JSON-RPC instead of full SDK in plugin | ✓ Good — reduces dependency footprint |
124
112
| memdir project-type memories | Lean phase memories with Why:/How to apply: structure | ✓ Good — auto-recalled by Claude Code's existing pipeline |
125
113
| Plugin hooks via hooks/hooks.json | Auto-loaded by plugin loader, not manifest.hooks | ✓ Good — avoids duplicate registration |
114
+
| VibeDrift as a second upstream (native port, never run) | Keep drift detection 100% native/zero-dep while still learning from VibeDrift heuristics | ✓ Good — DRIFT-01; ops-only release watch, nothing on the runtime path (v4.0.0) |
115
+
| Plugin on its own version line (v4.0.0) | A second upstream plus features with no upstream equivalent make a gsd-core-coupled major misleading | ✓ Good — major now signals plugin milestones; gsd-core line noted per release for provenance |
126
116
127
117
## Evolution
128
118
@@ -154,4 +144,4 @@ This document evolves at phase transitions and milestone boundaries.
154
144
9.**Run `UPSTREAM_VERSION=v1.x.y node bin/maintenance/check-upstream-schema.cjs`** (use the just-synced version) — must exit 0 before declaring the sync complete. If upstream added fields, decide whether to absorb them into `schema/handoff-v1.json` as optional or bump to a `handoff-v2.json` alongside
*Last updated: 2026-06-27 after the v1.3 milestone shipped as plugin v4.0.0. Phase 10 (convention conformance gate, CONV-01..04) + Phase 11 (native drift detection, VibeDrift second upstream, DRIFT-01..05); both nyquist-compliant. Plugin moved to its own version line (decoupled from the gsd-core +2 scheme). Added a weekly plugin self-update watch and a CJS/SDK config-schema parity guard. Prior: 2026-06-26 Phase 10 complete; 2026-05-11 synced upstream GSD 1.41.2 (plugin v2.42.4). Bundled SDK v1.50.0-canary.0.*
**Shipped:** 2026-06-27 (released as plugin v4.0.0)
53
+
**Phases:** 2 (Phases 10-11) | **Plans:** 8
54
+
55
+
### What Was Built
56
+
A convention conformance gate (`conventions.cjs` + `verify conventions`, derived by majority vote with entropy, wired into pattern-mapper and code-review) and native, zero-dependency drift detection (MinHash+LCS structural-dup, phantom/placeholder scaffolding, an auditable allowlist) surfaced via `verify drift`, `/gsd:scan --drift`, and an opt-in audit-milestone integrity gate. VibeDrift was adopted as a second, idea-only upstream (ported natively, watched, never run). The plugin moved to its own version line.
57
+
58
+
### What Worked
59
+
- TDD throughout (RED/GREEN commits) made the verifier's job cheap and caught real bugs.
60
+
- The verifier earned its keep: it found a genuine blocking bug (the `**` glob mistranslation that silently leaked the CJS/SDK dual-resolver pairs), auto-healed inline rather than spun into a gap phase.
61
+
- Sequential-on-main-tree execution traded parallel-worktree speed for bullet-proof reliability in this runtime; the right call for an 8-plan milestone.
62
+
- Nyquist validation caught soft tests (`assert.ok(true)` fallbacks) that "passed" but couldn't fail.
63
+
64
+
### What Was Inefficient
65
+
- Several flagship-feature gaps shipped in Phase 11 and had to be caught later by code review (`.vibedriftignore` loaded-but-unused, dead `METHOD_RE`, a consumer-workflow key mismatch). Tighter executor self-review would have caught these in-phase.
66
+
- The CJS/SDK dual resolver keeps producing parity drift (config schema, aliases); each is a separate fix until a parity guard exists. Added the config-schema parity test this release.
67
+
68
+
### Patterns Established
69
+
- "Native port + second-upstream watch" as an alternative to vendoring a dependency.
70
+
- Auditable-allowlist + ignore-file as the standard way to suppress intentional duplication in drift scans.
71
+
- Major version as a deliberate divergence signal, decoupled from upstream tracking.
72
+
73
+
### Key Lessons
74
+
- A config file the user populates (`.vibedriftignore`) that silently does nothing is the worst failure mode for a trust feature; wire the input through end-to-end and test it.
75
+
- When two resolvers must agree (CJS/SDK), a parity test is worth more than fixing each drift instance.
76
+
77
+
### Cost Observations
78
+
- Model mix: orchestrator on opus, executors/verifiers/auditors on sonnet.
79
+
- Notable: the milestone close turned into a substantial release (flagship-gap fixes + a new cron feature + full docs + Nyquist validation) folded in at the user's request.
0 commit comments