---
name: assembly-textual-merge-hides-semantic-composition-break
description: "Cherry-pick assembly of independently-gated lanes can merge textually clean and still not compile — a refactor lane's helper hoist vs a feature lane's pre-hoist cell; the assembled head's OWN compile-gate is the only thing that catches it."
metadata: 
  node_type: memory
  type: project
  originSessionId: f04d6c7b-b129-427d-a73c-28fb262ca68a
  modified: 2026-08-19T10:30:48.831Z
---

KEYSTONE #182 golden-head v2 assembly (2026-08-19): 11 cherry-picks, ZERO conflicts, fidelity
blob/patch-proven — and the head did not compile. Hygiene lane (IR-36/IR-39) hoisted
`output_bounded`/`sibling_bin` into `tests/common` and deleted the file-local copies; W3's int
cell in the same file was authored on a pre-hoist base and called the bare names. Each lane
gated PASS in isolation; the defect exists ONLY at the composition. E0425 x4, first clippy run
on the assembled head.

**Why:** git's 3-way merge composes TEXT regions; a rename/hoist and a new call site never
touch the same lines, so no conflict fires. "All lanes gated green + zero pick conflicts"
therefore proves nothing about the assembled head compiling. The more lanes share a file
family (here: a refactor lane sweeping 60+ test files beside feature lanes adding cells), the
more likely the class.

**How to apply:** treat the assembled-head compile-gate (clippy --all-targets) as a REAL gate
arm, never a formality — run it before hand-off every time, even when every pick auto-merged.
Fix shape: minimal declared stage-only commit adopting the refactor lane's landed idiom (here
4 call sites -> `common::`), declared in the hand-off as carried by no lane tip. If the broken
sites sit inside a never-executed cell, say so — the fix is then compile-proven only and the
first-execution declaration is unchanged. Related: [[lane-diff-byte-identity-limit]],
[[include-str-fixture-inherits-checkout-eol]] (the other assembly-environment class).
