gsdd-cli 0.27.0 → 0.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/README.md +53 -22
  2. package/agents/DISTILLATION.md +2 -2
  3. package/agents/README.md +4 -4
  4. package/agents/approach-explorer.md +4 -4
  5. package/agents/executor.md +20 -20
  6. package/agents/integration-checker.md +2 -2
  7. package/agents/planner.md +10 -26
  8. package/agents/researcher.md +2 -2
  9. package/agents/roadmapper.md +6 -6
  10. package/agents/synthesizer.md +18 -18
  11. package/agents/verifier.md +3 -3
  12. package/bin/adapters/agents.mjs +3 -3
  13. package/bin/adapters/claude.mjs +16 -14
  14. package/bin/adapters/opencode.mjs +15 -12
  15. package/bin/gsdd.mjs +16 -13
  16. package/bin/lib/{models.mjs → config.mjs} +23 -16
  17. package/bin/lib/control-map.mjs +17 -488
  18. package/bin/lib/health-truth.mjs +8 -13
  19. package/bin/lib/health.mjs +25 -39
  20. package/bin/lib/init-flow.mjs +44 -38
  21. package/bin/lib/init-prompts.mjs +3 -3
  22. package/bin/lib/init-runtime.mjs +11 -30
  23. package/bin/lib/lifecycle-preflight.mjs +97 -410
  24. package/bin/lib/lifecycle-state.mjs +2 -1
  25. package/bin/lib/next.mjs +243 -20
  26. package/bin/lib/phase.mjs +706 -280
  27. package/bin/lib/plan-constants.mjs +0 -5
  28. package/bin/lib/rendering.mjs +64 -44
  29. package/bin/lib/runtime-freshness.mjs +18 -15
  30. package/bin/lib/state-dir.mjs +45 -0
  31. package/bin/lib/templates.mjs +59 -22
  32. package/bin/lib/work-context.mjs +12 -1
  33. package/bin/lib/workflows.mjs +0 -1
  34. package/bin/lib/workspace-root.mjs +11 -6
  35. package/distilled/DESIGN.md +89 -31
  36. package/distilled/EVIDENCE-INDEX.md +18 -5
  37. package/distilled/README.md +23 -33
  38. package/distilled/SKILL.md +9 -10
  39. package/distilled/templates/agents.block.md +5 -5
  40. package/distilled/templates/approach.md +3 -3
  41. package/distilled/templates/auth-matrix.md +2 -2
  42. package/distilled/templates/brownfield-change/CHANGE.md +1 -1
  43. package/distilled/templates/delegates/approach-explorer.md +5 -5
  44. package/distilled/templates/delegates/mapper-arch.md +3 -3
  45. package/distilled/templates/delegates/mapper-concerns.md +4 -4
  46. package/distilled/templates/delegates/mapper-quality.md +3 -3
  47. package/distilled/templates/delegates/mapper-tech.md +3 -3
  48. package/distilled/templates/delegates/plan-checker.md +18 -19
  49. package/distilled/templates/delegates/researcher-architecture.md +3 -3
  50. package/distilled/templates/delegates/researcher-features.md +3 -3
  51. package/distilled/templates/delegates/researcher-pitfalls.md +3 -3
  52. package/distilled/templates/delegates/researcher-stack.md +3 -3
  53. package/distilled/templates/delegates/researcher-synthesizer.md +7 -7
  54. package/distilled/templates/research/architecture.md +1 -1
  55. package/distilled/templates/research/pitfalls.md +1 -1
  56. package/distilled/templates/research/stack.md +1 -1
  57. package/distilled/templates/roadmap.md +4 -4
  58. package/distilled/templates/spec.md +2 -2
  59. package/distilled/templates/ui-proof.md +81 -181
  60. package/distilled/workflows/audit-milestone.md +23 -23
  61. package/distilled/workflows/complete-milestone.md +35 -35
  62. package/distilled/workflows/execute.md +34 -35
  63. package/distilled/workflows/map-codebase.md +30 -30
  64. package/distilled/workflows/new-milestone.md +18 -18
  65. package/distilled/workflows/new-project.md +45 -45
  66. package/distilled/workflows/pause.md +15 -15
  67. package/distilled/workflows/plan.md +106 -114
  68. package/distilled/workflows/progress.md +40 -39
  69. package/distilled/workflows/quick.md +49 -50
  70. package/distilled/workflows/resume.md +23 -22
  71. package/distilled/workflows/verify-work.md +7 -7
  72. package/distilled/workflows/verify.md +26 -26
  73. package/docs/BROWNFIELD-PROOF.md +1 -1
  74. package/docs/RUNTIME-SUPPORT.md +13 -13
  75. package/docs/USER-GUIDE.md +26 -21
  76. package/docs/claude/context-monitor.md +1 -1
  77. package/docs/proof/consumer-node-cli/README.md +1 -1
  78. package/package.json +3 -3
  79. package/bin/lib/closeout-report.mjs +0 -318
  80. package/bin/lib/evidence-contract.mjs +0 -325
  81. package/bin/lib/provenance.mjs +0 -390
  82. package/bin/lib/session-fingerprint.mjs +0 -223
  83. package/bin/lib/ui-proof.mjs +0 -1007
  84. package/distilled/workflows/plan-milestone-gaps.md +0 -204
@@ -1,13 +1,14 @@
1
1
  import { existsSync } from 'fs';
2
2
  import { dirname, join, resolve } from 'path';
3
3
  import { fileURLToPath } from 'url';
4
+ import { hasStateMarker, resolveStateDir } from './state-dir.mjs';
4
5
 
5
6
  function normalizePath(value, cwd) {
6
7
  return resolve(cwd, String(value));
7
8
  }
8
9
 
9
10
  function hasPlanningMarker(root) {
10
- return existsSync(join(root, '.planning', 'config.json')) || existsSync(join(root, '.planning'));
11
+ return hasStateMarker(root);
11
12
  }
12
13
 
13
14
  export function consumeWorkspaceRootArg(rawArgs = []) {
@@ -71,7 +72,7 @@ export function resolveWorkspaceContext(rawArgs = [], { cwd = process.cwd(), env
71
72
  invalid: true,
72
73
  error: 'Usage: --workspace-root <path>',
73
74
  workspaceRoot: resolve(cwd),
74
- planningDir: join(resolve(cwd), '.planning'),
75
+ planningDir: resolveStateDir(resolve(cwd)).dir,
75
76
  };
76
77
  }
77
78
 
@@ -81,9 +82,9 @@ export function resolveWorkspaceContext(rawArgs = [], { cwd = process.cwd(), env
81
82
  return {
82
83
  args,
83
84
  invalid: true,
84
- error: `Workspace root does not contain .planning/: ${workspaceRootArg}`,
85
+ error: `Workspace root does not contain .work/ or .planning/: ${workspaceRootArg}`,
85
86
  workspaceRoot: explicitRoot,
86
- planningDir: join(explicitRoot, '.planning'),
87
+ planningDir: resolveStateDir(explicitRoot).dir,
87
88
  };
88
89
  }
89
90
  }
@@ -105,7 +106,9 @@ export function resolveWorkspaceContext(rawArgs = [], { cwd = process.cwd(), env
105
106
  args,
106
107
  invalid: false,
107
108
  workspaceRoot: candidate,
108
- planningDir: join(candidate, '.planning'),
109
+ planningDir: resolveStateDir(candidate).dir,
110
+ stateDirName: resolveStateDir(candidate).name,
111
+ migrationNotice: resolveStateDir(candidate).migrationNotice,
109
112
  };
110
113
  }
111
114
  }
@@ -115,7 +118,9 @@ export function resolveWorkspaceContext(rawArgs = [], { cwd = process.cwd(), env
115
118
  args,
116
119
  invalid: false,
117
120
  workspaceRoot: fallbackRoot,
118
- planningDir: join(fallbackRoot, '.planning'),
121
+ planningDir: resolveStateDir(fallbackRoot).dir,
122
+ stateDirName: resolveStateDir(fallbackRoot).name,
123
+ migrationNotice: resolveStateDir(fallbackRoot).migrationNotice,
119
124
  };
120
125
  }
121
126
 
