P1 · Walking-skeleton plan¶
Done 2026-10-28 · 5 milestones, 23 tasks, all 13 R10 §3a rows covered · 20 assumptions pending Thomas · next: the GO gate

Note 2026-10-28: the plan was revised after this page
The plan now has 24 tasks: the head runs in tmux on the login node, not in sbatch, and Task 24 adds laptop access with spectio-open or an SSH config entry (log). After the doc review of PR #47 it also keeps live refresh over SSE and makes SQLite a rebuildable index (log). The figure above was redrawn for both changes. The counts in the box above and the sections below describe the plan as it was first written; Progress · APPLY4 records the revision.
What changed¶
- New file:
P1-walking-skeleton.md(769 lines at4db8cb2, draft, waiting for Thomas). It plans the narrowed 0.0.1:spectio serveon a SLURM login node, opened through an SSH tunnel with a one-time token link, launching the synthetic Nextflow and Snakemake pipelines with their heads insbatch, three plain screens, and Cancel.- Milestones: M1 events in (tasks 1–7), M2 heads (8–10), M3 served safely (11–16), M4 API and screens (17–21), M5 on the cluster (22–23).
- Each task lists its files, tests first, and the command that must fail and then pass.
- Each of the seven §15.3 security requirements has its own task and
test_req<N>_*tests (Tasks 3, 11–16). - Every row of R10 §3a is named by at least one task.
- Nav: the plan is listed under Playbooks in
mkdocs.yml. - No spec was edited. The plan names the spec changes its tasks will make (for example the new api §14 in Task 1).
- Commits
dc30c40(plan) and4db8cb2(nav) onautopilot/integration.
Why¶
R10 gave GO for P1 (§5). Before code starts, Thomas needs one plan for the cut narrowed on 2026-10-28 (decision log, dev-env §15.1, §15.3) that an executor can follow task by task.
Prompt: next-phase.md · P1. Step: P1 in docs/playbooks/pipeline.yaml (wave W4, kind: plan, writes docs/plans/P1-walking-skeleton.md).
Evidence¶
How it ran. One general-purpose agent, 2026-10-28, with the brainstorming and writing-plans skills. Thomas was not available for brainstorming, so each decision taken in his place is recorded in the plan's Assumptions (20 items), each marked assumed — pending Thomas.
Files changed by the step (base e93a0de, the commit that started P1):
$ git diff --stat e93a0de 4db8cb2
docs/plans/P1-walking-skeleton.md | 769 ++++++++++++++++++++++++++++++++++++++
mkdocs.yml | 1 +
2 files changed, 770 insertions(+)
$ git diff --stat e93a0de 4db8cb2 -- docs/specs | wc -l
0
Counts re-checked by doc-writer on the plan file:
$ grep -c "^### Task" docs/plans/P1-walking-skeleton.md
23
$ grep -o "R10 §3a:\*\* [^·]*" docs/plans/P1-walking-skeleton.md | grep -o "[0-9]\+" | sort -n | uniq | tr '\n' ' '
1 2 3 4 5 6 7 8 9 10 11 12 13 211
The 211 is UX-211, named in row 13.
Exit criterion. P1 has no exit_check. Its output, docs/plans/P1-walking-skeleton.md, exists. At the time of the step, python3 tools/docs/check.py had 0 failures and mkdocs build --strict was clean.
Figures and media¶
- Architecture sketch at the top of this page:
docs/assets/diagrams/p1_skeleton_{light,dark}.png, drawn bydiagram-artist(documentation-system §3.1,planrow).
Findings and open questions¶
- D0, code first (#52): open; the plan assumes the light process of option (b).
- Assumed per the plan, pending Thomas: #61 no relaunch, #34 workflow by local path, #55 no
scriptorenvin events, #62 Cancel, #56 attempt stateaborted. Full list: Assumptions. - Spec gap: §15.3 req. 2 asks for a session on every request, but the page that reads the ticket must be served without one. The plan adds a session-free bootstrap page (Assumption 8); §15.3 should name it in the next apply pass.
- Snakemake mapping: the plan's Assumption 16 stands in for the [to be validated] of api §7.2 for 0.0.1.
- Next: the GO gate, Thomas's go / no-go on the R10 cut and this plan.