Release orphan boxes hourly and report a missing secrets exchange (DRU-477) - #469
Merged
czpython merged 1 commit intoSep 8, 2026
Conversation
czpython
force-pushed
the
commonzenpython/dru-480-add-proven-api-key-entries-for-codex-pi-and-opencode
branch
2 times, most recently
from
September 8, 2026 15:51
fcf953d to
c64a3da
Compare
Base automatically changed from
commonzenpython/dru-480-add-proven-api-key-entries-for-codex-pi-and-opencode
to
main
September 8, 2026 16:06
czpython
force-pushed
the
commonzenpython/dru-477-reap-dead-box-grants-and-report-a-missing-secrets-exchange
branch
from
September 8, 2026 16:14
b069658 to
6f49e62
Compare
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Automations to automatically generate PRs for you. |
…U-477) A run that dies without its cleanup leaves its box until the lease ends. An hourly task releases such a box sooner, and the release revokes the identity. The records themselves need no reaping: the issuer already denies an identity whose run ended or whose lease passed. druks doctor probes the secrets exchange and names the fix when it is down.
czpython
force-pushed
the
commonzenpython/dru-477-reap-dead-box-grants-and-report-a-missing-secrets-exchange
branch
from
September 8, 2026 16:58
6f49e62 to
bdbac4e
Compare
czpython
deleted the
commonzenpython/dru-477-reap-dead-box-grants-and-report-a-missing-secrets-exchange
branch
September 8, 2026 17:02
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.
Lands on main after #468 (DRU-480). Linear: DRU-477.
What changed
release_orphan_boxesis a core task every hour, besidereap_deleted_files.SandboxIdentity.list_orphans()names the identities of boxes whose run ended: bound, inside their lease, not revoked. The task releases each box throughClient.release, which revokes the identity first and swallows a Drukbox failure. Drukbox reaps a box at the end of its lease in any case; the task only ends it sooner.SandboxIdentity.revoke()keeps its first stamp.druks doctorgetscheck_secrets_exchange. It probes[sandbox].exchange_urlat/healthz. With sandbox execution off it reportsnot configured. When the exchange is unreachable or answers a non-200, it names the service, the URL, and the fix. No box, no credential.deployment.md,troubleshooting.md,concepts.md.Where this differs from the ticket
Client.releaserevokes the identity first, so the box waits for its lease, and that bounds the cost at one lease.test_sandbox_identities.py.Names
release_orphan_boxesbesidereap_deleted_files;_release_orphan_boxesis the body a test calls, as_refreshis.list_orphansfollowslist_for_secret.secrets_exchangematches the compose servicedrukbox-exchangein the doctor output.Gates
ruff check backendandruff format --check backend: clean.pytest backend/with the proof app installed, rebased on main: 1698 passed.Review
Real bed, Paulo's run. Dispatch a run on a warm box, then kill the web process before it ends. Within an hour of the next start, record the task's log line for that box and confirm the box is gone from Drukbox. Also run
druks doctoronce with the exchange stopped and once with it up, and record thesecrets_exchangeline each time.🤖 Generated with Claude Code