Code facts -- resolve structural facts about code through
des code-fact(vendor-neutral, bundled adapters: AST then TextSearch). Degrade LOUD. Never ad-hoc grep.
NW-SPIKE
Deprecated wave slot: SPIKE was a canonical wave phase prior to v3.16.0 and is now folded into DESIGN's analysis pass. Retained for backward compatibility.
Authority
A spike is an ephemeral probe, never a durable decision carrier. It produces throwaway code and a findings result; it authors no permanent per-wave ledger. Every lasting fact a spike surfaces belongs to an existing durable owner, not to the spike itself:
- Promote -- the probe becomes a walking skeleton (real code, one
acceptance test, committed). Its design implication is written directly
into
docs/product/architecture/brief.mdor the relevant ADR by DESIGN, which readsfindings.mdbefore starting. - Discard --
findings.mdis returned as the result. No permanent decision record is created. - Pivot -- the assumption was wrong; the corrected question returns to DISCUSS or spawns a second probe. Nothing is promoted.
Required Pass
- Skip check -- run only if the feature needs a new mechanism, an unverifiable performance requirement, or an integration with unknown behavior. Otherwise skip straight to DESIGN.
- Probe -- validate exactly one assumption. Code lives in
/tmp/, never insrc/. Max 1 hour, no tests/types/error-handling/abstractions, one to two files, timed withtime.perf_counter(). Write the binary verdict (WORKS / DOESN'T WORK), timing and edge cases tofindings.md. - Promotion gate (interactive) -- present PROMOTE / DISCARD / PIVOT to the user. Do not self-select.
- Walking skeleton (only if PROMOTE) -- refactor the probe into a real
end-to-end slice: a real user-facing entry point through to a real
user-visible output, no mocked layer except a costly external service
(fake/contract pattern), exactly one
@walking_skeleton @driving_portacceptance test, code undersrc/, committed asfeat({feature-id}): walking skeleton -- {description}. Delete the probe directory from/tmp/after promotion.
Handoff
Return the verdict and disposition; do not author a wave-decisions.md or
any other per-wave ledger. DESIGN reads findings.md (and the walking
skeleton, if promoted) before starting and designs the remainder around it.
DISTILL later adds scenarios and integration tests on top of an already
promoted skeleton rather than writing it from scratch.
SPIKE-RESULT
verdict: WORKS | DOESNT_WORK
disposition: PROMOTE | DISCARD | PIVOT
findings: docs/feature/{feature-id}/spike/findings.md
skeleton: <commit sha + acceptance test path, only if PROMOTE>
propagated-to: <brief.md / ADR path, only if a lasting fact was promoted>