qualify managed lifecycle on every platform#1031
Merged
TheGreenCedar merged 4 commits intoJul 12, 2026
Merged
Conversation
1e31960 to
a2ce2fd
Compare
a2ce2fd to
bbd98d8
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Context
The six-cell release matrices executed every shipped archive, but managed-plugin provisioning, local grounding, repair handoff, and cleanup were only qualified on Windows x64. The other five supported targets stopped at version/help/stdio shape, leaving #921's managed lifecycle claim incomplete.
PR #986 merged as squash commit
a2f0938a. This branch contains four #1031 commits on that exact base and changes only the eight lifecycle, proof, state-contract, documentation, and workflow files listed by the PR.Closes #1030
Refs #921
What Changed
fail-fast: false, and workflow-policy checks that reject exclusions, conditions, andcontinue-on-errorbypasses.compose psplus Qdrant logs before cleanup whenever retrieval indexing fails, including exit-zero contract failures./qdrant/snapshotsdefaults.taskkill,WaitForSingleObject, andTerminateProcessoutcomes, and persisted per-PID source/attempt/kill diagnostics before failure. Only the repair PID started by this proof and observed with the same attempt ID is eligible; arbitrary PIDs merely visible in status are never swept.lexical_data_dirand no longer emits Zoekt path, port, or image keys.zoekt_data_dirremains a read-only legacy alias, and bounded legacy cleanup requires exact state-proven ownership of the old Zoekt directory.CI Failures and Root Causes
Run
29210464288, Linux x64 job86697247949:retrieval indexexited 1 because Qdrant refused connections.GateFailurebecause it expected the test-onlylexical_data_dirspelling while production state serializedzoekt_data_dir./qdrant/snapshots. Pointing snapshots at/qdrant/storage/snapshotsunder the already-owned bind mount kept the same pinned image running.Run
29210464288, Windows x64 job86697247985:taskkillandTerminateProcesssequence (WAIT_TIMEOUT258).OpenProcessbefore killing, uses typedHANDLE/DWORD/BOOL/UINT signatures, classifies wait results, checks all termination outcomes, persists diagnostics before raising, and limits cleanup authority to the proof-started matching repair attempt.How To Review
validated_proof_compose_state,capture_proof_compose_diagnostics,cleanup_proof_compose, andcleanup_proof_cache_on_exitfor exact ownership and primary-error preservation.proof_started_repair_workersandterminate_worker_pidfor attempt-ID ownership, typed Win32 calls, checked outcomes, and persisted diagnostics.SidecarStateFileserialization and migration tests: canonical writes uselexical_data_dir; legacyzoekt_data_diris read-only compatibility; new state has no Zoekt port/image/path output.Verification
On exact head
3056c1d2over exact merge-basea2f0938a:python .github/scripts/check-packaged-agent-proof.py --self-teston Windows — passedpython -m py_compile .github/scripts/check-packaged-agent-proof.py— passedcargo test -p codestory-retrieval sidecar_state_ -- --nocapture— 2 passedcargo test -p codestory-retrieval— 333 unit tests passed, 2 measurement/live-sidecar tests ignored; all non-live integration binaries passedcargo fmt --all --check— passednode .github/scripts/check-workflow-policy.mjs— passednode .github/scripts/check-doc-links.mjs— 69 files, 281 relative linksdocker compose -f docker/retrieval-compose.yml configwith proof UID and snapshots path — passed withuser: 1000:1000and/qdrant/storage/snapshotsgit diff --check— passedCodeStory managed runtime status was available on 0.14.3. Its local
affectedgraph remained blocked while a local reindex was still refreshing, so no graph-impact claim is made from that unavailable surface.Risk
The change increases native matrix work by running the existing managed proof on five additional targets. Cleanup is intentionally strict: missing, ambiguous, forged, or escaping state blocks teardown rather than targeting Docker. Historical Windows evidence cannot identify the exact old Win32 sub-operation because the old gate discarded it; the new artifact makes any recurrence diagnosable. Full sidecars remain Linux-x64-only. There is no screenshot-visible UI change.