Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
5b8c41d
docs: refresh conversation affinity integration layer
invalid-email-address Sep 5, 2026
059de1b
fix: preserve Command Code session affinity
yansigit Sep 5, 2026
6b00fa8
test(command-code): cover affinity through recovered history
invalid-email-address Sep 5, 2026
92533a9
docs: amend A stack with deterministic Windows verification
invalid-email-address Sep 5, 2026
5a88530
fix(routing): evaluate effective provider capabilities
devswha Sep 5, 2026
20ed03d
fix(routing): exclude unresolved policy transports before selection
devswha Sep 5, 2026
b72155e
fix(routing): reject missing and disabled policy providers
invalid-email-address Sep 5, 2026
71c086b
test(routing): exclude unavailable providers in runtime and dry-run
invalid-email-address Sep 5, 2026
ff50244
Merge branch 'codex/a-03-recovery' into codex/a-04-affinity
invalid-email-address Sep 5, 2026
7f73134
Merge branch 'codex/a-04-affinity' into codex/a-05-capabilities
invalid-email-address Sep 5, 2026
7ff811c
test(responses): keep replay credentials stable across clock boundaries
invalid-email-address Sep 5, 2026
18a1dce
Merge branch 'codex/a-04-affinity' into codex/a-05-capabilities
invalid-email-address Sep 5, 2026
efd20b1
docs: plan bounded Unix probe cleanup verification
invalid-email-address Sep 5, 2026
af33336
test(responses): keep replay credentials stable across clock boundaries
invalid-email-address Sep 5, 2026
51057b6
fix(codex): observe probe group disappearance after EPERM
invalid-email-address Sep 5, 2026
95fbcbc
test(codex): cover transient and persistent probe group EPERM
invalid-email-address Sep 5, 2026
d0029c5
Merge branch 'codex/a-07-macos-verification' into codex/a-04-affinity
invalid-email-address Sep 5, 2026
8647ac2
Merge branch 'codex/a-04-affinity' into codex/a-05-capabilities
invalid-email-address Sep 5, 2026
f4bb6da
test(server): budget direct-management probe startup and requests
invalid-email-address Sep 5, 2026
bc1e7e1
Merge branch 'codex/a-07-macos-verification' into codex/a-04-affinity
invalid-email-address Sep 5, 2026
b59a34c
Merge branch 'codex/a-04-affinity' into codex/a-05-capabilities
invalid-email-address Sep 5, 2026
a479430
test(codex): budget transition probe startup from identity lookups
invalid-email-address Sep 5, 2026
782e21e
test(codex): include parent setup in locked-probe watchdog
invalid-email-address Sep 5, 2026
5097e66
test(quota): join observation work before resetting fixtures
invalid-email-address Sep 5, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions devlog/_plan/260906_a_macos_verification/000_plan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Final macOS verification repairs

C4 spec-satisfaction repair of Unix probe cleanup classification. Consume the already reviewed replay-fixture commit7ff811ced to keep caller identity stable in the shared verification baseline. Main owns this new foundation PR below the two remaining A layers. No local suite/typecheck/build; all execution uses isolated remote Bun1.4.0 and CI. Existing GitHub/SSH identities and own branches only; no account/service/release changes. The only live processes exercised are temporary launchers created by the regression fixture. No additional termination signals or widened permissions are authorized. A2h checkpoint reassesses progress; no token/cost cap was specified. Detailed OS traces stay in ignored scratch.

Goal: initial EPERM during an already-owned probe-group teardown does not prevent bounded observation of that group's disappearance. Success still requires an observed ESRCH. Persistent permission uncertainty or live groups continue to refuse installation and restore the launcher. Keep the existing one-second cleanup bound, one SIGKILL attempt, diagnostic sanitation and rollback guarantees.
11 changes: 11 additions & 0 deletions devlog/_plan/260906_a_macos_verification/010_cleanup_plan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Diff-level cleanup plan