@@ -72,8 +72,9 @@
72
72
  59. [Continuity Authority And Planning-State Drift](#d59---continuity-authority-and-planning-state-drift)
73
73
  60. [Release Closeout Contract](#d60---release-closeout-contract)
74
74
  61. [Deliberate Subagent Contract](#d61---deliberate-subagent-contract)
75
- 62. [Repo-Native UI Proof Contract](#d62---repo-native-ui-proof-contract)
75
+ 62. [Repo-Native Browser Proof Contract](#d62---repo-native-browser-proof-contract)
76
76
  63. [Computed-First Control Map](#d63---computed-first-control-map)
77
+ 64. [Work-Native Continuity Authority](#d64---work-native-continuity-authority)
77
78
 
78
79
  ---
79
80
 
@@ -960,7 +961,7 @@ Implementation lives under `bin/lib/`:
960
961
  | E7 | ERROR | `.planning/templates/codebase/` missing or empty |
961
962
  | E8 | ERROR | `.planning/templates/` missing critical root files (`spec.md`, `roadmap.md`, `auth-matrix.md`, `ui-proof.md`) |
962
963
  | E9 | ERROR | `.planning/templates/brownfield-change/` missing or missing critical files (`CHANGE.md`, `HANDOFF.md`, `VERIFICATION.md`) |
963
- | E10 | ERROR | Known UI proof bundle metadata is unparseable or fails deterministic privacy/claim validation |
964
+ | E10 | RETIRED | Retired UI proof bundle metadata validator; current browser proof uses plan declarations and markdown observation records |
964
965
  | W1 | WARN | `generation-manifest.json` missing |
965
966
  | W2 | WARN | Manifest-tracked installed templates/helpers modified locally (hash mismatch vs manifest) |
966
967
  | W3 | WARN | Manifest-tracked installed templates/helpers missing from disk but listed in manifest |
@@ -2371,9 +2372,13 @@ Sub-gap (b) was closed by D28's `<persistence>` mandate and guarded by G30. Sub-
2371
2372
  - `escalation_triggers`
2372
2373
  - `approval_gates`
2373
2374
  - `anti_regression_targets`
2374
- - `closure_claim_limit`
2375
- - `parallelism_budget`
2376
- - `leverage` (`lost / kept / gained`)
2375
+ - `known_unknowns`
2376
+ - `browser_proof_required`
2377
+ - `browser_proof_rationale`
2378
+ - `must_haves`
2379
+ - Keep high-risk review pressure in the plan body through Evidence Contract,
2380
+ Stop-And-Challenge, Approval Gates, and Second-Pass Review sections instead
2381
+ of expanding the frontmatter into a control-plane schema.
2377
2382
  - Upgrade planner checking to block missing anti-drift contract fields instead of treating them as optional prose quality.
2378
2383
  - Thread the new contract through execution and verification so the fields constrain what execution may do and what closure may claim.
2379
2384
 
@@ -2507,7 +2512,7 @@ Sub-gap (b) was closed by D28's `<persistence>` mandate and guarded by G30. Sub-
2507
2512
 
2508
2513
  ## D56 - Executable Brownfield Routing And Widen-Only Escalation
2509
2514
 
2510
- **Decision (2026-04-21):** Brownfield routing should treat `CHANGE.md` as the default operational anchor and allow a surviving `phase` or `quick` checkpoint to outrank it only when one strict-match rule proves the checkpoint is still the active execution surface. From concrete brownfield state, `/gsdd-new-project` remains available only as an intentional widen path into full milestone setup, not as an accidental fallback recommendation.
2515
+ **Decision (2026-04-21; revised 2026-06-30):** Brownfield routing should treat `CHANGE.md` as the default operational anchor and allow a surviving `phase` or `quick` checkpoint to outrank it only when one strict-match rule proves the checkpoint is still the active execution surface. From concrete brownfield state, `/gsdd-new-project` remains available only as an intentional widen path into full milestone setup, not as an accidental fallback recommendation. Active bounded brownfield planning uses the existing `gsdd-plan` workflow with explicit `brownfield-change` authority instead of being forced through unrelated ROADMAP phase membership.
2511
2516
 
2512
2517
  **Context:**
2513
2518
  - D54 defined the bounded `brownfield-change/` contract and D55 established its continuity floor, but the routing matrix above those artifacts was still inconsistent: `progress` could still route back through stale checkpoint residue, `resume` could still make a non-matching checkpoint primary, and `quick` / `map-codebase` / `new-project` still risked implying that full lifecycle initialization was the normal fallback from already-concrete bounded work.
@@ -2524,12 +2529,17 @@ Sub-gap (b) was closed by D28's `<persistence>` mandate and guarded by G30. Sub-
2524
2529
  - `quick` uses it when the bounded change is still undefined or when the user intentionally widens scope
2525
2530
  - `map-codebase` frames it as full lifecycle setup only when the user wants to widen beyond bounded brownfield work
2526
2531
  - `new-project` itself recognizes existing `CHANGE.md` continuity and treats invocation from that state as deliberate promotion, not mistaken routing
2532
+ - Keep `gsdd-plan` as the bounded brownfield planning entrypoint when an active `.planning/brownfield-change/CHANGE.md` exists:
2533
+ - `gsdd next --json` reports `authority: brownfield_change` and routes to `gsdd-plan`
2534
+ - `gsdd-plan` classifies the target before phase preflight
2535
+ - `lifecycle-preflight plan brownfield-change` authorizes the change-folder lane without requiring the active ROADMAP phase to match a PBI or consumer ticket
2527
2536
  - Lock the contract with helper, guard, and generated-surface scenario coverage.
2528
2537
 
2529
2538
  **Why this fits the codebase:**
2530
2539
  - It extends the existing provenance helper and generated-surface workflow model instead of inventing another routing registry or hidden state store.
2531
2540
  - It preserves the D55 one-anchor split: checkpoints stay visible and resume-owned, but they do not silently demote the active brownfield contract unless the repo can prove the checkpoint is still current.
2532
2541
  - It keeps the brownfield lane bounded by removing accidental fallback escalation while still preserving an intentional route into milestone planning.
2542
+ - It fixes the consumer failure mode where PBI/ticket-sized brownfield work was blocked by an unrelated active ROADMAP phase while still avoiding a new workflow or auto-runner surface.
2533
2543
  - It matches the repo's anti-drift posture: ambiguous or weak routing proof fails closed in favor of the current operational anchor.
2534
2544
 
2535
2545
  **Evidence:**
@@ -2549,7 +2559,7 @@ Sub-gap (b) was closed by D28's `<persistence>` mandate and guarded by G30. Sub-
2549
2559
  - `get-shit-done/workflows/progress.md`, `get-shit-done/workflows/resume.md`, `get-shit-done/workflows/quick.md`, `get-shit-done/workflows/new-project.md`
2550
2560
 
2551
2561
  **Consequences:**
2552
- - Brownfield next-step routing now has one deterministic precedence rule instead of five workflow-local interpretations.
2562
+ - Brownfield next-step routing now has one deterministic precedence rule instead of five workflow-local interpretations, and active bounded brownfield planning has one explicit preflight authority.
2553
2563
  - A stale or unrelated `phase` / `quick` checkpoint can remain reviewable without automatically hijacking the current brownfield lane.
2554
2564
  - `/gsdd-new-project` remains part of the system, but as deliberate promotion from concrete brownfield work rather than as a generic fallback.
2555
2565
  - Phase 43 can now focus on bounded growth and milestone handoff instead of first repairing invalid routing recommendations.
@@ -2816,49 +2826,47 @@ Posture compatibility is part of that closeout contract: `repo_closeout` and `ru
2816
2826
 
2817
2827
  ---
2818
2828
 
2819
- ## D62 - Repo-Native UI Proof Contract
2829
+ ## D62 - Repo-Native Browser Proof Contract
2820
2830
 
2821
- **Decision (2026-04-28; revised 2026-05-09):** UI-sensitive work should carry a compact planned proof-slot contract and, when executed, an observed UI proof bundle that references artifacts by path or link while preserving the existing closure evidence kinds: `code`, `test`, `runtime`, `delivery`, and `human`. For live rendered UI proof, `agent-browser` is the default runtime evidence path for consumers, while existing Playwright tests remain the canonical repeatable browser-regression path when present. The deterministic `ui-proof` validator remains provider-agnostic structural validation, but it now validates planned slot specificity, concise tool provenance, local artifact path existence when validating from files, raw-artifact safety for paths and URLs, and failed/partial proof classification so the workflow cannot degrade back into unstructured "looks good" review. Direct phase verification also treats plan frontmatter as the UI-proof declaration authority and fails closed on missing phase prerequisites, empty `ui_proof_slots: []` without `no_ui_proof_rationale`, and invalid required UI proof.
2831
+ **Decision (2026-04-28; revised 2026-05-09; revised 2026-07-08):** UI-sensitive work should carry a compact browser-proof declaration in plan frontmatter and, when executed, a plain markdown observation record that references artifacts by path or link while preserving the existing closure evidence kinds: `code`, `test`, `runtime`, `delivery`, and `human`. For live rendered UI proof, `agent-browser` is the default runtime evidence path for consumers, while existing Playwright tests remain the canonical repeatable browser-regression path when present. Direct phase verification treats `browser_proof_required` and `browser_proof_rationale` as the declaration authority and fails closed on missing phase prerequisites, invalid browser-proof frontmatter, a missing `## Browser Proof Plan` when proof is required, or a required browser-proof plan that omits route/state, viewport, runtime path, evidence kind, evidence command or no-command rationale, observations, artifacts with privacy/safety posture, and claim limit.
2822
2832
 
2823
2833
  **Context:**
2824
- - UI proof targets the recurring failure mode where agents claim a UI works or looks good without rendered proof, matched observations, or explicit human judgment.
2825
- - The contract defines proof slots, proof bundles, comparison statuses, fail-closed agent guardrails, deterministic metadata validation, privacy metadata, and health visibility without adding a browser-provider framework.
2826
- - GSD's archived planner, executor, and verifier roles preserve strong lifecycle discipline, but they do not provide this UI-specific planned-vs-observed proof model. GSDD keeps the lifecycle leverage and adds a repo-native UI proof substrate without adding a browser-provider framework.
2834
+ - Browser proof targets the recurring failure mode where agents claim a UI works or looks good without rendered proof, matched observations, or explicit human judgment.
2835
+ - The contract defines plan declarations, Browser Proof Plan sections, observation records, fail-closed agent guardrails, privacy/safety notes, and claim limits without adding a browser-provider framework or a separate JSON validator.
2836
+ - GSD's archived planner, executor, and verifier roles preserve strong lifecycle discipline, but they do not provide this UI-specific browser observation model. GSDD keeps the lifecycle leverage and adds a repo-native browser proof substrate without adding a browser-provider framework.
2827
2837
  - OneShot's QC guidance and Vercel's `agent-browser` skill converge on an interactive browser loop for snapshots, ref-based interaction, screenshots, and network/console-adjacent inspection. GSDD adapts that as a default workflow instruction, not as a hard validator dependency.
2828
2838
 
2829
2839
  **Decision:**
2830
- - Planning must classify UI-sensitive work and require either `ui_proof_slots` or an explicit `no_ui_proof_rationale`.
2831
- - Direct phase verification must read `ui_proof_slots` and `no_ui_proof_rationale` from plan frontmatter only; body prose, fenced examples, and stale sidecars are not declaration authority.
2832
- - Direct phase verification must fail nonzero with structured blockers when no matching plan or summary exists, or when `ui_proof_slots: []` lacks a nonblank `no_ui_proof_rationale`.
2833
- - When an explicit no-UI rationale exists, stale UI-proof sidecars are warning-level cleanup signals, not proof and not blockers.
2834
- - Planned slots record claim, route/state, required evidence kinds, minimum observations, expected artifact types, runnable validation command, environment/viewport, manual-acceptance requirement, claim limit, and requirement IDs.
2835
- - Observed proof bundles record claim, requirement/slot IDs, route/state, environment, viewport, evidence inputs, commands/manual steps, observations, artifacts, privacy metadata, result, and claim limits.
2836
- - Planned slots must be tight enough for the plan checker to reject vague proof: specific route/state, viewport rationale or narrowed claim limit, minimum observations, expected artifact types, runnable validation, and matchability back to the exact UI claim.
2840
+ - Planning must classify UI-sensitive work with `browser_proof_required: true|false` and a nonblank `browser_proof_rationale`.
2841
+ - Direct phase verification must read browser-proof declaration authority from plan frontmatter only. Body prose and stale sidecars are not declaration authority.
2842
+ - Direct phase verification must fail nonzero with structured blockers when no matching plan or summary exists, when browser-proof frontmatter is invalid, or when a required Browser Proof Plan is missing or incomplete.
2843
+ - When browser proof is not required and the rationale is explicit, stale browser-proof observations are warning-level cleanup signals, not proof and not blockers. Legacy `ui_proof_slots: []` with a meaningful `no_ui_proof_rationale` is treated as a compatibility warning rather than a blocker; legacy non-empty `ui_proof_slots` still require migration because required rendered proof cannot be inferred losslessly.
2844
+ - Browser Proof Plan sections record route/state, viewport coverage, runtime path, evidence kind, evidence command or narrowed no-command rationale, observations, artifacts, privacy/safety note, and claim limit.
2845
+ - Observation records record the exact plan artifact, actual route/state, viewport, runtime path, evidence kind, command/manual step, rendered observations, artifacts, result, privacy/safety note, stale-after trigger, and claim limit.
2846
+ - Browser Proof Plan sections must be tight enough for the plan checker to reject vague proof: specific route/state, viewport coverage or narrowed claim, runtime path, supported evidence kind, rendered observations, artifacts/privacy notes, evidence command or no-command rationale, and claim limit.
2837
2847
  - The planner chooses viewport coverage, but responsive or layout-sensitive claims require desktop/mobile or equivalent state coverage unless the claim is explicitly narrowed.
2838
2848
  - Execution defaults to `agent-browser` for live UI runtime proof: open the route/state, capture interactive snapshots/refs where relevant, exercise the changed flow, capture screenshots for planned viewport(s), and record relevant console/network observations.
2839
2849
  - Existing Playwright tests or package scripts remain the canonical repeatable browser-regression evidence when present. Playwright scripting is reserved for checks `agent-browser` cannot cover cleanly, such as JS-disabled behavior, structured console listeners, or multi-context testing.
2840
- - Verification compares planned slots to observed bundles using `satisfied`, `partial`, `missing`, `waived`, `deferred`, and `not_applicable`; waiver and deferral are not proof.
2841
- - UI correctness claims fail closed unless rendered proof is matched exactly to claim, route/state, observation, evidence kind, artifact path or manual step, privacy metadata, result, and claim limit, or an explicit waiver/deferment narrows the claim.
2842
- - Human acceptance may close a narrowed claim and record proof debt, but it must not convert missing or mismatched non-human evidence into `satisfied` proof.
2850
+ - Direct verification fails closed unless each required browser-proof plan has a repo-local, parser-compatible, explicitly passing observation that names the exact plan artifact and carries supported evidence semantics, privacy/safety posture, and bounded claim scope. The workflow verifier still owns substantive judgment about whether the recorded observation actually supports the route/state, viewport, artifact, and claim.
2851
+ - Human acceptance may close a narrowed claim and record proof debt, but it must not convert missing or mismatched non-human evidence into satisfied proof.
2843
2852
  - Screenshots, traces, videos, reports, accessibility scans, Gherkin, and visual diffs are artifact types or activities mapped onto the five existing evidence kinds, not new evidence kinds.
2844
- - Source annotations, AST/cAST findings, semantic search hits, comments, and Semble-like retrieval may discover proof obligations, but they are discovery hints only and do not satisfy proof slots.
2853
+ - Source annotations, AST/cAST findings, semantic search hits, comments, and Semble-like retrieval may discover proof obligations, but they are discovery hints only and do not satisfy browser proof.
2845
2854
  - Visual taste, accessibility judgment, baseline acceptance, subjective polish/layout quality, and privacy publication require human evidence or explicit waiver, and human approval does not replace required `code`, `test`, `runtime`, or `delivery` evidence.
2846
- - Deterministic validation keeps the evidence and comparison-status vocabularies unchanged: planned slots require specific claim, route/state, evidence, expected artifacts, validation, viewport, and claim-limit fields; artifact entries require `visibility`, `retention`, `sensitivity`, and `safe_to_publish`; raw screenshots, traces, videos, DOM snapshots, and reports default to `local_only` plus `safe_to_publish: false`; `bin/lib/ui-proof.mjs` validates required bundle/observation fields, structured command/manual-step entries, fixed evidence kinds, concise `tools_used` IDs, claim/result statuses, comparison statuses, failure classification for failed/partial proof, claim limits, privacy metadata, safe artifact references, local artifact path existence when validating file-backed bundles, and public/tracked/delivery proof claims backed by local-only, unsafe, unsanitized, or privacy-contradictory artifacts.
2847
- - `gsdd health` reports invalid known UI proof bundles as E10 using the same validator, staying read-only and avoiding raw artifact content inspection.
2848
- - Failed UI proof is reported through existing GSDD gap/proof-debt language. Product behavior defects, missing or blocked infrastructure, flaky harnesses, and ambiguous specs explain causes, but they do not add new evidence kinds, result statuses, or comparison statuses.
2855
+ - The current contract is validator-light by design: direct phase verification checks declaration shape, required Browser Proof Plan fields, observation record shape, safe linked-record boundaries, exact plan references, explicit pass/fail posture, supported evidence-kind labels, and bounded claim wording. It does not inspect raw screenshot pixels, report contents, or visual quality; substantive rendered proof remains a workflow/role obligation captured in summaries or observation records.
2856
+ - Failed browser proof is reported through the failure-cause names in `distilled/references/proof-rules.md`: product behavior defects, missing or blocked infrastructure, flaky harnesses, and ambiguous specs explain causes, but they do not add new evidence kinds.
2849
2857
 
2850
2858
  **Leverage:**
2851
- - Lost: UI-sensitive work now carries a small proof-contract burden, and default live proof guidance adds slightly more specificity for planners/checkers to enforce.
2852
- - Kept: repo-native markdown artifacts, optional project tooling, fixed closure evidence kinds, generated-surface freshness, the plan/execute/verify separation, and provider-agnostic deterministic metadata validation.
2853
- - Gained: exact claim-to-proof traceability, strict comparison statuses, privacy and claim-limit metadata, fail-closed overclaim guardrails, deterministic metadata validation, a concrete live browser evidence path, and health-visible protection against unsafe public proof claims.
2859
+ - Lost: UI-sensitive work still carries a small proof-contract burden, and direct verification checks only shape rather than raw screenshot/report contents.
2860
+ - Kept: repo-native markdown artifacts, optional project tooling, fixed closure evidence kinds, generated-surface freshness, the plan/execute/verify separation, and a concrete live browser evidence path.
2861
+ - Gained: a much simpler consumer contract, exact claim-to-observation traceability, privacy/safety notes, claim limits, and fail-closed overclaim guardrails without a non-existent validator command.
2854
2862
 
2855
2863
  **Evidence:**
2856
2864
  - `distilled/templates/ui-proof.md`
2857
2865
  - `distilled/workflows/plan.md`, `distilled/workflows/execute.md`, `distilled/workflows/quick.md`, `distilled/workflows/verify.md`
2858
2866
  - `agents/planner.md`, `agents/executor.md`, `agents/verifier.md`, `distilled/templates/delegates/plan-checker.md`
2859
- - `bin/lib/templates.mjs`, `bin/lib/ui-proof.mjs`, `bin/lib/health.mjs`, `bin/lib/phase.mjs`, `bin/lib/rendering.mjs`
2867
+ - `bin/lib/templates.mjs`, `bin/lib/health.mjs`, `bin/lib/phase.mjs`, `bin/lib/rendering.mjs`
2860
2868
  - `tests/phase.test.cjs`, `tests/gsdd.guards.test.cjs`, `tests/gsdd.health.test.cjs`, `tests/gsdd.init.test.cjs`
2861
- - GSD comparison: the upstream planner, executor, and verifier role patterns preserve lifecycle rigor, but they do not define UI proof slots or planned-vs-observed UI proof bundles.
2869
+ - GSD comparison: the upstream planner, executor, and verifier role patterns preserve lifecycle rigor, but they do not define browser-proof plan declarations or observation records.
2862
2870
  - OneShot QC source: `https://github.com/oneshot-repo/OneShot/tree/main/skills`
2863
2871
  - Vercel `agent-browser` docs: `https://github.com/vercel-labs/agent-browser/blob/main/skill-data/core/SKILL.md` and `https://agent-browser.dev/snapshots`
2864
2872
  - Playwright docs: `https://playwright.dev/docs/trace-viewer`, `https://playwright.dev/docs/next/screenshots`, and `https://playwright.dev/mcp/tools/tracing`
@@ -2919,6 +2927,56 @@ Posture compatibility is part of that closeout contract: `repo_closeout` and `ru
2919
2927
  - `closeout-report` is a compact replay/report helper, not `progress`, `verify`, milestone audit, release automation, cleanup, or a dashboard. The source CLI path includes full health diagnostics; the generated helper reports health availability as a typed warning if the full health builder is not present in that helper runtime.
2920
2928
  - Future health hardening can consume the same helper output for stricter reporting, but must avoid turning local annotations into product truth.
2921
2929
 
2930
+ ## D64 - Work-Native Continuity Authority
2931
+
2932
+ **Decision (2026-06-29; revised 2026-06-30):** `.work` becomes the canonical continuity surface for `gsdd next` and future work-native state, while `.planning` remains readable legacy lifecycle input during migration and for existing workflows that still own their write paths. The authority used by routing, preflight, verification, and auto-gate packets must be explicit in machine-readable output. Repo policy, not Workspine itself, decides whether `.work` is committed or local-only; in the Workspine framework repo, `.work` is local dogfood/runtime state and should not be tracked. During migration, `gsdd next` may also route existing `.planning` brownfield-change authority into `gsdd-plan` without treating `.planning` ROADMAP phases as the only valid plan target.
2933
+
2934
+ **Context:**
2935
+ - PR #116 merged the first `gsdd next` / `.work` continuity slice, but the framework repo still had split truth: `.work/milestone` described a locally implemented continuity milestone while `.planning` still described v2.0.0 parallel orchestration and P65/P66.
2936
+ - Old v2.0.0 parallel orchestration is too distant to migrate wholesale. Its useful ideas are partial extraction candidates: write ownership and closeout truth gates move into work-native auto-gate safety now; the PR #113 registry material remains parked for later extraction or rescue.
2937
+ - OpenSpec's change/archive model and LeanSpec's compact spec guidance both reinforce that long-lived state needs clear ownership and small, reviewable truth surfaces rather than scattered status prose.
2938
+ - The cited OpenAI and Anthropic agent-orchestration guidance favors manager-owned orchestration, explicit handoffs, guardrails, evaluator loops, and bounded tool authority rather than an unbounded agent loop.
2939
+ - MCP and agent-tooling security guidance reinforce that tool/resource outputs and local memory surfaces are untrusted inputs unless their provenance, privacy posture, and authority boundary are explicit.
2940
+
2941
+ **Decision:**
2942
+ - Treat `.work` as the source of truth for `gsdd next` continuity routing, focus packets, work-native milestone state, decisions, questions, evidence pointers, dogfood findings, and bounded auto-gate state.
2943
+ - Keep `.planning` readable as legacy lifecycle input. Existing `gsdd-plan`, `gsdd-execute`, `gsdd-verify`, audit, complete-milestone, phase-status, and helper write paths continue to work against `.planning` until each surface is deliberately bridged or migrated.
2944
+ - Require routing and preflight output to report authority explicitly, using scoped values such as `work_milestone`, `planning`, or `blocked/conflict`; `.work` authority must not silently mask repo truth, PR truth, or unrelated `.planning` blockers.
2945
+ - Include `brownfield_change` as an explicit scoped authority for existing bounded-change artifacts. This is a compatibility bridge, not a new lifecycle root: it reuses the current `gsdd-plan` workflow and the brownfield-change folder contract.
2946
+ - Preserve repo/control-map truth as the highest authority for branch, PR, worktree, dirty-state, and delivery claims. `.work` can carry intent and continuity; it cannot convert local prose into integrated repo truth.
2947
+ - Define execute-until-gate as task-bounded automation, not session-bounded autonomy. Auto mode may run typed, reviewed, `type=auto` tasks and bounded verification/repair cycles only until a human gate, verification gap, repeated blocker, authority conflict, trust boundary, or scope expansion stops it.
2948
+ - Keep milestone completion user-owned. `gsdd next` may route to completion approval, but it must not mark a milestone complete autonomously.
2949
+ - Treat `.work` tracking as repo policy. Consumer projects may commit `.work` if that fits their privacy and collaboration model. The Workspine framework repo keeps `.work` local-only because it is dogfooding its own runtime state while developing the framework.
2950
+ - Reframe the old v2.0.0 parallel-orchestration milestone as legacy input rather than the active next milestone. Preserve write-set ownership and closeout truth gates in the new work-native authority milestone; park PR #113/P65 registry material as extract-later.
2951
+
2952
+ **Leverage:**
2953
+ - Lost: the old clean "v2.0.0 parallel PR orchestration next" story and the convenience of treating `.planning` as the only lifecycle state root.
2954
+ - Kept: repo-native files, plain markdown workflow contracts, existing `.planning` compatibility, computed-first control-map authority, plan/execute/verify separation, and human-owned completion.
2955
+ - Gained: a clear continuity authority for `gsdd next`, explicit migration semantics, safer execute-until-gate foundations, repo-policy-driven tracking, a brownfield compatibility bridge for bounded consumer changes, and a typed authority boundary that prevents future auto mode from running on stale or contradictory state.
2956
+
2957
+ **Evidence:**
2958
+ - `bin/lib/next.mjs`, `bin/lib/work-context.mjs`, `bin/lib/lifecycle-preflight.mjs`
2959
+ - `tests/gsdd.next.test.cjs` and `tests/phase.test.cjs`
2960
+ - `README.md` for the public `.work` tracking policy
2961
+ - PR #116, merged 2026-06-29 with merge commit `b91a138c42f2ab3ff7376317031208c7a716decd`: `https://github.com/PatrickSys/workspine/pull/116`
2962
+ - PR #113, still open as the parked registry extraction candidate: `https://github.com/PatrickSys/workspine/pull/113`
2963
+ - GSD comparison sources: `agents/_archive/gsd-roadmapper.md`, `agents/_archive/gsd-planner.md`, `agents/_archive/gsd-executor.md`, and `agents/_archive/gsd-verifier.md`. These preserve lifecycle rigor around requirements, plans, state, execution, and verification, but they do not define a separate work-native `next` authority root; GSDD preserves the rigor while moving agent-facing continuity into `.work`.
2964
+ - OpenSpec docs: `https://openspec.dev/`
2965
+ - LeanSpec docs: `https://www.lean-spec.dev/docs/guide/first-principles`
2966
+ - OpenAI Agents SDK orchestration docs: `https://developers.openai.com/api/docs/guides/agents/orchestration`
2967
+ - OpenAI guardrails and approvals docs: `https://developers.openai.com/api/docs/guides/agents/guardrails-approvals`
2968
+ - OpenAI agent evals docs: `https://developers.openai.com/api/docs/guides/agent-evals`
2969
+ - Anthropic agent engineering guidance: `https://www.anthropic.com/engineering/building-effective-agents`
2970
+ - Anthropic long-running harness guidance: `https://www.anthropic.com/engineering/harness-design-long-running-apps`
2971
+ - Model Context Protocol security guidance: `https://modelcontextprotocol.io/specification/2025-06-18/basic/security_best_practices`
2972
+ - GitHub Copilot repository instructions docs: `https://docs.github.com/en/copilot/concepts/prompting/response-customization`
2973
+
2974
+ **Consequences:**
2975
+ - Future `gsdd next` and auto-gate work should start by reconciling `.work`, `.planning`, repo/control-map, PR truth, and active brownfield-change authority into one conservative next action or one explicit blocker.
2976
+ - Future milestones must not say "P65 shipped, start P66" unless repo, PR, `.work`, and legacy `.planning` truth agree.
2977
+ - Future auto mode must expose typed gates, loop guards, evidence requirements, stop reasons, and authority source in JSON. It must never rely on prose such as "continue autonomously" as execution permission.
2978
+ - Future framework work should not add tracked `.work` runtime state by default. Durable product changes belong in source/design/workflow/test files; `.work` dogfood state remains local unless explicitly promoted.
2979
+
2922
2980
  ---
2923
2981
 
2924
2982
  ## Maintenance
@@ -430,10 +430,11 @@
430
430
  ## D56 — Executable Brownfield Routing And Widen-Only Escalation
431
431
  - `.planning/SPEC.md` (`BROWNFIELD-03`, Current State, key decision row)
432
432
  - `.planning/phases/42-executable-brownfield-routing/42-PLAN.md`
433
- - `bin/lib/provenance.mjs`
433
+ - `bin/lib/provenance.mjs`, `bin/lib/lifecycle-state.mjs`, `bin/lib/next.mjs`, `bin/lib/work-context.mjs`, `bin/lib/lifecycle-preflight.mjs`
434
434
  - `distilled/workflows/progress.md`, `distilled/workflows/resume.md`, `distilled/workflows/quick.md`, `distilled/workflows/map-codebase.md`, `distilled/workflows/new-project.md`
435
+ - `distilled/workflows/plan.md`
435
436
  - `.internal-research/TODO.md`, `.internal-research/gaps.md`
436
- - `tests/phase.test.cjs`, `tests/gsdd.guards.test.cjs`, `tests/gsdd.scenarios.test.cjs`
437
+ - `tests/phase.test.cjs`, `tests/gsdd.next.test.cjs`, `tests/gsdd.init.test.cjs`, `tests/gsdd.guards.test.cjs`, `tests/gsdd.scenarios.test.cjs`
437
438
  - `get-shit-done/workflows/progress.md`, `get-shit-done/workflows/resume.md`, `get-shit-done/workflows/quick.md`, `get-shit-done/workflows/new-project.md`
438
439
 
439
440
  ## D57 — Bounded Brownfield Growth And Context-Preserving Milestone Handoff
@@ -485,11 +486,11 @@
485
486
  - GSD comparison source: `get-shit-done/workflows/new-project.md`
486
487
  - `tests/gsdd.guards.test.cjs`, `tests/gsdd.invariants.test.cjs`
487
488
 
488
- ## D62 — Repo-Native UI Proof Contract
489
+ ## D62 — Repo-Native Browser Proof Contract
489
490
  - `distilled/templates/ui-proof.md`
490
491
  - `distilled/workflows/plan.md`, `distilled/workflows/execute.md`, `distilled/workflows/quick.md`, `distilled/workflows/verify.md`
491
492
  - `agents/planner.md`, `agents/executor.md`, `agents/verifier.md`, `distilled/templates/delegates/plan-checker.md`
492
- - `bin/lib/templates.mjs`, `bin/lib/ui-proof.mjs`, `bin/lib/health.mjs`, `bin/lib/rendering.mjs`
493
+ - `bin/lib/templates.mjs`, `bin/lib/health.mjs`, `bin/lib/phase.mjs`, `bin/lib/rendering.mjs`
493
494
  - `tests/phase.test.cjs`, `tests/gsdd.guards.test.cjs`, `tests/gsdd.health.test.cjs`, `tests/gsdd.init.test.cjs`
494
495
  - OneShot QC/browser policy: https://github.com/oneshot-repo/OneShot/tree/main/skills
495
496
  - Vercel agent-browser docs: https://github.com/vercel-labs/agent-browser/blob/main/skill-data/core/SKILL.md, https://agent-browser.dev/snapshots
@@ -502,7 +503,7 @@
502
503
  - Agent-hostile UI semantics source: https://dev.to/ratikkoka/your-ui-is-invisible-to-ai-agents-heres-how-to-fix-it-1ib3
503
504
  - Browser-harness efficiency source: https://dev.to/louaiboumediene/the-ai-harness-why-your-ai-coding-agent-is-only-as-smart-as-the-repo-you-put-it-in-cml
504
505
  - Dynamic-UI harness brittleness source: https://tessl.io/blog/webmcp-making-web-apps-faster-and-cheaper-for-ai-agents/
505
- - Long-term pitfalls carried forward: do not accept screenshot-free "looks good" claims, weak planned slots, unverified artifact paths, stale interactive refs after page mutation, partial/failed proof without failure classification, raw artifact publication without privacy metadata, browser contention in parallel checks, or semantic/selector-poor UI that forces fragile coordinate inspection.
506
+ - Long-term pitfalls carried forward: do not accept screenshot-free "looks good" claims, weak browser-proof plans, unverified artifact paths, stale interactive refs after page mutation, partial/failed proof without failure classification, raw artifact publication without privacy/safety notes, browser contention in parallel checks, or semantic/selector-poor UI that forces fragile coordinate inspection.
506
507
  - Supporting spec/runtime docs: https://openspec.dev/, https://www.lean-spec.dev/docs/guide/first-principles, https://help.openai.com/en/articles/11369540-codex-in-chatgpt, https://docs.claude.com/en/docs/agents-and-tools/agent-skills, https://docs.github.com/en/copilot/concepts/prompting/response-customization
507
508
 
508
509
  ## D63 — Computed-First Control Map
@@ -515,6 +516,18 @@
515
516
  - OpenSpec comparison: OpenSpec change archive flow does not own long-running multi-worktree local-state reconciliation as a portable harness surface
516
517
  - Harness sources: https://www.anthropic.com/engineering/harness-design-long-running-apps, https://code.claude.com/docs/en/worktrees, https://developers.openai.com/codex/cloud, https://developers.openai.com/api/docs/guides/agents/orchestration, https://developers.openai.com/api/docs/guides/agents/guardrails-approvals, https://developers.openai.com/api/docs/guides/agent-evals, https://docs.github.com/en/copilot/concepts/agents/cloud-agent/about-cloud-agent, https://agent-browser.dev/sessions, https://developer.chrome.com/docs/devtools/agents
517
518
 
519
+ ## D64 — Work-Native Continuity Authority
520
+ - `bin/lib/next.mjs`, `bin/lib/work-context.mjs`, `bin/lib/lifecycle-preflight.mjs`, `bin/lib/rendering.mjs`
521
+ - `distilled/workflows/plan.md`
522
+ - `tests/gsdd.next.test.cjs`, `tests/phase.test.cjs`, `tests/gsdd.init.test.cjs`, `tests/gsdd.guards.test.cjs`, `tests/gsdd.scenarios.test.cjs`
523
+ - `README.md` for the public `.work` tracking policy
524
+ - PR #116 merged 2026-06-29, merge commit `b91a138c42f2ab3ff7376317031208c7a716decd`: https://github.com/PatrickSys/workspine/pull/116
525
+ - PR #113 remains open as parked registry extraction input: https://github.com/PatrickSys/workspine/pull/113
526
+ - GSD comparison sources: `agents/_archive/gsd-roadmapper.md`, `agents/_archive/gsd-planner.md`, `agents/_archive/gsd-executor.md`, `agents/_archive/gsd-verifier.md`; upstream GSD lifecycle rigor does not define a separate work-native `next` authority root, so GSDD keeps the lifecycle rigor while moving agent-facing continuity into `.work`
527
+ - Spec framework sources: https://openspec.dev/, https://www.lean-spec.dev/docs/guide/first-principles
528
+ - Orchestrator sources: https://developers.openai.com/api/docs/guides/agents/orchestration, https://www.anthropic.com/engineering/building-effective-agents
529
+ - Industry guidance sources: https://developers.openai.com/api/docs/guides/agents/guardrails-approvals, https://developers.openai.com/api/docs/guides/agent-evals, https://www.anthropic.com/engineering/harness-design-long-running-apps, https://modelcontextprotocol.io/specification/2025-06-18/basic/security_best_practices, https://docs.github.com/en/copilot/concepts/prompting/response-customization
530
+
518
531
  ---
519
532
 
520
533
  ## Maintenance
@@ -1,6 +1,6 @@
1
1
  # Workspine
2
2
 
3
- A repo-native delivery spine for the part of AI coding that still needs human judgment: planning, checking, execution, verification, and handoff.
3
+ Plan, execute, and verify AI-assisted work from files in your repo — for the part of AI coding that still needs human judgment: planning, checking, execution, verification, and handoff.
4
4
 
5
5
  Workspine keeps planning, execution, verification, handoff, and progress state in the repo so work survives cold starts, runtime switches, and session loss. The retained package and CLI contracts remain `gsdd-cli` / `gsdd`.
6
6
 
@@ -25,20 +25,20 @@ Skip the full lifecycle for tiny, obvious edits. Direct prompting in your usual
25
25
  ## What This Is
26
26
 
27
27
  Workspine is a small set of workflow sources plus a CLI (`gsdd`) that:
28
- - scaffolds a project planning workspace (`.planning/`)
28
+ - scaffolds a project planning workspace (`.work/`)
29
29
  - generates compact open-standard workflow entrypoints as skills (`.agents/skills/gsdd-*/SKILL.md`)
30
- - generates an internal repo-local helper runtime at `.planning/bin/gsdd.mjs` for deterministic workflow commands run from the repo root
30
+ - generates an internal repo-local helper runtime at `.work/bin/gsdd.mjs` for deterministic workflow commands run from the repo root
31
31
  - optionally generates tool-specific adapters for runtimes that need extra native surfaces (root `AGENTS.md`, Claude skills + plan-command alias + native agents, OpenCode commands + native agents, Codex CLI checker agent)
32
32
 
33
- It gives serious AI-assisted work one durable repo workflow spine for planning, checking, execution, verification, and handoff without pretending to be a hosted orchestration layer.
33
+ It gives serious AI-assisted work one durable, repo-native workflow for planning, checking, execution, verification, and handoff plain files, no hosted service.
34
34
 
35
- Workspine is the product name. The package, CLI commands, workflow prefixes, and workspace directory remain `gsdd-cli`, `gsdd`, `gsdd-*`, and `.planning/` these are retained technical contracts, not rename residue.
35
+ Workspine is the product name. The package, CLI commands, workflow prefixes, and workspace directory remain `gsdd-cli`, `gsdd`, `gsdd-*`, and `.work/`; legacy `.planning/` workspaces are still read.
36
36
 
37
- Workspine began as a fork of Get Shit Done, whose long-horizon delivery spine proved the problem was real. Since the fork, upstream GSD has continued evolving into a broad multi-runtime framework. Workspine took a different path: a smaller repo-native delivery spine with fewer public workflow surfaces, generated runtime surfaces from a portable core, evidence-gated closure, and provenance-aware continuity.
37
+ Workspine began as a fork of Get Shit Done, whose long-horizon workflow proved the problem was real. Since the fork, upstream GSD has continued evolving into a broad multi-runtime framework. Workspine took a different path: a smaller repo-native tool with fewer public workflows, generated runtime surfaces from a portable core, proof required before closing work, and decisions that keep their why.
38
38
 
39
39
  Launch proof posture:
40
- - Directly validated in repo truth: Claude Code, Codex CLI, OpenCode
41
- - Qualified support only: Cursor, Copilot, Gemini CLI can use the shared `.agents/skills/` surface plus optional governance when their skill or slash discovery sees it; proof and ergonomics differ from the directly validated runtimes
40
+ - Recorded launch proof in repo truth currently covers Claude Code, Codex CLI, and OpenCode paths
41
+ - Qualified support only: Cursor, Copilot, Gemini CLI can use the shared `.agents/skills/` surface plus optional governance when their skill or slash discovery sees it; proof and ergonomics differ from the recorded paths above
42
42
  - Codex CLI validation does not automatically cover Codex VS Code or the Codex app; use native discovery there when available, otherwise open or paste `.agents/skills/gsdd-*/SKILL.md`
43
43
  - Repo-local generated runtime surfaces are renderer-checked through `npx -y gsdd-cli health`, with deterministic repair through `npx -y gsdd-cli update` (bare `gsdd ...` is equivalent only when globally installed)
44
44
  - Public proof entrypoints: `docs/BROWNFIELD-PROOF.md`, `docs/proof/consumer-node-cli/README.md`, `docs/RUNTIME-SUPPORT.md`, `docs/VERIFICATION-DISCIPLINE.md`
@@ -59,7 +59,7 @@ npx -y gsdd-cli install --global
59
59
  npx -y gsdd-cli install --global --tools claude,opencode,codex,copilot
60
60
  ```
61
61
 
62
- Global install writes selected Workspine skills and native agent surfaces into user-level agent homes. It does not create `.planning/` in the current repo.
62
+ Global install writes selected Workspine skills and native agent surfaces into user-level agent homes. It does not create `.work/` in the current repo.
63
63
 
64
64
  Optional adapters:
65
65
  ```bash
@@ -72,18 +72,18 @@ npx -y gsdd-cli init --tools all
72
72
  ```
73
73
 
74
74
  Notes:
75
- - `npx -y gsdd-cli init` always generates open-standard skills at `.agents/skills/gsdd-*` plus the repo-local helper runtime at `.planning/bin/gsdd.mjs`. Workflow helper commands assume the repo root as the current working directory.
75
+ - `npx -y gsdd-cli init` always generates open-standard skills at `.agents/skills/gsdd-*` plus the repo-local helper runtime at `.work/bin/gsdd.mjs`. Workflow helper commands assume the repo root as the current working directory.
76
76
  - `--tools ...` remains the manual/headless path; legacy runtime aliases such as `cursor`, `copilot`, and `gemini` are still supported for backward compatibility.
77
77
  - `--tools claude` also generates native agents at `.claude/agents/gsdd-*.md` and a compatibility plan command alias at `.claude/commands/gsdd-plan.md`.
78
78
  - `--tools opencode` also generates native agents at `.opencode/agents/gsdd-*.md`.
79
- - `--tools codex` generates `.codex/agents/gsdd-plan-checker.toml`; the portable `.agents/skills/gsdd-plan/` surface remains the Codex entry path and internal helper commands route through `.planning/bin/gsdd.mjs`.
79
+ - `--tools codex` generates `.codex/agents/gsdd-plan-checker.toml`; the portable `.agents/skills/gsdd-plan/` surface remains the Codex entry path and internal helper commands route through `.work/bin/gsdd.mjs`.
80
80
  - Root `AGENTS.md` is only written when explicitly requested (`--tools agents`, `--tools all`, legacy runtime aliases, or the wizard governance opt-in). Governance and native adapter surfaces are optional ergonomics; the compact `.agents/skills/` files remain the baseline agent entrypoints.
81
81
 
82
82
  ## The Workflow
83
83
 
84
84
  ```
85
- npx -y gsdd-cli init -> bootstrap (create .planning/, copy templates, generate skills/adapters)
86
- /gsdd-new-project -> .planning/SPEC.md + .planning/ROADMAP.md (questioning + codebase audit + research)
85
+ npx -y gsdd-cli init -> bootstrap (create .work/, copy templates, generate skills/adapters)
86
+ /gsdd-new-project -> .work/SPEC.md + .work/ROADMAP.md (questioning + codebase audit + research)
87
87
  /gsdd-plan N -> phases/N/PLAN.md (task breakdown + research)
88
88
  /gsdd-execute N -> code changes (plan execution with quality gates)
89
89
  /gsdd-verify N -> VERIFICATION.md (goal-backward validation)
@@ -91,23 +91,15 @@ npx -y gsdd-cli init -> bootstrap (create .planning/, copy templates, gene
91
91
  /gsdd-audit-milestone -> MILESTONE-AUDIT.md (cross-phase integration + requirements coverage)
92
92
  /gsdd-complete-milestone -> milestones/vX.Y-* (archive, evolve spec, collapse roadmap)
93
93
  /gsdd-new-milestone -> updated SPEC.md + ROADMAP.md (next milestone goals + phases)
94
- /gsdd-plan-milestone-gaps -> gap closure phases in ROADMAP.md (from audit results)
95
- /gsdd-quick -> .planning/quick/NNN/ (sub-hour task outside phases)
96
- /gsdd-pause -> .planning/.continue-here.md (session checkpoint)
94
+ /gsdd-plan -> amend/extend gap closure phases in ROADMAP.md (from audit results)
95
+ /gsdd-quick -> .work/quick/NNN/ (sub-hour task outside phases)
96
+ /gsdd-pause -> .work/.continue-here.md (session checkpoint)
97
97
  /gsdd-resume -> restore context, route to next action
98
98
  /gsdd-progress -> show status, route to next action
99
99
  ```
100
100
 
101
101
  The main operator spine is four workflow moves after bootstrap: `new-project -> plan -> execute -> verify`. The other public workflow surfaces are support lanes for milestone closeout, quick work, progress, pause/resume, and brownfield orientation.
102
102
 
103
- Helper command for long-running sessions:
104
-
105
- ```
106
- npx -y gsdd-cli control-map [--json] [--with-ignored] -> computed repo/worktree/planning state plus local annotations
107
- npx -y gsdd-cli control-map annotate set|clear -> optional stale-aware local intent maintenance
108
- npx -y gsdd-cli closeout-report [--json] [--phase <N>] -> read-only replay of closeout blockers, warnings, fixes, and next safe action
109
- ```
110
-
111
103
  ## Brownfield Entry Contract
112
104
 
113
105
  Use the same three-way routing everywhere:
@@ -127,7 +119,7 @@ Use the same three-way routing everywhere:
127
119
  | `audit-milestone.md` | Cross-phase integration audit, auth protection checks, requirement reconciliation, and orphan detection into `MILESTONE-AUDIT.md` |
128
120
  | `complete-milestone.md` | Milestone archive, spec evolution, and roadmap collapse |
129
121
  | `new-milestone.md` | Brownfield milestone continuation: goals, requirements, and roadmap phases |
130
- | `plan-milestone-gaps.md` | Gap-closure phases from `MILESTONE-AUDIT.md` results |
122
+ | `plan.md` amend/extend mode | Gap-closure phases from `MILESTONE-AUDIT.md`, verification gaps, tech debt, brownfield amendments, or incident docs |
131
123
  | `quick.md` | Quick-work lane for sub-hour tasks outside the phase cycle |
132
124
  | `pause.md` | Session checkpoint writer with conversational handoff |
133
125
  | `resume.md` | Session context restorer with priority-ordered routing |
@@ -137,8 +129,8 @@ Use the same three-way routing everywhere:
137
129
 
138
130
  Architecture notes:
139
131
  - `bin/gsdd.mjs` remains the thin generator entrypoint, while vendor-specific rendering lives in adapter modules.
140
- - Codex CLI uses the always-generated `.agents/skills/gsdd-*` surface as its entry path, relies on `.planning/bin/gsdd.mjs` for deterministic helper calls, and can add a native `.codex/agents/gsdd-plan-checker.toml` checker agent.
141
- - `control-map` is a helper command, not a lifecycle workflow: it computes repo/worktree/planning truth first and treats `.planning/.local/` annotations as local intent only. `control-map annotate` can maintain those annotations, but cannot create ownership, cleanup, or lifecycle authority.
132
+ - Codex CLI uses the always-generated `.agents/skills/gsdd-*` surface as its entry path, relies on `.work/bin/gsdd.mjs` for deterministic helper calls, and can add a native `.codex/agents/gsdd-plan-checker.toml` checker agent.
133
+ - Repo/worktree status helpers compute from git and local workflow state first; local annotations are intent hints only and cannot create ownership, cleanup, or lifecycle authority.
142
134
  - Codex VS Code/app are separate surfaces from Codex CLI; do not claim the CLI proof for them unless they expose compatible skill discovery. Fallback is opening or pasting the generated `SKILL.md`.
143
135
  - `npx -y gsdd-cli health` now compares any installed generated runtime surfaces against current render output and routes repairs back through `npx -y gsdd-cli update`.
144
136
  - Portable lifecycle contracts now align to the roadmap template status grammar: `[ ]`, `[-]`, `[x]`.
@@ -162,7 +154,7 @@ Note: `parallelization: false` keeps the same mapper/researcher set but runs the
162
154
  ## What Gets Created (Project Output)
163
155
 
164
156
  ```
165
- .planning/
157
+ .work/
166
158
  SPEC.md
167
159
  ROADMAP.md
168
160
  config.json
@@ -173,7 +165,6 @@ Note: `parallelization: false` keeps the same mapper/researcher set but runs the
173
165
  gsdd-new-project/SKILL.md
174
166
  gsdd-new-milestone/SKILL.md
175
167
  gsdd-plan/SKILL.md
176
- gsdd-plan-milestone-gaps/SKILL.md
177
168
  gsdd-execute/SKILL.md
178
169
  gsdd-verify/SKILL.md
179
170
  gsdd-verify-work/SKILL.md
@@ -196,7 +187,7 @@ Note: `parallelization: false` keeps the same mapper/researcher set but runs the
196
187
  gsdd-plan.md # OpenCode-native specialized planner -> checker command surface
197
188
  .codex/agents/
198
189
  gsdd-plan-checker.toml # Codex-native checker agent (read-only, high reasoning effort)
199
- .planning/
190
+ .work/
200
191
  quick/ # quick task directories and LOG.md
201
192
  .continue-here.md # session checkpoint (created by pause)
202
193
  ```
@@ -217,7 +208,6 @@ distilled/
217
208
  new-milestone.md
218
209
  pause.md
219
210
  plan.md
220
- plan-milestone-gaps.md
221
211
  progress.md
222
212
  quick.md
223
213
  resume.md
@@ -227,8 +217,8 @@ distilled/
227
217
  spec.md
228
218
  roadmap.md
229
219
  agents.md # full AGENTS.md template (for tool adapters)
230
- agents.block.md # bounded block payload for root AGENTS.md insertion
231
- delegates/ # delegate instruction files (copied to .planning/templates/delegates/)
220
+ agents.block.md # managed payload for root AGENTS.md insertion
221
+ delegates/ # delegate instruction files (copied to .work/templates/delegates/)
232
222
  mapper-tech.md
233
223
  mapper-arch.md
234
224
  mapper-quality.md
@@ -31,13 +31,12 @@ Read only the file for the phase you are in:
31
31
  - audit-milestone: `workflows/audit-milestone.md`
32
32
  - complete-milestone: `workflows/complete-milestone.md`
33
33
  - new-milestone: `workflows/new-milestone.md`
34
- - plan-milestone-gaps: `workflows/plan-milestone-gaps.md`
35
34
  - quick: `workflows/quick.md`
36
35
  </workflow>
37
36
 
38
37
  <governance>
39
38
  Mandatory:
40
- - Read before you write. If `.planning/` exists, read `.planning/SPEC.md`, `.planning/ROADMAP.md`, `.planning/config.json`.
39
+ - Read before you write. If `.work/` exists, read `.work/SPEC.md`, `.work/ROADMAP.md`, `.work/config.json`; use matching `.planning/` paths only in legacy workspaces.
41
40
  - Stay in scope. Implement only what the current phase plan describes.
42
41
  - Never hallucinate. Confirm paths and APIs from repo or docs before use.
43
42
  - Research-first when unfamiliar. Log evidence, then plan.
@@ -45,10 +44,10 @@ Mandatory:
45
44
  </governance>
46
45
 
47
46
  <project_structure>
48
- Workspine uses `.planning/` as the durable workspace:
47
+ Workspine uses `.work/` as the durable workspace. Legacy `.planning/` workspaces are still read and supported.
49
48
 
50
49
  ```
51
- .planning/
50
+ .work/
52
51
  SPEC.md
53
52
  ROADMAP.md
54
53
  config.json
@@ -69,22 +68,22 @@ npx -y gsdd-cli init --tools agents
69
68
  ```
70
69
 
71
70
  Behavior:
72
- - Always: generates open-standard skills at `.agents/skills/gsdd-*/SKILL.md` by embedding `distilled/workflows/*.md`, plus repo-local deterministic helpers at `.planning/bin/gsdd.mjs`.
71
+ - Always: generates open-standard skills at `.agents/skills/gsdd-*/SKILL.md` by embedding `distilled/workflows/*.md`, plus repo-local deterministic helpers at `.work/bin/gsdd.mjs` (or `.planning/bin/gsdd.mjs` in legacy workspaces).
73
72
  - Optional: generates tool adapters (root `AGENTS.md`, Claude `.claude/skills` + `.claude/commands` alias + `.claude/agents`, OpenCode `.opencode/commands` + `.opencode/agents`, Codex CLI `.codex/agents/gsdd-plan-checker.toml`).
74
73
  - Codex CLI: uses the portable skill entry surface and the generated `.codex/agents/` checker/approach-explorer agents; it does not use `.codex/AGENTS.md` as the primary integration path.
75
74
  - Root `AGENTS.md` is only written when explicitly requested (so we do not pollute existing user governance).
76
75
  </adapters>
77
76
 
78
77
  <templates>
79
- Use templates from `.planning/templates/` (copied from `distilled/templates/`) when producing planning artifacts.
78
+ Use templates from `.work/templates/` (copied from `distilled/templates/`) when producing planning artifacts; use `.planning/templates/` only in legacy workspaces.
80
79
 
81
80
  Core:
82
- - `.planning/templates/spec.md` -> `.planning/SPEC.md`
83
- - `.planning/templates/roadmap.md` -> `.planning/ROADMAP.md`
81
+ - `.work/templates/spec.md` -> `.work/SPEC.md`
82
+ - `.work/templates/roadmap.md` -> `.work/ROADMAP.md`
84
83
 
85
84
  Research:
86
- - `.planning/templates/research/*.md` -> `.planning/research/*.md`
85
+ - `.work/templates/research/*.md` -> `.work/research/*.md`
87
86
 
88
87
  Brownfield codebase mapping:
89
- - `.planning/templates/codebase/*.md` -> `.planning/codebase/*.md`
88
+ - `.work/templates/codebase/*.md` -> `.work/codebase/*.md`
90
89
  </templates>
@@ -5,17 +5,17 @@ Managed by `gsdd`; edit the framework template, not this block.
5
5
  Lifecycle: `new-project -> plan -> execute -> verify -> audit-milestone`.
6
6
 
7
7
  Core skills: `gsdd-new-project`, `gsdd-plan`, `gsdd-execute`, `gsdd-verify`, `gsdd-progress`.
8
- Planning state: `.planning/`. Portable workflows: `.agents/skills/gsdd-*/SKILL.md`.
8
+ Planning state: `.work/` (legacy `.planning/` workspaces are still read). Portable workflows: `.agents/skills/gsdd-*/SKILL.md`.
9
9
  Install/repair: `npx -y gsdd-cli init` creates repo-local skills and planning state; `npx -y gsdd-cli health` verifies repo-local generated surfaces; `npx -y gsdd-cli update` repairs repo-local drift. Global personal skills use `npx -y gsdd-cli install --global` and are repaired by rerunning that install for the selected targets.
10
10
 
11
11
  Invoke: `/gsdd-plan` (Claude, OpenCode; Cursor/Copilot/Gemini when skill discovery is available) · `$gsdd-plan` (Codex CLI, plan-only until `$gsdd-execute`) · open SKILL.md directly elsewhere.
12
12
 
13
13
  Rules:
14
- 1. Read before writing roadmap work: `.planning/SPEC.md`, `.planning/ROADMAP.md`, `.planning/config.json`, and the relevant phase plan when one exists.
14
+ 1. Read before writing roadmap work: `.work/SPEC.md`, `.work/ROADMAP.md`, `.work/config.json`, and the relevant phase plan when one exists; use matching `.planning/` paths only in legacy workspaces.
15
15
  2. Stay in scope. Implement only what the approved plan or direct user request says. Record unrelated ideas as TODOs.
16
16
  3. Verify before claiming done: artifact exists, content is substantive, and it is wired into the system.
17
17
  4. Research unfamiliar domains from real docs and code; never hallucinate paths or APIs.
18
- 5. Do not pollute core workflows with vendor-specific syntax; workflow entry lives in `.agents/skills/`, helpers in `.planning/bin/`, and native adapters in their tool-specific directories.
19
- 6. Git guidance in `.planning/config.json` -> `gitProtocol` is advisory; follow the repo's own conventions first.
18
+ 5. Do not pollute core workflows with vendor-specific syntax; workflow entry lives in `.agents/skills/`, helpers in `.work/bin/`, and native adapters in their tool-specific directories.
19
+ 6. Git guidance in `.work/config.json` -> `gitProtocol` is advisory; follow the repo's own conventions first.
20
20
 
21
- If `.planning/` is missing, run `npx -y gsdd-cli init` then `gsdd-new-project`; bare `gsdd init` is equivalent only when globally installed.
21
+ If `.work/` is missing, run `npx -y gsdd-cli init` then `gsdd-new-project`; bare `gsdd init` is equivalent only when globally installed.