CANON v1.1.0 — Léo 2026-07-31
(@team make the runbook canon, Buzz
919fb719)
| Seats | D APPROVED fix-1e a9427671 · Q YES · K YES
(bd24cf1a + a11375ac) |
| Owner | Quicksilver |
| Hermes skill | serious-coding-runbook |
| On disk | ~/.hermes/shared/skills/software-development/serious-coding-runbook/ |
| Profile link | ~/.hermes/profiles/quicksilver/skills/software-development/serious-coding-runbook/
→ shared |
| Vet home (history) | [[AI/Plans/misc/2026-07-31-serious-coding-runbook-v1.1]] |
Open in Obsidian: this note.
Deep link:obsidian://open?vault=lgl&file=AI%2FAgents%2FCraft%2FSerious%20Coding%20Runbook
Default path for serious coding on Léo's stack — no new runtime. Composes Buzz, herdr, Kanban (optional), Obsidian/Jared progress homes, TDD/CI, and existing review skills.
Layers: Harness (repo/tools/ownership) · Loop (impl → evidence → review → fix) · Graph (who may run next).
Ownership law: never modify files in someone else's work unless they ask. Ideas → Obsidian / Buzz; owner edits the tree.
Primary law = risk and boundary, not file count.
>3 files is a heuristic only.
| Tier | Path |
|---|---|
| Tiny / low-risk, one owner | Direct — cold-start strip only |
| Serious standard (multi-file, refactor, greenfield, TDD) | This runbook |
| High-risk (auth, migrations, firmware/device-write, public publish, irreversible) | Full body mandatory + D design/safety |
ACTION_ID · TASK_ID · STATE_REV · commit/range · SHA(s) · status · expected state
— Q owns STATE_REV; Buzz is notification onlypreflight → plan? → impl(+evidence) → standards(Q) → review(D)
APPROVED → merge? / device_write? / deploy? → runtime_verify? → human_accept?
REQUEST_CHANGES → fix_N(K) → re-evidence → re-review
little/no progress (Q damper) → escalate(Léo)
Device-write is a first-class gate, not "ship". Four separate events: technical approval · device-write · runtime verify · human accept.
CLOSED → OPEN → CLAIMED → EXECUTED → CLOSED
Review lease is separate:
READY_FOR_REVIEW rev=N → freeze → D REVIEWING
→ verdict / SUPERSEDED N→N+1. Do not use
READY as an action-gate state.
Empirical worked example (also in
references/default-graph.md). Mistakes are the instructive
part.
What happened: three crossed-message incidents under multi-seat load. In the worst one, Kepler executed a device action against a gate revoked ~63 seconds earlier — late wake / stale snapshot, not bad intent. Integrity of the bytes was fine; the authorization window had closed.
What held: Daedalus's two-phase lease barrier (freeze → claim → act only while gate still OPEN for that rev). It refused a false positive from Kepler's own watcher. Desired failure mode: noisy sensors, quiet actuators.
| Lesson | Anchor |
|---|---|
| Under load, failures are usually stale snapshots | Crossed-message § |
| Hash+commit gate needs fresh executor verify | Gate rules (a)(b)(c) |
| Revoke must show as non-OPEN before any act | SUPERSEDES + action flow |
| Reminders must never restate an executable GO | Completion beats go |
| Two-phase lease survives false-positive sensors | CLAIMED before EXECUTED |
| File | Role |
|---|---|
SKILL.md |
Normative runbook body + cold-start |
references/handoff-template.md |
Required packet fields every edge |
references/default-graph.md |
Nodes, edges, device path, worked example |
references/CHANGELOG.md |
Vet history + freeze SHAs |
references/validate.sh |
Structural self-check (no destructive ops) |
bash ~/.hermes/shared/skills/software-development/serious-coding-runbook/references/validate.shHarness/loop/graph discussion mapped onto the Q/K/D stack (2026-07-25+). Full seat vet 2026-07-31 through fix-rounds 1 → 1e (SRB-1101–1107, K1–K7, damper, envelope).