gsdd-cli 0.18.5 → 0.19.1
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/LICENSE +21 -21
- package/README.md +610 -608
- package/agents/DISTILLATION.md +421 -421
- package/agents/README.md +62 -62
- package/agents/approach-explorer.md +370 -361
- package/agents/debugger.md +82 -82
- package/agents/executor.md +473 -394
- package/agents/integration-checker.md +318 -318
- package/agents/mapper.md +103 -103
- package/agents/planner.md +342 -313
- package/agents/researcher.md +84 -84
- package/agents/roadmapper.md +296 -296
- package/agents/synthesizer.md +236 -236
- package/agents/verifier.md +337 -337
- package/bin/adapters/agents.mjs +34 -34
- package/bin/adapters/claude.mjs +193 -191
- package/bin/adapters/codex.mjs +85 -85
- package/bin/adapters/index.mjs +20 -20
- package/bin/adapters/opencode.mjs +280 -278
- package/bin/gsdd.mjs +123 -116
- package/bin/lib/cli-utils.mjs +28 -28
- package/bin/lib/evidence-contract.mjs +325 -112
- package/bin/lib/file-ops.mjs +186 -144
- package/bin/lib/health-truth.mjs +196 -178
- package/bin/lib/health.mjs +246 -226
- package/bin/lib/init-flow.mjs +247 -231
- package/bin/lib/init-prompts.mjs +248 -247
- package/bin/lib/init-runtime.mjs +193 -190
- package/bin/lib/init.mjs +17 -17
- package/bin/lib/lifecycle-preflight.mjs +760 -326
- package/bin/lib/lifecycle-state.mjs +356 -267
- package/bin/lib/manifest.mjs +116 -114
- package/bin/lib/models.mjs +411 -411
- package/bin/lib/phase.mjs +365 -358
- package/bin/lib/plan-constants.mjs +35 -30
- package/bin/lib/provenance.mjs +109 -106
- package/bin/lib/rendering.mjs +119 -83
- package/bin/lib/runtime-freshness.mjs +214 -214
- package/bin/lib/session-fingerprint.mjs +91 -14
- package/bin/lib/templates.mjs +225 -224
- package/bin/lib/workspace-root.mjs +2 -1
- package/distilled/DESIGN.md +2461 -2323
- package/distilled/EVIDENCE-INDEX.md +418 -392
- package/distilled/README.md +196 -193
- package/distilled/SKILL.md +86 -85
- package/distilled/templates/agents.block.md +21 -21
- package/distilled/templates/agents.md +6 -6
- package/distilled/templates/approach.md +272 -232
- package/distilled/templates/auth-matrix.md +78 -78
- package/distilled/templates/brownfield-change/CHANGE.md +99 -0
- package/distilled/templates/brownfield-change/HANDOFF.md +38 -0
- package/distilled/templates/brownfield-change/VERIFICATION.md +56 -0
- package/distilled/templates/codebase/architecture.md +110 -110
- package/distilled/templates/codebase/concerns.md +95 -95
- package/distilled/templates/codebase/conventions.md +193 -193
- package/distilled/templates/codebase/stack.md +96 -96
- package/distilled/templates/delegates/approach-explorer.md +28 -25
- package/distilled/templates/delegates/mapper-arch.md +26 -26
- package/distilled/templates/delegates/mapper-concerns.md +27 -27
- package/distilled/templates/delegates/mapper-quality.md +28 -28
- package/distilled/templates/delegates/mapper-tech.md +25 -25
- package/distilled/templates/delegates/plan-checker.md +78 -68
- package/distilled/templates/delegates/researcher-architecture.md +30 -30
- package/distilled/templates/delegates/researcher-features.md +30 -30
- package/distilled/templates/delegates/researcher-pitfalls.md +30 -30
- package/distilled/templates/delegates/researcher-stack.md +30 -30
- package/distilled/templates/delegates/researcher-synthesizer.md +31 -31
- package/distilled/templates/research/architecture.md +57 -57
- package/distilled/templates/research/features.md +23 -23
- package/distilled/templates/research/pitfalls.md +46 -46
- package/distilled/templates/research/stack.md +45 -45
- package/distilled/templates/research/summary.md +67 -67
- package/distilled/templates/roadmap.md +74 -62
- package/distilled/templates/spec.md +110 -110
- package/distilled/workflows/audit-milestone.md +303 -271
- package/distilled/workflows/complete-milestone.md +349 -332
- package/distilled/workflows/execute.md +457 -450
- package/distilled/workflows/map-codebase.md +253 -253
- package/distilled/workflows/new-milestone.md +242 -238
- package/distilled/workflows/new-project.md +398 -398
- package/distilled/workflows/pause.md +160 -156
- package/distilled/workflows/plan-milestone-gaps.md +183 -183
- package/distilled/workflows/plan.md +454 -448
- package/distilled/workflows/progress.md +227 -223
- package/distilled/workflows/quick.md +351 -347
- package/distilled/workflows/resume.md +220 -212
- package/distilled/workflows/verify-work.md +260 -260
- package/distilled/workflows/verify.md +431 -429
- package/docs/BROWNFIELD-PROOF.md +95 -95
- package/docs/RUNTIME-SUPPORT.md +80 -69
- package/docs/USER-GUIDE.md +394 -386
- package/docs/VERIFICATION-DISCIPLINE.md +59 -59
- package/docs/claude/context-monitor.md +98 -98
- package/docs/proof/consumer-node-cli/README.md +37 -37
- package/docs/proof/consumer-node-cli/ROADMAP.md +14 -14
- package/docs/proof/consumer-node-cli/SPEC.md +17 -17
- package/docs/proof/consumer-node-cli/brief.md +9 -9
- package/docs/proof/consumer-node-cli/phases/01-foundation/01-01-PLAN.md +34 -34
- package/docs/proof/consumer-node-cli/phases/01-foundation/01-01-SUMMARY.md +10 -10
- package/docs/proof/consumer-node-cli/phases/01-foundation/01-VERIFICATION.md +30 -30
- package/package.json +62 -61
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
# Verification Discipline
|
|
2
|
-
|
|
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
|
-
|
|
5
|
-
## The delivery contract
|
|
6
|
-
|
|
7
|
-
The durable loop is:
|
|
8
|
-
|
|
9
|
-
`init -> plan -> execute -> verify`
|
|
10
|
-
|
|
11
|
-
Within that loop, the framework preserves two important review seams.
|
|
12
|
-
|
|
13
|
-
### 1. Plan checking
|
|
14
|
-
|
|
15
|
-
`gsdd-plan` does not stop at "write a plan."
|
|
16
|
-
|
|
17
|
-
It includes a review loop where the plan is checked against concrete dimensions such as:
|
|
18
|
-
|
|
19
|
-
- requirement coverage
|
|
20
|
-
- task completeness
|
|
21
|
-
- dependency correctness
|
|
22
|
-
- scope sanity
|
|
23
|
-
- context compliance
|
|
24
|
-
|
|
25
|
-
On runtimes with stronger native support, that can be a fresh-context checker path. On weaker surfaces, the framework stays honest about reduced assurance instead of pretending the same check happened.
|
|
26
|
-
|
|
27
|
-
### 2. Verification after execution
|
|
28
|
-
|
|
29
|
-
`gsdd-verify` uses a three-level gate:
|
|
30
|
-
|
|
31
|
-
- **Exists** — the expected artifacts are present
|
|
32
|
-
- **Substantive** — the output is real, not empty or stubbed
|
|
33
|
-
- **Wired** — the behavior is connected and actually works
|
|
34
|
-
|
|
35
|
-
This is paired with anti-pattern checks so "files exist" does not get mistaken for "the work is done."
|
|
36
|
-
|
|
37
|
-
## Anti-false-closure in practice
|
|
38
|
-
|
|
39
|
-
The exported brownfield proof pack demonstrates the intended behavior:
|
|
40
|
-
|
|
41
|
-
- the first implementation missed a real requirement
|
|
42
|
-
- verification caught it
|
|
43
|
-
- the repo then recorded the fix and the successful re-verification
|
|
44
|
-
|
|
45
|
-
See `docs/BROWNFIELD-PROOF.md` for the reader-facing narrative and `docs/proof/consumer-node-cli/README.md` for the tracked artifact chain.
|
|
46
|
-
|
|
47
|
-
## What this note does and does not claim
|
|
48
|
-
|
|
49
|
-
This note explains the release-floor discipline that Workspine can prove publicly today.
|
|
50
|
-
|
|
51
|
-
It does **not** claim:
|
|
52
|
-
|
|
53
|
-
- perfect parity of checker mechanics on every runtime
|
|
54
|
-
- autonomous orchestration platform behavior
|
|
55
|
-
- proof of every possible brownfield workflow shape
|
|
56
|
-
|
|
57
|
-
It claims something narrower and more defensible:
|
|
58
|
-
|
|
59
|
-
Workspine keeps a repo-native delivery contract with explicit review and verification seams, and that contract is already strong enough to catch and recover from real misses.
|
|
1
|
+
# Verification Discipline
|
|
2
|
+
|
|
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
|
+
|
|
5
|
+
## The delivery contract
|
|
6
|
+
|
|
7
|
+
The durable loop is:
|
|
8
|
+
|
|
9
|
+
`init -> plan -> execute -> verify`
|
|
10
|
+
|
|
11
|
+
Within that loop, the framework preserves two important review seams.
|
|
12
|
+
|
|
13
|
+
### 1. Plan checking
|
|
14
|
+
|
|
15
|
+
`gsdd-plan` does not stop at "write a plan."
|
|
16
|
+
|
|
17
|
+
It includes a review loop where the plan is checked against concrete dimensions such as:
|
|
18
|
+
|
|
19
|
+
- requirement coverage
|
|
20
|
+
- task completeness
|
|
21
|
+
- dependency correctness
|
|
22
|
+
- scope sanity
|
|
23
|
+
- context compliance
|
|
24
|
+
|
|
25
|
+
On runtimes with stronger native support, that can be a fresh-context checker path. On weaker surfaces, the framework stays honest about reduced assurance instead of pretending the same check happened.
|
|
26
|
+
|
|
27
|
+
### 2. Verification after execution
|
|
28
|
+
|
|
29
|
+
`gsdd-verify` uses a three-level gate:
|
|
30
|
+
|
|
31
|
+
- **Exists** — the expected artifacts are present
|
|
32
|
+
- **Substantive** — the output is real, not empty or stubbed
|
|
33
|
+
- **Wired** — the behavior is connected and actually works
|
|
34
|
+
|
|
35
|
+
This is paired with anti-pattern checks so "files exist" does not get mistaken for "the work is done."
|
|
36
|
+
|
|
37
|
+
## Anti-false-closure in practice
|
|
38
|
+
|
|
39
|
+
The exported brownfield proof pack demonstrates the intended behavior:
|
|
40
|
+
|
|
41
|
+
- the first implementation missed a real requirement
|
|
42
|
+
- verification caught it
|
|
43
|
+
- the repo then recorded the fix and the successful re-verification
|
|
44
|
+
|
|
45
|
+
See `docs/BROWNFIELD-PROOF.md` for the reader-facing narrative and `docs/proof/consumer-node-cli/README.md` for the tracked artifact chain.
|
|
46
|
+
|
|
47
|
+
## What this note does and does not claim
|
|
48
|
+
|
|
49
|
+
This note explains the release-floor discipline that Workspine can prove publicly today.
|
|
50
|
+
|
|
51
|
+
It does **not** claim:
|
|
52
|
+
|
|
53
|
+
- perfect parity of checker mechanics on every runtime
|
|
54
|
+
- autonomous orchestration platform behavior
|
|
55
|
+
- proof of every possible brownfield workflow shape
|
|
56
|
+
|
|
57
|
+
It claims something narrower and more defensible:
|
|
58
|
+
|
|
59
|
+
Workspine keeps a repo-native delivery contract with explicit review and verification seams, and that contract is already strong enough to catch and recover from real misses.
|
|
@@ -1,98 +1,98 @@
|
|
|
1
|
-
> **Claude Code only.** This feature uses Claude Code's `statusLine` and `PostToolUse` hook APIs. Other platforms do not support this hook mechanism.
|
|
2
|
-
|
|
3
|
-
# Context Window Monitor
|
|
4
|
-
|
|
5
|
-
A PostToolUse hook that warns the agent when context window usage is high.
|
|
6
|
-
|
|
7
|
-
## Problem
|
|
8
|
-
|
|
9
|
-
The statusline shows context usage to the **user**, but the **agent** has no awareness of context limits. When context runs low, the agent continues working until it hits the wall — potentially mid-task with no state saved.
|
|
10
|
-
|
|
11
|
-
## How It Works
|
|
12
|
-
|
|
13
|
-
1. The statusline hook writes context metrics to `/tmp/claude-ctx-{session_id}.json`
|
|
14
|
-
2. After each tool use, the context monitor reads these metrics
|
|
15
|
-
3. When remaining context drops below thresholds, it injects a warning as `additionalContext`
|
|
16
|
-
4. The agent receives the warning in its conversation and can act accordingly
|
|
17
|
-
|
|
18
|
-
## Thresholds
|
|
19
|
-
|
|
20
|
-
| Level | Remaining | Agent Behavior |
|
|
21
|
-
|-------|-----------|----------------|
|
|
22
|
-
| Normal | > 35% | No warning |
|
|
23
|
-
| WARNING | <= 35% | Wrap up current task, avoid starting new complex work |
|
|
24
|
-
| CRITICAL | <= 25% | Stop immediately, save state (`gsdd-pause`) |
|
|
25
|
-
|
|
26
|
-
## Debounce
|
|
27
|
-
|
|
28
|
-
To avoid spamming the agent with repeated warnings:
|
|
29
|
-
- First warning always fires immediately
|
|
30
|
-
- Subsequent warnings require 5 tool uses between them
|
|
31
|
-
- Severity escalation (WARNING -> CRITICAL) bypasses debounce
|
|
32
|
-
|
|
33
|
-
## Architecture
|
|
34
|
-
|
|
35
|
-
```
|
|
36
|
-
Statusline Hook (gsd-statusline.js)
|
|
37
|
-
| writes
|
|
38
|
-
v
|
|
39
|
-
/tmp/claude-ctx-{session_id}.json
|
|
40
|
-
^ reads
|
|
41
|
-
|
|
|
42
|
-
Context Monitor (gsd-context-monitor.js, PostToolUse)
|
|
43
|
-
| injects
|
|
44
|
-
v
|
|
45
|
-
additionalContext -> Agent sees warning
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
The bridge file is a simple JSON object:
|
|
49
|
-
|
|
50
|
-
```json
|
|
51
|
-
{
|
|
52
|
-
"session_id": "abc123",
|
|
53
|
-
"remaining_percentage": 28.5,
|
|
54
|
-
"used_pct": 71,
|
|
55
|
-
"timestamp": 1708200000
|
|
56
|
-
}
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
## Integration with GSDD
|
|
60
|
-
|
|
61
|
-
GSDD's `gsdd-pause` workflow saves execution state to `.planning/.continue-here.md`. The WARNING message suggests using it. The CRITICAL message instructs immediate state save.
|
|
62
|
-
|
|
63
|
-
## Setup
|
|
64
|
-
|
|
65
|
-
Register both hooks manually in your Claude Code settings:
|
|
66
|
-
|
|
67
|
-
- **Statusline** (writes bridge file): Registered as `statusLine` in settings.json
|
|
68
|
-
- **Context Monitor** (reads bridge file): Registered as `PostToolUse` hook in settings.json
|
|
69
|
-
|
|
70
|
-
Manual registration in `~/.claude/settings.json`:
|
|
71
|
-
|
|
72
|
-
```json
|
|
73
|
-
{
|
|
74
|
-
"statusLine": {
|
|
75
|
-
"type": "command",
|
|
76
|
-
"command": "node ~/.claude/hooks/gsd-statusline.js"
|
|
77
|
-
},
|
|
78
|
-
"hooks": {
|
|
79
|
-
"PostToolUse": [
|
|
80
|
-
{
|
|
81
|
-
"hooks": [
|
|
82
|
-
{
|
|
83
|
-
"type": "command",
|
|
84
|
-
"command": "node ~/.claude/hooks/gsd-context-monitor.js"
|
|
85
|
-
}
|
|
86
|
-
]
|
|
87
|
-
}
|
|
88
|
-
]
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
## Safety
|
|
94
|
-
|
|
95
|
-
- The hook wraps everything in try/catch and exits silently on error
|
|
96
|
-
- It never blocks tool execution — a broken monitor should not break the agent's workflow
|
|
97
|
-
- Stale metrics (older than 60s) are ignored
|
|
98
|
-
- Missing bridge files are handled gracefully (subagents, fresh sessions)
|
|
1
|
+
> **Claude Code only.** This feature uses Claude Code's `statusLine` and `PostToolUse` hook APIs. Other platforms do not support this hook mechanism.
|
|
2
|
+
|
|
3
|
+
# Context Window Monitor
|
|
4
|
+
|
|
5
|
+
A PostToolUse hook that warns the agent when context window usage is high.
|
|
6
|
+
|
|
7
|
+
## Problem
|
|
8
|
+
|
|
9
|
+
The statusline shows context usage to the **user**, but the **agent** has no awareness of context limits. When context runs low, the agent continues working until it hits the wall — potentially mid-task with no state saved.
|
|
10
|
+
|
|
11
|
+
## How It Works
|
|
12
|
+
|
|
13
|
+
1. The statusline hook writes context metrics to `/tmp/claude-ctx-{session_id}.json`
|
|
14
|
+
2. After each tool use, the context monitor reads these metrics
|
|
15
|
+
3. When remaining context drops below thresholds, it injects a warning as `additionalContext`
|
|
16
|
+
4. The agent receives the warning in its conversation and can act accordingly
|
|
17
|
+
|
|
18
|
+
## Thresholds
|
|
19
|
+
|
|
20
|
+
| Level | Remaining | Agent Behavior |
|
|
21
|
+
|-------|-----------|----------------|
|
|
22
|
+
| Normal | > 35% | No warning |
|
|
23
|
+
| WARNING | <= 35% | Wrap up current task, avoid starting new complex work |
|
|
24
|
+
| CRITICAL | <= 25% | Stop immediately, save state (`gsdd-pause`) |
|
|
25
|
+
|
|
26
|
+
## Debounce
|
|
27
|
+
|
|
28
|
+
To avoid spamming the agent with repeated warnings:
|
|
29
|
+
- First warning always fires immediately
|
|
30
|
+
- Subsequent warnings require 5 tool uses between them
|
|
31
|
+
- Severity escalation (WARNING -> CRITICAL) bypasses debounce
|
|
32
|
+
|
|
33
|
+
## Architecture
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
Statusline Hook (gsd-statusline.js)
|
|
37
|
+
| writes
|
|
38
|
+
v
|
|
39
|
+
/tmp/claude-ctx-{session_id}.json
|
|
40
|
+
^ reads
|
|
41
|
+
|
|
|
42
|
+
Context Monitor (gsd-context-monitor.js, PostToolUse)
|
|
43
|
+
| injects
|
|
44
|
+
v
|
|
45
|
+
additionalContext -> Agent sees warning
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
The bridge file is a simple JSON object:
|
|
49
|
+
|
|
50
|
+
```json
|
|
51
|
+
{
|
|
52
|
+
"session_id": "abc123",
|
|
53
|
+
"remaining_percentage": 28.5,
|
|
54
|
+
"used_pct": 71,
|
|
55
|
+
"timestamp": 1708200000
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Integration with GSDD
|
|
60
|
+
|
|
61
|
+
GSDD's `gsdd-pause` workflow saves execution state to `.planning/.continue-here.md`. The WARNING message suggests using it. The CRITICAL message instructs immediate state save.
|
|
62
|
+
|
|
63
|
+
## Setup
|
|
64
|
+
|
|
65
|
+
Register both hooks manually in your Claude Code settings:
|
|
66
|
+
|
|
67
|
+
- **Statusline** (writes bridge file): Registered as `statusLine` in settings.json
|
|
68
|
+
- **Context Monitor** (reads bridge file): Registered as `PostToolUse` hook in settings.json
|
|
69
|
+
|
|
70
|
+
Manual registration in `~/.claude/settings.json`:
|
|
71
|
+
|
|
72
|
+
```json
|
|
73
|
+
{
|
|
74
|
+
"statusLine": {
|
|
75
|
+
"type": "command",
|
|
76
|
+
"command": "node ~/.claude/hooks/gsd-statusline.js"
|
|
77
|
+
},
|
|
78
|
+
"hooks": {
|
|
79
|
+
"PostToolUse": [
|
|
80
|
+
{
|
|
81
|
+
"hooks": [
|
|
82
|
+
{
|
|
83
|
+
"type": "command",
|
|
84
|
+
"command": "node ~/.claude/hooks/gsd-context-monitor.js"
|
|
85
|
+
}
|
|
86
|
+
]
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Safety
|
|
94
|
+
|
|
95
|
+
- The hook wraps everything in try/catch and exits silently on error
|
|
96
|
+
- It never blocks tool execution — a broken monitor should not break the agent's workflow
|
|
97
|
+
- Stale metrics (older than 60s) are ignored
|
|
98
|
+
- Missing bridge files are handled gracefully (subagents, fresh sessions)
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
# Consumer Node CLI Proof Pack
|
|
2
|
-
|
|
3
|
-
This tracked proof pack is the public export of the Phase 22 release-floor brownfield run. It preserves the smallest artifact chain a reader needs to inspect the real consumer story without opening local-only planning state.
|
|
4
|
-
|
|
5
|
-
## What is in this pack
|
|
6
|
-
|
|
7
|
-
- `brief.md` — the original project brief
|
|
8
|
-
- `SPEC.md` — the consumer spec created from that brief
|
|
9
|
-
- `ROADMAP.md` — the single-phase roadmap used for the proof run
|
|
10
|
-
- `phases/01-foundation/01-01-PLAN.md` — the execution plan
|
|
11
|
-
- `phases/01-foundation/01-01-SUMMARY.md` — the execution summary
|
|
12
|
-
- `phases/01-foundation/01-VERIFICATION.md` — the verification record that captured the miss and the fix
|
|
13
|
-
|
|
14
|
-
## Release-floor story
|
|
15
|
-
|
|
16
|
-
The proof pack shows one full release-floor loop:
|
|
17
|
-
|
|
18
|
-
1. `gsdd init` created a real consumer workspace with portable skills and Codex checker support.
|
|
19
|
-
2. The brief required both the default greeting and the `--name Ada` greeting path.
|
|
20
|
-
3. The first implementation shipped `Hello, world!` for both commands, so verification failed for the named greeting.
|
|
21
|
-
4. The implementation and tests were corrected, then verification passed with `Hello, Ada!`.
|
|
22
|
-
|
|
23
|
-
## Key proof strings
|
|
24
|
-
|
|
25
|
-
- `node index.js` -> `Hello, world!`
|
|
26
|
-
- `node index.js --name Ada` -> `Hello, Ada!`
|
|
27
|
-
- `--name Ada` appears in both the brief and the phase artifacts
|
|
28
|
-
|
|
29
|
-
## Provenance and scope
|
|
30
|
-
|
|
31
|
-
- Exported from the Phase 22 launch-proof consumer run.
|
|
32
|
-
- This is the tracked reader-facing release-floor proof surface.
|
|
33
|
-
- The local `.planning/live-proof/consumer-node-cli` tree remains evidence-only source material and is intentionally not the public entry surface.
|
|
34
|
-
|
|
35
|
-
## Why this pack exists
|
|
36
|
-
|
|
37
|
-
Public proof should be inspectable from tracked docs. This pack keeps the concrete brownfield evidence in-repo while letting the local live-proof workspace stay an implementation input instead of the public citation target.
|
|
1
|
+
# Consumer Node CLI Proof Pack
|
|
2
|
+
|
|
3
|
+
This tracked proof pack is the public export of the Phase 22 release-floor brownfield run. It preserves the smallest artifact chain a reader needs to inspect the real consumer story without opening local-only planning state.
|
|
4
|
+
|
|
5
|
+
## What is in this pack
|
|
6
|
+
|
|
7
|
+
- `brief.md` — the original project brief
|
|
8
|
+
- `SPEC.md` — the consumer spec created from that brief
|
|
9
|
+
- `ROADMAP.md` — the single-phase roadmap used for the proof run
|
|
10
|
+
- `phases/01-foundation/01-01-PLAN.md` — the execution plan
|
|
11
|
+
- `phases/01-foundation/01-01-SUMMARY.md` — the execution summary
|
|
12
|
+
- `phases/01-foundation/01-VERIFICATION.md` — the verification record that captured the miss and the fix
|
|
13
|
+
|
|
14
|
+
## Release-floor story
|
|
15
|
+
|
|
16
|
+
The proof pack shows one full release-floor loop:
|
|
17
|
+
|
|
18
|
+
1. `gsdd init` created a real consumer workspace with portable skills and Codex checker support.
|
|
19
|
+
2. The brief required both the default greeting and the `--name Ada` greeting path.
|
|
20
|
+
3. The first implementation shipped `Hello, world!` for both commands, so verification failed for the named greeting.
|
|
21
|
+
4. The implementation and tests were corrected, then verification passed with `Hello, Ada!`.
|
|
22
|
+
|
|
23
|
+
## Key proof strings
|
|
24
|
+
|
|
25
|
+
- `node index.js` -> `Hello, world!`
|
|
26
|
+
- `node index.js --name Ada` -> `Hello, Ada!`
|
|
27
|
+
- `--name Ada` appears in both the brief and the phase artifacts
|
|
28
|
+
|
|
29
|
+
## Provenance and scope
|
|
30
|
+
|
|
31
|
+
- Exported from the Phase 22 launch-proof consumer run.
|
|
32
|
+
- This is the tracked reader-facing release-floor proof surface.
|
|
33
|
+
- The local `.planning/live-proof/consumer-node-cli` tree remains evidence-only source material and is intentionally not the public entry surface.
|
|
34
|
+
|
|
35
|
+
## Why this pack exists
|
|
36
|
+
|
|
37
|
+
Public proof should be inspectable from tracked docs. This pack keeps the concrete brownfield evidence in-repo while letting the local live-proof workspace stay an implementation input instead of the public citation target.
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
# Roadmap
|
|
2
|
-
|
|
3
|
-
- [x] **Phase 1: Foundation** - ship a runnable greeting CLI with one fast test command
|
|
4
|
-
|
|
5
|
-
### Phase 1: Foundation
|
|
6
|
-
**Goal:** Create a runnable `hello-proof` CLI that supports the default greeting, a `--name` override, and one immediate automated test command.
|
|
7
|
-
**Success Criteria:**
|
|
8
|
-
- `node index.js` prints `Hello, world!`
|
|
9
|
-
- `node index.js --name Ada` prints `Hello, Ada!`
|
|
10
|
-
- `npm test` passes in a fresh clone
|
|
11
|
-
|
|
12
|
-
### Current Phase
|
|
13
|
-
|
|
14
|
-
Phase 1 is the active launch-proof phase.
|
|
1
|
+
# Roadmap
|
|
2
|
+
|
|
3
|
+
- [x] **Phase 1: Foundation** - ship a runnable greeting CLI with one fast test command
|
|
4
|
+
|
|
5
|
+
### Phase 1: Foundation
|
|
6
|
+
**Goal:** Create a runnable `hello-proof` CLI that supports the default greeting, a `--name` override, and one immediate automated test command.
|
|
7
|
+
**Success Criteria:**
|
|
8
|
+
- `node index.js` prints `Hello, world!`
|
|
9
|
+
- `node index.js --name Ada` prints `Hello, Ada!`
|
|
10
|
+
- `npm test` passes in a fresh clone
|
|
11
|
+
|
|
12
|
+
### Current Phase
|
|
13
|
+
|
|
14
|
+
Phase 1 is the active launch-proof phase.
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
# Hello Proof Spec
|
|
2
|
-
|
|
3
|
-
## Product
|
|
4
|
-
|
|
5
|
-
`hello-proof` is a tiny framework-free Node CLI used to prove Workspine's launch flow in a fresh consumer repo.
|
|
6
|
-
|
|
7
|
-
## Must-Have Requirements
|
|
8
|
-
|
|
9
|
-
- `HP-01`: Running `node index.js` prints `Hello, world!`
|
|
10
|
-
- `HP-02`: Running `node index.js --name Ada` prints `Hello, Ada!`
|
|
11
|
-
- `HP-03`: A stranger can run one automated test command immediately after setup
|
|
12
|
-
|
|
13
|
-
## Constraints
|
|
14
|
-
|
|
15
|
-
- Keep the project intentionally small
|
|
16
|
-
- Use plain Node.js without a framework
|
|
17
|
-
- Document the run and test commands in `README.md`
|
|
1
|
+
# Hello Proof Spec
|
|
2
|
+
|
|
3
|
+
## Product
|
|
4
|
+
|
|
5
|
+
`hello-proof` is a tiny framework-free Node CLI used to prove Workspine's launch flow in a fresh consumer repo.
|
|
6
|
+
|
|
7
|
+
## Must-Have Requirements
|
|
8
|
+
|
|
9
|
+
- `HP-01`: Running `node index.js` prints `Hello, world!`
|
|
10
|
+
- `HP-02`: Running `node index.js --name Ada` prints `Hello, Ada!`
|
|
11
|
+
- `HP-03`: A stranger can run one automated test command immediately after setup
|
|
12
|
+
|
|
13
|
+
## Constraints
|
|
14
|
+
|
|
15
|
+
- Keep the project intentionally small
|
|
16
|
+
- Use plain Node.js without a framework
|
|
17
|
+
- Document the run and test commands in `README.md`
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
# Hello Proof
|
|
2
|
-
|
|
3
|
-
Build a tiny Node CLI called `hello-proof`.
|
|
4
|
-
|
|
5
|
-
Requirements:
|
|
6
|
-
- Running `node index.js` prints `Hello, world!`
|
|
7
|
-
- Running `node index.js --name Ada` prints `Hello, Ada!`
|
|
8
|
-
- Include one automated test command that a stranger can run immediately
|
|
9
|
-
- Keep the project intentionally small and framework-free
|
|
1
|
+
# Hello Proof
|
|
2
|
+
|
|
3
|
+
Build a tiny Node CLI called `hello-proof`.
|
|
4
|
+
|
|
5
|
+
Requirements:
|
|
6
|
+
- Running `node index.js` prints `Hello, world!`
|
|
7
|
+
- Running `node index.js --name Ada` prints `Hello, Ada!`
|
|
8
|
+
- Include one automated test command that a stranger can run immediately
|
|
9
|
+
- Keep the project intentionally small and framework-free
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
---
|
|
2
|
-
phase: 01-foundation
|
|
3
|
-
plan: 01
|
|
4
|
-
runtime: codex-cli
|
|
5
|
-
assurance: self_checked
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Phase 1 Plan
|
|
9
|
-
|
|
10
|
-
## Objective
|
|
11
|
-
|
|
12
|
-
Ship the first runnable version of `hello-proof` and document how to run and test it.
|
|
13
|
-
|
|
14
|
-
## Tasks
|
|
15
|
-
|
|
16
|
-
<task id="01-01" type="code">
|
|
17
|
-
<files>
|
|
18
|
-
- CREATE: package.json
|
|
19
|
-
- CREATE: index.js
|
|
20
|
-
- CREATE: tests/cli.test.cjs
|
|
21
|
-
- CREATE: README.md
|
|
22
|
-
</files>
|
|
23
|
-
<action>
|
|
24
|
-
Create a minimal Node CLI with a default greeting, add one automated test command, and document how to run it.
|
|
25
|
-
</action>
|
|
26
|
-
<verify>
|
|
27
|
-
- `node index.js`
|
|
28
|
-
- `node index.js --name Ada`
|
|
29
|
-
- `npm test`
|
|
30
|
-
</verify>
|
|
31
|
-
<done>
|
|
32
|
-
The CLI runs locally, the test command is wired, and README explains the run/test path.
|
|
33
|
-
</done>
|
|
34
|
-
</task>
|
|
1
|
+
---
|
|
2
|
+
phase: 01-foundation
|
|
3
|
+
plan: 01
|
|
4
|
+
runtime: codex-cli
|
|
5
|
+
assurance: self_checked
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Phase 1 Plan
|
|
9
|
+
|
|
10
|
+
## Objective
|
|
11
|
+
|
|
12
|
+
Ship the first runnable version of `hello-proof` and document how to run and test it.
|
|
13
|
+
|
|
14
|
+
## Tasks
|
|
15
|
+
|
|
16
|
+
<task id="01-01" type="code">
|
|
17
|
+
<files>
|
|
18
|
+
- CREATE: package.json
|
|
19
|
+
- CREATE: index.js
|
|
20
|
+
- CREATE: tests/cli.test.cjs
|
|
21
|
+
- CREATE: README.md
|
|
22
|
+
</files>
|
|
23
|
+
<action>
|
|
24
|
+
Create a minimal Node CLI with a default greeting, add one automated test command, and document how to run it.
|
|
25
|
+
</action>
|
|
26
|
+
<verify>
|
|
27
|
+
- `node index.js`
|
|
28
|
+
- `node index.js --name Ada`
|
|
29
|
+
- `npm test`
|
|
30
|
+
</verify>
|
|
31
|
+
<done>
|
|
32
|
+
The CLI runs locally, the test command is wired, and README explains the run/test path.
|
|
33
|
+
</done>
|
|
34
|
+
</task>
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
---
|
|
2
|
-
phase: 01-foundation
|
|
3
|
-
plan: 01
|
|
4
|
-
runtime: codex-cli
|
|
5
|
-
assurance: self_checked
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Phase 1 Summary
|
|
9
|
-
|
|
10
|
-
Created the first runnable `hello-proof` CLI, added a fast Node test command, documented how to run and test the project, and completed the missing `--name` greeting path after verification caught it.
|
|
1
|
+
---
|
|
2
|
+
phase: 01-foundation
|
|
3
|
+
plan: 01
|
|
4
|
+
runtime: codex-cli
|
|
5
|
+
assurance: self_checked
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Phase 1 Summary
|
|
9
|
+
|
|
10
|
+
Created the first runnable `hello-proof` CLI, added a fast Node test command, documented how to run and test the project, and completed the missing `--name` greeting path after verification caught it.
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
---
|
|
2
|
-
phase: 01-foundation
|
|
3
|
-
runtime: codex-cli
|
|
4
|
-
assurance: self_checked
|
|
5
|
-
status: passed
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Phase 1 Verification
|
|
9
|
-
|
|
10
|
-
## Initial Verification
|
|
11
|
-
|
|
12
|
-
- `node index.js` -> `Hello, world!`
|
|
13
|
-
- `node index.js --name Ada` -> `Hello, world!`
|
|
14
|
-
- `npm test` -> passed, but only covered the default greeting
|
|
15
|
-
|
|
16
|
-
Result: failed. The phase goal required the named greeting path, and the implementation ignored the provided `--name` value.
|
|
17
|
-
|
|
18
|
-
## Fix Applied
|
|
19
|
-
|
|
20
|
-
- Updated `index.js` to read the value after `--name`
|
|
21
|
-
- Extended `tests/cli.test.cjs` to assert the named greeting path
|
|
22
|
-
- Updated the phase summary to reflect the verification-driven fix
|
|
23
|
-
|
|
24
|
-
## Re-Verification
|
|
25
|
-
|
|
26
|
-
- `node index.js` -> `Hello, world!`
|
|
27
|
-
- `node index.js --name Ada` -> `Hello, Ada!`
|
|
28
|
-
- `npm test` -> passed with both greeting paths covered
|
|
29
|
-
|
|
30
|
-
Result: passed. The phase now satisfies all three roadmap success criteria.
|
|
1
|
+
---
|
|
2
|
+
phase: 01-foundation
|
|
3
|
+
runtime: codex-cli
|
|
4
|
+
assurance: self_checked
|
|
5
|
+
status: passed
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Phase 1 Verification
|
|
9
|
+
|
|
10
|
+
## Initial Verification
|
|
11
|
+
|
|
12
|
+
- `node index.js` -> `Hello, world!`
|
|
13
|
+
- `node index.js --name Ada` -> `Hello, world!`
|
|
14
|
+
- `npm test` -> passed, but only covered the default greeting
|
|
15
|
+
|
|
16
|
+
Result: failed. The phase goal required the named greeting path, and the implementation ignored the provided `--name` value.
|
|
17
|
+
|
|
18
|
+
## Fix Applied
|
|
19
|
+
|
|
20
|
+
- Updated `index.js` to read the value after `--name`
|
|
21
|
+
- Extended `tests/cli.test.cjs` to assert the named greeting path
|
|
22
|
+
- Updated the phase summary to reflect the verification-driven fix
|
|
23
|
+
|
|
24
|
+
## Re-Verification
|
|
25
|
+
|
|
26
|
+
- `node index.js` -> `Hello, world!`
|
|
27
|
+
- `node index.js --name Ada` -> `Hello, Ada!`
|
|
28
|
+
- `npm test` -> passed with both greeting paths covered
|
|
29
|
+
|
|
30
|
+
Result: passed. The phase now satisfies all three roadmap success criteria.
|