Repository navigation
devguard: pin DevGuard at 6e7e065 for its credential read fix - #89
Merged
Merged
Conversation
DevGuard main 6e7e065 (DevGuard PR #27) fixes DevGuard#24: once the client's 250 ms credential read deadline has passed, it still takes a secret and EOF that are already readable instead of failing. Its code differs from f1f9084 only in crates/client/src/credential.rs. As docs/upstream-lock.md requires, the adapter manifest, the root, adapter and worker lockfiles, DEVGUARD_SOURCE and its test, and the pin record change together. Cargo regenerated the lockfiles; only their DevGuard source lines change. The status line of docs/devguard-integration.md names the new commit; the Korean counterparts are updated and both pairs' hashes recorded. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
novelKR
pushed a commit
to novelKR/DevGuard
that referenced
this pull request
Oct 8, 2026
The owner directed CSRG-U4 to start on 2026-10-08, after CSRG-U3 merged in CodeSpace as novelKR/CodeSpace#88 (d543ea5) and CodeSpace moved its DevGuard pin to 6e7e065 as novelKR/CodeSpace#89 (e0610c4), both with their post-merge CI green. Record U4 as active with the units dated 2026-10-08, keep U5 and U6 not started, and say so in AGENTS.md, the milestone table and note, the planning index and the CS-RG plan, English and Korean. CS-RG stays in-progress with qualification not-run, and the suspension of the CSRG-C00-C09 plan is unchanged. Korean counterparts reviewed; planning-readme and planning-milestones-cs-rg hashes recorded. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This was referenced Oct 8, 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.
Requested by Seongjae · project thread
Issue
No CodeSpace issue. This picks up the fix for novelKR/DevGuard#24, merged as novelKR/DevGuard#27, and with it the credential deadline that #84 recorded under "Observed, not changed here".
Summary
Before: CodeSpace linked DevGuard's client at
f1f9084. Its credential reader gives a consumer secret 250 ms of wall time and fails as soon as that has passed, before it looks at the descriptor again. A thread that the scheduler held that long gotcredential_unavailablealthough the credential file was intact or the handed descriptor already held the whole secret. For the gateway's status probes and in-process registration, that cost one session. The UDS worker reads its handed secret once, at start, so a stall there left it reportingcredential_unavailableuntil it was restarted.After: CodeSpace links DevGuard's client at
6e7e065, DevGuardmainafter novelKR/DevGuard#27. Once the deadline has passed, the reader still takes a secret and EOF that are already readable, and it fails on the first pass that finds nothing. CodeSpace's credential file is a regular file, and the gateway closes the handoff's writing end before the worker starts, so on both paths a reader delayed past the deadline still gets the secret. A writer that never writes or never closes still fails at the deadline.How: the pin changes in one commit, as
docs/upstream-lock.mdrequires:crates/devguard/Cargo.toml: therevofdevguard-client,devguard-contractand the dev-onlydevguard-daemon.Cargo.lock,crates/devguard/Cargo.lockandcrates/codex-runtime/Cargo.lock, regenerated by Cargo (cargo metadatawithout--locked, which re-resolves only the changed source). Only thesourcelines of the DevGuard packages change (2, 5 and 2 lines). No package, version or checksum is added, removed or changed.scripts/upstream_dependencies.py(DEVGUARD_SOURCE), andscripts/tests/test_upstream.py, whose moved-source case now replaces the new commit's prefix.docs/upstream-lock.md(the pin record) and the status line ofdocs/devguard-integration.md. The Korean counterparts were reviewed, and both pairs' hashes recorded withscripts/check_docs.py record.Between the two commits, DevGuard's code differs only in
crates/client/src/credential.rs(+57/−13). DevGuard's other 19 changed files are its documentation and milestone ledger. The client's public API is unchanged.Contract changes
None. No tool schema, error code, status value, ID, setting or wire protocol changes (the runner protocol stays 7).
credential_unavailablekeeps its meaning. It is no longer reported for a usable credential whose reader was delayed.Tests
These were verified in a Linux x86_64 container at
6fe91e7, with Rust 1.97.0 andCARGO_INCREMENTAL=0andCARGO_PROFILE_DEV_DEBUG=0as in CI. The command waspython3 scripts/validate-upstream.py pin policy python format dependencies unit-devguard clippy-adapters clippy-root clippy-codex unit-codex-runtime integration, and every stage passed:pin,policyandformatpassed;formatcovers the root and every adapter workspace.python: 54 tests passed, includingtest_devguard_and_codex_each_have_one_sourcewith the new source.dependencies: no product graph has a violation. Compared with the base's graphs atd543ea5, three graphs differ:root+devguard,codex-runtime+devguardanddevguard. Each differs in exactly 2 packages (devguard-client,devguard-contract) and 9 edges, and only by the DevGuard commit in their source. Every other graph is identical.unit-devguard: 32 passed. The 3 ignored tests are child processes that their parent tests run. On Linux the fixture authority has no native host evidence, so the adapter's native registration and admission tests run only on the macOS leg.clippy-adapters.clippy-root, includingcodespace-server,codespace-runnerandcodespace-domainwith--features devguard.clippy-codex, covering the worker with and withoutdevguard.unit-codex-runtime: lib 1 andruntime_binary6 passed. With--features devguard --bin codespace-codex-runtime, 1 passed.integration: every suite passed in each command:cargo test --locked --workspace: runner lib 102 passed, server lib 30 passed.-p codespace-server --features devguard: lib 56 passed. The 5 ignored tests are child processes that their parent tests run.-p codespace-runner --features devguard --lib: 122 passed.-p codespace-domain --features devguard --lib: 32 passed.python3 -B scripts/check_docs.py: 17 paired documents verified.Not verified here:
linux-isolation, because this container has no bubblewrap.All of them run in this PR's CI, whose plan is
full.Security scenarios
devguard-*package only from6e7e065. It still admits onlydevguard-clientanddevguard-contractto a product graph, so DevGuard's fixtures stay development dependencies.polluses a zero timeout and a pass without progress fails, so a writer that holds the descriptor open still fails at 250 ms.Out of scope
past_the_credentialin the adapter's and gateway's tests, and the runner's registration tests that ask again. With this pin, a usable credential should no longer stop a session, so the retries should no longer be taken. This is inferred from the fix, not measured. Removing them is a separate change.0.1.0-5daee5d-b3fa569e, and a new release is a separate decision.6b9826eis unchanged. This PR does no CS-RG unit work.