Repository navigation
0.1.8 Beta2: Inventory Codex CLI 0.146 tool types and representative Responses lifecycles #62
Copy link
Copy link
Closed
Labels
P1Priority 1: current iteration goalPriority 1: current iteration goalcampaign:0.1.8-beta20.1.8 Beta2 generic tool compatibility campaign0.1.8 Beta2 generic tool compatibility campaignenhancementNew feature or requestNew feature or requestready-for-agentFully specified, ready for an AFK agentFully specified, ready for an AFK agentwayfinder:researchWayfinder evidence or research ticketWayfinder evidence or research ticket
Description
Parent
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.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
P1Priority 1: current iteration goalPriority 1: current iteration goalcampaign:0.1.8-beta20.1.8 Beta2 generic tool compatibility campaign0.1.8 Beta2 generic tool compatibility campaignenhancementNew feature or requestNew feature or requestready-for-agentFully specified, ready for an AFK agentFully specified, ready for an AFK agentwayfinder:researchWayfinder evidence or research ticketWayfinder evidence or research ticket
Activity
NOirBRight commentedon Jul 12, 2026
Current-side diagnostic update (sanitized):
codex_apptools: 3 Direct and 12 Deferred.automation_updateis the twelfth Deferred tool.9e552e9d15ba52bed7077d5357f3e18e330f8f38enablestool_searchonly when modelsupports_search_tooland providernamespace_toolsare both true.ThreadManager. The startup catalog omittedsupports_search_tool; the post-switch catalog containstrue. No model-manager rebuild occurred, so Deferred tools remained unavailable.powershell scripts/check-codex-thread-tool-surface.ps1exits 1 deterministically and reportsSTALE_STATIC_MODEL_MANAGER_AFTER_CONFIG_REWRITEplus 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.
NOirBRight commentedon Jul 12, 2026
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.
NOirBRight commentedon Jul 12, 2026
Superseding correction for the earlier diagnostic comment:
logs_2.sqliteincludes client-executedtool_searchinadditional_tools.codex_apptools plus twelve Deferred tools discoverable throughtool_searchis the expected surface split; the Deferred tools were not missing.StaticModelsManagerexplanation was an unproven inference, not a confirmed root cause. The corrected trace records the fact/hypothesis split: Desktop host/model non-selection of availabletool_searchis 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.NOirBRight commentedon Jul 12, 2026
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.
93 remaining items
feat: harden Issue #62 runtime inventory evidence contract
NOirBRight commentedon Aug 4, 2026
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.
NOirBRight commentedon Aug 4, 2026
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:
response.failed;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.
NOirBRight commentedon Aug 4, 2026
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.
NOirBRight commentedon Aug 4, 2026
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:5a791af4…d791e40;gpt-5.6-solresolved asvisibility=list,supported_in_api=true, official OpenAI metadata;config.tomland CLI home referenced the same catalog digest;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 classifiedunauthorized/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.NOirBRight commentedon Aug 4, 2026
Bounded response diagnosis (2026-08-04)
No new request was sent and no secret was read. The existing sanitized capture shows:
Content-Type;request_completewith status 200 and norequest_error/4xx;unauthorized/auth/errorstderr 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.
NOirBRight commentedon Aug 4, 2026
#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:
Content-Typewas absent, body prefix was opaque/other, and no SSE digest was observed;unauthorized/auth/errorclasses;request_completeand norequest_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.NOirBRight commentedon Aug 5, 2026
Local gate update for candidate
7439f243c522e1184d384af4bc4a82a1c50793c9:origin/dev@136caeaand are outside this candidate diff (CI fallback documentation assertion and two Issue Restore bundled provider/model capabilities when installed runtime config predates them #108 replay fixture checks); they were not changed here.NOirBRight commentedon Aug 5, 2026
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.NOirBRight commentedon Aug 5, 2026
#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 atorigin/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.docs(issue64): inventory Collaboration V1/V2 boundary