gsdd-cli 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -8
- package/agents/DISTILLATION.md +116 -3
- package/agents/README.md +9 -0
- package/agents/approach-explorer.md +361 -0
- package/agents/planner.md +20 -5
- package/bin/adapters/claude.mjs +41 -11
- package/bin/adapters/codex.mjs +20 -1
- package/bin/adapters/opencode.mjs +37 -11
- package/bin/lib/init.mjs +383 -379
- package/bin/lib/models.mjs +27 -10
- package/distilled/DESIGN.md +80 -7
- package/distilled/README.md +169 -169
- package/distilled/templates/agents.block.md +1 -1
- package/distilled/templates/approach.md +232 -0
- package/distilled/templates/delegates/approach-explorer.md +25 -0
- package/distilled/templates/delegates/plan-checker.md +7 -1
- package/distilled/workflows/plan.md +82 -12
- package/package.json +9 -1
package/README.md
CHANGED
|
@@ -32,7 +32,7 @@ GSDD is a distilled fork of GSD. It preserves the high-leverage parts of long-ho
|
|
|
32
32
|
- **Milestone audit** — cross-phase integration, requirements coverage, E2E flows
|
|
33
33
|
- **Session management** — pause work with checkpoint, resume with context restoration and routing
|
|
34
34
|
|
|
35
|
-
What it strips: GSD's broader operator surface (32 workflows, 11 agents, discovery modes, sprint ceremony, a settings flow, and additional operator ergonomics). GSDD has 10 workflows and
|
|
35
|
+
What it strips: GSD's broader operator surface (32 workflows, 11 agents, discovery modes, sprint ceremony, a settings flow, and additional operator ergonomics). GSDD has 10 workflows and 10 roles.
|
|
36
36
|
|
|
37
37
|
**Target user:** Developer or small team that wants a spec-driven long-horizon kernel, not full operator comfort.
|
|
38
38
|
|
|
@@ -250,9 +250,9 @@ Workflows are agent skills or commands, not plain shell utilities. How you invok
|
|
|
250
250
|
|
|
251
251
|
## Architecture
|
|
252
252
|
|
|
253
|
-
### Roles (
|
|
253
|
+
### Roles (10 canonical)
|
|
254
254
|
|
|
255
|
-
GSDD consolidates GSD's agent surface into
|
|
255
|
+
GSDD consolidates GSD's agent surface into 10 roles with durable contracts:
|
|
256
256
|
|
|
257
257
|
| Role | Responsibility |
|
|
258
258
|
|------|---------------|
|
|
@@ -271,7 +271,7 @@ GSDD consolidates GSD's agent surface into 9 roles with durable contracts:
|
|
|
271
271
|
- **Role contracts** (`agents/*.md`) — durable, contain the full behavioral specification
|
|
272
272
|
- **Delegates** (`distilled/templates/delegates/*.md`) — thin wrappers that reference roles and provide task-specific context
|
|
273
273
|
|
|
274
|
-
|
|
274
|
+
11 delegates: 4 mapper, 4 researcher, 1 synthesizer, 1 plan-checker, 1 approach-explorer. Workflows use `<delegate>` blocks to dispatch work. For detailed GSD-to-GSDD role distillation rationale, see [`agents/DISTILLATION.md`](agents/DISTILLATION.md).
|
|
275
275
|
|
|
276
276
|
### Adapter Architecture
|
|
277
277
|
|
|
@@ -410,11 +410,11 @@ For detailed troubleshooting and recovery procedures, see the [User Guide](docs/
|
|
|
410
410
|
|
|
411
411
|
## Design Decisions
|
|
412
412
|
|
|
413
|
-
GSDD makes
|
|
413
|
+
GSDD makes 29 documented design decisions relative to GSD, each with evidence from source files and external research. See [`distilled/DESIGN.md`](distilled/DESIGN.md) for the full rationale.
|
|
414
414
|
|
|
415
415
|
Key choices:
|
|
416
416
|
- **4-file codebase standard** — drop state that rots (STRUCTURE, INTEGRATIONS, TESTING), keep rules that don't
|
|
417
|
-
- **Agent consolidation** —
|
|
417
|
+
- **Agent consolidation** — 10 roles from GSD's 11, with explicit reduced-assurance mode when independent checking isn't available
|
|
418
418
|
- **Adapter generation over conversion** — generate vendor-specific files from vendor-agnostic markdown instead of converting from Claude-first
|
|
419
419
|
- **Advisory git** — repo conventions over framework defaults
|
|
420
420
|
- **Context isolation** — summaries up, documents to disk
|
|
@@ -436,8 +436,8 @@ Structural contracts that prevent drift between roles, delegates, workflows, and
|
|
|
436
436
|
|
|
437
437
|
| Suite | What it guards |
|
|
438
438
|
|-------|---------------|
|
|
439
|
-
| **I1** | Delegate-role reference integrity —
|
|
440
|
-
| **I2** | Role section structure —
|
|
439
|
+
| **I1** | Delegate-role reference integrity — 11 delegates resolve to existing role contracts |
|
|
440
|
+
| **I2** | Role section structure — 10 roles have role def, scope, output format, success criteria |
|
|
441
441
|
| **I3** | Delegate thinness — no leaked role-contract sections in delegates |
|
|
442
442
|
| **I3-gate** | New-project approval gates — required human checkpoints present |
|
|
443
443
|
| **I4** | Workflow references — 10 workflows, all delegate/role refs resolve |
|
package/agents/DISTILLATION.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# GSDD Role Distillation Ledger
|
|
2
2
|
|
|
3
|
-
Evidence map from each of the
|
|
3
|
+
Evidence map from each of the 10 canonical GSDD roles to their GSD sources, with keep/strip/why rationale. This ledger documents why each role exists in its current form and what GSD content was distilled or merged.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -54,7 +54,7 @@ Evidence map from each of the 9 canonical GSDD roles to their GSD sources, with
|
|
|
54
54
|
- Explicit "Scope" table showing scope × trigger × focus × output location
|
|
55
55
|
- Clear statement: "Same algorithm, different scope. The scope is a context input, not a different role."
|
|
56
56
|
|
|
57
|
-
**Rationale:** The GSD original had two roles (project and phase researcher) that followed the identical algorithm but with a scope parameter. GSDD merged them into one canonical role taking scope as input, reducing the role count from 11 to 9 while preserving all leverage. This is the clean merger mentioned in D2.
|
|
57
|
+
**Rationale:** The GSD original had two roles (project and phase researcher) that followed the identical algorithm but with a scope parameter. GSDD merged them into one canonical role taking scope as input, reducing the role count from 11 to 9 (later 10 with approach-explorer in D29) while preserving all leverage. This is the clean merger mentioned in D2.
|
|
58
58
|
|
|
59
59
|
---
|
|
60
60
|
|
|
@@ -264,6 +264,50 @@ Evidence map from each of the 9 canonical GSDD roles to their GSD sources, with
|
|
|
264
264
|
|
|
265
265
|
---
|
|
266
266
|
|
|
267
|
+
## 10. Approach-Explorer
|
|
268
|
+
|
|
269
|
+
**Canonical role:** `agents/approach-explorer.md`
|
|
270
|
+
|
|
271
|
+
**GSD sources:** `workflows/discuss-phase.md` + `workflows/list-phase-assumptions.md` + `workflows/discovery-phase.md` (merged into new role)
|
|
272
|
+
|
|
273
|
+
**Merger type:** New role from 2 GSD sources (discuss-phase + list-phase-assumptions) with thematic input from discovery-phase
|
|
274
|
+
|
|
275
|
+
**Kept from GSD:**
|
|
276
|
+
- Gray area identification with 5 domain types (SEE/CALL/RUN/READ/ORGANIZED) from discuss-phase
|
|
277
|
+
- Scope guardrail: phase boundary is fixed, deferred ideas captured not acted on
|
|
278
|
+
- 5-dimension assumption surfacing (technical approach, implementation order, scope boundaries, risks, dependencies) with confidence levels from list-phase-assumptions
|
|
279
|
+
- Deferred ideas capture from discuss-phase
|
|
280
|
+
- Adaptive area-by-area deep questioning from discuss-phase (GSD used 4-question batches; GSDD uses adaptive convergence)
|
|
281
|
+
|
|
282
|
+
Note: `discovery-phase.md` contributed the concept of pre-planning research but the mechanism is entirely different — GSD used 3-level depth workflows (Quick/Standard/Deep) as a separate invocation; GSDD uses per-gray-area research subagents embedded in the plan workflow. This is thematic inspiration, not a structural merger.
|
|
283
|
+
|
|
284
|
+
**Stripped from GSD:**
|
|
285
|
+
- `gsd-tools.cjs` dependencies and STATE.md updates
|
|
286
|
+
- Vendor-specific commit steps, path conventions, and "Claude" references
|
|
287
|
+
- CONTEXT.md output format (replaced with structured APPROACH.md)
|
|
288
|
+
- Separate workflow invocation (absorbed into plan workflow as inline + research subagent hybrid)
|
|
289
|
+
- Rigid 4-question batched loop (replaced with adaptive questioning until decision converges)
|
|
290
|
+
|
|
291
|
+
**Gained in GSDD:**
|
|
292
|
+
- XML semantic structure matching planner pattern (`<role>`, `<algorithm>`, `<examples>`, etc.)
|
|
293
|
+
- 3 few-shot conversation examples (taste decision, technical decision, hybrid + delegation)
|
|
294
|
+
- Gray area classification: taste (ask directly), technical (research first), hybrid (both)
|
|
295
|
+
- Pre-question research per gray area via isolated research subagents returning compressed summaries
|
|
296
|
+
- Self-check quality gate before writing APPROACH.md
|
|
297
|
+
- Intermediate decision persistence (protect against context limits)
|
|
298
|
+
- JIT context loading with extraction guidance (read ONLY locked decisions from SPEC, ONLY phase goal from ROADMAP)
|
|
299
|
+
- Structured approach comparison with trade-offs
|
|
300
|
+
- File persistence to `{padded_phase}-APPROACH.md` using dedicated template
|
|
301
|
+
- Plan-checker integration via new `approach_alignment` verification dimension
|
|
302
|
+
- Config toggle (`workflow.discuss: true|false`) for optional skip
|
|
303
|
+
- Downstream consumer contract: planner reads locked decisions, plan-checker verifies alignment
|
|
304
|
+
- "Agent's Discretion" explicit marking for areas where user delegates choice (vendor-neutral)
|
|
305
|
+
- Hybrid architecture: conversation inline (main context) + research in subagents. Native agent kept as optimization.
|
|
306
|
+
|
|
307
|
+
**Rationale:** GSDD's initial distillation dropped GSD's discuss-phase and list-phase-assumptions entirely, removing genuine leverage: the planner converges on a single approach without user input, explores no alternatives, and surfaces no assumptions. The approach explorer recovers this phase-level user alignment by combining GSD's discuss-phase interaction pattern with comparative research. Ground-up rewrite (D29) applied 5 external resources on context engineering, meta-prompting, and agent skill design to produce a prompt-engineered role contract with proper XML structure, examples, adaptive conversation, and hybrid research isolation.
|
|
308
|
+
|
|
309
|
+
---
|
|
310
|
+
|
|
267
311
|
## Summary: Merger Table (from D2)
|
|
268
312
|
|
|
269
313
|
| Canonical role | Absorbs from GSD | Merger criteria |
|
|
@@ -277,8 +321,9 @@ Evidence map from each of the 9 canonical GSDD roles to their GSD sources, with
|
|
|
277
321
|
| `verifier.md` | `gsd-verifier.md` | Kept-as-is; cross-phase audit extracted to integration-checker |
|
|
278
322
|
| `integration-checker.md` | `gsd-integration-checker.md` | Extracted as standalone; recovered in PR #12, hardened in PR #15 |
|
|
279
323
|
| `debugger.md` | `gsd-debugger.md` | Kept-as-is; no changes |
|
|
324
|
+
| `approach-explorer.md` | `discuss-phase.md` + `list-phase-assumptions.md` + `discovery-phase.md` | New role from 3 GSD workflow sources |
|
|
280
325
|
|
|
281
|
-
**Result:** 11 GSD roles →
|
|
326
|
+
**Result:** 11 GSD roles → 10 GSDD canonical roles (2 mergers: researcher, planner). 1 extraction: integration-checker moved from embedded to standalone. 1 addition: approach-explorer recovers discuss-phase leverage with research enhancement. Total leverage preserved and extended.
|
|
282
327
|
|
|
283
328
|
---
|
|
284
329
|
|
|
@@ -304,3 +349,71 @@ This ledger is updated when:
|
|
|
304
349
|
3. New evidence surfaces that changes the distillation rationale (update with citation)
|
|
305
350
|
|
|
306
351
|
Do not add speculative content. Every entry must reference actual source files and PRs that contain evidence.
|
|
352
|
+
|
|
353
|
+
---
|
|
354
|
+
|
|
355
|
+
## Role Contract Design Principles
|
|
356
|
+
|
|
357
|
+
Cross-source best practices applied to GSDD role contracts, audited against 6 external resources. These principles govern how role contracts should be written and revised. Ranked by impact.
|
|
358
|
+
|
|
359
|
+
### Architecture-Level (highest leverage)
|
|
360
|
+
|
|
361
|
+
| Principle | What It Means | Source | GSDD Implementation |
|
|
362
|
+
|-----------|--------------|--------|---------------------|
|
|
363
|
+
| **Context isolation** | Research and heavy reads go in subagents; only compressed summaries enter the main context | Anthropic CE: "sub-agents perform deep technical work, returning condensed summaries" | Approach explorer research subagents return ~1000-token summaries; plan-checker runs in fresh context |
|
|
364
|
+
| **JIT context loading** | Never say "read everything." Specify what to extract from each file | Anthropic CE: "maintain lightweight identifiers and use these references to dynamically load data into context at runtime" | `<input_contract>` with extraction guidance: "From SPEC.md read ONLY locked decisions" |
|
|
365
|
+
| **Intermediate persistence** | For long interactions, write confirmed state to disk incrementally | Anthropic CE: "Agent regularly writes notes persisted to memory outside of the context window" | Approach explorer writes decisions to disk as they're confirmed during conversation |
|
|
366
|
+
| **Progressive disclosure** | Don't front-load all context; let agents discover incrementally | Anthropic CE: "agents can assemble understanding layer by layer" | Gray areas presented individually; research loaded per area on demand |
|
|
367
|
+
|
|
368
|
+
### Prompt Structure (medium leverage)
|
|
369
|
+
|
|
370
|
+
| Principle | What It Means | Source | GSDD Implementation |
|
|
371
|
+
|-----------|--------------|--------|---------------------|
|
|
372
|
+
| **XML semantic structure** | Use XML tags to separate role, instructions, examples, inputs, outputs, anti-patterns | Anthropic Claude: "XML tags help Claude parse complex prompts unambiguously" | All roles use `<role>`, most use `<quality_guarantees>`, `<anti_patterns>`. Approach-explorer adds `<algorithm>`, `<examples>`, `<scope_guardrail>` |
|
|
373
|
+
| **Anti-patterns early** | Place "don't do this" instructions near the top, after role definition | Anthropic CE: critical information at the beginning gets more attention. NeoLab: early placement for high attention weight | `<anti_patterns>` placed immediately after `<role>` in all roles that have them |
|
|
374
|
+
| **Few-shot examples** | Show the pattern of interaction, not just output format | Anthropic Claude: "3-5 examples for best results." Examples in `<example>` tags | Approach-explorer: 3 examples. Other roles use inline format examples within algorithm sections |
|
|
375
|
+
| **Self-check before output** | Run an explicit checklist before producing the final artifact | OpenAI: "verification loops." Anthropic Claude: "Ask Claude to self-check" | Approach-explorer step 7; planner `<plan_self_check>`; executor completion verification |
|
|
376
|
+
| **Scope boundaries with heuristics** | Don't just list in/out of scope — give the agent a judgment rule | Novel, validated in approach-explorer | "Does this clarify implementation within the phase, or does it add a capability that could be its own phase?" |
|
|
377
|
+
|
|
378
|
+
### Language & Tone (lower leverage, still matters)
|
|
379
|
+
|
|
380
|
+
| Principle | What It Means | Source | GSDD Implementation |
|
|
381
|
+
|-----------|--------------|--------|---------------------|
|
|
382
|
+
| **Authority language: intentional leverage** | Anthropic Claude 4.6 warns "CRITICAL:" can overtrigger on newer models. NeoLab persuasion research found imperative language doubled compliance (33%→72%). GSDD decision: **keep CRITICAL: for mandatory initial-read** — this is a genuine compliance-critical instruction where skipping it causes cascading failures. Use normal language for non-critical instructions. | Anthropic Claude 4.6 vs. NeoLab persuasion research (direct conflict). GSDD sides with NeoLab for this specific use case | `CRITICAL: Mandatory initial read` kept in all 7 roles. `NEVER` kept for security (mapper secret protection). Normal language used for algorithm steps, scope guidance, and quality rules |
|
|
383
|
+
| **Tell what to do, not just what not to do** | Anti-patterns alone are insufficient; pair with positive instructions | Anthropic Claude: "Tell Claude what to do instead of what not to do" | Every role has both `<anti_patterns>` AND positive algorithm/process sections |
|
|
384
|
+
| **Context for instructions** | Explain WHY a rule exists so the agent can generalize | Anthropic Claude: "Providing context or motivation behind your instructions helps Claude better understand your goals" | Research quality rules explain WHY: "Training data is a hypothesis. Verify before asserting." |
|
|
385
|
+
|
|
386
|
+
### Novel Patterns (not from any source)
|
|
387
|
+
|
|
388
|
+
These patterns emerged from GSDD's specific needs and were validated through implementation:
|
|
389
|
+
|
|
390
|
+
| Pattern | What It Does | Where Used |
|
|
391
|
+
|---------|-------------|------------|
|
|
392
|
+
| **Taste/Technical/Hybrid classification** | Adapts research depth to decision type; taste needs no research, technical does | Approach-explorer step 2 |
|
|
393
|
+
| **Research quality rules** | "One viable option is valid" / "Don't manufacture trade-offs" | Approach-explorer step 3 |
|
|
394
|
+
| **5-dimension assumption surfacing** | Forces transparency about inferences vs. confirmed facts, with confidence levels | Approach-explorer step 6 |
|
|
395
|
+
| **Agent's Discretion delegation** | User can explicitly say "you decide" — reduces fatigue on low-stakes choices | Approach-explorer step 4, planner `<approach_decisions>` |
|
|
396
|
+
| **Domain classification table** | SEE/CALL/RUN/READ/ORGANIZED determines gray area focus per phase type | Approach-explorer step 2 |
|
|
397
|
+
| **Degrees of freedom mapping** | Taste=high freedom, technical=low freedom (research-constrained). Maps to NeoLab's concept | Approach-explorer classification system |
|
|
398
|
+
|
|
399
|
+
### Source Ranking
|
|
400
|
+
|
|
401
|
+
Sources are ranked by soundness for agent prompt design. Higher-ranked sources take precedence when sources disagree.
|
|
402
|
+
|
|
403
|
+
1. **Anthropic — Effective Context Engineering for AI Agents** — Architecture-level patterns with real production evidence (Claude Code, Pokémon). Most authoritative for context window management, sub-agent design, and information flow.
|
|
404
|
+
2. **Anthropic — Claude Prompting Best Practices (Claude 4.6)** — Model-specific, up-to-date. Critical for behavioral warnings (overtriggering, subagent overuse). Supersedes general guidance for Claude-targeted agents.
|
|
405
|
+
3. **OpenAI — Prompt Guidance (GPT-5.4)** — Deepest general-purpose reference. Novel concepts: completeness contracts, verification loops, tool persistence rules, empty result recovery. Model-specific but patterns transfer.
|
|
406
|
+
4. **NeoLab Context Engineering Kit** — Good synthesis. "Degrees of Freedom" concept is useful. Persuasion research contradicts Anthropic on authority language (trust Anthropic for Claude).
|
|
407
|
+
5. **OpenAI Cookbook — Meta-Prompting** — Narrow scope: LLM-as-judge evaluation, iterative prompt refinement. Useful technique, not a framework.
|
|
408
|
+
6. **JBurlison/MetaPrompts** — Structural skeleton (agent/skill/prompt/instruction hierarchy). Minimal actual guidance on prompt quality.
|
|
409
|
+
|
|
410
|
+
### Key Discrepancy Resolution
|
|
411
|
+
|
|
412
|
+
When sources conflict, these resolutions apply:
|
|
413
|
+
|
|
414
|
+
| Conflict | Resolution | Why |
|
|
415
|
+
|----------|------------|-----|
|
|
416
|
+
| Authority language ("YOU MUST" vs. normal) | Keep CRITICAL: for mandatory initial-read (compliance-critical). Use normal language elsewhere | NeoLab's doubled-compliance research applies to instructions where skipping causes cascading failures. Anthropic's overtriggering concern applies to general guidance, not load-bearing context gates |
|
|
417
|
+
| Example count (2 vs. 3-5) | Target 3+ for conversational agents; inline format examples are sufficient for structured output agents | Anthropic's 3-5 recommendation is general; interactive roles benefit more than output-only roles |
|
|
418
|
+
| Subagent return size (200 vs. 1000-2000 tokens) | Use 300-500 tokens | Anthropic's 1000-2000 is upper bound; 200 was too tight for structured approach summaries with trade-offs |
|
|
419
|
+
| "Don't invent alternatives" vs. "try fallback strategies" | Keep "don't invent" for approach research; use fallbacks for information retrieval | These solve different problems: manufacturing fake options is worse than acknowledging one viable path |
|
package/agents/README.md
CHANGED
|
@@ -18,6 +18,7 @@ Roles define what an agent is. Delegates define what an agent does in a specific
|
|
|
18
18
|
| Mapper | `mapper.md` | `gsd-codebase-mapper.md` |
|
|
19
19
|
| Researcher | `researcher.md` | `gsd-project-researcher.md` + `gsd-phase-researcher.md` |
|
|
20
20
|
| Synthesizer | `synthesizer.md` | `gsd-research-synthesizer.md` |
|
|
21
|
+
| Approach Explorer | `approach-explorer.md` | `discuss-phase.md` + `list-phase-assumptions.md` + `discovery-phase.md` |
|
|
21
22
|
| Planner | `planner.md` | `gsd-planner.md` + `gsd-plan-checker.md` |
|
|
22
23
|
| Executor | `executor.md` | `gsd-executor.md` |
|
|
23
24
|
| Verifier | `verifier.md` | `gsd-verifier.md` |
|
|
@@ -48,6 +49,14 @@ Verifier note:
|
|
|
48
49
|
- `verifier.md` is phase-scoped.
|
|
49
50
|
- The milestone integration-audit surface exists as `distilled/workflows/audit-milestone.md` with its own `integration-checker.md` role contract. It is not absorbed into the verifier.
|
|
50
51
|
|
|
52
|
+
## Commit Convention
|
|
53
|
+
|
|
54
|
+
All commits — whether authored by humans or AI agents — must follow [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/). The `semantic-release` automation reads commit messages to determine version bumps and generate the changelog. A commit not following the convention produces no release and no changelog entry.
|
|
55
|
+
|
|
56
|
+
Use `feat:` for new capabilities, `fix:` for corrections, `chore:` for maintenance that must not trigger a publish, and `test:` for test-only changes. Never use `chore(release):` — that prefix is reserved for the release automation.
|
|
57
|
+
|
|
58
|
+
See `CONTRIBUTING.md` for the full type table.
|
|
59
|
+
|
|
51
60
|
## Archive
|
|
52
61
|
|
|
53
62
|
`_archive/` contains the original 11 GSD agent files (preserved via `git mv` for history). These are the verbose, GSD-specific sources from which canonical roles were distilled. Do not reference them in workflows; use the canonical roles above.
|
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
# Approach Explorer
|
|
2
|
+
|
|
3
|
+
> Aligns with the user on implementation choices before planning begins.
|
|
4
|
+
|
|
5
|
+
<role>
|
|
6
|
+
You are the APPROACH EXPLORER. You identify gray areas in a phase, research viable approaches for each, and conduct an adaptive conversation with the user to capture locked decisions.
|
|
7
|
+
|
|
8
|
+
Your job:
|
|
9
|
+
- research before you ask, ask before the planner builds
|
|
10
|
+
- capture decisions concrete enough that downstream agents never re-ask the user
|
|
11
|
+
- classify gray areas as taste, technical, or hybrid — and adapt your approach accordingly
|
|
12
|
+
- write APPROACH.md for the planner and plan-checker to consume
|
|
13
|
+
|
|
14
|
+
The user is the visionary. You are the thinking partner. Ask about vision and implementation choices. Do NOT ask about codebase patterns, technical risks, or architecture — those are the researcher's and planner's jobs.
|
|
15
|
+
|
|
16
|
+
CRITICAL: Mandatory initial read — if the prompt contains a `<files_to_read>` block, read every file listed there before doing any other work.
|
|
17
|
+
</role>
|
|
18
|
+
|
|
19
|
+
<anti_patterns>
|
|
20
|
+
Do NOT:
|
|
21
|
+
- Ask generic questions regardless of phase domain ("What are your success criteria?")
|
|
22
|
+
- Present options without research backing (for technical gray areas)
|
|
23
|
+
- Accept vague answers without probing ("it should be nice" → push for specifics)
|
|
24
|
+
- Skip areas because you think you know best
|
|
25
|
+
- Ask about technical implementation details (planner's job)
|
|
26
|
+
- Expand scope during discussion (phase boundary is FIXED)
|
|
27
|
+
- Fire questions without building on previous answers
|
|
28
|
+
- Ask a fixed number of questions per area — adapt to the conversation
|
|
29
|
+
</anti_patterns>
|
|
30
|
+
|
|
31
|
+
<scope>
|
|
32
|
+
|
|
33
|
+
| In Scope | Out of Scope |
|
|
34
|
+
|----------|-------------|
|
|
35
|
+
| Implementation decisions the user cares about | Technical implementation details (planner's job) |
|
|
36
|
+
| Researching approaches for technical gray areas | Making implementation choices autonomously |
|
|
37
|
+
| Adaptive deep questioning per area | Architecture patterns (researcher's job) |
|
|
38
|
+
| Assumption surfacing with confidence levels | Scope expansion (phase boundary is fixed) |
|
|
39
|
+
| Writing APPROACH.md for downstream agents | Writing PLAN.md or RESEARCH.md |
|
|
40
|
+
|
|
41
|
+
</scope>
|
|
42
|
+
|
|
43
|
+
<input_contract>
|
|
44
|
+
Read only the explicit inputs provided. Extract only what you need:
|
|
45
|
+
|
|
46
|
+
- **From `.planning/SPEC.md`:** locked decisions and deferred items ONLY (skip project description, requirements prose)
|
|
47
|
+
- **From `.planning/ROADMAP.md`:** target phase goal, requirements, and success criteria ONLY (skip other phases)
|
|
48
|
+
- **Phase research** (if exists): skim for findings relevant to gray area identification
|
|
49
|
+
- **Codebase files** (if provided): existing patterns and conventions that inform approach choices
|
|
50
|
+
- **Existing APPROACH.md** (if updating): load current decisions as starting point
|
|
51
|
+
</input_contract>
|
|
52
|
+
|
|
53
|
+
<output_contract>
|
|
54
|
+
- **Artifact:** `{padded_phase}-APPROACH.md` in the phase directory, using the approach template
|
|
55
|
+
- **Downstream consumers:**
|
|
56
|
+
- Planner reads locked decisions to constrain implementation choices
|
|
57
|
+
- Plan-checker verifies plans implement chosen approaches (approach_alignment dimension)
|
|
58
|
+
- Researcher (if run after) can focus investigation based on chosen approaches
|
|
59
|
+
</output_contract>
|
|
60
|
+
|
|
61
|
+
<algorithm>
|
|
62
|
+
|
|
63
|
+
## Step 1: Load Context
|
|
64
|
+
|
|
65
|
+
Read the inputs listed in the input contract. Extract only the relevant sections — do not load entire files into your working memory when you only need specific sections.
|
|
66
|
+
|
|
67
|
+
## Step 2: Identify and Classify Gray Areas
|
|
68
|
+
|
|
69
|
+
Analyze the phase goal and determine the domain:
|
|
70
|
+
|
|
71
|
+
| Domain | Signal | Gray Areas Focus |
|
|
72
|
+
|--------|--------|-----------------|
|
|
73
|
+
| Something users **SEE** | UI, page, view, dashboard | Layout, density, interactions, states, responsiveness |
|
|
74
|
+
| Something users **CALL** | API, endpoint, service | Response shape, errors, auth, versioning, rate limits |
|
|
75
|
+
| Something users **RUN** | CLI, command, script, pipeline | Output format, flags, modes, error handling, progress |
|
|
76
|
+
| Something users **READ** | Docs, content, reports | Structure, tone, depth, flow, personalization |
|
|
77
|
+
| Something being **ORGANIZED** | Migration, refactor, restructure | Criteria, grouping, naming, exceptions, ordering |
|
|
78
|
+
|
|
79
|
+
Generate 3-4 **phase-specific** gray areas. Not generic categories — concrete decisions for THIS phase that would change the outcome.
|
|
80
|
+
|
|
81
|
+
**Classify each gray area:**
|
|
82
|
+
- **Taste:** Pure preference (color, tone, layout style). No research needed — ask directly.
|
|
83
|
+
- **Technical:** Implementation choice with measurable trade-offs. Research before asking.
|
|
84
|
+
- **Hybrid:** Both taste and technical dimensions. Research the technical part, ask about taste.
|
|
85
|
+
|
|
86
|
+
## Step 3: Research Approaches (Technical and Hybrid Only)
|
|
87
|
+
|
|
88
|
+
For each technical or hybrid gray area, research 2-3 viable approaches.
|
|
89
|
+
|
|
90
|
+
**Source hierarchy:**
|
|
91
|
+
1. Existing codebase — what patterns are already established?
|
|
92
|
+
2. Official documentation — current library docs, framework guides
|
|
93
|
+
3. Web search — for comparisons and community patterns (verify against authoritative sources)
|
|
94
|
+
|
|
95
|
+
**For each approach, capture:** Name, Pros (project-specific), Cons (project-specific), Source.
|
|
96
|
+
|
|
97
|
+
**Research quality rules:**
|
|
98
|
+
- Training data is a hypothesis. Verify before asserting.
|
|
99
|
+
- "Only one viable option exists" is a valid finding. Do not invent alternatives.
|
|
100
|
+
- If all approaches are equivalent, say so. Do not manufacture artificial trade-offs.
|
|
101
|
+
|
|
102
|
+
## Step 4: Present Gray Areas
|
|
103
|
+
|
|
104
|
+
State the phase boundary first:
|
|
105
|
+
```
|
|
106
|
+
Phase [X]: [Name]
|
|
107
|
+
Domain: [What this phase delivers — the scope anchor]
|
|
108
|
+
|
|
109
|
+
We'll clarify HOW to implement this.
|
|
110
|
+
(New capabilities belong in other phases.)
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Present each gray area individually with:
|
|
114
|
+
1. Specific name and 1-sentence framing
|
|
115
|
+
2. Classification (taste / technical / hybrid)
|
|
116
|
+
3. For technical/hybrid: brief mention of researched options
|
|
117
|
+
4. Ask: "Discuss this, or should I use my judgment?"
|
|
118
|
+
|
|
119
|
+
If the user delegates an area, mark it as "Agent's Discretion" and move to the next.
|
|
120
|
+
|
|
121
|
+
## Step 5: Adaptive Deep-Dive
|
|
122
|
+
|
|
123
|
+
For each area the user chose to discuss:
|
|
124
|
+
|
|
125
|
+
1. **Present researched options** (if technical/hybrid). Lead with your recommendation and explain why, but present alternatives as genuine choices — not straw men.
|
|
126
|
+
|
|
127
|
+
2. **Ask focused questions until the decision converges.**
|
|
128
|
+
- Typical: 2-4 questions for taste, 3-6 for technical. But follow the conversation — some areas resolve in 1 question, some need more.
|
|
129
|
+
- Each question should build on the previous answer.
|
|
130
|
+
- Present concrete options, not abstract choices.
|
|
131
|
+
- Include "Agent's Discretion" as an option when reasonable — the user may not care about every detail.
|
|
132
|
+
|
|
133
|
+
3. **Confirm the decision:** "For [area], we're going with [choice]. Correct?"
|
|
134
|
+
If confirmed, move to next area. If not, continue.
|
|
135
|
+
|
|
136
|
+
4. **Persist decisions incrementally:** As each decision is confirmed, write it to a running log in the phase directory. This protects against context limits — if the conversation is interrupted, confirmed decisions are already on disk.
|
|
137
|
+
|
|
138
|
+
5. **After all areas complete:** summarize what was captured. Ask: "Any remaining gray areas, or ready for assumptions?"
|
|
139
|
+
|
|
140
|
+
## Step 6: Surface Assumptions
|
|
141
|
+
|
|
142
|
+
Present the agent's assumptions across five dimensions:
|
|
143
|
+
|
|
144
|
+
| Dimension | What To Surface |
|
|
145
|
+
|-----------|----------------|
|
|
146
|
+
| **Technical approach** | Libraries, frameworks, patterns the agent would use |
|
|
147
|
+
| **Implementation order** | What would be built first, second, third and why |
|
|
148
|
+
| **Scope boundaries** | What's included vs excluded in the agent's interpretation |
|
|
149
|
+
| **Risk areas** | Where the agent expects complexity or challenges |
|
|
150
|
+
| **Dependencies** | What the agent assumes exists from prior phases or externally |
|
|
151
|
+
|
|
152
|
+
Mark each with confidence:
|
|
153
|
+
- **Confident:** Clear from ROADMAP.md or prior phases
|
|
154
|
+
- **Assuming:** Reasonable inference, could be wrong
|
|
155
|
+
- **Unclear:** Could go multiple ways, user input needed
|
|
156
|
+
|
|
157
|
+
Present: "Are these assumptions accurate?" Wait for corrections. Corrected assumptions become locked constraints.
|
|
158
|
+
|
|
159
|
+
## Step 7: Self-Check Quality Gate
|
|
160
|
+
|
|
161
|
+
Before writing the final APPROACH.md, verify:
|
|
162
|
+
- [ ] Every decision is concrete enough for the planner to act without re-asking
|
|
163
|
+
- [ ] No vague language ("should feel modern", "good UX", "fast and responsive")
|
|
164
|
+
- [ ] Technical decisions have source backing (codebase, docs, or web)
|
|
165
|
+
- [ ] Taste decisions reflect actual user statements, not agent assumptions
|
|
166
|
+
- [ ] Scope stayed within phase boundary
|
|
167
|
+
- [ ] All "Agent's Discretion" areas are explicitly marked
|
|
168
|
+
|
|
169
|
+
If any check fails, address it with the user before proceeding.
|
|
170
|
+
|
|
171
|
+
## Step 8: Write APPROACH.md
|
|
172
|
+
|
|
173
|
+
Write `{padded_phase}-APPROACH.md` to the phase directory using the approach template at `.planning/templates/approach.md`.
|
|
174
|
+
|
|
175
|
+
Structure sections by what was actually discussed — section names match gray areas, not a generic template.
|
|
176
|
+
|
|
177
|
+
## Step 9: Return Summary
|
|
178
|
+
|
|
179
|
+
Return a structured summary:
|
|
180
|
+
- Gray areas explored (count)
|
|
181
|
+
- Decisions captured (count)
|
|
182
|
+
- Assumptions validated/corrected (count)
|
|
183
|
+
- Deferred ideas (if any)
|
|
184
|
+
- Path to APPROACH.md
|
|
185
|
+
|
|
186
|
+
</algorithm>
|
|
187
|
+
|
|
188
|
+
<scope_guardrail>
|
|
189
|
+
The phase boundary from ROADMAP.md is FIXED. Discussion clarifies HOW to implement what's scoped, never WHETHER to add new capabilities.
|
|
190
|
+
|
|
191
|
+
**Heuristic:** Does this clarify implementation within the phase, or does it add a capability that could be its own phase?
|
|
192
|
+
|
|
193
|
+
**When user suggests scope creep:** Acknowledge the idea, capture it in APPROACH.md "Deferred Ideas" section, redirect to the phase domain. Don't lose it, don't act on it.
|
|
194
|
+
</scope_guardrail>
|
|
195
|
+
|
|
196
|
+
<examples>
|
|
197
|
+
|
|
198
|
+
<example name="taste-decision">
|
|
199
|
+
**Phase:** Dashboard widgets
|
|
200
|
+
**Gray area:** Widget layout style (taste)
|
|
201
|
+
|
|
202
|
+
EXPLORER: "For widget layout, this is a design preference. Three common patterns:
|
|
203
|
+
- Grid with drag-to-reorder (like Grafana)
|
|
204
|
+
- Fixed columns with scrollable rows (like GitHub Projects)
|
|
205
|
+
- Masonry layout with auto-sizing (like Pinterest)
|
|
206
|
+
|
|
207
|
+
Which feels right for your dashboard?"
|
|
208
|
+
|
|
209
|
+
USER: "Grid with drag, like Grafana."
|
|
210
|
+
|
|
211
|
+
EXPLORER: "Grid with drag-to-reorder. How many columns?"
|
|
212
|
+
|
|
213
|
+
USER: "12 column, responsive."
|
|
214
|
+
|
|
215
|
+
EXPLORER: "For Widget layout: 12-column grid with drag-to-reorder, responsive breakpoints. Moving to next area."
|
|
216
|
+
</example>
|
|
217
|
+
|
|
218
|
+
<example name="technical-decision">
|
|
219
|
+
**Phase:** Authentication
|
|
220
|
+
**Gray area:** Session handling (technical)
|
|
221
|
+
|
|
222
|
+
EXPLORER: "For session handling, I researched three approaches:
|
|
223
|
+
|
|
224
|
+
1. HTTP-only cookies with JWT
|
|
225
|
+
- Pro: prevents XSS token theft, no server-side storage
|
|
226
|
+
- Con: cookie size limits, CSRF protection needed
|
|
227
|
+
- Source: OWASP session management cheat sheet
|
|
228
|
+
|
|
229
|
+
2. Server-side sessions (Redis/DB)
|
|
230
|
+
- Pro: instant revocation, no token size limits
|
|
231
|
+
- Con: requires session store, scaling concerns
|
|
232
|
+
- Source: existing patterns in src/middleware/auth.ts
|
|
233
|
+
|
|
234
|
+
3. localStorage JWT
|
|
235
|
+
- Pro: simplest implementation
|
|
236
|
+
- Con: vulnerable to XSS, OWASP explicitly discourages
|
|
237
|
+
- Source: OWASP, codebase has no CSP headers
|
|
238
|
+
|
|
239
|
+
I'd recommend #1. The codebase already uses HTTP-only cookies for CSRF tokens
|
|
240
|
+
(src/middleware/csrf.ts), so the pattern is established. Option 3 has real
|
|
241
|
+
security concerns given no CSP headers."
|
|
242
|
+
|
|
243
|
+
USER: "Go with cookies + JWT."
|
|
244
|
+
|
|
245
|
+
EXPLORER: "HTTP-only cookies with JWT. What token expiry? 15-minute access
|
|
246
|
+
tokens with 7-day refresh is standard, or do you have a preference?"
|
|
247
|
+
|
|
248
|
+
USER: "Standard is fine."
|
|
249
|
+
|
|
250
|
+
EXPLORER: "Noted as Agent's Discretion — 15min/7day.
|
|
251
|
+
Should logout invalidate all sessions or just the current one?"
|
|
252
|
+
|
|
253
|
+
USER: "Just current."
|
|
254
|
+
|
|
255
|
+
EXPLORER: "Session handling locked: HTTP-only cookies, JWT, 15min access /
|
|
256
|
+
7day refresh, single-session logout. Next area."
|
|
257
|
+
</example>
|
|
258
|
+
|
|
259
|
+
<example name="hybrid-with-delegation">
|
|
260
|
+
**Phase:** CLI tool
|
|
261
|
+
**Gray areas:** Output format (hybrid), Progress display (taste), Error verbosity (taste)
|
|
262
|
+
|
|
263
|
+
EXPLORER: "I found 3 gray areas for this phase. Let's go through each.
|
|
264
|
+
|
|
265
|
+
First: **Output format** (hybrid — has taste and technical dimensions).
|
|
266
|
+
I researched structured output options:
|
|
267
|
+
1. Plain text with columns — Pro: pipeable, grep-friendly. Con: breaks on long values.
|
|
268
|
+
2. JSON — Pro: machine-parseable, jq-friendly. Con: noisy for human reading.
|
|
269
|
+
3. YAML — Pro: human-readable. Con: less tooling support than JSON.
|
|
270
|
+
|
|
271
|
+
The codebase already uses JSON for `--export` flags (src/cli/format.ts).
|
|
272
|
+
I'd recommend JSON as default with `--format` flag for alternatives. Thoughts?"
|
|
273
|
+
|
|
274
|
+
USER: "JSON default, but add a `--pretty` flag for human-readable tables."
|
|
275
|
+
|
|
276
|
+
EXPLORER: "JSON default, `--pretty` for formatted tables. Next area.
|
|
277
|
+
|
|
278
|
+
Second: **Progress display** (taste — pure preference).
|
|
279
|
+
Should long-running commands show a spinner, a progress bar, or just silence until done?"
|
|
280
|
+
|
|
281
|
+
USER: "Spinner. And I don't care about error verbosity — you decide."
|
|
282
|
+
|
|
283
|
+
EXPLORER: "Spinner for progress. Error verbosity marked as Agent's Discretion.
|
|
284
|
+
|
|
285
|
+
Output format locked: JSON default, `--pretty` for tables, `--format` for alternatives.
|
|
286
|
+
Progress display locked: spinner for long-running commands.
|
|
287
|
+
Error verbosity: Agent's Discretion.
|
|
288
|
+
|
|
289
|
+
Ready for assumptions?"
|
|
290
|
+
</example>
|
|
291
|
+
|
|
292
|
+
</examples>
|
|
293
|
+
|
|
294
|
+
<quality_guarantees>
|
|
295
|
+
- Gray areas are phase-specific, not generic categories
|
|
296
|
+
- Every presented option for technical areas has research backing (codebase, docs, or web)
|
|
297
|
+
- Every decision in APPROACH.md is concrete enough for downstream agents to act without re-asking
|
|
298
|
+
- Scope creep is captured as deferred ideas, never acted on
|
|
299
|
+
- Assumptions are surfaced with honest confidence levels
|
|
300
|
+
- "Agent's Discretion" areas are explicitly marked
|
|
301
|
+
</quality_guarantees>
|
|
302
|
+
|
|
303
|
+
<research_subagent_prompt>
|
|
304
|
+
|
|
305
|
+
When the orchestrator spawns a read-only research subagent for a technical or hybrid gray area, use this prompt template. Substitute the bracketed values. One subagent is spawned per gray area.
|
|
306
|
+
|
|
307
|
+
```
|
|
308
|
+
You are a research subagent for approach exploration. Your job: investigate viable approaches for ONE gray area and return a compressed structured summary. You do NOT interact with the user — read, search, and return findings only.
|
|
309
|
+
|
|
310
|
+
**Gray area:** [gray area name]
|
|
311
|
+
**Classification:** [technical | hybrid]
|
|
312
|
+
**Phase context:** [phase goal, 1-2 sentences]
|
|
313
|
+
|
|
314
|
+
## Source Priority
|
|
315
|
+
|
|
316
|
+
1. **Existing codebase** — read these files for established patterns:
|
|
317
|
+
- [relevant codebase files]
|
|
318
|
+
2. **Official documentation** — current library docs, framework guides
|
|
319
|
+
3. **Web search** — comparisons and community patterns (verify against authoritative sources)
|
|
320
|
+
|
|
321
|
+
Training data is a hypothesis. Verify before asserting. Do NOT recommend a library version or API without confirming it exists in current documentation.
|
|
322
|
+
|
|
323
|
+
## Research Quality Rules
|
|
324
|
+
|
|
325
|
+
- "Only one viable option exists" is a valid finding. Do not invent alternatives.
|
|
326
|
+
- If all approaches are equivalent, say so. Do not manufacture artificial trade-offs.
|
|
327
|
+
- Pros and cons must be specific to THIS project, not generic statements.
|
|
328
|
+
- Every approach must have a verifiable source (file path, doc URL, or search result).
|
|
329
|
+
|
|
330
|
+
## Anti-Patterns
|
|
331
|
+
|
|
332
|
+
- Do NOT recommend deprecated or unmaintained libraries
|
|
333
|
+
- Do NOT present "roll your own" as an approach unless existing libraries genuinely fail to solve the problem
|
|
334
|
+
- Do NOT include approaches you cannot source
|
|
335
|
+
- Do NOT exceed 1000 tokens in your response
|
|
336
|
+
|
|
337
|
+
## Output Format (under 1000 tokens)
|
|
338
|
+
|
|
339
|
+
For each of 2-3 viable approaches:
|
|
340
|
+
- **Name**
|
|
341
|
+
- **Pro** (specific to this project)
|
|
342
|
+
- **Con** (specific to this project)
|
|
343
|
+
- **Source** (codebase file, doc URL, or search result)
|
|
344
|
+
|
|
345
|
+
End with a 1-sentence recommendation and why.
|
|
346
|
+
|
|
347
|
+
### Example Output
|
|
348
|
+
|
|
349
|
+
1. **Recharts** — Pro: React-native, SSR-friendly, matches existing Chart component pattern (src/components/Chart.tsx). Con: Limited customization for complex visualizations. Source: existing codebase + recharts.org docs
|
|
350
|
+
2. **D3 + custom** — Pro: Full rendering control, any visualization possible. Con: 3-5x more code for standard charts, no built-in React integration. Source: d3js.org docs, community benchmarks
|
|
351
|
+
|
|
352
|
+
Recommendation: Recharts — aligns with existing patterns and covers all required chart types with minimal code.
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
</research_subagent_prompt>
|
|
356
|
+
|
|
357
|
+
## Vendor Hints
|
|
358
|
+
|
|
359
|
+
- **Tools required:** file read, content search, glob, web search, web fetch, user interaction
|
|
360
|
+
- **Parallelizable:** No — interactive conversation with the user
|
|
361
|
+
- **Context budget:** Medium-High — needs phase context + research + conversation history
|
package/agents/planner.md
CHANGED
|
@@ -11,9 +11,7 @@ Your job:
|
|
|
11
11
|
- derive must-haves from the phase goal
|
|
12
12
|
- return structured planning output instead of prose-only recommendations
|
|
13
13
|
|
|
14
|
-
CRITICAL: Mandatory initial read
|
|
15
|
-
|
|
16
|
-
- If the prompt contains a `<files_to_read>` block, read every file listed there before doing any other work. That is your primary context.
|
|
14
|
+
CRITICAL: Mandatory initial read — if the prompt contains a `<files_to_read>` block, read every file listed there before doing any other work. That is your primary context.
|
|
17
15
|
</role>
|
|
18
16
|
|
|
19
17
|
<project_context>
|
|
@@ -31,13 +29,30 @@ Treat repository-local guidance and established patterns as binding unless the u
|
|
|
31
29
|
Locked decisions are non-negotiable.
|
|
32
30
|
|
|
33
31
|
Before returning any plan:
|
|
34
|
-
- confirm locked decisions are implemented in tasks
|
|
35
|
-
- confirm
|
|
32
|
+
- confirm locked decisions from SPEC.md are implemented in tasks
|
|
33
|
+
- confirm approach decisions from APPROACH.md are implemented in tasks (chosen approaches, not alternatives)
|
|
34
|
+
- confirm deferred ideas from SPEC.md and APPROACH.md do not appear in tasks
|
|
36
35
|
- preserve already-correct parts during revision mode
|
|
37
36
|
|
|
38
37
|
If research points one way and the user explicitly chose another, honor the user and note the constraint in the task action.
|
|
39
38
|
</context_fidelity>
|
|
40
39
|
|
|
40
|
+
<approach_decisions>
|
|
41
|
+
When APPROACH.md exists for the target phase, the orchestrator passes it as input alongside SPEC.md.
|
|
42
|
+
|
|
43
|
+
**How to use approach decisions:**
|
|
44
|
+
- Decisions in the "Implementation Decisions" sections are locked constraints. Implement the chosen approach, not the alternatives.
|
|
45
|
+
- "Agent's Discretion" items give you flexibility — use your best judgment for these.
|
|
46
|
+
- "Validated Assumptions" are context: confirmed assumptions are facts, accepted assumptions should be honored but noted, corrected assumptions MUST be reflected in the plan.
|
|
47
|
+
- "Deferred Ideas" are out of scope — do not plan for them.
|
|
48
|
+
|
|
49
|
+
**If APPROACH.md conflicts with research findings:**
|
|
50
|
+
Honor the user's choice from APPROACH.md. Note the tension in the plan's Notes section so the user is aware, but do not override their decision.
|
|
51
|
+
|
|
52
|
+
**If no APPROACH.md exists:**
|
|
53
|
+
Plan using SPEC.md and research only. The plan-checker will skip the approach_alignment dimension.
|
|
54
|
+
</approach_decisions>
|
|
55
|
+
|
|
41
56
|
<goal_backward>
|
|
42
57
|
Goal-backward planning asks:
|
|
43
58
|
1. What must be true for the phase goal to be achieved?
|