Serial Studio — /ss-implement (phase 4 of 4)
Execute the approved tasks.md one task at a time, verifying as you go. This is the only phase
that writes code. See doc/claude/spec-driven.md.
Preconditions
doc/claude/specs/NNNN-slug/tasks.md exists and its status: is approved.
- Read
spec.md, plan.md, and tasks.md in full before touching code.
- Set
spec.md status: in-progress.
Per-task loop
For each task in order:
- Read before writing. Read the target files in full this session — hotpath files
(
FrameBuilder, CircularBuffer, FrameReader, Dashboard) and existing signal/slot
wiring are mandatory full reads (CLAUDE.md). Invoke ss-hotpath on any hotpath task,
ss-cpp-modern when shaping non-trivial new C++.
- Name the binding invariants before the first
Edit: restate in chat, in your own
words, the invariant(s) the task's Does line carries (plus any the read surfaced). A
constraint steers the edit only when named at the point of action, not when it sits in a
doc you read earlier (doc/claude/j-space.md).
- Make the change with targeted
Edit calls — edit, don't rewrite. Follow
code-style.md: header ordering, [[nodiscard]], no
in-header init, Q_EMIT, no in-body comments, 100-col, ASCII-only in source.
- Verify the task:
python scripts/code-verify.py --check <changed files>. Resolve new
errors before moving on (advisories are baseline debt, but new code clears them). Run the
task's stated check (a tests/scripts/ JS unit you can run, or a read-back).
- Mark it done — tick the task's box in
tasks.md so the file stays a live record.
Stay strictly inside the plan's file list. If a needed change falls outside it, stop and name
it in chat ("the plan didn't cover X — add it?") rather than widening the diff. Never touch,
revert, or restore a working-tree file you did not edit this session.
Finish
When every task is done, run the Definition of Done in tasks.md:
- Static review: invoke
qt-cpp-review on the C++ diff; address or note findings.
- Hotpath: if touched, confirm the
--benchmark-hotpath plan with the maintainer (you
cannot run it — you don't build the app).
- Self-review the diff, counterfactually: is this what was asked, and only that? Then
answer out loud: "which rule does this diff most risk violating, and what is the concrete
evidence it doesn't?" Name the rule and the evidence — not a generic pass
(
doc/claude/j-space.md, counterfactual self-check). If either answer is weak, say so
before claiming completion.
- Sanitize: run
python scripts/sanitize-commit.py (it sanitizes only — never commits).
- Identify the
pytest targets from plan.md for the maintainer to run (the app must be
up with the API server enabled).
- Set
spec.md status: done.
Rules
- Never build or run the app, and never commit or push without explicit per-turn
permission — earlier authorizations do not carry over.
- The spec is the contract: every acceptance criterion must end up satisfied and checked off in
spec.md. If reality diverges from the plan mid-build, stop and amend plan.md/tasks.md
(re-confirm) rather than silently improvising.
- Keep
tasks.md honest as you go — a half-finished feature should be resumable by reading the
three spec files alone.
1---2name: ss-implement3description: Phase 4 of Serial Studio's spec-driven workflow: execute an approved tasks.md top to bottom, verifying each task and keeping the checklist current. Use after /ss-tasks is approved, or "implement the spec", "build it", "work the tasks". Honors the hotpath, verify, and trust rules; never commits without explicit permission.4---56# Serial Studio — /ss-implement (phase 4 of 4)78Execute the approved `tasks.md` one task at a time, verifying as you go. This is the only phase9that writes code. See [doc/claude/spec-driven.md](../../../doc/claude/spec-driven.md).1011## Preconditions1213- `doc/claude/specs/NNNN-slug/tasks.md` exists and its `status:` is `approved`.14- Read `spec.md`, `plan.md`, and `tasks.md` in full before touching code.15- Set `spec.md` `status: in-progress`.1617## Per-task loop1819For each task in order:20211. **Read before writing.** Read the target files in full this session — hotpath files22 (`FrameBuilder`, `CircularBuffer`, `FrameReader`, `Dashboard`) and existing signal/slot23 wiring are mandatory full reads (CLAUDE.md). Invoke **`ss-hotpath`** on any hotpath task,24 **`ss-cpp-modern`** when shaping non-trivial new C++.252. **Name the binding invariants** before the first `Edit`: restate in chat, in your own26 words, the invariant(s) the task's Does line carries (plus any the read surfaced). A27 constraint steers the edit only when named at the point of action, not when it sits in a28 doc you read earlier (`doc/claude/j-space.md`).293. **Make the change** with targeted `Edit` calls — edit, don't rewrite. Follow30 [code-style.md](../../../doc/claude/code-style.md): header ordering, `[[nodiscard]]`, no31 in-header init, `Q_EMIT`, no in-body comments, 100-col, ASCII-only in source.324. **Verify the task:** `python scripts/code-verify.py --check <changed files>`. Resolve new33 errors before moving on (advisories are baseline debt, but new code clears them). Run the34 task's stated check (a `tests/scripts/` JS unit you *can* run, or a read-back).355. **Mark it done** — tick the task's box in `tasks.md` so the file stays a live record.3637Stay strictly inside the plan's file list. If a needed change falls outside it, **stop and name38it in chat** ("the plan didn't cover X — add it?") rather than widening the diff. Never touch,39revert, or restore a working-tree file you did not edit this session.4041## Finish4243When every task is done, run the Definition of Done in `tasks.md`:44451. **Static review:** invoke **`qt-cpp-review`** on the C++ diff; address or note findings.462. **Hotpath:** if touched, confirm the `--benchmark-hotpath` plan with the maintainer (you47 cannot run it — you don't build the app).483. **Self-review the diff, counterfactually:** is this *what was asked, and only that*? Then49 answer out loud: "which rule does this diff most risk violating, and what is the concrete50 evidence it doesn't?" Name the rule and the evidence — not a generic pass51 (`doc/claude/j-space.md`, counterfactual self-check). If either answer is weak, say so52 before claiming completion.534. **Sanitize:** run `python scripts/sanitize-commit.py` (it sanitizes only — never commits).545. **Identify the `pytest` targets** from `plan.md` for the maintainer to run (the app must be55 up with the API server enabled).566. Set `spec.md` `status: done`.5758## Rules5960- **Never build or run the app**, and **never commit or push without explicit per-turn61 permission** — earlier authorizations do not carry over.62- The spec is the contract: every acceptance criterion must end up satisfied and checked off in63 `spec.md`. If reality diverges from the plan mid-build, stop and amend `plan.md`/`tasks.md`64 (re-confirm) rather than silently improvising.65- Keep `tasks.md` honest as you go — a half-finished feature should be resumable by reading the66 three spec files alone.