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.
- package/README.md +53 -22
- package/agents/DISTILLATION.md +2 -2
- package/agents/README.md +4 -4
- package/agents/approach-explorer.md +4 -4
- package/agents/executor.md +20 -20
- package/agents/integration-checker.md +2 -2
- package/agents/planner.md +10 -26
- package/agents/researcher.md +2 -2
- package/agents/roadmapper.md +6 -6
- package/agents/synthesizer.md +18 -18
- package/agents/verifier.md +3 -3
- package/bin/adapters/agents.mjs +3 -3
- package/bin/adapters/claude.mjs +16 -14
- package/bin/adapters/opencode.mjs +15 -12
- package/bin/gsdd.mjs +16 -13
- package/bin/lib/{models.mjs → config.mjs} +23 -16
- package/bin/lib/control-map.mjs +17 -488
- package/bin/lib/health-truth.mjs +8 -13
- package/bin/lib/health.mjs +25 -39
- package/bin/lib/init-flow.mjs +44 -38
- package/bin/lib/init-prompts.mjs +3 -3
- package/bin/lib/init-runtime.mjs +11 -30
- package/bin/lib/lifecycle-preflight.mjs +97 -410
- package/bin/lib/lifecycle-state.mjs +2 -1
- package/bin/lib/next.mjs +243 -20
- package/bin/lib/phase.mjs +706 -280
- package/bin/lib/plan-constants.mjs +0 -5
- package/bin/lib/rendering.mjs +64 -44
- package/bin/lib/runtime-freshness.mjs +18 -15
- package/bin/lib/state-dir.mjs +45 -0
- package/bin/lib/templates.mjs +59 -22
- package/bin/lib/work-context.mjs +12 -1
- package/bin/lib/workflows.mjs +0 -1
- package/bin/lib/workspace-root.mjs +11 -6
- package/distilled/DESIGN.md +89 -31
- package/distilled/EVIDENCE-INDEX.md +18 -5
- package/distilled/README.md +23 -33
- package/distilled/SKILL.md +9 -10
- package/distilled/templates/agents.block.md +5 -5
- package/distilled/templates/approach.md +3 -3
- package/distilled/templates/auth-matrix.md +2 -2
- package/distilled/templates/brownfield-change/CHANGE.md +1 -1
- package/distilled/templates/delegates/approach-explorer.md +5 -5
- package/distilled/templates/delegates/mapper-arch.md +3 -3
- package/distilled/templates/delegates/mapper-concerns.md +4 -4
- package/distilled/templates/delegates/mapper-quality.md +3 -3
- package/distilled/templates/delegates/mapper-tech.md +3 -3
- package/distilled/templates/delegates/plan-checker.md +18 -19
- package/distilled/templates/delegates/researcher-architecture.md +3 -3
- package/distilled/templates/delegates/researcher-features.md +3 -3
- package/distilled/templates/delegates/researcher-pitfalls.md +3 -3
- package/distilled/templates/delegates/researcher-stack.md +3 -3
- package/distilled/templates/delegates/researcher-synthesizer.md +7 -7
- package/distilled/templates/research/architecture.md +1 -1
- package/distilled/templates/research/pitfalls.md +1 -1
- package/distilled/templates/research/stack.md +1 -1
- package/distilled/templates/roadmap.md +4 -4
- package/distilled/templates/spec.md +2 -2
- package/distilled/templates/ui-proof.md +81 -181
- package/distilled/workflows/audit-milestone.md +23 -23
- package/distilled/workflows/complete-milestone.md +35 -35
- package/distilled/workflows/execute.md +34 -35
- package/distilled/workflows/map-codebase.md +30 -30
- package/distilled/workflows/new-milestone.md +18 -18
- package/distilled/workflows/new-project.md +45 -45
- package/distilled/workflows/pause.md +15 -15
- package/distilled/workflows/plan.md +106 -114
- package/distilled/workflows/progress.md +40 -39
- package/distilled/workflows/quick.md +49 -50
- package/distilled/workflows/resume.md +23 -22
- package/distilled/workflows/verify-work.md +7 -7
- package/distilled/workflows/verify.md +26 -26
- package/docs/BROWNFIELD-PROOF.md +1 -1
- package/docs/RUNTIME-SUPPORT.md +13 -13
- package/docs/USER-GUIDE.md +26 -21
- package/docs/claude/context-monitor.md +1 -1
- package/docs/proof/consumer-node-cli/README.md +1 -1
- package/package.json +3 -3
- package/bin/lib/closeout-report.mjs +0 -318
- package/bin/lib/evidence-contract.mjs +0 -325
- package/bin/lib/provenance.mjs +0 -390
- package/bin/lib/session-fingerprint.mjs +0 -223
- package/bin/lib/ui-proof.mjs +0 -1007
- 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
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
121
|
+
planningDir: resolveStateDir(fallbackRoot).dir,
|
|
122
|
+
stateDirName: resolveStateDir(fallbackRoot).name,
|
|
123
|
+
migrationNotice: resolveStateDir(fallbackRoot).migrationNotice,
|
|
119
124
|
};
|
|
120
125
|
}
|
|
121
126
|
|
package/distilled/DESIGN.md
CHANGED
|
@@ -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
|
|
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 |
|
|
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
|
-
- `
|
|
2375
|
-
- `
|
|
2376
|
-
- `
|
|
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
|
|
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
|
|
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
|
-
-
|
|
2825
|
-
- The contract defines
|
|
2826
|
-
- GSD's archived planner, executor, and verifier roles preserve strong lifecycle discipline, but they do not provide this UI-specific
|
|
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
|
|
2831
|
-
- Direct phase verification must read
|
|
2832
|
-
- Direct phase verification must fail nonzero with structured blockers when no matching plan or summary exists, or when
|
|
2833
|
-
- When
|
|
2834
|
-
-
|
|
2835
|
-
-
|
|
2836
|
-
-
|
|
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
|
-
-
|
|
2841
|
-
-
|
|
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
|
|
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
|
-
-
|
|
2847
|
-
-
|
|
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
|
|
2852
|
-
- Kept: repo-native markdown artifacts, optional project tooling, fixed closure evidence kinds, generated-surface freshness, the plan/execute/verify separation, and
|
|
2853
|
-
- Gained: exact claim-to-
|
|
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/
|
|
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
|
|
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
|
|
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/
|
|
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
|
|
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
|
package/distilled/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Workspine
|
|
2
2
|
|
|
3
|
-
|
|
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 (`.
|
|
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 `.
|
|
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
|
|
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/`
|
|
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
|
|
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
|
-
-
|
|
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
|
|
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 `.
|
|
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 `.
|
|
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 `.
|
|
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 .
|
|
86
|
-
/gsdd-new-project -> .
|
|
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
|
|
95
|
-
/gsdd-quick -> .
|
|
96
|
-
/gsdd-pause -> .
|
|
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
|
|
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 `.
|
|
141
|
-
-
|
|
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
|
-
.
|
|
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
|
-
.
|
|
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 #
|
|
231
|
-
delegates/ # delegate instruction files (copied to .
|
|
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
|
package/distilled/SKILL.md
CHANGED
|
@@ -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 `.
|
|
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 `.
|
|
47
|
+
Workspine uses `.work/` as the durable workspace. Legacy `.planning/` workspaces are still read and supported.
|
|
49
48
|
|
|
50
49
|
```
|
|
51
|
-
.
|
|
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 `.
|
|
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
|
-
- `.
|
|
83
|
-
- `.
|
|
81
|
+
- `.work/templates/spec.md` -> `.work/SPEC.md`
|
|
82
|
+
- `.work/templates/roadmap.md` -> `.work/ROADMAP.md`
|
|
84
83
|
|
|
85
84
|
Research:
|
|
86
|
-
- `.
|
|
85
|
+
- `.work/templates/research/*.md` -> `.work/research/*.md`
|
|
87
86
|
|
|
88
87
|
Brownfield codebase mapping:
|
|
89
|
-
- `.
|
|
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
|
|
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: `.
|
|
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 `.
|
|
19
|
-
6. Git guidance in `.
|
|
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 `.
|
|
21
|
+
If `.work/` is missing, run `npx -y gsdd-cli init` then `gsdd-new-project`; bare `gsdd init` is equivalent only when globally installed.
|