Skip to content

fix(providers): restore compatibility ranges for every harness - #13328

Merged
juliusmarminge merged 2 commits into
mainfrom
provider-compatibility/restore-harness-ranges
Sep 24, 2026
Merged

juliusmarminge merged 2 commits into
mainfrom
provider-compatibility/restore-harness-ranges

Conversation

@juliusmarminge

@juliusmarminge juliusmarminge commented Sep 24, 2026 •

Copy link
Copy Markdown
Member

The compatibility feature in #13130 only shipped an OpenCode policy. Codex, Claude, Cursor, Grok, and Antigravity could not report their compatibility through the existing warning and update checks.

Restore policy coverage for every built-in harness and recognize Cursor build hashes and Antigravity semver release tags. Other prereleases and dated release candidates remain unknown. Preserve probe health and existing client presentation.

Harness Policy
Codex Supported at >=0.129.0; broken below the restored floor
Claude Supported at >=2.1.280; limited at >=2.1.111; unsupported below that
Cursor Supported at >=2026.05.09; older builds unknown
Grok Supported at >=1.0.13; older releases unknown
OpenCode Supported at >=1.14.19; broken below that
Antigravity The pinned 1.1.1 release is supported; other versions unknown

Codex and Cursor baselines come from Julius's original #2642. Claude's boundaries match the bundled model catalog and the policy from #13131. Grok 1.0.13 was verified live in #9154; Antigravity uses the pinned runtime introduced in #9348. No old exact-version recommendation or OpenCode upper cap is restored.

Verification: 117 focused tests pass across manifest loading, compatibility, updater safety, registry/cache behavior, and web presentation. Server typecheck, scoped lint, and formatting pass. A regression test requires a bundled policy for every built-in harness. Generic updater fixtures use an explicit synthetic policy so production floors do not bypass their command tests.

Before/after behavior from actual base effaab94e36992ea9712c2a56d5ff602a3cead04 and this branch:

Harness     Version                   Before       After
Codex       0.128.0                   no policy    broken
Codex       0.129.0                   no policy    supported
Claude      2.1.110                   no policy    unsupported
Claude      2.1.279                   no policy    graceful
Claude      2.1.280                   no policy    supported
Cursor      2026.05.09-a1b2c3d        no policy    supported
Grok        1.0.13                    no policy    supported
OpenCode    1.14.19                   unknown      supported
Antigravity agy_acp_server_1.1.1      no policy    supported

Full before/after output. This is a manifest/resolver change with no UI markup or styling changes, so evidence uses observable compatibility results rather than screenshots.

Codex 0.129.0 was also probed in an isolated empty temporary home. Today's schemas accepted its initialize, account/read, model/list, and skills/list responses. This smoke check did not use credentials or run an authenticated model turn. No live runtime verification was repeated for the other harnesses.

Prepared by GPT-6 in Codex.


Devin Review

Summary by CodeRabbit

  • Bug Fixes
    • Provider compatibility status now reflects defined version ranges for Codex, Claude Agent, Cursor, Grok, OpenCode, and Antigravity.
    • Cursor build-date versions and Antigravity release tags are recognized when they match supported version formats; prereleases and unrecognized tags remain unknown.
    • OpenCode versions below 1.14.19 remain marked broken, while version 1.14.19 and later are marked supported.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Sep 24, 2026
@macroscopeapp

macroscopeapp Bot commented Sep 24, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — The change activates compatibility policies across all built-in providers and uses them to influence warnings, recommendations, and whether provider updates may run. That production update gating is broader than a passive manifest correction, so human review is appropriate.

You can add or adjust custom eligibility rules. Learn more.

@github-actions

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 13.5 KiB 13.5 KiB −5 B (−0.0%) 15.1 KiB ✅
Codex Thread snapshot wire 7.1 KiB 7.0 KiB −3 B (−0.0%) 7.3 KiB ✅
Codex Live turn WebSocket wire 6.5 KiB 6.5 KiB −2 B (−0.0%) 7.8 KiB ✅
Codex Live turn WebSocket decoded 56.3 KiB 56.3 KiB 0 B (0.0%) 66.4 KiB ✅
Codex Live turn messages 10 10 0 (0.0%) 21 ✅
Claude Total thread wire 13.5 KiB 13.5 KiB −4 B (−0.0%) 15.1 KiB ✅
Claude Thread snapshot wire 7.1 KiB 7.1 KiB +1 B (+0.0%) 7.3 KiB ✅
Claude Live turn WebSocket wire 6.4 KiB 6.4 KiB −5 B (−0.1%) 7.8 KiB ✅
Claude Live turn WebSocket decoded 57.0 KiB 57.0 KiB 0 B (0.0%) 66.4 KiB ✅
Claude Live turn messages 9 9 0 (0.0%) 21 ✅

Baseline: effaab9 · PR result: c900547 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 114.0 KiB
  • Claude decoded thread snapshot: 114.6 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@juliusmarminge
