Skip to content

research(codex): investigate explicit turn/steer input in an isolated TS experiment #141

Open

Description

@abruption

Current roadmap — 2026-10-13 KST

  • Target milestone: Research — Native Codex input.
  • Planning priority: P2 (priority:P2).
  • Dependencies/order: Independent research tracks; reuse feat(codex): add a shared bounded app-server client #71 contract knowledge without making these 0.4.0 release blockers.
  • Remaining scope: No shipping version until native/provider/owner lifecycle/race qualification. Isolated Drafts remain experiments; productization needs reviewed scope.

This section supersedes older milestone/version/priority statements below. Existing acceptance criteria, evidence limits and historical records remain applicable. Versioned milestones are provisional planning targets, not committed dates or implementation/live-test/merge/release authorization. P1 means a milestone prerequisite/current-release item; P2 a planned extension/research track; P3 later dependent work.


Scope and priority

P2 isolated experiment, Future — Agent integrations. User requested a TS issue and Draft PR for native turn/steer input. This is distinct from #81/Draft #82 Side Session and #71/Draft #108 queue-only app-server foundations; do not expand ordinary send or the four-issue 0.4 milestone.

Reference Python #247 / Draft #248, reviewed source 6ebedde93d62d67e750fd5c32c18b8f6564be86d. Official app-server steering contract: expectedTurnId must match the active turn; accepted input is not delivery/ACK. Python's native0.159.2 experiment results are historical and do not qualify this TS implementation or current native versions.

Acceptance criteria

  • Distribution-excluded experiments/codex_steering package with a local-only explicit opt-in adapter to an existing operator-selected owner. Do not start/resume/fork/wake/replace a server, select arbitrary peer routes, inject keystrokes or mutate queue/state/config.
  • Validate private owned Unix socket/parent, exact supported server version/home/loaded thread, active status/direct-input capability and exact nonempty expected turn. No permissions, approval answers, model/cwd/sandbox overrides or automatic feature enablement.
  • Send exactly one turn/steer with native expectedTurnId. Preserve queue-only defaults; no turn/start, turn/interrupt, fallback/reconnect/resend after possible effect. Accepted != consumed/ACK/completed. A dry-run does not prove native expected-turn acceptance.
  • Report instant_interrupt only as an exact thread feature snapshot. Required unavailable/disabled snapshot refuses pre-effect; snapshots do not establish instantaneous preemption or rollback of external side effects.
  • Bounded RPC count/frames/notifications/total monotonic deadline; cleanup only the owned connection, no server/process kill. Test wrong turn, idle/missing target, wrong home/version, malformed replies, server interactions, disconnect/timeout and concurrent requests.
  • Run local pure and Unix fake-owner transport fixtures with zero native/model/user-session input, then prepare a Draft PR with explicit evidence limits and current-head CI/review.
  • Separate follow-up gate: authorized pinned native loopback streaming fixture compares queue/steer × feature OFF/ON; real-provider/code-mode, actual owner lifecycle/authorization, turn-replacement races, SSH/Linux/Windows and peer-message framing remain unqualified until tested. Never copy Python results as TS evidence.

Boundaries

Issue/Draft experiment and hermetic tests only; no general-use support, canonical runtime/version/lock changes, merge, release/tag/npm publication, existing-session steering or operations change. Keep the issue open while general-use gates remain. Message content is private effect input, not diagnostics; notifications are bounded/discarded and never interpreted as receipt ACK. Metadata RPCs can contain previews; do not claim a body-free native protocol.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestpriority:P2Planned capability, platform extension or bounded research after prerequisites.

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions