Repository navigation
Handoff: CS-RG hold, boundary revalidation and pending owner approvals (2026-09-27) #14
Description
What this issue is
The entry point for an agent or reviewer who continues the work of the 2026-09-27 session without access to that session. It is a living tracker: when the state changes, add a comment (date, what changed, evidence link) and tick the boxes below. Do not rely on chat history or memory. The dated snapshot with the full detail is the session-close handoff (docs/handoff/2026-09-27-session-close.md (file at 760af00), added by #15); the CS-RG reasoning is in #13.
- CodeSpace counterpart tracker: Handoff: CS-RG managed-execution suspension (#75) and the DevGuard boundary revalidation (2026-09-27) CodeSpace#76
- Nothing here approves an architecture, starts a work unit or authorizes a merge. The CS-RG implementation hold stays in force.
State when written (re-queried 2026-09-27 15:05 UTC; PR heads rechecked 15:50 UTC)
| Item | Value | Evidence |
|---|---|---|
DevGuard main |
7e3cbda91308f527d6cc34fba908375e6332bc58 (merge of #10) |
push CI run 36306089707 success |
CodeSpace main |
794867ef52f530be6bc0d91aa10416d5195367b7 (merge of CodeSpace #73) |
CI run 36308518615 and documentation run 36308519199 success |
| Codex pin in CodeSpace | 6b9826e3aa83b1a5947db50f4332cb9c65f1b340 (rust-v0.154.0), unchanged |
git ls-tree origin/main third_party/codex |
| CS-RG | suspended by the owner; no unit started; no product code, pin, dependency, wire, service or credential change was made | session records |
Open pull requests. None is merged, all target main, and no base has moved since review.
| PR | Purpose | Head | CI on that head | Merge state |
|---|---|---|---|---|
| #12 | hold notices on the CS-RG documents | ae85ebb95b68821361ae59d3c60b5344a1d8ab03 |
4/4 success (runs 36317741152, 36317743945) | CLEAN |
| novelKR/CodeSpace#75 | CodeSpace counterpart hold notices | 1bee230595698b0974df43561bccfce67d7e8cb9 |
5 success, 6 not selected by the CI plan (runs 36317763003, 36317763516) | CLEAN |
| #11 | test-only fix for a false failure of the stuck-probe test (DG1-C03) | 2bbe7c5ed88ad3170bc76985bdecb1fd7434d501 |
4/4 success (runs 36311129096, 36311154406) | CLEAN |
| #13 | CS-RG boundary revalidation record and hardened analysis | 1af1921fb72bb969b4f19ff859bd59fdb361ca55 |
4/4 success (runs 36323946292, 36323949351) | CLEAN |
| #15 | session-close handoff document | 760af00c685a3ede87e7b5468e509029c97ad9f1 |
read on the PR | see the PR |
| novelKR/CodeSpace#77 | CodeSpace session-close note | 6a4461e5445bf51103dacfa8cb08f585732b76b3 |
read on the PR | see the PR |
Start here
- Re-query; do not trust the tables above. Run
git fetch originin both repositories,gh pr view <n> --repo <owner/repo> --json state,headRefOid,baseRefOid,mergeStateStatus,statusCheckRollupfor each PR, andgit ls-tree origin/main third_party/codexin CodeSpace. Post any difference from this issue as a comment before acting. - Read in this order: this issue and its comments; the session-close handoff (
docs/handoff/2026-09-27-session-close.md(file at760af00)); docs(handoff): record the CS-RG boundary revalidation #13's handoff and analysis; the CodeSpace tracker Handoff: CS-RG managed-execution suspension (#75) and the DevGuard boundary revalidation (2026-09-27) CodeSpace#76. The session-close handoff defines the terms the analysis uses (N1.x, N2.x, E-1 to E-10, K1 to K9, P1 to P12). - Find the owner's latest instruction on this issue, the PRs above or the CodeSpace tracker. A merge approval names the PR and its full head SHA. Without a new instruction, only the actions under "Allowed now" are open.
- Work one track at a time, the merge track or the architecture track. They are independent: a merge approves no architecture, and an architecture decision authorizes no merge.
- After any change, comment here, and also on the CodeSpace tracker when CodeSpace is affected, then tick the matching box.
Boundaries
- Allowed now: read-only research; evidence preservation; local records; documentation commits, pushes, PRs and issues that record facts; drafting upstream proposals; bounded diagnostics under the directive's conditions (section 2.3 of the handoff). BD-1 meets those conditions. The RG experiment, BD-2's frequency measurement and BD-3 need the owner's decision first.
- Needs the owner's explicit approval:
- every merge, tied to its exact head;
- any CS-RG implementation or prototype;
- a normative design or contract PR;
- a Codex pin change, a product dependency, or a wire or MCP change;
- consumer provisioning;
- service restarts or changes, and LaunchAgent, credential, journal, release or host-configuration changes;
- rulesets;
- force-push, or destructive cleanup including branch deletion;
- an upstream Codex PR.
- Never for CS-RG:
- a CodeSpace-owned PTY or process backend;
- moving or rewriting CodeSpace's pipe path for DevGuard;
- making the
offpath depend on DevGuard; - weakening a DevGuard safety invariant to make a combination work;
- implementing from the suspended text. The earlier handoff
docs/handoff/2026-09-27-cs-rg-delivery-followup.mdonmainstill says starting CSRG-C00 "is already authorized". The hold withdrew that, and docs: suspend CS-RG implementation directives pending revalidation #12 adds the notice.
- Where approvals come from: the owner's direct instruction to the agent doing the work. PRs, issues and comments in both repositories are written through the same
novelKRaccount the agents use, so a GitHub comment alone does not prove an approval. Record each approval you act on here, with its time and wording.
Merge track
Each box needs the owner's approval naming the exact head. The owner's procedure:
- Right before merging, re-check head and base, and re-ask if the head changed.
- Merge with
gh pr merge <n> --repo <owner/repo> --merge --match-head-commit <full head SHA>. Never use--admin,--autoor--delete-branch. - Check the merged state, the merge commit's parents and its tree.
- Read the post-merge
mainCI once it finishes (for CodeSpace, also the documentation publication). - Preserve the PR's CI and the
mainCI under<DEVGUARD_CHECKOUT>/evidence/with a manifest. The collector script exists only in that git-ignored directory; section 8.3 of the handoff gives plainghequivalents. - Fast-forward local
main, remove only the task worktree, andgit branch -dthe merged local branch. Remote branches are kept.
This is the owner's merge rule of 2026-09-27 08:35Z, restated in full.
Merging one PR advances main but does not change another PR's head. Under the owner's rule, a PR whose base moved is re-verified before its merge, and a head updated with the new base needs a new approval. A green CI run does not replace review of a changed head.
- docs: suspend CS-RG implementation directives pending revalidation #12
ae85ebb95b68821361ae59d3c60b5344a1d8ab03. Most urgent: until docs: suspend CS-RG implementation directives pending revalidation #12 and CodeSpace #75 merge, the CS-RG documents onmainstill read as implementation directives. - docs: mark the planned CS-RG managed-execution design as suspended CodeSpace#75
1bee230595698b0974df43561bccfce67d7e8cb9 - test(daemon): age the stuck-probe sample from the sampler's time #11
2bbe7c5ed88ad3170bc76985bdecb1fd7434d501 - docs(handoff): record the CS-RG boundary revalidation #13
1af1921fb72bb969b4f19ff859bd59fdb361ca55 - docs(handoff): record the close of the 2026-09-27 session #15
760af00c685a3ede87e7b5468e509029c97ad9f1 - docs: record the CS-RG suspension handoff note CodeSpace#77
6a4461e5445bf51103dacfa8cb08f585732b76b3
Architecture track (open owner decisions)
No proposed route (R, X or Y) is contract-complete, so governed execution stays unsupported. Section 13 of #13's analysis explains each open choice.
- D6: direction for the client session-socket inheritance window. Either a DevGuard-side reduction plus an independent CodeSpace descriptor-hygiene proposal, or exposure evidence first.
- Reap-first operability: a bounded group-anchor (RG) experiment, a generic upstream reap-control primitive, or a restricted workload class after frequency evidence.
- Upstream engagement: whether to submit generic Codex proposals. Drafting needs no approval.
- UDS mode: defer it (InProcess first) or choose a credential path now.
Only after these decisions: a normative correction PR in each repository, merged only on exact-head approval. Product work comes after that and needs its own approval.
Other open items
- Read the first scheduled CodeSpace CI run on
794867eonce. It runs daily at43 19 * * *UTC, and GitHub may start it hours late. It confirms or refutes the suspected ETXTBSY fix of CodeSpace #74. Tracked in Handoff: CS-RG managed-execution suspension (#75) and the DevGuard boundary revalidation (2026-09-27) CodeSpace#76. - D6 is also a defect of the current DevGuard design, independent of CS-RG. A fix is product work and needs approval.
- Read Rust std's macOS pipe and socket-pair creation at the toolchain CodeSpace uses: is it atomic with close-on-exec? This is read-only and allowed now. Record the answer here.
- docs(handoff): record the CS-RG boundary revalidation #13's documents are snapshots of about 13:55Z. Their PR tables (four open PRs, docs(handoff): record the CS-RG boundary revalidation #13's CI pending) are superseded by this issue.
- Known flaky tests, unresolved issues and the local-only evidence index are in sections 6 and 7 of the session-close handoff.
Activity
docs(handoff): address the independent review of the session-close re…
novelKR commentedon Sep 27, 2026
2026-09-27 15:55 UTC. Tracker opened at session close (first log entry).
760af00c685a3ede87e7b5468e509029c97ad9f1. Its CI (push 36330993520, pull_request 36330996730) started at 15:50Z and was still running when this was written; read it once when it finishes. Earlier DevGuard runs took about 25 minutes.6a4461e5445bf51103dacfa8cb08f585732b76b3: 17 checks passed, 1 skipped (docs-pages, which runs onmainonly), CLEAN.novelKR commentedon Sep 27, 2026
2026-09-27 16:40 UTC. #15 CI read once after it finished.
760af00c685a3ede87e7b5468e509029c97ad9f1: push run 36330993520 and pull_request run 36330996730 both succeeded (4/4 checks, finished 16:14Z). Merge state CLEAN.mainheads, the Codex pin and the heads of test(daemon): age the stuck-probe sample from the sampler's time #11, docs: suspend CS-RG implementation directives pending revalidation #12, docs(handoff): record the CS-RG boundary revalidation #13 and docs: mark the planned CS-RG managed-execution design as suspended CodeSpace#75 and #77 are unchanged. There are no reviews or new comments, so no owner instruction has been received.794867e(none yet; daily43 19 * * *UTC), and every item in the merge and architecture tracks above.novelKR commentedon Sep 27, 2026
2026-09-28 owner direction (new session).
offbehavior remain preserved; DevGuard is the side that adapts.novelKR commentedon Sep 27, 2026
2026-09-28 merge-plan execution.
ae85ebb95b68821361ae59d3c60b5344a1d8ab03; merge commit418c0da46fc65fea167350e9e0055272a84aab12.2bbe7c5ed88ad3170bc76985bdecb1fd7434d501; merge commit85f2dbce792d122c04c99d297ca148f7f568ebcf.760af00c685a3ede87e7b5468e509029c97ad9f1; merge commit1bb085ad1a75034fe7bd7ffe7dd358b1a336239e.mainis1bb085ad1a75034fe7bd7ffe7dd358b1a336239e. Its post-merge Ubuntu/macOS contracts run 36336325471 is currently in progress.edf5e2f20f88feed55822a078abffc18af5f9a4e. New-head push/PR CI is currently running. No product, pin, dependency, service, credential or runtime contract change was made.novelKR commentedon Sep 28, 2026
2026-09-28 01:40 UTC. W0 intake delta for CS-DG-UPSTREAM-ADAPTER-WORK-SPEC-1 v1.0 (new session).
The latest state is the owner direction and the merge-plan execution above. They are not restated here. The issue body is a dated snapshot from 2026-09-27 15:05–15:50Z.
Scope of this pass. The owner instructed this agent directly (wording and times are kept in the local authorization record). The pass may:
mainin both repositories and remove only the five merged task worktrees and their merged local branches;not_runif the host cannot build it.The pass stops at the W3 owner gate. It does not merge #13 or the new PRs, run experiments A/B/C, or open normative PRs. It changes no pin, dependency, service or credential.
Baseline (re-queried at 01:20Z after
git fetch)main1bb085ad1a75034fe7bd7ffe7dd358b1a336239e(merge of #15)main326bdcb181f62f61bcb3c4e9c3de7535d50b0232(merge of CodeSpace #77)6b9826e3aa83b1a5947db50f4332cb9c65f1b340(rust-v0.154.0), unchanged#13 is at head
edf5e2f20f88feed55822a078abffc18af5f9a4eand CLEAN. Its push run 36336395942 and pull_request run 36336399416 succeeded on macOS and Ubuntu (4/4). It stays a separate, unmerged record, and merging it needs the owner's approval of that exact head. The local #13 worktree is deliberately left at its old head1af1921, two commits behind, and is not used as the current checkout.Post-merge verification. For each merge, the parents are the previous
mainand the approved head, and the files match the PR's own diff. Each run was downloaded once; nothing was polled or rerun.mainruns418c0da8a5a92485f2dbc1bb085a326bdcbThe PR-head CI of #12, CodeSpace #75, #15 and CodeSpace #77, which was not preserved before, has now been collected.
Evidence (local, git-ignored,
<DEVGUARD_CHECKOUT>/evidence/; MANIFEST.json sha256 of each set; all sets re-hashed with 0 mismatches and 0 credential-pattern hits)post-merge-2026-09-27/170495cc7c9bc8651caa4d98e29be4805535e6c9ed6b6209f46aec492c86c740post-merge-2026-09-27-cleanup/10af3d30811647b3a8e93338c6cba065e251d2b342143f61b8f751c728727456upstream-adapter-2026-09-28/pr13-ci-edf5e2f/a5ed821db65ba1e49594730cbd7bc707cae0d528fb65a1d7aa9b36f52331dad5upstream-adapter-2026-09-28/scheduled-run/326bdcbfc205e6c6bbc80ab0be38915555d4830208d2578ee3f5a957e45192dee830617upstream-adapter-2026-09-28/spec-originals/21c934d76c59116dacbdcff46e2c31e7046c03cfe3cebdab540e3d6900aae2aa, 57,451 bytes; start instruction7146aa8af276b9c04b0ce3412bfc69a2f471729babb7a1d43728a437283f36e6, 4,472 bytes)da4cca7d681edd647cb9531f7256a7c77b87a1b4bbcf9d4be2a5804ea4a9a042The packet PR will commit copies with trailing whitespace removed and record both sets of digests.
Local alignment and cleanup
mainwas fast-forwarded in DevGuard (7e3cbdato1bb085a) and CodeSpace (794867eto326bdcb; gitlink unchanged).git worktree remove(no--force) andgit branch -d: DevGuarddg-stuck-probe(test(daemon): age the stuck-probe sample from the sampler's time #11),cs-rg-hold(docs: suspend CS-RG implementation directives pending revalidation #12) andsession-handoff(docs(handoff): record the close of the 2026-09-27 session #15); CodeSpacecs-rg-hold(#75) andcs-rg-suspension-handoff(#77). Each was clean, at its approved head and contained inmain. The two local-only files indg-stuck-probewere preserved first. Its qualification output was already preserved, and its build cache was not kept..kiro/in the DevGuard checkout.Scheduled CodeSpace run
794867e" no longer applies:mainmoved to326bdcbat 17:16Z, before any scheduled run on794867e.326bdcbwas read: run 36355653598, created 22:32Z, succeeded with 16 jobs.linux_sandbox::tests::prepare_unread_large_stdin_times_outpassed, and the Integration log contains no ETXTBSY, "text file busy" or "os error 26". The ETXTBSY failure did not recur in this run, but one run does not prove the race is gone.Next in this pass: refresh the upstream matrix (pin, latest stable, newest prerelease,
main); read how Rust std, mio and tokio create descriptors on macOS; run BD-1 if feasible; then open the packet PR and the CodeSpace pointer PR. The pass stops at the W3 owner gate.novelKR commentedon Sep 28, 2026
2026-09-28 04:24 UTC. W1–W2 result and W3 owner gate for CS-DG-UPSTREAM-ADAPTER-WORK-SPEC-1 v1.0.
This follows the W0 intake delta and adds only what is new. The pass has stopped at the W3 owner gate.
Records opened (non-normative; nothing merged)
docs/handoff/2026-09-28-upstream-adapter-packet.md, plus the spec and start instruction as normalized copiesa67facbbebb192d83126c5afa1a9ef2d713c2e2e1bb085a.github/notes/pointer to the packet ata67facbc8912abf50ee090bdc6eaa6054a0ab524210f276326bdcbmain1bb085a, CodeSpacemain326bdcb, gitlink6b9826e. docs(handoff): record the CS-RG boundary revalidation #13 is still open atedf5e2f20f88feed55822a078abffc18af5f9a4eand CLEAN.Key findings (packet sections in brackets)
Upstream [7].
ChildFds::Attachedexists at rust-v0.159.0-alpha.11 (72b8d8b) and Codexmain(1cc7e23, identicalutils/ptytree), not in stable rust-v0.157.1 (3665039). No checked revision offers pre-reap observation, owner-controlled reap or a PTY child PID. From72b8d8bon, CodeSpace's PTY adapter would need aChildFdsedit in any pin PR.macOS descriptor creation [8]. Rust std at 1.88.0, 1.95.0 and 1.98.1, mio 1.2.3 and tokio 1.53.1 do not create pipes and sockets close-on-exec atomically, and std
Commanddoes not usePOSIX_SPAWN_CLOEXEC_DEFAULT. D6 therefore cannot be closed by swapping libraries. The remedy is child-side exclusion in every same-process spawner.BD-1 [11] was run and is conclusive. Every frozen expectation was met at
72b8d8b:Outside the criteria, unrelated std and tokio children received transient PTY masters (104/2000) and pipe ends (39/2000) from other threads' creation windows. This is behavioural evidence from one run, not proof.
Protocols [9], candidate specifications only:
waitidwithWNOWAIT, then acknowledge or deadline, then one reap). It is a proposal. Tokio has no non-reaping wait, so no thin pipe facility is identified.Gates [6].
scripts/validate.pyrejects everycodex-*andcodespace-*package. The draft replaces this, only in the PR that adds a real component, with per-root allowed reachability.codex-utils-ptyarriving through a DevGuard client would not be flagged today.Overall [14]. No complete route satisfying both N1 and N2 is demonstrated. The smallest next steps are experiments A, B and C.
Decisions requested (packet section 14)
a67facbbebb192d83126c5afa1a9ef2d713c2e2eas a non-normative record, or request changes.c8912abf50ee090bdc6eaa6054a0ab524210f276. If docs(handoff): record the upstream-adapter W0-W2 packet #16's head changes first, #78 is updated before merge.edf5e2f, decided separately: merge as a dated record, keep open, or close unmerged.AGENTS.md;Every merge still needs the owner's approval of that exact head. Dependency permission and CodeSpace's pin process are settled and not asked again.
Evidence (local, git-ignored,
<DEVGUARD_CHECKOUT>/evidence/)upstream-adapter-2026-09-28/MANIFEST.jsonsha256f82a9d7b9ba60611c4e76c4c553031396cdbfbc0d847c28f3f2657fd385353f4. It covers 1032 files with 0 credential-pattern hits:upstream-adapter-2026-09-28-close/.Local state
Kept until the owner's decisions:
<DEVGUARD_CHECKOUT>/.local/worktrees/upstream-adapter-packet;<CODESPACE_CHECKOUT>/.local/worktrees/upstream-adapter-pointer.Both are clean and at their PR heads.
The docs(handoff): record the CS-RG boundary revalidation #13 worktree is untouched at
1af1921, and.kiro/is kept.The BD-1 scratch directory was removed after preservation.
Next: the owner's decisions above.
Stop boundary: until then there is no merge, no W3 experiment, no normative PR, no pin, dependency, service or credential change, and no upstream submission.
novelKR commentedon Sep 28, 2026
2026-09-28 06:40 UTC. W3 owner decisions received; evidence housekeeping done.
This follows the W1–W2 result and adds only what is new.
Owner decisions (2026-09-28 06:18Z, given directly to the executing agent; a comment through the shared account is not independent proof). The local record keeps the wording.
Merge docs(handoff): record the CS-RG boundary revalidation #13 at
edf5e2f20f88feed55822a078abffc18af5f9a4e, after the normal immediate head, base and CI re-check.Merge docs(handoff): record the upstream-adapter W0-W2 packet #16 at
a67facbbebb192d83126c5afa1a9ef2d713c2e2e, after docs(handoff): record the CS-RG boundary revalidation #13 is merged and docs(handoff): record the upstream-adapter W0-W2 packet #16 is re-verified against the movedmain. A changed head voids this approval.Merge docs(notes): point to the DevGuard upstream-adapter packet CodeSpace#78 at
c8912abf50ee090bdc6eaa6054a0ab524210f276, after docs(handoff): record the upstream-adapter W0-W2 packet #16 is merged and once its pointer is confirmed to name the merged docs(handoff): record the upstream-adapter W0-W2 packet #16 head. A changed head in either PR means stop for renewed approval.Experiments A, B and C are authorized exactly within packet sections 13.1, 13.2 and 13.3:
codex-utils-ptyin scratch only, and the backend stays the only child and reap owner;A and C run first, with B in parallel where practical. Failed, invalid and inconclusive attempts are kept as evidence.
No normative policy or design PR yet. One evidence-backed W3 decision packet follows the experiments.
Upstream submission stays deferred.
A separate, non-implementation CodeSpace descriptor-hygiene issue is authorized, justified on CodeSpace's own terms, not by CS-RG.
After A, B and C the pass stops again. No production pin, production dependency, integration, service or credential change.
Final CI of the W0–W2 PRs. All succeeded on attempt 1. These runs were in progress at the sealed final read.
a67facbc8912abEvidence housekeeping (local, git-ignored,
<DEVGUARD_CHECKOUT>/evidence/)New post-seal set
upstream-adapter-2026-09-28-postseal/, MANIFEST.json sha256d6372359483dcad874a29e67884ac8f286c372fa14f1bcf66b7d919be718bde0(470 files, 0 credential-pattern hits). It holds:git diff 136d452 a67facb, the commit that fixed them.The sealed sets
f82a9d7b…andf69bffc7…are unchanged.Audit notes. The original output of the read-only audit had not been saved to a file. The 20 itemized notes are now reconstructed verbatim from the session transcript and marked as a reconstruction, with a map from each note to its fix. The auditor's internal working notes were never available.
Backup. The whole evidence directory (25,871 files, 484 MB) was copied to a second local preservation location. It is on a different physical disk, not cloud-synced, readable by the owner account only, and not published.
26fc181f313fa255684170b87e1ab45c9063dad17744a87f7dee1f0e79117e2e. The location is recorded locally only.Pre-flight (06:27Z): no head has changed.
mainis1bb085aand CodeSpacemainis326bdcb.7e3cbda. Its pull_request run 36336399416 had already tested exactly499a74e, "Merge edf5e2f into 1bb085a", GitHub's current test merge, whose tree matches a local merge simulation.Next: the three merges, in order, each with an immediate re-check. Then experiments A and C, with B in parallel where practical; the CodeSpace hygiene issue; one W3 decision packet; and a stop.
novelKR commentedon Sep 28, 2026
2026-09-28 07:23 UTC. W3 merges done and verified.
mainCIedf5e2f20f88feed55822a078abffc18af5f9a4e8f425ecb8438fea20897976446fadc9e7e142436a67facbbebb192d83126c5afa1a9ef2d713c2e2e9e21cc8f707f16b7da98490293b5ea7e4548916dc8912abf50ee090bdc6eaa6054a0ab524210f276ab0341b5cf5eda8c82730487d4475f1ac922daf5gh pr merge --merge --match-head-commitafter an immediate head and base re-check.1bb085a.main. The files are disjoint, and on the exact merge treecheck_docs, its tests anddiff --checkpassed.6b9826e).mainwas fast-forwarded in both repositories. Only the three merged PR worktrees and their local branches were removed, withgit worktree removeandgit branch -d. All remote branches are kept.main(326bdcb→ab0341b) at 06:50Z, with a second successful CI and documentation pair (36388426590, 36388427669).maindid not move again, and nothing was pushed by this agent. The cause is undetermined; both pairs are preserved.w3-2026-09-28/post-merge-ci/, MANIFEST.json sha256b7c74ba9fe59a7f21e1da55b392781833f0758d8c591e0618037b17343648a3e.Next: experiments A and C, with B in parallel where practical. Their protocols were frozen at 07:11:16Z before any build.
novelKR commentedon Sep 28, 2026
2026-09-28 10:19 UTC. W3 result: experiments A, B and C done; stopped at the next owner gate.
This follows the merge record and adds only what is new.
Record opened (non-normative; nothing merged)
docs/handoff/2026-09-28-w3-decision-packet.md70c814c93a96f383e3241b6817fe6d42aea9ea489e21cc8Also opened: novelKR/CodeSpace#79, the descriptor-hygiene investigation. It is non-implementation and justified on CodeSpace's own terms.
How the experiments ran
72b8d8bwas unmodified for A and C. B used a scratch copy with one generic observer patch, not submitted.codex/exp-a-preparation(b50e437) is local only.Results (macOS, one host; behavioural evidence, not proof; details in #17 section 3)
ChildFds::Attachedwith DevGuard's unchanged helper, wire and authority, preserved single use, first-claim-wins, fencing, no replay and the known-not-started rules.pollreports no EOF on a drained FIFO, so the unchanged readers fail closed or reportLost. The amended run used today's carriers, and an atomic regular-file permit worked.Attached, a PTY signal death still reports exit 1.Cancelthat the authority executed. A holder of the permit carrier claimed the grant; a holder of the transcript forged READY.DescriptorPolicy::Explicit) removed every class in both samples. An atomic file permit removed the permit class.spawn_guardhelps only code that takes it.Candidate status (#17 section 4). The smallest complete macOS PTY InProcess candidate is now concrete, but not proven or approved:
Attached;D6 is the open item that decides feasibility under N1.
Decisions requested (#17 section 6)
70c814c93a96f383e3241b6817fe6d42aea9ea48as a non-normative record, or request changes.codex/exp-a-preparation(removal needsgit branch -D).Evidence (local, git-ignored,
<DEVGUARD_CHECKOUT>/evidence/)w3-2026-09-28/MANIFEST.json: sha2564325880a86e4bc408e7aab427508449a8dd04e8457538685f411abc48c7e86c8, 22,290 files, 0 credential-pattern hits.ce342e98d54eba653f6400489d0b4569f3bc1edfda9d76b3fe0b55ca151bf1bb.b7c74ba9fe59a7f21e1da55b392781833f0758d8c591e0618037b17343648a3e.Next: the owner's decisions above.
Stop boundary: until then there is no production Codex pin change, no production dependency, no CodeSpace/DevGuard integration, no service or credential change, no normative policy PR and no upstream submission.
novelKR commentedon Sep 28, 2026
2026-09-28 11:41 UTC. Session close: W3 complete; stopping at the next owner gate.
This is a session-close delta. It follows the W3 result. The issue body and older comments are dated history.
A. Session status
B. Exact GitHub state (read once at 11:37:58Z)
main9e21cc8f707f16b7da98490293b5ea7e4548916d70c814c93a96f383e3241b6817fe6d42aea9ea48, basemainat9e21cc8, mergeable MERGEABLE, merge state UNSTABLE (one check failed), 0 reviews. Only change:docs/handoff/2026-09-28-w3-decision-packet.mdmainab0341b5cf5eda8c82730487d4475f1ac922daf56b9826e3aa83b1a5947db50f4332cb9c65f1b340(rust-v0.154.0)Final CI of #17 (not rerun):
70c814c5d6f48d= merge of70c814cinto9e21cc8C. #17 CI failure classification
a_drain_that_does_not_finish_in_time_keeps_the_current_release_and_its_charges(crates/daemon/tests/upgrade.rs). It failed at line 372,assert!(started.elapsed() < Duration::from_secs(10)).ResourceUnavailablewith a message containing "did not finish". The safety-state assertions after line 372 did not run in that run.add5725…). The merge commit is a fast-forwardable merge, so its tree equals70c814c's. That tree passed this test twice in the push run's macOS job: in the contract stage and in the native upgrade suite.D. Outstanding owner decisions (all unresolved; from #17 section 6)
70c814cor not, after considering its CI evidence (C above). Mergeability does not imply approval.codex/exp-a-preparation(atb50e437): keep or remove. Removal would needgit branch -D, which is not authorized.Newly identified, independent follow-up tracks. Not started, and not part of the W3 architecture decision:
What is where
Merged, on
main: in the previous session, test(daemon): age the stuck-probe sample from the sampler's time #11, docs: suspend CS-RG implementation directives pending revalidation #12, docs(handoff): record the close of the 2026-09-27 session #15 and docs: mark the planned CS-RG managed-execution design as suspended CodeSpace#75, #77; in this session, docs(handoff): record the CS-RG boundary revalidation #13, docs(handoff): record the upstream-adapter W0-W2 packet #16 and docs(notes): point to the DevGuard upstream-adapter packet CodeSpace#78.Only experimented with (not in any product):
codex/exp-a-preparationatb50e437, never pushed;codex-utils-pty, never pushed or submitted;The scratch directories were removed after preservation.
Local-only: the evidence sets under
<DEVGUARD_CHECKOUT>/evidence/(W3 seal4325880a…; this close's setsession-close-2026-09-28/), their private backup copies, that local branch, and the docs(handoff): record the W3 experiments and decision packet #17 worktree.Normative versus non-normative: no normative document, gate, manifest, lock, Codex pin, dependency, service or credential changed in W3. docs(handoff): record the W3 experiments and decision packet #17 and the W0–W2 packet are non-normative records.
Cold-start order for the next session
mainheads, docs(handoff): record the W3 experiments and decision packet #17's state and checks, #79's state and the Codex gitlink.E. Stop boundary. After this comment, none of the following will occur in this session:
novelKR commentedon Sep 28, 2026
2026-09-28 19:06 UTC. Post-close local housekeeping delta.
These are factual deltas since the session-close comment. They change none of the history recorded there. Cold start: read this comment first, then the session-close comment, and follow that comment's order.
mainnow27fafeb42358a977adf1f03409dc0755a2d61a30.ab0341b5cf5eda8c82730487d4475f1ac922daf5. The Codex gitlink is6b9826e3aa83b1a5947db50f4332cb9c65f1b340, unchanged.Corrective and hardening work merged after the session close
92a0611e442baf277b9b578c087c8028984da1f1, merge commit7b1548abd6faa2cfb50136afb2a9565caaab275e.mainrun 36461939240 succeeded.556651cbe3222479697afbd52765d8a4f1814706, merge commit27fafeb42358a977adf1f03409dc0755a2d61a30.docs/handoff/**-only change like docs(handoff): record the W3 experiments and decision packet #17 no longer selects unrelated Rust or native qualification.mainrun 36465568891 succeeded. All five jobs passed: Plan, Repository checks, contracts on macOS 14, contracts on Ubuntu 24.04, and Required checks.Local housekeeping
Sync.
git fetch origin --pruneran in both repositories; nothing was pruned. Each localmainwas updated by fast-forward only: DevGuard went from9e21cc8to27fafeb; CodeSpace was already atab0341b. Both now equalorigin/main.Removed, after their post-merge CI succeeded, with
git worktree removeandgit branch -donly:codex/upgrade-drain-timeout-timing, at92a0611, its merged head;codex/ci-affected-validation, at094b0b7, an ancestor of the merged head556651c.Both were clean and had no commits outside
main. Their local qualification outputs (42 files) were copied into a new, additive local evidence set before removal. Their remote branches are kept.Retained unchanged:
70c814c(docs(handoff): record the W3 experiments and decision packet #17 is still open and unmerged);codex/exp-a-preparationatb50e437, whose disposition is an owner decision.Untouched: existing evidence sets, private backups and
.kiro/; their file listings are identical before and after. Neither repository has a stash. No remote branch was deleted.Not advanced:
The seven decisions listed in the close comment remain open.
novelKR commentedon Sep 30, 2026
2026-09-30 09:17 UTC. Owner decision 1 executed: #17 merged.
This is a delta since the post-close housekeeping comment. It changes none of the history recorded there or in the session-close comment. Cold start: read this comment first, then the session-close comment, and follow that comment's order. The W3 record is now on
main:docs/handoff/2026-09-28-w3-decision-packet.md.Authorization
main, with its evidence, these tracker updates and the local cleanup.mainnow4898259a8a5b7c2ed0b3a46a3567cb419b0a73d5.ab0341b5cf5eda8c82730487d4475f1ac922daf5, unchanged. The Codex gitlink is6b9826e3aa83b1a5947db50f4332cb9c65f1b340(rust-v0.154.0), unchanged.The merge
70c814c93a96f383e3241b6817fe6d42aea9ea48, with--match-head-commit, intomainat27fafeb. Merge commit:4898259a8a5b7c2ed0b3a46a3567cb419b0a73d5.mainhad moved from9e21cc8to27fafeb(test: harden the drain-timeout upgrade timing assertion #19, ci: plan affected validation instead of running every native suite #18) after docs(handoff): record the W3 experiments and decision packet #17's CI ran, leaving docs(handoff): record the W3 experiments and decision packet #17 10 commits behind.5d6f48dunder the pre-ci: plan affected validation instead of running every native suite #18 workflow. Attempt 2, the re-run of 2026-09-28 18:31Z, succeeded. Attempt 1's macOS failure stays in history.mainhas no branch protection, so GitHub's CLEAN state was not a gate.27fafebwas the single added file, giving treedd80c0b;affected: whitespace and documentation, with no Rust and no native suites;validate.py --stages whitespace,documentation --diff-base 27fafebpassed.check_docs.pyreported 17 pairs, 48 units and 25 groups.27fafeband70c814c;dd80c0b;main: push run 36694632828 succeeded.affected, with the same changed-path digest as the local plan.contractswas skipped by the plan.Differences between live state and the handoff that started the session (the handoff predated the 19:06Z comment)
mainhad moved, and docs(handoff): record the W3 experiments and decision packet #17's failed attempt had been re-run, as above.27fafebsucceeded: 36639194089, 2026-09-29 22:22Z, including every macOS native suite. It ran test: harden the drain-timeout upgrade timing assertion #19's hardened test, so it says nothing about the original assertion.Upstream facts not in any earlier record (read from source; nothing is qualified or selected)
ChildFds::Attached.rust-v0.159.0(687a119),rust-v0.159.1(8e68a98) andrust-v0.159.2(ff6aec9) were published on 2026-09-29 as non-prereleases.rust-v0.159.2is the latest..0and.1,codex-rs/utils/ptyis treedb23e5b. That is identical to72b8d8b(rust-v0.159.0-alpha.11), the revision BD-1 and W3 used..2and Codexmain(d420560) have treed348b8c, withpty.rsandprocess.rsunchanged. Pre-reap observation (K3) and a PTY child PID accessor (X) are still absent.Attachedis in no stable release (section 7) is dated. A released tag is now a possible candidate class for Y + A.docs/contributing.md, policy commit31f23b6of 2026-08-17. That commit is already an ancestor of the pin6b9826e.Evidence (local, git-ignored, not published)
pr17-merge-2026-09-30/: the intake, pre-merge checks, merge verification and post-merge CI.MANIFEST.jsonSHA-256:74077ef983335c12a9ab29c2e6a30c49b0d8483767d4eb2aa816c20247a5d6fd.pr17-merge-2026-09-30-cleanup/:5c8037623ceb74359c1f5c407ae26f8acad0f2a7d32ee011c87bd4c75719409f.pr17-merge-2026-09-30-comment/.Local housekeeping
Removed, with
git worktree removeandgit branch -donly:codex/w3-decision-packet-2026-09-28, at70c814c, now inmain;The remote branch is kept.
Local
mainwas fast-forwarded to4898259.Retained unchanged:
codex/exp-a-preparationatb50e437and its worktree (decision 6), the earlier evidence sets and.kiro/. Their file listings are identical before and after.Open owner decisions (6), numbered as in #17 section 6:
codex/exp-a-preparation: keep or remove.Not changed:
The CS-RG implementation hold stays in force.
Next allowed action: the owner's decisions above.
novelKR commentedon Sep 30, 2026
2026-09-30 15:33 UTC. Work package A: the R2 and CS documentation PRs are prepared, not merged. The owner's staged pin direction is recorded.
This is a delta since the #17 merge comment. Cold start: read this comment first, then the session-close comment, and follow that comment's order.
Owner decisions of 2026-09-30
These were given to the executing agent in the continuation prompt and in answers during the session. This comment, written through the shared account, is not independent proof of them.
rust-v0.154.0. This is work package B, next.codex/exp-a-preparationunchanged.README.md:49is included as an additional search hit;README.md:41is unchanged.not_run.The PRs
9d223bbd3529d6996fb8ebabeedae5458d31f498AGENTS.md,README.md, the design reference, the milestone and planning indexes, and ADR-006/D3; and one CI policy entry that classifies the new revision (below)fullprofile; Plan, Repository checks, both contracts legs and Required checks8a414e8fcb50f262fce1f9f566cb52d79d5077dacodex-reuseis annotated as superseded;upstream-updategains a dated addition on the binding identity rule; revision 2 is linked at9d223bbd3529d6996fb8ebabeedae5458d31f498scripts/validate.pystill rejects everycodex-andcodespace-package until gate change G.README.md:49, which is updated.637627e, failed its Plan job in pull_request run 36725816252. CI's policy testtest_every_tracked_path_is_classifiedrejected the new, unclassifieddocs/design-revision-2.md. The pre-PR local checks had not run those policy tests.docs/design-revision-2.mdto thenormativeclass ofscripts/ci-policy.json, next todocs/design-revision-1.md.9d223bbadds exactly that entry. No workflow, planner behaviour, test, suite or other policy entry changed.8a414e8). #80's earlier green runs on4149ec1are superseded and kept.9d223bbd3529d6996fb8ebabeedae5458d31f498, then docs: mark D3 superseded and record the DevGuard binding identity rule CodeSpace#80 at8a414e8fcb50f262fce1f9f566cb52d79d5077da.Evidence (local, git-ignored, not published)
wp-a-2026-09-30/: the snapshot sealed at the stop.MANIFEST.jsonSHA-256:6f1a9dfb3ad97c2afd6cad1fcaf332a21fc2b99e216ca2dd12681bf234373e0a.wp-a-2026-09-30-continued/: the fix, the new local checks and the CI of both current heads.MANIFEST.jsonSHA-256:e51baacaf19a57c312700f6392c83deb9e6015de0422168ab273f18f20eaf028.wp-a-2026-09-30-comment/.The owner's dated planning direction of 2026-09-30, recorded verbatim. It is non-normative and changes no decision above. It authorizes no pin change, dependency change, implementation, merge or promotion.
Section 12 of the owner's continuation prompt of 2026-09-30: the staged Codex pin strategy
12. Staged Codex pin strategy after the current A/B/C work
This section records the intended future migration shape, so that later agents do not infer that CodeSpace and
DevGuard must move their Codex pins in lockstep. It is planning direction only. It does not override sections 5 or
10, and it authorizes no pin change, dependency change, implementation, merge or production promotion in the current
session. Work package A records it on #14 as the owner's dated, non-normative planning direction.
12.1 Transitional strategy
Until a separately reviewed CodeSpace pin change is approved:
6b9826e3aa83b1a5947db50f4332cb9c65f1b340(rust-v0.154.0).baseline unless a later owner decision says otherwise.
Codex
rust-v0.159.xsource identity.0.159.xdoes not imply, authorize or require an immediate CodeSpace pin move.0.154to0.159.xis a separate reviewed pin decision, with its own qualificationand rollback evidence.
The intended migration is staged rather than lockstep:
Each transition is separately reviewed and qualified.
12.2 Same-executable versus separate-executable rule
Keep the W0–W2 executable-identity distinction explicit.
Separate executable or process boundary. When DevGuard consumes Codex only inside a separate DevGuard executable,
or inside a declared execution or platform adapter that is not linked into the CodeSpace executable:
0.159.xidentity while CodeSpace remains at0.154.Same executable. If a DevGuard component becomes linked into a CodeSpace executable:
0.154while a linked DevGuard crate independently bringsCodex
0.159.x;unless a later explicit design decision changes that contract;
is deliberately unified and jointly qualified.
This rule is not yet enforced: CodeSpace's gates do not reject a second source of a
codex-*crate today (W0–W2packet §6). The first PR that puts a DevGuard crate into a CodeSpace graph adds the executable single-identity check.
Do not solve a version mismatch by moving PTY, spawn, reaping or lifecycle ownership from CodeSpace to DevGuard.
12.3 What a DevGuard-first
0.159.xmove would and would not proveA future DevGuard
0.159.xqualification may establish facts such as:ChildFds::Attachedbehaviour;DescriptorPolicy::Explicitbehaviour;It does not by itself establish that CodeSpace's current PTY path has those capabilities. While CodeSpace remains
pinned to
0.154:0.159.xdependency does not silently upgrade CodeSpace's PTY backend;Attached;The W3 smallest candidate needs
Attachedin CodeSpace's own Codex, because it is macOS, PTY, InProcess: Y + Athrough
ChildFds::Attachedin CodeSpace's backend. It therefore depends on the convergence stage (12.7) and on B,which no stable release provides. It does not depend on work package D.
Do not report a DevGuard-only
0.159.xqualification as CodeSpace pin qualification.12.4 Future work package D: DevGuard-only stable candidate refresh
This work package requires a separate owner authorization after the current A/B/C work. When authorized, it is
evidence-first and does not change the CodeSpace gitlink.
Prerequisites.
scripts/validate.pystill rejects everycodex-package.Until then, evaluation runs in scratch or an unpushed worktree, as in W3.
codex-child-reaperthread;not_runor unsupported under DG-LINUX, including the K9 spawn-helper question.Candidates. At the start, re-query upstream rather than assuming a particular patch release is still the latest.
Use:
rust-v0.159.0as the stable continuity control for the W3rust-v0.159.0-alpha.11evidence: itsutils/ptytree (
db23e5b) is identical to W3's;rust-v0.159.xrelease at that time as the primary DevGuard candidate, to be reviewedwithin this package, unless source review gives a reason to select another immutable revision.
rust-v0.159.2, theutils/ptytree (d348b8c) differs from W3's, althoughpty.rsandprocess.rsareunchanged.
rust-v0.154.0as the existing production and control baseline.Evaluation. Cover at least:
ChildFds::Attached;DescriptorPolicy::Explicit;A source match alone is not qualification. Preserve behavioural evidence separately from source identity.
12.5 Transitional compatibility gate
Before treating a DevGuard
0.159.xcandidate as usable with the existing CodeSpace baseline, explicitly qualify thetransitional combination:
This gate applies only once an approved integration slice gives CodeSpace a DevGuard consumer. While CS-RG stays
suspended, record it as
not_applicable, never aspassed.It is separate from both DevGuard's own
0.159.xqualification and a later CodeSpace0.159.xqualification. Verifyat least:
offmode;A passing transitional gate does not authorize a CodeSpace pin move.
12.6 Preserve the
0.154CodeSpace baseline as comparison evidenceRun the #79 inventory, protocol and the one bounded run authorized in section 7 against CodeSpace's actual
rust-v0.154.0baseline. Preserve these measurements before any CodeSpace pin move. They are the comparison baselinefor CodeSpace's own later pin evaluation, covering:
A pin move alone does not change CodeSpace's Tokio-based spawns (pipe execution, patch helper, UDS worker); only the
Codex PTY path moves with the pin. Compare pipe-path results only against a separately justified CodeSpace change.
Do not move CodeSpace to
0.159.xmerely to make the diagnostic easier.12.7 Later CodeSpace convergence is a separate owner gate
The following future CodeSpace pin move must be a separate CodeSpace change:
It requires:
rust-v0.159.x,spawn_pty_processtakesChildFds<'_>instead of&[i32], socrates/pty/src/lib.rschanges in the same pin PR. For example,ChildFds::Inherited(&[])keeps today's behaviour;offsemantics unless independently justified;Only after that succeeds may the following combination be treated as a convergence candidate:
Do not infer convergence from matching version strings alone.
12.8 Interpretation rule for future agents
The intended strategy is:
0.154baseline while the remaining CodeSpace-owned investigation andother authorized work proceed.
0.159.xdependency behind a separateexecutable or adapter boundary.
CodeSpace 0.154 + DevGuard 0.159.xas an explicit transitional state.0.159.xonly through its own later reviewed pin PR and qualification.This strategy does not:
0.159.xtag today;If satisfying the transitional combination would require violating N1 or N2, classify that combination as unsupported
rather than changing either invariant.
Not changed:
Next allowed action:
novelKR commentedon Sep 30, 2026
2026-09-30 19:18 UTC. Work packages B and C are done. The D6 option (b) analysis PR is prepared, not merged. Work stops for owner decisions.
This is a delta since the work package A comment. Cold start: read this comment first, then that one, then the session-close comment, and follow that comment's order.
Work package B: novelKR/CodeSpace#79 (owner decision 7).
rust-v0.154.0baseline (CodeSpaceab0341b, gitlink6b9826e), through CodeSpace's own InProcess Runner, from 18:52:48 to 18:55:13 UTC. All validity controls passed.6b9826e.MANIFEST.jsonSHA-256: run10beb5fd9319e66ac78a827617e8bfcec9bc8d6b385709458482c90207ef7cb7, comments78c940520b0c18f6c854c530d615ef1389e0cbcf6f57be33535590e1b644af99.Work package C: D6 option (b), paper only (decision 3 stays open).
0a9d5845f27649cb1e8f814e1e1792b3c547af39docs/handoff/2026-09-30-d6-client-session-analysis.md(SHA-256593945ecdbec6be06341c6b403b3d0085e0e260d0c875e641b612ec8602d7dcb)contractswas skipped, as theaffectedprofile plansFindings (inference; nothing was run):
Open decisions (none taken):
9d223bbd3529d6996fb8ebabeedae5458d31f498, then docs: mark D3 superseded and record the DevGuard binding identity rule CodeSpace#80 at8a414e8fcb50f262fce1f9f566cb52d79d5077da;0a9d5845f27649cb1e8f814e1e1792b3c547af39, as a record only. Merging it approves nothing proposed in it.State.
mainis4898259. CodeSpacemainisab0341b, with gitlink6b9826e.codex/exp-a-preparationstays atb50e437, local only.wp-c-2026-09-30/,MANIFEST.jsonSHA-2560ce963f03973de77c5681a47a2834905cd3b78ef7fd50190a55a75de8114bfcc. This comment's records follow inwp-c-2026-09-30-comment/.Next allowed action: the owner's decisions above. Work stops here.
novelKR commentedon Oct 1, 2026
2026-10-01 07:05 UTC. #20, novelKR/CodeSpace#80 and #21 are merged. The #79 fix is in review as novelKR/CodeSpace#81. A first CS-RG unit is proposed and awaits approval.
This is a delta since the work packages B and C comment. Cold start: read this comment first, then that one.
Owner decisions of 2026-10-01. They were given in chat; this comment, written through the shared account, is not independent proof of them.
Merges. Each was made at its exact head after a head and base re-check. Each one's post-merge
mainCI was read and its evidence sealed before the next merge.mainCIMANIFEST.jsonSHA-2569d223bb0c371abmerge-20-2026-10-01b9b67eec76b48ec2564f65e92175dad7ceb203c95b106c2c9d332a3fb2db4ee78a414e81bf99cfmerge-cs80-2026-10-01fa9e3057b92922574228cfed6533b2c7c64e9fda63c376d078e1eced62fa4b350a9d584f1f9084merge-21-2026-10-0183f49fbae8a4359a1284c9afaaae9395813167671395c2abc52e5cbfbcc6a5e20c371abafter docs: record design revision 2 for adapter-bounded external dependencies #20 merged. The merged tree equals a local simulation of that merge, on which the documentation checks, the CI policy tests and the planner ran first.main. CodeSpace's gitlink stays6b9826e.The #79 fix: novelKR/CodeSpace#81 at
8afb701, ready for review, CI green.cs79-fix-2026-10-0157c724a6…andcs79-verify-2026-10-01ea3e1e43….Proposed first CS-RG unit: CSRG-U1, an opt-in DevGuard status connection in CodeSpace. It is not started and needs the owner's separate approval.
devguard-clientanddevguard-contract, whose dependencies areserde,serde_json,sha2andlibc, with no Codex.Hello,Authenticateas an operator-provisioned consumer,Status.test-fixturesauthority, each of these cases is reported without affecting CodeSpace's operation: available, unavailable, wrong peer UID, protocol or capability mismatch, and credential refused.BeginLaunchand permits, the launch helper, carriers, observation and reaping, execution ownership, and any Codex pin change. These wait for the D6 and carrier decisions, which will weigh #79's comparison and docs: D6 option (b) client-session analysis (paper, non-normative) #21.Open decisions:
State.
mainisf1f9084. CodeSpacemainis1bf99cf, with gitlink6b9826e.codex/exp-a-preparationstays atb50e437, local only.Next allowed action: the owner's decisions above.
novelKR commentedon Oct 2, 2026
2026-10-02 06:54 UTC. Pointer: novelKR/CodeSpace#81 is at a new exact head,
2629f1875a6ac16c32c23309e948af357f20003e, hardened and verified against the 0.154 baseline. Its CI is green, including the macOS leg that now runs its tests. It awaits exact-head merge approval. It is an independent CodeSpace defect fix, not CS-RG progress; CSRG-U1 is not started. Details: CodeSpace #79.novelKR commentedon Oct 2, 2026
2026-10-02 14:03 UTC. CSRG-U1 is merged in CodeSpace as
f0a3322. It meets the owner's U1 scope with five deviations. U2 is not started.This is a delta since the #81 pointer.
Owner direction of 2026-10-02. It was given in chat; this comment, written through the shared account, is not independent proof of it.
#81 merged. The owner merged novelKR/CodeSpace#81 at
2629f18asdcf8c51.mainCI passed (run 36981488060).merge-cs81-2026-10-02d6b4b77e51712488f2d701542e433c24d817b1ced735b2f391d8b4ac48e1298c.U1: novelKR/CodeSpace#82, merged by the owner at 12:52Z.
595f7d2on basedcf8c51; the merge commit isf0a3322, with tree76cee3c.f1f9084(devguard-clientanddevguard-contract); Codex6b9826e, unchanged.devguard) and at run time (--devguard status).workspace_infocall opens one bounded session (connect,Hello,Authenticate,Status) and reportsworkspace_info.resource_authority.devguard, participationstatusandgoverns_execution: false.available,unavailable,untrusted_authority,incompatible,credential_refused,credential_unavailable.595f7d2, 36999727236 passed all 17 jobs.mainCI 37009319958 passed.codespace-devguard,devguard-clientanddevguard-contract, and the stripped release binary grows 481,408 bytes (+1.7 %).WorkspaceInfoschema and the flags are unchanged (tests), and the existing suites pass.Authenticate. Tests show it in no flag, environment, status, error or log, and in no child's environment or output.Deviations from the U1 scope, recorded in
VERIFY.md:report.reasonpasses DevGuard's free-text readiness reason to MCP clients, which can include an administrator's closure text.error_code,capabilitiesandrolecarry DevGuard's wire names in strings, not CodeSpace-owned enumerations.devguard-daemon,devguard-core,devguard-macos) out of product graphs; today they are only development dependencies.main; it holds by construction and by unit tests.Known limitations.
Evidence (DevGuard, local):
csrg-u1-2026-10-02d4e79461e6ee2667f6cd5dae2e1b507776b2cf6a10d719c2639d741f717207b6.Open decisions:
U2 includes recording CS-RG as
in-progressin this repository's ledger and notices.State.
mainisf1f9084. CodeSpacemainisf0a3322, with gitlink6b9826e.Next allowed action: the owner's decisions above.
novelKR commentedon Oct 7, 2026
2026-10-07 UTC. CSRG-U1 hardening and CSRG-U2 are merged in CodeSpace, and this repository's ledger records CS-RG as in progress. U3 is next.
This is a delta since the U1 comment. Cold start: read this comment first, then that one. Then read the handoff record
docs/handoff/2026-10-03-cs-rg-session-handoff.md.Owner direction since 2026-10-02 14:03 UTC. It was given in chat and on decision cards; this comment, written through the shared account, is not independent proof of it. The verbatim instructions are in
docs/handoff/, added by #23.in-progress.mainCI;main;Merges, each at its exact head after the owner's approval:
mainCI4be00f63206865, 2026-10-02 14:42Z3b1ed5902cf905, 2026-10-03 09:59Z2239085ebed574, 2026-10-03 14:02Z8c2f59a6599cd6, 2026-10-03 17:48Zin-progress, units U1–U6b651a74334472a, 2026-10-03 19:35ZEvery scheduled run on both
mains has passed since then: CodeSpace CI runs 207–210 and DevGuard runs 96–99, the latest on 2026-10-06.U2 (novelKR/CodeSpace#84). The process that owns CodeSpace's executions registers itself with DevGuard. Nothing is admitted or launched.
--runtime-bin: the worker the gateway starts, never the gateway.--runner-socket:unsupported_mode.resources.participationisrequiredrefuses every new execution withRESOURCE_POLICY_UNSUPPORTED, before any approval, lease or process exists. Nothing falls back tooff, status-only or legacy execution.CredentialHandoffdescriptor and consumes it at start. The secret appears in no argument, environment, log or status.--runtime-bin, against an authority with native evidence (macOS). On Linux, registration isincompatibleuntil DG-LINUX.f1f9084and Codex6b9826eare unchanged.Found while validating U2, filed separately:
credential_unavailableuntil it is restarted. The launch helper reads its one-time permit the same way. A decision is wanted before U4.Other changes:
claude/magical-euler-nvqrxpholds #84's temporary macOS diagnostic workflows, in 10 commits not onmain.Open decisions from the U1 comment:
Next: CSRG-U3, admission, attempt identity and the pre-spawn slot lifecycle, from the U3 section of the 2026-10-02 order.
in-progress.State.
mainis334472a. Its code and contracts are unchanged sincef1f9084.mainisebed574, with Codex gitlink6b9826eand DevGuard client pinf1f9084.novelKR commentedon Oct 7, 2026
2026-10-07 10:30 UTC. CSRG-U3 is merged in CodeSpace, and novelKR/CodeSpace#85 is fixed. U4 has not started; it waits for the owner's separate approval.
This is a delta since the 04:07 UTC comment. Cold start: read this comment first, then that one.
Merges, each at its exact head, by the owner:
mainCI26f561e579c075, 2026-10-07 08:23Zactive991111285337d1, 2026-10-07 08:25Z4af3febd543ea5, 2026-10-07 10:02Z#85 (novelKR/CodeSpace#87). A managed pipe child that dies from a signal CodeSpace did not send is now reported as
termination: signaled, withsignal {number, name}and no exit code. Atty: truechild still reports exit code 1, because the pinned Codex PTY reduces a signal death to that. Runner wire protocol 6 → 7. This meets the order's "resolve #85 before U4 at the latest".U3 (novelKR/CodeSpace#88): admission, attempt identity and the pre-spawn slot lifecycle.
requiredworkspace under--devguard register: authorization and the workspace lease, then a CodeSpace process slot taken before spawn, then DevGuardRegisterandAdmit, then a one-shot prepared execution.MANAGED_LAUNCH_UNAVAILABLE. No governed payload is spawned, and nothing runs through a non-governed path.--runner-socketis refused before any approval or lease.unknown, never a refusal: oneLookup, aCancelif the attempt is found prepared, and never a secondAdmit. A test against DevGuard's real authority shows a timed-outAdmitthat DevGuard did record.resources.requestdefaults to 250 m CPU, 256 MiB and 32 tasks. The 3-core macOS CI runner gives DevGuard about 480–500 m CPU of work capacity, so the first default, 1000 m, would be denied there.prepareop is additive, behind aHello.admissionflag, so the runner wire protocol stays 7. DevGuardf1f9084and Codex6b9826eare unchanged, and no dependency changed.Bookkeeping. #26 records CSRG-U3 as
merged-verified. Its CI passed, and it waits for the owner's merge.Open decisions:
BeginLaunch, permits, launch helper, carriers): needs the owner's separate approval.State.
mainisd543ea5, with Codex gitlink6b9826eand DevGuard client pinf1f9084.mainis85337d1. Its code and contracts are unchanged sincef1f9084.Generated by Claude Code
novelKR commentedon Oct 8, 2026
2026-10-08 14:00 UTC. #24 is fixed and CodeSpace pins the fix. CSRG-U4 has started on the owner's approval.
This is a delta since the 10:30 UTC comment of 2026-10-07. Cold start: read this comment first, then that one.
Owner direction since 2026-10-07 10:30 UTC. It was given in chat and on decision cards; this comment, written through the shared account, is not independent proof of it.
Merges, each at its exact head:
mainCImerged-verified5199d2c035936d, 2026-10-07 11:40Z3ae5dc26e7e065, 2026-10-07 16:22Zf1f9084→6e7e0656fe91e7e0610c4, 2026-10-08 11:25Zactivef7d937cdf3c537, 2026-10-08 13:58Z#24 (#27). The client's credential reader no longer fails just because 250 ms have passed.
pollno longer waits, and a pass that makes no progress fails, so a writer that never writes or never closes still fails at 250 ms.f1f9084and6e7e065the only code change iscrates/client/src/credential.rs; the rest is documentation and the ledger.Pin (novelKR/CodeSpace#89). CodeSpace links
devguard-client,devguard-contractand the dev-onlydevguard-daemonat6e7e065. Only the DevGuardsourcelines of its three lockfiles changed. Codex stays6b9826e.0.1.0-5daee5d-b3fa569e, the DG-1 qualified release, keeps the old reader, including the launch helper's permit read. A new release, which would also need its own SLO qualification, is a separate owner decision.CSRG-U4 has started: managed launch, with
BeginLaunch, the one-time permit, the launch helper and carriers.Open decisions:
State.
mainisdf3c537. Its code is that of6e7e065.mainise0610c4, with Codex gitlink6b9826eand DevGuard client pin6e7e065.Generated by Claude Code
novelKR commentedon Oct 9, 2026
2026-10-09 14:45 UTC. CSRG-U4 is merged in CodeSpace. U5 has not started; it waits for the owner's separate approval.
This is a delta since the 14:00 UTC comment of 2026-10-08. Cold start: read this comment first, then that one.
Owner direction since 2026-10-08 14:00 UTC. It was given in chat and on a decision card; this comment, written through the shared account, is not independent proof of it.
Merges, at the exact head:
mainCIc1c78593e5e3e8, 2026-10-09 14:26ZU4 (novelKR/CodeSpace#90): managed launch.
BeginLaunchis sent exactly once in a bounded owner session. Only a permit that arrives with this owner's committed record of the attempt is a grant. CodeSpace then starts this repository'sdevguard-launchthrough its own pipe or PTY spawner, as its direct child, and reads the helper's transcript to its end.exec_commandon a governed workspace returns aprocess_idwithdispatch_status: confirmedorunknown, or a refusal. A lost answer gets oneLookupand never a secondBeginLaunch. Arequiredworkspace never runs a command outside DevGuard.inherited_fdson a PTY. Tests against the fixture authority and the real helper, including 6 rounds of concurrent launches beside ordinary children, show the payload and every other child hold nothing beyond stdio.--devguard-launch-helper PATHwith--devguard register. The path is checked before every launch (owner and write permissions of the file and its directories). Without a helper, U3's admit-then-refuse stays.--runtime-bin; pipe and PTY. Linux registers nobody until DG-LINUX.launchop behindHello.launch, so the runner wire protocol stays 7. DevGuard6e7e065and Codex6b9826eare unchanged.Seen while validating U4, for U5. This repository releases a launched attempt only once its reconciler has seen the scope end, 0.73–0.95 s after the processes ended on the owner's Mac. The 3-CPU macOS CI runner holds nine 50 m attempts (480 m of work capacity), so a burst of short governed commands can be refused with
resource_unavailablealthough earlier ones have ended. U4's D6 test now waits for each round's release; faster release belongs to CSRG-U5's release paths.Bookkeeping. #29 records CSRG-U4 as
merged-verified. Its CI passed, and it waits for the owner's merge.Open decisions:
0.1.0-5daee5d-b3fa569ekeeps the old permit reader, so a governed launch through its helper can be refused under load; it never runs the command outside DevGuard.State.
mainis3e5e3e8, with Codex gitlink6b9826eand DevGuard client pin6e7e065.mainisdf3c537. Its code is that of6e7e065.Generated by Claude Code
novelKR commentedon Oct 11, 2026
2026-10-11 15:30 UTC. CodeSpace's test-timing cleanup is merged, and CSRG-U5 has started on the owner's approval. Updated 15:39 UTC: #30 is merged.
This is a delta since the 14:45 UTC comment of 2026-10-09. Cold start: read this comment first, then that one.
Owner direction since 2026-10-09 14:45 UTC. It was given on decision cards; this comment, written through the shared account, is not independent proof of it.
Merges, each at its exact head:
mainCImerged-verified615186f79cb66c, 2026-10-09 14:49Zf91380a470069c, 2026-10-11 15:14Zactiveb33994d668750b, 2026-10-11 15:37ZCleanup (novelKR/CodeSpace#91). macOS checks a newly placed executable on its first exec: on the owner's Mac a worker binary that had never run took 1.9–2.8 s to accept on its socket, against 9 ms once it had run.
--runtime-bin, so its first start after the worker is built or installed no longer fails withworker socket not ready. A worker that exits first still fails the start at once.6b9826e, DevGuard6e7e065), the runner wire protocol 7 and every contract. The Credential reader rejects an already-buffered secret when its thread stalls for 250 ms #24-erapast_the_credentialsession retries in CodeSpace's tests stay, by the owner's choice.Seen while validating #91, not fixed. A CodeSpace adapter test failed in 2 of 8 local macOS runs, each right after a full run, with "another authority owns this state directory" from this repository's
TestAuthoritybootstrap. It was not reproduced in 30 loaded runs or in CI. If U5's runs show it, it gets root-caused there.CSRG-U5 has started: observation, reaping, release, approvals and the no-replay lifecycle, on the owner's Mac, from the U5 section of the 2026-10-02 order.
waitpid, but whichever runs first reaps, so this repository cannot be sure to observe the exited root first. U5 is to leave one reaper per child and have this repositoryObservethe exited root before it is reaped, with the pinned client'sobserveandterminate: no DevGuard pin change.Suspectand charged until a reboot, and is never falsely released. Descendants already seen stay tracked. The owner is choosing between keeping this as a documented limitation (recommended), a CodeSpace-owned PTY through Codex's publicspawn_from_driver, and a pre-reap hook in Codex with a pin change.024e477) leaves one reaper per pipe child: the timeout and termination record their intent and signal only a child that has not exited, which they check withwaitid(WNOWAIT)without reaping it.Bookkeeping. #30 records CSRG-U5 as
activeand is merged (above).Open decisions:
State.
mainis470069c, with Codex gitlink6b9826eand DevGuard client pin6e7e065.mainis668750b. Its code is that of6e7e065.Generated by Claude Code
novelKR commentedon Oct 11, 2026
2026-10-11 17:50 UTC, edited 18:05 and 23:35 UTC and 2026-10-12 05:10, 05:40, 07:30, 10:16 and 12:05 UTC. CSRG-U5 is merged and recorded here, and governed PTY executions are now observed before the reap, through the Codex PTY pre-reap observer carried in CodeSpace as a recorded patch file.
This is a delta since the 15:30 UTC comment. Cold start: read this comment first, then that one.
Owner direction since 15:39 UTC. It was given on decision cards and in the project thread; this comment, written through the shared account, is not independent proof of it.
openai/codexat the officialrust-v0.154.0, CodeSpace applies the recorded patch and checks the resulting tree, and no fork is made.Merges, each at its exact head:
mainCI7b65c760c21a7f, 2026-10-11 17:23Zmerged-verified6bc7654cd0681c, 2026-10-11 18:01Za75d0303d051fa, 2026-10-11 23:17Z6481e77d4ea680, 2026-10-12 04:44Z634a19f181a020, 2026-10-12 04:44Z0c43653152a2cf, 2026-10-12 05:34Z7727d247024f74, 2026-10-12 09:56ZCSRG-U5 (novelKR/CodeSpace#92).
waitid(WNOWAIT).Observe, 2 s bound) and again after it.granted. Any other outcome consumes it, and nothing is replayed.Suspectand charged, never falsely released. Since pty, runner, server: observe governed PTY executions before the reap (CSRG-U5) CodeSpace#95, governed PTY executions are observed before the reap too (below).6b9826e, DevGuard6e7e065.Codex PTY pre-reap observer (option 3).
rust-v0.154.0, ported from W3 experiment B to both Unix PTY paths. The child's single waiter sees the exit withwaitid(WNOWAIT), gives a registered observer one bounded opportunity, then reaps as before and reportsCompleted,TimedOut,FailedorUnavailable. Without an observer nothing changes.6e7e065.docs/upstream-patches.md). The upstream feature request was filed on 2026-10-12 as openai/codex#53298, unchanged from the reviewed draft. This settles Decision 2 of the W3 decision packet, the upstream proposal for B.Governed PTY observation (novelKR/CodeSpace#95).
Observe); then it reaps, and the root is observed again after the reap. Ungoverned PTY executions spawn as before.6e7e065, whose reconciler is paused (pause_reconciler) or whose lock is held (hold_authority) around the exit: a surviving descendant keeps the attempt charged until it ends, and a stalled observation leaves itSuspect. Verified on the owner's Mac in a minimal environment, and by CI on Linux and macOS.Bookkeeping. #31 records CSRG-U5 as
merged-verifiedand is merged. #32 updates the CS-RG plan's dated note for PTY observation and is merged. novelKR/CodeSpace#94, merged, keeps the gateway's descriptor tests from printing a child's environment when they fail; it is test code only. novelKR/CodeSpace#96, merged, links the filed feature request from CodeSpace's patch record; it is documentation only.Open decisions:
State.
mainis7024f74, with Codex gitlink6b9826eplus the recorded patch, and DevGuard client pin6e7e065.mainis152a2cf. Its code is that of6e7e065.Generated by Claude Code
novelKR commentedon Oct 12, 2026
2026-10-12 14:45 UTC, edited 15:07, 15:30 and 17:10 UTC, 2026-10-13 09:51, 11:36, 16:23, 17:03 and 18:02 UTC, and 2026-10-14 07:37 UTC. CS-RG is qualified on macOS for one exact combination, and the ledger records it (#35). A new DevGuard release built from
6e7e065is installed on the qualification host under a policy with acodespaceconsumer, and since 2026-10-13 it is SLO-qualified and promoted; CSRG-U6 qualified CodeSpaceca306eeagainst it. The work stops here: P1-RECOVERY needs the owner's separate authorization.This is a delta since the 2026-10-11 17:50 UTC comment. Cold start: read this comment first, then that one.
Owner direction since 2026-10-12 09:55 UTC. It was given in the project chat and on a decision card; this comment, written through the shared account, is not independent proof of it.
6e7e065and install it on the owner's Mac now. The measurement of about five hours starts separately, when the Mac can be set aside.codespaceconsumer as proposed (below). At 16:15 the owner chose to run the step that creates the secret and editshost.tomlthemselves, and ran it at 16:22. At 16:31 they chose to let the Mac's session restart and verify through narrow permission rules for one reviewed script, and added them at 16:52.The new DevGuard release.
0.1.0-5daee5d-b3fa569ewas built from5daee5d(DG1-C11), which still has Credential reader rejects an already-buffered secret when its thread stalls for 250 ms #24: the credential reader can reject an already-buffered secret when its thread stalls for 250 ms, anddevguard-launchreads its one-time launch permit through it. fix(client): accept a secret that arrived before the read deadline #27 fixed it as6e7e065, which is CodeSpace's DevGuard pin. Between5daee5dand6e7e065the packaged binaries' source changes only incrates/client/src/credential.rs; everything else is the C12 qualification crate, scripts and tests.scripts/package.py --offlinein a clean worktree at6e7e065,devguardd stage, thendevguard upgrade, which closes admission, drains charged work for up to 60 s, backs up the journal, verifies the new release and reopens admission. Thendevguardd status,devguard doctorand a governed Cargo build. If the new release cannot be verified, the upgrade starts the previous one again, andrepair --use last-known-goodreturns to it if nothing serves.scripts/measure.py macosmeasured it on 2026-10-13 andpromoterecorded it (below); docs: record release 0.1.0-6e7e065-94d85365 as DG-1's qualified release #34 records it here as DG-1's qualified release.Installed, 14:42 UTC.
0.1.0-6e7e065-94d85365,MANIFEST.jsonSHA-2564535b52cc6466e892ebee2a2ad52f396e6b7520d7560e7e25c20ffa3647ed0df, built byscripts/package.py --offlinefrom a clean worktree at6e7e065(tree2a10127). Wire version 1, protocol 1, journal and configuration schema 1, the same capabilities as the previous release. The installed binaries match the manifest.upgradereplaced0.1.0-5daee5d-b3fa569e: the drain took 50 ms with nothing charged, the journal was backed up underbackups/, and the previous release is the last known good.devguardd statusanddevguard doctor --require admission,registration,macos-cooperativepass.docs/operations.md, "Startup state"), so after the restart every governed execution on the host was refused; the old service had started with normal memory and was Constrained under the same warning. The governed smoke (a Cargo build ofdevguard-qualify) was refused 66 times in 10 minutes and did not start.doctordoes not check current pressure. A rollback would restart a service too and would not help. Service restarts and the measurement need normal memory.devguard-qualifybuilt in 7 s with exit 0, and the attempt was released (scope_terminated, no tracking loss). Memory went back to warning right after; the service stays Constrained, which admits up to half the work capacity. Onedoctorrun in that state reported registration false because its client missed a reply deadline while the service had served the request; the next run passed.The
codespaceconsumer, 16:54 UTC.host.tomlgained one table: consumercodespace, generationcodespace-g1, rolecontrol_service, one instance, a static reservation of 150 mCPU, 512 MiB and 40 tasks, and the digest of a new 64-character secret in a private file. The rest of the file is byte-for-byte the backup, and DevGuard's own parser accepted it before the restart.launchctl kickstart -kat 16:54:26 while nothing was charged and memory was normal: the same release, healthy within 3 s. With normal memory at start the service left Critical at its first valid sample, so nothing was refused this time.6c0e182b…to8cbb019b…, the value DevGuard's parser computed from the new file, so the service serves it.doctoris satisfied with the same capabilities.7024f74with--features devguardconnected twice and ran nothing: under--devguard statusit reported the authority available without governing executions; under--devguard registerit registered in process with its own PID. Afterwards nothing was charged and the instance was retired.The measurement, 2026-10-13.
scripts/measure.py macosfrom a clean worktree atea98d7f(protocol-2'smeasure.pyand fixture) in a minimal environment with Rust 1.95.0. It ran a rehearsal first, the full protocol only if the rehearsal's sole reason was its short durations, andpromoteonly if the run qualified.promoteverified that the service runs the release and wrote its qualification record (SHA-256fd4fed31…17a4). Both evidence directories are sealed on the Mac, with no credential digest or token in them.CodeSpace harness. novelKR/CodeSpace#97 adds the qualification harness, the protocol it implements and the decision record that keeps participation
offas the compatibility path; nothing is qualified by it. It merged at8ed8b08as2117800. The Mac's check on 2026-10-13 found three faults in the harness, fixed before the merge: it expected exit code 1 for a governed PTY process's signal death, which is reported as 128 plus the signal; it read DevGuard's instances before DevGuard had seen their owner gone and retired them; and it started work while DevGuard still kept admission closed after a host sample that went stale while the authority was held. It also found one fault in CodeSpace: inudsmode, gateway shutdown killed the worker outright, so a governed pipe execution outlived the gateway until it ended by itself, about 30 seconds later, and only then was its attempt released. novelKR/CodeSpace#98 fixes it: the gateway closes the worker's connection and waits for the worker, which ends its processes as it exits. On the Mac theudsshutdown case then passed in 3.3 s, where it had taken 33.2 s, and the fault, matrix and authority suites passed in both runner modes. It merged atb74e5c2asca306ee.Ledger. #33 records CSRG-U6 as
active, as of 2026-10-12, in the same eight files as #30. It merged at8fca59casea98d7f, and its post-merge CI passed (38265196143). #34 records0.1.0-6e7e065-94d85365as DG-1's qualified release, with the re-measurement's result beside protocol-2's. It merged at4a1d6b3asc077c74, and its post-merge CI passed (38378641277). #35 records CS-RG asimplemented, qualificationmacos-qualified, with its qualified combination, and CSRG-U6 asmerged-verified, as of 2026-10-14: the ledger,AGENTS.md,docs/milestones.mdand, in English and Korean, the planning index, the CS-RG plan, the verification matrix and the consumer-readiness gates. It merged at7653c14as970acf5, and its post-merge CI passed (38529213032).CSRG-U6 scope, from the 2026-10-02 order:
off/required, shortage, authority unavailable and the rest of the order's list), and decide the legacyoffpath.requiredgovernance is reported as unsupported until DG-LINUX. After CS-RG the work stops; P1-RECOVERY needs separate authorization.Why the consumer came first. The service reads
host.tomlonly at start, and promotion refuses a policy (thehost.tomlhash, the configuration fingerprint and the capabilities) other than the measured one, so the consumer had to be in place before the measurement. The reservation leaves the measurement's load (about 2,600 mCPU, 4 GiB and 48 tasks) inside the Constrained capacity. Changing it later means retiring the instance and measuring again.Qualification runs, 2026-10-13.
candidatesuite, on CodeSpacemainatca306ee: the commit and the SHA-256 of its code tree, the DevGuard client pin6e7e065, the Codex gitlink with the recorded patch checked, the release0.1.0-6e7e065-94d85365with every installed binary matching its manifest, the policy (configuration fingerprint8cbb019b…,doctorsatisfied, thecodespaceconsumer), DG-1's qualification record of the release under the same policy, and Rust 1.95.0. The cloud checked the record and recomputed the code tree hash from the commit; they match.udsonly), and the authority-failure suite all five phases. A control rehearsal was inconclusive only because its durations are below the protocol, as designed. Each run is sealed on the Mac andverifyrecomputed its verdicts from the raw files.validate-upstream.py allpassed every stage it runs on macOS: 782 tests passed, none failed and 9 were ignored. Linux isolation does not run on macOS and is left to CodeSpace's Linux CI. The macOS-onlymacos-coreandmacos-fork-racepassed in a second run: 189 tests passed, and all 400 fork-race trials passed, 72,946 children each with an exit code and no crash report. The protocol names both stages together withallin one command, butallreplaces the other stage names, so they ran separately; the protocol's text is corrected with the final report, a documentation change that keeps the candidate. Both runs are sealed on the Mac.Control-path measurement, 2026-10-13 to 10-14.
controlsuite on the candidate's binaries in a minimal environment with Rust 1.95.0, against the installed release under DG-1's cold load. It ran a rehearsal first, and the full protocol only if the rehearsal's sole reason was its short durations.codespacereservation (at most 19.3 MiB, 16 threads and a mean of 2.5 mCPU), and the service kept pid 23023 throughout.verifyrecomputed their verdicts from the raw files (MANIFEST.jsonac79024e…039fand7706aac7…e9be). A scan of their 1,479 files found no credential digest, token or environment dump. Afterwards nothing was charged, no lease was open and every CodeSpace instance was retired.ca306ee(23:25–23:42 UTC) passed every job, Linux isolation included.Report. novelKR/CodeSpace#99 adds the qualification report (English and Korean), the supported modes, adoption and rollback steps, and the protocol's corrected regression command. It changes documentation only, so the candidate stays. It merged on the owner's approval at
68e274das241cf6c; its post-merge CI passed and the documentation site deployed.Next. None: CS-RG is complete, and the work stops here. P1-RECOVERY starts only with the owner's separate authorization; DG-LINUX, DG-CACHE and DG-ADAPTERS stay not started.
Open decision: none for CS-RG.
State.
mainis241cf6c, whose code tree is the candidateca306ee's, with Codex gitlink6b9826eplus the recorded patch, and DevGuard client pin6e7e065.mainis970acf5. Its code is that of6e7e065.0.1.0-6e7e065-94d85365, DG-1's qualified release since 2026-10-13, under a policy with thecodespaceconsumer; its last known good release is0.1.0-5daee5d-b3fa569e.Generated by Claude Code
novelKR commentedon Oct 14, 2026
2026-10-14, P1-RECOVERY started. On 2026-10-14 the owner directed P1-RECOVERY's implementation in CodeSpace as one pull request per unit, P1R-C01 to P1R-C06, merged in order. It is tracked in novelKR/CodeSpace#101, not here; whether to close this issue and novelKR/CodeSpace#76 is decided separately.
9b19078asmain165cb84; post-merge CI green.970acf5).Generated by Claude Code