@howlil/ez-agents 2.0.0 → 2.0.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 +93 -93
- package/agents/ez-plan-checker.md +2 -2
- package/agents/ez-research-synthesizer.md +1 -1
- package/agents/ez-ui-researcher.md +1 -1
- package/agents/ez-verifier.md +1 -1
- package/bin/install.js +132 -132
- package/get-shit-done/bin/lib/assistant-adapter.cjs +205 -205
- package/get-shit-done/bin/lib/audit-exec.cjs +150 -150
- package/get-shit-done/bin/lib/auth.cjs +175 -175
- package/get-shit-done/bin/lib/circuit-breaker.cjs +118 -118
- package/get-shit-done/bin/lib/commands.cjs +666 -666
- package/get-shit-done/bin/lib/config.cjs +183 -183
- package/get-shit-done/bin/lib/core.cjs +495 -495
- package/get-shit-done/bin/lib/file-lock.cjs +236 -236
- package/get-shit-done/bin/lib/frontmatter.cjs +299 -299
- package/get-shit-done/bin/lib/fs-utils.cjs +153 -153
- package/get-shit-done/bin/lib/git-utils.cjs +203 -203
- package/get-shit-done/bin/lib/health-check.cjs +163 -163
- package/get-shit-done/bin/lib/index.cjs +113 -113
- package/get-shit-done/bin/lib/init.cjs +710 -710
- package/get-shit-done/bin/lib/logger.cjs +117 -117
- package/get-shit-done/bin/lib/milestone.cjs +241 -241
- package/get-shit-done/bin/lib/model-provider.cjs +146 -146
- package/get-shit-done/bin/lib/phase.cjs +908 -908
- package/get-shit-done/bin/lib/retry.cjs +119 -119
- package/get-shit-done/bin/lib/roadmap.cjs +305 -305
- package/get-shit-done/bin/lib/safe-exec.cjs +128 -128
- package/get-shit-done/bin/lib/safe-path.cjs +130 -130
- package/get-shit-done/bin/lib/state.cjs +721 -721
- package/get-shit-done/bin/lib/temp-file.cjs +239 -239
- package/get-shit-done/bin/lib/template.cjs +222 -222
- package/get-shit-done/bin/lib/test-file-lock.cjs +112 -112
- package/get-shit-done/bin/lib/test-graceful.cjs +93 -93
- package/get-shit-done/bin/lib/test-logger.cjs +60 -60
- package/get-shit-done/bin/lib/test-safe-exec.cjs +38 -38
- package/get-shit-done/bin/lib/test-safe-path.cjs +33 -33
- package/get-shit-done/bin/lib/test-temp-file.cjs +125 -125
- package/get-shit-done/bin/lib/timeout-exec.cjs +62 -62
- package/get-shit-done/bin/lib/verify.cjs +820 -820
- package/get-shit-done/references/checkpoints.md +776 -776
- package/get-shit-done/references/questioning.md +162 -162
- package/get-shit-done/references/tdd.md +263 -263
- package/get-shit-done/templates/codebase/concerns.md +310 -310
- package/get-shit-done/templates/codebase/conventions.md +307 -307
- package/get-shit-done/templates/codebase/integrations.md +280 -280
- package/get-shit-done/templates/codebase/stack.md +186 -186
- package/get-shit-done/templates/codebase/testing.md +480 -480
- package/get-shit-done/templates/config.json +37 -37
- package/get-shit-done/templates/continue-here.md +78 -78
- package/get-shit-done/templates/milestone-archive.md +123 -123
- package/get-shit-done/templates/milestone.md +115 -115
- package/get-shit-done/templates/requirements.md +231 -231
- package/get-shit-done/templates/research-project/ARCHITECTURE.md +204 -204
- package/get-shit-done/templates/research-project/FEATURES.md +147 -147
- package/get-shit-done/templates/research-project/PITFALLS.md +200 -200
- package/get-shit-done/templates/research-project/STACK.md +120 -120
- package/get-shit-done/templates/research-project/SUMMARY.md +170 -170
- package/get-shit-done/templates/retrospective.md +54 -54
- package/get-shit-done/templates/roadmap.md +202 -202
- package/get-shit-done/templates/summary-minimal.md +41 -41
- package/get-shit-done/templates/summary-standard.md +48 -48
- package/get-shit-done/templates/summary.md +248 -248
- package/get-shit-done/templates/user-setup.md +311 -311
- package/get-shit-done/templates/verification-report.md +322 -322
- package/get-shit-done/workflows/add-phase.md +112 -112
- package/get-shit-done/workflows/add-tests.md +351 -351
- package/get-shit-done/workflows/add-todo.md +158 -158
- package/get-shit-done/workflows/audit-milestone.md +332 -332
- package/get-shit-done/workflows/autonomous.md +743 -743
- package/get-shit-done/workflows/check-todos.md +177 -177
- package/get-shit-done/workflows/cleanup.md +152 -152
- package/get-shit-done/workflows/complete-milestone.md +766 -766
- package/get-shit-done/workflows/diagnose-issues.md +219 -219
- package/get-shit-done/workflows/discovery-phase.md +289 -289
- package/get-shit-done/workflows/discuss-phase.md +762 -762
- package/get-shit-done/workflows/execute-phase.md +468 -468
- package/get-shit-done/workflows/execute-plan.md +483 -483
- package/get-shit-done/workflows/health.md +159 -159
- package/get-shit-done/workflows/help.md +492 -492
- package/get-shit-done/workflows/insert-phase.md +130 -130
- package/get-shit-done/workflows/list-phase-assumptions.md +178 -178
- package/get-shit-done/workflows/map-codebase.md +316 -316
- package/get-shit-done/workflows/new-milestone.md +384 -384
- package/get-shit-done/workflows/new-project.md +1111 -1111
- package/get-shit-done/workflows/node-repair.md +92 -92
- package/get-shit-done/workflows/pause-work.md +122 -122
- package/get-shit-done/workflows/plan-milestone-gaps.md +274 -274
- package/get-shit-done/workflows/plan-phase.md +651 -651
- package/get-shit-done/workflows/progress.md +382 -382
- package/get-shit-done/workflows/quick.md +610 -610
- package/get-shit-done/workflows/remove-phase.md +155 -155
- package/get-shit-done/workflows/research-phase.md +74 -74
- package/get-shit-done/workflows/resume-project.md +307 -307
- package/get-shit-done/workflows/set-profile.md +81 -81
- package/get-shit-done/workflows/settings.md +242 -242
- package/get-shit-done/workflows/stats.md +57 -57
- package/get-shit-done/workflows/transition.md +544 -544
- package/get-shit-done/workflows/ui-phase.md +290 -290
- package/get-shit-done/workflows/ui-review.md +157 -157
- package/get-shit-done/workflows/update.md +320 -320
- package/get-shit-done/workflows/validate-phase.md +167 -167
- package/get-shit-done/workflows/verify-phase.md +243 -243
- package/package.json +1 -1
- package/scripts/build-hooks.js +43 -43
- package/scripts/run-tests.cjs +29 -29
|
@@ -1,167 +1,167 @@
|
|
|
1
|
-
<purpose>
|
|
2
|
-
Audit Nyquist validation gaps for a completed phase. Generate missing tests. Update VALIDATION.md.
|
|
3
|
-
</purpose>
|
|
4
|
-
|
|
5
|
-
<required_reading>
|
|
6
|
-
@~/.claude/get-shit-done/references/ui-brand.md
|
|
7
|
-
</required_reading>
|
|
8
|
-
|
|
9
|
-
<process>
|
|
10
|
-
|
|
11
|
-
## 0. Initialize
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
INIT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" init phase-op "${PHASE_ARG}")
|
|
15
|
-
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
Parse: `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`.
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
AUDITOR_MODEL=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" resolve-model gsd-nyquist-auditor --raw)
|
|
22
|
-
NYQUIST_CFG=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" config get workflow.nyquist_validation --raw)
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
If `NYQUIST_CFG` is `false`: exit with "Nyquist validation is disabled. Enable via /ez:settings."
|
|
26
|
-
|
|
27
|
-
Display banner: `GSD > VALIDATE PHASE {N}: {name}`
|
|
28
|
-
|
|
29
|
-
## 1. Detect Input State
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
VALIDATION_FILE=$(ls "${PHASE_DIR}"/*-VALIDATION.md 2>/dev/null | head -1)
|
|
33
|
-
SUMMARY_FILES=$(ls "${PHASE_DIR}"/*-SUMMARY.md 2>/dev/null)
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
- **State A** (`VALIDATION_FILE` non-empty): Audit existing
|
|
37
|
-
- **State B** (`VALIDATION_FILE` empty, `SUMMARY_FILES` non-empty): Reconstruct from artifacts
|
|
38
|
-
- **State C** (`SUMMARY_FILES` empty): Exit — "Phase {N} not executed. Run /ez:execute-phase {N} first."
|
|
39
|
-
|
|
40
|
-
## 2. Discovery
|
|
41
|
-
|
|
42
|
-
### 2a. Read Phase Artifacts
|
|
43
|
-
|
|
44
|
-
Read all PLAN and SUMMARY files. Extract: task lists, requirement IDs, key-files changed, verify blocks.
|
|
45
|
-
|
|
46
|
-
### 2b. Build Requirement-to-Task Map
|
|
47
|
-
|
|
48
|
-
Per task: `{ task_id, plan_id, wave, requirement_ids, has_automated_command }`
|
|
49
|
-
|
|
50
|
-
### 2c. Detect Test Infrastructure
|
|
51
|
-
|
|
52
|
-
State A: Parse from existing VALIDATION.md Test Infrastructure table.
|
|
53
|
-
State B: Filesystem scan:
|
|
54
|
-
|
|
55
|
-
```bash
|
|
56
|
-
find . -name "pytest.ini" -o -name "jest.config.*" -o -name "vitest.config.*" -o -name "pyproject.toml" 2>/dev/null | head -10
|
|
57
|
-
find . \( -name "*.test.*" -o -name "*.spec.*" -o -name "test_*" \) -not -path "*/node_modules/*" 2>/dev/null | head -40
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### 2d. Cross-Reference
|
|
61
|
-
|
|
62
|
-
Match each requirement to existing tests by filename, imports, test descriptions. Record: requirement → test_file → status.
|
|
63
|
-
|
|
64
|
-
## 3. Gap Analysis
|
|
65
|
-
|
|
66
|
-
Classify each requirement:
|
|
67
|
-
|
|
68
|
-
| Status | Criteria |
|
|
69
|
-
|--------|----------|
|
|
70
|
-
| COVERED | Test exists, targets behavior, runs green |
|
|
71
|
-
| PARTIAL | Test exists, failing or incomplete |
|
|
72
|
-
| MISSING | No test found |
|
|
73
|
-
|
|
74
|
-
Build: `{ task_id, requirement, gap_type, suggested_test_path, suggested_command }`
|
|
75
|
-
|
|
76
|
-
No gaps → skip to Step 6, set `nyquist_compliant: true`.
|
|
77
|
-
|
|
78
|
-
## 4. Present Gap Plan
|
|
79
|
-
|
|
80
|
-
Call AskUserQuestion with gap table and options:
|
|
81
|
-
1. "Fix all gaps" → Step 5
|
|
82
|
-
2. "Skip — mark manual-only" → add to Manual-Only, Step 6
|
|
83
|
-
3. "Cancel" → exit
|
|
84
|
-
|
|
85
|
-
## 5. Spawn gsd-nyquist-auditor
|
|
86
|
-
|
|
87
|
-
```
|
|
88
|
-
Task(
|
|
89
|
-
prompt="Read ~/.claude/agents/gsd-nyquist-auditor.md for instructions.\n\n" +
|
|
90
|
-
"<files_to_read>{PLAN, SUMMARY, impl files, VALIDATION.md}</files_to_read>" +
|
|
91
|
-
"<gaps>{gap list}</gaps>" +
|
|
92
|
-
"<test_infrastructure>{framework, config, commands}</test_infrastructure>" +
|
|
93
|
-
"<constraints>Never modify impl files. Max 3 debug iterations. Escalate impl bugs.</constraints>",
|
|
94
|
-
subagent_type="ez-nyquist-auditor",
|
|
95
|
-
model="{AUDITOR_MODEL}",
|
|
96
|
-
description="Fill validation gaps for Phase {N}"
|
|
97
|
-
)
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
Handle return:
|
|
101
|
-
- `## GAPS FILLED` → record tests + map updates, Step 6
|
|
102
|
-
- `## PARTIAL` → record resolved, move escalated to manual-only, Step 6
|
|
103
|
-
- `## ESCALATE` → move all to manual-only, Step 6
|
|
104
|
-
|
|
105
|
-
## 6. Generate/Update VALIDATION.md
|
|
106
|
-
|
|
107
|
-
**State B (create):**
|
|
108
|
-
1. Read template from `~/.claude/get-shit-done/templates/VALIDATION.md`
|
|
109
|
-
2. Fill: frontmatter, Test Infrastructure, Per-Task Map, Manual-Only, Sign-Off
|
|
110
|
-
3. Write to `${PHASE_DIR}/${PADDED_PHASE}-VALIDATION.md`
|
|
111
|
-
|
|
112
|
-
**State A (update):**
|
|
113
|
-
1. Update Per-Task Map statuses, add escalated to Manual-Only, update frontmatter
|
|
114
|
-
2. Append audit trail:
|
|
115
|
-
|
|
116
|
-
```markdown
|
|
117
|
-
## Validation Audit {date}
|
|
118
|
-
| Metric | Count |
|
|
119
|
-
|--------|-------|
|
|
120
|
-
| Gaps found | {N} |
|
|
121
|
-
| Resolved | {M} |
|
|
122
|
-
| Escalated | {K} |
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
## 7. Commit
|
|
126
|
-
|
|
127
|
-
```bash
|
|
128
|
-
git add {test_files}
|
|
129
|
-
git commit -m "test(phase-${PHASE}): add Nyquist validation tests"
|
|
130
|
-
|
|
131
|
-
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "docs(phase-${PHASE}): add/update validation strategy"
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
## 8. Results + Routing
|
|
135
|
-
|
|
136
|
-
**Compliant:**
|
|
137
|
-
```
|
|
138
|
-
GSD > PHASE {N} IS NYQUIST-COMPLIANT
|
|
139
|
-
All requirements have automated verification.
|
|
140
|
-
▶ Next: /ez:audit-milestone
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
**Partial:**
|
|
144
|
-
```
|
|
145
|
-
GSD > PHASE {N} VALIDATED (PARTIAL)
|
|
146
|
-
{M} automated, {K} manual-only.
|
|
147
|
-
▶ Retry: /ez:validate-phase {N}
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
Display `/clear` reminder.
|
|
151
|
-
|
|
152
|
-
</process>
|
|
153
|
-
|
|
154
|
-
<success_criteria>
|
|
155
|
-
- [ ] Nyquist config checked (exit if disabled)
|
|
156
|
-
- [ ] Input state detected (A/B/C)
|
|
157
|
-
- [ ] State C exits cleanly
|
|
158
|
-
- [ ] PLAN/SUMMARY files read, requirement map built
|
|
159
|
-
- [ ] Test infrastructure detected
|
|
160
|
-
- [ ] Gaps classified (COVERED/PARTIAL/MISSING)
|
|
161
|
-
- [ ] User gate with gap table
|
|
162
|
-
- [ ] Auditor spawned with complete context
|
|
163
|
-
- [ ] All three return formats handled
|
|
164
|
-
- [ ] VALIDATION.md created or updated
|
|
165
|
-
- [ ] Test files committed separately
|
|
166
|
-
- [ ] Results with routing presented
|
|
167
|
-
</success_criteria>
|
|
1
|
+
<purpose>
|
|
2
|
+
Audit Nyquist validation gaps for a completed phase. Generate missing tests. Update VALIDATION.md.
|
|
3
|
+
</purpose>
|
|
4
|
+
|
|
5
|
+
<required_reading>
|
|
6
|
+
@~/.claude/get-shit-done/references/ui-brand.md
|
|
7
|
+
</required_reading>
|
|
8
|
+
|
|
9
|
+
<process>
|
|
10
|
+
|
|
11
|
+
## 0. Initialize
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
INIT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" init phase-op "${PHASE_ARG}")
|
|
15
|
+
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Parse: `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`.
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
AUDITOR_MODEL=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" resolve-model gsd-nyquist-auditor --raw)
|
|
22
|
+
NYQUIST_CFG=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" config get workflow.nyquist_validation --raw)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
If `NYQUIST_CFG` is `false`: exit with "Nyquist validation is disabled. Enable via /ez:settings."
|
|
26
|
+
|
|
27
|
+
Display banner: `GSD > VALIDATE PHASE {N}: {name}`
|
|
28
|
+
|
|
29
|
+
## 1. Detect Input State
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
VALIDATION_FILE=$(ls "${PHASE_DIR}"/*-VALIDATION.md 2>/dev/null | head -1)
|
|
33
|
+
SUMMARY_FILES=$(ls "${PHASE_DIR}"/*-SUMMARY.md 2>/dev/null)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
- **State A** (`VALIDATION_FILE` non-empty): Audit existing
|
|
37
|
+
- **State B** (`VALIDATION_FILE` empty, `SUMMARY_FILES` non-empty): Reconstruct from artifacts
|
|
38
|
+
- **State C** (`SUMMARY_FILES` empty): Exit — "Phase {N} not executed. Run /ez:execute-phase {N} first."
|
|
39
|
+
|
|
40
|
+
## 2. Discovery
|
|
41
|
+
|
|
42
|
+
### 2a. Read Phase Artifacts
|
|
43
|
+
|
|
44
|
+
Read all PLAN and SUMMARY files. Extract: task lists, requirement IDs, key-files changed, verify blocks.
|
|
45
|
+
|
|
46
|
+
### 2b. Build Requirement-to-Task Map
|
|
47
|
+
|
|
48
|
+
Per task: `{ task_id, plan_id, wave, requirement_ids, has_automated_command }`
|
|
49
|
+
|
|
50
|
+
### 2c. Detect Test Infrastructure
|
|
51
|
+
|
|
52
|
+
State A: Parse from existing VALIDATION.md Test Infrastructure table.
|
|
53
|
+
State B: Filesystem scan:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
find . -name "pytest.ini" -o -name "jest.config.*" -o -name "vitest.config.*" -o -name "pyproject.toml" 2>/dev/null | head -10
|
|
57
|
+
find . \( -name "*.test.*" -o -name "*.spec.*" -o -name "test_*" \) -not -path "*/node_modules/*" 2>/dev/null | head -40
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 2d. Cross-Reference
|
|
61
|
+
|
|
62
|
+
Match each requirement to existing tests by filename, imports, test descriptions. Record: requirement → test_file → status.
|
|
63
|
+
|
|
64
|
+
## 3. Gap Analysis
|
|
65
|
+
|
|
66
|
+
Classify each requirement:
|
|
67
|
+
|
|
68
|
+
| Status | Criteria |
|
|
69
|
+
|--------|----------|
|
|
70
|
+
| COVERED | Test exists, targets behavior, runs green |
|
|
71
|
+
| PARTIAL | Test exists, failing or incomplete |
|
|
72
|
+
| MISSING | No test found |
|
|
73
|
+
|
|
74
|
+
Build: `{ task_id, requirement, gap_type, suggested_test_path, suggested_command }`
|
|
75
|
+
|
|
76
|
+
No gaps → skip to Step 6, set `nyquist_compliant: true`.
|
|
77
|
+
|
|
78
|
+
## 4. Present Gap Plan
|
|
79
|
+
|
|
80
|
+
Call AskUserQuestion with gap table and options:
|
|
81
|
+
1. "Fix all gaps" → Step 5
|
|
82
|
+
2. "Skip — mark manual-only" → add to Manual-Only, Step 6
|
|
83
|
+
3. "Cancel" → exit
|
|
84
|
+
|
|
85
|
+
## 5. Spawn gsd-nyquist-auditor
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
Task(
|
|
89
|
+
prompt="Read ~/.claude/agents/gsd-nyquist-auditor.md for instructions.\n\n" +
|
|
90
|
+
"<files_to_read>{PLAN, SUMMARY, impl files, VALIDATION.md}</files_to_read>" +
|
|
91
|
+
"<gaps>{gap list}</gaps>" +
|
|
92
|
+
"<test_infrastructure>{framework, config, commands}</test_infrastructure>" +
|
|
93
|
+
"<constraints>Never modify impl files. Max 3 debug iterations. Escalate impl bugs.</constraints>",
|
|
94
|
+
subagent_type="ez-nyquist-auditor",
|
|
95
|
+
model="{AUDITOR_MODEL}",
|
|
96
|
+
description="Fill validation gaps for Phase {N}"
|
|
97
|
+
)
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Handle return:
|
|
101
|
+
- `## GAPS FILLED` → record tests + map updates, Step 6
|
|
102
|
+
- `## PARTIAL` → record resolved, move escalated to manual-only, Step 6
|
|
103
|
+
- `## ESCALATE` → move all to manual-only, Step 6
|
|
104
|
+
|
|
105
|
+
## 6. Generate/Update VALIDATION.md
|
|
106
|
+
|
|
107
|
+
**State B (create):**
|
|
108
|
+
1. Read template from `~/.claude/get-shit-done/templates/VALIDATION.md`
|
|
109
|
+
2. Fill: frontmatter, Test Infrastructure, Per-Task Map, Manual-Only, Sign-Off
|
|
110
|
+
3. Write to `${PHASE_DIR}/${PADDED_PHASE}-VALIDATION.md`
|
|
111
|
+
|
|
112
|
+
**State A (update):**
|
|
113
|
+
1. Update Per-Task Map statuses, add escalated to Manual-Only, update frontmatter
|
|
114
|
+
2. Append audit trail:
|
|
115
|
+
|
|
116
|
+
```markdown
|
|
117
|
+
## Validation Audit {date}
|
|
118
|
+
| Metric | Count |
|
|
119
|
+
|--------|-------|
|
|
120
|
+
| Gaps found | {N} |
|
|
121
|
+
| Resolved | {M} |
|
|
122
|
+
| Escalated | {K} |
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## 7. Commit
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
git add {test_files}
|
|
129
|
+
git commit -m "test(phase-${PHASE}): add Nyquist validation tests"
|
|
130
|
+
|
|
131
|
+
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "docs(phase-${PHASE}): add/update validation strategy"
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## 8. Results + Routing
|
|
135
|
+
|
|
136
|
+
**Compliant:**
|
|
137
|
+
```
|
|
138
|
+
GSD > PHASE {N} IS NYQUIST-COMPLIANT
|
|
139
|
+
All requirements have automated verification.
|
|
140
|
+
▶ Next: /ez:audit-milestone
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
**Partial:**
|
|
144
|
+
```
|
|
145
|
+
GSD > PHASE {N} VALIDATED (PARTIAL)
|
|
146
|
+
{M} automated, {K} manual-only.
|
|
147
|
+
▶ Retry: /ez:validate-phase {N}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Display `/clear` reminder.
|
|
151
|
+
|
|
152
|
+
</process>
|
|
153
|
+
|
|
154
|
+
<success_criteria>
|
|
155
|
+
- [ ] Nyquist config checked (exit if disabled)
|
|
156
|
+
- [ ] Input state detected (A/B/C)
|
|
157
|
+
- [ ] State C exits cleanly
|
|
158
|
+
- [ ] PLAN/SUMMARY files read, requirement map built
|
|
159
|
+
- [ ] Test infrastructure detected
|
|
160
|
+
- [ ] Gaps classified (COVERED/PARTIAL/MISSING)
|
|
161
|
+
- [ ] User gate with gap table
|
|
162
|
+
- [ ] Auditor spawned with complete context
|
|
163
|
+
- [ ] All three return formats handled
|
|
164
|
+
- [ ] VALIDATION.md created or updated
|
|
165
|
+
- [ ] Test files committed separately
|
|
166
|
+
- [ ] Results with routing presented
|
|
167
|
+
</success_criteria>
|