Repository navigation
land: confine-busy-db - #519
Merged
Merged
Conversation
Carry frame-loop memory answers through admission so a later busy database slot cannot turn an unconfined call into policy-unavailable. Wait off-loop for keyed calls' opening policy store and bound policy reads with the existing persistence deadline; preserve fail-closed handling for unreadable policies and saved fences. Reject policy-independent untrusted shell capabilities before confinement lookup. Recheck never-configured persistence after waiting for a busy empty slot. The persistence memo test now expects the carried Some(Ok(false)) instead of discarded None; execution permissions are unchanged. Add deterministic held-slot, slow-open, deadline and refusal-order tests. Five isolated negative controls redden only their intended tests; Linux policy/provider gates and native Windows conformance, including twenty repeats of the reported test, pass. Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
…tic tests Add a cfg(test) one-shot memory-miss hook so held empty database slots reach the blocking lookup's fallback without scheduler timing. Cover failed configured stores directly and through non-shell frame admission, opening stores after the wait budget, and genuinely unconfigured contexts. The reviewer's unconditional Ok(false) mutation reddens each of the three configured-store tests. The inverse unconditional refusal reddens the unconfigured control; the other side remains green under each mutation. Preserve production behavior and carry the full red-run evidence in the investigation artifact. Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Carry the policy generation through admission waits and reject unconfined answers invalidated by a confining save, including bash admission after ledger waits. Keep eight confinement-read permits owned by the blocking closures until completion, not merely until waiter timeout, and reject expired requests before scheduling reads. Update the exhausted-budget tests to expect immediate fail-closed refusal rather than queuing an async waiter: expired frames must no longer launch a policy read. Held-ledger, capacity, timeout-lifetime and deadline regressions were mutation-checked; generation and liveness mutants each reddened their named tests and were restored before the passing gates. Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
The post-commit publication input gate identifies the new write-admission regression's filePath field as a reviewed legacy occurrence. Add only that exact test fixture to the rust-compatibility allowlist, with an explicit reason; do not regenerate or broaden the allowlist. Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Explain explicitly that a worker epoch with no saved row inherits an older epoch's confinement policy. Also align informational allowlist coordinates with the audit scanner's quoted-key match; the content-keyed allowance is unchanged. Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
github-merge-queue
Bot
removed this pull request from the merge queue due to failed status checks
Oct 18, 2026
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.
Accepted agent delivery; branch-keyed search descriptor included.
Summary by cubic
Tool calls no longer fail sporadically while the database is opening or briefly busy; saved session confinement stays enforced, and expired waits still fail closed.
confine_policy_unavailable; carried answers are rejected once a confining save invalidates them.Written for commit 464d189. Summary will update on new commits.


Confidence Score: 5/5
The PR appears safe to merge; no new actionable issues were found.Summary
The PR keeps confinement checks off the frame loop while the database opens or stays busy.
Both earlier findings are addressed in the current code. Both threads were manually resolved without explanatory replies.
Diagram
%%{init: {'theme': 'neutral'}}%% flowchart TD A[Tool call] --> B{Shell capability refused?} B -->|Yes| R[Return error] B -->|No| C{Policy known in memory?} C -->|Yes| D[Carry answer and generation] C -->|No| E{Budget and read permit available?} E -->|No| R E -->|Yes| F[Wait for database opening] F --> G[Read policy off-loop] G --> D D --> H[Ledger admission wait] H --> I{Current policy answer available?} I -->|No| R I -->|Yes| J[Apply confinement and admit]Reviews (2) · Last reviewed commit: "mason: clarify carried policy invalidati..." · Reviewed by Greptile