1. Carry reviewed commit7ff811ced (test-only replay caller snapshots, forced second boundary and changed-token isolation) onto this dev foundation. Resolve only contextual offsets; do not introduce affinity production code or its cohort matrix.
2. MODIFY src/codex/shim.ts terminateUnixProcessGroup: retain the single initial SIGKILL. Save EPERM rather than immediately throwing it; other non-ESRCH errors still throw. Use the unchanged one-second passive signal-0 observation loop. An observed disappearance succeeds; if the group remains or cannot be observed, rethrow saved EPERM, otherwise retain the existing generic nontermination error. No new signal retry, timeout increase, cache change or test-only production export.
3. MODIFY tests/codex-integration/codex-shim.test.ts timeout rollback fixture. Keep its real native case, exact timeout message, restored launcher/no backup/no marker, native group-missing and child-dead/zombie assertions. Add scoped parent-only process.kill observation for its recorded negative PGID; unrelated calls delegate unchanged and spawned probes have independent native bindings.
4. Deterministic cases: SIGKILL throws sentinel EPERM then signal-0 EPERM→ESRCH must produce ordinary timeout refusal; persistent EPERM and continually-live signal-0 must retain fail-closed EPERM diagnostics. Assert one SIGKILL, actual passive probes, and the existing bounded runtime. Restore spies before native process cleanup proof; never count synthetic ESRCH as real cleanup. Passive bounded joining of the known fixture group is allowed for injected cases; native case retains its original immediate cleanup assertions. Finally restore environment/mocks and clean only fixture-owned paths/processes.
5. Emit bounded pid/state/error-code diagnostics on failure, with no commands, credentials or environment dumps. Actual CI EPERM is observed; the zombie-only-group explanation is a hypothesis, not claimed captured fact.
6. Remote proof: focused shim and replay/cache/security tests plus typecheck. Revert only the EPERM observation correction in remote scratch; the disappearing-group control must fail its exact diagnostic assertion. Candidate must pass transient, persistent and live controls, the native timeout integration and all original rollback checks. Restore source bytes. Independent implementation/security audit then exact-head full CI before admin landing.
7. Cascade verified foundation into affinity then capability, retain source-author commits, update PR bases before auto-deletion and reverify their current heads. No original remaining PR is closed before its change is on dev. Full current-head CI and final dev proof remain mandatory.

Cleanup completion is not installation approval: existing timeout/recursive/descendant markers and the pre-cleanup group-survival result still refuse the launcher. The change only permits bounded absence proof before choosing the existing refusal diagnostic. No previously unsafe launcher is accepted.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Focused verification watchdog correction

ClassC1: one test file, no production behavior or public API change. WindowsCIjob101361741694 hit the fixture's flat3000ms childwatchdog before routing assertions. The same child performs imports, an unbounded control fetch, two750ms probes and a2000ms read. The log cannot identify which stage consumed time.

Use the existing CI-watchdog owner for a derived whole-child budget:3000ms startup +2000ms bounded control +750ms identity +750ms readiness +2000ms read +1000ms exit =9500ms. OnCI the existing30s/45s floor applies. Give the test itself the child budget plus1000ms cleanup. Add fixed child phase markers and bounded phase/request-count diagnostics, never capability values. Keep every exact routing/header assertion and existing per-operation budgets. Bound only the previously unbounded control fetch.

Verify remotely on pinnedBun: originalfilechecks, an explicit3500ms pre-import delay underCI that succeeds withthecorrectbudget and fails withtheold3000ms guard, and an intentional memory-read misroute that fails the unchangedproxy/capability assertions despite valid-looking responses. No local execution. This is a causal verifier fix within the ongoing final landing repair loop, not an unconditional rerun or production timeout increase.
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Transition probe readiness budget

The next full Windows verification of the foundation (run33988432596, job101366851939) had one failure: the two-process transition initialization fixture reached its ten-second readiness deadline before both children published their barriers. No transition assertion ran. The same fixture passed in the fully verified stack tip33988434944. The failed log is retained; the exact slow operation on that runner was not captured.

The harness nevertheless has a concrete budget defect: before publishing ready, each Windows child resolves the effective SID and the known folder through two separately bounded thirty-second PowerShell calls. A ten-second enclosing deadline can reject valid operation within those existing product limits. This is a C1 fixture-only follow-up within the final landing cycle.

Derive the child budget from both identity calls plus startup headroom, use the existing CI watchdog on other platforms, and scale each outer test deadline to its sequential phases. Detect an exited child while waiting for a barrier so a crash cannot masquerade as slow startup, and await child exit before deleting its sandbox. Preserve every real process race, lock refusal, winner count, generation and database assertion; no product timing changes.

Verification requires remote pinned-runtime focused tests and typecheck, a delayed-ready control that passes the new budget and fails the old ten-second budget, an early-exit diagnostic control, independent review, and full exact-head cross-platform CI on the final stacked follow-up. No local test, typecheck or build runs.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Join asynchronous quota observations in fixtures

The final top's Windows1 verification (run33990109175, job101372136435) found a concrete fixture ordering defect. The first two quota-reset seam assertions saw no event after six microtasks and five milliseconds. A later test that used the existing explicit drain received those earlier scheduled and surprise events instead. The fixed sleep did not join cold lazy imports or the serialized observation chain, and fixture reset replaced the capture sink while old work was still pending.

This C1 test-only follow-up uses the existing flushQuotaObservationsForTests seam. Join observations before assertions; join before resetting a fixture or replacing its sink; and join asynchronous baseline forgetting after clearAccountQuota. Keep all event counts, reset kinds, account separation and no-notification assertions unchanged. Production quota logic and timing remain untouched.

Verify on the remote pinned runtime with the full focused file and typecheck. Delay the existing observation/forget chain in scratch to prove the new drain still passes and the old five-millisecond fixture fails. Restore every temporary mutation. Require independent review and final exact-head CI before integration. No local tests, builds or typechecks.
3 changes: 3 additions & 0 deletions devlog/_plan/260906_a_replay_credentials/000_plan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Stable replay-fixture caller identity

C2 spec-satisfaction repair of a concrete macOS control failure. Two logical replay conversations generated a new synthetic credential for each request; a second-boundary change made them different callers. Preserve production credential scope and every existing response/cache assertion. Only tests/server/server-agent-task-recovery-replay.test.ts and this numbered unit change. No local tests/typecheck/build; pinned remote Bun1.4 isolated regressions, deterministic old/new control, typecheck and current-head CI before final landing. Owner-authorized no-verify pushes/admin merge remain scoped to A. No credential or service changes. Same session goal/ledger owns this extra mandatory cycle; no completion criteria removed.
9 changes: 9 additions & 0 deletions devlog/_plan/260906_a_replay_credentials/010_replay_plan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Replay fixture diff plan

MODIFY tests/server/server-agent-task-recovery-replay.test.ts only:

1. In the two original real-handler tests (cached NEW_TASK continuation and MESSAGE replay), capture one headers object before the first post and reuse it for the second. Keep status200, one recovery, two provider bodies, plaintext-present and ciphertext-absent assertions.
2. Scope a Date.now spy to each test at a real current second plus995ms. Advance controlled time by10ms between posts. Assert a newly constructed unused credential differs across that boundary, while the actual conversation continues with its original headers. Restore the clock in finally. No sleep or timeout increase.
3. Add a changed-token isolation control using the existing fakeChatGptJwt claim override: same account/envelope and two valid tokens differing in exp must not share cached plaintext. Reusing the original request still restores. Assert no extra network recovery and unchanged encrypted input on the miss.
4. Main performs exact-head remote isolated replay/cache/security tests and typecheck. A scratch red control restores per-post codexHeaders() calls while keeping the forced boundary; both conversations must lose the expected plaintext. The changed-token negative remains a pass. Restore candidate bytes after the probe.
5. Independent review checks fixture identity, clock cleanup and unchanged production boundary. Publish the own affinity branch, cascade the capability child and obtain fresh CI after all recorded verification repairs. Original source author commits remain intact. No new production file or test-layout entry.
5 changes: 3 additions & 2 deletions devlog/_plan/260906_a_runtime_stack/000_plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,14 @@

