Repository navigation
docs: Gateway recovery qualification report and supported modes (P1R-C06) - #116
Merged
Merged
Conversation
The runs on the candidate 1c0eadd qualified the independent Runner on macOS for one exact combination: `uds` with `--runner-lifecycle independent` and a Runner the operator starts, pipe and PTY executions, participations `off` and `required`, and both in one gateway. The five check suites, the freeze, the rehearsal and the full `recovery` run passed on the qualification host, and CS-RG's `candidate`, `matrix`, `faults` and `authority` passed again on the same candidate. Linux `off` stays CI functional verification only, and Linux `required` stays unsupported. The new report, in English and Korean, records the combination, the runs, the functional suites' check counts, the six intervals of the restart measurement, the completion evidence, the regressions, the three harness corrections that each made a new candidate, and the SHA-256 of every evidence directory's manifest, the earlier candidates' included. The protocol, the runner-isolation and operations guides and the DevGuard roadmap now state the result and link to the report, and the documentation registry lists it. Documentation only: the code tree, and with it the candidate, is unchanged. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
A scan of the 35 P1R-C06 evidence directories and the console and `verify` logs beside them, 13,454 files, found no private key, authorization header, token, credential digest, session variable or environment dump. Its only matches were eight lines of the CS-RG `faults` run's MANIFEST.json, which pair the files of the `credential` fault case, whose names contain "credential", with their own SHA-256. The evidence section of the report now says so, as CS-RG's report says of its evidence, in English and Korean. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
8 tasks done
novelKR
pushed a commit
to novelKR/DevGuard
that referenced
this pull request
Oct 19, 2026
CodeSpace's P1R-C06 qualified Gateway recovery with an independent Runner for one exact combination (novelKR/CodeSpace#116, merged as d0f2e49): CodeSpace 1c0eadd, DevGuard's client 6e7e065, release 0.1.0-6e7e065-94d85365 under the policy CS-RG was qualified with, Codex 6b9826e with its recorded patch and Rust 1.95.0, in the runner mode uds with --runner-lifecycle independent and a Runner the operator starts, pipe and PTY, off and required. Record P1-RECOVERY as implemented, qualification macos-qualified, with its qualified_combination, and P1R-C06 as merged-verified. The current-state notes, P1-RECOVERY's rows, V-P1 and the R3 gate cite CodeSpace's report. The mode stays opt-in; Linux off is CI functional verification only, Linux required stays unsupported until DG-LINUX, and restoring processes after the Runner itself restarts stays unsupported. The suspension of this plan's CSRG-C units and the historical text are unchanged. English and Korean; planning-readme, planning-consumer-readiness, planning-milestones-p1-recovery and planning-verification hashes recorded. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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.
Records the qualification of Gateway recovery (P1-RECOVERY) by P1R-C06: what the runs on the frozen candidate
1c0eaddshowed, the supported modes, and the three harness corrections that came before it. Documentation only: the code tree stays the candidate's.No pin change. No change to the installed service, the DevGuard release or the policy.
Issue
Part of #101: P1R-C06, its report (the CodeSpace side of PR7). This PR does not close an issue. DevGuard's milestone ledger records the result in its own PR after this one merges.
mainat1c0eadd(#115's merge), the candidate30165c9cb18534dedbd001a1de2f42c930ee303d41791dee279a36a7e5fe1b7de808d38on the base and on the head, as thecandidatesuite recorded it; everything this PR changes is underdocs/6b9826e3with the recorded patch, DevGuard6e7e065; both unchangedSummary
Before: the protocol and its harness were frozen in #112, and #113, #114 and #115 each corrected the harness and made a new candidate. The protocol and the guides said that no combination was qualified yet, so the independent Runner was not a supported mode anywhere.
After: the independent Runner is qualified on macOS for one exact combination: CodeSpace
1c0eadd(or a later commit with the same code tree), DevGuard's client6e7e065, the release0.1.0-6e7e065-94d85365under the policy with thecodespaceconsumer, Codex6b9826ewith the recorded patch, and Rust 1.95.0. It coversudswith--runner-lifecycle independentand a Runner the operator starts, pipe and PTY executions, participationsoffandrequired, and both in one gateway. Linuxoffis CI functional verification only, Linuxrequiredstays unsupported until DG-LINUX, and restoring processes after the Runner itself restarts stays unsupported. The independent mode stays opt-in, and the default staysin-process.How.
docs/recovery-qualification-report.md, new, with its Korean translation: each claim with its level, the exact combination, every run with its result, the functional suites' check counts, the six intervals of the restart measurement, the completion evidence, the regressions, the amendments, the evidence directories with theirMANIFEST.jsonSHA-256 (the 23 of the earlier candidates included), and what stays outside P1-RECOVERY.docs/recovery-qualification.md,docs/runner-isolation.md,docs/operations.mdanddocs/devguard-integration.md, with their translations: the status lines name the qualified combination and link the report.docs/translations.json: the new pair, in the project group after the protocol, and the recorded hashes of the changed pairs.Contract changes
None. No tool schema, error code, status value, ID or code changes.
Tests
The qualification runs, on the qualification host (Mac mini, Apple M1, macOS 27.0), on the candidate's binaries, in the minimal environment with Rust 1.95.0. Each run is sealed, and
verifyrecomputed its verdicts from the raw files:MANIFEST.jsonSHA-256off, 21 withrequired) with 650 checks, none failed; the two gaps recorded as not runea8f534f…,45123bc3…,299e646f…,a1766269…,37fcf791…candidatec7b26e3d…22adrecovery --rehearsalef5ab907…0894recovery1f6f7ba8…790bcandidatecaff08ef…898fmatrixin-process, 23 inuds)33443fce…011ffaultsbb29b613…5936authority7cebeacf…bb65The
recoveryrun, from 16:42 to 18:52 UTC on 2026-10-18 under DG-1's cold load against the installed release, in every interval:After each of the 308 restarts the next gateway found every long-running process
running. The other process's 4,710 requests, under the previous, the current or no epoch, were all refusedSTALE_CONTROLLERand changed nothing, and no rival gateway reached the Runner. Each of the 308 approvals ran its command once, none of the 654 tagged commands that started ran twice, and none of the 233 that were refused ran. No attempt was launched twice, no uncertain attempt was admitted again and nothing stayed charged. In the second repetition's load interval one status slot of each target was missed, so its maximum shows as missing; its p99 was 1.475 ms. DG-1's load made 583 runs, all of which succeeded. Every host sample was at memory pressure level 1, the Runner stayed within thecodespacereservation (at most 15.25 MiB, 15 threads and a mean of 2.9 mCPU), and the service kept process ID 23023 throughout. A scan of the 35 directories and the console andverifylogs beside them, 13,454 files (282 MiB), found no private key, authorization header, token, credential digest, session variable or environment dump. Its only matches were eight lines of the CS-RGfaultsrun'sMANIFEST.json, which pair the files of thecredentialfault case in each runner mode, whose names contain "credential", with their own SHA-256.CI on the candidate's commit passed every job twice: the push run after #115's merge (run 39114783991) and the scheduled run with the full profile (run 39169645390).
Verified in the cloud (Linux) on this head:
python3 scripts/check_docs.py: "Documentation registry verified: 22 paired documents".npm test --prefix docs-site,npm run build --prefix docs-site,python3 -B docs-site/scripts/site.py checkandsite.py check --commiton this head passed ("Site verified: 195 hashed files, 47 HTML pages").code_treegivescb18534d…8d38for this head and for1c0eadd.CI on this head: passed in run 39194719505: the plan, the policy scan, format and upstream pin, and the
rustgate. The plan selected no Rust leg, because nothing outsidedocs/changed. The documentation site's run 39194719751 built and checked the site; it deploys only frommain.Security scenarios
in-process, orudswith--runtime-bin) with the same release and policy, and keeps the operations database. A Runner that was lost is settled as Runner loss, never reported as recovered, and restoring processes after the Runner restarts is claimed as unsupported.host.tomlhash, child environment or host path; thehost.tomlhash stays in the sealed record on the host. The evidence itself was scanned and holds no credential, credential digest or environment, as above.Out of scope
codespaceconsumer.WORKSPACE_BUSYlasts exact, a code change noted in the report's amendments.