Skip to content

fix(commandcode): preserve CLI envelope and compose field recovery - #16136

Merged
diegosouzapw merged 1 commit into
release/v3.8.52from
fix/14629-commandcode-cli-recovery-1010
Oct 10, 2026
Merged

diegosouzapw merged 1 commit into
release/v3.8.52from
fix/14629-commandcode-cli-recovery-1010

Conversation

@diegosouzapw

Copy link
Copy Markdown
Owner

CommandCode's CLI fallback passed its whole envelope to reasoning recovery, so a rejected field inside params was not corrected. Its primary endpoint also returned known-field HTTP 400s without using the existing field-downgrade helper.

The CLI now passes params to recovery and rebuilds the complete original envelope for retry. The primary endpoint composes the bounded field helper after reasoning recovery. Both paths preserve the effective request body, headers, signal, tools and caller input; shared helpers and transport policy are unchanged.

Refs #14629

This covers the CommandCode portion of the umbrella. NineRouter is covered by #16133 and GLM by #16135; CLIProxyAPI and override-contract/guard acceptance are tracked separately. This PR must not automatically close the umbrella.

Validation

Two TDD stages on base 122b43b35dbacab03ea67d0f0b46e713280ccd86, with an identical fixture hash within each failing/passing pair:

  • CLI envelope: 1 passing control and 1 failing regression, then 2/2 passed.
  • Primary field recovery: 13 passing controls and 2 failing regressions, then 15/15 passed.

The final matrix passed 26/26, including Chat/Responses/Claude, CLI 403/404 fallback, reasoning 400/422 versus field 400, learning across calls and model separation, caller immutability, tool restoration, useful SSE, bounded retries and abort.

The 39-file importer/related selection reported 411 runner entries: 410 passed and one suite-process wrapper failed, with no skipped/cancelled tests. All seven assertions in that legacy suite passed, but its intentional real-network-failure case caused three connection attempts blocked by the deny-all guard (exit86). The unchanged suite then passed 7/7 with one exact synthetic transport failure and zero network attempts. This complementary run and the 26 focused cases overlap the selection; they are not added to its count. The initial wrapper failure is retained as a harness limitation.

Core/dashboard typechecks, both complexity gates, focused ESLint/Prettier, file-size, changelog integrity and test discovery passed. Independent SPEC/Standards review found no blockers and verified excluded dependencies unchanged. Tests use synthetic state and intercepted transport; no live provider account was used.

Normal automatic commit hooks passed with all three file hashes unchanged. Source/test, anti-masking and PR-evidence policies passed against the actual committed diff before publication. Hosted CI and merge remain pending.

@github-actions

Copy link
Copy Markdown
Contributor

CI Coverage Report

  • Coverage job: skipped
  • PR test policy: success

Coverage artifact was not available for this run.

@diegosouzapw
diegosouzapw merged commit b7e8119 into release/v3.8.52 Oct 10, 2026
27 of 50 checks passed
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