Resolve inherited command state once per admitted task
Turns and slash effects repeatedly collected the parent chain to resolve models, compacted context, and subtree controls. Retain each task's inherited model/context in separate bounded task files, and memoize immutable ancestry matches. New descendants stop at a saved parent answer; legacy missing prefixes are retained once. Delete the full-lineage helpers.
Observe any existing owner admission before reading or claiming inheritance. Reject a legacy or interrupted admission whose parent disagrees with the retry, without publishing any inheritance file. Then claim the parent before copying inherited values. Reject a changed parent both when reopening an existing binding and when observing another creator's retained winner. Child and direct-tool preparation/admission use the existing owner admission gate, released before model/tool execution. Regressions cover both prepared-but-unadmitted X and already-admitted X without inheritance files. The latter uses public runtime admission under A and public command dispatch retry under sibling B, verifies no inheritance file was published by the rejection, reopens, and deterministically checks A's subtree pause still applies.
Decisions
- Reuse task-volume files and the existing admission lock; no new store, protocol, or lock. Ancestry matching reads parent facts without loading model/summary payloads.
- Keep normal limits and #766's erased future boundaries. Preserve #758's terminal-recovery refresh; its three poll-sweep count tests remain excluded as directed.
- Both N/2N implementations execute one shared assertion. The full-collect variant must panic there, so deleting that assertion fails verification.
- Observe a completed ancestor match and pending paused waiter in one poll; no wall-clock timeout.
- Competing models execute shared production preparation/admission/matching functions, the owned gate, and TaskVolume/MemoryStream synchronization. The owner callback retains an immutable admission parent; native coverage checks the real owner record. Cover partial/complete cancellation, existing legacy admission, reopen, broken-parent controls, and a negative control that disables only the pre-publication owner check, without preemption caps.
Validation
- 8 ancestry/bounds tests passed, 3.02 s. Admission reads: 23 / 47 for 8 / 16 turns; full collection: 67 / 199, rejected by the shared assertion. Shrinking properties, bounds, retained bindings, legacy/reopen, changed-parent admission, and deterministic parking passed.
- 98 client-command tests passed, 5.96 s. Control precedence passed; admission recovery passed, 0.71 s.
- 7 competing inheritance models passed, 0.21 s, including partial/complete preparation, admission, matching, reopen, and both broken-parent negative controls and the unchecked-owner-admission negative control. The legacy competing model passed alone in 0.10 s; 8 existing control models passed, 0.008 s process time.
- Windows
lb.ps1 cargo check -p acyclic-harness --lib --tests --features tui,terminal,filesystem-local,native-execution,test-supportpassed, 22.03 s excluding queue. - Linux builds/tests ran on bb1 through
bs.ps1, native and model closures only; built binaries reused for reruns.