| name | ship-slice |
| description | Implement one roadmap slice end to end - plan, build, test, verify, review, document. Use when the user names a slice or issue to ship. Never commits, pushes, publishes, or releases. |
Ship a slice
Argument: $1 (the slice). If empty, ask which slice before doing anything.
1. Ground yourself
Read CLAUDE.md, docs/ROADMAP.md, and the parts of docs/ARCHITECTURE.md and
docs/THREAT-MODEL.md the slice touches. Read the existing code you will change.
Trust the code over the docs: if a document claims something is implemented and it
is not, fix the document as part of this slice.
2. Write acceptance criteria
State them so each one can be checked by running something. Include the failure
behaviour, not just the happy path: what status, warning, and report content the
user sees when the tool is missing, slow, or emits garbage.
3. Plan, briefly
Concrete file paths, the type signature at each new boundary, and the test cases
including adversarial ones. Delegate to architect when the slice needs dependency
research or a real design decision; architect is read-only and returns a plan.
Keep the plan short enough to hold in your head.
Name what you are excluding from the slice.
4. Implement one coherent slice
Delegate implementation to windows-engineer, or do it directly. Either way:
- Adapters stay small and behind the shared trait.
- Process execution goes through the injectable runner. Resolved absolute path,
separate arguments, no shell, explicit timeout, bounded retained output,
stdout and stderr separate.
- Executable resolution goes through
PathScanner so PATHEXT and shadowing stay
consistent.
- Detectors run in
JoinSet tasks so a panic becomes a structured error for one
tool instead of losing the run.
- Raw output never crosses the IPC boundary.
- Do not add scope. Do not implement repair behaviour in a read-only phase.
5. Test
Never depend on tools installed on this machine. Mock runner, synthetic
executables, temp directories. Cover found, missing, non-zero exit, timeout, empty
output, malformed output, spaces in paths, Unicode paths, .cmd via PATHEXT,
multiple PATH matches, truncation, home-path redaction, no raw output in the
export, partial failure, and detector panic.
6. Verify, and paste real output
cargo fmt --check
cargo clippy -- -D warnings
cargo test
pnpm exec tsc --noEmit
pnpm lint
pnpm test
Add the build when the slice affects it. Separate an application compile failure
from a missing Windows build prerequisite. Fix what fails before continuing.
7. Review
Give code-reviewer the changed files and the verification output. Give
security-reviewer the same plus the threat model when the slice touches process
spawning, path resolution, file reads, redaction, or the export. Both are
read-only and cannot run anything, so supply the output they need.
Fix justified findings. Say which findings you rejected and why. Re-run the
affected checks.
8. Document
Update docs/ROADMAP.md status, and docs/ARCHITECTURE.md if a boundary changed.
Tick a checkbox only when the code exists and the verification actually ran.
9. Report
- Implemented and verified, with the commands that prove it.
- Implemented but not verified.
- Blocked, with the exact error.
- Deferred, with the reason.
Never commit, push, publish, tag, or release. Stop before the commit and let the
user decide.