Skip to content

0.1.8 Beta2: Inventory Codex CLI 0.146 tool types and representative Responses lifecycles #62

Closed

Description

@NOirBRight

Parent

#318 (part of #248)

Outcome

Capture the minimum exact Codex CLI 0.146 runtime and Responses wire evidence needed to define the Beta2 tool compatibility rules. This is a bounded protocol inventory, not a release-forensics platform and not a model qualification gate.

Scope

  • Read the installed CLI planner/runtime tool plan before sampling.
  • Inventory declaration families by structure: plain function, custom/freeform, namespace, client-executed tool discovery, selected-Provider hosted tools, and unknown future kinds.
  • Capture representative request, response, streaming, call/result, and history shapes needed to distinguish native compatibility from a reversible encoding mismatch.
  • Include the relevant added/delta/done ordering, IDs, terminal events, and error shapes.
  • Bind the retained fixtures to the exact CLI version and source/candidate revision and sanitize all user content.

The inventory is structural. It does not need a permanent list of every tool name, every plugin combination, or every Provider/model.

Acceptance criteria

  • The authoritative retained inventory is from Codex CLI 0.146; the legacy 0.144 artifact is reference-only.
  • Every declaration kind observed in the selected runtime plan has an explicit structural record.
  • Representative native declarations and each incompatible structural family needed by 0.1.8 Beta2: Define tool-type compatibility rules for custom Responses endpoints #65 have a complete declaration/call/result/history/SSE example.
  • Hosted declarations are identified as selected-Provider capabilities; no second Provider is contacted to manufacture evidence.
  • The capture reports mutation or loss inside the sampled lifecycle and contains no silent disappearance.
  • Fixtures and summaries are bounded, sanitized, reproducible, and sufficient for 0.1.8 Beta2: Define tool-type compatibility rules for custom Responses endpoints #65 to assign one of four compatibility dispositions.
  • The issue may close once the compatibility table can be decided; live success for every hosted, plugin, App, or unknown tool is not required.

Explicitly out of scope

  • GLM/K2.7 capability qualification or production routing policy.
  • Exhaustive feature/mode/MCP/App/plugin permutations.
  • Dual-sidecar forensic provenance, HMAC/tamper platform work, and complete release-evidence infrastructure.
  • Full cross-platform descendant/process-tree proof beyond the bounded capture needed here.
  • Code Mode, tool_search, or Collaboration V2 end-to-end qualification.
  • Any cross-Provider tool proxy.

Draft PR #349

PR #349 is larger than this reduced issue. Only a minimal, reviewed slice that directly satisfies the acceptance criteria above may be retained for #62. Remaining reusable hardening is tracked by #352 and does not block Beta2 or Beta3.