| Cycle | Artifact | Consumes | Delivers |
|---|---|---|---|
| roadmap | 000 + 010..060 | live dev and public contributor changes | audited full integration plan; docs only |
| roadmap | 000 + 010..080 | live dev and public contributor changes | audited full integration plan; docs only |
| sse | 010_sse.md | existing SSE relay boundary | failure notification independent of tee cancellation |
| ws | 020_ws.md | prior transport baseline | WS outbound policy and pool identity |
| recovery | 030_recovery.md | validated transport stack | MESSAGE recovery + reparse/cache semantics |
| affinity | 040_affinity.md | recovery/reparse fields | stable Command Code conversation identity |
| capabilities | 050_capabilities.md | final effective dispatch behavior | policy selection congruent with dispatch |
| landing | 060_landing.md | independently verified stack layers | current dev inclusion and closeout |
| windows-fixtures | 070_windows_fixtures.md | current Windows failure evidence | deterministic verifier repair below A stack |
| landing | 080_landing.md | independently verified stack layers and verifier repair | current dev inclusion and closeout |

The owner explicitly requested a stack. Independent transport fixes are retained as separate cumulative layers to expose interaction at each head; this publication order is not a claim of a hard dependency between SSE and WS. The actual code dependency is recovery before affinity. Each layer has its own PR diff, regression proof and CI. Bottom-up merge only; retarget before deleting parent branches. Keep stacks short by landing verified lower layers while subsequent cycles continue when possible.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Independent reviewer returned GO-WITH-FIXES (2). Both findings accepted and folded before B:

1. Implementation-cycle D previously implied full CI/dev landing, inconsistent with prepared stack layers. 010..050 now explicitly distinguish exact-head remote focused/type verified draft preparation from 060 full-gate landing. Final objective and full-CI-before-merge criteria remain unchanged.
1. Implementation-cycle D previously implied full CI/dev landing, inconsistent with prepared stack layers. 010..050 now explicitly distinguish exact-head remote focused/type verified draft preparation from 080 full-gate landing. Final objective and full-CI-before-merge criteria remain unchanged.
2. Affinity reparse tests required a cohort option the shared post helper did not accept. 040 now names tests/helpers/agent-task-recovery.ts option extension, internal handler forwarding, and true/false/undefined observation in real initial/cache-only adapter calls.

Private remote host/user paths were replaced with placeholders; exact machine setup remains ignored scratch. No product edits or local suites in roadmap cycle.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Windows verifier amendment

Full Windows CI for SSE head failed two unchanged shutdown-spill fixtures. Logs and causal analysis are retained in ignored ci-triage/report.md. C confirms no concurrent ownership of responses-state.test.ts. Add a separate windows-fixtures PABCD after capabilities and before final landing. It repairs test-only clocks/fallback isolation, independently validates on Windows, publishes a small foundation PR and inserts its verified change beneath the source stack. Refresh descendants bottom-up while preserving contributor commits and required current-head checks. No production ACL/budget change, no test skip, no unexamined rerun. The final landing document moves to080; no existing completion criterion is weakened. Owner explicitly authorized admin merge.
3 changes: 3 additions & 0 deletions devlog/_plan/260906_a_runtime_stack/005_amendment_audit.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Capability and verifier amendment audit

Independent reviewer: capability plan PASS; roadmap GO-WITH-FIXES one prerequisite finding. Accepted. Added a new windows-fixtures prerequisite to landing while retaining its existing capabilities edge. No task/criterion completion states or existing prerequisite edges were removed. The durable dependency graph now prevents final landing from being selected before Windows verifier completion. Replaced stale060 landing references with080. Temporary Windows verification workflow still requires concrete security review before push.
2 changes: 1 addition & 1 deletion devlog/_plan/260906_a_runtime_stack/010_sse.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Status: candidate plan, docs-only; implementation class C3 (stream lifecycle). E

## Implementation-cycle completion versus landing

