gsdd-cli 0.27.0 → 0.28.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 (81) 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 +14 -14
  6. package/agents/integration-checker.md +2 -2
  7. package/agents/researcher.md +2 -2
  8. package/agents/roadmapper.md +6 -6
  9. package/agents/synthesizer.md +18 -18
  10. package/agents/verifier.md +2 -2
  11. package/bin/adapters/agents.mjs +3 -3
  12. package/bin/adapters/claude.mjs +16 -14
  13. package/bin/adapters/opencode.mjs +15 -12
  14. package/bin/gsdd.mjs +16 -13
  15. package/bin/lib/{models.mjs → config.mjs} +23 -16
  16. package/bin/lib/control-map.mjs +17 -488
  17. package/bin/lib/health-truth.mjs +8 -13
  18. package/bin/lib/health.mjs +25 -39
  19. package/bin/lib/init-flow.mjs +44 -38
  20. package/bin/lib/init-prompts.mjs +3 -3
  21. package/bin/lib/init-runtime.mjs +11 -30
  22. package/bin/lib/lifecycle-preflight.mjs +97 -410
  23. package/bin/lib/lifecycle-state.mjs +2 -1
  24. package/bin/lib/next.mjs +243 -20
  25. package/bin/lib/phase.mjs +10 -315
  26. package/bin/lib/rendering.mjs +64 -44
  27. package/bin/lib/runtime-freshness.mjs +18 -15
  28. package/bin/lib/state-dir.mjs +45 -0
  29. package/bin/lib/templates.mjs +59 -22
  30. package/bin/lib/work-context.mjs +12 -1
  31. package/bin/lib/workflows.mjs +0 -1
  32. package/bin/lib/workspace-root.mjs +11 -6
  33. package/distilled/DESIGN.md +58 -2
  34. package/distilled/EVIDENCE-INDEX.md +15 -2
  35. package/distilled/README.md +23 -33
  36. package/distilled/SKILL.md +9 -10
  37. package/distilled/templates/agents.block.md +5 -5
  38. package/distilled/templates/approach.md +3 -3
  39. package/distilled/templates/auth-matrix.md +2 -2
  40. package/distilled/templates/brownfield-change/CHANGE.md +1 -1
  41. package/distilled/templates/delegates/approach-explorer.md +5 -5
  42. package/distilled/templates/delegates/mapper-arch.md +3 -3
  43. package/distilled/templates/delegates/mapper-concerns.md +4 -4
  44. package/distilled/templates/delegates/mapper-quality.md +3 -3
  45. package/distilled/templates/delegates/mapper-tech.md +3 -3
  46. package/distilled/templates/delegates/plan-checker.md +5 -5
  47. package/distilled/templates/delegates/researcher-architecture.md +3 -3
  48. package/distilled/templates/delegates/researcher-features.md +3 -3
  49. package/distilled/templates/delegates/researcher-pitfalls.md +3 -3
  50. package/distilled/templates/delegates/researcher-stack.md +3 -3
  51. package/distilled/templates/delegates/researcher-synthesizer.md +7 -7
  52. package/distilled/templates/research/architecture.md +1 -1
  53. package/distilled/templates/research/pitfalls.md +1 -1
  54. package/distilled/templates/research/stack.md +1 -1
  55. package/distilled/templates/roadmap.md +4 -4
  56. package/distilled/templates/spec.md +2 -2
  57. package/distilled/workflows/audit-milestone.md +22 -22
  58. package/distilled/workflows/complete-milestone.md +35 -35
  59. package/distilled/workflows/execute.md +29 -29
  60. package/distilled/workflows/map-codebase.md +30 -30
  61. package/distilled/workflows/new-milestone.md +18 -18
  62. package/distilled/workflows/new-project.md +45 -45
  63. package/distilled/workflows/pause.md +15 -15
  64. package/distilled/workflows/plan.md +63 -63
  65. package/distilled/workflows/progress.md +40 -39
  66. package/distilled/workflows/quick.md +43 -43
  67. package/distilled/workflows/resume.md +23 -22
  68. package/distilled/workflows/verify-work.md +7 -7
  69. package/distilled/workflows/verify.md +20 -20
  70. package/docs/BROWNFIELD-PROOF.md +1 -1
  71. package/docs/RUNTIME-SUPPORT.md +13 -13
  72. package/docs/USER-GUIDE.md +17 -20
  73. package/docs/claude/context-monitor.md +1 -1
  74. package/docs/proof/consumer-node-cli/README.md +1 -1
  75. package/package.json +3 -3
  76. package/bin/lib/closeout-report.mjs +0 -318
  77. package/bin/lib/evidence-contract.mjs +0 -325
  78. package/bin/lib/provenance.mjs +0 -390
  79. package/bin/lib/session-fingerprint.mjs +0 -223
  80. package/bin/lib/ui-proof.mjs +0 -1007
  81. package/distilled/workflows/plan-milestone-gaps.md +0 -204
package/README.md CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  # Workspine
4
4
 
5
- Workspine is a repo-native delivery spine for AI-assisted software work: planning, checking, execution, verification, and handoff live in the repo so any agent or runtime can pick up where the last one stopped.
5
+ Workspine is a Spec Driven Development framework for AI-assisted software work: planning, checking, execution, verification, and handoff live in the repo, so any agent or runtime can pick up where the last one stopped. Decisions keep their why.
6
6
 
7
- Directly validated today: Claude Code, Codex CLI, OpenCode. Qualified support: Cursor, Copilot, Gemini.
7
+ Proof status: one real consumer lifecycle with Codex checker support. Qualified support: Cursor, Copilot, Gemini.
8
8
 
