Repository navigation
fix(profile): retain exclusive ownership through physical profile I/O - #317
Merged
Merged
Conversation
itlezy
force-pushed
the
fix/profile-ownership
branch
from
November 11, 2026 13:10
0355d35 to
8fa55cb
Compare
added 8 commits
November 11, 2026 16:57
itlezy
force-pushed
the
fix/profile-ownership
branch
from
November 11, 2026 15:57
9fd05db to
3ab6716
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.
Two daemon/offline writers can no longer independently open the same physical profile. Acquire an exclusive OS-backed lease before bootstrap/metadata work, retain it through cloned metadata handles, and release it when the owning process or final handle exits. Derived profile I/O stays bound to the acquired physical directory so an alias retarget cannot move writes outside that lease. Supplied configuration/display paths, bootstrap keys and explicit incoming/WebUI overrides keep their contracts.
Deterministic regressions cover process death and clean release, metadata-handle lifetime, concurrent fresh-profile creation, independent profiles, Windows junction aliases and denied-open bootstrap/database/WAL/SHM preservation. The existing scoped daemon package passed 90 unit tests, 8 hosted-lifecycle tests and 4 real OS ownership tests at the preserved pre-CI035 source faf9b247; the child-only test is intentionally invoked by those parent tests. The seven lease patches restacked unchanged onto #314.
Actual native Windows x64 package proof passed at the preserved pre-main-rebase source 0355d35 with merged Builder 90edab4e, Harness e3c4dafa and Tooling 3b045ab4. All three offline profile commands returned the specific profile-busy failure against the running packaged daemon; bootstrap/settings/roots stayed unchanged, and offline reconciliation succeeded after shutdown. The existing same-profile/same-binary partial restart preserved verified progress and settings, resumed and delivered the neutral 12 MiB payload with its expected SHA256, with 3 graceful shutdowns. All 9 operator runtime files retained identical hashes and sizes; validation used disposable local-only profiles. The ZIP SHA256 is 0e0785ce3c59417f6eeab89b95ba6560985a31f8f93b55221b9e5fbe0d70dd69. These are local-development artifacts and Windows evidence, not Linux proof or published-release provenance. The parent subsequently rebased the unchanged content onto actual merged main 08bfe94; that historical runtime receipt is not relabeled as execution on the new commit. Current-head hosted qualification is running separately.
Exact-source hosted Windows/Linux gates and analysis remain required before merge. Based on #314; merge after AICH #315 and atomic settings #316, then refresh against actual main and rerun applicable checks. No shared workflow-pin changes, profile migration, soak or Beta3 publication are included. AICH's separate schema 67→68 prerequisite retains the entirely-fresh-profile beta policy.
Hosted Ubuntu ARM64 Clippy identified redundant error unwrapping in the isolated race fixture before runtime tests. The follow-up uses a borrowed Err pattern and preserves the same busy-message assertion, readiness barrier and return. Production code is unchanged; normal formatting/commit/push checks passed and fresh hosted qualification is required on the corrected head.
Fixes #247 (RUST-BUG-163). Parent-coordinated consolidation uses isolated registered workstreams: #314 owns the workflow graph, #315 owns AICH trust, #316 owns atomic settings, and this lane owns daemon/profile leases. The parent owns source refreshes, reservations and merges; merge order is #314→#315→#316→profile ownership. All active human PRs carry parallel-approved, and no required check is waived. The parent records this additional coordinated lane on the existing PRs.