gsdd-cli 0.24.0 → 0.26.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.
- package/README.md +97 -546
- package/bin/adapters/claude.mjs +18 -8
- package/bin/adapters/opencode.mjs +3 -3
- package/bin/gsdd.mjs +16 -33
- package/bin/lib/closeout-report.mjs +318 -0
- package/bin/lib/control-map.mjs +698 -26
- package/bin/lib/global-install.mjs +616 -0
- package/bin/lib/global-manifest.mjs +122 -0
- package/bin/lib/health.mjs +48 -30
- package/bin/lib/init-flow.mjs +3 -0
- package/bin/lib/init-prompts.mjs +6 -4
- package/bin/lib/init-runtime.mjs +33 -3
- package/bin/lib/lifecycle-preflight.mjs +58 -1
- package/bin/lib/models.mjs +136 -5
- package/bin/lib/next.mjs +834 -0
- package/bin/lib/phase.mjs +188 -41
- package/bin/lib/rendering.mjs +15 -1
- package/bin/lib/work-context.mjs +760 -0
- package/bin/lib/workflows.mjs +27 -0
- package/distilled/DESIGN.md +17 -9
- package/distilled/README.md +32 -3
- package/distilled/templates/agents.block.md +1 -1
- package/distilled/templates/agents.md +0 -1
- package/distilled/templates/codebase/architecture.md +0 -1
- package/distilled/templates/codebase/concerns.md +0 -1
- package/distilled/templates/codebase/conventions.md +0 -1
- package/distilled/templates/codebase/stack.md +0 -1
- package/distilled/templates/roadmap.md +0 -1
- package/distilled/templates/spec.md +0 -1
- package/distilled/workflows/new-project.md +1 -1
- package/distilled/workflows/verify.md +1 -1
- package/docs/RUNTIME-SUPPORT.md +23 -3
- package/docs/USER-GUIDE.md +40 -4
- package/docs/VERIFICATION-DISCIPLINE.md +3 -1
- package/package.json +2 -2
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
function defineWorkflow({ mutatesArtifacts = true, ...workflow }) {
|
|
2
|
+
return {
|
|
3
|
+
...workflow,
|
|
4
|
+
mutatesArtifacts,
|
|
5
|
+
agent: mutatesArtifacts ? 'Code' : 'Plan',
|
|
6
|
+
opencodeType: mutatesArtifacts ? 'edit' : 'plan',
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const WORKFLOWS = [
|
|
11
|
+
defineWorkflow({ name: 'gsdd-new-project', workflow: 'new-project.md', description: 'New project - questioning, codebase audit, research, spec, roadmap' }),
|
|
12
|
+
defineWorkflow({ name: 'gsdd-map-codebase', workflow: 'map-codebase.md', description: 'Map or refresh codebase - 4 parallel mappers, staleness check, secrets scan' }),
|
|
13
|
+
defineWorkflow({ name: 'gsdd-plan', workflow: 'plan.md', description: 'Plan a phase - research check, backward planning, task creation' }),
|
|
14
|
+
defineWorkflow({ name: 'gsdd-execute', workflow: 'execute.md', description: 'Execute a phase plan - implement tasks, verify changes, follow repo git conventions' }),
|
|
15
|
+
defineWorkflow({ name: 'gsdd-verify', workflow: 'verify.md', description: 'Verify a completed phase - 3-level checks, anti-pattern scan' }),
|
|
16
|
+
defineWorkflow({ name: 'gsdd-verify-work', workflow: 'verify-work.md', description: 'Conversational UAT testing - validate user-facing behavior with structured gap tracking' }),
|
|
17
|
+
defineWorkflow({ name: 'gsdd-audit-milestone', workflow: 'audit-milestone.md', description: 'Audit a completed milestone - cross-phase integration, requirements coverage, E2E flows' }),
|
|
18
|
+
defineWorkflow({ name: 'gsdd-complete-milestone', workflow: 'complete-milestone.md', description: 'Complete milestone - archive, evolve spec, collapse roadmap' }),
|
|
19
|
+
defineWorkflow({ name: 'gsdd-new-milestone', workflow: 'new-milestone.md', description: 'New milestone - gather goals, define requirements, create roadmap phases' }),
|
|
20
|
+
defineWorkflow({ name: 'gsdd-plan-milestone-gaps', workflow: 'plan-milestone-gaps.md', description: 'Plan gap closure phases from audit results' }),
|
|
21
|
+
defineWorkflow({ name: 'gsdd-quick', workflow: 'quick.md', description: 'Quick task - plan and execute a sub-hour task outside the phase cycle' }),
|
|
22
|
+
defineWorkflow({ name: 'gsdd-pause', workflow: 'pause.md', description: 'Pause work - save session context for seamless resumption' }),
|
|
23
|
+
defineWorkflow({ name: 'gsdd-resume', workflow: 'resume.md', description: 'Resume work - restore context and route to next action' }),
|
|
24
|
+
defineWorkflow({ name: 'gsdd-progress', workflow: 'progress.md', description: 'Check progress - show project status and route to next action', mutatesArtifacts: false }),
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
export const FRAMEWORK_VERSION = 'v1.4';
|
package/distilled/DESIGN.md
CHANGED
|
@@ -2818,7 +2818,7 @@ Posture compatibility is part of that closeout contract: `repo_closeout` and `ru
|
|
|
2818
2818
|
|
|
2819
2819
|
## D62 - Repo-Native UI Proof Contract
|
|
2820
2820
|
|
|
2821
|
-
**Decision (2026-04-28; revised 2026-05-
|
|
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.
|
|
2822
2822
|
|
|
2823
2823
|
**Context:**
|
|
2824
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.
|
|
@@ -2828,6 +2828,9 @@ Posture compatibility is part of that closeout contract: `repo_closeout` and `ru
|
|
|
2828
2828
|
|
|
2829
2829
|
**Decision:**
|
|
2830
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.
|
|
2831
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.
|
|
2832
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.
|
|
2833
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.
|
|
@@ -2853,7 +2856,7 @@ Posture compatibility is part of that closeout contract: `repo_closeout` and `ru
|
|
|
2853
2856
|
- `distilled/templates/ui-proof.md`
|
|
2854
2857
|
- `distilled/workflows/plan.md`, `distilled/workflows/execute.md`, `distilled/workflows/quick.md`, `distilled/workflows/verify.md`
|
|
2855
2858
|
- `agents/planner.md`, `agents/executor.md`, `agents/verifier.md`, `distilled/templates/delegates/plan-checker.md`
|
|
2856
|
-
- `bin/lib/templates.mjs`, `bin/lib/ui-proof.mjs`, `bin/lib/health.mjs`, `bin/lib/rendering.mjs`
|
|
2859
|
+
- `bin/lib/templates.mjs`, `bin/lib/ui-proof.mjs`, `bin/lib/health.mjs`, `bin/lib/phase.mjs`, `bin/lib/rendering.mjs`
|
|
2857
2860
|
- `tests/phase.test.cjs`, `tests/gsdd.guards.test.cjs`, `tests/gsdd.health.test.cjs`, `tests/gsdd.init.test.cjs`
|
|
2858
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.
|
|
2859
2862
|
- OneShot QC source: `https://github.com/oneshot-repo/OneShot/tree/main/skills`
|
|
@@ -2875,7 +2878,7 @@ Posture compatibility is part of that closeout contract: `repo_closeout` and `ru
|
|
|
2875
2878
|
|
|
2876
2879
|
## D63 - Computed-First Control Map
|
|
2877
2880
|
|
|
2878
|
-
**Decision (2026-05-08):** Long-running multi-agent and multi-worktree control uses a computed-first `gsdd control-map` helper rather than a new lifecycle workflow or a vendor session parser. The helper computes repo/worktree/planning truth live and overlays optional local annotations only for intent that git cannot know.
|
|
2881
|
+
**Decision (2026-05-08; revised 2026-05-09):** Long-running multi-agent and multi-worktree control uses a computed-first `gsdd control-map` helper rather than a new lifecycle workflow or a vendor session parser. The helper computes repo/worktree/planning truth live and overlays optional local annotations only for intent that git cannot know.
|
|
2879
2882
|
|
|
2880
2883
|
**Context:**
|
|
2881
2884
|
- Gap I52 showed that ordinary `git status` can be clean while sibling worktrees, detached runtime worktrees, ignored/generated surfaces, snapshots, dirty local WIP, and cleanup obligations remain unexplained.
|
|
@@ -2885,21 +2888,24 @@ Posture compatibility is part of that closeout contract: `repo_closeout` and `ru
|
|
|
2885
2888
|
|
|
2886
2889
|
**Decision:**
|
|
2887
2890
|
- Add `gsdd control-map [--json] [--with-ignored] [--annotations <path>]` to the main CLI and generated `.planning/bin/gsdd.mjs` helper runtime.
|
|
2891
|
+
- Add `gsdd control-map annotate set|clear` as the minimal mutation surface for local annotation intent. `set` creates or updates workspace-local annotation files with live branch/head snapshots, normalized write sets, cleanup state, owner/scope/next-step metadata, and stale-update refusal unless `--refresh` is explicit. `clear` removes an annotation by id or path, including stale or missing-worktree entries, without deleting branches, pruning worktrees, or cleaning files.
|
|
2892
|
+
- Add `gsdd closeout-report [--json] [--phase <N>]` as a read-only replay helper over the same local-state authority. It defaults to the latest completed phase and reports blockers, warnings, next safe action, control-map status, health/preflight status, direct phase verification, and UI-proof status without mutating ROADMAP status, fingerprints, annotations, branches, worktrees, generated surfaces, release state, or report files.
|
|
2888
2893
|
- Compute authority from live git/worktree state first: canonical checkout, branch, HEAD, upstream divergence when comparable, tracked/untracked dirty buckets, optional ignored-path scans through `--with-ignored`, sibling git worktrees, detached/bare state, invalid git access, planning drift, checkpoint existence, lifecycle state, and repo-local runtime worktree directories.
|
|
2889
|
-
- Read optional annotations from `.planning/.local/control-map.annotations.json`. Annotations may record `runtime_owner`, intended scope, write set, cleanup state,
|
|
2894
|
+
- Read optional annotations from `.planning/.local/control-map.annotations.json`. Annotations may record `runtime_owner`, intended scope, write set, cleanup state, next step, branch, last known head, and update timestamp.
|
|
2890
2895
|
- Treat annotations as stale-checkable intent only. They never outrank repo truth, planning artifacts, or checkpoint reconciliation.
|
|
2896
|
+
- Emit explicit transition-risk semantics from computed truth: concrete annotation write-set overlap, live dirty-path/write-set overlap, upstream divergence, detached candidate worktrees, stale annotation mismatches, and tracked dirty canonical work behind upstream. Only concrete block-level risks should stop owned-write lifecycle transitions; ordinary dirty or detached local state remains warning-level guidance.
|
|
2891
2897
|
- Keep transcript/session stores out of the helper. Vendor session evidence may support postmortems, but it is not live product truth.
|
|
2892
2898
|
- Wire the control map into portable workflow behavior by having `progress`, `resume`, `pause`, `quick`, `plan`, and `execute` consult it when available. This is guidance plus deterministic helper output, not a new workflow lane.
|
|
2893
2899
|
|
|
2894
2900
|
**Leverage:**
|
|
2895
2901
|
- Lost: a pure zero-file model cannot preserve non-computable intent such as owner/runtime, intended scope, and cleanup obligation.
|
|
2896
2902
|
- Kept: Workspine remains a lightweight repo-native spine; no new lifecycle workflow, no dashboard/control plane, no vendor session authority, and no change to the five evidence kinds.
|
|
2897
|
-
- Gained: agents can explain "clean" precisely across tracked, untracked, sibling, detached, stale, and annotated state by default, and across ignored/generated local surfaces when the caller requests the explicit `--with-ignored` scan before planning, execution, resume, cleanup, or milestone continuation.
|
|
2903
|
+
- Gained: agents can explain "clean" precisely across tracked, untracked, sibling, detached, stale, and annotated state by default, and across ignored/generated local surfaces when the caller requests the explicit `--with-ignored` scan before planning, execution, resume, cleanup, or milestone continuation. Owned-write preflight can also consume the same computed risk output, operators can update stale-aware local intent without hand-editing JSON, and closeout replay can join existing verification signals into one typed report without inventing a branch lease, control plane, or cleanup workflow.
|
|
2898
2904
|
|
|
2899
2905
|
**Evidence:**
|
|
2900
|
-
- `bin/lib/control-map.mjs`, `bin/gsdd.mjs`, `bin/lib/rendering.mjs`
|
|
2906
|
+
- `bin/lib/control-map.mjs`, `bin/lib/closeout-report.mjs`, `bin/lib/health.mjs`, `bin/lib/phase.mjs`, `bin/lib/init-runtime.mjs`, `bin/lib/lifecycle-preflight.mjs`, `bin/gsdd.mjs`, `bin/lib/rendering.mjs`
|
|
2901
2907
|
- `distilled/workflows/progress.md`, `resume.md`, `pause.md`, `quick.md`, `plan.md`, `execute.md`
|
|
2902
|
-
- `tests/gsdd.control-map.test.cjs`
|
|
2908
|
+
- `tests/gsdd.control-map.test.cjs`, `tests/gsdd.closeout-report.test.cjs`, `tests/gsdd.health.test.cjs`, `tests/phase.test.cjs`, `tests/gsdd.guards.test.cjs`
|
|
2903
2909
|
- `.internal-research/gaps.md` Gap I52 and Gap I54
|
|
2904
2910
|
- `.internal-research/lessons-learned.md` entries on multi-worktree registry, clean-vs-editor-visible noise, checkpoint/worktree truth split, and subagent stop conditions
|
|
2905
2911
|
- GSD comparison: upstream GSD preserves lifecycle rigor but does not define a vendor-agnostic computed worktree/control-map helper.
|
|
@@ -2908,8 +2914,10 @@ Posture compatibility is part of that closeout contract: `repo_closeout` and `ru
|
|
|
2908
2914
|
|
|
2909
2915
|
**Consequences:**
|
|
2910
2916
|
- Future cleanup, resume, and parallel-worktree work should start from `gsdd control-map --json` rather than repeated ad hoc repo audits; use `--with-ignored` before making a clean-workspace claim that includes ignored or generated surfaces.
|
|
2911
|
-
-
|
|
2912
|
-
-
|
|
2917
|
+
- Annotation mutation is intentionally confined to `control-map annotate`; ordinary `control-map` reads remain computed-first and safe to call from status surfaces.
|
|
2918
|
+
- Lifecycle preflight may consume block-level control-map risks for owned-write transitions, but read-only status surfaces must not turn warning-level local state into blockers.
|
|
2919
|
+
- `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
|
+
- Future health hardening can consume the same helper output for stricter reporting, but must avoid turning local annotations into product truth.
|
|
2913
2921
|
|
|
2914
2922
|
---
|
|
2915
2923
|
|
package/distilled/README.md
CHANGED
|
@@ -1,9 +1,27 @@
|
|
|
1
1
|
# Workspine
|
|
2
2
|
|
|
3
|
-
A repo-native delivery spine for planning, checking, execution, verification, and handoff
|
|
3
|
+
A repo-native delivery spine 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
|
|
|
7
|
+
## Why It Matters
|
|
8
|
+
|
|
9
|
+
AI coding agents make code cheaper to produce. They do not make architecture, scope control, review, security, or release confidence disappear. In practice, they move more of the work into deciding what should happen, checking whether it happened, and preserving enough context for the next session or runtime to continue safely.
|
|
10
|
+
|
|
11
|
+
Workspine is built for that pressure. It gives serious AI-assisted work one repo-native path:
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
new-project -> plan -> execute -> verify
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
The plan is a reviewed contract before implementation starts. Execution is a separate step. Verification records what passed, what failed, and what still needs human judgment.
|
|
18
|
+
|
|
19
|
+
## When To Use It
|
|
20
|
+
|
|
21
|
+
Use Workspine when a change spans multiple files, sessions, agents, or runtimes; when architecture, data, security, or release confidence matter; or when proof needs to live in the repo instead of only in a chat transcript.
|
|
22
|
+
|
|
23
|
+
Skip the full lifecycle for tiny, obvious edits. Direct prompting in your usual coding agent is cheaper for low-risk work. Workspine is for the work where guessing gets expensive.
|
|
24
|
+
|
|
7
25
|
## What This Is
|
|
8
26
|
|
|
9
27
|
Workspine is a small set of workflow sources plus a CLI (`gsdd`) that:
|
|
@@ -22,7 +40,7 @@ Launch proof posture:
|
|
|
22
40
|
- Directly validated in repo truth: Claude Code, Codex CLI, OpenCode
|
|
23
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
|
|
24
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`
|
|
25
|
-
-
|
|
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)
|
|
26
44
|
- Public proof entrypoints: `docs/BROWNFIELD-PROOF.md`, `docs/proof/consumer-node-cli/README.md`, `docs/RUNTIME-SUPPORT.md`, `docs/VERIFICATION-DISCIPLINE.md`
|
|
27
45
|
|
|
28
46
|
## Quick Start
|
|
@@ -34,6 +52,15 @@ npx -y gsdd-cli init
|
|
|
34
52
|
|
|
35
53
|
In a TTY, `npx -y gsdd-cli init` opens a guided install wizard: choose runtimes first, then decide separately whether repo-wide `AGENTS.md` governance is worth installing. If `gsdd-cli` is globally installed, `gsdd init` is the equivalent shorthand.
|
|
36
54
|
|
|
55
|
+
For personal cross-repo availability, run:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
npx -y gsdd-cli install --global
|
|
59
|
+
npx -y gsdd-cli install --global --tools claude,opencode,codex,copilot
|
|
60
|
+
```
|
|
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.
|
|
63
|
+
|
|
37
64
|
Optional adapters:
|
|
38
65
|
```bash
|
|
39
66
|
npx -y gsdd-cli init --tools claude
|
|
@@ -77,6 +104,8 @@ Helper command for long-running sessions:
|
|
|
77
104
|
|
|
78
105
|
```
|
|
79
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
|
|
80
109
|
```
|
|
81
110
|
|
|
82
111
|
## Brownfield Entry Contract
|
|
@@ -109,7 +138,7 @@ Use the same three-way routing everywhere:
|
|
|
109
138
|
Architecture notes:
|
|
110
139
|
- `bin/gsdd.mjs` remains the thin generator entrypoint, while vendor-specific rendering lives in adapter modules.
|
|
111
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.
|
|
112
|
-
- `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.
|
|
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.
|
|
113
142
|
- 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`.
|
|
114
143
|
- `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`.
|
|
115
144
|
- Portable lifecycle contracts now align to the roadmap template status grammar: `[ ]`, `[-]`, `[x]`.
|
|
@@ -6,6 +6,7 @@ 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
8
|
Planning state: `.planning/`. Portable workflows: `.agents/skills/gsdd-*/SKILL.md`.
|
|
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.
|
|
9
10
|
|
|
10
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.
|
|
11
12
|
|
|
@@ -18,4 +19,3 @@ Rules:
|
|
|
18
19
|
6. Git guidance in `.planning/config.json` -> `gitProtocol` is advisory; follow the repo's own conventions first.
|
|
19
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
|
-
|
|
@@ -99,7 +99,7 @@ This is an internal prerequisite of `new-project`, not a user-facing routing req
|
|
|
99
99
|
|
|
100
100
|
If `.planning/brownfield-change/CHANGE.md` exists, keep it as the current bounded continuity anchor while you do this work. Do not treat its presence as evidence that the user should have used another command instead. The only question is whether they intentionally want to widen that bounded brownfield change into full milestone planning.
|
|
101
101
|
|
|
102
|
-
Read and follow `.agents/skills/gsdd-map-codebase/SKILL.md`
|
|
102
|
+
Read and follow the `gsdd-map-codebase` skill now. Prefer the repo-local `.agents/skills/gsdd-map-codebase/SKILL.md` when it exists; otherwise use the globally installed `gsdd-map-codebase` skill available in the current runtime. Execute its full flow (check existing, spawn mappers, validate, secrets scan). When map-codebase completes, return here and continue from Brownfield Validated Requirements Inference below.
|
|
103
103
|
|
|
104
104
|
### Brownfield Validated Requirements Inference
|
|
105
105
|
|
|
@@ -130,7 +130,7 @@ Note: this step does NOT replace levels 1–3. An artifact can satisfy the evide
|
|
|
130
130
|
</evidence_contract>
|
|
131
131
|
|
|
132
132
|
<ui_proof_comparison>
|
|
133
|
-
|
|
133
|
+
Before closure, direct `gsdd verify <phase>` and this workflow must fail closed when the target phase has no matching PLAN.md or SUMMARY.md; report structured prerequisite blockers instead of treating missing artifacts as an empty success. Read UI proof declaration authority from the plan frontmatter contract only: body prose, fenced examples, stale sidecars, and markdown snippets do not declare UI proof intent. If frontmatter defines non-empty `ui_proof_slots`, compare planned UI proof against observed bundles before closure. Prefer `gsdd ui-proof compare <planned-slots-json> [observed-bundle-json ...]` when planned slots are available as JSON or fenced JSON; otherwise perform the same field-by-field comparison and record reduced assurance if no deterministic command could run. If frontmatter records `ui_proof_slots: []`, it must also contain a nonblank `no_ui_proof_rationale`; otherwise verification blocks. If the plan records only `no_ui_proof_rationale`, verify the rationale instead of requiring a bundle, and treat stale planned/observed sidecars as warnings rather than proof or blockers. Each observed bundle must include top-level `proof_bundle_version`, `scope`, `route_state`, `environment`, `viewport`, `evidence_inputs`, `commands_or_manual_steps`, `observations`, `artifacts`, `privacy`, `result`, and `claim_limits`.
|
|
134
134
|
Classify each slot as exactly one of: `satisfied`, `partial`, `missing`, `waived`, `deferred`, or `not_applicable`. Deterministic comparison issues include `severity` and `fix_hint`; use those as the normal repair feedback loop before closing verification. Waiver/deferment narrows the claim; it is not proof. Screenshots, traces, videos, reports, accessibility scans, Gherkin, visual diffs, and manual notes are artifact types or activities mapped onto existing evidence kinds, not new evidence kinds. Artifact count is never proof; each artifact must tie to the slot claim, route/state, observation, artifact path/link, privacy metadata, and claim limit.
|
|
135
135
|
For live UI runtime proof, expect `agent-browser` as the default captured tool unless the observed bundle explains a project-native equivalent or an availability constraint. Do not fail solely because another browser tool was used, but downgrade vague proof that lacks exact route/state, planned viewport coverage or rationale, interactive steps/refs where relevant, screenshot/report artifacts, or relevant console/network observations. Existing Playwright tests count as canonical repeatable regression evidence, not a replacement for scoped runtime evidence when the slot requires `runtime`.
|
|
136
136
|
Artifact privacy metadata must include `visibility`, `retention`, `sensitivity`, and `safe_to_publish`; raw screenshots, traces, videos, DOM snapshots, and reports default to local-only and unsafe unless sanitized. Run `gsdd ui-proof validate <path>` or treat `gsdd health` E10 as blocking; add `--claim <...>` when relying on the bundle for public, tracked, delivery, release, or publication proof. Visual taste, accessibility judgment, baseline acceptance, subjective polish/layout quality, and privacy publication require human evidence or explicit waiver; human approval does not replace required `code`, `test`, `runtime`, or `delivery` evidence. Source annotations, AST/cAST findings, semantic search, comments, and Semble-like retrieval are discovery hints only.
|
package/docs/RUNTIME-SUPPORT.md
CHANGED
|
@@ -4,7 +4,11 @@ Workspine is a repo-native delivery spine with portable multi-runtime workflow s
|
|
|
4
4
|
|
|
5
5
|
This matrix is the release-floor truth surface.
|
|
6
6
|
|
|
7
|
-
Human setup and repair commands in this document use `npx -y gsdd-cli ...` because that works without a global install. If you installed `gsdd-cli` globally, the equivalent bare `gsdd ...` command is fine.
|
|
7
|
+
Human repo setup and repair commands in this document use `npx -y gsdd-cli ...` because that works without a global install. If you installed `gsdd-cli` globally, the equivalent bare `gsdd ...` command is fine. For cross-repo personal use, `npx -y gsdd-cli install --global` installs reusable Workspine skills and native runtime surfaces into selected agent homes.
|
|
8
|
+
|
|
9
|
+
The install contract is deliberately skills-first: `npx -y gsdd-cli init` always creates `.agents/skills/gsdd-*` and `.planning/bin/gsdd*`; runtime-specific adapters are optional discovery or orchestration helpers layered on top.
|
|
10
|
+
|
|
11
|
+
Global install is separate from repo bootstrap. It does not create `.planning/`; it writes selected runtime surfaces under user-level agent homes and records Workspine ownership in per-runtime manifests.
|
|
8
12
|
|
|
9
13
|
## Support tiers
|
|
10
14
|
|
|
@@ -49,15 +53,31 @@ Two surfaces matter for users:
|
|
|
49
53
|
| GitHub Copilot | Qualified support | `.agents/skills/gsdd-*` | Skill/slash path when discovery is available; generated skill files are freshness-checked locally, but the runtime is not claimed as parity-validated |
|
|
50
54
|
| Gemini CLI | Qualified support | `.agents/skills/gsdd-*` | Skill/slash path when discovery is available; governance is optional, generated skill files are freshness-checked locally, and parity is not claimed |
|
|
51
55
|
|
|
52
|
-
##
|
|
56
|
+
## Global install surfaces
|
|
57
|
+
|
|
58
|
+
`npx -y gsdd-cli install --global` can install personal cross-repo surfaces for these targets:
|
|
59
|
+
|
|
60
|
+
| Target | Global surfaces |
|
|
61
|
+
| --- | --- |
|
|
62
|
+
| Claude Code | `~/.claude/skills`, `~/.claude/commands`, `~/.claude/agents` |
|
|
63
|
+
| OpenCode | `~/.agents/skills`, `~/.config/opencode/commands`, `~/.config/opencode/agents` |
|
|
64
|
+
| Codex CLI | `~/.agents/skills`, `~/.codex/agents` |
|
|
65
|
+
| GitHub Copilot CLI | `~/.agents/skills`, `~/.copilot/agents` |
|
|
66
|
+
|
|
67
|
+
Install availability is not a parity claim. GitHub Copilot CLI can receive global Workspine surfaces, but it remains in the qualified-support tier unless the release-floor proof for Copilot is raised deliberately.
|
|
68
|
+
|
|
69
|
+
When `OPENCODE_CONFIG_DIR` is set, OpenCode commands and agents are installed under that custom config root. Skills remain under the shared agent-compatible global root (`~/.agents/skills`), which OpenCode, Codex CLI, and GitHub Copilot CLI can all discover.
|
|
70
|
+
|
|
71
|
+
## Repo-Local Generated-Surface Freshness
|
|
53
72
|
|
|
54
73
|
The authored source contract stays in `distilled/workflows/*`. Generated runtime-facing files are trusted only through deterministic rendering:
|
|
55
74
|
|
|
56
|
-
- `npx -y gsdd-cli health` compares
|
|
75
|
+
- `npx -y gsdd-cli health` compares generated surfaces in the current repo-local `.planning/` workspace under `.agents/skills/`, `.planning/bin/`, `.claude/`, `.opencode/`, and `.codex/` against current render output.
|
|
57
76
|
- Workflow-internal deterministic helper commands run through `node .planning/bin/gsdd.mjs ...`.
|
|
58
77
|
- `npx -y gsdd-cli update` regenerates drifted generated surfaces from the authored workflow and delegate sources.
|
|
59
78
|
- Bare `gsdd health` and `gsdd update` are equivalent only when `gsdd-cli` is globally installed.
|
|
60
79
|
- Missing generated surfaces are not treated as drift unless the corresponding runtime surface is actually installed locally.
|
|
80
|
+
- Global user-home installs are refreshed by rerunning `npx -y gsdd-cli install --global --tools <targets>`; global runtime probes remain an internal pressure-harness concern, not a public install flag.
|
|
61
81
|
|
|
62
82
|
## Entry and helper surfaces
|
|
63
83
|
|
package/docs/USER-GUIDE.md
CHANGED
|
@@ -4,8 +4,24 @@ A detailed reference for Workspine workflows, troubleshooting, and configuration
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
## Fast Path
|
|
8
|
+
|
|
9
|
+
For a new project or a broad brownfield effort:
|
|
10
|
+
|
|
11
|
+
1. Run `npx -y gsdd-cli init` from the repo root.
|
|
12
|
+
2. Start with `gsdd-new-project` unless the change is already small and concrete.
|
|
13
|
+
3. Review the plan from `gsdd-plan` before starting `gsdd-execute`.
|
|
14
|
+
4. Run `gsdd-verify` before calling the phase done.
|
|
15
|
+
|
|
16
|
+
Use `npx -y gsdd-cli init` for repo-local setup. Use `npx -y gsdd-cli install --global` to install reusable Workspine skills and native runtime surfaces into selected agent homes without creating `.planning/` in the current repo.
|
|
17
|
+
|
|
18
|
+
For a bounded existing-code change, use `gsdd-quick`. For an unfamiliar or risky repo, use `gsdd-map-codebase` before choosing between `gsdd-quick` and `gsdd-new-project`.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
7
22
|
## Table of Contents
|
|
8
23
|
|
|
24
|
+
- [Fast Path](#fast-path)
|
|
9
25
|
- [Workflow Diagrams](#workflow-diagrams)
|
|
10
26
|
- [Command Reference](#command-reference)
|
|
11
27
|
- [Configuration Reference](#configuration-reference)
|
|
@@ -159,6 +175,24 @@ The 7 check dimensions: requirement coverage, task completeness, dependency corr
|
|
|
159
175
|
|
|
160
176
|
## Command Reference
|
|
161
177
|
|
|
178
|
+
### Install Modes
|
|
179
|
+
|
|
180
|
+
Use local repo install when the project should own `.planning/`, `.agents/skills`, and optional repo-local runtime adapters:
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
npx -y gsdd-cli init
|
|
184
|
+
npx -y gsdd-cli init --auto --tools all
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
Use global agent install when you want Workspine workflows available across repos from your personal agent home:
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
npx -y gsdd-cli install --global
|
|
191
|
+
npx -y gsdd-cli install --global --tools claude,opencode,codex,copilot
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
Global install writes Workspine-managed files under selected agent homes and records per-runtime manifests. It does not bootstrap project planning state.
|
|
195
|
+
|
|
162
196
|
### Workflows (run via generated skills or adapters)
|
|
163
197
|
|
|
164
198
|
| Workflow | Purpose | When to Use |
|
|
@@ -186,6 +220,7 @@ The 7 check dimensions: requirement coverage, task completeness, dependency corr
|
|
|
186
220
|
| `npx -y gsdd-cli update [--tools <platform>]` | Regenerate skills/adapters from latest sources |
|
|
187
221
|
| `npx -y gsdd-cli update --templates` | Refresh role contracts and delegates (warns about user modifications) |
|
|
188
222
|
| `npx -y gsdd-cli control-map [--json] [--with-ignored]` | Show computed repo/worktree/planning state, dirty buckets, optional ignored-path scan, local annotations, and safe next interventions |
|
|
223
|
+
| `npx -y gsdd-cli closeout-report [--json] [--phase <N>]` | Read-only closeout replay: blockers, warnings, fixes, and next safe action (composed from control-map, health/preflight, verify, and UI-proof signals) |
|
|
189
224
|
| `npx -y gsdd-cli find-phase [N]` | Show phase info as JSON (for agent consumption) |
|
|
190
225
|
| `npx -y gsdd-cli verify <N>` | Run artifact checks for phase N |
|
|
191
226
|
| `npx -y gsdd-cli scaffold phase <N> [name]` | Create a new phase plan file |
|
|
@@ -200,10 +235,11 @@ If `gsdd-cli` is globally installed, you can use the shorter `gsdd ...` form for
|
|
|
200
235
|
|
|
201
236
|
Normal user flow:
|
|
202
237
|
|
|
203
|
-
1. Run `npx gsdd-cli init`.
|
|
238
|
+
1. Run `npx -y gsdd-cli init`.
|
|
204
239
|
2. Enter workflows through your runtime surface: `/gsdd-*` or `$gsdd-*`.
|
|
205
|
-
3. Use `gsdd health` to check
|
|
206
|
-
4. Use `npx gsdd-cli update` when generated surfaces drift or you want the latest shipped output.
|
|
240
|
+
3. Use `npx -y gsdd-cli health` to check repo-local generated surfaces.
|
|
241
|
+
4. Use `npx -y gsdd-cli update` when repo-local generated surfaces drift or you want the latest shipped output.
|
|
242
|
+
5. For personal global installs, rerun `npx -y gsdd-cli install --global --tools <targets>` to repair or refresh selected agent homes.
|
|
207
243
|
|
|
208
244
|
Surface split:
|
|
209
245
|
|
|
@@ -410,7 +446,7 @@ If you've modified any templates, the generation manifest detects this and warns
|
|
|
410
446
|
|
|
411
447
|
### Generated Surfaces Drift Or A Runtime Command Goes Missing
|
|
412
448
|
|
|
413
|
-
|
|
449
|
+
In a repo-local `.planning/` workspace, start with `npx -y gsdd-cli health`. If it reports drift or missing installed generated surfaces, run `npx -y gsdd-cli update` for the whole workspace or `npx -y gsdd-cli update --tools <runtime>` for a specific runtime. For global personal installs, rerun `npx -y gsdd-cli install --global --tools <targets>`.
|
|
414
450
|
|
|
415
451
|
That repair path is deterministic for generated files. It does not imply that every runtime has equal native ergonomics or equal validation depth.
|
|
416
452
|
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Workspine is not just a set of prompts. Its core delivery claim depends on explicit checking and verification loops that survive across runtimes.
|
|
4
4
|
|
|
5
|
+
AI output is cheap enough that the scarce part is often proof: whether the change fits the codebase, whether the right behavior is wired in, and whether the remaining risk is visible to a human reviewer. Workspine treats that proof as part of the workflow, not as an optional cleanup note.
|
|
6
|
+
|
|
5
7
|
## The delivery contract
|
|
6
8
|
|
|
7
9
|
The durable loop is:
|
|
@@ -46,7 +48,7 @@ See `docs/BROWNFIELD-PROOF.md` for the reader-facing narrative and `docs/proof/c
|
|
|
46
48
|
|
|
47
49
|
## What this note does and does not claim
|
|
48
50
|
|
|
49
|
-
This note explains the release-floor discipline that Workspine can prove publicly
|
|
51
|
+
This note explains the release-floor discipline that Workspine can prove publicly in this release.
|
|
50
52
|
|
|
51
53
|
It does **not** claim:
|
|
52
54
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gsdd-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.26.0",
|
|
4
4
|
"description": "Workspine — a repo-native delivery spine for long-horizon AI-assisted work, with directly validated support for Claude Code, Codex CLI, and OpenCode, published as gsdd-cli.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
},
|
|
9
9
|
"scripts": {
|
|
10
10
|
"test": "npm run test:gsdd",
|
|
11
|
-
"test:gsdd": "node tests/gsdd.init.test.cjs && node tests/gsdd.models.test.cjs && node tests/gsdd.consumer-ceremony.test.cjs && node tests/gsdd.manifest.test.cjs && node tests/gsdd.plan.adapters.test.cjs && node tests/gsdd.audit-milestone.test.cjs && node tests/gsdd.invariants.test.cjs && node tests/gsdd.guards.test.cjs && node tests/gsdd.health.test.cjs && node tests/gsdd.scenarios.test.cjs && node tests/gsdd.cross-runtime.test.cjs && node tests/gsdd.control-map.test.cjs && node tests/phase.test.cjs && node tests/session-fingerprint.test.cjs",
|
|
11
|
+
"test:gsdd": "node tests/gsdd.init.test.cjs && node tests/gsdd.models.test.cjs && node tests/gsdd.consumer-ceremony.test.cjs && node tests/gsdd.manifest.test.cjs && node tests/gsdd.plan.adapters.test.cjs && node tests/gsdd.global-install-pressure.test.cjs && node tests/gsdd.audit-milestone.test.cjs && node tests/gsdd.invariants.test.cjs && node tests/gsdd.guards.test.cjs && node tests/gsdd.health.test.cjs && node tests/gsdd.scenarios.test.cjs && node tests/gsdd.cross-runtime.test.cjs && node tests/gsdd.control-map.test.cjs && node tests/gsdd.closeout-report.test.cjs && node tests/gsdd.next.test.cjs && node tests/phase.test.cjs && node tests/session-fingerprint.test.cjs",
|
|
12
12
|
"prepublishOnly": "node -e \"const ok=process.env.GITHUB_ACTIONS==='true'&&process.env.GITHUB_REF_NAME==='main'&&process.env.GITHUB_WORKFLOW==='Release'; if(!ok){console.error('Refusing to publish gsdd-cli outside the GitHub Actions Release workflow on main.'); process.exit(1)}\""
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|