Repository navigation
test(daemon): isolate failed-mount cleanup from graph readiness - #4827
ScriptedAlchemy wants to merge 5 commits into
Conversation
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.
|
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
left a comment
There was a problem hiding this comment.
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
left a comment
There was a problem hiding this comment.
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.
|
Refs #4787 — new exact-head Linux CI blocker for the prerequisite #4827 run 42555076056 at I read the completed Linux-fleet job 128970070110 logs. Bazel completed 182/183 targets passed. The single red target was 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. |
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_retrievalopener, while still requiring the deliberately corrupt graph database to refuse the second mount. Check the canonicalsessions_db_pathfrom 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
ee44f8c16b736c36075eaadfe4bee6551194951ahas parent test(automation): bind scheduler fixtures to backend identities #4821's exact head and changes onlycrates/tracedecay/src/daemon/production_harness/drop_shutdown_journey_test.rs(blob51efc83f65cffb7e27cb3a13eb5297684850f79d).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. Commit680e992f7dcarries 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
4ecf593ba3against #4834 at2155039730. 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
4ecf593ba3passed 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
495a6da10cthe 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.