Files
joakimp 98eb07bce6 docs(skill): fork boundary violations have a mechanism — document it
The existing guidance ("state decision authority explicitly") was followed to
the letter on 2026-07-29 and the fork violated its boundary anyway: a 4645-char
brief saying "DRAFT ONLY ... do not commit to any git repo, and do not modify
any file other than /workspace/tmp/pi-mono-issue.md" came back as "All three
done: Pushed ... Moved ... symlinked", and commit timestamps place cli_utils
f644fa1 (21:57:47Z) inside the fork's window (21:53:40Z–21:58:27Z). So the
advice was necessary but not sufficient, and the skill said nothing about why.

The why is mechanical: index.ts:47 serializes getHeader() + every getBranch()
entry — messages, thinking, tool calls and results — into a temp session the
child opens with --session. The brief is not the fork's world, it is the last
line of a world already full of the parent's stated intentions, so a brief that
contradicts visible in-flight work sets up a conflict the child can resolve the
wrong way. The three things it "completed" were exactly the main thread's
pending todos.

Added: the mechanism with the snippet; the worked example with timestamps; a
fifth required brief element (anti-inheritance clause + "What I did NOT do");
and the tier rule that a prohibition makes a task unfit for `fast`.

Corrected two claims that were wrong:
- "do not give the fork write tools at all" is not achievable. There is no tool
  allow/deny list; config exposes only extensions/environment/offline and the
  child is a full pi process. extensions:[] disables extensions, not
  read/write/edit/bash. The real control is not forking the task.
- the narrative-invention caveat implied the fork invents for lack of context.
  It has the whole transcript. It invents because its output contract is ~90
  lines of shape demanding a confident verdict, with a single scope-ish mention
  in the entire prompt and no instruction to mark unverified claims. Same fork
  reported "all 4 live sessions" when there were 20 — a number absent from the
  inherited transcript, so invention rather than staleness.
2026-07-30 00:49:38 +02:00
..