This decade cycle ends with a reviewed prepared draft PR, exact-carried-head focused remote activation evidence and remote typecheck, with full CI dispatched. That cycle D does not claim the bug shipped, full CI passed, or an issue resolved. `060_landing.md` retains the mandatory full current-head cross-platform/type/privacy/docs evidence, review, dev ancestry and immediate source-PR/fully-resolved-issue closure gates. Later P consumes the verified prepared stack parent; it need not have landed yet. Only final landing yields feature DONE.
This decade cycle ends with a reviewed prepared draft PR, exact-carried-head focused remote activation evidence and remote typecheck, with full CI dispatched. That cycle D does not claim the bug shipped, full CI passed, or an issue resolved. `080_landing.md` retains the mandatory full current-head cross-platform/type/privacy/docs evidence, review, dev ancestry and immediate source-PR/fully-resolved-issue closure gates. Later P consumes the verified prepared stack parent; it need not have landed yet. Only final landing yields feature DONE.


## Source, authorship and drift
Expand Down
2 changes: 1 addition & 1 deletion devlog/_plan/260906_a_runtime_stack/020_ws.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Status: candidate plan after layer 010, docs-only; implementation class C4 for t

## Implementation-cycle completion versus landing

This decade cycle ends with a reviewed prepared draft PR, exact-carried-head focused remote activation evidence and remote typecheck, with full CI dispatched. That cycle D does not claim the bug shipped, full CI passed, or an issue resolved. `060_landing.md` retains the mandatory full current-head cross-platform/type/privacy/docs evidence, review, dev ancestry and immediate source-PR/fully-resolved-issue closure gates. Later P consumes the verified prepared stack parent; it need not have landed yet. Only final landing yields feature DONE.
This decade cycle ends with a reviewed prepared draft PR, exact-carried-head focused remote activation evidence and remote typecheck, with full CI dispatched. That cycle D does not claim the bug shipped, full CI passed, or an issue resolved. `080_landing.md` retains the mandatory full current-head cross-platform/type/privacy/docs evidence, review, dev ancestry and immediate source-PR/fully-resolved-issue closure gates. Later P consumes the verified prepared stack parent; it need not have landed yet. Only final landing yields feature DONE.


## Source, authorship and drift
Expand Down
4 changes: 2 additions & 2 deletions devlog/_plan/260906_a_runtime_stack/030_recovery.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ land; no implementation or verification pass is claimed here.

## Implementation-cycle completion versus landing

This decade cycle ends with a reviewed prepared draft PR, exact-carried-head focused remote activation evidence and remote typecheck, with full CI dispatched. That cycle D does not claim the bug shipped, full CI passed, or an issue resolved. `060_landing.md` retains the mandatory full current-head cross-platform/type/privacy/docs evidence, review, dev ancestry and immediate source-PR/fully-resolved-issue closure gates. Later P consumes the verified prepared stack parent; it need not have landed yet. Only final landing yields feature DONE.
This decade cycle ends with a reviewed prepared draft PR, exact-carried-head focused remote activation evidence and remote typecheck, with full CI dispatched. That cycle D does not claim the bug shipped, full CI passed, or an issue resolved. `080_landing.md` retains the mandatory full current-head cross-platform/type/privacy/docs evidence, review, dev ancestry and immediate source-PR/fully-resolved-issue closure gates. Later P consumes the verified prepared stack parent; it need not have landed yet. Only final landing yields feature DONE.


## Loop specification and scope
Expand All @@ -23,7 +23,7 @@ This decade cycle ends with a reviewed prepared draft PR, exact-carried-head foc
- Verifier: exact-layer remote focused regressions, full Cross-platform CI,
privacy and type gates, and independent recovery-boundary review. Commands
below are planned for remote execution only; none ran during planning.
- Stop condition: reviewed prepared draft and exact-head remote focused/type evidence; full CI/dev inclusion are required by 060 before feature completion. Partial #3661 stays open.
- Stop condition: reviewed prepared draft and exact-head remote focused/type evidence; full CI/dev inclusion are required by 080 before feature completion. Partial #3661 stays open.
- Memory artifact: this file and main-owned `000` roadmap/evidence ledger.
- Outcomes: DONE only with the evidence above; NOOP only if current dev already
contains equivalent behavior and regressions; BLOCKED for external CI/review
Expand Down
Loading
Loading