Activity

  1. NOirBRight commented on Jul 12, 2026

    @NOirBRight
    OwnerAuthor

    Current-side diagnostic update (sanitized):

    • Codex Desktop registered 15 codex_app tools: 3 Direct and 12 Deferred.
    • The 3 Direct tools are callable; all 11 sidebar-visible task tools are Deferred and absent from the model-visible surface. automation_update is the twelfth Deferred tool.
    • Codex source at 9e552e9d15ba52bed7077d5357f3e18e330f8f38 enables tool_search only when model supports_search_tool and provider namespace_tools are both true.
    • Gateway routing is official Responses-to-Responses transparent passthrough; current evidence does not support Gateway-side tool filtering.
    • The applications were cold-started for the initial binding, but the current custom-provider config and complete CodexHub catalog were written after the Codex app-server had constructed ThreadManager. The startup catalog omitted supports_search_tool; the post-switch catalog contains true. No model-manager rebuild occurred, so Deferred tools remained unavailable.
    • Repro: powershell scripts/check-codex-thread-tool-surface.ps1 exits 1 deterministically and reports STALE_STATIC_MODEL_MANAGER_AFTER_CONFIG_REWRITE plus the 11 missing visible-task tools.

    Remaining control: restart Codex Desktop only after the current CodexHub config/catalog is fully written, resume or create a task on the unchanged CodexHub node, then rerun the same trace. This distinguishes recovery after the relevant app-server cold start from provider switching.

  2. self-assigned this
    on Jul 12, 2026
  3. NOirBRight commented on Jul 12, 2026

    @NOirBRight
    OwnerAuthor

    Dispatch (superseded by the sanitized rewrite) — Profile: evidence; Model: gpt-5.6-terra / max; Continue the owned codex/issue-62-runtime-trace branch through draft PR #95 only. The earlier pre-sanitization commit reference is intentionally removed. Ownership remains docs/evidence/issue-62 and replay tooling only; no production routing or planner changes. PR #95 stays Refs #62 unless the entire Issue contract is satisfied.

  4. NOirBRight commented on Jul 12, 2026

    @NOirBRight
    OwnerAuthor

    Superseding correction for the earlier diagnostic comment:

    • The sanitized caller request in logs_2.sqlite includes client-executed tool_search in additional_tools.
    • Three Direct codex_app tools plus twelve Deferred tools discoverable through tool_search is the expected surface split; the Deferred tools were not missing.
    • Gateway filtering is ruled out. The exact-version Desktop core and Code Mode app-server controls pass.
    • The stale StaticModelsManager explanation was an unproven inference, not a confirmed root cause. The corrected trace records the fact/hypothesis split: Desktop host/model non-selection of available tool_search is observed; reluctant-model/tool-search lifecycle investigation belongs to 0.1.8 Beta3: Complete the generic client tool_search lifecycle #63.

    Correction commit: ca1d454b (test: correct Codex tool discovery trace). #62 remains open for the remaining evidence contract.

  5. NOirBRight commented on Jul 12, 2026

    @NOirBRight
    OwnerAuthor

    Phase B evidence slice merged through PR #95 at 4b55cca. The merged PR has one sanitized commit, bounded 65,536-byte prefix claims, required-tool negative controls, and green CI. #62 stays open for complete contributor/runtime-gate capture, current-binding cold start, independently captured full pre/post wire evidence, real non-streaming/choice coverage, zero unclassified items, and observed non-Direct states.

  6. added and removed
    ready-for-agentFully specified, ready for an AFK agent
    on Jul 12, 2026
  7. 93 remaining items

  8. added a commit that references this issue on Aug 4, 2026
  9. NOirBRight commented on Aug 4, 2026

    @NOirBRight
    OwnerAuthor

    Tooling slice merged as PR #355 at 7965f99 after exact Spec/Quality PASS and local verification (focused 192; full Issue #62 244; drift/PowerShell/compile/diff green). #62 remains OPEN because the retained 0.146 source contract is intentionally not_observed/unqualified. A new Luna Max worker is now pursuing the bounded local live-capture phase in an isolated CLI/CODEX_HOME; no shared config mutation, #65 dispatch, tag, or release is authorized.

  10. NOirBRight commented on Aug 4, 2026

    @NOirBRight
    OwnerAuthor

    Local CLI 0.146 capture update (2026-08-04)

    The isolated run verified the pinned Codex CLI 0.146.0 package/binary and candidate binding against a loopback fake Responses server:

    • one successful streaming request with the expected top-level fields, input item families, and terminal SSE;
    • one deterministic error control with terminal response.failed;
    • no shared CODEX_HOME, Desktop, Gateway, or user configuration was touched.

    This is explicitly synthetic_lane_only and non-qualifying for #62: the isolated CODEX_HOME had no Codex credentials, so no external/authenticated upstream, non-streaming/choice/required controls, or candidate-bound real-client wire evidence was observed.

    The next attempt is an isolated real CLI 0.146 control using a newly materialized authorized credential input without logging or retaining secret material. #62 remains open; #65 and all downstream Beta2 gates remain blocked.

  11. NOirBRight commented on Aug 4, 2026

    @NOirBRight
    OwnerAuthor

    Local capture blocker update (2026-08-04)

    The authorized isolated attempt did not hang in CI or authentication. CLI/credential processes exited normally. The attempt stopped at isolated Gateway startup with a sanitized model_identity_error: the isolated CODEX_HOME did not yet contain the runtime model catalog required to resolve the configured model identity.

    No shared catalog, config, Desktop, Gateway, or credential file was modified. The worker is retrying only after generating a minimal catalog from the repository fixture writer inside the isolated home. If that cannot satisfy the identity contract, the result remains a precise non-qualifying blocker; #62 stays open and #65 remains locked.

  12. NOirBRight commented on Aug 4, 2026

    @NOirBRight
    OwnerAuthor

    Local CLI 0.146 capture update — valid catalog, incomplete response evidence (2026-08-04)

    The second isolated attempt used a complete catalog generated by the candidate worktree's src-python/catalog_sync.py --sync:

    • 85,054-byte catalog, 29 models, SHA-256 5a791af4…d791e40;
    • gpt-5.6-sol resolved as visibility=list, supported_in_api=true, official OpenAI metadata;
    • isolated config.toml and CLI home referenced the same catalog digest;
    • catalog inputs were read-only host seed/cache copies; no shared state was written.

    The real Codex CLI 0.146 request reached the isolated Gateway. Both pre/post sidecars completed with HTTP 200, request/response fingerprints matched, and Gateway telemetry classified the route as official Responses with canonical openai/gpt-5.6-sol.

    This remains capture-only/non-qualifying: the response had no usable Content-Type, no SSE digest was observed, and the CLI's sanitized stderr still classified unauthorized/auth/error. A 200 status alone is not accepted as a successful lifecycle. No raw response, credential, or temporary script was committed. #62 remains open and #65 remains locked.

  13. NOirBRight commented on Aug 4, 2026

    @NOirBRight
    OwnerAuthor

    Bounded response diagnosis (2026-08-04)

    No new request was sent and no secret was read. The existing sanitized capture shows:

    • the upstream response received directly by the post sidecar had no Content-Type;
    • the pre sidecar (Gateway output) had the same absent type and identical response bytes/SHA/HMAC;
    • the body was classified as opaque/non-SSE, so terminal event semantics cannot be established;
    • Gateway telemetry recorded one request_complete with status 200 and no request_error/4xx;
    • the CLI's coarse unauthorized/auth/error stderr classes cannot be attributed to this request without retaining raw stderr.

    The precise blocker is therefore missing upstream response typing/observable SSE semantics, not a proven Gateway header strip or a proven request authentication failure. The capture remains non-qualifying; #62 stays open and #65 remains locked.

  14. added
    orch:blockedOrchestrator V6: blocked pending a decision or external state change
    and removed
    orch:activeOrchestrator V6: claimed Worker is active or rework is in progress
    on Aug 4, 2026
  15. NOirBRight commented on Aug 4, 2026

    @NOirBRight
    OwnerAuthor

    #62 local capture lane closed for now (2026-08-04)

    The bounded local attempt is complete and the worker is stopped. No tracked diff, commit, credential, raw log, or release artifact was produced; only five untracked temporary scripts remain in the isolated worktree.

    Final sanitized evidence:

    • official upstream and Gateway hops both returned HTTP 200;
    • response body was 54,392 bytes with identical SHA/HMAC across both hops;
    • Content-Type was absent, body prefix was opaque/other, and no SSE digest was observed;
    • CLI exit code was 0, but stderr only yielded coarse unauthorized/auth/error classes;
    • Gateway recorded request_complete and no request_error, so the stderr classes cannot be attributed to this request.

    This is capture-only/non-qualifying. The current blocker is insufficient upstream response typing/observable SSE semantics. #62 is now marked orch:blocked; #64/#65 and all downstream Beta2 gates remain locked.

  16. NOirBRight commented on Aug 5, 2026

    @NOirBRight
    OwnerAuthor

    Local gate update for candidate 7439f243c522e1184d384af4bc4a82a1c50793c9:

  17. NOirBRight commented on Aug 5, 2026

    @NOirBRight
    OwnerAuthor

    Authorized live capture completed (candidate 7439f243c522e1184d384af4bc4a82a1c50793c9, 2026-08-05)\n\nOne and only one real Codex CLI 0.146.0 request was run in an isolated lane: CLI -> pre sidecar -> candidate Gateway -> post sidecar -> Official upstream. No shared Desktop/Gateway configuration was changed.\n\nSanitized result:\n\n- CLI exit: 0; thread.started=1, turn.started=1, item.completed=1, turn.completed=1.\n- error_events=0, fallbacks=0, reconnects=0.\n- Both hops: HTTP 200, complete request/response, complete SSE terminal sequence, 12 SSE frames.\n- Pre hop: content_type_class=event-stream, stream_signal=content_type.\n- Post hop: content_type_class=absent, stream_signal=transfer_encoding_chunked.\n- Pre/post request SHA+HMAC, response SHA+HMAC, and ordered SSE SHA+HMAC all matched.\n- Cleanup receipt: complete; failure count 0; all child processes terminated; resources released.\n\nThis closes the single live-capture task for the reviewed SHA. It does not by itself close #62: the remaining acceptance work is the complete 0.146 structural inventory and representative lifecycle coverage. Keep #62 open/blocked and keep #64/#65 locked until that evidence is reconciled and reviewed. No raw body, prompt, header, identifier, token, or temporary capture data was published.

  18. NOirBRight commented on Aug 5, 2026

    @NOirBRight
    OwnerAuthor

    #62 closeout: bounded CLI 0.146 evidence qualified (2026-08-05)\n\nAll Task 6 fixed assertions passed on the reviewed candidate. This is the only real CLI request run in this control window.\n\nProvenance:\n- CodexHub candidate SHA: 7439f243c522e1184d384af4bc4a82a1c50793c9.\n- CLI: 0.146.0; package SHA-256: bc343ba420dc2e2e9f59e6fc5e5bf0aae1cd8c771fc319665241fc9c0271fddb.\n- Candidate catalog SHA-256: 1100dd424fad14b53b0ea94612037c33a7ec13bdd3771db5e57d32a1f3c136aa; selected catalog entry: gpt-5.6-sol.\n\nReview and local gate:\n- Exact-SHA Spec review: PASS.\n- Exact-SHA Quality review: PASS; no Critical/Important findings.\n- Focused sidecar/manifest tests: 69 passed; complete Issue #62 suite: 296 passed.\n- Compile, inventory drift, identity replay, mutation/deletion/loss negative replays, and diff hygiene: PASS.\n- Affected Python suite: 1,888 passed, 1 skipped, 3 pre-existing baseline failures reproduced at origin/dev@136caea; none are in this candidate diff.\n\nLive readback:\n- CLI exit 0; thread.started=1, turn.started=1, item.completed=1, turn.completed=1.\n- error_events=0, fallbacks=0, reconnects=0.\n- Pre and post: complete HTTP 200 request/response/SSE records; both terminal classes are [response.completed].\n- Pre: content_type_class=event-stream, stream_signal=content_type.\n- Post: content_type_class=absent, stream_signal=transfer_encoding_chunked.\n- Request, response, and ordered SSE SHA-256 plus HMAC-SHA-256 equality: PASS for all three.\n- Cleanup: attempted/completed, failure count 0, child processes terminated, resources released.\n\n#62 is complete and may close. This does not qualify GLM/K2.7 or start #65; #64 can now proceed as its own structural ticket. No raw body, prompt, header, identifier, token, or temporary capture data is published.

  19. removed
    orch:blockedOrchestrator V6: blocked pending a decision or external state change
    on Aug 5, 2026
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-beta20.1.8 Beta2 generic tool compatibility campaignenhancementNew feature or requestready-for-agentFully specified, ready for an AFK agentwayfinder:researchWayfinder evidence or research ticket

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions