Action โ DesignTechnicalApproach: Create the implementation plan.
Every plan, regardless of depth, MUST include the verification spine. LIGHT is concise, not shallow: keep it brief and decisive, but still explain the solution shape, codebase pattern to follow, risks/assumptions, and how the work will be verified.
Required for LIGHT, STANDARD, and COMPREHENSIVE:
- Overview โ 1โ2 paragraphs: what problem, what shape the solution takes, why this approach.
- Technical Approach โ How the change actually lands: components touched, data flow, key decisions with rationale. Reference existing patterns from
@patterns research by file:line (e.g., "follow the shape of src/widgets/HotDogWidget.ts:42 for the registration step").
- Critical Files for Implementation โ 1โ7 specific files from research. Format:
path/to/file.ts โ reason (Core logic to modify / Pattern to follow / Interface to implement / Test to extend). No guesses โ only files surfaced during Step 1 research.
- External Dependencies โ Verify Before Implementation โ Every third-party package required, with exact version and a one-line existence check. Format:
package@1.2.3 โ verify: npm view package@1.2.3 (or pip equivalent). Required even if "no new packages" (write that explicitly). This is the slopsquatting fence: ~20% of AI-suggested packages don't exist; we catch that here, not in production.
- Verification โ How We Know This Works โ For each major change in Technical Approach, 1โ3 falsifiable signals: a test name, an observable behavior, or a state/file condition. Prose like "the feature works" is not acceptable โ it must be checkable. Format:
<change> โ verifies by: <test name | observable behavior | state condition>. These become acceptance criteria in create_tasks downstream.
- Out-of-Bounds โ DO NOT add โ 4โ8 concrete things the implementation must NOT add, even if "best practice." Examples: rate limiting, retry/backoff, caching layer, optimistic UI, soft-delete, telemetry events, feature flags, admin UI. This is the YAGNI fence against familiar-shape bias (agents reproduce mature-system patterns unprompted). Be specific to this feature, not generic.
- Risks & Filled Assumptions โ Two short subsections:
- Risks: what could go wrong (e.g., concurrent write race, migration ordering, third-party rate limit). Each with a one-line mitigation or "accept and monitor."
- Filled Assumptions: things the plan defaulted because the spec didn't say (e.g., "Assumed Postgres; spec didn't specify DB." "Assumed retry count = 0; spec didn't mention failure modes."). Reviewer-visible by design โ these are the silent decisions that bite at execution.
LIGHT constraints:
- Keep the seven required sections compact: usually 1 short paragraph or 3โ5 bullets per section.
- Prefer one clear implementation path that follows existing codebase patterns; do not enumerate broad alternatives.
- Do not add standalone clarification gates, review gates, plan_review, or expanded architecture sections.
- If the plan needs more than 3 critical files, a new abstraction, data migration, public API change, or unresolved scope/security/data correctness decision, stop and return a tier reassessment recommendation to
plan.
COMPREHENSIVE additionally requires:
8. Current State โ How the affected code path works today, with file:line refs. Anchored to research findings.
9. Implementation Phases โ Ordered phases, each with its own Verification subsection (Phase N succeeds when โฆ). Phases must be sequenced by dependency, not by file. Migration phases come before consumer phases.
10. Component / Data Architecture โ Where data is created, mutated, and read. Schema deltas if any.
11. API Design โ Endpoint signatures, request/response shapes, error contracts. Required if any external or internal API surface changes.
12. Migration Plan โ Required if any data-layer change. Up + down migration sketch, backfill strategy, rollback plan.
13. Testing Strategy โ What test types cover what (unit / integration / e2e), where new tests live, what's deferred to the post-feature coverage task.
Use your judgment on section length, not on inclusion. If a required section is genuinely N/A for this feature, write the section header followed by "N/A โ ". Empty section headers are not acceptable; absent section headers are not acceptable.