gsdd-cli 0.19.2 → 0.20.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 +1 -0
- package/agents/DISTILLATION.md +16 -4
- package/agents/README.md +12 -0
- package/agents/approach-explorer.md +4 -4
- package/agents/executor.md +3 -0
- package/agents/integration-checker.md +2 -2
- package/agents/mapper.md +2 -2
- package/agents/planner.md +13 -1
- package/agents/researcher.md +2 -2
- package/agents/roadmapper.md +3 -1
- package/agents/synthesizer.md +2 -2
- package/agents/verifier.md +2 -0
- package/bin/gsdd.mjs +4 -5
- package/bin/lib/health.mjs +21 -3
- package/bin/lib/init-runtime.mjs +3 -0
- package/bin/lib/lifecycle-state.mjs +2 -2
- package/bin/lib/rendering.mjs +5 -0
- package/bin/lib/templates.mjs +1 -1
- package/bin/lib/ui-proof.mjs +467 -0
- package/distilled/DESIGN.md +88 -7
- package/distilled/EVIDENCE-INDEX.md +14 -0
- package/distilled/templates/delegates/approach-explorer.md +1 -1
- package/distilled/templates/delegates/mapper-arch.md +1 -1
- package/distilled/templates/delegates/mapper-concerns.md +1 -1
- package/distilled/templates/delegates/mapper-quality.md +1 -1
- package/distilled/templates/delegates/mapper-tech.md +1 -1
- package/distilled/templates/delegates/plan-checker.md +4 -2
- package/distilled/templates/delegates/researcher-architecture.md +1 -1
- package/distilled/templates/delegates/researcher-features.md +1 -1
- package/distilled/templates/delegates/researcher-pitfalls.md +1 -1
- package/distilled/templates/delegates/researcher-stack.md +1 -1
- package/distilled/templates/delegates/researcher-synthesizer.md +2 -2
- package/distilled/templates/ui-proof.md +174 -0
- package/distilled/workflows/audit-milestone.md +2 -1
- package/distilled/workflows/execute.md +7 -8
- package/distilled/workflows/map-codebase.md +4 -4
- package/distilled/workflows/new-project.md +8 -8
- package/distilled/workflows/plan.md +12 -11
- package/distilled/workflows/quick.md +6 -0
- package/distilled/workflows/verify.md +6 -4
- package/package.json +1 -1
|
@@ -22,5 +22,5 @@ Include:
|
|
|
22
22
|
</quality_gate>
|
|
23
23
|
|
|
24
24
|
Write to: `.planning/codebase/ARCHITECTURE.md`
|
|
25
|
-
Return:
|
|
25
|
+
Return: Routing summary to the Orchestrator (100-200 tokens) when done.
|
|
26
26
|
Guardrails: Max Agent Hops = 3. No static directory dumps.
|
|
@@ -23,5 +23,5 @@ Include:
|
|
|
23
23
|
</quality_gate>
|
|
24
24
|
|
|
25
25
|
Write to: `.planning/codebase/CONCERNS.md`
|
|
26
|
-
Return:
|
|
26
|
+
Return: Routing summary to the Orchestrator (100-200 tokens) when done. If secrets found, STOP and report immediately.
|
|
27
27
|
Guardrails: Max Agent Hops = 3. Hard stop on secrets.
|
|
@@ -24,5 +24,5 @@ Include:
|
|
|
24
24
|
</quality_gate>
|
|
25
25
|
|
|
26
26
|
Write to: `.planning/codebase/CONVENTIONS.md`
|
|
27
|
-
Return:
|
|
27
|
+
Return: Routing summary to the Orchestrator (100-200 tokens) when done.
|
|
28
28
|
Guardrails: Max Agent Hops = 3. Rules not inventories.
|
|
@@ -21,5 +21,5 @@ Include:
|
|
|
21
21
|
</quality_gate>
|
|
22
22
|
|
|
23
23
|
Write to: `.planning/codebase/STACK.md`
|
|
24
|
-
Return:
|
|
24
|
+
Return: Routing summary to the Orchestrator (100-200 tokens) when done.
|
|
25
25
|
Guardrails: Max Agent Hops = 3. No static dependency dumps.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
**Role contract:** Read `.planning/templates/roles/planner.md` before starting. Reuse its planning vocabulary and quality standards, but this wrapper overrides your objective: you are reviewing plans, not authoring them.
|
|
2
2
|
|
|
3
|
-
You are the fresh-context plan checker for `/gsdd-plan`.
|
|
3
|
+
You are the fresh-context plan checker for `/gsdd-plan`. This is a read-only review delegate: return the JSON finding summary only, and do not edit plan artifacts yourself.
|
|
4
4
|
|
|
5
5
|
Read only the explicit inputs provided by the orchestrator:
|
|
6
6
|
- target phase goal and requirement IDs
|
|
@@ -34,6 +34,8 @@ Verify these dimensions:
|
|
|
34
34
|
- `anti_regression_capture`: known prior failures, compatibility risks, and behavior that must not regress are represented in tasks or verification.
|
|
35
35
|
- `escalation_integrity`: tasks include checkpoints or escalation when evidence, permissions, user decisions, or risky ambiguity are required.
|
|
36
36
|
- `closure_honesty`: the plan's done criteria and evidence limits support only claims that execution can actually prove.
|
|
37
|
+
- `closure_honesty`: for UI proof, reject agent-only `looks good` closure, artifact-count proof, unsupported evidence kinds, and human acceptance that converts missing/mismatched non-human evidence into `satisfied` proof. Waiver, deferment, proof debt, or narrowed-claim language is acceptable only when the stronger UI claim is not treated as proven.
|
|
38
|
+
- `closure_honesty`: for UI proof privacy, require artifact `visibility`, `retention`, `sensitivity`, and `safe_to_publish`, require `gsdd ui-proof validate` or `gsdd health` when bundle metadata exists, and reject public/tracked/delivery/publication proof claims backed by local-only or `safe_to_publish: false` artifacts.
|
|
37
39
|
- `high_leverage_review`: high-leverage surfaces have a second-pass review or equivalent contradiction/staleness check before completion.
|
|
38
40
|
- `approach_alignment`: when APPROACH.md is provided, verify that plan tasks implement the chosen approaches from the user's decisions. Check:
|
|
39
41
|
- **Alignment proof valid?** When `workflow.discuss` is `true`, APPROACH.md must record `alignment_status: user_confirmed` or `alignment_status: approved_skip`. Missing alignment proof, unknown status, or agent-discretion-only proof -> `blocker` with `fix_hint` telling the planner to revise APPROACH.md through real user alignment or an explicit user-approved skip.
|
|
@@ -45,7 +47,7 @@ Verify these dimensions:
|
|
|
45
47
|
- **Deferred excluded?** Deferred ideas from APPROACH.md must not appear in plan tasks -> `blocker` if found.
|
|
46
48
|
- If `workflow.discuss` is `true` in the project config and no APPROACH.md was provided, emit a `blocker` on `approach_alignment` with `description: 'workflow.discuss is true but no APPROACH.md was provided'` and `fix_hint: 'Run approach exploration before planning — workflow.discuss=true requires an approved APPROACH.md before a plan can be emitted.'` If `workflow.discuss` is `false` or the key is absent and no APPROACH.md was provided, skip this dimension entirely.
|
|
47
49
|
|
|
48
|
-
Return JSON only as a single object with this shape:
|
|
50
|
+
Return JSON only as a single finding summary object with this shape:
|
|
49
51
|
|
|
50
52
|
```json
|
|
51
53
|
{
|
|
@@ -26,5 +26,5 @@ Your output informs phase structure in ROADMAP.md. Include:
|
|
|
26
26
|
|
|
27
27
|
Write to: `.planning/research/ARCHITECTURE.md`
|
|
28
28
|
Use template: `.planning/templates/research/architecture.md` (if it exists)
|
|
29
|
-
Return:
|
|
29
|
+
Return: Human-read structured summary to the Orchestrator (300-500 tokens) when done.
|
|
30
30
|
Guardrails: Max Agent Hops = 3.
|
|
@@ -26,5 +26,5 @@ Your output feeds SPEC requirements. Categorize explicitly:
|
|
|
26
26
|
|
|
27
27
|
Write to: `.planning/research/FEATURES.md`
|
|
28
28
|
Use template: `.planning/templates/research/features.md` (if it exists)
|
|
29
|
-
Return:
|
|
29
|
+
Return: Human-read structured summary to the Orchestrator (300-500 tokens) when done.
|
|
30
30
|
Guardrails: Max Agent Hops = 3.
|
|
@@ -26,5 +26,5 @@ Your output prevents mistakes in roadmap and planning. For each pitfall:
|
|
|
26
26
|
|
|
27
27
|
Write to: `.planning/research/PITFALLS.md`
|
|
28
28
|
Use template: `.planning/templates/research/pitfalls.md` (if it exists)
|
|
29
|
-
Return:
|
|
29
|
+
Return: Human-read structured summary to the Orchestrator (300-500 tokens) when done.
|
|
30
30
|
Guardrails: Max Agent Hops = 3.
|
|
@@ -26,5 +26,5 @@ Your output feeds the roadmapper. Be prescriptive:
|
|
|
26
26
|
|
|
27
27
|
Write to: `.planning/research/STACK.md`
|
|
28
28
|
Use template: `.planning/templates/research/stack.md` (if it exists)
|
|
29
|
-
Return:
|
|
29
|
+
Return: Human-read structured summary to the Orchestrator (300-500 tokens) when done.
|
|
30
30
|
Guardrails: Max Agent Hops = 3.
|
|
@@ -11,7 +11,7 @@ Read these files (all should exist):
|
|
|
11
11
|
Cross-reference them. Surface conflicts and dependencies between findings. Do NOT do new research — synthesize what exists.
|
|
12
12
|
|
|
13
13
|
SUMMARY.md MUST include:
|
|
14
|
-
1. **Key Findings** —
|
|
14
|
+
1. **Key Findings** — the highest-signal findings across all 4 dimensions
|
|
15
15
|
2. **Implications for Roadmap** — suggested phase groupings derived from architecture build order + pitfall avoidance (this is the critical handoff to the roadmapper)
|
|
16
16
|
3. **Research Flags** — which phases need deeper research vs standard patterns
|
|
17
17
|
4. **Confidence Assessment** — per domain: stack / features / architecture / pitfalls
|
|
@@ -27,5 +27,5 @@ Use template: `.planning/templates/research/summary.md` (if it exists)
|
|
|
27
27
|
</quality_gate>
|
|
28
28
|
|
|
29
29
|
Write to: `.planning/research/SUMMARY.md`
|
|
30
|
-
Return:
|
|
30
|
+
Return: Agent-mediated structured summary to the Orchestrator (500-800 tokens) when done.
|
|
31
31
|
Guardrails: Max Agent Hops = 2. Do not do new research — synthesize only.
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# UI Proof Bundle Template
|
|
2
|
+
|
|
3
|
+
Use this template when work affects rendered UI or when a plan defines `ui_proof_slots`. Keep the bundle compact, claim-specific, and attached to the relevant phase, quick task, or brownfield change.
|
|
4
|
+
|
|
5
|
+
UI proof uses the existing closure evidence kinds only: `code`, `test`, `runtime`, `delivery`, and `human`. Screenshots, traces, videos, reports, accessibility scans, Gherkin, visual diffs, and manual notes are artifact types or activities that map onto those evidence kinds. They are not new evidence kinds.
|
|
6
|
+
|
|
7
|
+
## Planned Proof Slots
|
|
8
|
+
|
|
9
|
+
Every UI-sensitive plan needs either at least one slot under `ui_proof_slots` or an explicit `no_ui_proof_rationale` explaining why no rendered UI proof is required.
|
|
10
|
+
|
|
11
|
+
```yaml
|
|
12
|
+
ui_proof_slots:
|
|
13
|
+
- slot_id: ui-01
|
|
14
|
+
requirement_id: REQ-01
|
|
15
|
+
claim: "User can complete the changed flow without a broken rendered UI."
|
|
16
|
+
route_state: "/example route, role, data state, and UI state to inspect"
|
|
17
|
+
required_evidence_kinds: [test, runtime]
|
|
18
|
+
optional_evidence_kinds: [human]
|
|
19
|
+
minimum_observations:
|
|
20
|
+
- "Changed control is visible and usable in the stated state."
|
|
21
|
+
- "Expected interaction completes without console/runtime error."
|
|
22
|
+
environment:
|
|
23
|
+
app_url: "http://localhost:3000"
|
|
24
|
+
data_state: "synthetic or seeded data"
|
|
25
|
+
viewport:
|
|
26
|
+
width: 1280
|
|
27
|
+
height: 720
|
|
28
|
+
notes: "Use project default unless responsive behavior is part of the claim."
|
|
29
|
+
manual_acceptance_required: false
|
|
30
|
+
claim_limit: "Does not prove cross-browser layout, full accessibility conformance, production delivery, or unrelated UI states."
|
|
31
|
+
no_ui_proof_rationale: null
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Slot rules:
|
|
35
|
+
- Keep each slot tied to one exact UI claim.
|
|
36
|
+
- Use the lightest proof that can catch a botched rendered experience for that claim.
|
|
37
|
+
- Source annotations, AST/cAST findings, semantic search hits, comments, and Semble-like retrieval may help discover proof obligations. They are discovery hints only; they do not satisfy proof slots.
|
|
38
|
+
- Do not add Playwright, Cypress, Storybook, Cucumber, CI, browser MCP, or visual-regression tooling by default.
|
|
39
|
+
- Human approval is required for visual taste, accessibility judgment, baseline acceptance, subjective polish/layout quality, and privacy publication decisions.
|
|
40
|
+
- Human approval does not replace required non-human evidence when the slot requires `code`, `test`, `runtime`, or `delivery` evidence.
|
|
41
|
+
|
|
42
|
+
## Observed Proof Bundle
|
|
43
|
+
|
|
44
|
+
Create or update this bundle during execution or verification when planned UI proof slots exist. JSON is the canonical machine-readable proof bundle format. Markdown proof files must include fenced JSON for deterministic validation.
|
|
45
|
+
|
|
46
|
+
```json
|
|
47
|
+
{
|
|
48
|
+
"proof_bundle_version": 1,
|
|
49
|
+
"scope": {
|
|
50
|
+
"work_item": "phase-or-quick-or-brownfield-id",
|
|
51
|
+
"requirement_ids": ["REQ-01"],
|
|
52
|
+
"slot_ids": ["ui-01"],
|
|
53
|
+
"claim": "User can complete the changed flow without a broken rendered UI."
|
|
54
|
+
},
|
|
55
|
+
"route_state": {
|
|
56
|
+
"route": "/example",
|
|
57
|
+
"state": "role, data state, feature flag, loading/error/empty state, or component story"
|
|
58
|
+
},
|
|
59
|
+
"environment": {
|
|
60
|
+
"app_url": "http://localhost:3000",
|
|
61
|
+
"browser": "project default or manual browser",
|
|
62
|
+
"browser_version": "record if known",
|
|
63
|
+
"os": "record if relevant",
|
|
64
|
+
"data_state": "synthetic or seeded data"
|
|
65
|
+
},
|
|
66
|
+
"viewport": {
|
|
67
|
+
"width": 1280,
|
|
68
|
+
"height": 720,
|
|
69
|
+
"device_scale_factor": "record if relevant"
|
|
70
|
+
},
|
|
71
|
+
"evidence_inputs": {
|
|
72
|
+
"kinds": ["test", "runtime"],
|
|
73
|
+
"tools_used": ["manual"]
|
|
74
|
+
},
|
|
75
|
+
"commands_or_manual_steps": [
|
|
76
|
+
{
|
|
77
|
+
"command": "npm run test:e2e -- changed-flow.spec.ts",
|
|
78
|
+
"exit_code": 0,
|
|
79
|
+
"result": "passed",
|
|
80
|
+
"attempts": 1
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"manual_step": "Open /example as synthetic user and complete the changed interaction.",
|
|
84
|
+
"result": "passed"
|
|
85
|
+
}
|
|
86
|
+
],
|
|
87
|
+
"observations": [
|
|
88
|
+
{
|
|
89
|
+
"observation": "Changed control is visible and completes the flow.",
|
|
90
|
+
"claim": "User can complete the changed flow without a broken rendered UI.",
|
|
91
|
+
"route_state": {
|
|
92
|
+
"route": "/example",
|
|
93
|
+
"state": "role, data state, feature flag, loading/error/empty state, or component story"
|
|
94
|
+
},
|
|
95
|
+
"evidence_kind": "runtime",
|
|
96
|
+
"artifact_refs": ["test-results/changed-flow-report/index.html"],
|
|
97
|
+
"privacy": {
|
|
98
|
+
"data_classification": "synthetic",
|
|
99
|
+
"raw_artifacts_safe_to_publish": false,
|
|
100
|
+
"retention": "temporary_review"
|
|
101
|
+
},
|
|
102
|
+
"result": "passed",
|
|
103
|
+
"claim_limit": "Does not prove Safari/WebKit behavior."
|
|
104
|
+
}
|
|
105
|
+
],
|
|
106
|
+
"artifacts": [
|
|
107
|
+
{
|
|
108
|
+
"path": "test-results/changed-flow-report/index.html",
|
|
109
|
+
"type": "report",
|
|
110
|
+
"visibility": "local_only",
|
|
111
|
+
"retention": "temporary_review",
|
|
112
|
+
"sensitivity": "possible",
|
|
113
|
+
"safe_to_publish": false,
|
|
114
|
+
"notes": "Local report only; not public proof."
|
|
115
|
+
}
|
|
116
|
+
],
|
|
117
|
+
"privacy": {
|
|
118
|
+
"data_classification": "synthetic",
|
|
119
|
+
"redactions": [],
|
|
120
|
+
"raw_artifacts_safe_to_publish": false,
|
|
121
|
+
"retention": "Keep metadata bundle; keep raw artifacts only while needed for review or failed proof triage."
|
|
122
|
+
},
|
|
123
|
+
"manual_acceptance": {
|
|
124
|
+
"required": false,
|
|
125
|
+
"reviewer": null,
|
|
126
|
+
"result": "not_applicable"
|
|
127
|
+
},
|
|
128
|
+
"result": {
|
|
129
|
+
"claim_status": "passed",
|
|
130
|
+
"comparison_status_by_slot": {
|
|
131
|
+
"ui-01": "satisfied"
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
"claim_limits": [
|
|
135
|
+
"Does not prove Safari/WebKit behavior.",
|
|
136
|
+
"Does not prove full WCAG conformance.",
|
|
137
|
+
"Does not prove deployed production behavior."
|
|
138
|
+
]
|
|
139
|
+
}
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Bundle rules:
|
|
143
|
+
- Reference raw screenshots, traces, videos, DOM snapshots, reports, accessibility scans, Gherkin, and visual diffs by path or link. Do not store raw binary or sensitive artifacts inline.
|
|
144
|
+
- Each observation must identify the claim, route/state, evidence kind, artifact references behind it, privacy metadata, result, and claim limit it supports.
|
|
145
|
+
- Every observation `artifact_refs` value must match an `artifacts[].path` or `artifacts[].url` value.
|
|
146
|
+
- Artifact count is never proof. Unsupported or weakly linked artifacts are `partial`, `missing`, `waived`, or `deferred`, not `satisfied`.
|
|
147
|
+
- Each artifact must record the locked privacy fields `visibility`, `retention`, `sensitivity`, and `safe_to_publish`.
|
|
148
|
+
- Raw screenshots, traces, videos, DOM snapshots, and reports default to `visibility: local_only` plus `safe_to_publish: false` unless explicitly classified as sanitized and safe to publish.
|
|
149
|
+
- Local-only or `safe_to_publish: false` artifacts can support local review only; they must not back tracked, public, delivery, release, or publication proof claims.
|
|
150
|
+
- Human acceptance may close a narrowed claim only by recording waiver, deferment, or proof debt; it must not upgrade missing or mismatched non-human proof to `satisfied`.
|
|
151
|
+
- Quick-mode UI proof should use deterministic synthetic IDs such as `quick-001` and `quick-001-ui-01` when roadmap requirement IDs do not exist.
|
|
152
|
+
|
|
153
|
+
## Deterministic Validation
|
|
154
|
+
|
|
155
|
+
Use `gsdd ui-proof validate <path>` on JSON proof-bundle metadata or markdown fenced JSON before relying on a bundle for closure; add `--claim <public|publication|tracked|delivery|release>` only when validating that stronger proof use. Required observed-bundle top-level fields are `proof_bundle_version`, `scope`, `route_state`, `environment`, `viewport`, `evidence_inputs`, `commands_or_manual_steps`, `observations`, `artifacts`, `privacy`, `result`, and `claim_limits`. The validator checks required bundle and observation fields, structured command/manual-step entries, fixed evidence kinds, `result.claim_status`, observation `result`, comparison statuses, non-empty claim limits, locked artifact and observation privacy fields, observation-to-artifact references, workspace-relative/http(s) artifact references, and explicit public/tracked/delivery proof claims that rely on local-only, unsafe, unsanitized, or privacy-contradictory artifacts. `claim_status`, observation `result`, and command/manual-step `result` use `passed`, `failed`, `partial`, `waived`, `deferred`, or `not_applicable`. It is metadata-only and does not inspect raw screenshot, trace, video, DOM, or report contents.
|
|
156
|
+
|
|
157
|
+
## Comparison Statuses
|
|
158
|
+
|
|
159
|
+
Use these statuses when comparing planned slots to observed proof:
|
|
160
|
+
|
|
161
|
+
| Status | Meaning | Claim impact |
|
|
162
|
+
| --- | --- | --- |
|
|
163
|
+
| `satisfied` | Required observations and evidence kinds are present, scoped, and inspectable for the exact claim. | Supports the scoped UI claim. |
|
|
164
|
+
| `partial` | Some proof exists, but observations, artifact references, evidence kinds, privacy metadata, or assurance are weaker than planned. | Record a reduced claim or gap. |
|
|
165
|
+
| `missing` | Required proof is absent. | Blocks the UI claim unless explicitly waived or deferred. |
|
|
166
|
+
| `waived` | A human or approved plan waiver accepts the risk. | Does not prove the UI claim. |
|
|
167
|
+
| `deferred` | Proof moved to later work. | Current work must not claim the UI behavior is proven. |
|
|
168
|
+
| `not_applicable` | Accepted rationale says no UI proof is required. | No UI proof gap for that claim. |
|
|
169
|
+
|
|
170
|
+
Proof debt notes should name the slot, claim, route/state, missing or weak linkage, human acceptance basis, narrowed claim limit, and follow-up trigger.
|
|
171
|
+
|
|
172
|
+
## Claim Boundary
|
|
173
|
+
|
|
174
|
+
A UI proof bundle proves only the scoped claim, route/state, environment, viewport, observations, and evidence kinds it records. It does not imply broad visual quality, cross-browser coverage, full accessibility conformance, production delivery, release readiness, or public proof unless those dimensions are explicitly planned, evidenced, and classified safe to publish.
|
|
@@ -110,7 +110,7 @@ With phase context collected, delegate cross-phase integration checking:
|
|
|
110
110
|
|
|
111
111
|
**Task:** Verify cross-phase wiring, API coverage, auth protection, and E2E user flows. Return structured integration report with wiring summary, API coverage, auth protection, E2E flow status, and Requirements Integration Map.
|
|
112
112
|
|
|
113
|
-
**Return:** Structured integration report (wiring, APIs, auth protection, flows, requirements map).
|
|
113
|
+
**Return:** Structured integration report summary (wiring, APIs, auth protection, flows, requirements map). The checker is read-only; the auditor owns the milestone audit artifact.
|
|
114
114
|
</delegate>
|
|
115
115
|
|
|
116
116
|
If the runtime supports spawning a subagent: spawn the integration checker as a separate read-only context for independent verification.
|
|
@@ -126,6 +126,7 @@ Combine:
|
|
|
126
126
|
- Integration checker's report (wiring gaps, auth gaps, broken flows, requirements integration map)
|
|
127
127
|
- Evidence observations by kind (`code`, `test`, `runtime`, `delivery`, `human`) from phase verifications, summaries, integration findings, and delivery metadata
|
|
128
128
|
- Release claim posture observations: selected `release_claim_posture`, unsupported claims, waivers, deferrals, and contradiction checks for public, runtime, delivery, planning-drift, and generated-surface claims
|
|
129
|
+
- UI proof debt from phase/quick proof bundles or verification gaps, preserving the rule that waiver/deferment/human acceptance narrows claims rather than satisfying missing proof
|
|
129
130
|
|
|
130
131
|
## 5. 3-Source Cross-Reference
|
|
131
132
|
|
|
@@ -164,6 +164,11 @@ Before reporting a task complete:
|
|
|
164
164
|
- if an API change is involved, hit the endpoint or targeted integration path
|
|
165
165
|
- A task is not complete because code was written. It is complete when the intended verification path actually passes.
|
|
166
166
|
|
|
167
|
+
### UI Proof Execution
|
|
168
|
+
If the plan defines non-empty `ui_proof_slots`, create or update the observed UI proof bundle before claiming completion; required top-level fields are `proof_bundle_version`, `scope`, `route_state`, `environment`, `viewport`, `evidence_inputs`, `commands_or_manual_steps`, `observations`, `artifacts`, `privacy`, `result`, and `claim_limits`.
|
|
169
|
+
Use existing UI tooling when available and cheap; manual/browser proof is acceptable when it records route/state, steps, observations, artifact references, and claim limits. Do not install Playwright, Cypress, Cucumber, Storybook, browser MCP, CI, or visual-regression tooling by default. Screenshots, traces, videos, reports, accessibility scans, Gherkin, visual diffs, and manual notes map onto existing evidence kinds, not new evidence kinds; reference raw artifacts by path/link instead of storing them inline.
|
|
170
|
+
Each artifact entry must include `visibility`, `retention`, `sensitivity`, and `safe_to_publish`; raw screenshots, traces, videos, DOM snapshots, and reports default to `local_only` and `safe_to_publish: false` unless explicitly sanitized. Use `gsdd ui-proof validate <path>` when bundle metadata exists, adding `--claim <...>` only 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 decisions require human evidence or explicit waiver; artifact count, source comments, AST/cAST findings, semantic search, and Semble-like retrieval are not proof. If evidence does not match the slot claim, route/state, observation, artifact path/manual step, privacy metadata, result, and claim limit, record proof debt, waiver, deferment, or reduced claim language rather than `satisfied` proof.
|
|
171
|
+
|
|
167
172
|
### Git Guidance
|
|
168
173
|
|
|
169
174
|
```bash
|
|
@@ -440,20 +445,14 @@ Execution is done when all of these are true:
|
|
|
440
445
|
</success_criteria>
|
|
441
446
|
|
|
442
447
|
<completion>
|
|
443
|
-
Report
|
|
444
|
-
|
|
448
|
+
Report what was accomplished, then present the next step:
|
|
445
449
|
---
|
|
446
450
|
**Completed:** Plan execution — created `.planning/phases/{phase_dir}/{plan_id}-SUMMARY.md`.
|
|
447
|
-
|
|
448
451
|
**Next step:** Check `.planning/config.json` → `workflow.verifier`:
|
|
449
452
|
- If `true`: run `/gsdd-verify` — verify that the phase goal was achieved
|
|
450
453
|
- If `false` (or key missing): run `/gsdd-progress` — check status and route to the next phase
|
|
451
454
|
|
|
452
|
-
Also available:
|
|
453
|
-
- `/gsdd-plan` — plan the next wave (if more plans remain in this phase)
|
|
454
|
-
- `/gsdd-quick` — handle a sub-hour task outside the phase cycle
|
|
455
|
-
- `/gsdd-pause` — save context for later if stopping work
|
|
456
|
-
|
|
455
|
+
Also available: `/gsdd-plan` for the next wave, `/gsdd-quick` for sub-hour work, or `/gsdd-pause` to save context.
|
|
457
456
|
Consider clearing context before starting the next workflow for best results.
|
|
458
457
|
---
|
|
459
458
|
</completion>
|
|
@@ -102,7 +102,7 @@ Parallel: (use parallelization value from .planning/config.json)
|
|
|
102
102
|
Context: Current working directory. DO NOT share conversation history.
|
|
103
103
|
Instruction: Read `.planning/templates/delegates/mapper-tech.md` for full task instructions. Follow them exactly.
|
|
104
104
|
Output: `.planning/codebase/STACK.md`
|
|
105
|
-
Return:
|
|
105
|
+
Return: Routing summary to Orchestrator (100-200 tokens); full findings stay in the output artifact.
|
|
106
106
|
Guardrails: Max Agent Hops = 3. No static dumps. Never read .env contents.
|
|
107
107
|
</delegate>
|
|
108
108
|
|
|
@@ -112,7 +112,7 @@ Parallel: (use parallelization value from .planning/config.json)
|
|
|
112
112
|
Context: Current working directory. DO NOT share conversation history.
|
|
113
113
|
Instruction: Read `.planning/templates/delegates/mapper-arch.md` for full task instructions. Follow them exactly.
|
|
114
114
|
Output: `.planning/codebase/ARCHITECTURE.md`
|
|
115
|
-
Return:
|
|
115
|
+
Return: Routing summary to Orchestrator (100-200 tokens); full findings stay in the output artifact.
|
|
116
116
|
Guardrails: Max Agent Hops = 3. No static directory dumps. Never read .env contents.
|
|
117
117
|
</delegate>
|
|
118
118
|
|
|
@@ -122,7 +122,7 @@ Parallel: (use parallelization value from .planning/config.json)
|
|
|
122
122
|
Context: Current working directory. DO NOT share conversation history.
|
|
123
123
|
Instruction: Read `.planning/templates/delegates/mapper-quality.md` for full task instructions. Follow them exactly.
|
|
124
124
|
Output: `.planning/codebase/CONVENTIONS.md`
|
|
125
|
-
Return:
|
|
125
|
+
Return: Routing summary to Orchestrator (100-200 tokens); full findings stay in the output artifact.
|
|
126
126
|
Guardrails: Max Agent Hops = 3. Rules not inventories. Never read .env contents.
|
|
127
127
|
</delegate>
|
|
128
128
|
|
|
@@ -132,7 +132,7 @@ Parallel: (use parallelization value from .planning/config.json)
|
|
|
132
132
|
Context: Current working directory. DO NOT share conversation history.
|
|
133
133
|
Instruction: Read `.planning/templates/delegates/mapper-concerns.md` for full task instructions. Follow them exactly. Hard stop if secrets found -- report immediately.
|
|
134
134
|
Output: `.planning/codebase/CONCERNS.md`
|
|
135
|
-
Return:
|
|
135
|
+
Return: Routing summary to Orchestrator (100-200 tokens); full findings stay in the output artifact. If secrets found, STOP and report immediately.
|
|
136
136
|
Guardrails: Max Agent Hops = 3. Hard stop on secrets. Never read .env contents.
|
|
137
137
|
</delegate>
|
|
138
138
|
</mapping>
|
|
@@ -232,7 +232,7 @@ Parallel: (use parallelization value from .planning/config.json)
|
|
|
232
232
|
Context: Project goal: [user's stated goal]. Milestone context: [greenfield|subsequent]. DO NOT share conversation history.
|
|
233
233
|
Instruction: Read `.planning/templates/delegates/researcher-stack.md` for full task instructions. Apply the project goal and milestone context provided above.
|
|
234
234
|
Output: `.planning/research/STACK.md`
|
|
235
|
-
Return:
|
|
235
|
+
Return: Human-read structured summary to Orchestrator (300-500 tokens); full findings stay in the output artifact.
|
|
236
236
|
Guardrails: Max Agent Hops = 3.
|
|
237
237
|
</delegate>
|
|
238
238
|
|
|
@@ -242,7 +242,7 @@ Parallel: (use parallelization value from .planning/config.json)
|
|
|
242
242
|
Context: Project goal: [user's stated goal]. Milestone context: [greenfield|subsequent]. DO NOT share conversation history.
|
|
243
243
|
Instruction: Read `.planning/templates/delegates/researcher-features.md` for full task instructions. Apply the project goal and milestone context provided above.
|
|
244
244
|
Output: `.planning/research/FEATURES.md`
|
|
245
|
-
Return:
|
|
245
|
+
Return: Human-read structured summary to Orchestrator (300-500 tokens); full findings stay in the output artifact.
|
|
246
246
|
Guardrails: Max Agent Hops = 3.
|
|
247
247
|
</delegate>
|
|
248
248
|
|
|
@@ -252,7 +252,7 @@ Parallel: (use parallelization value from .planning/config.json)
|
|
|
252
252
|
Context: Project goal: [user's stated goal]. Milestone context: [greenfield|subsequent]. DO NOT share conversation history.
|
|
253
253
|
Instruction: Read `.planning/templates/delegates/researcher-architecture.md` for full task instructions. Apply the project goal and milestone context provided above.
|
|
254
254
|
Output: `.planning/research/ARCHITECTURE.md`
|
|
255
|
-
Return:
|
|
255
|
+
Return: Human-read structured summary to Orchestrator (300-500 tokens); full findings stay in the output artifact.
|
|
256
256
|
Guardrails: Max Agent Hops = 3.
|
|
257
257
|
</delegate>
|
|
258
258
|
|
|
@@ -262,14 +262,14 @@ Parallel: (use parallelization value from .planning/config.json)
|
|
|
262
262
|
Context: Project goal: [user's stated goal]. Milestone context: [greenfield|subsequent]. DO NOT share conversation history.
|
|
263
263
|
Instruction: Read `.planning/templates/delegates/researcher-pitfalls.md` for full task instructions. Apply the project goal and milestone context provided above.
|
|
264
264
|
Output: `.planning/research/PITFALLS.md`
|
|
265
|
-
Return:
|
|
265
|
+
Return: Human-read structured summary to Orchestrator (300-500 tokens); full findings stay in the output artifact.
|
|
266
266
|
Guardrails: Max Agent Hops = 3.
|
|
267
267
|
</delegate>
|
|
268
268
|
|
|
269
269
|
**After all 4 researchers complete**, synthesize based on `researchDepth`:
|
|
270
270
|
|
|
271
271
|
**If `researchDepth: "fast"`:** Synthesize inline.
|
|
272
|
-
You hold 4
|
|
272
|
+
You hold 4 human-read structured summaries. Write `.planning/research/SUMMARY.md` directly using `.planning/templates/research/summary.md`. Cross-reference the summaries. Do NOT spawn another agent.
|
|
273
273
|
|
|
274
274
|
**If `researchDepth: "balanced"` or `"deep"`:** Spawn synthesizer to read the full research files.
|
|
275
275
|
|
|
@@ -279,11 +279,11 @@ Parallel: false
|
|
|
279
279
|
Context: Researcher summaries returned above. DO NOT share conversation history.
|
|
280
280
|
Instruction: Read `.planning/templates/delegates/researcher-synthesizer.md` for full task instructions.
|
|
281
281
|
Output: `.planning/research/SUMMARY.md`
|
|
282
|
-
Return:
|
|
282
|
+
Return: Agent-mediated structured summary to Orchestrator (500-800 tokens); full synthesis stays in the output artifact.
|
|
283
283
|
Guardrails: Max Agent Hops = 2. Do not do new research — synthesize only.
|
|
284
284
|
</delegate>
|
|
285
285
|
|
|
286
|
-
*Why the split:* The synthesizer reads the 4 full research files and cross-references specific data points (build order constraints, pitfall-to-phase mappings, feature-architecture conflicts) that
|
|
286
|
+
*Why the split:* The synthesizer reads the 4 full research files and cross-references specific data points (build order constraints, pitfall-to-phase mappings, feature-architecture conflicts) that returned summaries omit. This depth matters for `balanced`/`deep` runs where the roadmapper needs rich "Implications for Roadmap." For `fast` runs, orchestrator inline synthesis is the acceptable trade-off.
|
|
287
287
|
|
|
288
288
|
Display key findings before moving to spec creation.
|
|
289
289
|
|
|
@@ -345,7 +345,7 @@ Do NOT proceed to roadmap creation until the developer explicitly approves.
|
|
|
345
345
|
|
|
346
346
|
<roadmap_creation>
|
|
347
347
|
After `SPEC.md` is approved, you must create `ROADMAP.md`.
|
|
348
|
-
Since you are an Orchestrator with fresh context, you DO NOT need to spawn a subagent for this
|
|
348
|
+
Since you are an Orchestrator with fresh context, you DO NOT need to spawn a subagent for this; write it yourself directly, retaining full thoroughness. Research and synthesis delegation above are artifact-backed inputs; roadmap creation remains direct and sequential.
|
|
349
349
|
|
|
350
350
|
Break `SPEC.md` requirements into executable phases:
|
|
351
351
|
|
|
@@ -135,6 +135,10 @@ Also verify milestone truth is not self-contradictory across the planning surfac
|
|
|
135
135
|
If any of these are missing or contradictory, STOP. Report the exact missing contract field or contradiction. Do not improvise a stronger phase contract from chat context alone.
|
|
136
136
|
</phase_contract_gate>
|
|
137
137
|
|
|
138
|
+
<ui_proof_planning>
|
|
139
|
+
For UI-sensitive work, include compact `ui_proof_slots` with `slot_id`, optional `requirement_id`, `claim`, `route_state`, fixed evidence kinds (`code`, `test`, `runtime`, `delivery`, `human`), `minimum_observations`, `environment`, `viewport`, `manual_acceptance_required`, and `claim_limit`; otherwise set `no_ui_proof_rationale`.
|
|
140
|
+
Do not create slots for backend-only, CLI-only, docs-only, or refactor-only work unless the plan claims a visible UI outcome. Evidence must later match claim, route/state, observation, artifact path, evidence kind, privacy metadata, result, and claim limit; local-only or unsafe artifacts cannot support public, publication, tracked, delivery, or release proof claims. Human approval does not replace required `code`, `test`, `runtime`, or `delivery` evidence.
|
|
141
|
+
</ui_proof_planning>
|
|
138
142
|
<goal_backward_planning>
|
|
139
143
|
Plan backward from success criteria.
|
|
140
144
|
|
|
@@ -192,6 +196,8 @@ anti_regression_targets:
|
|
|
192
196
|
- Existing session middleware behavior remains unchanged for already-supported routes.
|
|
193
197
|
known_unknowns:
|
|
194
198
|
- Exact copy wording for auth errors may still need product confirmation.
|
|
199
|
+
ui_proof_slots: []
|
|
200
|
+
no_ui_proof_rationale: Not UI-sensitive; scoped work does not claim a visible UI outcome.
|
|
195
201
|
high_leverage_surfaces: []
|
|
196
202
|
second_pass_required: false
|
|
197
203
|
closure_claim_limit: Do not claim phase completion until verification satisfies the evidence contract for the scoped truths.
|
|
@@ -221,6 +227,7 @@ Schema rules:
|
|
|
221
227
|
- `files-modified` should list the files this plan is expected to touch
|
|
222
228
|
- `must_haves` must trace back to roadmap success criteria
|
|
223
229
|
- `non_goals`, `hard_boundaries`, `escalation_triggers`, and `closure_claim_limit` must not be empty
|
|
230
|
+
- include `ui_proof_slots` for UI-sensitive work or `no_ui_proof_rationale` otherwise
|
|
224
231
|
- `leverage.lost`, `leverage.kept`, and `leverage.gained` must all be explicit
|
|
225
232
|
- `second_pass_required: true` if `high_leverage_surfaces` is non-empty
|
|
226
233
|
- `parallelism_budget.max_concurrent_plans` must stay `1` unless the plan proves disjoint write ownership
|
|
@@ -436,14 +443,14 @@ Run the approach explorer.
|
|
|
436
443
|
|
|
437
444
|
### Running the Approach Explorer
|
|
438
445
|
**Primary path — inline conversation with research subagents:**
|
|
439
|
-
The conversation with the user runs inline in the main context. For each technical gray area, a read-only research subagent is spawned to isolate heavy codebase and documentation reads, returning only compressed summaries.
|
|
446
|
+
The conversation with the user runs inline in the main context. For each technical gray area, a read-only research subagent is spawned to isolate heavy codebase and documentation reads, returning only compressed summaries while full detail stays out of the orchestrator context.
|
|
440
447
|
|
|
441
448
|
1. Load context: read ONLY locked decisions from `.planning/SPEC.md` and the target phase goal/requirements from `.planning/ROADMAP.md`.
|
|
442
449
|
|
|
443
450
|
2. Identify 3-4 domain-specific gray areas. Classify each as **taste** (preference, no research needed), **technical** (trade-offs, research first), or **hybrid** (both).
|
|
444
451
|
|
|
445
452
|
3. For each **technical or hybrid** gray area, spawn a read-only research subagent.
|
|
446
|
-
Use the prompt template from `.planning/templates/roles/approach-explorer.md` (`<research_subagent_prompt>` section), substituting the gray area name, classification, phase context, and relevant codebase files. Each subagent returns a structured summary
|
|
453
|
+
Use the prompt template from `.planning/templates/roles/approach-explorer.md` (`<research_subagent_prompt>` section), substituting the gray area name, classification, phase context, and relevant codebase files. Each subagent returns a structured summary and does not write implementation artifacts.
|
|
447
454
|
|
|
448
455
|
4. Present each gray area to the user individually:
|
|
449
456
|
- For taste areas: ask directly
|
|
@@ -488,7 +495,7 @@ The approach explorer's full role contract is at `.planning/templates/roles/appr
|
|
|
488
495
|
|
|
489
496
|
<plan_check_orchestration>
|
|
490
497
|
### How Plan Checking Works
|
|
491
|
-
After the planner produces a draft plan, an independent checker reviews it in fresh context. The checker does not inherit the planner's hidden reasoning; it treats the plan as an untrusted draft.
|
|
498
|
+
After the planner produces a draft plan, an independent checker reviews it in fresh context. The checker does not inherit the planner's hidden reasoning; it treats the plan as an untrusted draft and returns a structured summary of findings rather than editing the plan directly.
|
|
492
499
|
|
|
493
500
|
### What The Checker Verifies
|
|
494
501
|
1. `requirement_coverage` - every phase requirement is covered by at least one concrete task
|
|
@@ -607,7 +614,7 @@ Planning is done when all of these are true:
|
|
|
607
614
|
- [ ] Plan self-check passed
|
|
608
615
|
- [ ] Success criteria from `ROADMAP.md` are represented as must-haves
|
|
609
616
|
- [ ] Goal-backward derivation from criteria to artifacts to key links to tasks is explicit
|
|
610
|
-
- [ ] Every plan has frontmatter with `phase`, `plan`, `type`, `wave`, `depends_on`, `files-modified`, `autonomous`, `requirements`, `non_goals`, `hard_boundaries`, `escalation_triggers`, `approval_gates`, `anti_regression_targets`, `closure_claim_limit`, `parallelism_budget`, `leverage`, and `must_haves`
|
|
617
|
+
- [ ] Every plan has frontmatter with `phase`, `plan`, `type`, `wave`, `depends_on`, `files-modified`, `autonomous`, `requirements`, `non_goals`, `hard_boundaries`, `escalation_triggers`, `approval_gates`, `anti_regression_targets`, `ui_proof_slots` or `no_ui_proof_rationale`, `closure_claim_limit`, `parallelism_budget`, `leverage`, and `must_haves`
|
|
611
618
|
- [ ] Every plan frontmatter records `runtime` and `assurance`
|
|
612
619
|
- [ ] Every plan records checker outcome in a structured `<checks>` block
|
|
613
620
|
- [ ] Every task has XML structure with `id`, `type`, `files`, `action`, `verify`, and `done`
|
|
@@ -620,18 +627,12 @@ Planning is done when all of these are true:
|
|
|
620
627
|
|
|
621
628
|
<completion>
|
|
622
629
|
Report to the user what was accomplished, then present the next step:
|
|
623
|
-
|
|
624
630
|
---
|
|
625
631
|
**Completed:** Phase planning — created `.planning/phases/{phase_dir}/{plan_id}-PLAN.md`.
|
|
626
632
|
**Planning stops here:** `gsdd-plan` ends after the plan artifact is written. Do not start implementation in this same run, and do not treat imperative handoff text as execution authorization.
|
|
627
633
|
Installed generated runtime surfaces are trusted through rendering, not reviewer memory: `npx -y gsdd-cli health` compares any local generated skill/adapter surfaces against current render output, and `npx -y gsdd-cli update` regenerates them when they drift. Bare `gsdd health` / `gsdd update` are equivalent only when globally installed.
|
|
628
|
-
|
|
629
634
|
**Next workflow:** `/gsdd-execute` — start execution in a separate run when the user explicitly wants implementation to begin
|
|
630
|
-
|
|
631
|
-
Also available:
|
|
632
|
-
- `/gsdd-plan` — create additional plans for the same phase (if multi-wave)
|
|
633
|
-
- `/gsdd-progress` — check overall project status
|
|
634
|
-
|
|
635
|
+
Also available: `/gsdd-plan` for another wave, or `/gsdd-progress` for overall status.
|
|
635
636
|
Consider clearing context before starting the next workflow for best results.
|
|
636
637
|
---
|
|
637
638
|
</completion>
|
|
@@ -118,6 +118,10 @@ Delegate to the planner role in quick mode.
|
|
|
118
118
|
- No research phase, no ROADMAP requirements
|
|
119
119
|
- Do NOT extract phase requirement IDs — there is no active phase
|
|
120
120
|
- Derive must-haves directly from the task description
|
|
121
|
+
- If the quick task is UI-sensitive, include proportional `ui_proof_slots` with slot_id, claim, route_state, required_evidence_kinds, minimum_observations, environment, viewport, manual_acceptance_required, and claim_limit; otherwise include a short `no_ui_proof_rationale`
|
|
122
|
+
- UI proof slots must be matchable to exact observed evidence later: claim, route/state, observation, evidence kind, artifact path or manual step, privacy metadata, result, and claim limit. Discovery hints from source comments, AST/cAST, semantic search, or Semble-like retrieval do not satisfy proof.
|
|
123
|
+
- Observed artifact metadata must include `visibility`, `retention`, `sensitivity`, and `safe_to_publish`; raw screenshots, traces, videos, DOM snapshots, and reports are local-only/unsafe by default. Use `gsdd ui-proof validate <path>` or `gsdd health` when a bundle exists; add `--claim <...>` only for public, publication, tracked, delivery, or release proof use.
|
|
124
|
+
- Keep UI proof proportional: do not scaffold Playwright, Cypress, Cucumber, Storybook, CI, browser MCP, or visual-regression tooling by default
|
|
121
125
|
- Ignore <planning_process> Step 1 requirement extraction; use inline goal-backward planning only
|
|
122
126
|
- Target minimal context usage
|
|
123
127
|
|
|
@@ -263,6 +267,8 @@ Delegate to the executor role.
|
|
|
263
267
|
- Skip the <state_updates> section of your role contract entirely
|
|
264
268
|
- Do NOT update ROADMAP.md phase status or SPEC.md current state
|
|
265
269
|
- Create summary at: `.planning/quick/$NEXT_NUM-$SLUG/$NEXT_NUM-SUMMARY.md`
|
|
270
|
+
- If the quick plan defines `ui_proof_slots`, create or update `.planning/quick/$NEXT_NUM-$SLUG/UI-PROOF.md` with fenced JSON containing required top-level fields: `proof_bundle_version`, `scope`, `route_state`, `environment`, `viewport`, `evidence_inputs`, `commands_or_manual_steps`, `observations`, `artifacts`, `privacy`, `result`, and `claim_limits`
|
|
271
|
+
- Human approval for visual taste, accessibility judgment, baseline acceptance, subjective polish/layout quality, or privacy publication does not replace required `code`, `test`, `runtime`, or `delivery` evidence
|
|
266
272
|
|
|
267
273
|
**Output:** `.planning/quick/$NEXT_NUM-$SLUG/$NEXT_NUM-SUMMARY.md`
|
|
268
274
|
**Return:** Summary file path and completion status.
|
|
@@ -128,6 +128,12 @@ Rules:
|
|
|
128
128
|
Note: this step does NOT replace levels 1–3. An artifact can satisfy the evidence-kind requirement and still fail Level 2 (substantive) or Level 3 (wired). Both checks must run.
|
|
129
129
|
</evidence_contract>
|
|
130
130
|
|
|
131
|
+
<ui_proof_comparison>
|
|
132
|
+
If the plan defines non-empty `ui_proof_slots`, compare planned UI proof against observed bundles before closure. If the plan records only `no_ui_proof_rationale`, verify the rationale instead of requiring a bundle. 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`.
|
|
133
|
+
Classify each slot as exactly one of: `satisfied`, `partial`, `missing`, `waived`, `deferred`, or `not_applicable`. 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.
|
|
134
|
+
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.
|
|
135
|
+
</ui_proof_comparison>
|
|
136
|
+
|
|
131
137
|
<verification_levels>
|
|
132
138
|
Check every artifact at three levels. A common failure mode is a file that exists but is still a stub.
|
|
133
139
|
### Level 1: Exists
|
|
@@ -423,13 +429,9 @@ Verification is done when all of these are true:
|
|
|
423
429
|
Report the verification result to the user, then present the next step:
|
|
424
430
|
|
|
425
431
|
---
|
|
426
|
-
|
|
427
432
|
**Completed:** Phase verification — created `.planning/phases/{phase_dir}/{phase_num}-VERIFICATION.md`.
|
|
428
|
-
|
|
429
433
|
If status is `passed`: **Next step:** `/gsdd-progress` — route to the next phase or milestone audit.
|
|
430
434
|
If status is `gaps_found`: **Next step:** `/gsdd-plan` — re-plan to close the identified gaps.
|
|
431
435
|
If status is `human_needed`: **Next step:** `/gsdd-verify-work`, then rerun `/gsdd-verify` with UAT results.
|
|
432
|
-
|
|
433
436
|
Consider clearing context before starting the next workflow for best results.
|
|
434
|
-
|
|
435
437
|
</completion>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gsdd-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.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": {
|