* feat(#1945): tracer-first planning default + executor feedback gate Make "thin end-to-end slice first, verify, then expand" the default planning + execution discipline instead of the opt-in --mvp mode. - gsd-planner: first-class `type="tracer"` task; every plan LEADS with one production-quality end-to-end tracer slice by default; --no-tracer restores horizontal layers; --mvp/--tdd compose on top. - gsd-executor + execute-plan: post-tracer feedback gate — autonomous runs halt-on-fail before expansion, interactive runs emit checkpoint:human-verify after the tracer. - --no-tracer flag wired through plan-phase workflow/command/help/skill. - CONTEXT.md glossary defines tracer bullet vs prototype; docs + references reconciled. - tests/tracer-bullet.test.cjs: prose-contract + behavioral (verify plan-structure accepts tracer) coverage. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * chore(#1945): backfill changeset PR number to 2294 --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
5
.changeset/tidy-goats-wake.md
Normal file
5
.changeset/tidy-goats-wake.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
type: Changed
|
||||
pr: 2294
|
||||
---
|
||||
**Phase plans now lead with a verified end-to-end "tracer" slice by default** — every plan starts with one thin, production-quality slice wired through every layer, which the executor verifies before building out the remaining tasks, so an architectural dead-end surfaces after one commit instead of after ten. Pass `--no-tracer` to restore the previous horizontal-layer default; `--mvp` now layers user-story framing and the Walking Skeleton on top of the tracer-first ordering. (#1945)
|
||||
@@ -347,16 +347,19 @@ Second adapter of the Probe Core Module (ADR-550 Decision 7): the spec-phase pro
|
||||
The SINGLE source of truth for "did the phase SPEC supply section X (with at least one resolved row)?" — the SPEC-section detection seam consumed by `plan-phase` Step 7.95 (the spec-less probe fallback) to decide, per section, whether to run the fallback. Replaces the ad-hoc `awk` that previously lived in the workflow body, which hard-coded the section header strings at the call site and hand-rolled markdown-table row counting — a brittleness that produced two bugs: an exact `^## Prohibitions$` anchor that missed the canonical `## Prohibitions (must-NOT)` heading, and a single-table row-counting assumption. **Suffix-tolerant header invariant:** `SECTION_HEADERS` regexes match a heading AND any parenthetical/whitespace suffix — `prohibitions` matches both `## Prohibitions` and `## Prohibitions (must-NOT)`; `edges` matches `## Edge Coverage` (and any future suffix); if spec-phase renames a heading, update HERE and the `templates/spec.md` heading together (the contract is pinned by `tests/spec-section.test.cjs`). **Supply rule:** `supplied = present AND dataRows > 0` — a present-but-empty section is NOT supplied (it triggers the fallback). **Multi-table robustness:** a blank or prose line resets the per-table state, so a section with multiple tables (or prose between them) counts every table's data rows without miscounting a second table's header row; the `|…|` line before a `|---|` separator is the table header row and is never counted. **Fail-safe:** a missing/unreadable SPEC file resolves to `present:false` / `supplied:false` (so the fallback fires) rather than throwing. Exports (locked surface): the `SpecSectionKey` type (`edges | prohibitions`), `SECTION_HEADERS` (the canonical header matchers), the `SectionStatus` shape (`{ key, present, dataRows, supplied }`), `countSectionDataRows` (pure `specText → { present, dataRows }`), and `specSectionStatus` (disk-reading wrapper). CLI: `node spec-section.cjs <specFile> <edges|prohibitions>` prints `SectionStatus` JSON — exit 0 on success (an absent file is a valid "not supplied" answer), exit 2 only on a usage error (missing args / bad key). Pure and dependency-free. Source of truth: `gsd-core/bin/lib/spec-section.cjs` (generated from `src/spec-section.cts`, gitignored per ADR-457). Tests: `tests/spec-section.test.cjs`. See Edge Probe Module, Prohibition Probe Module, and `references/specless-probe-fallback.md`.
|
||||
|
||||
### MVP Mode
|
||||
Phase-level planning mode that frames work as a vertical slice (UI → API → DB) of one user-visible capability instead of horizontal layers. Resolved at workflow init via the precedence chain: `--mvp` CLI flag → ROADMAP.md `**Mode:** mvp` field → `workflow.mvp_mode` config → false. All-or-nothing per phase (PRD #2826 Q1). Surfaced as `MVP_MODE=true|false` to the planner, executor, verifier, and discovery surfaces (progress, stats, graphify). Canonical parser: `roadmap.cjs` `**Mode:**` field; canonical resolution chain documented in `workflows/plan-phase.md`. Concept index: `references/mvp-concepts.md`.
|
||||
Phase-level planning **enrichment** layered on top of the default tracer-first decomposition (see Tracer Bullet): it frames the phase goal as a User Story and, on Phase 1 of a new project, emits a Walking Skeleton. Vertical slicing itself is now the default, so MVP Mode no longer *turns it on* — it adds the user-story framing + skeleton. Resolved at workflow init via the precedence chain: `--mvp` CLI flag → ROADMAP.md `**Mode:** mvp` field → `workflow.mvp_mode` config → false. All-or-nothing per phase (PRD #2826 Q1). Surfaced as `MVP_MODE=true|false` to the planner, executor, verifier, and discovery surfaces (progress, stats, graphify). Canonical parser: `roadmap.cjs` `**Mode:**` field; canonical resolution chain documented in `workflows/plan-phase.md`. Concept index: `references/mvp-concepts.md`.
|
||||
|
||||
### User Story
|
||||
Phase-goal format under MVP Mode: `As a [role], I want to [capability], so that [outcome].` Required regex shape: `/^As a .+, I want to .+, so that .+\.$/`. Used as the framing input by `gsd-planner` (emits as bolded `## Phase Goal` header in PLAN.md) and as the verification target by `gsd-verifier` (the `[outcome]` clause is the goal-backward verification anchor). Authored interactively by `/gsd-mvp-phase`, validated by SPIDR Splitting when too large.
|
||||
|
||||
### Walking Skeleton
|
||||
Phase 1 deliverable under `--mvp` on a new project: the thinnest end-to-end stack proving every layer (framework, DB, routing, deployment) works together. Emitted as `SKELETON.md` capturing the architectural decisions subsequent vertical slices inherit. Gate fires when `phase_number == "01"` AND `prior_summaries == 0` AND `MVP_MODE=true`. Scope intentionally narrow (PRD #2826 Q2) — does not retrofit existing projects.
|
||||
Phase 1 deliverable under `--mvp` on a new project — the Phase-1 whole-application special case of a Tracer Bullet: the thinnest end-to-end stack proving every layer (framework, DB, routing, deployment) works together. Emitted as `SKELETON.md` capturing the architectural decisions subsequent vertical slices inherit. Gate fires when `phase_number == "01"` AND `prior_summaries == 0` AND `MVP_MODE=true`. Scope intentionally narrow (PRD #2826 Q2) — does not retrofit existing projects.
|
||||
|
||||
### Vertical Slice
|
||||
Single-feature task that moves one user capability from open-to-close (happy path) end-to-end. Contrast with the horizontal layer (all models, then all APIs, then all UI). The MVP Mode planning unit; SPIDR Splitting axes (Spike, Paths, Interfaces, Data, Rules) are the canonical decomposition tools when a slice is too large for one phase.
|
||||
Single-feature task that moves one user capability from open-to-close (happy path) end-to-end. Contrast with the horizontal layer (all models, then all APIs, then all UI). The default planning unit under tracer-first decomposition (the leading task is a Tracer Bullet); SPIDR Splitting axes (Spike, Paths, Interfaces, Data, Rules) are the canonical decomposition tools when a slice is too large for one phase.
|
||||
|
||||
### Tracer Bullet
|
||||
The default GSD decomposition lead: a **permanent, production-quality, minimal end-to-end slice** that wires one path through every layer a phase touches and becomes part of the skeleton of the final system — written for keeps, not thrown away. Contrast with a **prototype** (throwaway reconnaissance code, deleted once its lesson is learned): a tracer's *functionality* gaps are acceptable but its *architectural* gaps are not; stubs are allowed only where they can later be filled without an architectural change. GSD ships tracers, never prototypes — which is why `gsd-planner` LEADS every plan with a `type="tracer"` task (default; `--no-tracer` / `TRACER_MODE=false` opts back into horizontal layers) and `gsd-executor` runs an early integration feedback gate on the tracer's `<verify>` before expansion tasks (autonomous: halt-on-fail; interactive: `checkpoint:human-verify`). Origin: *The Pragmatic Programmer* "Tracer Bullets" (#1945); the Walking Skeleton is the Phase-1 whole-application special case. See Vertical Slice, MVP Mode, Walking Skeleton.
|
||||
|
||||
### Behavior-Adding Task
|
||||
Predicate over a PLAN.md task: `tdd="true"` frontmatter AND `<behavior>` block names a user-visible outcome AND `<files>` includes at least one non-`*.md` / non-`*.json` / non-`*.test.*` source file. Pure doc/config/test-only tasks are exempt. The MVP+TDD Gate (in `references/execute-mvp-tdd.md`) only halts execution on this predicate; the gsd-executor agent applies all three checks at runtime. Currently a prose-only specification — no shared utility.
|
||||
|
||||
@@ -152,11 +152,17 @@ For each task:
|
||||
- Commit (see task_commit_protocol)
|
||||
- Track completion + commit hash for Summary
|
||||
|
||||
2. **If `type="checkpoint:*"`:**
|
||||
2. **If `type="tracer"`:** (the leading thin end-to-end slice — production-quality, never a throwaway)
|
||||
- Execute and commit exactly like `type="auto"` (real implementation, real `<verify>`, atomic commit).
|
||||
- **Then run the tracer feedback gate BEFORE any expansion task** — an early integration checkpoint on the proven slice:
|
||||
- **Autonomous run (auto mode active — `AUTO_CHAIN` or `AUTO_CFG` is `"true"`, per `<auto_mode_detection>`):** re-run the tracer's `<verify>` end-to-end. If it **fails**, HALT and surface it (deviation Rule 1) — do NOT proceed to expansion tasks. Pouring more layers onto a broken foundation is exactly the failure this gate prevents. If it passes, log `⚡ Tracer verified end-to-end — expanding` and continue.
|
||||
- **Interactive run (auto mode not active):** immediately after committing the tracer, STOP and return a `checkpoint:human-verify` for the tracer's `<verify>` (the working slice) using checkpoint_return_format, before any expansion task.
|
||||
|
||||
3. **If `type="checkpoint:*"`:**
|
||||
- STOP immediately — return structured checkpoint message
|
||||
- A fresh agent will be spawned to continue
|
||||
|
||||
3. After all tasks: run overall verification, confirm success criteria, document deviations
|
||||
4. After all tasks: run overall verification, confirm success criteria, document deviations
|
||||
</step>
|
||||
|
||||
</execution_flow>
|
||||
@@ -310,6 +316,8 @@ For full automation-first patterns, server lifecycle, CLI handling:
|
||||
|
||||
**Quick reference:** Users NEVER run CLI commands. Users ONLY visit URLs, click UI, evaluate visuals, provide secrets. Claude does all automation.
|
||||
|
||||
**Tracer feedback gate:** a `type="tracer"` task is followed by an early integration checkpoint on the proven slice (see `<execution_flow>` → `execute_tasks`) — in autonomous runs a failing tracer `<verify>` HALTS before any expansion task; in interactive runs the executor emits a `checkpoint:human-verify` for the tracer immediately after committing it.
|
||||
|
||||
---
|
||||
|
||||
**Auto-mode checkpoint behavior** (when `AUTO_CFG` is `"true"`):
|
||||
|
||||
@@ -250,34 +250,33 @@ Exceptions where `tdd="true"` is not needed: `type="checkpoint:*"` tasks, config
|
||||
|
||||
`workflow.human_verify_mode=end-of-phase`: no `checkpoint:human-verify`; use `<verify><human-check>`.
|
||||
|
||||
## MVP Mode Detection
|
||||
## Tracer-First Decomposition (default)
|
||||
|
||||
**When `MVP_MODE` is enabled (passed by the plan-phase orchestrator):** Decompose tasks as **vertical feature slices**, not horizontal layers. Required reading: Read `~/.claude/gsd-core/references/planner-mvp-mode.md` for the vertical-slice rules (lazy — only on MVP runs).
|
||||
**Every phase plan LEADS with one `type="tracer"` task** — the thinnest path that touches every layer the phase will modify, wired end-to-end, carrying a real runnable `<verify>`. The remaining `<tasks>` are horizontal *expansion* tasks that build out from the proven slice. This is the default for **every** phase; it is not gated behind a flag. Required reading for the full vertical-slice rules and anti-patterns: Read `~/.claude/gsd-core/references/planner-mvp-mode.md`.
|
||||
|
||||
**Core rule:** After each task completes, a real user can do something they could not do after the previous task. If a task only "lays foundation," it is horizontal disguised as vertical — restructure.
|
||||
**Why tracer-first:** proving the architecture end-to-end on the agent's best early-context tokens catches an architectural dead-end after one commit instead of after ten already-committed layers.
|
||||
|
||||
**Plan structure under MVP_MODE:**
|
||||
**A tracer is production-quality, not a prototype.** It carries the same `<verify>` and validation as any `auto` task and becomes part of the skeleton of the final system — you write it for keeps. Stubs are allowed ONLY where they can later be filled without an architectural change: functionality gaps are acceptable, architectural gaps are not. (Glossary: `tracer bullet` vs `prototype` in `CONTEXT.md` — GSD ships tracers, never prototypes.)
|
||||
|
||||
1. Frame the phase goal as a user story at the top of `PLAN.md`. The user story is sourced from the `**Goal:**` line in ROADMAP.md (set by `mvp-phase`). Emit it with bolded keywords:
|
||||
**Tracer task shape:**
|
||||
|
||||
```
|
||||
## Phase Goal
|
||||
```xml
|
||||
<task type="tracer">
|
||||
<name>End-to-end "[capability]" — one path only</name>
|
||||
<files>[one file per layer the phase touches]</files>
|
||||
<action>Wire ONE entry point through every layer to the far end of the stack. No other call sites, no batching. Real error handling on the single path.</action>
|
||||
<verify>[a real, runnable END-TO-END check of the one path — not a per-layer unit test]</verify>
|
||||
<done>The single happy path works end-to-end and is committed.</done>
|
||||
</task>
|
||||
```
|
||||
|
||||
**As a** [user role], **I want to** [capability], **so that** [outcome].
|
||||
```
|
||||
**Core rule (expansion tasks):** after each task a real user can do something they could not before. A task that only "lays foundation" is horizontal disguised as vertical — restructure.
|
||||
|
||||
Format rules (Read `~/.claude/gsd-core/references/user-story-template.md`):
|
||||
- All three slots required. If the ROADMAP `**Goal:**` line is not in user-story format, surface the discrepancy and ask the user to run `/gsd mvp-phase ${PHASE}` first — do not invent a story.
|
||||
- Bold the three keywords (`**As a**`, `**I want to**`, `**so that**`) when emitting to PLAN.md. The ROADMAP form does not use bolded keywords; the PLAN form does.
|
||||
2. First task: failing end-to-end test for the happy path.
|
||||
3. Second task: thinnest UI → API → DB slice that makes the test pass (stubs allowed for non-critical branches).
|
||||
4. Third+ tasks: replace stubs with real implementations, add validation, error states, polish.
|
||||
**`--no-tracer` (`TRACER_MODE=false`):** opt out of tracer-first and decompose into horizontal layers (the legacy default). Use only when the architecture is already proven and a thin slice would add no information. Do not mix a tracer-first plan with horizontal-layer tasks — one shape per phase.
|
||||
|
||||
**Mode is all-or-nothing per phase** (PRD decision Q1). Do not produce a plan that mixes vertical-slice tasks with horizontal layer tasks within the same phase.
|
||||
**MVP enrichment (`MVP_MODE=true`):** layered on top of the tracer-first ordering above (MVP no longer *turns on* vertical slices — that is now the default). It adds: (1) frame the phase goal as a user story at the top of `PLAN.md`, sourced from the ROADMAP `**Goal:**` line, bolding `**As a**` / `**I want to**` / `**so that**` (Read `~/.claude/gsd-core/references/user-story-template.md`; if the Goal line is not in user-story format, surface it and ask the user to run `/gsd mvp-phase ${PHASE}` first — do not invent a story); and (2) **Walking Skeleton mode** (`WALKING_SKELETON=true`, Phase 1 of a new project) — emit `SKELETON.md` from `~/.claude/gsd-core/references/skeleton-template.md` alongside `PLAN.md`. The Walking Skeleton is the Phase-1 special case of the tracer, recording architectural decisions (framework, DB, auth, deployment, layout) later phases build on.
|
||||
|
||||
**Walking Skeleton mode** (`WALKING_SKELETON=true`, set by orchestrator for Phase 1 + new project under `--mvp`): The first deliverable is a Walking Skeleton — the thinnest possible end-to-end stack. In addition to `PLAN.md`, produce `SKELETON.md` using the template at `~/.claude/gsd-core/references/skeleton-template.md` (Read it now). `SKELETON.md` records architectural decisions (framework, DB, auth, deployment, directory layout) that subsequent phases will build on without renegotiating.
|
||||
|
||||
**Compatibility with TDD detection:** When both `MVP_MODE=true` and `workflow.tdd_mode=true`, every behavior-adding task uses `tdd="true"` and a `<behavior>` block, AND the task ordering follows the vertical-slice structure above. The first task is always a failing end-to-end test.
|
||||
**TDD composition (`workflow.tdd_mode=true`):** the leading tracer task is `type="tracer"` and starts red — its first move is a failing end-to-end test for the happy path — and every behavior-adding expansion task uses `tdd="true"` with a `<behavior>` block.
|
||||
|
||||
See @~/.claude/gsd-core/references/planner-guidance.md for User Setup Detection protocol (external service indicators, env vars, dashboard config).
|
||||
|
||||
@@ -768,6 +767,8 @@ At decision points during plan creation, apply structured reasoning:
|
||||
|
||||
Decompose phase into tasks. **Think dependencies first, not sequence.**
|
||||
|
||||
**Lead with the tracer.** Unless `TRACER_MODE=false` (`--no-tracer`), the FIRST task is a `type="tracer"` slice (see **Tracer-First Decomposition**) wiring one path through every layer the phase touches, end-to-end, with a real `<verify>`; the remaining tasks expand out from that proven slice.
|
||||
|
||||
For each task:
|
||||
1. What does it NEED? (files, types, APIs that must exist)
|
||||
2. What does it CREATE? (files, types, APIs others might need)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: gsd:plan-phase
|
||||
description: Create detailed phase plan (PLAN.md) with verification loop
|
||||
argument-hint: "[phase] [--auto] [--research] [--skip-research] [--research-phase <N>] [--view] [--gaps] [--skip-verify] [--prd <file>] [--ingest <path-or-glob>] [--ingest-format <auto|nygard|madr|narrative>] [--reviews] [--text] [--tdd] [--mvp]"
|
||||
argument-hint: "[phase] [--auto] [--research] [--skip-research] [--research-phase <N>] [--view] [--gaps] [--skip-verify] [--prd <file>] [--ingest <path-or-glob>] [--ingest-format <auto|nygard|madr|narrative>] [--reviews] [--text] [--tdd] [--mvp] [--no-tracer]"
|
||||
effort: max
|
||||
allowed-tools:
|
||||
- Read
|
||||
@@ -52,7 +52,8 @@ Phase number: $ARGUMENTS (optional — auto-detects next unplanned phase if omit
|
||||
- `--ingest-format <auto|nygard|madr|narrative>` — Optional ADR parser format override (`auto` default).
|
||||
- `--reviews` — Replan incorporating cross-AI review feedback from REVIEWS.md (produced by `/gsd:review`)
|
||||
- `--text` — Use plain-text numbered lists instead of TUI menus (required for `/rc` remote sessions)
|
||||
- `--mvp` — Vertical MVP mode. Planner organizes tasks as feature slices (UI→API→DB) instead of horizontal layers. On Phase 1 of a new project, also emits `SKELETON.md` (Walking Skeleton). Can be persisted on a phase via `**Mode:** mvp` in ROADMAP.md.
|
||||
- `--mvp` — MVP enrichment on top of the default tracer-first ordering: frames the phase goal as a user story and, on Phase 1 of a new project, also emits `SKELETON.md` (Walking Skeleton). Vertical slicing itself is now the default (see `--no-tracer`); `--mvp` no longer *turns it on*. Can be persisted on a phase via `**Mode:** mvp` in ROADMAP.md.
|
||||
- `--no-tracer` — Opt out of the default **tracer-first** decomposition and plan horizontal layers (the legacy default). By default every plan LEADS with one production-quality end-to-end `tracer` slice that is verified before any expansion task.
|
||||
|
||||
Normalize phase input in step 2 before any directory lookups.
|
||||
</context>
|
||||
|
||||
@@ -215,7 +215,8 @@ GSD uses a multi-agent architecture where thin orchestrators (workflow files) sp
|
||||
- Fresh 200K context window per plan
|
||||
- Follows XML task instructions precisely
|
||||
- Atomic git commit per completed task
|
||||
- Handles checkpoint types: auto, human-verify, decision, human-action
|
||||
- Handles task types: auto, tracer, checkpoint (human-verify, decision, human-action)
|
||||
- Tracer feedback gate: after a `tracer` slice, verifies it end-to-end before expansion tasks — autonomous runs halt on failure; interactive runs emit a human-verify checkpoint
|
||||
- Reports deviations from plan in SUMMARY.md
|
||||
- Invokes node repair on verification failure
|
||||
|
||||
|
||||
@@ -211,8 +211,9 @@ Research, plan, and verify a phase.
|
||||
| `--validate` | Run state validation before planning begins |
|
||||
| `--bounce` | Run external plan bounce validation after planning (uses `workflow.plan_bounce_script`) |
|
||||
| `--skip-bounce` | Skip plan bounce even if enabled in config |
|
||||
| `--mvp` | Vertical MVP mode — planner organizes tasks as feature slices (UI→API→DB) instead of horizontal layers. On Phase 1 of a new project with no prior phase summaries, also emits `SKELETON.md` (Walking Skeleton). Can be persisted on a phase via `**Mode:** mvp` in ROADMAP.md, which applies `--mvp` automatically without the flag. |
|
||||
| `--tdd` | TDD mode — planner applies `type: tdd` to eligible behavior-adding tasks so each begins with a failing test. Composable with `--mvp`: `--mvp --tdd` produces vertical slices where every behavior-adding task starts red-green. |
|
||||
| `--mvp` | MVP enrichment on top of the default tracer-first ordering — frames the phase goal as a user story and, on Phase 1 of a new project with no prior phase summaries, also emits `SKELETON.md` (Walking Skeleton). Vertical slicing is now the default (see `--no-tracer`); `--mvp` no longer turns it on. Can be persisted on a phase via `**Mode:** mvp` in ROADMAP.md, which applies `--mvp` automatically without the flag. |
|
||||
| `--no-tracer` | Opt out of the default **tracer-first** decomposition and plan horizontal layers (the legacy default). By default every plan leads with one production-quality end-to-end `tracer` slice that the executor verifies before any expansion task. |
|
||||
| `--tdd` | TDD mode — planner applies `type: tdd` to eligible behavior-adding tasks so each begins with a failing test. Composable with `--mvp`: `--mvp --tdd` produces vertical slices where every behavior-adding task starts red-green. The leading `tracer` task also starts red under `--tdd`. |
|
||||
| `--granularity <coarse\|standard\|fine>` | Override the planning granularity for this invocation, ignoring config. Valid values: `coarse`, `standard`, `fine`. Takes precedence over `granularities.planning`, top-level `granularity`, and `planning.granularity` config. |
|
||||
|
||||
**Prerequisites:** `.planning/ROADMAP.md` exists
|
||||
|
||||
@@ -78,17 +78,23 @@ If you want this granularity applied permanently, set it in config — see [CONF
|
||||
|
||||
---
|
||||
|
||||
## Plan vertical feature slices instead of horizontal layers
|
||||
## Tracer-first slices (the default) and opting out
|
||||
|
||||
**If you want tasks organised as thin end-to-end slices** (UI → API → DB per feature) rather than by technical layer:
|
||||
**By default, every plan leads with a `tracer` task** — the thinnest end-to-end slice (UI → API → DB) that touches every layer the phase modifies, wired and verified before any expansion task. A tracer is production-quality, not a throwaway prototype (see the `tracer bullet` glossary entry in `CONTEXT.md`). This proves the architecture early instead of discovering an integration dead-end after ten committed layers.
|
||||
|
||||
To opt out and plan horizontal layers (the legacy default):
|
||||
|
||||
```bash
|
||||
/gsd-plan-phase 1 --no-tracer
|
||||
```
|
||||
|
||||
`--mvp` layers MVP enrichment on top of tracer-first — it frames the phase goal as a user story and, on Phase 1 of a new project with no prior phase summaries, also produces `SKELETON.md` (a Walking Skeleton covering project scaffold, routing, one real DB read/write, one real UI interaction, and dev deployment):
|
||||
|
||||
```bash
|
||||
/gsd-plan-phase 1 --mvp
|
||||
```
|
||||
|
||||
On Phase 1 of a new project with no prior phase summaries, `--mvp` also produces `SKELETON.md` — a Walking Skeleton covering project scaffold, routing, one real DB read/write, one real UI interaction, and dev deployment.
|
||||
|
||||
You can persist MVP mode for a phase without the flag by adding `**Mode:** mvp` to that phase's entry in ROADMAP.md.
|
||||
You can persist MVP enrichment for a phase without the flag by adding `**Mode:** mvp` to that phase's entry in ROADMAP.md.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -144,7 +144,7 @@ References source files the executor needs to read. Includes project-level plann
|
||||
|
||||
### `<tasks>`
|
||||
|
||||
Contains one or more `<task>` elements. Every task element must carry `<name>`, `<files>`, `<read_first>`, `<action>`, `<verify>`, `<acceptance_criteria>`, and `<done>` for `type="auto"` tasks.
|
||||
Contains one or more `<task>` elements. Every task element must carry `<name>`, `<files>`, `<read_first>`, `<action>`, `<verify>`, `<acceptance_criteria>`, and `<done>` for `type="auto"` and `type="tracer"` tasks.
|
||||
|
||||
---
|
||||
|
||||
@@ -153,6 +153,7 @@ Contains one or more `<task>` elements. Every task element must carry `<name>`,
|
||||
| Type | Use | Autonomy |
|
||||
|---|---|---|
|
||||
| `auto` | Everything the executor can do independently. | Fully autonomous. |
|
||||
| `tracer` | The leading thin end-to-end slice a plan starts with by default (tracer-first) — production-quality, wired through every layer, with a real end-to-end `<verify>`. | Fully autonomous; after committing, the executor runs the tracer's `<verify>` as an early integration gate — autonomous runs halt on failure before expansion, interactive runs present a `checkpoint:human-verify`. |
|
||||
| `checkpoint:human-verify` | Visual or functional verification that requires a human to look at a running UI or service. | Pauses execution; presents to the developer; resumes on approval. |
|
||||
| `checkpoint:decision` | Implementation choices that arose during execution and require the developer's input. | Pauses execution; presents options; resumes on selection. |
|
||||
| `checkpoint:human-action` | Truly unavoidable manual steps (account creation, hardware interaction). Used sparingly. | Pauses execution; resumes on confirmation. |
|
||||
|
||||
@@ -1,32 +1,31 @@
|
||||
# Planner — MVP Mode (Vertical Slice Strategy)
|
||||
# Planner — Tracer-First Decomposition (Vertical Slices)
|
||||
|
||||
> Loaded by `gsd-planner` only when `MVP_MODE=true`. Standard horizontal-layer planning rules continue to apply for all other phases.
|
||||
> Loaded by `gsd-planner` for the **default** tracer-first decomposition: every phase LEADS with one thin end-to-end `type="tracer"` slice, then expansion tasks. `--no-tracer` (`TRACER_MODE=false`) restores standard horizontal-layer planning. The MVP enrichment (user-story framing) and Walking Skeleton mode apply *on top* when `MVP_MODE=true` / `WALKING_SKELETON=true`.
|
||||
|
||||
## Core Rule
|
||||
|
||||
**Decompose by feature slice, not by technical layer.** Every task must move the user-facing capability forward. After each task, a real user can click through more of the feature than they could before.
|
||||
|
||||
**Forbidden** in MVP mode:
|
||||
**Forbidden** under tracer-first:
|
||||
- "Create the database schema" as a standalone task
|
||||
- "Build the API layer" as a standalone task
|
||||
- "Wire up the UI" as a final integration task
|
||||
|
||||
**Required** in MVP mode:
|
||||
- The first non-test task produces a working end-to-end path. Stubs are allowed for non-critical branches; the happy path must be real.
|
||||
- Each subsequent task either adds a new slice OR refines an existing slice (validation, error states, edge cases).
|
||||
- The phase goal is framed as a user story: "**As a** [user], **I want to** [do X], **so that** [Y]."
|
||||
**Required** under tracer-first:
|
||||
- The leading `tracer` task produces a working end-to-end path — production-quality, not a prototype. Stubs are allowed ONLY where they can later be filled without an architectural change; the happy path must be real.
|
||||
- Each subsequent expansion task either adds a new slice OR refines an existing slice (validation, error states, edge cases).
|
||||
- *(MVP enrichment, `MVP_MODE=true`)* The phase goal is framed as a user story: "**As a** [user], **I want to** [do X], **so that** [Y]."
|
||||
|
||||
## Task Order Pattern
|
||||
|
||||
For a feature `F`:
|
||||
|
||||
1. **Failing end-to-end test** for the happy path of `F`.
|
||||
2. **Thinnest viable slice** — UI form → API endpoint → DB read/write — that makes the test pass. Hard-coded values, missing validation, no error states are fine here.
|
||||
3. **Real data layer** — replace any stubs from Task 2 with real queries.
|
||||
4. **Validation + error states** — invalid input, network failure, empty states.
|
||||
5. **Production polish** — loading indicators, edge cases, accessibility checks.
|
||||
1. **Tracer slice** — the thinnest end-to-end path (UI form → API endpoint → DB read/write), wired through every layer with a real runnable `<verify>`. This task is always `type="tracer"`; production-quality, not a prototype; stubs only where later-fillable without an architectural change. Under `--tdd` it *also* starts red — its first move is a failing end-to-end test for the happy path of `F`.
|
||||
2. **Real data layer** — replace any stubs from the tracer with real queries.
|
||||
3. **Validation + error states** — invalid input, network failure, empty states.
|
||||
4. **Production polish** — loading indicators, edge cases, accessibility checks.
|
||||
|
||||
Tasks 3-5 are not always all needed; gate by the phase's acceptance criteria.
|
||||
Tasks 2-4 are not always all needed; gate by the phase's acceptance criteria.
|
||||
|
||||
## Walking Skeleton Mode (`WALKING_SKELETON=true`)
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# SKELETON.md Template
|
||||
|
||||
> Emitted by `gsd-planner` when `WALKING_SKELETON=true` (Phase 1 + `--mvp` + new project). Records the architectural decisions the rest of the project will build on.
|
||||
> Emitted by `gsd-planner` when `WALKING_SKELETON=true` (Phase 1 + `--mvp` + new project). The Walking Skeleton is the **Phase-1 special case of the tracer** — a whole-application tracer slice — so it records the architectural decisions the rest of the project's later tracer slices build on.
|
||||
|
||||
```markdown
|
||||
# Walking Skeleton — [Project Name]
|
||||
|
||||
@@ -189,6 +189,7 @@ Deviations are normal — handle via rules below.
|
||||
3. Per task:
|
||||
- **MANDATORY read_first gate:** If the task has a `<read_first>` field, you MUST read every listed file BEFORE making any edits. This is not optional. Do not skip files because you "already know" what's in them — read them. The read_first files establish ground truth for the task.
|
||||
- `type="auto"`: if `tdd="true"` → TDD execution. Implement with deviation rules + auth gates. Verify done criteria. Commit (see task_commit). Track hash for Summary.
|
||||
- `type="tracer"`: execute like `type="auto"` (production-quality, real `<verify>`, commit), then run the tracer feedback gate BEFORE any expansion task — an early integration checkpoint. Auto mode active (`AUTO_CHAIN` or `AUTO_CFG`): re-run the tracer `<verify>`; on failure HALT and surface (deviation) — do NOT start expansion tasks. Interactive: STOP → return a `checkpoint:human-verify` for the tracer via checkpoint_protocol before expansion.
|
||||
- `type="checkpoint:*"`: STOP → checkpoint_protocol → wait for user → continue only after confirmation.
|
||||
- **HARD GATE — acceptance_criteria verification:** After completing each task, if it has `<acceptance_criteria>`, you MUST run a verification loop before proceeding:
|
||||
1. For each criterion: execute the grep, file check, or CLI command that proves it passes
|
||||
|
||||
@@ -105,7 +105,7 @@ Usage: `/gsd:discuss-phase 2`
|
||||
Usage: `/gsd:discuss-phase 2 --batch`
|
||||
Usage: `/gsd:discuss-phase 2 --batch=3`
|
||||
|
||||
**`/gsd:plan-phase <number> [--research] [--skip-research] [--research-phase <N>] [--view] [--gaps] [--skip-verify] [--prd <file>] [--ingest <path-or-glob>] [--ingest-format <auto|nygard|madr|narrative>] [--reviews] [--text] [--tdd] [--mvp]`**
|
||||
**`/gsd:plan-phase <number> [--research] [--skip-research] [--research-phase <N>] [--view] [--gaps] [--skip-verify] [--prd <file>] [--ingest <path-or-glob>] [--ingest-format <auto|nygard|madr|narrative>] [--reviews] [--text] [--tdd] [--mvp] [--no-tracer]`**
|
||||
Create detailed execution plan for a specific phase.
|
||||
|
||||
- `--skip-research` — bypass the research subagent
|
||||
@@ -116,7 +116,8 @@ Create detailed execution plan for a specific phase.
|
||||
- `--ingest <path-or-glob>` — pre-ingest external ADRs/PRDs/SPECs before planning (see *PRD Express Path* below)
|
||||
- `--ingest-format <auto|nygard|madr|narrative>` — hint the ADR ingester's parser when `--ingest` is set; defaults to `auto`
|
||||
- `--tdd` — plan in test-driven order (tests before code)
|
||||
- `--mvp` — vertical-slice MVP planning mode (see also `/gsd:mvp-phase`)
|
||||
- `--mvp` — MVP enrichment (user story + Walking Skeleton) on top of the default tracer-first ordering (see also `/gsd:mvp-phase`)
|
||||
- `--no-tracer` — opt out of the default tracer-first slice and plan horizontal layers (legacy default)
|
||||
|
||||
- Generates `.planning/phases/XX-phase-name/XX-YY-PLAN.md`
|
||||
- Breaks phase into concrete, actionable tasks
|
||||
|
||||
@@ -95,7 +95,7 @@ Read and execute `gsd-core/workflows/plan-phase/steps/closed-phase-gate.md` —
|
||||
|
||||
## 2. Parse and Normalize Arguments
|
||||
|
||||
Extract from $ARGUMENTS: phase number (integer or decimal like `2.1`), flags (`--research`, `--skip-research`, `--research-phase <N>`, `--gaps`, `--skip-verify`, `--skip-ui`, `--prd <filepath>`, `--ingest <path-or-glob>`, `--ingest-format <auto|nygard|madr|narrative>`, `--reviews`, `--text`, `--bounce`, `--skip-bounce`, `--chunked`, `--mvp`, `--tdd`, `--granularity <coarse|standard|fine>`, `--force` (override closed-phase gate, see §1.5)).
|
||||
Extract from $ARGUMENTS: phase number (integer or decimal like `2.1`), flags (`--research`, `--skip-research`, `--research-phase <N>`, `--gaps`, `--skip-verify`, `--skip-ui`, `--prd <filepath>`, `--ingest <path-or-glob>`, `--ingest-format <auto|nygard|madr|narrative>`, `--reviews`, `--text`, `--bounce`, `--skip-bounce`, `--chunked`, `--mvp`, `--no-tracer`, `--tdd`, `--granularity <coarse|standard|fine>`, `--force` (override closed-phase gate, see §1.5)).
|
||||
|
||||
**`--research-phase <N>` — research-only mode (#3042 + #3044).** When this flag is present, parse `<N>` as the phase number (overrides any positional phase argument), set `RESEARCH_ONLY=true`, and treat the rest of this workflow as a research-dispatch only — the planner spawn (step 8), plan-checker, verification, gaps, bounce, and post-planning-gaps blocks all skip on `RESEARCH_ONLY`. Use this for cross-phase research, doc review before committing to a planning approach, and correction-without-replanning loops. Replaces the deleted `/gsd-research-phase` command.
|
||||
|
||||
@@ -128,8 +128,13 @@ if [[ "$ARGUMENTS" =~ (^|[[:space:]])--mvp([[:space:]]|$) ]]; then MVP_FLAG_ARG=
|
||||
if [[ "$ARGUMENTS" =~ (^|[[:space:]])--tdd([[:space:]]|$) ]]; then
|
||||
gsd_run query config-set workflow.tdd_mode true 2>/dev/null || true
|
||||
fi
|
||||
# Tracer-first is the default; --no-tracer opts back into the legacy horizontal-layer shape.
|
||||
TRACER_MODE=true
|
||||
if [[ "$ARGUMENTS" =~ (^|[[:space:]])--no-tracer([[:space:]]|$) ]]; then TRACER_MODE=false; fi
|
||||
```
|
||||
|
||||
**Tracer-first resolution.** `TRACER_MODE` defaults to `true` — every plan LEADS with one `type="tracer"` end-to-end slice, then expansion tasks. `--no-tracer` sets `TRACER_MODE=false` to restore the legacy horizontal-layer default. Unlike `MVP_MODE`, tracer-first is not a persisted per-phase mode — it is the baseline decomposition discipline, so there is no roadmap/config chain to consult.
|
||||
|
||||
Defer the `phase.mvp-mode` query until `PHASE` is finalized (after explicit argument parsing/fallback phase detection + validation). The verb returns `true|false`; full result also exposes `source` (`cli_flag` | `roadmap` | `config` | `none`) for diagnostics. Mode is **all-or-nothing per phase** (PRD decision Q1).
|
||||
|
||||
**Walking Skeleton gate.** When `MVP_MODE=true` AND `phase_number == "01"` AND there are zero prior phase summaries (new project), the planner runs in **Walking Skeleton mode** (per PRD decision Q2 — new projects only). Detect with:
|
||||
@@ -777,6 +782,7 @@ Historical findings already incorporated, explicitly deferred/rejected in PLAN.m
|
||||
|
||||
{For each active entry in `PLAN_PRE_HOOKS_JSON` where `kind == "contribution"` and `into == "planner"` (in array order): inject the entry's `fragment.inline` verbatim here. This delivers all planner-targeted contributions — including tdd's `<tdd_mode_active>` block (type:tdd heuristics), schema-gate's schema-push detection guidance (if active at plan:pre), and security's threat-model guidance. For the security contribution, also surface the resolved `configValues`: `security_asvs_level` (ASVS enforcement level) and `security_block_on` (severity threshold) so the planner uses the configured values when generating `<threat_model>` blocks. If no active planner contributions exist, omit this block entirely.}
|
||||
|
||||
**TRACER_MODE:** ${TRACER_MODE} (when true — the default — the plan LEADS with one `type="tracer"` end-to-end slice touching every layer, then expansion tasks; when false (`--no-tracer`), decompose into horizontal layers.)
|
||||
**MVP_MODE:** ${MVP_MODE} (when true, follow vertical-slice rules from `~/.claude/gsd-core/references/planner-mvp-mode.md`; when false, ignore MVP guidance entirely.)
|
||||
**WALKING_SKELETON:** ${WALKING_SKELETON} (when true, the first deliverable must be a Walking Skeleton — Read the template at `~/.claude/gsd-core/references/skeleton-template.md` and produce SKELETON.md alongside PLAN.md.)
|
||||
**Granularity:** {granularity}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: gsd-plan-phase
|
||||
description: "Create detailed phase plan (PLAN.md) with verification loop"
|
||||
argument-hint: "[phase] [--auto] [--research] [--skip-research] [--research-phase <N>] [--view] [--gaps] [--skip-verify] [--prd <file>] [--ingest <path-or-glob>] [--ingest-format <auto|nygard|madr|narrative>] [--reviews] [--text] [--tdd] [--mvp]"
|
||||
argument-hint: "[phase] [--auto] [--research] [--skip-research] [--research-phase <N>] [--view] [--gaps] [--skip-verify] [--prd <file>] [--ingest <path-or-glob>] [--ingest-format <auto|nygard|madr|narrative>] [--reviews] [--text] [--tdd] [--mvp] [--no-tracer]"
|
||||
effort: max
|
||||
allowed-tools:
|
||||
- Read
|
||||
@@ -52,7 +52,8 @@ Phase number: $ARGUMENTS (optional — auto-detects next unplanned phase if omit
|
||||
- `--ingest-format <auto|nygard|madr|narrative>` — Optional ADR parser format override (`auto` default).
|
||||
- `--reviews` — Replan incorporating cross-AI review feedback from REVIEWS.md (produced by `/gsd-review`)
|
||||
- `--text` — Use plain-text numbered lists instead of TUI menus (required for `/rc` remote sessions)
|
||||
- `--mvp` — Vertical MVP mode. Planner organizes tasks as feature slices (UI→API→DB) instead of horizontal layers. On Phase 1 of a new project, also emits `SKELETON.md` (Walking Skeleton). Can be persisted on a phase via `**Mode:** mvp` in ROADMAP.md.
|
||||
- `--mvp` — MVP enrichment on top of the default tracer-first ordering: frames the phase goal as a user story and, on Phase 1 of a new project, also emits `SKELETON.md` (Walking Skeleton). Vertical slicing itself is now the default (see `--no-tracer`); `--mvp` no longer *turns it on*. Can be persisted on a phase via `**Mode:** mvp` in ROADMAP.md.
|
||||
- `--no-tracer` — Opt out of the default **tracer-first** decomposition and plan horizontal layers (the legacy default). By default every plan LEADS with one production-quality end-to-end `tracer` slice that is verified before any expansion task.
|
||||
|
||||
Normalize phase input in step 2 before any directory lookups.
|
||||
</context>
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
"gsd-domain-researcher.md": 7032,
|
||||
"gsd-eval-auditor.md": 12496,
|
||||
"gsd-eval-planner.md": 7008,
|
||||
"gsd-executor.md": 43973,
|
||||
"gsd-executor.md": 45338,
|
||||
"gsd-framework-selector.md": 6778,
|
||||
"gsd-integration-checker.md": 15238,
|
||||
"gsd-intel-updater.md": 18166,
|
||||
@@ -23,7 +23,7 @@
|
||||
"gsd-pattern-mapper.md": 12487,
|
||||
"gsd-phase-researcher.md": 40866,
|
||||
"gsd-plan-checker.md": 44780,
|
||||
"gsd-planner.md": 48191,
|
||||
"gsd-planner.md": 49314,
|
||||
"gsd-project-researcher.md": 22242,
|
||||
"gsd-research-synthesizer.md": 13847,
|
||||
"gsd-roadmapper.md": 22273,
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"agents/gsd-domain-researcher.md": "1db46cac3f4d9889",
|
||||
"agents/gsd-eval-auditor.md": "1b8391f1aafb067f",
|
||||
"agents/gsd-eval-planner.md": "3d10fd11147f6857",
|
||||
"agents/gsd-executor.md": "6b7b461429de7d35",
|
||||
"agents/gsd-executor.md": "5dc97b2515b36731",
|
||||
"agents/gsd-framework-selector.md": "daa62c79619c76bf",
|
||||
"agents/gsd-integration-checker.md": "0643cd2d779b131c",
|
||||
"agents/gsd-intel-updater.md": "26c1f1e028c6346a",
|
||||
@@ -25,7 +25,7 @@
|
||||
"agents/gsd-pattern-mapper.md": "e62ee90d39084802",
|
||||
"agents/gsd-phase-researcher.md": "cff1196c8e8bb4fa",
|
||||
"agents/gsd-plan-checker.md": "dd1e7cdc837d8f3e",
|
||||
"agents/gsd-planner.md": "b6d821f77fd8d7bd",
|
||||
"agents/gsd-planner.md": "c5de6bb9b277e4d4",
|
||||
"agents/gsd-project-researcher.md": "85de7f562872ee9b",
|
||||
"agents/gsd-research-synthesizer.md": "18a2e1b30ff7ae3a",
|
||||
"agents/gsd-roadmapper.md": "7a8465ac6d4dd29e",
|
||||
@@ -105,7 +105,7 @@
|
||||
"gsd-core/references/planner-human-verify-mode.md": "676e43b03af6b25b",
|
||||
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
|
||||
"gsd-core/references/planner-load-graph-context.md": "90cb2ecd1f3eb4d8",
|
||||
"gsd-core/references/planner-mvp-mode.md": "343b859a60bcd15e",
|
||||
"gsd-core/references/planner-mvp-mode.md": "cdac9dde7cd8fa84",
|
||||
"gsd-core/references/planner-reviews.md": "da39eace09a10743",
|
||||
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
|
||||
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
|
||||
@@ -123,7 +123,7 @@
|
||||
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
|
||||
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
|
||||
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
|
||||
"gsd-core/references/skeleton-template.md": "528691d1f0efa878",
|
||||
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
|
||||
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
|
||||
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
|
||||
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
|
||||
@@ -239,7 +239,7 @@
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "9b7107b31b60a3b9",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "e0fa99178ae544f0",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "907af77eafc3d97b",
|
||||
"gsd-core/workflows/execute-plan.md": "dea5df2e142f66bd",
|
||||
"gsd-core/workflows/explore.md": "934c00f9f216dbdb",
|
||||
"gsd-core/workflows/extract-learnings.md": "167ea7f0e23bf496",
|
||||
"gsd-core/workflows/fast.md": "568e6c3ec00b6e00",
|
||||
@@ -249,7 +249,7 @@
|
||||
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
|
||||
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
|
||||
"gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0",
|
||||
"gsd-core/workflows/help/modes/full.md": "c8ffd141e28f5111",
|
||||
"gsd-core/workflows/help/modes/full.md": "bf7b148215259e6e",
|
||||
"gsd-core/workflows/help/modes/topic.md": "0bf9ab39d7044d69",
|
||||
"gsd-core/workflows/import.md": "41c62ae199209a68",
|
||||
"gsd-core/workflows/inbox.md": "a448220c548f27bc",
|
||||
@@ -271,7 +271,7 @@
|
||||
"gsd-core/workflows/onboard.md": "69d871aa53a1a859",
|
||||
"gsd-core/workflows/pause-work.md": "564de32981a24337",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "dd6a4b3a8b05ab6e",
|
||||
"gsd-core/workflows/plan-phase.md": "40eecc5a8817b9f2",
|
||||
"gsd-core/workflows/plan-phase.md": "c8d8e646fccd4bd3",
|
||||
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60",
|
||||
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "ab0b22244c3389aa",
|
||||
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261",
|
||||
@@ -397,7 +397,7 @@
|
||||
"skills/gsd-onboard/SKILL.md": "1447665c64c8ade8",
|
||||
"skills/gsd-pause-work/SKILL.md": "9d3cc6bd70b03df1",
|
||||
"skills/gsd-phase/SKILL.md": "00676bbea61410bf",
|
||||
"skills/gsd-plan-phase/SKILL.md": "168046ccf9702532",
|
||||
"skills/gsd-plan-phase/SKILL.md": "8439b569426ff621",
|
||||
"skills/gsd-plan-review-convergence/SKILL.md": "af6ed50b242c64b7",
|
||||
"skills/gsd-pr-branch/SKILL.md": "5e050db73988f9a8",
|
||||
"skills/gsd-profile-user/SKILL.md": "10f2ff4be2e7d55f",
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"agents/gsd-domain-researcher.md": "671c9ea949889c4a",
|
||||
"agents/gsd-eval-auditor.md": "fcaec7b00f94c435",
|
||||
"agents/gsd-eval-planner.md": "a4a5b4b3f7828ba3",
|
||||
"agents/gsd-executor.md": "ed2c39fa8c03d056",
|
||||
"agents/gsd-executor.md": "2df526331a77b2aa",
|
||||
"agents/gsd-framework-selector.md": "4b77eebbe9288d80",
|
||||
"agents/gsd-integration-checker.md": "fa53e2d78be1de74",
|
||||
"agents/gsd-intel-updater.md": "fa40e685d7441ace",
|
||||
@@ -25,7 +25,7 @@
|
||||
"agents/gsd-pattern-mapper.md": "43c6021cf7caabfa",
|
||||
"agents/gsd-phase-researcher.md": "f1f6fd6a3e67c7a8",
|
||||
"agents/gsd-plan-checker.md": "bf1a4e636f2390de",
|
||||
"agents/gsd-planner.md": "6e8c76da9804ac42",
|
||||
"agents/gsd-planner.md": "4614c9f6250d08d4",
|
||||
"agents/gsd-project-researcher.md": "4531b7cc8f5e5f7d",
|
||||
"agents/gsd-research-synthesizer.md": "4a4f68e6c75b133a",
|
||||
"agents/gsd-roadmapper.md": "bb2f57695dbab32c",
|
||||
@@ -79,7 +79,7 @@
|
||||
"commands/gsd-onboard.md": "1e8acf7be31834be",
|
||||
"commands/gsd-pause-work.md": "4fb032f72238fe33",
|
||||
"commands/gsd-phase.md": "4920d15d779329eb",
|
||||
"commands/gsd-plan-phase.md": "e74f3cb7a10cbb83",
|
||||
"commands/gsd-plan-phase.md": "d467c713ea161e9e",
|
||||
"commands/gsd-plan-review-convergence.md": "3e4aff8f9ec6f8d8",
|
||||
"commands/gsd-pr-branch.md": "e168fcd545d72d0d",
|
||||
"commands/gsd-profile-user.md": "ffd9c2feb4c69f11",
|
||||
@@ -176,7 +176,7 @@
|
||||
"gsd-core/references/planner-human-verify-mode.md": "56d05e841630b3f4",
|
||||
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
|
||||
"gsd-core/references/planner-load-graph-context.md": "ca7a7af3f35ae61b",
|
||||
"gsd-core/references/planner-mvp-mode.md": "ec33050db81101a8",
|
||||
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
|
||||
"gsd-core/references/planner-reviews.md": "dda0193a0fbd4947",
|
||||
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
|
||||
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
|
||||
@@ -194,7 +194,7 @@
|
||||
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
|
||||
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
|
||||
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
|
||||
"gsd-core/references/skeleton-template.md": "528691d1f0efa878",
|
||||
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
|
||||
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
|
||||
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
|
||||
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
|
||||
@@ -310,7 +310,7 @@
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "811b6d8489571581",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "8ccc16a6c7cf6000",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "2c412310dce31a0b",
|
||||
"gsd-core/workflows/execute-plan.md": "7bc87fa99a1f9b0e",
|
||||
"gsd-core/workflows/explore.md": "6c04f2e658d93261",
|
||||
"gsd-core/workflows/extract-learnings.md": "b6f01ca3d8f58de4",
|
||||
"gsd-core/workflows/fast.md": "11f5cd10ae5cc7d3",
|
||||
@@ -320,7 +320,7 @@
|
||||
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
|
||||
"gsd-core/workflows/help/modes/brief.md": "924860e1f07defb0",
|
||||
"gsd-core/workflows/help/modes/default.md": "08a02976c0c5cc50",
|
||||
"gsd-core/workflows/help/modes/full.md": "fc307cb77544df1d",
|
||||
"gsd-core/workflows/help/modes/full.md": "b26853b9911ad97b",
|
||||
"gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d",
|
||||
"gsd-core/workflows/import.md": "3d3fa603ceb8bc9f",
|
||||
"gsd-core/workflows/inbox.md": "437f981ef9ae7b26",
|
||||
@@ -342,7 +342,7 @@
|
||||
"gsd-core/workflows/onboard.md": "6f9e6c0b484271a9",
|
||||
"gsd-core/workflows/pause-work.md": "f2b33bba5593d422",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc",
|
||||
"gsd-core/workflows/plan-phase.md": "a1057033055542a3",
|
||||
"gsd-core/workflows/plan-phase.md": "3fd22c43ad1fcc90",
|
||||
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072",
|
||||
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2",
|
||||
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "49f58c3f75be3eb5",
|
||||
@@ -488,7 +488,7 @@
|
||||
"skills/gsd-ns-workflow/skills/mvp-phase/SKILL.md": "f259f089a8d07a54",
|
||||
"skills/gsd-ns-workflow/skills/next/SKILL.md": "e7409245f1a0f9de",
|
||||
"skills/gsd-ns-workflow/skills/phase/SKILL.md": "fe5b26417ee466be",
|
||||
"skills/gsd-ns-workflow/skills/plan-phase/SKILL.md": "8cf23ecd6ac98069",
|
||||
"skills/gsd-ns-workflow/skills/plan-phase/SKILL.md": "99a229cf1b4fb7ee",
|
||||
"skills/gsd-ns-workflow/skills/plan-review-convergence/SKILL.md": "93f68cc6a36de7f2",
|
||||
"skills/gsd-ns-workflow/skills/progress/SKILL.md": "68bda87136db9fb3",
|
||||
"skills/gsd-ns-workflow/skills/quick/SKILL.md": "014dec52d85dcb0e",
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
"agents/gsd-domain-researcher.md": "f1e03df842ddfb95",
|
||||
"agents/gsd-eval-auditor.md": "d0f45fff7370bb0b",
|
||||
"agents/gsd-eval-planner.md": "9cc049b82897daa4",
|
||||
"agents/gsd-executor.md": "62f37fae936e0d2f",
|
||||
"agents/gsd-executor.md": "e96f3cbde4428497",
|
||||
"agents/gsd-framework-selector.md": "85005d716f9d98f7",
|
||||
"agents/gsd-integration-checker.md": "17a8ee731986564d",
|
||||
"agents/gsd-intel-updater.md": "4953a465db9dadc1",
|
||||
@@ -24,7 +24,7 @@
|
||||
"agents/gsd-pattern-mapper.md": "b45b5e106775bec1",
|
||||
"agents/gsd-phase-researcher.md": "4772d9eada32e8bd",
|
||||
"agents/gsd-plan-checker.md": "75851b147f35354a",
|
||||
"agents/gsd-planner.md": "9c9ffc56275b8ca2",
|
||||
"agents/gsd-planner.md": "a5cdb261a6ccbb96",
|
||||
"agents/gsd-project-researcher.md": "d7f355894519f9fe",
|
||||
"agents/gsd-research-synthesizer.md": "1c738df9932d325a",
|
||||
"agents/gsd-roadmapper.md": "453e9471ad27c7ea",
|
||||
@@ -78,7 +78,7 @@
|
||||
"commands/gsd-onboard.md": "d0d9405bc73899bd",
|
||||
"commands/gsd-pause-work.md": "01dbaebfefacd252",
|
||||
"commands/gsd-phase.md": "e8c226d2694692a5",
|
||||
"commands/gsd-plan-phase.md": "518357828182dca7",
|
||||
"commands/gsd-plan-phase.md": "ae70b58d4d8550c8",
|
||||
"commands/gsd-plan-review-convergence.md": "d5a85a50dcff2dd1",
|
||||
"commands/gsd-pr-branch.md": "382c23a6a644c0e4",
|
||||
"commands/gsd-profile-user.md": "adbc5b025b30e836",
|
||||
@@ -175,7 +175,7 @@
|
||||
"gsd-core/references/planner-human-verify-mode.md": "56d05e841630b3f4",
|
||||
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
|
||||
"gsd-core/references/planner-load-graph-context.md": "add55e135dd968da",
|
||||
"gsd-core/references/planner-mvp-mode.md": "ffd7b9d0e402714e",
|
||||
"gsd-core/references/planner-mvp-mode.md": "98bcd2020c30cbd2",
|
||||
"gsd-core/references/planner-reviews.md": "da39eace09a10743",
|
||||
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
|
||||
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
|
||||
@@ -193,7 +193,7 @@
|
||||
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
|
||||
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
|
||||
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
|
||||
"gsd-core/references/skeleton-template.md": "528691d1f0efa878",
|
||||
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
|
||||
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
|
||||
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
|
||||
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
|
||||
@@ -309,7 +309,7 @@
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "611b2be3bd133eb1",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "016ac9c7c02b1438",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "f17623fd47e795dd",
|
||||
"gsd-core/workflows/execute-plan.md": "e81d3476290ef292",
|
||||
"gsd-core/workflows/explore.md": "95e463d4bdd6dadd",
|
||||
"gsd-core/workflows/extract-learnings.md": "fd75072c339b58bd",
|
||||
"gsd-core/workflows/fast.md": "7f7687b920d79b29",
|
||||
@@ -319,7 +319,7 @@
|
||||
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
|
||||
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
|
||||
"gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0",
|
||||
"gsd-core/workflows/help/modes/full.md": "ce40e843f528e327",
|
||||
"gsd-core/workflows/help/modes/full.md": "8381c11db152a8a6",
|
||||
"gsd-core/workflows/help/modes/topic.md": "6e42db16f1568be9",
|
||||
"gsd-core/workflows/import.md": "cc21f3da36403ed3",
|
||||
"gsd-core/workflows/inbox.md": "91aac6360e1a8672",
|
||||
@@ -341,7 +341,7 @@
|
||||
"gsd-core/workflows/onboard.md": "b86d78eef6c77e5b",
|
||||
"gsd-core/workflows/pause-work.md": "da902807d2213204",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "7679fac068d1009d",
|
||||
"gsd-core/workflows/plan-phase.md": "50f812bc3456819d",
|
||||
"gsd-core/workflows/plan-phase.md": "4b20c2d821e2df8a",
|
||||
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60",
|
||||
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "b810f9f2374e23a5",
|
||||
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261",
|
||||
|
||||
16
tests/fixtures/golden-install-parity/claude.json
vendored
16
tests/fixtures/golden-install-parity/claude.json
vendored
@@ -15,7 +15,7 @@
|
||||
"agents/gsd-domain-researcher.md": "5f7d366251b957fe",
|
||||
"agents/gsd-eval-auditor.md": "fea2759beff0a642",
|
||||
"agents/gsd-eval-planner.md": "112f6730f23854e3",
|
||||
"agents/gsd-executor.md": "d1750d26580daa7f",
|
||||
"agents/gsd-executor.md": "e44ea5156ca2a42d",
|
||||
"agents/gsd-framework-selector.md": "c350ee693cb1aa4e",
|
||||
"agents/gsd-integration-checker.md": "c8b4e65dee89c8ea",
|
||||
"agents/gsd-intel-updater.md": "5b41e05f90ce89d9",
|
||||
@@ -24,7 +24,7 @@
|
||||
"agents/gsd-pattern-mapper.md": "b45b5e106775bec1",
|
||||
"agents/gsd-phase-researcher.md": "85217c69c1ed2ac6",
|
||||
"agents/gsd-plan-checker.md": "c70134c61b969589",
|
||||
"agents/gsd-planner.md": "aa68af11f852ecfd",
|
||||
"agents/gsd-planner.md": "c07a226ddd579839",
|
||||
"agents/gsd-project-researcher.md": "f468e96f8339d1e0",
|
||||
"agents/gsd-research-synthesizer.md": "7be02e47f4fd901b",
|
||||
"agents/gsd-roadmapper.md": "8a7f1f1256a6aed5",
|
||||
@@ -104,7 +104,7 @@
|
||||
"gsd-core/references/planner-human-verify-mode.md": "56d05e841630b3f4",
|
||||
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
|
||||
"gsd-core/references/planner-load-graph-context.md": "ca7a7af3f35ae61b",
|
||||
"gsd-core/references/planner-mvp-mode.md": "ec33050db81101a8",
|
||||
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
|
||||
"gsd-core/references/planner-reviews.md": "da39eace09a10743",
|
||||
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
|
||||
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
|
||||
@@ -122,7 +122,7 @@
|
||||
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
|
||||
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
|
||||
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
|
||||
"gsd-core/references/skeleton-template.md": "528691d1f0efa878",
|
||||
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
|
||||
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
|
||||
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
|
||||
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
|
||||
@@ -238,7 +238,7 @@
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "811b6d8489571581",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "8ccc16a6c7cf6000",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "cce1a33fe9a0a32d",
|
||||
"gsd-core/workflows/execute-plan.md": "2cddec7d1b197e48",
|
||||
"gsd-core/workflows/explore.md": "b9eea1bac358c9ce",
|
||||
"gsd-core/workflows/extract-learnings.md": "d8177b0c13b7e5ee",
|
||||
"gsd-core/workflows/fast.md": "41a6568b873aef99",
|
||||
@@ -248,7 +248,7 @@
|
||||
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
|
||||
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
|
||||
"gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0",
|
||||
"gsd-core/workflows/help/modes/full.md": "e2084c6766e32d6c",
|
||||
"gsd-core/workflows/help/modes/full.md": "91c6683e5b5ff4f8",
|
||||
"gsd-core/workflows/help/modes/topic.md": "6e42db16f1568be9",
|
||||
"gsd-core/workflows/import.md": "6e8acff8c3918795",
|
||||
"gsd-core/workflows/inbox.md": "91aac6360e1a8672",
|
||||
@@ -270,7 +270,7 @@
|
||||
"gsd-core/workflows/onboard.md": "3c50ed1f1fd07619",
|
||||
"gsd-core/workflows/pause-work.md": "5716362557f44ce4",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "1b43d12812f7bc1e",
|
||||
"gsd-core/workflows/plan-phase.md": "a62a13d6b8df73e0",
|
||||
"gsd-core/workflows/plan-phase.md": "7e6899ce19c134e0",
|
||||
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60",
|
||||
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2",
|
||||
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261",
|
||||
@@ -395,7 +395,7 @@
|
||||
"skills/gsd-onboard/SKILL.md": "46460b479b7524bf",
|
||||
"skills/gsd-pause-work/SKILL.md": "35e8a148e44f5361",
|
||||
"skills/gsd-phase/SKILL.md": "00be96e7ae36c6f0",
|
||||
"skills/gsd-plan-phase/SKILL.md": "0c9e87da048acfb7",
|
||||
"skills/gsd-plan-phase/SKILL.md": "a512ac3d14194133",
|
||||
"skills/gsd-plan-review-convergence/SKILL.md": "c3dd8bfa877eaed5",
|
||||
"skills/gsd-pr-branch/SKILL.md": "c5e26f2c6dff1355",
|
||||
"skills/gsd-profile-user/SKILL.md": "894eb2850ecd2dde",
|
||||
|
||||
16
tests/fixtures/golden-install-parity/cline.json
vendored
16
tests/fixtures/golden-install-parity/cline.json
vendored
@@ -19,7 +19,7 @@
|
||||
"agents/gsd-domain-researcher.md": "0fecdaea86466a56",
|
||||
"agents/gsd-eval-auditor.md": "36c44303085df2f8",
|
||||
"agents/gsd-eval-planner.md": "3ddea88a69b4da3f",
|
||||
"agents/gsd-executor.md": "2ca77ad7d9909f82",
|
||||
"agents/gsd-executor.md": "9b51734f64049fda",
|
||||
"agents/gsd-framework-selector.md": "564669d479433f15",
|
||||
"agents/gsd-integration-checker.md": "1bbbdd3d420b994e",
|
||||
"agents/gsd-intel-updater.md": "42c40fffbc720d0b",
|
||||
@@ -28,7 +28,7 @@
|
||||
"agents/gsd-pattern-mapper.md": "b526065fd2efa19c",
|
||||
"agents/gsd-phase-researcher.md": "c507db2ba66038f4",
|
||||
"agents/gsd-plan-checker.md": "a609245dbdc4ef2b",
|
||||
"agents/gsd-planner.md": "ae6bf9def31a8eec",
|
||||
"agents/gsd-planner.md": "2fa5c5d4529ef651",
|
||||
"agents/gsd-project-researcher.md": "049f816c6caa4316",
|
||||
"agents/gsd-research-synthesizer.md": "2f7dcbff50371d4c",
|
||||
"agents/gsd-roadmapper.md": "bbb23d3097911516",
|
||||
@@ -108,7 +108,7 @@
|
||||
"gsd-core/references/planner-human-verify-mode.md": "0519ef5438b2ed30",
|
||||
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
|
||||
"gsd-core/references/planner-load-graph-context.md": "e469016f2d51b5bc",
|
||||
"gsd-core/references/planner-mvp-mode.md": "ec33050db81101a8",
|
||||
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
|
||||
"gsd-core/references/planner-reviews.md": "dda0193a0fbd4947",
|
||||
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
|
||||
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
|
||||
@@ -126,7 +126,7 @@
|
||||
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
|
||||
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
|
||||
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
|
||||
"gsd-core/references/skeleton-template.md": "528691d1f0efa878",
|
||||
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
|
||||
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
|
||||
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
|
||||
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
|
||||
@@ -242,7 +242,7 @@
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "82e6cfe1e1b1ec0e",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "36b463d72d3e11c5",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "0c5551f99ee0a017",
|
||||
"gsd-core/workflows/execute-plan.md": "7f186055a0246932",
|
||||
"gsd-core/workflows/explore.md": "e83af8ceae314cf9",
|
||||
"gsd-core/workflows/extract-learnings.md": "6f39375b7dc775f9",
|
||||
"gsd-core/workflows/fast.md": "e4f74a454b6ca5e8",
|
||||
@@ -252,7 +252,7 @@
|
||||
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
|
||||
"gsd-core/workflows/help/modes/brief.md": "924860e1f07defb0",
|
||||
"gsd-core/workflows/help/modes/default.md": "86f7a14ad06e2f6f",
|
||||
"gsd-core/workflows/help/modes/full.md": "efb266b8dbe60f51",
|
||||
"gsd-core/workflows/help/modes/full.md": "a53e85333cf61c36",
|
||||
"gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d",
|
||||
"gsd-core/workflows/import.md": "96ec687c5cfe84ac",
|
||||
"gsd-core/workflows/inbox.md": "437f981ef9ae7b26",
|
||||
@@ -274,7 +274,7 @@
|
||||
"gsd-core/workflows/onboard.md": "6f9e6c0b484271a9",
|
||||
"gsd-core/workflows/pause-work.md": "3530607514b0ac00",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "bafdc6945cd2bd87",
|
||||
"gsd-core/workflows/plan-phase.md": "5a0e013e461375dd",
|
||||
"gsd-core/workflows/plan-phase.md": "801be4f6db080adb",
|
||||
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072",
|
||||
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "4b0a2cb0f4f28179",
|
||||
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "090c31e22b1508fe",
|
||||
@@ -392,7 +392,7 @@
|
||||
"skills/gsd-ns-workflow/skills/mvp-phase/SKILL.md": "6c2beccceb46fda1",
|
||||
"skills/gsd-ns-workflow/skills/next/SKILL.md": "3856471d0f64bf09",
|
||||
"skills/gsd-ns-workflow/skills/phase/SKILL.md": "4e1363db6013a1e5",
|
||||
"skills/gsd-ns-workflow/skills/plan-phase/SKILL.md": "b7a6ff2837b41143",
|
||||
"skills/gsd-ns-workflow/skills/plan-phase/SKILL.md": "643641b45747815e",
|
||||
"skills/gsd-ns-workflow/skills/plan-review-convergence/SKILL.md": "b7d213288df9aa96",
|
||||
"skills/gsd-ns-workflow/skills/progress/SKILL.md": "493f467c22d55b6b",
|
||||
"skills/gsd-ns-workflow/skills/quick/SKILL.md": "605e596c680cbb1c",
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"agents/gsd-domain-researcher.md": "1c1a800108a2b225",
|
||||
"agents/gsd-eval-auditor.md": "99012004b14ea602",
|
||||
"agents/gsd-eval-planner.md": "4ebdd7fe9cbb0cfe",
|
||||
"agents/gsd-executor.md": "d61e084540bb6ee2",
|
||||
"agents/gsd-executor.md": "4f4bbb77be53a135",
|
||||
"agents/gsd-framework-selector.md": "7726fccc86bfeb50",
|
||||
"agents/gsd-integration-checker.md": "2d8339790bbb2dc3",
|
||||
"agents/gsd-intel-updater.md": "c51339956197cbd3",
|
||||
@@ -25,7 +25,7 @@
|
||||
"agents/gsd-pattern-mapper.md": "92cfa2e6c2a06bf3",
|
||||
"agents/gsd-phase-researcher.md": "6338474da1a5d65e",
|
||||
"agents/gsd-plan-checker.md": "e704c083b02e8c35",
|
||||
"agents/gsd-planner.md": "164eab970e2cf025",
|
||||
"agents/gsd-planner.md": "1ade235391742f7e",
|
||||
"agents/gsd-project-researcher.md": "e43c59f7f1f2f37a",
|
||||
"agents/gsd-research-synthesizer.md": "87955470c3c129b2",
|
||||
"agents/gsd-roadmapper.md": "20b69eff61a7a9fa",
|
||||
@@ -79,7 +79,7 @@
|
||||
"commands/gsd-onboard.md": "63283b90aa671229",
|
||||
"commands/gsd-pause-work.md": "6caa75a7c2b4dd2d",
|
||||
"commands/gsd-phase.md": "e3ca4958ea20a935",
|
||||
"commands/gsd-plan-phase.md": "6de27d54ac191539",
|
||||
"commands/gsd-plan-phase.md": "03e08147bee2e446",
|
||||
"commands/gsd-plan-review-convergence.md": "4d1b90383514958e",
|
||||
"commands/gsd-pr-branch.md": "f5be514b9f69eaf5",
|
||||
"commands/gsd-profile-user.md": "7a9289910719d828",
|
||||
@@ -176,7 +176,7 @@
|
||||
"gsd-core/references/planner-human-verify-mode.md": "56d05e841630b3f4",
|
||||
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
|
||||
"gsd-core/references/planner-load-graph-context.md": "ca7a7af3f35ae61b",
|
||||
"gsd-core/references/planner-mvp-mode.md": "ec33050db81101a8",
|
||||
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
|
||||
"gsd-core/references/planner-reviews.md": "dda0193a0fbd4947",
|
||||
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
|
||||
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
|
||||
@@ -194,7 +194,7 @@
|
||||
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
|
||||
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
|
||||
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
|
||||
"gsd-core/references/skeleton-template.md": "528691d1f0efa878",
|
||||
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
|
||||
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
|
||||
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
|
||||
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
|
||||
@@ -310,7 +310,7 @@
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "811b6d8489571581",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "8ccc16a6c7cf6000",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "933d10547116794a",
|
||||
"gsd-core/workflows/execute-plan.md": "90cfc1e6e677d43f",
|
||||
"gsd-core/workflows/explore.md": "6c04f2e658d93261",
|
||||
"gsd-core/workflows/extract-learnings.md": "b6f01ca3d8f58de4",
|
||||
"gsd-core/workflows/fast.md": "11f5cd10ae5cc7d3",
|
||||
@@ -320,7 +320,7 @@
|
||||
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
|
||||
"gsd-core/workflows/help/modes/brief.md": "924860e1f07defb0",
|
||||
"gsd-core/workflows/help/modes/default.md": "08a02976c0c5cc50",
|
||||
"gsd-core/workflows/help/modes/full.md": "3a19e96b69bcc33e",
|
||||
"gsd-core/workflows/help/modes/full.md": "67e3dffe34ddc9bc",
|
||||
"gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d",
|
||||
"gsd-core/workflows/import.md": "3d3fa603ceb8bc9f",
|
||||
"gsd-core/workflows/inbox.md": "437f981ef9ae7b26",
|
||||
@@ -342,7 +342,7 @@
|
||||
"gsd-core/workflows/onboard.md": "6f9e6c0b484271a9",
|
||||
"gsd-core/workflows/pause-work.md": "f2b33bba5593d422",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc",
|
||||
"gsd-core/workflows/plan-phase.md": "27d4e6b4a084dd99",
|
||||
"gsd-core/workflows/plan-phase.md": "5124211d53f66feb",
|
||||
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072",
|
||||
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2",
|
||||
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "49f58c3f75be3eb5",
|
||||
@@ -467,7 +467,7 @@
|
||||
"skills/gsd-onboard/SKILL.md": "6ad789a03124cd4f",
|
||||
"skills/gsd-pause-work/SKILL.md": "e2de20b7539e78d4",
|
||||
"skills/gsd-phase/SKILL.md": "f87211f779315ced",
|
||||
"skills/gsd-plan-phase/SKILL.md": "6134e837750034ab",
|
||||
"skills/gsd-plan-phase/SKILL.md": "262e2e7ff694fc09",
|
||||
"skills/gsd-plan-review-convergence/SKILL.md": "e76d306ba8883cdb",
|
||||
"skills/gsd-pr-branch/SKILL.md": "87bb3306488565fb",
|
||||
"skills/gsd-profile-user/SKILL.md": "ee8e8547298006b8",
|
||||
|
||||
20
tests/fixtures/golden-install-parity/codex.json
vendored
20
tests/fixtures/golden-install-parity/codex.json
vendored
@@ -43,7 +43,7 @@
|
||||
".agents/skills/gsd-onboard/SKILL.md": "f42fc2edebeda671",
|
||||
".agents/skills/gsd-pause-work/SKILL.md": "b379469eed78a196",
|
||||
".agents/skills/gsd-phase/SKILL.md": "25477edc97a90c91",
|
||||
".agents/skills/gsd-plan-phase/SKILL.md": "19ead1acb151a868",
|
||||
".agents/skills/gsd-plan-phase/SKILL.md": "c6f734135356faac",
|
||||
".agents/skills/gsd-plan-review-convergence/SKILL.md": "f654089c11024027",
|
||||
".agents/skills/gsd-pr-branch/SKILL.md": "6901da15e321913e",
|
||||
".agents/skills/gsd-profile-user/SKILL.md": "6259fabfb6afe7be",
|
||||
@@ -102,8 +102,8 @@
|
||||
"agents/gsd-eval-auditor.toml": "9b81d61b3c5f722d",
|
||||
"agents/gsd-eval-planner.md": "73f2ad2ff2797a51",
|
||||
"agents/gsd-eval-planner.toml": "09468ad1a34ac468",
|
||||
"agents/gsd-executor.md": "0393e5f72e932127",
|
||||
"agents/gsd-executor.toml": "cdb7bdc04d3b6651",
|
||||
"agents/gsd-executor.md": "895482e838b13815",
|
||||
"agents/gsd-executor.toml": "a95f6ad24154e646",
|
||||
"agents/gsd-framework-selector.md": "ebae32430887d2e0",
|
||||
"agents/gsd-framework-selector.toml": "637e4e021b7ec380",
|
||||
"agents/gsd-integration-checker.md": "9cc875676cf7d741",
|
||||
@@ -120,8 +120,8 @@
|
||||
"agents/gsd-phase-researcher.toml": "44a3d510cd0ce3bd",
|
||||
"agents/gsd-plan-checker.md": "e7f02c10ea788aee",
|
||||
"agents/gsd-plan-checker.toml": "6f8ceb421d0ad721",
|
||||
"agents/gsd-planner.md": "5d638a2e37b63731",
|
||||
"agents/gsd-planner.toml": "50cec2af6b45a61c",
|
||||
"agents/gsd-planner.md": "7d48d3a81760af05",
|
||||
"agents/gsd-planner.toml": "2527d19b0c47ec66",
|
||||
"agents/gsd-project-researcher.md": "959f2e57c3d69ed8",
|
||||
"agents/gsd-project-researcher.toml": "f395e8e8c4baf1ed",
|
||||
"agents/gsd-research-synthesizer.md": "497f85adf53259ef",
|
||||
@@ -211,7 +211,7 @@
|
||||
"gsd-core/references/planner-human-verify-mode.md": "3a625b42d9cb93ee",
|
||||
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
|
||||
"gsd-core/references/planner-load-graph-context.md": "ca7a7af3f35ae61b",
|
||||
"gsd-core/references/planner-mvp-mode.md": "ec33050db81101a8",
|
||||
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
|
||||
"gsd-core/references/planner-reviews.md": "7889bfa28e82156b",
|
||||
"gsd-core/references/planner-revision.md": "2ebf1a714d1ec4bf",
|
||||
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
|
||||
@@ -229,7 +229,7 @@
|
||||
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
|
||||
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
|
||||
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
|
||||
"gsd-core/references/skeleton-template.md": "528691d1f0efa878",
|
||||
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
|
||||
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
|
||||
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
|
||||
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
|
||||
@@ -345,7 +345,7 @@
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "811b6d8489571581",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "8ccc16a6c7cf6000",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "ac1f1d9ada00a91e",
|
||||
"gsd-core/workflows/execute-plan.md": "89dda78cf3c1f1b7",
|
||||
"gsd-core/workflows/explore.md": "2ef10d17c8864a04",
|
||||
"gsd-core/workflows/extract-learnings.md": "f716aa03fcb5f8da",
|
||||
"gsd-core/workflows/fast.md": "e4ed60f96a7b3ac8",
|
||||
@@ -355,7 +355,7 @@
|
||||
"gsd-core/workflows/help.md": "08e1349950c5602a",
|
||||
"gsd-core/workflows/help/modes/brief.md": "da44b130d1afe556",
|
||||
"gsd-core/workflows/help/modes/default.md": "4bb3082d28026eea",
|
||||
"gsd-core/workflows/help/modes/full.md": "01a1ec54df54da6e",
|
||||
"gsd-core/workflows/help/modes/full.md": "773717d0699320b8",
|
||||
"gsd-core/workflows/help/modes/topic.md": "b7c7e4a8800bc3ea",
|
||||
"gsd-core/workflows/import.md": "cb3c8f9d09edb434",
|
||||
"gsd-core/workflows/inbox.md": "61b8b10e7a74b2e9",
|
||||
@@ -377,7 +377,7 @@
|
||||
"gsd-core/workflows/onboard.md": "83c40ba7055b8b24",
|
||||
"gsd-core/workflows/pause-work.md": "a217770ecafcb2e0",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "73d46f77c50a0690",
|
||||
"gsd-core/workflows/plan-phase.md": "ec989d6bc926bdf6",
|
||||
"gsd-core/workflows/plan-phase.md": "395fe273b017b2ff",
|
||||
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "d838b87563feedf6",
|
||||
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "f10975692cbd036e",
|
||||
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "f5edc589cab52a7b",
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"agents/gsd-domain-researcher.agent.md": "d603239b3e9fe428",
|
||||
"agents/gsd-eval-auditor.agent.md": "3c03009564de55c8",
|
||||
"agents/gsd-eval-planner.agent.md": "14751876fc2b5f16",
|
||||
"agents/gsd-executor.agent.md": "2ee1020062d8d800",
|
||||
"agents/gsd-executor.agent.md": "761523a925bd2649",
|
||||
"agents/gsd-framework-selector.agent.md": "cafeec0b3489be45",
|
||||
"agents/gsd-integration-checker.agent.md": "30439b804927acc7",
|
||||
"agents/gsd-intel-updater.agent.md": "238c1a886f35a25c",
|
||||
@@ -25,7 +25,7 @@
|
||||
"agents/gsd-pattern-mapper.agent.md": "b1f488b0fa6a2395",
|
||||
"agents/gsd-phase-researcher.agent.md": "03cfb510a766fe93",
|
||||
"agents/gsd-plan-checker.agent.md": "c50a5b008ddcbfad",
|
||||
"agents/gsd-planner.agent.md": "d40d16eced1c6463",
|
||||
"agents/gsd-planner.agent.md": "2664dc34defa7580",
|
||||
"agents/gsd-project-researcher.agent.md": "d73bdbe986ffa8a6",
|
||||
"agents/gsd-research-synthesizer.agent.md": "f03eed4aa89e47c5",
|
||||
"agents/gsd-roadmapper.agent.md": "322048cf8ddcb4e5",
|
||||
@@ -106,7 +106,7 @@
|
||||
"gsd-core/references/planner-human-verify-mode.md": "5262b23d822d9541",
|
||||
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
|
||||
"gsd-core/references/planner-load-graph-context.md": "641b6c1ce4dd0c8c",
|
||||
"gsd-core/references/planner-mvp-mode.md": "35890221f823756f",
|
||||
"gsd-core/references/planner-mvp-mode.md": "355d8a9ff2b2b67e",
|
||||
"gsd-core/references/planner-reviews.md": "da39eace09a10743",
|
||||
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
|
||||
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
|
||||
@@ -124,7 +124,7 @@
|
||||
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
|
||||
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
|
||||
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
|
||||
"gsd-core/references/skeleton-template.md": "528691d1f0efa878",
|
||||
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
|
||||
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
|
||||
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
|
||||
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
|
||||
@@ -240,7 +240,7 @@
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "1b73ab2fc47c9dbf",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "b26edeee455481a7",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "c5e9dae726db15cc",
|
||||
"gsd-core/workflows/execute-plan.md": "66879e62abcc33ae",
|
||||
"gsd-core/workflows/explore.md": "5fd91a8510e1114b",
|
||||
"gsd-core/workflows/extract-learnings.md": "f34d0b1927545b18",
|
||||
"gsd-core/workflows/fast.md": "66821090b6b8ed3b",
|
||||
@@ -250,7 +250,7 @@
|
||||
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
|
||||
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
|
||||
"gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0",
|
||||
"gsd-core/workflows/help/modes/full.md": "ce88d4eb6b301e09",
|
||||
"gsd-core/workflows/help/modes/full.md": "bd1bca7960fadd61",
|
||||
"gsd-core/workflows/help/modes/topic.md": "0bf9ab39d7044d69",
|
||||
"gsd-core/workflows/import.md": "f4fa65e332b00f7e",
|
||||
"gsd-core/workflows/inbox.md": "a448220c548f27bc",
|
||||
@@ -272,7 +272,7 @@
|
||||
"gsd-core/workflows/onboard.md": "a62602c6f3fd538a",
|
||||
"gsd-core/workflows/pause-work.md": "9ce66367be6c40db",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "5cf589802d08bdf3",
|
||||
"gsd-core/workflows/plan-phase.md": "5a2cd75b453aa573",
|
||||
"gsd-core/workflows/plan-phase.md": "ab96c552cc86d2cc",
|
||||
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60",
|
||||
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "bb052483744f0a6d",
|
||||
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261",
|
||||
@@ -370,7 +370,7 @@
|
||||
"skills/gsd-onboard/SKILL.md": "4d325f3033df2d37",
|
||||
"skills/gsd-pause-work/SKILL.md": "4f0caa008a8001ff",
|
||||
"skills/gsd-phase/SKILL.md": "d38c7f9b1d0d2360",
|
||||
"skills/gsd-plan-phase/SKILL.md": "d257bb9b1786039d",
|
||||
"skills/gsd-plan-phase/SKILL.md": "7761a2f06ac98b30",
|
||||
"skills/gsd-plan-review-convergence/SKILL.md": "9338b49ecddd4ae8",
|
||||
"skills/gsd-pr-branch/SKILL.md": "9cd9740db385d95a",
|
||||
"skills/gsd-profile-user/SKILL.md": "052a8e17ecda40f1",
|
||||
|
||||
18
tests/fixtures/golden-install-parity/cursor.json
vendored
18
tests/fixtures/golden-install-parity/cursor.json
vendored
@@ -16,7 +16,7 @@
|
||||
"agents/gsd-domain-researcher.md": "56395dbdabf076f6",
|
||||
"agents/gsd-eval-auditor.md": "ad2840fd5cd76172",
|
||||
"agents/gsd-eval-planner.md": "2049dac060d00eda",
|
||||
"agents/gsd-executor.md": "e416f9c48fb44c75",
|
||||
"agents/gsd-executor.md": "68796b76140841c2",
|
||||
"agents/gsd-framework-selector.md": "4b77eebbe9288d80",
|
||||
"agents/gsd-integration-checker.md": "5da30584d06b878c",
|
||||
"agents/gsd-intel-updater.md": "b8971c5d96e63b38",
|
||||
@@ -25,7 +25,7 @@
|
||||
"agents/gsd-pattern-mapper.md": "1229c215677f740d",
|
||||
"agents/gsd-phase-researcher.md": "982d59921bed463d",
|
||||
"agents/gsd-plan-checker.md": "ba51999876d40cf2",
|
||||
"agents/gsd-planner.md": "15b5830dafb94517",
|
||||
"agents/gsd-planner.md": "1feec75fe52b56bd",
|
||||
"agents/gsd-project-researcher.md": "beeac940d3a10e76",
|
||||
"agents/gsd-research-synthesizer.md": "6315f016d55176f4",
|
||||
"agents/gsd-roadmapper.md": "d28e7d4bac46dde2",
|
||||
@@ -79,7 +79,7 @@
|
||||
"commands/gsd-onboard.md": "d9e52f558fc2b90f",
|
||||
"commands/gsd-pause-work.md": "59630f05f95fff68",
|
||||
"commands/gsd-phase.md": "9a073dcd0f934f90",
|
||||
"commands/gsd-plan-phase.md": "57de92131fcb16b8",
|
||||
"commands/gsd-plan-phase.md": "462995ee69ba35b4",
|
||||
"commands/gsd-plan-review-convergence.md": "bded2d831f8ac9de",
|
||||
"commands/gsd-pr-branch.md": "ef2eedb0ed4295da",
|
||||
"commands/gsd-profile-user.md": "0e99de36619c3b7d",
|
||||
@@ -176,7 +176,7 @@
|
||||
"gsd-core/references/planner-human-verify-mode.md": "5e7925ad77d931d1",
|
||||
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
|
||||
"gsd-core/references/planner-load-graph-context.md": "ca7a7af3f35ae61b",
|
||||
"gsd-core/references/planner-mvp-mode.md": "ec33050db81101a8",
|
||||
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
|
||||
"gsd-core/references/planner-reviews.md": "da39eace09a10743",
|
||||
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
|
||||
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
|
||||
@@ -194,7 +194,7 @@
|
||||
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
|
||||
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
|
||||
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
|
||||
"gsd-core/references/skeleton-template.md": "528691d1f0efa878",
|
||||
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
|
||||
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
|
||||
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
|
||||
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
|
||||
@@ -310,7 +310,7 @@
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "811b6d8489571581",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "8ccc16a6c7cf6000",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "83dc1bf7f73735c0",
|
||||
"gsd-core/workflows/execute-plan.md": "a57ce521a92348ef",
|
||||
"gsd-core/workflows/explore.md": "b9eea1bac358c9ce",
|
||||
"gsd-core/workflows/extract-learnings.md": "d8177b0c13b7e5ee",
|
||||
"gsd-core/workflows/fast.md": "77b49793e26b3323",
|
||||
@@ -320,7 +320,7 @@
|
||||
"gsd-core/workflows/help.md": "08e1349950c5602a",
|
||||
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
|
||||
"gsd-core/workflows/help/modes/default.md": "b88ff431fffe40ae",
|
||||
"gsd-core/workflows/help/modes/full.md": "a7a42d4340e8e00b",
|
||||
"gsd-core/workflows/help/modes/full.md": "d30803f316abd6fa",
|
||||
"gsd-core/workflows/help/modes/topic.md": "cee80e0adfa3b06c",
|
||||
"gsd-core/workflows/import.md": "5d5fb8e51f6a243a",
|
||||
"gsd-core/workflows/inbox.md": "797c287852eb8957",
|
||||
@@ -342,7 +342,7 @@
|
||||
"gsd-core/workflows/onboard.md": "20c28136423d40ac",
|
||||
"gsd-core/workflows/pause-work.md": "5716362557f44ce4",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "1b43d12812f7bc1e",
|
||||
"gsd-core/workflows/plan-phase.md": "c07b91bb188270d7",
|
||||
"gsd-core/workflows/plan-phase.md": "846e7347c40cc643",
|
||||
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "e06ccd4d4c0703fb",
|
||||
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2",
|
||||
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "3bed01c3c906ac52",
|
||||
@@ -445,7 +445,7 @@
|
||||
"skills/gsd-onboard/SKILL.md": "cae1f9382469fa00",
|
||||
"skills/gsd-pause-work/SKILL.md": "10e7531a2cb392ad",
|
||||
"skills/gsd-phase/SKILL.md": "1a2c9b64c1af7ffc",
|
||||
"skills/gsd-plan-phase/SKILL.md": "0784da05d41dcfe7",
|
||||
"skills/gsd-plan-phase/SKILL.md": "b7846866b27c6d3f",
|
||||
"skills/gsd-plan-review-convergence/SKILL.md": "6ffc6592e39f2e8a",
|
||||
"skills/gsd-pr-branch/SKILL.md": "725727e3c2b66543",
|
||||
"skills/gsd-profile-user/SKILL.md": "eb6842b23f1f9256",
|
||||
|
||||
16
tests/fixtures/golden-install-parity/hermes.json
vendored
16
tests/fixtures/golden-install-parity/hermes.json
vendored
@@ -16,7 +16,7 @@
|
||||
"agents/gsd-domain-researcher.md": "412cdbb05ba252ea",
|
||||
"agents/gsd-eval-auditor.md": "4ffb265063c318e5",
|
||||
"agents/gsd-eval-planner.md": "03448fc9c5774b56",
|
||||
"agents/gsd-executor.md": "9c00261ee92596bb",
|
||||
"agents/gsd-executor.md": "c1f807f853dc53d7",
|
||||
"agents/gsd-framework-selector.md": "ea9981d65d6b3429",
|
||||
"agents/gsd-integration-checker.md": "35b4f2969d279871",
|
||||
"agents/gsd-intel-updater.md": "5fe5edfae2719cb8",
|
||||
@@ -25,7 +25,7 @@
|
||||
"agents/gsd-pattern-mapper.md": "cea092600aeb3978",
|
||||
"agents/gsd-phase-researcher.md": "2bd0402f33d757ca",
|
||||
"agents/gsd-plan-checker.md": "4b4e2b475bf5b5c3",
|
||||
"agents/gsd-planner.md": "018542e335a983fa",
|
||||
"agents/gsd-planner.md": "a48726410b038084",
|
||||
"agents/gsd-project-researcher.md": "425a7df7f37a5c06",
|
||||
"agents/gsd-research-synthesizer.md": "9d31c87fc2c87ffa",
|
||||
"agents/gsd-roadmapper.md": "64dce5d5f9fa5654",
|
||||
@@ -105,7 +105,7 @@
|
||||
"gsd-core/references/planner-human-verify-mode.md": "6cfa61ca5f6c1879",
|
||||
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
|
||||
"gsd-core/references/planner-load-graph-context.md": "8f598e08696843c0",
|
||||
"gsd-core/references/planner-mvp-mode.md": "ec33050db81101a8",
|
||||
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
|
||||
"gsd-core/references/planner-reviews.md": "da39eace09a10743",
|
||||
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
|
||||
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
|
||||
@@ -123,7 +123,7 @@
|
||||
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
|
||||
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
|
||||
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
|
||||
"gsd-core/references/skeleton-template.md": "528691d1f0efa878",
|
||||
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
|
||||
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
|
||||
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
|
||||
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
|
||||
@@ -239,7 +239,7 @@
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "c9ad17d6cc6dfe45",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "5a78d5dfea6a911a",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "4dbe9b6f0c976245",
|
||||
"gsd-core/workflows/execute-plan.md": "5a6b2176073db3fd",
|
||||
"gsd-core/workflows/explore.md": "48770d68e8b9c132",
|
||||
"gsd-core/workflows/extract-learnings.md": "e9e167c718949c0b",
|
||||
"gsd-core/workflows/fast.md": "c801145115755524",
|
||||
@@ -249,7 +249,7 @@
|
||||
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
|
||||
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
|
||||
"gsd-core/workflows/help/modes/default.md": "8874dac94eb68ae6",
|
||||
"gsd-core/workflows/help/modes/full.md": "62779da88565d65a",
|
||||
"gsd-core/workflows/help/modes/full.md": "cad4eed3907e8a58",
|
||||
"gsd-core/workflows/help/modes/topic.md": "6e42db16f1568be9",
|
||||
"gsd-core/workflows/import.md": "a441445515bc2dd5",
|
||||
"gsd-core/workflows/inbox.md": "91aac6360e1a8672",
|
||||
@@ -271,7 +271,7 @@
|
||||
"gsd-core/workflows/onboard.md": "3c50ed1f1fd07619",
|
||||
"gsd-core/workflows/pause-work.md": "ae2d5789a95f70fe",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "c86cdc1964256b98",
|
||||
"gsd-core/workflows/plan-phase.md": "6e3846fb2ae1bd45",
|
||||
"gsd-core/workflows/plan-phase.md": "79bc3a45f034d851",
|
||||
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60",
|
||||
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "9607e6d03e93c1c2",
|
||||
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "62f8e4f3b475fe5f",
|
||||
@@ -418,7 +418,7 @@
|
||||
"skills/gsd/gsd-ns-workflow/skills/mvp-phase/SKILL.md": "0804dfd4124526ba",
|
||||
"skills/gsd/gsd-ns-workflow/skills/next/SKILL.md": "1d30cf6061d15168",
|
||||
"skills/gsd/gsd-ns-workflow/skills/phase/SKILL.md": "610bd06d71198849",
|
||||
"skills/gsd/gsd-ns-workflow/skills/plan-phase/SKILL.md": "f06f0e2fc8def3f0",
|
||||
"skills/gsd/gsd-ns-workflow/skills/plan-phase/SKILL.md": "cb1cf29451588047",
|
||||
"skills/gsd/gsd-ns-workflow/skills/plan-review-convergence/SKILL.md": "fddf8bd7b3ae1f10",
|
||||
"skills/gsd/gsd-ns-workflow/skills/progress/SKILL.md": "6ec0e4715dde7ee2",
|
||||
"skills/gsd/gsd-ns-workflow/skills/quick/SKILL.md": "65e377345e9c49a8",
|
||||
|
||||
18
tests/fixtures/golden-install-parity/kilo.json
vendored
18
tests/fixtures/golden-install-parity/kilo.json
vendored
@@ -16,7 +16,7 @@
|
||||
"agents/gsd-domain-researcher.md": "a3874d80bcbc7380",
|
||||
"agents/gsd-eval-auditor.md": "630d4cd3bd6ea195",
|
||||
"agents/gsd-eval-planner.md": "3db12cde12aeb2c1",
|
||||
"agents/gsd-executor.md": "24a1c8c8e829d2d1",
|
||||
"agents/gsd-executor.md": "c53d111b0c795f7c",
|
||||
"agents/gsd-framework-selector.md": "ad5f2c6b9bec6270",
|
||||
"agents/gsd-integration-checker.md": "c503e2f4a3d8ec05",
|
||||
"agents/gsd-intel-updater.md": "231393da62a45b2e",
|
||||
@@ -25,7 +25,7 @@
|
||||
"agents/gsd-pattern-mapper.md": "6a5408fd11d70391",
|
||||
"agents/gsd-phase-researcher.md": "94818f28c498bb26",
|
||||
"agents/gsd-plan-checker.md": "56164206242c8caf",
|
||||
"agents/gsd-planner.md": "5adf9f02c77d6859",
|
||||
"agents/gsd-planner.md": "1fbe1f6e9c3b74f0",
|
||||
"agents/gsd-project-researcher.md": "60573a38d3dfd9fe",
|
||||
"agents/gsd-research-synthesizer.md": "1f7cd286c5783c86",
|
||||
"agents/gsd-roadmapper.md": "277e0a3252553ab7",
|
||||
@@ -79,7 +79,7 @@
|
||||
"command/gsd-onboard.md": "3e87a21c9c04f0d7",
|
||||
"command/gsd-pause-work.md": "04e993b1c9f8322b",
|
||||
"command/gsd-phase.md": "8f0e98dc6c223229",
|
||||
"command/gsd-plan-phase.md": "b37e9a61f946c975",
|
||||
"command/gsd-plan-phase.md": "5ef48b00031b341c",
|
||||
"command/gsd-plan-review-convergence.md": "79a28ef110f9f481",
|
||||
"command/gsd-pr-branch.md": "68e724607de3c480",
|
||||
"command/gsd-profile-user.md": "9704158b2d79cad2",
|
||||
@@ -176,7 +176,7 @@
|
||||
"gsd-core/references/planner-human-verify-mode.md": "3a625b42d9cb93ee",
|
||||
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
|
||||
"gsd-core/references/planner-load-graph-context.md": "ca7a7af3f35ae61b",
|
||||
"gsd-core/references/planner-mvp-mode.md": "ec33050db81101a8",
|
||||
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
|
||||
"gsd-core/references/planner-reviews.md": "da39eace09a10743",
|
||||
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
|
||||
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
|
||||
@@ -194,7 +194,7 @@
|
||||
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
|
||||
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
|
||||
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
|
||||
"gsd-core/references/skeleton-template.md": "528691d1f0efa878",
|
||||
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
|
||||
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
|
||||
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
|
||||
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
|
||||
@@ -310,7 +310,7 @@
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "811b6d8489571581",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "8ccc16a6c7cf6000",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "8dc89b35582407f7",
|
||||
"gsd-core/workflows/execute-plan.md": "21c1dc158588803a",
|
||||
"gsd-core/workflows/explore.md": "14242d36d4822df6",
|
||||
"gsd-core/workflows/extract-learnings.md": "d8177b0c13b7e5ee",
|
||||
"gsd-core/workflows/fast.md": "41a6568b873aef99",
|
||||
@@ -320,7 +320,7 @@
|
||||
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
|
||||
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
|
||||
"gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0",
|
||||
"gsd-core/workflows/help/modes/full.md": "775f766dfafb72f9",
|
||||
"gsd-core/workflows/help/modes/full.md": "c41d1012b4577fe4",
|
||||
"gsd-core/workflows/help/modes/topic.md": "0bf9ab39d7044d69",
|
||||
"gsd-core/workflows/import.md": "f8bbe6f2c0e08a78",
|
||||
"gsd-core/workflows/inbox.md": "a073396097c89c01",
|
||||
@@ -342,7 +342,7 @@
|
||||
"gsd-core/workflows/onboard.md": "78b288089305dc46",
|
||||
"gsd-core/workflows/pause-work.md": "a6e5336c409fdc8b",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "1b43d12812f7bc1e",
|
||||
"gsd-core/workflows/plan-phase.md": "65667ea11d155b97",
|
||||
"gsd-core/workflows/plan-phase.md": "aca787850411c004",
|
||||
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60",
|
||||
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "f10975692cbd036e",
|
||||
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261",
|
||||
@@ -441,7 +441,7 @@
|
||||
"skills/gsd-onboard/SKILL.md": "0e3cc902f44b41b8",
|
||||
"skills/gsd-pause-work/SKILL.md": "34366b18a392a717",
|
||||
"skills/gsd-phase/SKILL.md": "64a241d4f8665aa2",
|
||||
"skills/gsd-plan-phase/SKILL.md": "c73cba04a26f0bfe",
|
||||
"skills/gsd-plan-phase/SKILL.md": "fd51709d82eb05b6",
|
||||
"skills/gsd-plan-review-convergence/SKILL.md": "fae05d6ab16cac10",
|
||||
"skills/gsd-pr-branch/SKILL.md": "a80da6aa95efc50d",
|
||||
"skills/gsd-profile-user/SKILL.md": "4ac2c5ea45d17a9d",
|
||||
|
||||
16
tests/fixtures/golden-install-parity/kimi.json
vendored
16
tests/fixtures/golden-install-parity/kimi.json
vendored
@@ -61,7 +61,7 @@
|
||||
"agents/subagents/gsd-eval-auditor.yaml": "e3d868bd5fefe938",
|
||||
"agents/subagents/gsd-eval-planner.md": "70f8c5727bfb9876",
|
||||
"agents/subagents/gsd-eval-planner.yaml": "df8499f7af297ec2",
|
||||
"agents/subagents/gsd-executor.md": "d3b2806c227c6a27",
|
||||
"agents/subagents/gsd-executor.md": "948d122c6607e343",
|
||||
"agents/subagents/gsd-executor.yaml": "e29422986636fd64",
|
||||
"agents/subagents/gsd-framework-selector.md": "a15b7aa1e0576e16",
|
||||
"agents/subagents/gsd-framework-selector.yaml": "fb52c31cde27b0e3",
|
||||
@@ -79,7 +79,7 @@
|
||||
"agents/subagents/gsd-phase-researcher.yaml": "7633c8e82617e7cc",
|
||||
"agents/subagents/gsd-plan-checker.md": "bd302afc01ed40f0",
|
||||
"agents/subagents/gsd-plan-checker.yaml": "8295181071121db8",
|
||||
"agents/subagents/gsd-planner.md": "f4a053af3e081edf",
|
||||
"agents/subagents/gsd-planner.md": "aaaac708b1cf2939",
|
||||
"agents/subagents/gsd-planner.yaml": "2e83ee194bcd7fbd",
|
||||
"agents/subagents/gsd-project-researcher.md": "39bc2ec5a8b18283",
|
||||
"agents/subagents/gsd-project-researcher.yaml": "ce12586b0347e2dc",
|
||||
@@ -169,7 +169,7 @@
|
||||
"gsd-core/references/planner-human-verify-mode.md": "56d05e841630b3f4",
|
||||
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
|
||||
"gsd-core/references/planner-load-graph-context.md": "ca7a7af3f35ae61b",
|
||||
"gsd-core/references/planner-mvp-mode.md": "ec33050db81101a8",
|
||||
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
|
||||
"gsd-core/references/planner-reviews.md": "dda0193a0fbd4947",
|
||||
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
|
||||
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
|
||||
@@ -187,7 +187,7 @@
|
||||
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
|
||||
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
|
||||
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
|
||||
"gsd-core/references/skeleton-template.md": "528691d1f0efa878",
|
||||
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
|
||||
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
|
||||
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
|
||||
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
|
||||
@@ -303,7 +303,7 @@
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "811b6d8489571581",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "8ccc16a6c7cf6000",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "c8502b7475d797a7",
|
||||
"gsd-core/workflows/execute-plan.md": "3c4310c2dd9ef0ad",
|
||||
"gsd-core/workflows/explore.md": "6c04f2e658d93261",
|
||||
"gsd-core/workflows/extract-learnings.md": "b6f01ca3d8f58de4",
|
||||
"gsd-core/workflows/fast.md": "11f5cd10ae5cc7d3",
|
||||
@@ -313,7 +313,7 @@
|
||||
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
|
||||
"gsd-core/workflows/help/modes/brief.md": "924860e1f07defb0",
|
||||
"gsd-core/workflows/help/modes/default.md": "08a02976c0c5cc50",
|
||||
"gsd-core/workflows/help/modes/full.md": "ee47582c5d8d94a7",
|
||||
"gsd-core/workflows/help/modes/full.md": "9706b4bee6829f82",
|
||||
"gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d",
|
||||
"gsd-core/workflows/import.md": "3d3fa603ceb8bc9f",
|
||||
"gsd-core/workflows/inbox.md": "437f981ef9ae7b26",
|
||||
@@ -335,7 +335,7 @@
|
||||
"gsd-core/workflows/onboard.md": "6f9e6c0b484271a9",
|
||||
"gsd-core/workflows/pause-work.md": "f2b33bba5593d422",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc",
|
||||
"gsd-core/workflows/plan-phase.md": "f584e1d652e47f40",
|
||||
"gsd-core/workflows/plan-phase.md": "851eb6ba0bc911b9",
|
||||
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072",
|
||||
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2",
|
||||
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "49f58c3f75be3eb5",
|
||||
@@ -432,7 +432,7 @@
|
||||
"skills/gsd-onboard/SKILL.md": "fd66b3c5b9c6a871",
|
||||
"skills/gsd-pause-work/SKILL.md": "95017c70ae9dca0d",
|
||||
"skills/gsd-phase/SKILL.md": "31578c329cc2583e",
|
||||
"skills/gsd-plan-phase/SKILL.md": "54798eddf30056b5",
|
||||
"skills/gsd-plan-phase/SKILL.md": "4c2c6641f59f6496",
|
||||
"skills/gsd-plan-review-convergence/SKILL.md": "0b549738d41d59b5",
|
||||
"skills/gsd-pr-branch/SKILL.md": "67f468db29ff2cf1",
|
||||
"skills/gsd-profile-user/SKILL.md": "19a1d3aba57f6c7c",
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"agents/gsd-domain-researcher.md": "71250e759ca9e723",
|
||||
"agents/gsd-eval-auditor.md": "c88890105f32ace6",
|
||||
"agents/gsd-eval-planner.md": "60bddb70a937f796",
|
||||
"agents/gsd-executor.md": "cad2c28464d535df",
|
||||
"agents/gsd-executor.md": "4f180ee85214abe8",
|
||||
"agents/gsd-framework-selector.md": "1c0a10355e787675",
|
||||
"agents/gsd-integration-checker.md": "a9de5928e5a5c649",
|
||||
"agents/gsd-intel-updater.md": "493e07482fa6198a",
|
||||
@@ -25,7 +25,7 @@
|
||||
"agents/gsd-pattern-mapper.md": "7c6d1d9817a9c1e7",
|
||||
"agents/gsd-phase-researcher.md": "9874110700b41f48",
|
||||
"agents/gsd-plan-checker.md": "28ca3dc43669894f",
|
||||
"agents/gsd-planner.md": "4fdb27fe53d38935",
|
||||
"agents/gsd-planner.md": "4e568338c7ee6b80",
|
||||
"agents/gsd-project-researcher.md": "dae210ae0b3c6e2b",
|
||||
"agents/gsd-research-synthesizer.md": "e02c6ad5d1b74171",
|
||||
"agents/gsd-roadmapper.md": "1658a40b20d8b575",
|
||||
@@ -79,7 +79,7 @@
|
||||
"command/gsd-onboard.md": "3aafaeb5d3941efe",
|
||||
"command/gsd-pause-work.md": "bb5bf91a2e3e480e",
|
||||
"command/gsd-phase.md": "6bcda1539f949d5a",
|
||||
"command/gsd-plan-phase.md": "7ee44086b59862b9",
|
||||
"command/gsd-plan-phase.md": "2c673275cb9517fe",
|
||||
"command/gsd-plan-review-convergence.md": "79e141ca34edba9a",
|
||||
"command/gsd-pr-branch.md": "31fca4f1d6c4ee62",
|
||||
"command/gsd-profile-user.md": "725c14ae7203b5b6",
|
||||
@@ -176,7 +176,7 @@
|
||||
"gsd-core/references/planner-human-verify-mode.md": "3a625b42d9cb93ee",
|
||||
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
|
||||
"gsd-core/references/planner-load-graph-context.md": "97f6e67b56c072c1",
|
||||
"gsd-core/references/planner-mvp-mode.md": "2901bb0fdb156d5c",
|
||||
"gsd-core/references/planner-mvp-mode.md": "35d30284ea9110c0",
|
||||
"gsd-core/references/planner-reviews.md": "da39eace09a10743",
|
||||
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
|
||||
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
|
||||
@@ -194,7 +194,7 @@
|
||||
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
|
||||
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
|
||||
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
|
||||
"gsd-core/references/skeleton-template.md": "528691d1f0efa878",
|
||||
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
|
||||
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
|
||||
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
|
||||
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
|
||||
@@ -310,7 +310,7 @@
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "baa2c401af10a80a",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "b86ca98268dd3705",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "e8de8ea661c1fe81",
|
||||
"gsd-core/workflows/execute-plan.md": "cdd49ac15770c9d1",
|
||||
"gsd-core/workflows/explore.md": "7f5f9231cfd3089b",
|
||||
"gsd-core/workflows/extract-learnings.md": "92b3c0979604b7d0",
|
||||
"gsd-core/workflows/fast.md": "12187b242e6af970",
|
||||
@@ -320,7 +320,7 @@
|
||||
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
|
||||
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
|
||||
"gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0",
|
||||
"gsd-core/workflows/help/modes/full.md": "35598c0ed5f7356f",
|
||||
"gsd-core/workflows/help/modes/full.md": "de70e34ebd257ce9",
|
||||
"gsd-core/workflows/help/modes/topic.md": "0bf9ab39d7044d69",
|
||||
"gsd-core/workflows/import.md": "67fbf389ab8e57b4",
|
||||
"gsd-core/workflows/inbox.md": "a073396097c89c01",
|
||||
@@ -342,7 +342,7 @@
|
||||
"gsd-core/workflows/onboard.md": "102556e1715c01b9",
|
||||
"gsd-core/workflows/pause-work.md": "70c72beca55c080a",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "0a9dacd422cd9533",
|
||||
"gsd-core/workflows/plan-phase.md": "824b0fa8d7554ae7",
|
||||
"gsd-core/workflows/plan-phase.md": "b252c6e1427d508e",
|
||||
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60",
|
||||
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "3a09141de7f3dedb",
|
||||
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261",
|
||||
@@ -469,7 +469,7 @@
|
||||
"skills/gsd-onboard/SKILL.md": "ea0b1217e5ecae23",
|
||||
"skills/gsd-pause-work/SKILL.md": "c7e9ba4f242c4648",
|
||||
"skills/gsd-phase/SKILL.md": "ee78c0c56c814d84",
|
||||
"skills/gsd-plan-phase/SKILL.md": "6abcc3a1568a6bb9",
|
||||
"skills/gsd-plan-phase/SKILL.md": "c9b3b5cb0fbb42a9",
|
||||
"skills/gsd-plan-review-convergence/SKILL.md": "15ab9274bbb733a7",
|
||||
"skills/gsd-pr-branch/SKILL.md": "8fa5a8fa217fe913",
|
||||
"skills/gsd-profile-user/SKILL.md": "3e6155a64523d59f",
|
||||
|
||||
10
tests/fixtures/golden-install-parity/pi.json
vendored
10
tests/fixtures/golden-install-parity/pi.json
vendored
@@ -72,7 +72,7 @@
|
||||
"gsd-core/references/planner-human-verify-mode.md": "56d05e841630b3f4",
|
||||
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
|
||||
"gsd-core/references/planner-load-graph-context.md": "ca7a7af3f35ae61b",
|
||||
"gsd-core/references/planner-mvp-mode.md": "ec33050db81101a8",
|
||||
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
|
||||
"gsd-core/references/planner-reviews.md": "dda0193a0fbd4947",
|
||||
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
|
||||
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
|
||||
@@ -90,7 +90,7 @@
|
||||
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
|
||||
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
|
||||
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
|
||||
"gsd-core/references/skeleton-template.md": "528691d1f0efa878",
|
||||
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
|
||||
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
|
||||
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
|
||||
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
|
||||
@@ -206,7 +206,7 @@
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "811b6d8489571581",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "8ccc16a6c7cf6000",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "ff172c3540b52e9d",
|
||||
"gsd-core/workflows/execute-plan.md": "d797619290e91120",
|
||||
"gsd-core/workflows/explore.md": "6c04f2e658d93261",
|
||||
"gsd-core/workflows/extract-learnings.md": "b6f01ca3d8f58de4",
|
||||
"gsd-core/workflows/fast.md": "11f5cd10ae5cc7d3",
|
||||
@@ -216,7 +216,7 @@
|
||||
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
|
||||
"gsd-core/workflows/help/modes/brief.md": "924860e1f07defb0",
|
||||
"gsd-core/workflows/help/modes/default.md": "08a02976c0c5cc50",
|
||||
"gsd-core/workflows/help/modes/full.md": "87951776f730390d",
|
||||
"gsd-core/workflows/help/modes/full.md": "584e50ea86a86b6f",
|
||||
"gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d",
|
||||
"gsd-core/workflows/import.md": "3d3fa603ceb8bc9f",
|
||||
"gsd-core/workflows/inbox.md": "437f981ef9ae7b26",
|
||||
@@ -238,7 +238,7 @@
|
||||
"gsd-core/workflows/onboard.md": "6f9e6c0b484271a9",
|
||||
"gsd-core/workflows/pause-work.md": "f2b33bba5593d422",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc",
|
||||
"gsd-core/workflows/plan-phase.md": "5a841e26f1d6f9ae",
|
||||
"gsd-core/workflows/plan-phase.md": "915e5aee921c011f",
|
||||
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072",
|
||||
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2",
|
||||
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "49f58c3f75be3eb5",
|
||||
|
||||
16
tests/fixtures/golden-install-parity/qwen.json
vendored
16
tests/fixtures/golden-install-parity/qwen.json
vendored
@@ -16,7 +16,7 @@
|
||||
"agents/gsd-domain-researcher.md": "bd054bb27beed2a7",
|
||||
"agents/gsd-eval-auditor.md": "57cc7458ab5de6b7",
|
||||
"agents/gsd-eval-planner.md": "01b665728dde4ccf",
|
||||
"agents/gsd-executor.md": "72c02583b569a25f",
|
||||
"agents/gsd-executor.md": "988960899bd49c68",
|
||||
"agents/gsd-framework-selector.md": "82ba6abea84226b7",
|
||||
"agents/gsd-integration-checker.md": "90835dbc7dfa1691",
|
||||
"agents/gsd-intel-updater.md": "3cc4f6ddd04676ec",
|
||||
@@ -25,7 +25,7 @@
|
||||
"agents/gsd-pattern-mapper.md": "83c66c7722e8b165",
|
||||
"agents/gsd-phase-researcher.md": "284e55a86ae46d7f",
|
||||
"agents/gsd-plan-checker.md": "c8a8fcc8ed38eff0",
|
||||
"agents/gsd-planner.md": "a14e9e4981519580",
|
||||
"agents/gsd-planner.md": "75989c686d191143",
|
||||
"agents/gsd-project-researcher.md": "b5baac64a15c85e2",
|
||||
"agents/gsd-research-synthesizer.md": "6cd9b501dc97bd50",
|
||||
"agents/gsd-roadmapper.md": "c357a77ab919e9e5",
|
||||
@@ -105,7 +105,7 @@
|
||||
"gsd-core/references/planner-human-verify-mode.md": "ee0edddeed8eb946",
|
||||
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
|
||||
"gsd-core/references/planner-load-graph-context.md": "3f6f5ee62d86f72d",
|
||||
"gsd-core/references/planner-mvp-mode.md": "ec33050db81101a8",
|
||||
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
|
||||
"gsd-core/references/planner-reviews.md": "da39eace09a10743",
|
||||
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
|
||||
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
|
||||
@@ -123,7 +123,7 @@
|
||||
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
|
||||
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
|
||||
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
|
||||
"gsd-core/references/skeleton-template.md": "528691d1f0efa878",
|
||||
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
|
||||
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
|
||||
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
|
||||
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
|
||||
@@ -239,7 +239,7 @@
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "98db1ba4c39cd784",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "56fc78db4de210df",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "503b0ced0731dc38",
|
||||
"gsd-core/workflows/execute-plan.md": "79410db4a6bb5a46",
|
||||
"gsd-core/workflows/explore.md": "e1a83a8982532e5b",
|
||||
"gsd-core/workflows/extract-learnings.md": "dd4fdb88605de49a",
|
||||
"gsd-core/workflows/fast.md": "93ed453edddd8c0c",
|
||||
@@ -249,7 +249,7 @@
|
||||
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
|
||||
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
|
||||
"gsd-core/workflows/help/modes/default.md": "7ca77077085452f5",
|
||||
"gsd-core/workflows/help/modes/full.md": "00c1433a639f6ed8",
|
||||
"gsd-core/workflows/help/modes/full.md": "9d620deed3bf9011",
|
||||
"gsd-core/workflows/help/modes/topic.md": "6e42db16f1568be9",
|
||||
"gsd-core/workflows/import.md": "e56c18a984396066",
|
||||
"gsd-core/workflows/inbox.md": "91aac6360e1a8672",
|
||||
@@ -271,7 +271,7 @@
|
||||
"gsd-core/workflows/onboard.md": "3c50ed1f1fd07619",
|
||||
"gsd-core/workflows/pause-work.md": "be33f84dc1d4822f",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "d98e98486123eb97",
|
||||
"gsd-core/workflows/plan-phase.md": "e33c0b28f48db48a",
|
||||
"gsd-core/workflows/plan-phase.md": "2d1f7925036bd901",
|
||||
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60",
|
||||
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "c22ff5ea46de665a",
|
||||
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "d050d8d551ed1756",
|
||||
@@ -417,7 +417,7 @@
|
||||
"skills/gsd-ns-workflow/skills/mvp-phase/SKILL.md": "f9a1348c6c297579",
|
||||
"skills/gsd-ns-workflow/skills/next/SKILL.md": "13e394affe675498",
|
||||
"skills/gsd-ns-workflow/skills/phase/SKILL.md": "1ed640e5f06c7be6",
|
||||
"skills/gsd-ns-workflow/skills/plan-phase/SKILL.md": "75979bb1db5557af",
|
||||
"skills/gsd-ns-workflow/skills/plan-phase/SKILL.md": "cdfe074359399099",
|
||||
"skills/gsd-ns-workflow/skills/plan-review-convergence/SKILL.md": "c3dd8bfa877eaed5",
|
||||
"skills/gsd-ns-workflow/skills/progress/SKILL.md": "943538c4ac6bde19",
|
||||
"skills/gsd-ns-workflow/skills/quick/SKILL.md": "bd5e4cb79bc41611",
|
||||
|
||||
16
tests/fixtures/golden-install-parity/trae.json
vendored
16
tests/fixtures/golden-install-parity/trae.json
vendored
@@ -16,7 +16,7 @@
|
||||
"agents/gsd-domain-researcher.md": "b80f76874c04e515",
|
||||
"agents/gsd-eval-auditor.md": "470bf16303ec4d2e",
|
||||
"agents/gsd-eval-planner.md": "22334fde85723c9d",
|
||||
"agents/gsd-executor.md": "e5b96a52bd3c96c8",
|
||||
"agents/gsd-executor.md": "2e92d53ec70b614f",
|
||||
"agents/gsd-framework-selector.md": "7726fccc86bfeb50",
|
||||
"agents/gsd-integration-checker.md": "7cd2072984411c7f",
|
||||
"agents/gsd-intel-updater.md": "83de6ba9172891c3",
|
||||
@@ -25,7 +25,7 @@
|
||||
"agents/gsd-pattern-mapper.md": "b5d7a4abb1baecb9",
|
||||
"agents/gsd-phase-researcher.md": "2256f1f82212c757",
|
||||
"agents/gsd-plan-checker.md": "523119bd5d6599fe",
|
||||
"agents/gsd-planner.md": "d0e98ddbfb1339f5",
|
||||
"agents/gsd-planner.md": "3cbce9388340c855",
|
||||
"agents/gsd-project-researcher.md": "ddf7794e81300032",
|
||||
"agents/gsd-research-synthesizer.md": "a124b00271748d07",
|
||||
"agents/gsd-roadmapper.md": "493ef92b42b12cf4",
|
||||
@@ -105,7 +105,7 @@
|
||||
"gsd-core/references/planner-human-verify-mode.md": "0bb1176995ac1d81",
|
||||
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
|
||||
"gsd-core/references/planner-load-graph-context.md": "9a9383599893ea7e",
|
||||
"gsd-core/references/planner-mvp-mode.md": "ec33050db81101a8",
|
||||
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
|
||||
"gsd-core/references/planner-reviews.md": "da39eace09a10743",
|
||||
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
|
||||
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
|
||||
@@ -123,7 +123,7 @@
|
||||
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
|
||||
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
|
||||
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
|
||||
"gsd-core/references/skeleton-template.md": "528691d1f0efa878",
|
||||
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
|
||||
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
|
||||
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
|
||||
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
|
||||
@@ -239,7 +239,7 @@
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "0a9e915170c7121c",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "4b00ef3484a84954",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "4910f75bab2040ab",
|
||||
"gsd-core/workflows/execute-plan.md": "feae1e61007feab2",
|
||||
"gsd-core/workflows/explore.md": "8a5437aa0c239c38",
|
||||
"gsd-core/workflows/extract-learnings.md": "3fcc858b20d0d0e6",
|
||||
"gsd-core/workflows/fast.md": "0f05b1e008ac2fc2",
|
||||
@@ -249,7 +249,7 @@
|
||||
"gsd-core/workflows/help.md": "08e1349950c5602a",
|
||||
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
|
||||
"gsd-core/workflows/help/modes/default.md": "ed7368e0d1b8644a",
|
||||
"gsd-core/workflows/help/modes/full.md": "b3287aa383806758",
|
||||
"gsd-core/workflows/help/modes/full.md": "249beacac5798123",
|
||||
"gsd-core/workflows/help/modes/topic.md": "8a5344e56fa64ab9",
|
||||
"gsd-core/workflows/import.md": "31af58468db15daf",
|
||||
"gsd-core/workflows/inbox.md": "e9ea37b2d46dc5b4",
|
||||
@@ -271,7 +271,7 @@
|
||||
"gsd-core/workflows/onboard.md": "61f111302af0f404",
|
||||
"gsd-core/workflows/pause-work.md": "c20d267e28ce92f0",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "26db7b9329b7ddc8",
|
||||
"gsd-core/workflows/plan-phase.md": "8bc16d0a44541ac4",
|
||||
"gsd-core/workflows/plan-phase.md": "c4d0d0558a3b116e",
|
||||
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "e06ccd4d4c0703fb",
|
||||
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "778b73a8db6f7c32",
|
||||
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "619946c879f33b9d",
|
||||
@@ -389,7 +389,7 @@
|
||||
"skills/gsd-ns-workflow/skills/mvp-phase/SKILL.md": "fef8178c9920c2dd",
|
||||
"skills/gsd-ns-workflow/skills/next/SKILL.md": "faadd9e2817e7324",
|
||||
"skills/gsd-ns-workflow/skills/phase/SKILL.md": "df3efcd61f7cc796",
|
||||
"skills/gsd-ns-workflow/skills/plan-phase/SKILL.md": "b6f6395312983c31",
|
||||
"skills/gsd-ns-workflow/skills/plan-phase/SKILL.md": "a937c8c42e5eaea3",
|
||||
"skills/gsd-ns-workflow/skills/plan-review-convergence/SKILL.md": "d67e16a8e28b780d",
|
||||
"skills/gsd-ns-workflow/skills/progress/SKILL.md": "37a37d2cdfba46ea",
|
||||
"skills/gsd-ns-workflow/skills/quick/SKILL.md": "6fd1b96274b23a9f",
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"agents/gsd-domain-researcher.md": "56395dbdabf076f6",
|
||||
"agents/gsd-eval-auditor.md": "fb64fc5acf359747",
|
||||
"agents/gsd-eval-planner.md": "2049dac060d00eda",
|
||||
"agents/gsd-executor.md": "1eb9f58c5e9da94d",
|
||||
"agents/gsd-executor.md": "5d56ba16562745d0",
|
||||
"agents/gsd-framework-selector.md": "4b77eebbe9288d80",
|
||||
"agents/gsd-integration-checker.md": "4ffb37fb230c2b90",
|
||||
"agents/gsd-intel-updater.md": "a81d77c143c02108",
|
||||
@@ -25,7 +25,7 @@
|
||||
"agents/gsd-pattern-mapper.md": "ada0c169daa2f0ec",
|
||||
"agents/gsd-phase-researcher.md": "2a45ebde829555ec",
|
||||
"agents/gsd-plan-checker.md": "33fbf70b7b24eb1e",
|
||||
"agents/gsd-planner.md": "f408404c60840c9f",
|
||||
"agents/gsd-planner.md": "c4072a4678c17485",
|
||||
"agents/gsd-project-researcher.md": "f6697b316b5995ba",
|
||||
"agents/gsd-research-synthesizer.md": "04036f38c1d373ea",
|
||||
"agents/gsd-roadmapper.md": "fb62e1e3de84b5f9",
|
||||
@@ -105,7 +105,7 @@
|
||||
"gsd-core/references/planner-human-verify-mode.md": "86c8c7052806711f",
|
||||
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
|
||||
"gsd-core/references/planner-load-graph-context.md": "18d50b6d12db830e",
|
||||
"gsd-core/references/planner-mvp-mode.md": "ec33050db81101a8",
|
||||
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
|
||||
"gsd-core/references/planner-reviews.md": "da39eace09a10743",
|
||||
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
|
||||
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
|
||||
@@ -123,7 +123,7 @@
|
||||
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
|
||||
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
|
||||
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
|
||||
"gsd-core/references/skeleton-template.md": "528691d1f0efa878",
|
||||
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
|
||||
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
|
||||
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
|
||||
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
|
||||
@@ -239,7 +239,7 @@
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "15bca39a75c664be",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "02324a66cb42fae3",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "c8567fb4438b4404",
|
||||
"gsd-core/workflows/execute-plan.md": "403c53e3148033a3",
|
||||
"gsd-core/workflows/explore.md": "04e461ff8159a24e",
|
||||
"gsd-core/workflows/extract-learnings.md": "af793bdf4ffd1c8a",
|
||||
"gsd-core/workflows/fast.md": "b03b9f595892479a",
|
||||
@@ -249,7 +249,7 @@
|
||||
"gsd-core/workflows/help.md": "08e1349950c5602a",
|
||||
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
|
||||
"gsd-core/workflows/help/modes/default.md": "6a253f1756f74e95",
|
||||
"gsd-core/workflows/help/modes/full.md": "0cd464dcd077bbfc",
|
||||
"gsd-core/workflows/help/modes/full.md": "8f1bf0e563a02255",
|
||||
"gsd-core/workflows/help/modes/topic.md": "cee80e0adfa3b06c",
|
||||
"gsd-core/workflows/import.md": "029cacf530aca86b",
|
||||
"gsd-core/workflows/inbox.md": "797c287852eb8957",
|
||||
@@ -271,7 +271,7 @@
|
||||
"gsd-core/workflows/onboard.md": "20c28136423d40ac",
|
||||
"gsd-core/workflows/pause-work.md": "93fcc1c845da6396",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "7880866ee1caf923",
|
||||
"gsd-core/workflows/plan-phase.md": "29567e9419151453",
|
||||
"gsd-core/workflows/plan-phase.md": "b0d5d582ef76c0ff",
|
||||
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "e06ccd4d4c0703fb",
|
||||
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "80b1ba493a9a967f",
|
||||
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "3fed4740a91d0443",
|
||||
|
||||
18
tests/fixtures/golden-install-parity/zcode.json
vendored
18
tests/fixtures/golden-install-parity/zcode.json
vendored
@@ -16,7 +16,7 @@
|
||||
"agents/gsd-domain-researcher.md": "049f588663814fa2",
|
||||
"agents/gsd-eval-auditor.md": "54870d3b07433525",
|
||||
"agents/gsd-eval-planner.md": "552e9fa164c51ce8",
|
||||
"agents/gsd-executor.md": "fdd9635cee849c82",
|
||||
"agents/gsd-executor.md": "b49a6d92b2cd9831",
|
||||
"agents/gsd-framework-selector.md": "8a795f230436ad2e",
|
||||
"agents/gsd-integration-checker.md": "c1760a0bbd4f7bf5",
|
||||
"agents/gsd-intel-updater.md": "944f1d903e2e9e09",
|
||||
@@ -25,7 +25,7 @@
|
||||
"agents/gsd-pattern-mapper.md": "68ecefd60811a669",
|
||||
"agents/gsd-phase-researcher.md": "2235f61764d8e969",
|
||||
"agents/gsd-plan-checker.md": "bb38f345d3d41edc",
|
||||
"agents/gsd-planner.md": "262cbc06269277d1",
|
||||
"agents/gsd-planner.md": "e76def94ab518216",
|
||||
"agents/gsd-project-researcher.md": "f572892f138734ff",
|
||||
"agents/gsd-research-synthesizer.md": "29949bf3f049a8f1",
|
||||
"agents/gsd-roadmapper.md": "840ac933e3b094f9",
|
||||
@@ -79,7 +79,7 @@
|
||||
"commands/gsd-onboard.md": "a35340ce39334fc7",
|
||||
"commands/gsd-pause-work.md": "40a953fcddbedb5d",
|
||||
"commands/gsd-phase.md": "5dd3d40e3461a973",
|
||||
"commands/gsd-plan-phase.md": "2fb6cc9c4caa6a36",
|
||||
"commands/gsd-plan-phase.md": "3fd288ea8d4748e2",
|
||||
"commands/gsd-plan-review-convergence.md": "f8e7ea9c70e59035",
|
||||
"commands/gsd-pr-branch.md": "ab1fcffe92129061",
|
||||
"commands/gsd-profile-user.md": "37c9ef202669bfd3",
|
||||
@@ -176,7 +176,7 @@
|
||||
"gsd-core/references/planner-human-verify-mode.md": "56d05e841630b3f4",
|
||||
"gsd-core/references/planner-interface-context.md": "b28fa3da6ae739a8",
|
||||
"gsd-core/references/planner-load-graph-context.md": "ca7a7af3f35ae61b",
|
||||
"gsd-core/references/planner-mvp-mode.md": "ec33050db81101a8",
|
||||
"gsd-core/references/planner-mvp-mode.md": "cfd535c9c545e73e",
|
||||
"gsd-core/references/planner-reviews.md": "dda0193a0fbd4947",
|
||||
"gsd-core/references/planner-revision.md": "86ba8a511f081f05",
|
||||
"gsd-core/references/planner-source-audit.md": "7de5bdb07232ce0b",
|
||||
@@ -194,7 +194,7 @@
|
||||
"gsd-core/references/revision-loop.md": "e55ff32dd98c63df",
|
||||
"gsd-core/references/scout-codebase.md": "ba266ecc18fbf172",
|
||||
"gsd-core/references/security-asvs-levels.md": "4774fac3b94b6ca8",
|
||||
"gsd-core/references/skeleton-template.md": "528691d1f0efa878",
|
||||
"gsd-core/references/skeleton-template.md": "f11e9cd2948bd33c",
|
||||
"gsd-core/references/sketch-interactivity.md": "7d982fe877e1e1cc",
|
||||
"gsd-core/references/sketch-theme-system.md": "33e2e96e450456f8",
|
||||
"gsd-core/references/sketch-tooling.md": "df6c4f24c1c27611",
|
||||
@@ -310,7 +310,7 @@
|
||||
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "811b6d8489571581",
|
||||
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "8ccc16a6c7cf6000",
|
||||
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
|
||||
"gsd-core/workflows/execute-plan.md": "ed874410972d32b7",
|
||||
"gsd-core/workflows/execute-plan.md": "4614bb2145a7f737",
|
||||
"gsd-core/workflows/explore.md": "6c04f2e658d93261",
|
||||
"gsd-core/workflows/extract-learnings.md": "b6f01ca3d8f58de4",
|
||||
"gsd-core/workflows/fast.md": "11f5cd10ae5cc7d3",
|
||||
@@ -320,7 +320,7 @@
|
||||
"gsd-core/workflows/help.md": "5d040504b9ab35e3",
|
||||
"gsd-core/workflows/help/modes/brief.md": "924860e1f07defb0",
|
||||
"gsd-core/workflows/help/modes/default.md": "08a02976c0c5cc50",
|
||||
"gsd-core/workflows/help/modes/full.md": "895b35f264530d24",
|
||||
"gsd-core/workflows/help/modes/full.md": "1810842c75f73fb2",
|
||||
"gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d",
|
||||
"gsd-core/workflows/import.md": "3d3fa603ceb8bc9f",
|
||||
"gsd-core/workflows/inbox.md": "437f981ef9ae7b26",
|
||||
@@ -342,7 +342,7 @@
|
||||
"gsd-core/workflows/onboard.md": "6f9e6c0b484271a9",
|
||||
"gsd-core/workflows/pause-work.md": "f2b33bba5593d422",
|
||||
"gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc",
|
||||
"gsd-core/workflows/plan-phase.md": "3784a2a5e8f098cd",
|
||||
"gsd-core/workflows/plan-phase.md": "d491791075b1aca9",
|
||||
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072",
|
||||
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2",
|
||||
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "49f58c3f75be3eb5",
|
||||
@@ -460,7 +460,7 @@
|
||||
"skills/gsd-ns-workflow/skills/mvp-phase/SKILL.md": "3455ea7562a447a2",
|
||||
"skills/gsd-ns-workflow/skills/next/SKILL.md": "63659cd48a0276f9",
|
||||
"skills/gsd-ns-workflow/skills/phase/SKILL.md": "b377b03d13db8573",
|
||||
"skills/gsd-ns-workflow/skills/plan-phase/SKILL.md": "a453c632234623d1",
|
||||
"skills/gsd-ns-workflow/skills/plan-phase/SKILL.md": "c7cfcb8f3606e69c",
|
||||
"skills/gsd-ns-workflow/skills/plan-review-convergence/SKILL.md": "ded70bf0252c6307",
|
||||
"skills/gsd-ns-workflow/skills/progress/SKILL.md": "fb24eab4a0e5f6a3",
|
||||
"skills/gsd-ns-workflow/skills/quick/SKILL.md": "48629fef2b9ac5b0",
|
||||
|
||||
370
tests/tracer-bullet.test.cjs
Normal file
370
tests/tracer-bullet.test.cjs
Normal file
@@ -0,0 +1,370 @@
|
||||
// allow-test-rule: source-text-is-the-product [#1945]
|
||||
// Agent .md / workflow .md / command .md / reference .md / docs .md files —
|
||||
// their text IS the deployed contract the runtime (and the changelog/docs
|
||||
// surface) loads. The planner/executor "task type" enum and the tracer-first
|
||||
// decomposition discipline are prose contracts, not compiled code, so the
|
||||
// contract test asserts on the shipped text. The behavioral suite at the bottom
|
||||
// exercises the ONE code seam (verify plan-structure) through the CLI.
|
||||
|
||||
/**
|
||||
* Tracer-bullet vertical slices (#1945).
|
||||
*
|
||||
* Feature: make "thin end-to-end slice first, verify, then expand" a first-class,
|
||||
* default planning + execution discipline (not an opt-in `--mvp` mode).
|
||||
*
|
||||
* 1. Planner — a first-class `tracer` task type + a tracer-first default.
|
||||
* 2. Executor — a feedback gate after the tracer slice.
|
||||
* 3. Terminology — `tracer bullet` promoted to the CONTEXT.md glossary.
|
||||
*
|
||||
* Acceptance criteria (verbatim from the issue) mapped to tests below.
|
||||
*/
|
||||
|
||||
const { test, describe } = require('node:test');
|
||||
const assert = require('node:assert/strict');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const { runGsdTools, createTempProject, cleanup } = require('./helpers.cjs');
|
||||
|
||||
const ROOT = path.join(__dirname, '..');
|
||||
const read = (rel) => fs.readFileSync(path.join(ROOT, rel), 'utf-8');
|
||||
|
||||
const PLANNER = read('agents/gsd-planner.md');
|
||||
const EXECUTOR = read('agents/gsd-executor.md');
|
||||
const EXECUTE_PLAN = read('gsd-core/workflows/execute-plan.md');
|
||||
const WORKFLOW = read('gsd-core/workflows/plan-phase.md');
|
||||
const COMMAND = read('commands/gsd/plan-phase.md');
|
||||
const HELP_FULL = read('gsd-core/workflows/help/modes/full.md');
|
||||
const MVP_REF = read('gsd-core/references/planner-mvp-mode.md');
|
||||
const CONTEXT = read('CONTEXT.md');
|
||||
const COMMANDS_DOC = read('docs/COMMANDS.md');
|
||||
const PLAN_MD_REF = read('docs/reference/plan-md.md');
|
||||
const HOWTO = read('docs/how-to/plan-a-phase.md');
|
||||
const AGENTS_DOC = read('docs/AGENTS.md');
|
||||
|
||||
// ─── contract parsers (typed views over the deployed prose) ──────────────────
|
||||
|
||||
// Isolate the planner's default-decomposition section so we can prove tracer-first
|
||||
// is NOT gated behind a flag/mode conditional.
|
||||
function plannerTracerSection(md) {
|
||||
const start = md.indexOf('## Tracer-First Decomposition');
|
||||
if (start === -1) return '';
|
||||
const rest = md.slice(start + 3);
|
||||
const nextHeading = rest.search(/\n## /);
|
||||
return nextHeading === -1 ? md.slice(start) : md.slice(start, start + 3 + nextHeading);
|
||||
}
|
||||
|
||||
function parsePlannerContract(md) {
|
||||
const section = plannerTracerSection(md);
|
||||
return {
|
||||
hasTracerFirstSection: section.length > 0,
|
||||
// "default" and "not gated behind a flag" — the whole point of #1945.
|
||||
declaresDefault: /\bdefault\b/i.test(section) && /not gated behind a flag/i.test(section),
|
||||
leadsWithTracer: /LEADS with one `type="tracer"`/.test(section),
|
||||
documentsTracerTaskType: /<task type="tracer">/.test(section),
|
||||
// Production-quality, not a prototype (the book's core distinction).
|
||||
productionQualityNotPrototype:
|
||||
/production-quality, not a prototype/i.test(section) &&
|
||||
/architectural gaps are not/i.test(section),
|
||||
// A real, runnable END-TO-END verify (not a per-layer unit check).
|
||||
endToEndVerify: /END-TO-END/i.test(section) && /not a per-layer unit test/i.test(section),
|
||||
// --no-tracer / TRACER_MODE=false restores horizontal layers.
|
||||
documentsNoTracerOptOut:
|
||||
/--no-tracer/.test(section) && /TRACER_MODE=false/.test(section) && /horizontal layers/i.test(section),
|
||||
// The break_into_tasks step itself leads with the tracer by default.
|
||||
breakStepLeadsWithTracer:
|
||||
/\*\*Lead with the tracer\.\*\*/.test(md) &&
|
||||
/Unless `TRACER_MODE=false`/.test(md),
|
||||
// Composition with --tdd (tracer starts red).
|
||||
composesWithTdd: /TDD composition/i.test(section) && /starts red/i.test(section),
|
||||
// MVP is now enrichment on top, not the toggle for vertical slices.
|
||||
mvpIsEnrichment: /MVP enrichment/i.test(section) && /no longer \*turns on\* vertical slices/i.test(section),
|
||||
};
|
||||
}
|
||||
|
||||
function parseExecutorContract(md) {
|
||||
return {
|
||||
recognizesTracerType: /\*\*If `type="tracer"`:\*\*/.test(md),
|
||||
// The gate runs BEFORE expansion tasks — an early integration checkpoint.
|
||||
earlyIntegrationGate:
|
||||
/tracer feedback gate BEFORE any expansion task/i.test(md) &&
|
||||
/early integration checkpoint/i.test(md),
|
||||
// Autonomous: halt-on-fail before any expansion task.
|
||||
// Keyed on the file's own auto-mode definition (AUTO_CHAIN or AUTO_CFG),
|
||||
// not AUTO_CFG alone — see <auto_mode_detection>.
|
||||
autoHaltsOnFailure:
|
||||
/Autonomous run \(auto mode active/i.test(md) &&
|
||||
/`AUTO_CHAIN` or `AUTO_CFG`/.test(md) &&
|
||||
/HALT and surface it/i.test(md) &&
|
||||
/do NOT proceed to expansion tasks/i.test(md),
|
||||
// Interactive: emit checkpoint:human-verify immediately after the tracer.
|
||||
interactiveHumanVerify:
|
||||
/Interactive run \(auto mode not active\)/i.test(md) &&
|
||||
/checkpoint:human-verify/.test(md),
|
||||
// Cross-referenced in the checkpoint protocol section too.
|
||||
documentedInCheckpointProtocol: /\*\*Tracer feedback gate:\*\*/.test(md),
|
||||
};
|
||||
}
|
||||
|
||||
function parseWorkflowContract(md) {
|
||||
const lines = md.split(/\r?\n/);
|
||||
const argLine = lines.find((l) => l.includes('Extract from $ARGUMENTS:')) || '';
|
||||
return {
|
||||
argListDocumentsNoTracer: argLine.includes('--no-tracer'),
|
||||
resolvesTracerMode:
|
||||
md.includes('TRACER_MODE=true') &&
|
||||
md.includes('--no-tracer') &&
|
||||
md.includes('TRACER_MODE=false'),
|
||||
injectsTracerModeToPlanner: /\*\*TRACER_MODE:\*\* \$\{TRACER_MODE\}/.test(md),
|
||||
// Guard: must not eagerly @-import the reference (size-budget rule, mirrors
|
||||
// tests/workflow-size-budget.test.cjs). An eager import is an @-path at line start.
|
||||
noEagerImportOfMvpRef: !/^\s*@[^\n]*planner-mvp-mode\.md/m.test(md),
|
||||
};
|
||||
}
|
||||
|
||||
function parseCommandContract(md) {
|
||||
const argHint = (md.split(/\r?\n/).find((l) => l.startsWith('argument-hint:')) || '');
|
||||
return {
|
||||
argHintHasNoTracer: argHint.includes('--no-tracer'),
|
||||
flagsDocumentNoTracer: /- `--no-tracer` —/.test(md),
|
||||
};
|
||||
}
|
||||
|
||||
// ─── Suite 1: Planner — first-class tracer task + tracer-first default ────────
|
||||
|
||||
describe('#1945 planner: first-class tracer task + tracer-first default', () => {
|
||||
const c = parsePlannerContract(PLANNER);
|
||||
|
||||
test('planner has a Tracer-First Decomposition section that is the DEFAULT (not flag-gated)', () => {
|
||||
assert.ok(c.hasTracerFirstSection, 'planner must document a "Tracer-First Decomposition" section');
|
||||
assert.ok(c.declaresDefault, 'the section must declare tracer-first the default, not gated behind a flag');
|
||||
});
|
||||
|
||||
// Acceptance: with no flags, PLAN.md leads with exactly one tracer task touching every layer.
|
||||
test('every plan LEADS with one type="tracer" task (acceptance #1)', () => {
|
||||
assert.ok(c.leadsWithTracer, 'planner must instruct leading every plan with one type="tracer" task');
|
||||
assert.ok(c.documentsTracerTaskType, 'planner must document the <task type="tracer"> shape');
|
||||
assert.ok(c.breakStepLeadsWithTracer, 'the break_into_tasks step must lead with the tracer by default');
|
||||
});
|
||||
|
||||
// Acceptance: the tracer includes a real end-to-end <verify>, not a per-layer unit check.
|
||||
test('tracer task carries a real end-to-end <verify> (acceptance #2)', () => {
|
||||
assert.ok(c.endToEndVerify, 'planner must require a real END-TO-END verify, not a per-layer unit test');
|
||||
});
|
||||
|
||||
// Acceptance: --no-tracer reproduces today's horizontal-layer default.
|
||||
test('--no-tracer / TRACER_MODE=false restores horizontal layers (acceptance #5)', () => {
|
||||
assert.ok(c.documentsNoTracerOptOut, 'planner must document the --no-tracer horizontal-layer opt-out');
|
||||
});
|
||||
|
||||
test('tracer is production-quality, not a prototype', () => {
|
||||
assert.ok(c.productionQualityNotPrototype, 'planner must state a tracer is production-quality, not a prototype');
|
||||
});
|
||||
|
||||
test('composes with --tdd (tracer starts red) and --mvp is enrichment on top', () => {
|
||||
assert.ok(c.composesWithTdd, 'planner must document tracer + --tdd composition');
|
||||
assert.ok(c.mvpIsEnrichment, 'planner must reframe MVP as enrichment, no longer the toggle for vertical slices');
|
||||
});
|
||||
|
||||
test('vertical-slice reference is reconciled to tracer-first-by-default', () => {
|
||||
assert.match(MVP_REF, /Tracer-First Decomposition/, 'reference title must reflect tracer-first');
|
||||
assert.match(MVP_REF, /the \*\*default\*\* tracer-first decomposition/, 'reference must state tracer-first is the default');
|
||||
assert.doesNotMatch(
|
||||
MVP_REF,
|
||||
/only when `MVP_MODE=true`/,
|
||||
'reference must no longer gate vertical slices behind MVP_MODE only',
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
// ─── Suite 2: Executor — post-tracer feedback gate ───────────────────────────
|
||||
|
||||
describe('#1945 executor: post-tracer feedback gate', () => {
|
||||
const c = parseExecutorContract(EXECUTOR);
|
||||
|
||||
test('executor recognizes type="tracer"', () => {
|
||||
assert.ok(c.recognizesTracerType, 'executor must handle type="tracer"');
|
||||
});
|
||||
|
||||
test('runs an early integration gate BEFORE expansion tasks', () => {
|
||||
assert.ok(c.earlyIntegrationGate, 'executor must run the tracer verify as an early integration checkpoint before expansion');
|
||||
});
|
||||
|
||||
// Acceptance: autonomous run halts before any expansion task on a failing tracer.
|
||||
test('autonomous run HALTS before expansion on a failing tracer (acceptance #3)', () => {
|
||||
assert.ok(c.autoHaltsOnFailure, 'autonomous run must halt (surfaced) before expansion when the tracer verify fails');
|
||||
});
|
||||
|
||||
// Acceptance: interactive run presents a human-verify checkpoint after the tracer.
|
||||
test('interactive run emits checkpoint:human-verify after the tracer (acceptance #4)', () => {
|
||||
assert.ok(c.interactiveHumanVerify, 'interactive run must emit checkpoint:human-verify immediately after the tracer');
|
||||
});
|
||||
|
||||
test('gate is cross-referenced in the checkpoint protocol', () => {
|
||||
assert.ok(c.documentedInCheckpointProtocol, 'checkpoint protocol must cross-reference the tracer feedback gate');
|
||||
});
|
||||
|
||||
// The execute-plan orchestrator has its OWN inline per-task dispatch (used for
|
||||
// step-by-step / non-Claude-Code / inline execution) — it must know tracer too,
|
||||
// else the gate silently no-ops on those paths.
|
||||
test('execute-plan.md inline dispatch also handles type="tracer" with the gate', () => {
|
||||
assert.match(EXECUTE_PLAN, /`type="tracer"`/, 'execute-plan.md inline dispatch must handle type="tracer"');
|
||||
assert.match(EXECUTE_PLAN, /tracer feedback gate BEFORE any expansion task/i, 'execute-plan.md must run the tracer gate before expansion');
|
||||
assert.match(EXECUTE_PLAN, /Auto mode active \(`AUTO_CHAIN` or `AUTO_CFG`\)/, 'execute-plan.md tracer gate must key on auto mode (AUTO_CHAIN or AUTO_CFG)');
|
||||
});
|
||||
});
|
||||
|
||||
// ─── Suite 3: Orchestrator + command wire --no-tracer ────────────────────────
|
||||
|
||||
describe('#1945 plan-phase orchestrator + command: --no-tracer wiring', () => {
|
||||
const w = parseWorkflowContract(WORKFLOW);
|
||||
const cmd = parseCommandContract(COMMAND);
|
||||
|
||||
test('workflow argument list documents --no-tracer', () => {
|
||||
assert.ok(w.argListDocumentsNoTracer, 'plan-phase workflow must extract --no-tracer from $ARGUMENTS');
|
||||
});
|
||||
|
||||
test('workflow resolves TRACER_MODE (default true, --no-tracer -> false)', () => {
|
||||
assert.ok(w.resolvesTracerMode, 'workflow must resolve TRACER_MODE with a --no-tracer -> false path');
|
||||
});
|
||||
|
||||
test('workflow injects TRACER_MODE into the planner subagent prompt', () => {
|
||||
assert.ok(w.injectsTracerModeToPlanner, 'workflow must wire **TRACER_MODE:** ${TRACER_MODE} into the planner prompt');
|
||||
});
|
||||
|
||||
test('workflow does not eagerly @-import planner-mvp-mode.md (size-budget guard)', () => {
|
||||
assert.ok(w.noEagerImportOfMvpRef, 'planner-mvp-mode.md must stay lazily loaded by the planner, not eagerly imported');
|
||||
});
|
||||
|
||||
test('command argument-hint and flags document --no-tracer', () => {
|
||||
assert.ok(cmd.argHintHasNoTracer, 'command argument-hint must advertise --no-tracer');
|
||||
assert.ok(cmd.flagsDocumentNoTracer, 'command flags list must document --no-tracer');
|
||||
});
|
||||
|
||||
test('/gsd:help full listing documents --no-tracer', () => {
|
||||
assert.match(HELP_FULL, /\[--no-tracer\]/, 'help/modes/full.md plan-phase usage line must list --no-tracer');
|
||||
assert.match(HELP_FULL, /- `--no-tracer` —/, 'help/modes/full.md must describe the --no-tracer flag');
|
||||
});
|
||||
});
|
||||
|
||||
// ─── Suite 4: Terminology — CONTEXT glossary + docs ──────────────────────────
|
||||
|
||||
describe('#1945 glossary + docs', () => {
|
||||
// Acceptance: CONTEXT.md glossary defines tracer bullet vs prototype.
|
||||
test('CONTEXT.md glossary defines "Tracer Bullet" against "prototype" (acceptance #7)', () => {
|
||||
assert.match(CONTEXT, /^### Tracer Bullet$/m, 'CONTEXT.md must have a ### Tracer Bullet glossary entry');
|
||||
const start = CONTEXT.indexOf('### Tracer Bullet');
|
||||
const entry = CONTEXT.slice(start, start + 1400);
|
||||
assert.match(entry, /production-quality/i, 'entry must call a tracer production-quality');
|
||||
assert.match(entry, /\bprototype\b/i, 'entry must contrast tracer with a prototype');
|
||||
assert.match(entry, /throwaway/i, 'entry must describe a prototype as throwaway');
|
||||
});
|
||||
|
||||
test('docs/COMMANDS.md documents the --no-tracer flag', () => {
|
||||
assert.match(COMMANDS_DOC, /\| `--no-tracer` \|/, 'COMMANDS.md flag table must include --no-tracer');
|
||||
});
|
||||
|
||||
test('docs/reference/plan-md.md task-types table includes tracer', () => {
|
||||
assert.match(PLAN_MD_REF, /\| `tracer` \|/, 'plan-md.md Task types table must include a tracer row');
|
||||
});
|
||||
|
||||
test('docs/how-to and docs/AGENTS reflect tracer-first + the executor gate', () => {
|
||||
assert.match(HOWTO, /tracer/i, 'how-to must mention tracer-first');
|
||||
assert.match(HOWTO, /--no-tracer/, 'how-to must mention the --no-tracer opt-out');
|
||||
assert.match(AGENTS_DOC, /task types: auto, tracer/i, 'AGENTS.md must list tracer among task types');
|
||||
assert.match(AGENTS_DOC, /Tracer feedback gate/i, 'AGENTS.md must describe the executor tracer gate');
|
||||
});
|
||||
});
|
||||
|
||||
// ─── Suite 5: Behavioral — the one code seam accepts tracer ──────────────────
|
||||
// Acceptance #6: `tracer` is accepted everywhere the task-type enum is validated;
|
||||
// no schema/validation path rejects it. `verify plan-structure` is the only code
|
||||
// path that inspects <task type=...>. Prove it accepts tracer and never confuses
|
||||
// a tracer for a checkpoint.
|
||||
|
||||
// Minimal valid PLAN.md; `taskType` and `n` let us sweep the tracer-count boundary.
|
||||
function planWith({ taskType = 'auto', n = 1, autonomous = 'true' } = {}) {
|
||||
const tasks = [];
|
||||
for (let i = 0; i < n; i++) {
|
||||
tasks.push(
|
||||
`<task type="${taskType}">`,
|
||||
` <name>Task ${i + 1}: End-to-end slice</name>`,
|
||||
' <files>some/file.ts</files>',
|
||||
' <action>Wire one path through every layer</action>',
|
||||
' <verify><automated>echo ok</automated></verify>',
|
||||
' <done>Happy path works end-to-end</done>',
|
||||
'</task>',
|
||||
'',
|
||||
);
|
||||
}
|
||||
return [
|
||||
'---',
|
||||
'phase: 01-test',
|
||||
'plan: 01',
|
||||
'type: execute',
|
||||
'wave: 1',
|
||||
'depends_on: []',
|
||||
'files_modified: [some/file.ts]',
|
||||
`autonomous: ${autonomous}`,
|
||||
'must_haves:',
|
||||
' truths:',
|
||||
' - "something is true"',
|
||||
'---',
|
||||
'',
|
||||
'<tasks>',
|
||||
'',
|
||||
...tasks,
|
||||
'</tasks>',
|
||||
].join('\n');
|
||||
}
|
||||
|
||||
function verifyPlan(tmpDir, content) {
|
||||
const rel = path.join('.planning', 'phases', '01-test', '01-01-PLAN.md');
|
||||
fs.mkdirSync(path.join(tmpDir, '.planning', 'phases', '01-test'), { recursive: true });
|
||||
fs.writeFileSync(path.join(tmpDir, rel), content);
|
||||
const result = runGsdTools(`verify plan-structure ${rel}`, tmpDir);
|
||||
assert.ok(result.success, `verify plan-structure failed to run: ${result.error}`);
|
||||
return JSON.parse(result.output);
|
||||
}
|
||||
|
||||
describe('#1945 behavioral: verify plan-structure accepts type="tracer" (acceptance #6)', () => {
|
||||
test('a type="tracer" plan validates with no errors', (t) => {
|
||||
const tmpDir = createTempProject();
|
||||
t.after(() => cleanup(tmpDir));
|
||||
|
||||
const out = verifyPlan(tmpDir, planWith({ taskType: 'tracer', n: 1 }));
|
||||
assert.strictEqual(out.valid, true, `tracer plan must be valid, errors: ${JSON.stringify(out.errors)}`);
|
||||
assert.deepStrictEqual(out.errors, [], 'no validation path may reject a tracer task');
|
||||
assert.ok(
|
||||
!out.errors.some((e) => /tracer/i.test(e)) && !(out.warnings || []).some((w) => /tracer/i.test(w)),
|
||||
'nothing may flag the tracer task type specifically',
|
||||
);
|
||||
});
|
||||
|
||||
// verify plan-structure is task-type-agnostic: it accepts any count of tracer
|
||||
// tasks (0/1/2) with no type-based rejection. This supports acceptance #6; it is
|
||||
// NOT a claim about the planner's "exactly one leading tracer" contract, which is
|
||||
// planner prose (asserted in Suite 1), not something plan-structure validates.
|
||||
test('verify plan-structure accepts 0 / 1 / 2 tracer tasks (type-agnostic, #6)', (t) => {
|
||||
const tmpDir = createTempProject();
|
||||
t.after(() => cleanup(tmpDir));
|
||||
|
||||
for (const n of [0, 1, 2]) {
|
||||
const content = n === 0 ? planWith({ taskType: 'auto', n: 1 }) : planWith({ taskType: 'tracer', n });
|
||||
const out = verifyPlan(tmpDir, content);
|
||||
assert.strictEqual(out.valid, true, `${n}-tracer plan must be valid, errors: ${JSON.stringify(out.errors)}`);
|
||||
}
|
||||
});
|
||||
|
||||
// A tracer task is NOT a checkpoint: an autonomous:true tracer plan must not trip
|
||||
// the "Has checkpoint tasks but autonomous is not false" rule.
|
||||
test('a tracer task is not misclassified as a checkpoint', (t) => {
|
||||
const tmpDir = createTempProject();
|
||||
t.after(() => cleanup(tmpDir));
|
||||
|
||||
const out = verifyPlan(tmpDir, planWith({ taskType: 'tracer', n: 1, autonomous: 'true' }));
|
||||
assert.ok(
|
||||
!out.errors.some((e) => /checkpoint/i.test(e)),
|
||||
`tracer must not be treated as a checkpoint, errors: ${JSON.stringify(out.errors)}`,
|
||||
);
|
||||
});
|
||||
});
|
||||
@@ -25,7 +25,7 @@
|
||||
"edit-phase.md": 12927,
|
||||
"eval-review.md": 9967,
|
||||
"execute-phase.md": 93583,
|
||||
"execute-plan.md": 32655,
|
||||
"execute-plan.md": 33113,
|
||||
"explore.md": 10541,
|
||||
"extract-learnings.md": 12893,
|
||||
"fast.md": 7613,
|
||||
@@ -53,7 +53,7 @@
|
||||
"onboard.md": 8590,
|
||||
"pause-work.md": 14441,
|
||||
"plan-milestone-gaps.md": 11809,
|
||||
"plan-phase.md": 93113,
|
||||
"plan-phase.md": 93959,
|
||||
"plan-review-convergence.md": 23512,
|
||||
"plant-seed.md": 11785,
|
||||
"pr-branch.md": 15963,
|
||||
|
||||
Reference in New Issue
Block a user