---
name: ir18-lane-and-b-split-assignment
description: "deployah owns the (b) unreadable-breadcrumb split, sequenced after hertz's IR-18 lane; recorded because the assignment lives only in an uncommitted batch."
metadata: 
  node_type: memory
  type: project
  originSessionId: bfeaecfe-d441-4294-9e1c-05349f38de7b
  modified: 2026-08-03T08:09:42.920Z
---

**IR-18 LANE IS MERGED (2026-08-03), status "built, GOLDEN-PENDING" — NOT ACCEPTED.** Merged
head `6e1a962`, PR #142, ff'd onto `1e520b4`; `origin/main` = `5902e50` after doyle's
sha-correction docs line. **NOT `b48e35b`** — that head was rebased away: I reported
"FF CONFIRMED" when I had only verified ff-ABILITY, doyle read it as executed and pushed a
register commit onto main, which broke the lane's ff. hertz rebased (docs-only base move,
`git diff b48e35b 6e1a962 -- crates/` = 0 lines, so the local behavioral evidence transferred),
thin CI re-ran green five-by-name, and I executed the ff and read the sha back. Standing rule
that came out of it, now shared by all three agents: **never say "confirmed" about anything not
read back from the authoritative source AFTER the operation** — before that the honest words are
"ff-able as of `<sha>`". A confirmation naming no post-op sha is a prediction, not a report. Acceptance evidence is the first in-pool GOLDEN
green with `resident_service_e2e` in Phase A; a red there comes back to doyle for triage
with the instruments already in the tree. Thin-lane CI never ran the test
([[thin-lane-ci-skips-integration-tests]]) — behavior was proven LOCALLY (3 clean runs +
2 mutation reds), CI proved compile-everywhere + traceability + lib/bin.

Shipped in it: `authenticated_kill` for all three breadcrumb pids with PER-PID
`expected_exe` (BOTH services resolve from the adapter's own `srcs/` dir — `servicehost.rs`
takes `install_dir` from `record.source_dir` in both registration modes, and COPY never
copies binaries; registration mode is NOT the discriminator), `observe()` pins, the
trap-class verdict gate with a failing catch-all, `target_gone` (incl. daemon + brain
directly), and `reap::population_sweep` ([[seed-descent-from-dead-parent]]) with a fatal
unreadable "cannot see" bucket and a non-fatal `scope_lost` guard. #131 was DROPPED from
the lane — its remedy is falsified at source (one `CreateProcessW`; `BASE_FLAGS` already
carries `CREATE_NO_WINDOW` on both rungs).

**(b) is deployah's, doyle-assigned, RE-SCOPED 2026-08-03:** no longer a single-token
split. The absent-vs-unreadable collapse now has THREE known sites (`reap.rs:59-63`,
`resident_service_e2e`'s `mock_pid`, and the same shape wherever a test reads a
self-written pid file), so (b) lands ONE shared read-a-pid-breadcrumb helper that
distinguishes absent from unreadable ONCE. Also now on (b)'s intake: the SOUND-arm comment
that overclaims for `no-breadcrumb` (absence of knowledge is not proof), and consolidating
the THREE places stating "clean" (two asserts + `is_clean()`) — that drift produced a real
bug in the lane's own final line.

**Shipping evidence:** the missing conformance test — no test today covers an unreadable
or malformed `daemon.pid`, which is why the collapse went unnoticed.

**Sequencing:** positive control → hertz's IR-18 lane (DONE) → (b). The exhaustive
panic-catch-all is now standing, so `unreadable-breadcrumb` arrives forced-classified.
Open, unrelated: IR-20 (this rig's `daemon stop --force` does not stop the daemon; two
undiscriminated rungs). Related: [[stale-breadcrumb-tree-kill-class]],
[[husk-reads-as-default-defeats-durability]], [[infra-register-ruling]].