9
- The public product name is Workspine. The retained technical contracts remain `gsdd-cli`, `gsdd`, `gsdd-*`, and `.planning/`.
9
+ The public product name is Workspine. The retained technical contracts remain `gsdd-cli`, `gsdd`, `gsdd-*`, and `.work/`.
10
10
 
11
11
  [![npm version](https://img.shields.io/npm/v/gsdd-cli?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/gsdd-cli)
12
12
  [![License](https://img.shields.io/badge/license-MIT-blue?style=for-the-badge)](LICENSE)
@@ -29,10 +29,10 @@ Tracked consumer proof pack: [docs/proof/consumer-node-cli/README.md](docs/proof
29
29
 
30
30
  | Workflow | Writes | What for |
31
31
  |----------|--------|----------|
32
- | `gsdd-new-project` | `.planning/SPEC.md`, `ROADMAP.md` | Define the project and phases |
33
- | `gsdd-plan` | `.planning/phases/N/PLAN.md` | Research and review before any code gets written |
34
- | `gsdd-execute` | `.planning/phases/N/SUMMARY.md` | Implement the approved plan, nothing more |
35
- | `gsdd-verify` | `.planning/phases/N/VERIFICATION.md` | Confirm the plan's claims are actually true |
32
+ | `gsdd-new-project` | `.work/SPEC.md`, `ROADMAP.md` | Define the project and phases |
33
+ | `gsdd-plan` | `.work/phases/N/PLAN.md` | Research and review before any code gets written |
34
+ | `gsdd-execute` | `.work/phases/N/SUMMARY.md` | Implement the approved plan, nothing more |
35
+ | `gsdd-verify` | `.work/phases/N/VERIFICATION.md` | Confirm the plan's claims are actually true |
36
36
 
37
37
  The discipline: plan first, execute only what's approved, verify before closing. Each phase summary carries forward what was decided, so the next session starts with context instead of from scratch.
38
38
 
@@ -40,15 +40,15 @@ For agent continuity across long sessions, `gsdd next` reads `.work/` plus repo
40
40
 
41
41
  `gsdd next` keeps the human surface tight and the agent surface structured. JSON packets include typed `next_action` values for CLI commands, workflow skills, manual review, and user-question gates. Blocking questions, decisions, graph rebuilds, and dogfood findings use explicit subcommands; duplicate question, decision, and dogfood IDs replay as unchanged when the content matches and fail unless `--replace` is passed when the content differs. The continuity graph records answer and supersession edges so future agents can reconstruct decision history without rereading raw transcripts.
42
42
 
43
- Workspine ships 14 workflows. The package and CLI are `gsdd-cli` / `gsdd-*` — retained as the technical contract under the Workspine product name.
43
+ Workspine ships 13 workflows. The package and CLI are `gsdd-cli` / `gsdd-*` — retained as the technical contract under the Workspine product name.
44
44
 
45
45
  ---
46
46
 
47
47
  ## What This Is
48
48
 
49
- Workspine gives coding agents a durable workflow spine for work that spans sessions, agents, or runtimes. It does not host a control plane; it writes portable planning and proof artifacts into the repo.
49
+ Workspine gives coding agents a durable workflow for work that spans sessions, agents, or runtimes. There is no hosted service; it writes portable planning and proof artifacts into the repo.
50
50
 
51
- Workspine began as a fork of Get Shit Done and keeps the verification-first delivery spine while stripping runtime lock-in.
51
+ Workspine began as a fork of Get Shit Done and keeps the verification-first workflow while stripping runtime lock-in.
52
52
 
53
53
  ---
54
54
 
@@ -60,7 +60,42 @@ Workspine began as a fork of Get Shit Done and keeps the verification-first deli
60
60
  npx -y gsdd-cli init
61
61
  ```
62
62
 
63
- `init` is the guided install wizard for repo-local setup. It creates `.agents/skills/gsdd-*` workflow entrypoints and the `.planning/bin/gsdd*` helper runtime in the current repo; optional runtime adapters improve native discovery.
63
+ This creates:
64
+
65
+ 1. `.work/` — durable workspace with templates, role contracts, and config
66
+ 2. `.agents/skills/gsdd-*` — compact open-standard workflow entrypoints for agents
67
+ 3. `.work/bin/gsdd.mjs` — repo-local helper runtime for deterministic workflow commands inside generated skills (run helper commands from the repo root)
68
+ 4. Optional tool-specific adapters you choose in the install wizard (Claude skills/commands/agents, OpenCode commands/agents, Codex CLI agents, optional governance)
69
+
70
+ Then pick the first workflow lane that matches your situation:
71
+
72
+ - `gsdd-new-project` for greenfield work, fuzzy brownfield work, or milestone-shaped work
73
+ - `gsdd-quick` for a concrete bounded brownfield change
74
+ - `gsdd-map-codebase` first when the repo is unfamiliar, risky, or needs a deeper baseline before choosing a lane
75
+
76
+ In a terminal, `npx -y gsdd-cli init` opens a guided install wizard. If you installed the package globally, `gsdd init` is the equivalent shorthand:
77
+
78
+ - Step 1: select the runtimes/vendors you want to support
79
+ - Step 2: decide separately whether repo-wide `AGENTS.md` governance is worth installing
80
+ - Step 3: configure planning defaults in the same guided flow
81
+
82
+ Portable `.agents/skills/gsdd-*` skills and the repo-local `.work/bin/gsdd.mjs` helper runtime are always generated. The wizard controls extra native adapters and optional governance, not the portable baseline. Workflow helper commands assume the repo root as the current working directory.
83
+ When those generated surfaces exist locally, `npx -y gsdd-cli health` checks them against current render output instead of asking you to trust manual review. If installed globally, `gsdd health` is equivalent.
84
+
85
+ ### Launch Proof Status
86
+
87
+ - **Recorded proof:** the proof pack below records a full plan -> execute -> verify lifecycle on a real consumer project, including Codex checker support. Claude Code and OpenCode run the same generated workflow surface.
88
+ - **Qualified support:** Cursor, Copilot, and Gemini CLI can use the shared `.agents/skills/` surface when their skill or slash discovery sees it; this release does not claim the same runtime proof or ergonomics.
89
+ - **Runtime-surface freshness:** Installed generated skills and native adapters are renderer-checked locally; repair stays deterministic through `npx -y gsdd-cli update` or, when globally installed, `gsdd update`.
90
+
91
+ Start with the public proof pack:
92
+
93
+ - [Brownfield proof](docs/BROWNFIELD-PROOF.md)
94
+ - [Exported consumer proof pack](docs/proof/consumer-node-cli/README.md)
95
+ - [Runtime support matrix](docs/RUNTIME-SUPPORT.md)
96
+ - [Verification discipline](docs/VERIFICATION-DISCIPLINE.md)
97
+
98
+ ### Quickstart (after init)
64
99
 
65
100
  Invoke after init:
66
101
 
@@ -85,7 +120,7 @@ npx -y gsdd-cli install --global --auto
85
120
  npx -y gsdd-cli install --global --tools claude,opencode,codex,copilot
86
121
  ```
87
122
 
88
- Use `--auto` for non-interactive install into detected local agent homes. Use `--tools <targets>` when you want to override detection explicitly. When run in a TTY without `--tools` or `--auto`, `install --global` lets you select which agents to install. It does not create `.planning/` in the current repo. It writes Workspine-managed skills, native agent surfaces, and per-runtime manifests under the selected agent homes:
123
+ Use `--auto` for non-interactive install into detected local agent homes. Use `--tools <targets>` when you want to override detection explicitly. When run in a TTY without `--tools` or `--auto`, `install --global` lets you select which agents to install. It does not create `.work/` in the current repo. It writes Workspine-managed skills, native agent surfaces, and per-runtime manifests under the selected agent homes:
89
124
 
90
125
  | Target | Global surfaces |
91
126
  |--------|-----------------|
@@ -94,7 +129,7 @@ Use `--auto` for non-interactive install into detected local agent homes. Use `-
94
129
  | Codex CLI | `~/.agents/skills`, `~/.codex/agents` |
95
130
  | GitHub Copilot CLI | `~/.agents/skills`, `~/.copilot/agents` |
96
131
 
97
- Install availability is not a parity claim. Claude Code, OpenCode, and Codex CLI remain the directly validated runtimes; GitHub Copilot CLI is available as a qualified global target.
132
+ Install availability is not a parity claim. Repo proof currently covers Claude Code, OpenCode, and Codex CLI paths; GitHub Copilot CLI is available as a qualified global target.
98
133
 
99
134
  OpenCode honors `OPENCODE_CONFIG_DIR` for commands and agents; Workspine installs portable skills once in the shared agent-compatible global root.
100
135
 
@@ -108,11 +143,11 @@ OpenCode honors `OPENCODE_CONFIG_DIR` for commands and agents; Workspine install
108
143
 
109
144
  ### Team Use
110
145
 
111
- Commit `.planning/` so the team shares specs, roadmaps, phase plans, and verification reports. Use `commitDocs` in `.planning/config.json` to control whether documentation changes are expected as part of workflow execution. Each developer runs `init --tools <their-tool>` for their own repo-local runtime adapters without changing the shared delivery artifacts.
146
+ Commit `.work/` so the team shares specs, roadmaps, phase plans, and verification reports. Use `commitDocs` in `.work/config.json` to control whether documentation changes are expected as part of workflow execution. Each developer runs `init --tools <their-tool>` for their own repo-local runtime adapters without changing the shared delivery artifacts.
112
147
 
113
148
  ### What to Track in Git
114
149
 
115
- Track `.planning/`, `.agents/skills/`, and any selected runtime adapters that are part of the team workflow. Track durable `.work/` contract and research files when they define shared milestone truth. Do not track `.planning/.local/` or mutable `.work` runtime files such as `state.json`, graph logs, open questions, evidence manifests, handoff notes, or raw dogfood drafts unless you deliberately export or sanitize them.
150
+ Track `.work/`, `.agents/skills/`, and any selected runtime adapters that are part of the team workflow. Track durable `.work/` contract and research files when they define shared milestone truth. Do not track `.work/.local/` or mutable `.work` runtime files such as `state.json`, graph logs, open questions, evidence manifests, handoff notes, or raw dogfood drafts unless you deliberately export or sanitize them.
116
151
 
117
152
  ---
118
153
 
@@ -128,7 +163,7 @@ npx -y gsdd-cli models profile budget # minimize cost
128
163
 
129
164
  ## Troubleshooting
130
165
 
131
- Inside a repo-local `.planning/` workspace, start with `npx -y gsdd-cli health`. It checks local generated runtime surfaces against current render output and reports whether `npx -y gsdd-cli update` can repair drift. To repair or refresh a personal global install, rerun `npx -y gsdd-cli install --global --auto` or explicitly scope it with `npx -y gsdd-cli install --global --tools <targets>`. For details, see the [User Guide](docs/USER-GUIDE.md).
166
+ Inside a repo-local `.work/` workspace, start with `npx -y gsdd-cli health`. It checks local generated runtime surfaces against current render output and reports whether `npx -y gsdd-cli update` can repair drift. To repair or refresh a personal global install, rerun `npx -y gsdd-cli install --global --auto` or explicitly scope it with `npx -y gsdd-cli install --global --tools <targets>`. For details, see the [User Guide](docs/USER-GUIDE.md).
132
167
 
133
168
  ---
134
169
 
@@ -139,12 +174,12 @@ Use Workspine when a feature takes more than one session, or when you need to sw
139
174
  | Tool | Good for | vs Workspine |
140
175
  |------|----------|--------------|
141
176
  | **Workspine** | Work that spans sessions, agents, or runtimes where plans and proof need to stay in the repo | — |
142
- | [GSD](https://github.com/gsd-build/get-shit-done) | Broad AI prompting suite — 81 commands, 78 workflows, 33 agents | Workspine is narrower: 14 workflows, fewer moving parts for the human in the loop |
177
+ | [GSD](https://github.com/gsd-build/get-shit-done) | Broad AI prompting suite — 81 commands, 78 workflows, 33 agents | Workspine is narrower: 13 workflows, fewer moving parts for the human in the loop |
143
178
  | [OpenSpec](https://openspec.dev/) | Living spec + change proposals in a lightweight format | Workspine adds the execution, verification, and handoff layer on top of planning |
144
179
  | [LeanSpec](https://www.lean-spec.dev/docs/guide/first-principles) | Minimal specs that fit LLM context | Workspine adds workflow gates and runtime entrypoints for when you need the full structure |
145
180
  | [GitHub Spec Kit](https://github.com/github/spec-kit) | Spec-first planning workflows in `.specify/` | Similar space; Workspine is one CLI with one delivery loop instead of a broader ecosystem |
146
181
  | [Kiro](https://kiro.dev/docs/) | IDE-native agent dev with specs, steering, hooks, and MCP | Kiro is IDE-only; Workspine works across terminal and IDE agents that can read repo files |
147
- | [Tessl](https://tessl.io/enterprise/) | Hosted platform for distributing agent skills across teams | Tessl needs a control plane; Workspine is local-first with no hosted infrastructure |
182
+ | [Tessl](https://tessl.io/enterprise/) | Hosted platform for distributing agent skills across teams | Tessl needs a hosted service; Workspine is local-first with no hosted infrastructure |
148
183
 
149
184
  <sub>Based on each tool's public docs as of May 2026. Open an issue if anything reads inaccurately.</sub>
150
185
 
@@ -163,10 +198,6 @@ npx -y gsdd-cli rigor # run planning/document guardrails
163
198
  npx -y gsdd-cli file-op # deterministic repo-local copy/delete helper
164
199
  npx -y gsdd-cli models profile quality # maximize review rigor
165
200
  npx -y gsdd-cli models profile budget # minimize cost
166
- npx -y gsdd-cli session-fingerprint # capture session continuity metadata
167
- npx -y gsdd-cli ui-proof # collect UI proof artifacts
168
- npx -y gsdd-cli control-map # repo and planning state at a glance
169
- npx -y gsdd-cli closeout-report # summarize closeout evidence
170
201
  npx -y gsdd-cli find-phase # locate a roadmap phase
171
202
  npx -y gsdd-cli phase-status # inspect or update phase status
172
203
  npx -y gsdd-cli verify # run verification discipline checks
@@ -135,12 +135,12 @@ Evidence map from each of the 10 canonical GSDD roles to their GSD sources, with
135
135
  - Checklist-driven completion
136
136
 
137
137
  **Stripped from GSD:**
138
- - Template-path references (output lives in `.planning/ROADMAP.md`)
138
+ - Template-path references (output lives in `.work/ROADMAP.md`)
139
139
  - Commit steps (GSDD handles git separately)
140
140
  - Vendor-specific file conventions
141
141
 
142
142
  **Gained in GSDD (PR #15 hardening):**
143
- - Explicit `.planning/ROADMAP.md` ownership contract
143
+ - Explicit `.work/ROADMAP.md` ownership contract
144
144
  - Explicit `[ ]` / `[-]` / `[x]` status grammar
145
145
  - Concrete `ROADMAP CREATED` artifact example
146
146
  - Hard boundary: "this role does not settle the separate ROADMAP/STATE lifecycle seam"
package/agents/README.md CHANGED
@@ -17,7 +17,7 @@ Workspine uses subagents when isolation earns its cost: research, review, mappin
17
17
 
18
18
  Subagents must not become hidden implementation orchestration. Implementation remains plan-scoped and write-set constrained; overlapping implementation writes require explicit write-set ownership in the approved plan before any parallelism is safe.
19
19
 
20
- Roadmapper is intentionally role-only/direct invocation in the current catalog. There is no roadmapper delegate because roadmap creation is sequential, coverage-sensitive, and writes `.planning/ROADMAP.md`; a future delegate would need a proven thin-wrapper use case before it is added.
20
+ Roadmapper is intentionally role-only/direct invocation in the current catalog. There is no roadmapper delegate because roadmap creation is sequential, coverage-sensitive, and writes `.work/ROADMAP.md` in default workspaces; a future delegate would need a proven thin-wrapper use case before it is added.
21
21
 
22
22
  Leverage record: lost flexibility to add delegates by symmetry; kept the two-layer role/delegate architecture and summaries-up/documents-to-disk model; gained a conservative boundary that prevents subagents from implying agent teams, parallel PR orchestration, or runtime parity claims.
23
23
 
@@ -50,11 +50,11 @@ The catalog contains 10 canonical roles across lifecycle, audit, and utility res
50
50
 
51
51
  ## Runtime Distribution
52
52
 
53
- `gsdd init` copies all role contracts (excluding this README) from `agents/` into `.planning/templates/roles/` in the consumer project. This gives consumer projects a portable, self-contained copy of the role library with no hard dependency on the GSDD framework repo at runtime.
53
+ `gsdd init` copies all role contracts (excluding this README) from `agents/` into `.work/templates/roles/` in the consumer project. Legacy `.planning/` workspaces receive localized `.planning/templates/roles/` paths. This gives consumer projects a portable, self-contained copy of the role library with no hard dependency on the GSDD framework repo at runtime.
54
54
 
55
55
  - **Single source of truth:** `agents/*.md` in this repo. Consumer copies are generated, not edited.
56
- - **Delegates reference the local copy:** `distilled/templates/delegates/*.md` point to `.planning/templates/roles/<role>.md`, not back to this repo.
57
- - **Idempotent:** `gsdd init` skips the copy if `.planning/templates/roles/` already exists.
56
+ - **Delegates reference the local copy:** `distilled/templates/delegates/*.md` point to `.work/templates/roles/<role>.md`, not back to this repo; legacy installs localize those paths to `.planning/templates/roles/<role>.md`.
57
+ - **Idempotent:** `gsdd init` skips the copy if `.work/templates/roles/` already exists.
58
58
  - **Updates:** `gsdd update --templates` re-copies from latest framework sources with hash-based modification detection.
59
59
 
60
60
  Verifier note:
@@ -46,12 +46,12 @@ Do NOT:
46
46
  <input_contract>
47
47
  Read only the explicit inputs provided. Extract only what you need:
48
48
 
49
- - **From `.planning/SPEC.md`:** locked decisions and deferred items ONLY (skip project description, requirements prose)
50
- - **From `.planning/ROADMAP.md`:** target phase goal, requirements, and success criteria ONLY (skip other phases)
49
+ - **From `.work/SPEC.md`:** locked decisions and deferred items ONLY (skip project description, requirements prose)
50
+ - **From `.work/ROADMAP.md`:** target phase goal, requirements, and success criteria ONLY (skip other phases)
51
51
  - **Phase research** (if exists): skim for findings relevant to gray area identification
52
52
  - **Codebase files** (if provided): existing patterns and conventions that inform approach choices
53
53
  - **Existing APPROACH.md** (if updating): load current decisions as starting point
54
- - **Project config** (if provided from `.planning/config.json`): check `workflow.discuss` to decide whether alignment proof is mandatory
54
+ - **Project config** (if provided from `.work/config.json`): check `workflow.discuss` to decide whether alignment proof is mandatory
55
55
  </input_contract>
56
56
 
57
57
  <output_contract>
@@ -178,7 +178,7 @@ If any check fails, address it with the user before proceeding.
178
178
 
179
179
  ## Step 8: Write APPROACH.md
180
180
 
181
- Write `{padded_phase}-APPROACH.md` to the phase directory using the approach template at `.planning/templates/approach.md`.
181
+ Write `{padded_phase}-APPROACH.md` to the phase directory using the approach template at `.work/templates/approach.md`.
182
182
 
183
183
  Structure sections by what was actually discussed — section names match gray areas, not a generic template.
184
184
 
@@ -11,7 +11,7 @@ You DO NOT freelance. You DO NOT add features outside the plan.
11
11
  CRITICAL: Tiered context intake
12
12
 
13
13
  - `mandatory_now`: read the PLAN.md contract, current task, bounded SPEC current state/requirements/constraints, ROADMAP phase goal/status/success criteria, and the applicable `<judgment>` handoff before mutating files or lifecycle state.
14
- - If no prior SUMMARY `<judgment>` exists, check for `.planning/.continue-here.bak` before mutation; if present, read its `<judgment>`, honor the same constraints, then run `node .planning/bin/gsdd.mjs file-op delete .planning/.continue-here.bak --missing ok`.
14
+ - If no prior SUMMARY `<judgment>` exists, check for `.work/.continue-here.bak` before mutation; if present, read its `<judgment>`, honor the same constraints, then run `node .work/bin/gsdd.mjs file-op delete .work/.continue-here.bak --missing ok`.
15
15
  - `task_scoped`: read files and focused references for the current task before editing that task. Do not preload every file from every task just because it appears in `<files_to_read>`.
16
16
  - `reference_only`: consult deeper SPEC, ROADMAP, codebase maps, or project conventions only for the specific decision or invariant being validated.
17
17
  - `deferred_or_conditional`: read broader history only when the current task or deviation requires it.
@@ -45,7 +45,7 @@ The executor is plan-scoped:
45
45
  ## Core Algorithm
46
46
 
47
47
  1. **Load plan.** Parse frontmatter (`phase`, `plan`, `type`, `wave`, `depends_on`, `files-modified`, `autonomous`, `requirements`, `must_haves`), objective, context references, and tasks. Treat any prompt-provided `<files_to_read>` block as task_scoped unless it explicitly labels entries as mandatory_now.
48
- 2. **Run lifecycle preflight.** Before mutating lifecycle artifacts, run `node .planning/bin/gsdd.mjs lifecycle-preflight execute {phase_num} --expects-mutation phase-status`. If blocked, stop and surface the blocker.
48
+ 2. **Run lifecycle preflight.** Before mutating lifecycle artifacts, run `node .work/bin/gsdd.mjs lifecycle-preflight execute {phase_num} --expects-mutation phase-status`. If blocked, stop and surface the blocker.
49
49
  3. **For each task:**
50
50
  a. If `type="auto"`: Confirm mandatory_now context is loaded, read the task_scoped files and focused references needed for the current task, execute the task, apply deviation rules as needed, run verification, confirm done criteria, and handle any git actions using repo/user conventions.
51
51
  b. If `type="checkpoint:*"`: STOP immediately. Return structured checkpoint message with all progress so far. A fresh agent will continue.
@@ -187,7 +187,7 @@ Checkpoint tasks are contract boundaries. Continuing past one silently breaks th
187
187
  ### Implementation Rules
188
188
  - Follow the `<action>` precisely.
189
189
  - If a task references existing code, read it first and match existing patterns.
190
- - If you are unsure about something, check `.planning/SPEC.md` decisions first, then ask if still unclear.
190
+ - If you are unsure about something, check `.work/SPEC.md` decisions first, then ask if still unclear.
191
191
  - Do not run destructive git, broad cleanup, or file deletion actions without explicit human approval, except explicitly named workflow-owned housekeeping commands such as backup judgment auto-clean.
192
192
 
193
193
  ### Change-Impact Discipline
@@ -379,7 +379,7 @@ Summary-driven progress tracking avoids silent drift between the plan contract a
379
379
  <state_updates>
380
380
  After completing all tasks in the plan:
381
381
 
382
- ### 1. Update `.planning/SPEC.md` "Current State"
382
+ ### 1. Update `.work/SPEC.md` "Current State"
383
383
  Keep the update factual and compact:
384
384
 
385
385
  ```markdown
@@ -393,14 +393,14 @@ Keep the update factual and compact:
393
393
  ### 2. Update ROADMAP.md Phase Status
394
394
  Do not hand-edit ROADMAP status. Use the status-aware helper:
395
395
 
396
- - `node .planning/bin/gsdd.mjs phase-status {phase_num} in_progress`
396
+ - `node .work/bin/gsdd.mjs phase-status {phase_num} in_progress`
397
397
 
398
- Do NOT run `node .planning/bin/gsdd.mjs phase-status {phase_num} done` from execute. Execute marks implementation progress only; phase verification owns final `[x]` closure.
398
+ Do NOT run `node .work/bin/gsdd.mjs phase-status {phase_num} done` from execute. Execute marks implementation progress only; phase verification owns final `[x]` closure.
399
399
 
400
- ### 3. Rebaseline Reviewed Planning State
400
+ ### 3. Confirm Reviewed Planning State
401
401
  After SPEC and ROADMAP status updates are reviewed as intentional, run:
402
402
 
403
- - `node .planning/bin/gsdd.mjs session-fingerprint write`
403
+ - `node .work/bin/gsdd.mjs next --json`
404
404
 
405
405
  </state_updates>
406
406
 
@@ -413,10 +413,10 @@ For each completed task:
413
413
  [ ] Local verification passed
414
414
 
415
415
  For state updates:
416
- [ ] .planning/SPEC.md "Current State" is accurate
416
+ [ ] .work/SPEC.md "Current State" is accurate
417
417
  [ ] `phase-status` helper ran instead of direct ROADMAP status editing
418
418
  [ ] ROADMAP.md status remains open (`[-]` if status was updated) until verification passes
419
- [ ] `session-fingerprint write` ran after reviewed planning-state updates
419
+ [ ] `next --json` ran after reviewed planning-state updates
420
420
  [ ] SUMMARY.md exists, records `runtime` and `assurance`, and reflects the actual work
421
421
  [ ] SUMMARY.md includes structured `<checks>`, `<handoff>`, `<deltas>`, and `<judgment>` sections
422
422
 
@@ -439,7 +439,7 @@ After each task (verification passed, done criteria met):
439
439
 
440
440
  Git rules:
441
441
  - Repo and user conventions win first.
442
- - `.planning/config.json -> gitProtocol` is advisory only.
442
+ - `.work/config.json -> gitProtocol` is advisory only.
443
443
  - Do not force one commit per task unless the repo or user asked for that.
444
444
 
445
445
  <quality_guarantees>
@@ -471,13 +471,13 @@ Execution is done when all of these are true:
471
471
  - [ ] Any checkpoint task caused an explicit stop and handoff instead of silent continuation
472
472
  - [ ] Deviation rules were followed (Rules 1-3 auto-fixed, Rule 4 stopped)
473
473
  - [ ] Authentication gates handled with the auth-gate protocol, not as bugs
474
- - [ ] `.planning/SPEC.md` current state is updated accurately
474
+ - [ ] `.work/SPEC.md` current state is updated accurately
475
475
  - [ ] `ROADMAP.md` progress was updated through `phase-status`, not hand-edited
476
- - [ ] `session-fingerprint write` ran after reviewed planning-state updates
476
+ - [ ] `next --json` ran after reviewed planning-state updates
477
477
  - [ ] `SUMMARY.md` is written with substantive one-liner, typed frontmatter, `runtime`, and `assurance`
478
478
  - [ ] `SUMMARY.md` includes structured `<checks>`, `<handoff>`, `<deltas>`, and `<judgment>` sections
479
479
  - [ ] Self-check passed
480
- - [ ] Any git actions honor repo or user conventions and `.planning/config.json`
480
+ - [ ] Any git actions honor repo or user conventions and `.work/config.json`
481
481
  </success_criteria>
482
482
 
483
483
  <vendor_hints>
@@ -45,7 +45,7 @@ Optional but useful context:
45
45
 
46
46
  - expected cross-phase dependencies from the roadmap
47
47
  - likely sensitive routes, pages, or flows that should enforce auth
48
- - `.planning/AUTH_MATRIX.md` (if it exists — enables matrix-driven auth verification in Step 4a)
48
+ - `.work/AUTH_MATRIX.md` (if it exists — enables matrix-driven auth verification in Step 4a)
49
49
 
50
50
  Rules:
51
51
 
@@ -130,7 +130,7 @@ If a route or flow touches account, billing, admin, profile, or user-scoped data
130
130
 
131
131
  ## Step 4a: Matrix-Driven Auth Verification
132
132
 
133
- If `.planning/AUTH_MATRIX.md` does not exist, skip this sub-step. Step 4 narrative checking always runs regardless.
133
+ If `.work/AUTH_MATRIX.md` does not exist, skip this sub-step. Step 4 narrative checking always runs regardless.
134
134
 
135
135
  When the matrix exists:
136
136
 
@@ -10,8 +10,8 @@ Accountable for producing verified, confidence-rated research about technologies
10
10
 
11
11
  | Scope | Trigger | Focus | Output Location |
12
12
  |-------|---------|-------|-----------------|
13
- | **Project** | New project initialization | Domain ecosystem: stack, features, architecture, pitfalls | Research directory (e.g., `.planning/research/`) |
14
- | **Phase** | Phase planning | Implementation approach: standard stack, patterns, don't-hand-roll, pitfalls | Phase directory (e.g., `.planning/phases/XX-name/`) |
13
+ | **Project** | New project initialization | Domain ecosystem: stack, features, architecture, pitfalls | Research directory (e.g., `.work/research/`) |
14
+ | **Phase** | Phase planning | Implementation approach: standard stack, patterns, don't-hand-roll, pitfalls | Phase directory (e.g., `.work/phases/XX-name/`) |
15
15
 
16
16
  Same algorithm, different scope. The scope is a context input, not a different role.
17
17
 
@@ -5,7 +5,7 @@
5
5
  <role>
6
6
  You are a roadmapper. You turn requirements into a phased delivery plan that downstream planners can execute without guessing.
7
7
 
8
- Roadmapper is role-only/direct invocation in the current Workspine contract, not a delegate. Roadmap creation is sequential, coverage-sensitive, and owns `.planning/ROADMAP.md`; do not route it through a hidden subagent wrapper unless a future plan explicitly adds that delegate.
8
+ Roadmapper is role-only/direct invocation in the current Workspine contract, not a delegate. Roadmap creation is sequential, coverage-sensitive, and owns `.work/ROADMAP.md`; do not route it through a hidden subagent wrapper unless a future plan explicitly adds that delegate.
9
9
 
10
10
  Your job:
11
11
  - derive phases from requirements instead of imposing a template
@@ -117,7 +117,7 @@ Every criterion must be verifiable by a human using the product.
117
117
  </goal_backward_phases>
118
118
 
119
119
  <output>
120
- Write `.planning/ROADMAP.md`.
120
+ Write `.work/ROADMAP.md`.
121
121
 
122
122
  Write or update the roadmap artifact before returning your summary. Do not leave the roadmap only in the return text.
123
123
 
@@ -177,7 +177,7 @@ Presentation expectations:
177
177
 
178
178
  <scope_boundary>
179
179
  This role owns roadmap structure only:
180
- - writes or revises `.planning/ROADMAP.md`
180
+ - writes or revises `.work/ROADMAP.md`
181
181
  - preserves requirement ownership and phase status inside that artifact
182
182
  - does not create or redefine separate state artifacts such as `STATE.md`
183
183
  - does not decompose phases into executable tasks
@@ -202,7 +202,7 @@ When the roadmap is first written successfully, return:
202
202
  ```markdown
203
203
  ## ROADMAP CREATED
204
204
 
205
- **Artifact written:** .planning/ROADMAP.md
205
+ **Artifact written:** .work/ROADMAP.md
206
206
  **Phases:** 3
207
207
  **Coverage:** 9/9 requirements mapped
208
208
 
@@ -286,7 +286,7 @@ If a section does not improve requirement coverage, dependency order, or observa
286
286
  - [ ] Phases derived from natural delivery boundaries
287
287
  - [ ] Every in-scope requirement mapped to exactly one phase
288
288
  - [ ] Every phase has observable success criteria
289
- - [ ] `.planning/ROADMAP.md` contract preserved with summary checklist and detail sections
289
+ - [ ] `.work/ROADMAP.md` contract preserved with summary checklist and detail sections
290
290
  - [ ] Parse-critical phase headers, status markers, and requirement ownership lines preserved
291
291
  - [ ] Structured draft/revised/blocked return provided with explicit coverage status
292
292
  </success_criteria>
@@ -294,5 +294,5 @@ If a section does not improve requirement coverage, dependency order, or observa
294
294
  ## Vendor Hints
295
295
 
296
296
  - **Tools required:** file read, file write, content search
297
- - **Parallelizable:** No - roadmapping is sequential, coverage-sensitive, and writes `.planning/ROADMAP.md` directly
297
+ - **Parallelizable:** No - roadmapping is sequential, coverage-sensitive, and writes `.work/ROADMAP.md` directly
298
298
  - **Context budget:** Moderate - the reasoning work is heavier than the I/O
@@ -32,10 +32,10 @@ Be opinionated. The roadmapper needs direction, not a menu of options.
32
32
  ## Step 1: Read all research files
33
33
 
34
34
  Required inputs:
35
- - `.planning/research/STACK.md`
36
- - `.planning/research/FEATURES.md`
37
- - `.planning/research/ARCHITECTURE.md`
38
- - `.planning/research/PITFALLS.md`
35
+ - `.work/research/STACK.md`
36
+ - `.work/research/FEATURES.md`
37
+ - `.work/research/ARCHITECTURE.md`
38
+ - `.work/research/PITFALLS.md`
39
39
 
40
40
  Read all required research files before synthesis.
41
41
 
@@ -75,7 +75,7 @@ Assign confidence by area based on source quality and identify any unresolved ga
75
75
 
76
76
  ## Step 6: Write the summary and return a structured handoff
77
77
 
78
- Write `.planning/research/SUMMARY.md`. Return a 500-800 token structured summary to the orchestrator so downstream discussion can preserve recommendation reasoning without returning the full document.
78
+ Write `.work/research/SUMMARY.md`. Return a 500-800 token structured summary to the orchestrator so downstream discussion can preserve recommendation reasoning without returning the full document.
79
79
  </execution_flow>
80
80
 
81
81
  <cross_reference_dimensions>
@@ -98,7 +98,7 @@ The synthesizer should only run when research outputs are rich enough to justify
98
98
  </conditional_invocation>
99
99
 
100
100
  <output_format>
101
- Write `.planning/research/SUMMARY.md` with stable sections:
101
+ Write `.work/research/SUMMARY.md` with stable sections:
102
102
  - Executive Summary
103
103
  - Key Findings
104
104
  - Implications for Roadmap
@@ -136,10 +136,10 @@ confidence:
136
136
  pitfalls: "HIGH"
137
137
  overall: "MEDIUM"
138
138
  sources:
139
- - ".planning/research/STACK.md"
140
- - ".planning/research/FEATURES.md"
141
- - ".planning/research/ARCHITECTURE.md"
142
- - ".planning/research/PITFALLS.md"
139
+ - ".work/research/STACK.md"
140
+ - ".work/research/FEATURES.md"
141
+ - ".work/research/ARCHITECTURE.md"
142
+ - ".work/research/PITFALLS.md"
143
143
  gaps:
144
144
  - "Third-party adapter behavior still needs live validation."
145
145
  ```
@@ -151,13 +151,13 @@ When synthesis is complete, return:
151
151
  ```markdown
152
152
  ## SYNTHESIS COMPLETE
153
153
 
154
- **Output:** .planning/research/SUMMARY.md
154
+ **Output:** .work/research/SUMMARY.md
155
155
 
156
156
  **Sources:**
157
- - .planning/research/STACK.md
158
- - .planning/research/FEATURES.md
159
- - .planning/research/ARCHITECTURE.md
160
- - .planning/research/PITFALLS.md
157
+ - .work/research/STACK.md
158
+ - .work/research/FEATURES.md
159
+ - .work/research/ARCHITECTURE.md
160
+ - .work/research/PITFALLS.md
161
161
 
162
162
  ### Executive Summary
163
163
  - [2-3 sentence distillation]
@@ -184,7 +184,7 @@ Blocked return shape:
184
184
  **Blocked by:** Missing required research inputs
185
185
 
186
186
  **Missing files:**
187
- - .planning/research/FEATURES.md
187
+ - .work/research/FEATURES.md
188
188
 
189
189
  **Awaiting:** Provide the missing research files before synthesis.
190
190
  ```
@@ -194,7 +194,7 @@ Blocked return shape:
194
194
  This role is a synthesizer, not a researcher or roadmapper:
195
195
  - reads and synthesizes the required research files only
196
196
  - does not do new web or codebase research
197
- - does not write `.planning/ROADMAP.md`
197
+ - does not write `.work/ROADMAP.md`
198
198
  - does not own git actions or commit output
199
199
  - does not silently continue from partial research inputs
200
200
  </scope_boundary>
@@ -225,7 +225,7 @@ This role is a synthesizer, not a researcher or roadmapper:
225
225
  - [ ] Key findings extracted from each research area
226
226
  - [ ] Roadmap implications derived from cross-referenced findings
227
227
  - [ ] Confidence and gaps stated honestly
228
- - [ ] `.planning/research/SUMMARY.md` written in a stable structure with `Sources`
228
+ - [ ] `.work/research/SUMMARY.md` written in a stable structure with `Sources`
229
229
  - [ ] Structured return provided to the orchestrator
230
230
  </success_criteria>
231
231
 
@@ -188,7 +188,7 @@ Orphaned requirements must be reported even if the overall phase otherwise looks
188
188
  </requirements_coverage>
189
189
 
190
190
  <output>
191
- Write `.planning/phases/{phase_dir}/{phase_num}-VERIFICATION.md`.
191
+ Write `.work/phases/{phase_dir}/{phase_num}-VERIFICATION.md`.
192
192
 
193
193
  Keep the current GSDD report schema:
194
194
  - base frontmatter: `phase`, `verified`, `status`, `score`
@@ -275,7 +275,7 @@ Return summary example:
275
275
  ```yaml
276
276
  status: "gaps_found"
277
277
  score: "2/3 must-haves verified"
278
- report: ".planning/phases/01-foundation/01-VERIFICATION.md"
278
+ report: ".work/phases/01-foundation/01-VERIFICATION.md"
279
279
  gaps:
280
280
  - truth: "Users can create a user from the page"
281
281
  reason: "POST handler returns placeholder data"
@@ -1,7 +1,7 @@
1
1
  import { existsSync, readFileSync, writeFileSync } from 'fs';
2
2
  import { join } from 'path';
3
3
 
4
- function createRootAgentsAdapter({ cwd, renderAgentsBoundedBlock, renderAgentsFileContent, upsertBoundedBlock }, name = 'agents') {
4
+ function createRootAgentsAdapter({ cwd, stateDirName = '.work', renderAgentsBoundedBlock, renderAgentsFileContent, upsertBoundedBlock }, name = 'agents') {
5
5
  return {
6
6
  id: 'agents',
7
7
  name,
@@ -15,10 +15,10 @@ function createRootAgentsAdapter({ cwd, renderAgentsBoundedBlock, renderAgentsFi
15
15
  },
16
16
  generate() {
17
17
  const agentsPath = join(cwd, 'AGENTS.md');
18
- const block = renderAgentsBoundedBlock();
18
+ const block = renderAgentsBoundedBlock({ stateDirName });
19
19
 
20
20
  if (!existsSync(agentsPath)) {
21
- writeFileSync(agentsPath, renderAgentsFileContent());
21
+ writeFileSync(agentsPath, renderAgentsFileContent({ stateDirName }));
22
22
  return;
23
23
  }
24
24