Skip to content

feat(experiment): add isolated Codex turn steering prototype - #142

Draft
abruption wants to merge 2 commits into
mainfrom
abruption/codex-steering-experiment
Draft

abruption wants to merge 2 commits into
mainfrom
abruption/codex-steering-experiment

Conversation

@abruption

@abruption abruption commented Oct 12, 2026 •

Copy link
Copy Markdown
Owner

Summary

Refs #141. Draft research prototype only; no release or general CLI support claim.

  • Add a separate private experiment package under experiments/codex_steering, excluded from the installed npm artifact.
  • Require explicit opt-in, a private operator-owned Unix WebSocket, canonical home match, full loaded/active thread UUID, direct-input evidence, and operator-supplied expectedTurnId.
  • Submit at most one turn/steer attempt per connection. No queue fallback, turn/start, turn/interrupt, resume, fork, wake, approval answers, or automatic resend.
  • Report accepted as native acceptance only, never consumption/ACK/completion. Preserve uncertainty after an attempted effect; dry-run makes zero submissions and does not validate the expected turn.
  • Bound frames, traffic, events, RPC inventory/counts and a total monotonic transport deadline. Close only the experiment-owned connection. The deadline begins after stdin completes; stdin is byte-bounded, not time-bounded.
  • Add fake-only Unix WebSocket CI for macOS/Linux × Node22/24, with no native CLI, provider or account credentials.

Validation

Local macOS arm64, Node24.16.0/npm11.15.0:

  • Experiment npm ci --ignore-scripts, npm run typecheck, npm test: 24 passed / 0 failed / 0 skipped.
  • Experiment npm audit: 0 vulnerabilities.
  • Root npm run build, node scripts/check-repository.mjs: PASS.
  • Root npm pack --ignore-scripts --dry-run --json: 57 files; no experiment paths. Root package/lockfile/runtime/version/parity unchanged.
  • git diff --check: PASS.

Cases include exact request/turn match, opt-in/dry-run, home/loaded/active/direct/feature guards, concurrent/repeated attempt fencing, malformed/error/UTF-8/binary responses, server approval requests, response loss, pre/post-attempt timeout, cursor cycles, event flood, oversized frames, and test-resource cleanup. Read-only internal adapter review found no Draft-scope blocker. This is not an external model/native qualification.

Current-head verification

Exact head: 31194cefc1f3398355afb4da97359aab67205b4f. All 16 checks SUCCESS:

  • CLI run38224790174: macOS/Ubuntu Node22/24, Windows native22/24, repository policy and release gate.
  • Experiment run38224790288: fake-only macOS/Ubuntu Node22/24 fixtures. This is not native Linux/Windows steering evidence.
  • CodeQL run38224786978: actions and javascript/typescript; CodeQL aggregate SUCCESS. GitGuardian SUCCESS.

Initial workflow run38224626687 had zero jobs because runner.temp was referenced at job env level. The follow-up moves it to step env; the current-head experiment matrix passes. No check bypass or protection change. Automatic Code/Security Review results have not been submitted at the final check; no separate mentions were posted. No review-completed claim.

Remaining qualification gates

The accepted native version 0.159.2 is a candidate only, following Python Draft248 at 6ebedde93d62d67e750fd5c32c18b8f6564be86d. No actual native Codex, provider, existing user session, live input, consumption or ACK was tested here. Historical Python evidence is not TS test evidence.

Native queue/steer × instant_interrupt ON/OFF, current native/provider/code-mode behavior, owner discovery/generation/authentication/lifecycle, snapshot/effect races, SSH/Windows support, and a stable installed CLI contract remain open. Socket identity observations are not atomic and do not exclude same-user impersonation. Native metadata/notifications can contain content; this prototype makes no body-free observation promise.

This remains separate from Side Session #81/Draft82 and queue-only app-server #71/Draft108. Refs only: #141 remains OPEN. No merge, tag, release, publication, native live experiment, permission/configuration or operations change.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant