Skip to content

0.1.8 Beta4: Reconcile the exact Codex Collaboration V2 runtime/wire contract #392

Closed

Description

@NOirBRight

Parent

#252 (part of #248)

Outcome

Reconcile the exact candidate-bound Codex Collaboration V1/V2 runtime and wire contract before Beta4 changes production adaptation.

The current closed #64 artifact is a structural source contract with capture_status=not_observed and describes V2 as a collaboration namespace. Codex 0.146 source instead exposes V1 through the multi_agent_v1 namespace and V2 as direct function tools. Beta4 must resolve that mismatch from the exact supported Codex CLI/Desktop runtime rather than implementing against an assumed namespace.

Required evidence

  • Bind the report to the exact Codex CLI/Desktop version, source-equivalent revision, Beta4 candidate SHA, and isolated capture Home.
  • Capture the model-visible V1 namespace and V2 direct-function declarations, exact parameter/output schemas, tool-choice forms, and the authoritative version-selection signal used before repair.
  • Record the six V2 tools: spawn_agent, send_message, followup_task, wait_agent, interrupt_agent, and list_agents.
  • Distinguish model-wire function_call/result/history items, any agent_message input item, canonical task identity, and Codex App task events rather than treating them as one schema.
  • Record added/delta/done, terminal/error, replay, and same-Home restart/readback shapes without retaining prompts, credentials, content, or opaque task/call identities.
  • Correct 0.1.8 Beta2: Define the Codex CLI 0.146 Collaboration V1/V2 schema boundary #64 artifacts, ADR-0002 wording, and focused contract tests where the exact evidence disproves the historical assumption.

Acceptance criteria

  • V1 and V2 are decidable before any schema injection, semantic repair, state, or scheduler behavior.
  • Shared direct function names such as spawn_agent and wait_agent are not classified by name alone.
  • task_name, canonical task path, continuation identity, call/item IDs, and agent_message are assigned to their exact protocol layers.
  • Unknown, missing, conflicting, or mixed version signals fail closed.
  • The resulting contract is sufficient for 0.1.8 Beta4: Implement runtime-derived Collaboration V2 direct-tool and lifecycle adaptation #282/0.1.8 Beta4: Verify the complete generic Collaboration V2 lifecycle #283 without inventing a V2 namespace or a Gateway-owned scheduler.
  • Evidence is bounded, sanitized, candidate/runtime bound, and reproducibly validated.
  • No production routing, model selection, fallback, history rewrite, or capability enablement is included.

Verification class

Strict: runtime protocol and release evidence contract.

Activity

  1. added
    enhancementNew feature or request
    ready-for-agentFully specified, ready for an AFK agent
    wayfinder:researchWayfinder evidence or research ticket
    tier:heavyOrchestrator provider tier: heavy
    P1Priority 1: current iteration goal
    campaign:0.1.8-beta40.1.8 Beta4 generic Collaboration V2 campaign
    on Aug 10, 2026
  2. NOirBRight commented on Aug 10, 2026

    @NOirBRight
    OwnerAuthor

    Phase 1 blocker (frozen-runtime observation, 2026-08-10)

    A fresh isolated CODEX_HOME probe against a loopback custom Responses provider was run with the exact frozen CLI:

    • CLI: codex-cli 0.146.1
    • binary SHA-256: ae9d865f3d346a1a2a60c4e84775622d74e3e7ef53e0dede9c68b81eab306cca
    • source tag/commit: rust-v0.146.1 / 79b4f03d35962b005b007a015113b38930711665
    • candidate base: 2f2da02f3562065e286e9c510bb6b9b1812ed6c8
    • capture Home: newly created and isolated; no existing user task/Home was read

    The actual Responses request exposed one type=namespace, name=collaboration declaration containing exactly followup_task, interrupt_agent, list_agents, send_message, spawn_agent, and wait_agent. It did not expose six direct top-level function declarations. Request client_metadata also did not carry multi_agent_version; the request-visible discriminator was the complete namespace/schema shape.

    The source explains the apparent contradiction: each V2 handler begins as ToolSpec::Function (multi_agents_spec.rs), but spec_plan.rs:825-883 applies the configured namespace and spec_plan.rs:1056-1087 rewrites it to ToolSpec::Namespace. The frozen default is tool_namespace = "collaboration" (config/mod.rs:252,1206), and custom providers report namespace support.

    This conflicts with #392's current premise and the Beta4 plan requirement that the CLI->Responses wire surface is six direct functions. Per the plan's fail-closed/stop condition, no production routing/adaptation change has been made. Beta4 must either (1) correct #392/#282 to the actual 0.146.1 namespace wire contract, while still distinguishing it from the client dispatch recipient namespace and App events, or (2) re-freeze on a runtime/configuration proven to emit direct functions and redo all runtime evidence.

  3. NOirBRight commented on Aug 10, 2026

    @NOirBRight
    OwnerAuthor

    Decision: keep the frozen Codex CLI/runtime 0.146.1 and correct the Beta4 contract to the observed Responses wire shape. For Beta4, V2 is the collaboration namespace containing the six function children; the client dispatch recipient namespace, Responses namespace declaration/call shape, rollout metadata, model-wire agent_message, and Desktop App events remain separate protocol layers. Implementation resumes on this corrected basis.

  4. NOirBRight commented on Aug 10, 2026

    @NOirBRight
    OwnerAuthor

    #392 is complete in PR #399, merged to dev at 386802c848cc02d00cc879471462d4327b8b7c62.

    Evidence:

    • implementation baseline: be10f62f44b22fa8c84510238250ae11fb3ecab4
    • reviewed evidence head: c3625259ecf8e7e00b639f74c79af154a45224ee
    • Codex CLI: 0.146.1 / binary SHA-256 ae9d865f3d346a1a2a60c4e84775622d74e3e7ef53e0dede9c68b81eab306cca / source 79b4f03d35962b005b007a015113b38930711665
    • Desktop: 26.803.5235.0, runtime 0.147.0-alpha.6.5 / binary SHA-256 fb5c760e14cf8fe86e12e49e8a3e7f237af06082d6b9fe1e411e463b7229c916 / source 618b8e9111da9f57fe380b09d0f6516e3f343536
    • sanitized runtime observation: docs/evidence/issue-392/collaboration-runtime-observations.json
    • derived contract: docs/evidence/issue-392/collaboration-runtime-contract.json
    • 11 distinct fresh isolated Home bindings; no existing user Home/task or known crash task read
    • actual CLI/Desktop request, function added/delta/done, completed/incomplete/failed/truncated controls, history/replay, agent_message, rollout metadata, and Desktop App restart/readback captured
    • focused: 32 passed
    • Python core on final reviewed head: 2250 passed, 1 skipped, 484 subtests passed
    • Standards review: pass
    • Spec review: pass
    • contract/inventory reconciliation and git diff --check: pass

    The calibrated request-visible rule is V1 multi_agent_v1 namespace vs V2 collaboration namespace with six children; direct/shared names alone do not classify, and mixed/malformed signals fail closed.

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

    P1Priority 1: current iteration goalcampaign:0.1.8-beta40.1.8 Beta4 generic Collaboration V2 campaignenhancementNew feature or requestready-for-agentFully specified, ready for an AFK agenttier:heavyOrchestrator provider tier: heavywayfinder:researchWayfinder evidence or research ticket

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions