Skip to content

test(daemon): isolate failed-mount cleanup from graph readiness - #4827

Open
ScriptedAlchemy wants to merge 5 commits into
codex/cli-transport-fixture-admissionfrom
fix/daemon-mount-rollback-fixture
Open

ScriptedAlchemy wants to merge 5 commits into
codex/cli-transport-fixture-admissionfrom
fix/daemon-mount-rollback-fixture

Conversation

@ScriptedAlchemy

@ScriptedAlchemy ScriptedAlchemy commented Nov 9, 2026 •

Copy link
Copy Markdown
Owner

Scope

Refs #4787 — CI fixture prerequisite only; not a retention CPU fix or issue closure.

This one-file PR preserves the already-published daemon failed-mount regression repair from #4798 commit 4984a54fc4cf6cd71d2191d60a80639b1f0b183f, byte-for-byte, so it can be reviewed independently of retention GC. The scheduler fixture from #4821 has landed. This PR now targets the CLI transport fixture prerequisite.

Fixture correction

The failed-second-mount cleanup journey does not need a fully published code graph. Use the existing production-composition open_for_session_retrieval opener, while still requiring the deliberately corrupt graph database to refuse the second mount. Check the canonical sessions_db_path from the shared layout instead of constructing another path. After removing only the disposable corrupt fixture, reopen both projects and assert each server binds its own canonical session store.

The actual malformed-database refusal, all four store-existence/closed-WAL checks, both-project recovery, and shutdown remain. No timeout, production admission, test count, or CI policy is relaxed. The test is not evidence that code-index readiness itself has been repaired.

Provenance and verification

The current review order is #4834 → this fixture PR → #4798. #4798 will retain its full existing tree and history while showing only retention-specific changes against this prerequisite. #4813 remains independently owned. No master merge, production/infra/tag/credential/release action, or schedule change is authorized by this publication.

Current Linux verification

At 680e992f7d, native Windows passed. The first Linux fleet run passed 182 of 183 Bazel targets. Its only failure was a five-second acknowledgement deadline in the production LSP journey. The fixture, client transport and daemon acknowledgement paths match the same unchanged code from #4822's passing Linux retry. The failing artifact does not localize the delay. The official selective Linux retry stopped before tests because the pinned build-tool download returned HTTP 504. It yielded no new LSP result.

At ee44f8c16b, the Linux fleet run passed the failed-second-mount regression and all 796 tests in its unit target. Two independent targets failed, one while waiting for the CLI daemon socket and the other while retrieving an oversized result. Both fixtures are corrected in draft #4834. The owner-only socket and all nine transport journeys passed natively there. Commit 680e992f7d carries that prerequisite and retains the original single-file mount-recovery patch. The one-file mount cleanup change is the prerequisite for #4798. Keep #4787 open.

The earlier verification run checks 4ecf593ba3 against #4834 at 2155039730. This head includes the Linux launcher download prerequisite. The 1-file feature diff has the same paths and stable patch ID after updating the prerequisite.

The first Linux fleet on 4ecf593ba3 passed 182 of 183 targets. The full runtime acceptance suite passed, including the earlier LSP case. Core CLI passed 205 of 206; its held-client SIGTERM case exceeded 3s without a phase receipt. The same core CLI suite ran uncached and passed in 141.7s on the immediate prerequisite. The only changed file between the two heads is the failed-mount test. Three unmodified native macOS SIGTERM runs passed. Five more runs with temporary phase tracing exited in 66–570ms after the signal, with no client drain timeout, lost work or incomplete project shutdown. The Windows check stopped before tests when the pinned rules_python archive download returned HTTP 504. The selective Linux retry at the same commit passed all 183 Bazel targets, including an uncached 119.5-second core CLI run.

At 495a6da10c the only changed blob against prerequisite #4834 remains the same failed-mount fixture. The prerequisite includes the authenticated release-API fallback for the pinned rules_python download. Current verification.


Devin Review

Preserve the failed-mount fixture repair from 4984a54 byte-for-byte
in its own reviewable change above the shared scheduler repair #4821.
The rollback journey uses the existing session-retrieval opener,
checks the authoritative session path, and verifies both reopened
projects bind their own session stores. No deadline or assertion is
removed, and the malformed graph must still refuse admission.

This separates CI fixture work from the retention-specific #4798
review without reverting fixes, rewriting history, or editing #4813.
It is not evidence that the affected-host retention CPU incident is
resolved. Refs #4787.
@changeset-bot

changeset-bot Bot commented Nov 9, 2026 •

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 33a2060

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Devin Review

ScriptedAlchemy added a commit that referenced this pull request Nov 9, 2026
Join the reviewed #4821 and #4827 prerequisite ancestry without
changing the existing #4798 tree. Both prerequisite file blobs
already match this head exactly. Preserve all retention source,
behavioral tests, and concurrent history while allowing a focused
six-file retention review above the prerequisites.

Do not merge into the prerequisite branch. Land prerequisites in
master, retarget, revalidate, and retain the issue acceptance hold.
No changes from #4813, held #4776, or decision-model work are moved.

Refs #4787

@ScriptedAlchemy ScriptedAlchemy left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Second-pass source review of the exact one-file extraction: ee44f8c changes the failed-second-mount test to the existing session-retrieval composition opener, retains the real corrupt-graph refusal and four closed-store/WAL checks, and strengthens recovery by checking both canonical per-project session paths. It does not increase the graph-readiness deadline or suppress the corruption error. Blob 51efc83f65cffb7e27cb3a13eb5297684850f79d is byte-identical to the previously published #4798 repair, so no new test behavior is claimed by this extraction.

This is a reviewable CI fixture prerequisite, not an implementation of #4787 or a fix for graph publication. #4821's scheduler branch remains unchanged. #4798 now has this commit as an additional ancestor and contains only six retention-specific changed files relative to this branch; its full existing source tree/history is preserved.

Require actual nonzero execution of a_failed_later_mount_releases_the_whole_composition_before_returning through Bazel and the applicable full gates. No local Bazel pass or fresh exact-head pass is claimed. Keep the corruption refusal, both identity checks and cleanup assertions intact. Do not merge into #4821's branch: after #4821 lands in master, retarget here to master, validate and review, then retarget the retention child after this prerequisite lands. No approval/merge or production-incident closure is implied.

@ScriptedAlchemy ScriptedAlchemy left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the complete one-file diff at ee44f8c. The fixture continues to require the malformed graph to refuse the second mount, verifies all four stores/closed WALs, and now checks canonical session-store identity after both projects recover. The switch to open_for_session_retrieval isolates shutdown/rollback from unrelated graph-readiness work; no timeout, failure assertion, or production admission is weakened.

#4821 is now landed in master as 83694e0. Its tree f51e25607efa88492ad5bedac2f5e95ff01a4ae9 is identical to this PR's original parent adc55f8, so I retargeted this PR from the landed prerequisite branch to master without changing its head. GitHub still reports exactly this one-file delta.

Exact-head run 42540332272 is queued; no new Bazel pass or merge is claimed. Leave #4798 stacked until this prerequisite actually lands in master. No decision-model or release changes are involved.

@ScriptedAlchemy
ScriptedAlchemy changed the base branch from master to codex/cli-transport-fixture-admission November 9, 2026 03:12

Copy link
Copy Markdown
Owner Author

Refs #4787 — new exact-head Linux CI blocker for the prerequisite #4827 run 42555076056 at 680e992f7d (2026-11-09 UTC).

I read the completed Linux-fleet job 128970070110 logs. Bazel completed 182/183 targets passed. The single red target was //crates/tracedecay:runtime_acceptance_suite with 140 passed, 1 failed: runtime_surface_acceptance::production_lsp_negotiates_and_projects_canonical_context at runtime_surface_acceptance.rs:433 — acknowledge daemon LSP frame: DeadlineExceeded. The isolated //crates/tracedecay:unit_test target passed, so the authored failed-mount test is not the observed red target. All nine transport tests shown in the acceptance output passed, including the oversized retrieval; #4834's owner-only fixture and native macOS results remain separate evidence.

This does not establish whether the LSP deadline failure reproduces on unchanged master, whether it is fleet contention, or whether any source change is needed. Do not relax its assertion/timeout or claim a green fleet. Reconcile that failure with the owning LSP/CI lane, then require complete exact-head Bazel gates and applicable Windows before landing the #4834 → #4827 → #4798 prerequisites. #4798's retention code remains separately owned. No peer branch was edited.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant