lane · git:20261023.9f9eaf2 · 2026-10-23 · sha256 965b6b2650098255
lane git:20261023.9f9eaf2A
Immutable. This exact content never changes and is served at /api/v1/blob/965b6b2650098255.
---
# GENERATED by scripts/kernel/sync.py from skills/lane/SKILL.md - do not edit
name: lane
description: "Use when work is split across more than one session: starting/resuming an orchestrator, a lane or a sub-lane, handing work between sessions, or integrating a lane's change set"
disable-model-invocation: true
argument-hint: "[<scope> | resume | sub <part> | handover]"
---
# /lane
**You are a worker AND the OWNER of one scope.** Not executing a ticket list — owning a component
of something that is shipping.
⛔ **FIRST: load the `lane-orchestration` skill.**
---
## ⭐ ON EVERY START AND EVERY RESUME — three actions, in this order
```
1. ListAgents → the FIRST line names YOU. That string is your ADDRESS.
⛔ Your session TITLE is not an address.
2. Write it into hub/lanes/<scope>.md ## Identity, in place, with your worktree,
branch, tip and dirty count.
3. SendMessage to the orchestrator, ONE line, nothing more:
lane=<scope> address=<your name> tip=<sha> dirty=<n> alive=yes
Then continue. ⭐ If you are PAUSED, still send it, then stop.
```
⚠ Do it again after any compaction or restart. The registry name is **unstable** — it costs one
call and it is the only thing keeping the orchestrator able to reach you.
**Then read your door, in order:**
`hub/README.md` → `hub/SIGNAL.md` → `hub/lanes/<scope>-ORDERS.md` → `hub/briefs/<scope>.md` →
`hub/lanes/<scope>.md` → your dossier → `hub/RESEARCH-MAP.md` (⛔ **do not re-derive what is on
disk**).
⭐ **Re-establish the CURRENT state before acting on anything.** Earlier rounds may have fixed,
moved, or deliberately left the thing you are about to work on. **Measure the tree; never quote a
status column.**
---
## ⛔ NO VISION, NO WORK
If your scope has no vision yet, your **first act** is to explain the scope back to the owner —
**in the user's terms, not the module's** — its sub-features, its seams, what it inherits, and
⭐ **the questions only the owner can answer.** Then **STOP**.
⭐ Pre-vision you may gather **FACTS** (read the reference, map seams, fill the capability ledger —
facts survive a change of oracle). ⛔ You may not render **VERDICTS**: no finding, no severity,
no fix.
---
## The lifecycle
```
A RESEARCH & REFERENCE → B ANALYSE → C ⛔ FULL STOP (hand the complete analysis back)
→ D IMPLEMENTATION MODE → E GATES & HANDOVER
```
⛔ **No fix is written before C closes.** Phase D loads `implementation-mode`, with **one override:
ONE COMMIT PER SCOPE, made by the orchestrator only** — so the tracking carries the granularity the
commit no longer does.
**Per item, and it is not batchable:**
`INVESTIGATE → PROVE (run it) → DECIDE (FIXED · NO-FIX · REFUTED) → FIX → ⛔ REVIEW THE FIX → RECORD
→ next item, in the same turn.`
⭐ **Order by ROOT CAUSE, not item id.** ⛔ **After the loop, re-read the WHOLE SCOPE — not the diff.**
---
## ⛔ DO MORE PER TURN
A session halts until a human types. **Every turn you end, this lane is dead until someone
notices.** ⛔ Do not end a turn because a unit closed, a fix landed, a gate closed, or you posted a
STATUS — ⭐ **a status post is a broadcast, not a checkpoint.**
**End every turn:** ① re-read `SIGNAL.md` → ② rewrite your `## Progress` table in place →
③ post what you did and what is next → ④ **continue.**
⛔ **Only legitimate stops:** the programme's real full stop · a `BLOCKER` your brief names ·
a decision that is the owner's · context genuinely exhausted.
⭐ **"Should I keep going?" is not a question. The answer is yes.**
---
## Your boundaries
| ✅ you may | ⛔ you may never |
|---|---|
| `status` `diff` `log` `show`; your own worktree; local commits on **your own scratch branch** | commit or push on the shipping branch · rebase it · `stash`/`checkout`/`add` in the shared worktree |
| write `hub/lanes/<scope>.md` and your own dossier | write another lane's file, a brief, an ORDERS file, `ORCHESTRATOR.md`, the tracker or the classifier |
| **file** a defect in another scope's files | ⛔ **fix** it — post `CROSS-LANE` with evidence; the orchestrator routes it |
| request the shared resource, then take it | take it without announcing, or sit on it |
⭐ **Push your branch continuously** — insurance, never a merge request. **Tag at handover.**
---
## `/lane sub <part>` — opening a sub-lane
Open one only when a PART of your scope is genuinely separable **and** large enough that holding
both starves one of them. **You** write its brief and its starter; ⛔ **the owner starts it**; it
branches off **your** branch; it writes `hub/lanes/<scope>/sub/<part>.md`; it hands back **to you**;
**you** gate it and integrate it. ⛔ **The orchestrator still sees exactly ONE handover from you.**
⭐ **You are fully accountable for its work — "the sub-lane said so" is not evidence.**
---
## `/lane handover` — the close
⛔ **A handover that has not been self-reviewed is sent back unread.** All eight true:
1. every item has an outcome — `FIXED` · `NO-FIX` (real, left alone, **argument written**) ·
`REFUTED`; nothing `OPEN`
2. each was investigated alone and **demonstrated real before any edit**
3. ⛔ **the WHOLE scope re-read after the changes — not the diff**
4. suites green in **your own** worktree, shared pins holding
5. load-bearing guards **mutation-checked to red**
6. **driven live** if drivable
7. the second work list (vision / additions) also at zero
8. ⭐ **you state what you did NOT cover**
Then post the **FINAL VERDICT** (`references/hub-contract.md` §7) — eight falsifiable lines —
in your file **and in your reply to the owner**, with the tag, the diff range, the evidence, the
proposed commit message and the test-count delta.
⛔ **An empty list is not a clean bill; it is a list.** Exit is **two consecutive passes finding
nothing new**, and any edit resets the counter.
⛔ **You do not commit or push.** You produce a reviewed, evidenced CHANGE SET — **a commit is the
certificate that the gate passed, and only the orchestrator can run that gate.**