docs(friction): log execution-mode recurrence; fix list de-indents

Complete the 2026-06-09 entry (third recurrence of presenting the
execution-mode menu despite the standing subagent-driven preference) and
restore two continuation-line indents a markdown formatter had stripped.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
sjat 2026-06-10 08:54:37 +02:00
parent f151e99d04
commit 032adf1525

View file

@ -63,14 +63,14 @@ earning its keep.
- `[recurring]` When a **deferred** decision later resolves, docs that referenced the - `[recurring]` When a **deferred** decision later resolves, docs that referenced the
deferral go stale and a plan's file-map can miss them (e.g. resolving the mesh-VPN deferral go stale and a plan's file-map can miss them (e.g. resolving the mesh-VPN
choice left `new-host.md` still saying "mesh VPN (choice deferred)"; the ubongo work choice left `new-host.md` still saying "mesh VPN (choice deferred)"; the ubongo work
similarly left a contradiction in CLAUDE.md). A *broadened* final grep sweep caught similarly left a contradiction in CLAUDE.md). A _broadened_ final grep sweep caught
both. → On resolving a deferred decision, grep all canonical docs for the deferral both. → On resolving a deferred decision, grep all canonical docs for the deferral
language ("choice deferred", "pending", "TBD", the placeholder's name) and reconcile language ("choice deferred", "pending", "TBD", the placeholder's name) and reconcile
every hit — don't rely on the plan's file-map alone. Worth a `/review-repo` check for every hit — don't rely on the plan's file-map alone. Worth a `/review-repo` check for
lingering "deferred/pending/TBD" references whose ADR has since resolved. lingering "deferred/pending/TBD" references whose ADR has since resolved.
- **Recurred a 3rd time (same day):** ADR-017 resolved the browser-E2E harness but - **Recurred a 3rd time (same day):** ADR-017 resolved the browser-E2E harness but
left ADR-015's own "Deferred" list item #2 still reading as open — not caught by the left ADR-015's own "Deferred" list item #2 still reading as open — not caught by the
ADR-017 plan's sweep (which only checked for *its own* placeholder language), only ADR-017 plan's sweep (which only checked for _its own_ placeholder language), only
by a later STATUS pass. Lesson sharpened: the stale reference often lives in the by a later STATUS pass. Lesson sharpened: the stale reference often lives in the
**originating ADR's Deferred section**, which the resolving ADR's plan won't think **originating ADR's Deferred section**, which the resolving ADR's plan won't think
to grep. → When an ADR resolves another ADR's deferred item, edit that **source to grep. → When an ADR resolves another ADR's deferred item, edit that **source
@ -82,7 +82,7 @@ earning its keep.
- `[recurring]` **Asked the execution-mode question AGAIN** ("subagent-driven vs inline — - `[recurring]` **Asked the execution-mode question AGAIN** ("subagent-driven vs inline —
which approach?") at the end of `writing-plans`, despite the 2026-06-05 standing which approach?") at the end of `writing-plans`, despite the 2026-06-05 standing
preference *and* the `always-subagent-driven-execution` memory both saying don't ask. preference _and_ the `always-subagent-driven-execution` memory both saying don't ask.
Root cause: the `writing-plans` skill's "Execution Handoff" step scripts the menu, and Root cause: the `writing-plans` skill's "Execution Handoff" step scripts the menu, and
I followed the skill text over the user's standing override. Second occurrence → I followed the skill text over the user's standing override. Second occurrence →
escalate from "skip the prompt" to a **hard rule**: never present the execution-mode escalate from "skip the prompt" to a **hard rule**: never present the execution-mode
@ -98,12 +98,12 @@ earning its keep.
### Host nftables firewall build (`base` role) ### Host nftables firewall build (`base` role)
- `[gotcha]` **`nft -c` rejects `iif "<name>"` when the interface is absent** (it resolves - `[gotcha]` **`nft -c` rejects `iif "<name>"` when the interface is absent** (it resolves
to an interface *index* at load time). The render+syntax-check Molecule step caught to an interface _index_ at load time). The render+syntax-check Molecule step caught
`iif "wt0"` failing in the container — and it would fail identically on any real host `iif "wt0"` failing in the container — and it would fail identically on any real host
before NetBird brings up `wt0`. Use **`iifname "<name>"`** (string match, no existence before NetBird brings up `wt0`. Use **`iifname "<name>"`** (string match, no existence
requirement, survives the interface coming/going) for any interface that may be absent. requirement, survives the interface coming/going) for any interface that may be absent.
- `[gotcha]` **Molecule's `community.docker` connection uses `ansible_host` as the - `[gotcha]` **Molecule's `community.docker` connection uses `ansible_host` as the
container name** (`remote_addr`). Setting `ansible_host` as *data* in a scenario's container name** (`remote_addr`). Setting `ansible_host` as _data_ in a scenario's
`host_vars` (e.g. to give a resolver a fake IP) breaks the connection → `UNREACHABLE`, `host_vars` (e.g. to give a resolver a fake IP) breaks the connection → `UNREACHABLE`,
"Failed to create temporary directory". Don't override `ansible_host` in molecule; feed "Failed to create temporary directory". Don't override `ansible_host` in molecule; feed
fixture IPs another way (or keep fixtures to zone sources and unit-test IP resolution). fixture IPs another way (or keep fixtures to zone sources and unit-test IP resolution).
@ -124,3 +124,15 @@ earning its keep.
- `[note]` The render-and-`nft -c` (no-apply) Molecule approach **earned its keep** - `[note]` The render-and-`nft -c` (no-apply) Molecule approach **earned its keep**
caught the `iif`/`iifname` bug deterministically without touching the host kernel. Good caught the `iif`/`iifname` bug deterministically without touching the host kernel. Good
pattern to reuse for other config-rendering roles. pattern to reuse for other config-rendering roles.
## 2026-06-09
- `[recurring]` **Asked the execution-mode question AGAIN** — presented the
"subagent-driven vs inline" menu at the `writing-plans` → execution handoff, even
though the standing 2026-06-05 preference and the `always-subagent-driven-execution`
memory both say to default to subagent-driven without asking. Third occurrence; the
earlier "hard rule" escalation didn't hold because both `writing-plans` and
`subagent-driven-development` script the menu and I followed the skill text over the
user's standing override. → The standing preference outranks skill scripts: when a
skill's handoff offers the execution-mode menu, skip it and proceed subagent-driven;
only ask if the user signals otherwise this session.