@opengsd/gsd-core 1.9.0 → 1.10.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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +2 -3
- package/.opencode/plugins/gsd-core.js +8 -1
- package/agents/gsd-code-fixer.md +131 -34
- package/agents/gsd-debugger.md +12 -246
- package/agents/gsd-executor.md +7 -5
- package/agents/gsd-integration-checker.md +3 -0
- package/agents/gsd-plan-checker.md +9 -0
- package/agents/gsd-planner.md +5 -8
- package/agents/gsd-roadmapper.md +21 -3
- package/agents/gsd-verifier.md +14 -70
- package/bin/install.js +503 -341
- package/commands/gsd/mempalace-capture.md +1 -1
- package/commands/gsd/new-milestone.md +1 -1
- package/commands/gsd/plan-phase.md +1 -1
- package/gsd-core/bin/gsd-tools.cjs +607 -63
- package/gsd-core/bin/lib/active-workstream-store.cjs +25 -0
- package/gsd-core/bin/lib/agent-install-check.cjs +38 -6
- package/gsd-core/bin/lib/api-coverage.cjs +120 -0
- package/gsd-core/bin/lib/audit.cjs +89 -1
- package/gsd-core/bin/lib/broken-windows.cjs +36 -6
- package/gsd-core/bin/lib/capability-registry.cjs +96 -110
- package/gsd-core/bin/lib/capability-validator.cjs +12 -2
- package/gsd-core/bin/lib/check-command-router.cjs +43 -1
- package/gsd-core/bin/lib/command-aliases.cjs +72 -0
- package/gsd-core/bin/lib/commands.cjs +26 -25
- package/gsd-core/bin/lib/commonjs-marker.cjs +136 -0
- package/gsd-core/bin/lib/config-loader.cjs +1 -0
- package/gsd-core/bin/lib/config.cjs +12 -1
- package/gsd-core/bin/lib/context-composer.cjs +278 -0
- package/gsd-core/bin/lib/context-predicates.cjs +506 -0
- package/gsd-core/bin/lib/core-utils.cjs +91 -12
- package/gsd-core/bin/lib/docs.cjs +3 -2
- package/gsd-core/bin/lib/external-job.cjs +19 -4
- package/gsd-core/bin/lib/frontmatter.cjs +84 -12
- package/gsd-core/bin/lib/gate-predicate-evaluator.cjs +57 -6
- package/gsd-core/bin/lib/git-base-branch.cjs +58 -15
- package/gsd-core/bin/lib/graphify.cjs +142 -27
- package/gsd-core/bin/lib/gsd2-import.cjs +27 -4
- package/gsd-core/bin/lib/host-integration.cjs +13 -1
- package/gsd-core/bin/lib/init-command-router.cjs +83 -8
- package/gsd-core/bin/lib/init.cjs +1021 -57
- package/gsd-core/bin/lib/install-engine.cjs +64 -10
- package/gsd-core/bin/lib/install-profiles.cjs +27 -1
- package/gsd-core/bin/lib/installer-migration-authoring.cjs +3 -1
- package/gsd-core/bin/lib/installer-migration-report.cjs +4 -0
- package/gsd-core/bin/lib/installer-migrations/007-retire-config-root-commonjs-marker.cjs +149 -0
- package/gsd-core/bin/lib/installer-migrations/008-cursor-retire-commands-surface.cjs +55 -0
- package/gsd-core/bin/lib/installer-migrations/009-pi-retire-reserved-hooks-dir.cjs +199 -0
- package/gsd-core/bin/lib/installer-migrations.cjs +87 -1
- package/gsd-core/bin/lib/io.cjs +28 -3
- package/gsd-core/bin/lib/markdown-sectionizer.cjs +6 -0
- package/gsd-core/bin/lib/mcp-catalog.cjs +518 -0
- package/gsd-core/bin/lib/mcp-server.cjs +135 -3
- package/gsd-core/bin/lib/milestone.cjs +106 -51
- package/gsd-core/bin/lib/phase-id.cjs +63 -0
- package/gsd-core/bin/lib/phase-locator.cjs +138 -45
- package/gsd-core/bin/lib/phase.cjs +260 -25
- package/gsd-core/bin/lib/plan-dependency-graph.cjs +232 -0
- package/gsd-core/bin/lib/planning-workspace.cjs +4 -0
- package/gsd-core/bin/lib/project-root.cjs +48 -0
- package/gsd-core/bin/lib/prompt-budget.cjs +128 -165
- package/gsd-core/bin/lib/retired-artifact-cleanup.cjs +80 -0
- package/gsd-core/bin/lib/review-lane-descriptor.cjs +99 -0
- package/gsd-core/bin/lib/review-lane-runner.cjs +30 -6
- package/gsd-core/bin/lib/roadmap-command-router.cjs +42 -9
- package/gsd-core/bin/lib/roadmap-parser.cjs +100 -18
- package/gsd-core/bin/lib/roadmap.cjs +37 -7
- package/gsd-core/bin/lib/runtime-artifact-conversion.cjs +195 -62
- package/gsd-core/bin/lib/runtime-artifact-layout.cjs +15 -3
- package/gsd-core/bin/lib/runtime-homes.cjs +154 -41
- package/gsd-core/bin/lib/runtime-hooks-surface.cjs +105 -41
- package/gsd-core/bin/lib/section-manifest.cjs +209 -0
- package/gsd-core/bin/lib/shell-command-projection.cjs +113 -27
- package/gsd-core/bin/lib/smart-entry.cjs +12 -0
- package/gsd-core/bin/lib/state-transition.cjs +73 -8
- package/gsd-core/bin/lib/state.cjs +151 -62
- package/gsd-core/bin/lib/surface.cjs +12 -1
- package/gsd-core/bin/lib/uat-predicate.cjs +11 -1
- package/gsd-core/bin/lib/uat.cjs +320 -21
- package/gsd-core/bin/lib/unusable-input.cjs +9 -0
- package/gsd-core/bin/lib/verification.cjs +29 -12
- package/gsd-core/bin/lib/verify.cjs +29 -5
- package/gsd-core/bin/lib/workflow-fragments.cjs +557 -0
- package/gsd-core/bin/lib/workstream-inventory-builder.cjs +181 -18
- package/gsd-core/bin/lib/workstream-inventory.cjs +519 -27
- package/gsd-core/bin/lib/workstream.cjs +6 -0
- package/gsd-core/bin/lib/worktree-base-ref.cjs +50 -6
- package/gsd-core/bin/lib/worktree-safety.cjs +276 -118
- package/gsd-core/bin/shared/config-schema.manifest.json +2 -0
- package/gsd-core/references/artifact-types.md +10 -3
- package/gsd-core/references/autonomous-ui-design-contract.md +42 -0
- package/gsd-core/references/debugger-techniques.md +255 -0
- package/gsd-core/references/research-documentation-lookup.md +5 -3
- package/gsd-core/references/specless-probe-fallback.md +7 -6
- package/gsd-core/references/verifier-wiring-patterns.md +100 -0
- package/gsd-core/references/worktree-branch-check.md +2 -2
- package/gsd-core/templates/summary-complex.md +2 -0
- package/gsd-core/templates/summary-minimal.md +2 -0
- package/gsd-core/templates/summary-standard.md +2 -0
- package/gsd-core/templates/summary.md +2 -0
- package/gsd-core/workflows/audit-milestone.md +3 -0
- package/gsd-core/workflows/autonomous/steps/converge-banner.md +1 -0
- package/gsd-core/workflows/autonomous/steps/converge-dispatch-bg.md +11 -0
- package/gsd-core/workflows/autonomous/steps/converge-dispatch-inline.md +7 -0
- package/gsd-core/workflows/autonomous/steps/converge-fail-fast.md +21 -0
- package/gsd-core/workflows/autonomous/steps/converge-loop.md +7 -0
- package/gsd-core/workflows/autonomous.md +32 -69
- package/gsd-core/workflows/code-review/steps/dispatch-fix.md +39 -0
- package/gsd-core/workflows/code-review/steps/structural-pre-pass.md +83 -0
- package/gsd-core/workflows/code-review.md +42 -145
- package/gsd-core/workflows/complete-milestone/steps/git-tag.md +29 -0
- package/gsd-core/workflows/complete-milestone.md +23 -81
- package/gsd-core/workflows/debug.md +9 -12
- package/gsd-core/workflows/diagnose-issues.md +22 -0
- package/gsd-core/workflows/discovery-phase.md +4 -4
- package/gsd-core/workflows/discuss-phase-assumptions/steps/auto-advance-dispatch.md +15 -0
- package/gsd-core/workflows/discuss-phase-assumptions.md +5 -16
- package/gsd-core/workflows/docs-update/steps/dispatch-monorepo-packages.md +51 -0
- package/gsd-core/workflows/docs-update.md +8 -51
- package/gsd-core/workflows/execute-phase/steps/executor-isolation-dispatch.md +34 -2
- package/gsd-core/workflows/execute-phase/steps/gap-closure-artifacts.md +50 -0
- package/gsd-core/workflows/execute-phase/steps/partial-wave.md +31 -0
- package/gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md +19 -0
- package/gsd-core/workflows/execute-phase/steps/regression-gate-run.md +42 -0
- package/gsd-core/workflows/execute-phase/steps/regression-gate.md +43 -37
- package/gsd-core/workflows/execute-phase.md +65 -137
- package/gsd-core/workflows/execute-plan.md +1 -1
- package/gsd-core/workflows/help/modes/full.md +6 -1
- package/gsd-core/workflows/ingest-docs.md +2 -1
- package/gsd-core/workflows/new-milestone/steps/project-md-milestone-write.md +16 -0
- package/gsd-core/workflows/new-milestone/steps/reset-phase-safety.md +19 -0
- package/gsd-core/workflows/new-milestone.md +21 -38
- package/gsd-core/workflows/new-project/steps/auto-mode-config.md +176 -0
- package/gsd-core/workflows/new-project/steps/auto-mode-detection.md +32 -0
- package/gsd-core/workflows/new-project/steps/codebase-map-offer.md +18 -0
- package/gsd-core/workflows/new-project.md +13 -226
- package/gsd-core/workflows/plan-phase/steps/adr-ingest-express-path.md +15 -0
- package/gsd-core/workflows/plan-phase/steps/chunked-planning-mode.md +110 -0
- package/gsd-core/workflows/plan-phase/steps/prd-express-gate.md +8 -0
- package/gsd-core/workflows/plan-phase/steps/research-only-early-exit.md +17 -0
- package/gsd-core/workflows/plan-phase/steps/research-only-modifiers.md +16 -0
- package/gsd-core/workflows/plan-phase/steps/reviews-prerequisite.md +17 -0
- package/gsd-core/workflows/plan-phase/steps/stall-detection-helpers.md +149 -0
- package/gsd-core/workflows/plan-phase.md +49 -193
- package/gsd-core/workflows/progress/steps/forensic-audit.md +125 -0
- package/gsd-core/workflows/progress/steps/mvp-display.md +18 -0
- package/gsd-core/workflows/progress.md +11 -153
- package/gsd-core/workflows/quick/steps/discussion-phase.md +124 -0
- package/gsd-core/workflows/quick/steps/plan-checker-loop.md +111 -0
- package/gsd-core/workflows/quick/steps/quick-verification.md +46 -0
- package/gsd-core/workflows/quick/steps/research-phase.md +72 -0
- package/gsd-core/workflows/quick/steps/worktree-pre-dispatch-commit.md +37 -0
- package/gsd-core/workflows/quick.md +20 -390
- package/gsd-core/workflows/resume-project.md +3 -0
- package/gsd-core/workflows/review/steps/reviewer-instances-note-1.md +4 -0
- package/gsd-core/workflows/review/steps/reviewer-instances-note-2.md +3 -0
- package/gsd-core/workflows/review.md +15 -8
- package/gsd-core/workflows/section-manifest.json +219 -0
- package/gsd-core/workflows/sketch.md +1 -1
- package/gsd-core/workflows/spec-phase.md +17 -14
- package/gsd-core/workflows/spike-wrap-up.md +20 -5
- package/gsd-core/workflows/spike.md +50 -16
- package/gsd-core/workflows/sync-skills.md +49 -11
- package/gsd-core/workflows/transition/steps/workstream-collision-check.md +17 -0
- package/gsd-core/workflows/transition.md +8 -21
- package/gsd-core/workflows/ui-phase.md +8 -7
- package/gsd-core/workflows/update/steps/channel-banner.md +7 -0
- package/gsd-core/workflows/update.md +18 -7
- package/gsd-core/workflows/verify-phase.md +4 -7
- package/gsd-core/workflows/verify-work/steps/automated-ui-verification.md +36 -0
- package/gsd-core/workflows/verify-work/steps/mvp-uat-framing.md +21 -0
- package/gsd-core/workflows/verify-work.md +8 -58
- package/hooks/dist/gsd-agent-isolation-guard.js +428 -0
- package/hooks/dist/gsd-check-update-worker.js +14 -5
- package/hooks/dist/gsd-cursor-subagent-start.js +532 -26
- package/hooks/dist/gsd-read-injection-scanner.js +7 -0
- package/hooks/dist/gsd-statusline.js +72 -6
- package/hooks/dist/gsd-worktree-path-guard.js +2 -1
- package/hooks/dist/gsd-write-guard.js +359 -0
- package/hooks/dist/lib/isolation-sentinel.js +268 -0
- package/hooks/dist/managed-hooks-registry.cjs +2 -0
- package/hooks/gsd-agent-isolation-guard.js +428 -0
- package/hooks/gsd-check-update-worker.js +14 -5
- package/hooks/gsd-cursor-subagent-start.js +532 -26
- package/hooks/gsd-read-injection-scanner.js +7 -0
- package/hooks/gsd-statusline.js +72 -6
- package/hooks/gsd-worktree-path-guard.js +2 -1
- package/hooks/gsd-write-guard.js +359 -0
- package/hooks/hooks.json +12 -0
- package/hooks/lib/isolation-sentinel.js +268 -0
- package/hooks/managed-hooks-registry.cjs +2 -0
- package/package.json +14 -5
- package/pi/gsd.cjs +57 -12
- package/scripts/build-hooks.js +9 -0
- package/scripts/changeset/lint.cjs +9 -2
- package/scripts/changeset/serialize.cjs +5 -1
- package/scripts/gen-capability-matrix.cjs +1 -1
- package/scripts/gen-context-index.cjs +448 -0
- package/scripts/gen-inventory-manifest.cjs +101 -1
- package/scripts/gen-prompt-budget-parity-corpus.cjs +645 -0
- package/scripts/gen-registry.cjs +39 -15
- package/scripts/gen-section-manifest.cjs +638 -0
- package/scripts/generate-package-identity.cjs +4 -2
- package/scripts/lint-allow-test-rule-refs.allowlist.json +17 -31
- package/scripts/lint-compiled-artifact-sync.cjs +6 -1
- package/scripts/lint-docs-command-form.cjs +195 -0
- package/scripts/lint-docs-required.cjs +9 -1
- package/scripts/lint-emitted-drift-ack.cjs +215 -20
- package/scripts/lint-example-parser-parity.cjs +395 -0
- package/scripts/lint-test-file-count.allowlist.json +27 -1
- package/scripts/mutation-matrix.cjs +13 -0
- package/scripts/prompt-injection-scan.sh +27 -6
- package/scripts/registry-schema.cjs +323 -94
- package/scripts/run-tests.cjs +3 -2
- package/scripts/validate-registry.cjs +10 -6
- package/skills/gsd-autonomous/SKILL.md +1 -1
- package/skills/gsd-execute-phase/SKILL.md +1 -1
- package/skills/gsd-mempalace-capture/SKILL.md +1 -1
- package/skills/gsd-new-milestone/SKILL.md +1 -1
- package/skills/gsd-plan-phase/SKILL.md +2 -2
- package/vscode/package.json +1 -1
- package/scripts/gen-emitted-baseline.cjs +0 -145
package/agents/gsd-planner.md
CHANGED
|
@@ -374,7 +374,7 @@ Output: [Artifacts created]
|
|
|
374
374
|
|-----------|----------|-----------|----------|-------------|-----------------|
|
|
375
375
|
| T-{phase}-01 | {S/T/R/I/D/E} | {function/endpoint/file} | {critical\|high\|medium\|low} | mitigate | {specific mitigation action} |
|
|
376
376
|
| T-{phase}-02 | {category} | {component} | low | accept | {rationale for acceptance} |
|
|
377
|
-
| T-{phase}-SC | Tampering | npm/pip/cargo installs | high | mitigate |
|
|
377
|
+
| T-{phase}-SC | Tampering | npm/pip/cargo installs | high | mitigate | package-legitimacy gate + blocking human checkpoint for [ASSUMED]/[SUS] |
|
|
378
378
|
</threat_model>
|
|
379
379
|
|
|
380
380
|
<verification>
|
|
@@ -869,18 +869,15 @@ Include all frontmatter fields.
|
|
|
869
869
|
</step>
|
|
870
870
|
|
|
871
871
|
<step name="validate_plan">
|
|
872
|
-
|
|
872
|
+
`$SCHEMA`: `plan-gap-closure` in gap_closure mode, else `plan`. `gap_closure` must be literal lowercase `true`.
|
|
873
873
|
|
|
874
874
|
```bash
|
|
875
|
-
VALID=$(gsd_run query frontmatter.validate "$PLAN_PATH" --schema
|
|
875
|
+
VALID=$(gsd_run query frontmatter.validate "$PLAN_PATH" --schema "$SCHEMA")
|
|
876
876
|
```
|
|
877
877
|
|
|
878
|
-
Returns JSON: `{ valid, missing, present, schema }`
|
|
878
|
+
Returns JSON: `{ valid, missing, present, invalidValue, schema }`
|
|
879
879
|
|
|
880
|
-
**If `valid=false`:**
|
|
881
|
-
|
|
882
|
-
Required plan frontmatter fields:
|
|
883
|
-
- `phase`, `plan`, `type`, `wave`, `depends_on`, `files_modified`, `autonomous`, `must_haves`
|
|
880
|
+
**If `valid=false`:** `missing` = absent fields, `invalidValue` = present but wrong-valued. Fix either before proceeding.
|
|
884
881
|
|
|
885
882
|
Also validate plan structure:
|
|
886
883
|
|
package/agents/gsd-roadmapper.md
CHANGED
|
@@ -560,9 +560,27 @@ If gaps found, include in draft for user decision.
|
|
|
560
560
|
|
|
561
561
|
Write files first, then return. This ensures artifacts persist even if context is lost.
|
|
562
562
|
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
563
|
+
**Arm the write-guard sentinel before each curated write, when the target already exists.** On a
|
|
564
|
+
`/gsd:new-milestone` run `.planning/ROADMAP.md` and `.planning/STATE.md` still hold the *outgoing*
|
|
565
|
+
milestone's content, and the replacement carries only the new milestone's phases — a legitimate,
|
|
566
|
+
intentional shrink that the `gsd-write-guard` PreToolUse hook (#2255) hard-blocks on curated
|
|
567
|
+
`.planning/` artifacts. A hook inherits the *runtime's* environment, so no per-step env var can reach
|
|
568
|
+
it; the hatch is a **single-use sentinel file the guard itself consumes**. It is path-bound and
|
|
569
|
+
single-use, so arm it immediately before each Write — one arming can never cover both files. On a
|
|
570
|
+
`/gsd:new-project` run neither target exists, the guard exempts the write (ENOENT), and the `[ -f ]`
|
|
571
|
+
test skips the arming so no unconsumed token is left on disk.
|
|
572
|
+
|
|
573
|
+
1. **Write ROADMAP.md** using output format — arm first, then Write:
|
|
574
|
+
|
|
575
|
+
```bash
|
|
576
|
+
[ -f .planning/ROADMAP.md ] && printf '.planning/ROADMAP.md\n' > .planning/.gsd-allow-shrink
|
|
577
|
+
```
|
|
578
|
+
|
|
579
|
+
2. **Write STATE.md** using output format — arm first, then Write:
|
|
580
|
+
|
|
581
|
+
```bash
|
|
582
|
+
[ -f .planning/STATE.md ] && printf '.planning/STATE.md\n' > .planning/.gsd-allow-shrink
|
|
583
|
+
```
|
|
566
584
|
|
|
567
585
|
3. **Update REQUIREMENTS.md traceability section**
|
|
568
586
|
|
package/agents/gsd-verifier.md
CHANGED
|
@@ -285,46 +285,16 @@ grep -r "$artifact_name" "${search_path:-src/}" --include="*.ts" --include="*.ts
|
|
|
285
285
|
|
|
286
286
|
## Step 4b: Data-Flow Trace (Level 4)
|
|
287
287
|
|
|
288
|
-
|
|
288
|
+
Trace each rendered value back to a real data source. Full procedure and shell
|
|
289
|
+
recipes: @gsd-core/references/verifier-wiring-patterns.md
|
|
289
290
|
|
|
290
|
-
|
|
291
|
+
Flag any value whose chain terminates in a static return, a hardcoded literal, or
|
|
292
|
+
a mock rather than a real query.
|
|
291
293
|
|
|
292
|
-
**
|
|
293
|
-
|
|
294
|
-
1. **Identify the data variable** — what state/prop does the artifact render?
|
|
295
|
-
|
|
296
|
-
```bash
|
|
297
|
-
# Find state variables that are rendered in JSX/TSX
|
|
298
|
-
grep -n -E "useState|useQuery|useSWR|useStore|props\." "$artifact" 2>/dev/null
|
|
299
|
-
```
|
|
300
|
-
|
|
301
|
-
2. **Trace the data source** — where does that variable get populated?
|
|
302
|
-
|
|
303
|
-
```bash
|
|
304
|
-
# Find the fetch/query that populates the state
|
|
305
|
-
grep -n -A 5 "set${STATE_VAR}\|${STATE_VAR}\s*=" "$artifact" 2>/dev/null | grep -E "fetch|axios|query|store|dispatch|props\."
|
|
306
|
-
```
|
|
307
|
-
|
|
308
|
-
3. **Verify the source produces real data** — does the API/store return actual data or static/empty values?
|
|
309
|
-
|
|
310
|
-
```bash
|
|
311
|
-
# Check the API route or data source for real DB queries vs static returns
|
|
312
|
-
grep -n -E "prisma\.|db\.|query\(|findMany|findOne|select|FROM" "$source_file" 2>/dev/null
|
|
313
|
-
# Flag: static returns with no query
|
|
314
|
-
grep -n -E "return.*json\(\s*\[\]|return.*json\(\s*\{\}" "$source_file" 2>/dev/null
|
|
315
|
-
```
|
|
316
|
-
|
|
317
|
-
4. **Check for disconnected props** — props passed to child components that are hardcoded empty at the call site
|
|
318
|
-
|
|
319
|
-
```bash
|
|
320
|
-
# Find where the component is used and check prop values
|
|
321
|
-
grep -r -A 3 "<${COMPONENT_NAME}" "${search_path:-src/}" --include="*.tsx" 2>/dev/null | grep -E "=\{(\[\]|\{\}|null|''|\"\")\}"
|
|
322
|
-
```
|
|
323
|
-
|
|
324
|
-
**Data-flow status:**
|
|
294
|
+
**Data-flow status vocabulary:**
|
|
325
295
|
|
|
326
|
-
| Data
|
|
327
|
-
|
|
|
296
|
+
| Data source | Flows | Status |
|
|
297
|
+
| ----------- | ----- | ------ |
|
|
328
298
|
| DB query found | Yes | ✓ FLOWING |
|
|
329
299
|
| Fetch exists, static fallback only | No | ⚠️ STATIC |
|
|
330
300
|
| No data source found | N/A | ✗ DISCONNECTED |
|
|
@@ -359,41 +329,15 @@ For each link:
|
|
|
359
329
|
|
|
360
330
|
**Fallback patterns** (if must_haves.key_links not defined in PLAN):
|
|
361
331
|
|
|
362
|
-
###
|
|
332
|
+
### Wiring patterns
|
|
363
333
|
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
grep -A 5 "fetch\|axios" "$component" | grep -E "await|\.then|setData|setState" 2>/dev/null
|
|
367
|
-
```
|
|
368
|
-
|
|
369
|
-
Status: WIRED (call + response handling) | PARTIAL (call, no response use) | NOT_WIRED (no call)
|
|
370
|
-
|
|
371
|
-
### Pattern: API → Database
|
|
372
|
-
|
|
373
|
-
```bash
|
|
374
|
-
grep -E "prisma\.$model|db\.$model|$model\.(find|create|update|delete)" "$route" 2>/dev/null
|
|
375
|
-
grep -E "return.*json.*\w+|res\.json\(\w+" "$route" 2>/dev/null
|
|
376
|
-
```
|
|
377
|
-
|
|
378
|
-
Status: WIRED (query + result returned) | PARTIAL (query, static return) | NOT_WIRED (no query)
|
|
379
|
-
|
|
380
|
-
### Pattern: Form → Handler
|
|
381
|
-
|
|
382
|
-
```bash
|
|
383
|
-
grep -E "onSubmit=\{|handleSubmit" "$component" 2>/dev/null
|
|
384
|
-
grep -A 10 "onSubmit.*=" "$component" | grep -E "fetch|axios|mutate|dispatch" 2>/dev/null
|
|
385
|
-
```
|
|
386
|
-
|
|
387
|
-
Status: WIRED (handler + API call) | STUB (only logs/preventDefault) | NOT_WIRED (no handler)
|
|
388
|
-
|
|
389
|
-
### Pattern: State → Render
|
|
390
|
-
|
|
391
|
-
```bash
|
|
392
|
-
grep -E "useState.*$state_var|\[$state_var," "$component" 2>/dev/null
|
|
393
|
-
grep -E "\{.*$state_var.*\}|\{$state_var\." "$component" 2>/dev/null
|
|
394
|
-
```
|
|
334
|
+
Verify each link below; full per-pattern procedures and shell recipes:
|
|
335
|
+
@gsd-core/references/verifier-wiring-patterns.md
|
|
395
336
|
|
|
396
|
-
|
|
337
|
+
- **Component → API** — the component actually calls the endpoint it claims.
|
|
338
|
+
- **API → Database** — the endpoint issues a real query, not a static return.
|
|
339
|
+
- **Form → Handler** — submission reaches a handler that persists.
|
|
340
|
+
- **State → Render** — state changes actually reach the rendered output.
|
|
397
341
|
|
|
398
342
|
## Step 6: Check Requirements Coverage
|
|
399
343
|
|