Fix: isolate locator subprocesses from golden writer handoffs - #179
flyingrobots wants to merge 2 commits into
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
📒 Files selected for processing (8)
💤 Files with no reviewable changes (1)
Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review. 📜 Recent review details⏰ Context from checks skipped due to timeout. (4)
🧰 Additional context used🪛 LanguageTooldocs/testing-evidence/durable-locator-isolation/probe-source.txt[style] ~48-~48: Using many exclamation marks might seem excessive (in this case: 11 exclamation marks for a text that’s 2614 characters long) (EN_EXCESSIVE_EXCLAMATION) 🔇 Additional comments (7)
Summary by CodeRabbit
WalkthroughDurable locator laws now run in a separate Linux-gated test executable. The golden worldline suite no longer includes those laws. Supporting records document the observed writer-lock failure and a controlled inherited-descriptor experiment. ChangesDurable Locator Test Isolation
Priority: ⬇️ Low Estimated code review effort: 2 (Simple) | ~10 minutes Change: Other Merge Risk: ⚪ Minimal · up to The locator laws remain selected in their separate executable, with no identified merge-blocking issue from this change. Complete the stated validation and CI gates before merging. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. A lock stays busy through the fork, Comment |
Independent review: Keep PR #179Reviewed exact head FindingsNo verified P0–P5 implementation defect in the reviewed diff. The correction removes the identified descriptor-sharing boundary without changing Keep production code, product expectations, assertion bodies, child selectors, lock semantics, formats or public APIs. Mandatory acceptance gap, separate from correctnessTesting-profile risk disposition is missing. The existing #106 waiver explicitly covers only that PR's documentation-test version/banner changes and cannot cover #179. No maintainer-approved #179 waiver was present in the supplied artifacts or PR body/comments inspected. Resolve the controls or obtain an explicitly approved, expiring waiver confined to these moved medium laws and their disclosed execution gaps. The author must not self-approve it. This is an acceptance blocker, not evidence that the process-isolation implementation is incorrect and not a request to introduce unrelated storage hardening. The risk record should preserve the remaining causal uncertainty: the exact hosted handoff/schedule is unobserved. The correction guarantees this process boundary; it does not establish universal absence of Busy. Do not turn #178's eventual landing disposition into a claim of an identified original syscall trace or substitute retries for recurrence diagnosis. Verification ChecklistRuntime paths and retained boundaries
History and merge audit
Constants, claims and numerical evidence
Evidence subjects, failures and limitations
Execution status and review coverageExecuted by this reviewer: read-only Git status/head/tree/history/diffs including whitespace check; static source/evidence review; live GitHub PR metadata, comments/reviews and review-thread pagination; historical failed-run metadata and log comparison. Review threads had zero nodes and Inspected, not independently executed: copied-Docker focused debug/release validation, strict all-feature Clippy and formatting receipt; Markdown receipt; controlled public-API diagnostic receipt/source; strace parent receipt; live full-chain partial log. Parent owns full-chain completion and hosted gates. No host Rust tests were run. A Docker discovery attempt found my default socket unavailable at that moment; no configuration was changed and the parent confirmed its existing Docker execution route. Independent test duplication was not required or claimed. Pending at review inspection: hosted run 37165745204 still had Rust quality and fuzz smoke in progress; documentation/workflow integrity and dependency policy had succeeded. CodeRabbit was still processing; Codex hosted review reported usage limit. Pending checks are not green. Recheck exact head, final full-chain terminal status, all required hosted checks and any arriving actionable review feedback before integration. There is no mandatory source path left unreviewed within this eight-file correction. This review does not certify unrelated storage subsystems or establish all testing-policy controls. Correctness review supports the bounded isolation change; final acceptance is blocked by the unapproved scoped testing-profile disposition and outstanding final validation. REQUEST CHANGES |
Code Lawyer activity — candidate f9a9c2eExact pushed head
No new speculative hardening is proposed. Merge remains gated on the current exact head's final hosted success, explicit scoped policy approval and resulting independent-review confirmation. Recurrence of Busy remains actionable; this is not universal lock-schedule certification. |
Problem and outcome
Change kind: test-isolation bug fix. Release CI on main
7a21faebdbed38c386db14873966d433754c6eb4returnedWriterLock { source: Busy }while preparing the durable layout-binding law. The golden executable mixed writer-authority handoffs with two locator laws that spawned children. A controlled public-API experiment demonstrates that an unrelated child held before exec retains inherited lock authority after the parent's guard drops.Move those two unchanged locator laws to their own integration-test executable. The parent of that executable creates no store; its children run one law each. A locator child can no longer inherit descriptors from golden storage tests running in another process. No test is ignored, deleted, retried or globally serialized; runtime assertions and child selectors remain byte-identical. Shared unused fixture operations have local, explained dead-code allowances rather than production API changes.
Invariant, alternatives and limits
Keep must return exact named bytes or refuse; this change preserves the existing layout, output-sentinel, relative-store binding and original-I/O-cause assertions. Production source, locks, typed Busy refusals, API, format, recovery protocol and performance behavior do not change. No benchmark improvement is claimed.
Rejected: retrying Busy into success, sleeps, weakening assertions, serializing the whole suite, or changing production unlock behavior. The original CI log lacks the failing handoff and syscall trace. The pipe-controlled experiment demonstrates the interference mechanism, not the exact original schedule. A strace diagnostic run passed and is explicitly not treated as proof of absence. A subsequent mainline run also passed; that does not resolve the recorded failure. The narrower guarantee here is structural process isolation plus preserved runtime laws.
Evidence and review gates
Owner: @flyingrobots. Evidence, original RED and controlled mechanism record exact coordinates, public typed outcome, source and coverage limits. The observed RED was a runtime fixture-acquisition failure before the law’s product assertions; it does not calibrate those unchanged assertions. No artificial harness-count regression is added. Original production/test source is byte-identical between the failed main and parent
3165890e9291cfb5fe10e81a9d7cd151f3e59464.Candidate
f9a9c2ec8614ce9f905ef97aeb2163b5acc5982a, tree408d9c1491e782cee3971680c998c2335153b7a7, passes copied-Docker debug/release golden and locator suites, all-feature strict Clippy, formatting, and pinned Markdown checks. Initial candidate's focused runtime checks passed but Clippy rejected the root-level fixture import visibility and unused cleanup method; successor retains the original nested scope and documents narrowly unused fixture operations. That lint failure remains recorded, not called product RED.The unchanged medium laws use owned ext4 scratch in Linux Docker. Locator children retain their 20-second watchdog. Existing ordinary-Cargo per-test memory/resource/egress and suite-budget enforcement gaps are disclosed; this change neither implements them nor extends #106's unrelated waiver. Full required stable-candidate validation, independent exact-head review, final hosted CI and policy-gap disposition remain acceptance gates.
Addresses #178. Close only after final acceptance and bounded disposition of the recorded failure; no universal absence-of-Busy claim is made.
The missing resource-profile controls are tracked by #180. Independent review found no implementation defect but requires an explicitly approved, expiring scoped waiver or implemented controls; no waiver is yet approved. The full local chain was interrupted during compilation when the Docker container exited 255 (OOMKilled=false). The exact source tree and ext4 mounts were reverified, and only the remaining validation commands resumed with a separate log. That environment failure remains preserved.
Final validation status
All four hosted jobs in run 37165745204 pass at unchanged head
f9a9c2ec8614ce9f905ef97aeb2163b5acc5982a, including release validation. The resumed local chain completed exit0; the interruption and first-candidate lint failure remain recorded. CodeRabbit approves this exact head. Independent review's sole remaining disposition is the resource-policy gap. A maintainer waiver through 2026-10-17, limited to these moved laws and tracked by #180, has been requested but is not yet approved. Merge awaits that explicit decision and independent confirmation.