juliusmarminge merged commit d4cd7d5 into main Sep 24, 2026
23 of 25 checks passed
@juliusmarminge
juliusmarminge deleted the provider-compatibility/restore-harness-ranges branch September 24, 2026 00:33
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 24, 2026
## What's Changed
* fix(ci): shard release tests like pull request CI by @juliusmarminge in pingdotgg/t3code#13321
* fix(web): show previous worktree branch on second line by @Yash-Singh1 in pingdotgg/t3code#13314
* fix(providers): restore compatibility ranges for every harness by @juliusmarminge in pingdotgg/t3code#13328
* fix(preview): use the visible browser for new agent sessions by @Bil0000 in pingdotgg/t3code#13064
* fix(server): stop replaying old agent alerts on restart by @juliusmarminge in pingdotgg/t3code#13340
* fix(web): use a brain icon for the effort dropdown by @t3-code[bot] in pingdotgg/t3code#13309
* fix(desktop): SnapShot shortcut helper no longer adds a Dock icon on macOS by @Gigioxx in pingdotgg/t3code#13286
* fix(web): composer chip rings no longer clip at the editor edge by @flamboh in pingdotgg/t3code#13301
* fix(web): switches announce their real state to screen readers by @Leos-Khai in pingdotgg/t3code#11580
* fix(shared): preserve final quoted empty CSV records by @Lucenx9 in pingdotgg/t3code#11425
* feat(web): add an interactive 3D device workspace by @juliusmarminge in pingdotgg/t3code#12787


**Full Changelog**: pingdotgg/t3code@v0.0.43-nightly.20260923.2173...v0.0.43-nightly.20260924.2187

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.43-nightly.20260924.2187
aorwall added a commit to aorwall/t3code that referenced this pull request Sep 24, 2026
Merges `pingdotgg/t3code` up to `78af372cf`: 27 commits on top of base
`aca3c87cd`. It branches from `main`; no earlier merge PR was open.

## Resolution

Six files conflicted, and each was resolved with the verdict
`preflight.mjs` printed:
- `AGENTS.md` (decide): the fork's Taste prose stays. Upstream's rule
change is folded into it: `shadcn/no-restyle` now fails lint, and a look
that belongs to one feature stays in that feature's component.
- `GitActionsControl.tsx`, `ProjectScriptsControl.tsx`,
`settings/ProjectActionsList.tsx`, `settings/SettingsSidebarNav.tsx`
(converged): these take upstream's markup that no longer restyles `ui`
components. The `FEATURES.openInEditor` gate, the
`editable`/`taskScoped` gates and the personal/admin settings-nav split
are re-applied at their new anchors.
- `pnpm-lock.yaml` (theirs): upstream's copy, re-derived with
`install.mjs`.

`projectScriptEditor.tsx` merged without a conflict but had no
path-policy entry, so it now has one: `project-script-editor`.

**Changes needed after the merge.** Upstream pingdotgg#13210 made
`shadcn/no-restyle` a lint error. That surfaced 65 violations, all in
fork-only files, and I fixed them at the call sites:
- `DialogPanel` in the Moatless settings dialogs keeps its own padding.
- Inputs use `font="mono"`.
- The sandbox tooltip uses `variant="code"`.
- The repository search field uses `InputGroup`.
- Muted captions in the sidebar filter are plain elements.
- The task-link empty state uses the `Empty` defaults.

`ui/textarea.tsx` gained the same `font` prop `Input` already has,
recorded as inventory entry `textarea-mono-font`. **Visual change to
review:** these panels now use the `ui` defaults for font size (13px →
14px) and dialog padding.

## Numbers
- Landed: 255 files, against 239 in the upstream range. The gap of 16 is
the lint fixes above plus `docs/fork/inventory.json`.
- Fork delta: 787 files.

## Verification
`verify.mjs` passed all 10 checks, including the full test step. The
unsupported-method derivation had nothing to add or drop.

## Feature classification

### Usable as-is
- Back/forward navigation with mod+[ and mod+] (pingdotgg#13212,
`AppSidebarLayout.tsx`, keybindings contract).
- Command palette sorts title matches by recent activity (pingdotgg#13219).
- The previous worktree branch shows on a second line in the branch
toolbar (pingdotgg#13314).
- A context-chip component, `ui` components owning their own variants,
composer chip rings no longer clip, a brain icon for the effort
dropdown, and accessible switch state (pingdotgg#13192–pingdotgg#13210, pingdotgg#13301, pingdotgg#13309,
pingdotgg#11580).
- CSV preview keeps a final quoted empty record (pingdotgg#11425).
- Mobile recovers from screen render errors (pingdotgg#13197); mobile version
bump.

### Unsupported in Moatless / needs implementation
- **Interactive 3D device workspace** (pingdotgg#12787,
`apps/web/src/components/device/**`). It sits behind the existing
`FEATURES.deviceHub` gate, and the `device.*` methods are still not
dispatched. It is covered by the existing device-hub gap.
- **Preview automation drives the visible browser for new agent
sessions** (pingdotgg#13064, `PreviewAutomationBroker.ts`,
`previewAutomation.ts`). Added to the existing preview-automation gap.
- **Mobile environment and provider update management** (pingdotgg#13302). It is
a paired-device surface, covered by the existing mobile gap.
- Desktop-only fixes (SnapShot Dock icon pingdotgg#13286, keyring test removal):
not applicable.

### Backend behavior to consider reproducing in Moatless
- **Don't replay stale agent alerts after a restart** (pingdotgg#13340,
`AgentAwarenessRelay.ts`). The relay publishes a completed or failed
thread only if its latest turn finished after the server started.
- **Normalise vendor-specific provider versions before the compatibility
check** (pingdotgg#13328, `providerCompatibility.ts`, `model-manifest.json`). It
strips Cursor's build hash and Antigravity's `agy_acp_server_` prefix,
and restores the ranges for every harness.

Both are recorded under "Runtime fixes upstream made to its own server"
in `docs/fork/gaps.md`. The tracker entry is in
`docs/fork/upstream-merge-log.md`.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---
Moatless task:
https://moatless.soaplabstest.com/tasks/0735cf38-d4cd-497a-87e7-ed2bc5c58ba6
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M 30-99 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant