Skip to content

fix(provider): add glm-5.3 to zai_coding provider - #3847

Closed
aditzel wants to merge 3 commits into
tailcallhq:mainfrom
aditzel:add-glm-5.3-zai-coding
Closed

aditzel wants to merge 3 commits into
tailcallhq:mainfrom
aditzel:add-glm-5.3-zai-coding

Conversation

@aditzel

@aditzel aditzel commented Aug 18, 2026

Copy link
Copy Markdown

Summary

GLM-5.3 was released on 2026-08-14 and is available to all GLM Coding Plan subscribers (announcement, docs), but it is missing from the hardcoded zai_coding model catalog. This PR adds it.

Changes

  • crates/forge_repo/src/provider/provider.json — Added glm-5.3 as the first model under the zai_coding provider, mirroring the existing glm-5.2 entry schema:
    • context_length: 1048576 (1M, per official docs)
    • tools_supported, supports_parallel_tool_calls, supports_reasoning: true
    • input_modalities: ["text"] (GLM-5.3 is text-only)
    • Description notes the 50% coding gain over GLM-5.2, 1M context, 128K max output, and always-on reasoning (low/high/max)

Why only zai_coding and not zai

The GLM Coding Plan endpoint (https://api.z.ai/api/coding/paas/v4) serves GLM-5.3 to all plan tiers now. The general Model API endpoint still lists GLM-5.3 as "available soon" (docs), so the entry is intentionally not added to the zai provider yet.

Notes for reviewers

  • z.ai routes requests for glm-5.2/glm-5.1 to GLM-5.3 server-side (devpack docs), so existing users are unaffected; this just makes the real model ID selectable.
  • GLM-5.3 does not support disabling reasoning — Forge's thinking transformation for zai providers already always maps reasoning.enabled to thinking: {type: enabled}, which matches the required payload.
  • Purely additive JSON change; validated parse + schema parity with the glm-5.2 entry. No existing tests reference zai model lists, so no test changes were needed.

Verification

  • provider.json parses cleanly and the new entry uses the identical key set as glm-5.2
  • Confirmed GLM-5.3 specs against official docs (1M context, 128K output, text-only, always-on reasoning)
  • Confirmed no zai-specific model assertions in provider_repo.rs or integration tests

GLM-5.3 was released on 2026-08-14 and is available to all GLM Coding
Plan subscribers, but was missing from the hardcoded zai_coding catalog.

Adds the glm-5.3 model entry with specs from the official docs:
- 1M context window, 128K max output
- text-only input
- always-on reasoning (low/high/max effort), tools + parallel calls

Not added to the general 'zai' provider: the Model API endpoint for
GLM-5.3 is not yet live (docs list it as 'available soon').
@CLAassistant

CLAassistant commented Aug 18, 2026 •

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@github-actions github-actions Bot added type: fix Iterations on existing features or infrastructure. type: provider Updates provider.json configuration. labels Aug 18, 2026
@amitksingh1490
amitksingh1490 enabled auto-merge (squash) August 18, 2026 01:59
@github-actions

Copy link
Copy Markdown

Action required: PR inactive for 5 days.
Status update or closure in 10 days.

@github-actions github-actions Bot added the state: inactive No current action needed/possible; issue fixed, out of scope, or superseded. label Aug 23, 2026
@aditzel

aditzel commented Aug 23, 2026

Copy link
Copy Markdown
Author

Lint Fix failure is pre-existing on main — not caused by this PR

The Lint Fix (autofix.ci) check on this PR fails, but the failure reproduces identically on main itself. This PR only touches crates/forge_repo/src/provider/provider.json and is up to date with main, so it simply inherited the breakage.

Failure

Clippy double_must_use escalated to an error by -D warnings:

error: this function has a `#[must_use]` attribute with no message, but returns a type
already considered as `#[must_use]`

11 unique locations, all in forge_domain:

  • crates/forge_domain/src/hook.rs:124
  • crates/forge_domain/src/repo.rs:22, 47, 98, 109, 120, 185, 198, 222, 242
  • crates/forge_domain/src/result_stream_ext.rs:11

Evidence it's pre-existing

Run Branch/SHA Nightly Result
31225238584 main @ 4c6b68f6 (Aug 7) 1.99.0-nightly (84b36a78a 2026-08-06) ✅ pass
31233723926 main @ 6ed5d37b (Aug 8) 1.99.0-nightly (1a98b1e13 2026-08-07) ❌ fail — same 11 locations
32090104272 this PR (Aug 20) current nightly ❌ fail — same 11 locations

No relevant code changed between the green and red main runs (only dependency chores: two-face, libsqlite3-sys, diesel, clap_complete). The trigger was the nightly toolchain roll — the autofix workflow uses toolchain: nightly unpinned, so clippy behavior changed overnight.

Root cause

The workspace pins async-trait = "0.1.89" (root Cargo.toml). #[async_trait] generates code that adds #[must_use] to methods returning anyhow::Result<()> — and Result is already #[must_use], so clippy's double_must_use fires on the macro expansion (the errors note: "this warning originates in the attribute macro async_trait").

Upstream fixed this the same day main broke: async-trait 0.1.92 (released 2026-08-08) — "Resolve double_must_use clippy lint in generated code (#303)". The repo is on 0.1.89, so it never picked up the fix.

Suggested fix

Bump the workspace dependency (semver-compatible patch containing exactly this fix):

# Cargo.toml
async-trait = "0.1.92"   # was "0.1.89"

plus cargo update -p async-trait to refresh Cargo.lock.

Optional hardening, separately worth considering:

  • Pin the workflow's nightly (e.g. nightly-2026-08-06) so lint behavior can't change under you overnight. Trade-off: you lose new-lint drift detection until you deliberately roll the pin.
  • Note rust-toolchain.toml pins stable 1.97 while autofix.ci overrides with unpinned nightly — that's why CI and local stable builds can disagree.

This blocks every PR opened since Aug 8 (mergeable_state: blocked with Build and Test green). Happy to open the one-line bump PR + Cargo.lock update if that's useful — just say the word.

@github-actions github-actions Bot removed the state: inactive No current action needed/possible; issue fixed, out of scope, or superseded. label Aug 23, 2026
Nightly clippy -Dwarnings fails on #[async_trait] generated code with
async-trait 0.1.89. Upstream fixed this in 0.1.92.

Co-Authored-By: ForgeCode <noreply@forgecode.dev>

Co-authored-by: Allan Ditzel <aditzel@users.noreply.github.com>
auto-merge was automatically disabled August 27, 2026 00:31

Head branch was pushed to by a user without write access

@amitksingh1490
amitksingh1490 enabled auto-merge (squash) August 28, 2026 12:33
@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown

Action required: PR inactive for 5 days.
Status update or closure in 10 days.

@github-actions github-actions Bot added the state: inactive No current action needed/possible; issue fixed, out of scope, or superseded. label Sep 2, 2026
auto-merge was automatically disabled September 6, 2026 20:39

Head branch was pushed to by a user without write access

@aditzel
aditzel force-pushed the add-glm-5.3-zai-coding branch from badd13e to 02553c3 Compare September 6, 2026 20:39
@aditzel

aditzel commented Sep 6, 2026

Copy link
Copy Markdown
Author

@amitksingh1490 re-requesting review — rebased under my own identity to clear the CLA (no content changes; range-diff confirms patches are identical). Thanks!

@github-actions github-actions Bot removed the state: inactive No current action needed/possible; issue fixed, out of scope, or superseded. label Sep 6, 2026
@github-actions

Copy link
Copy Markdown

Action required: PR inactive for 5 days.
Status update or closure in 10 days.

@github-actions github-actions Bot added the state: inactive No current action needed/possible; issue fixed, out of scope, or superseded. label Sep 11, 2026
@github-actions

Copy link
Copy Markdown

PR closed after 10 days of inactivity.

@github-actions github-actions Bot closed this Sep 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

state: inactive No current action needed/possible; issue fixed, out of scope, or superseded. type: fix Iterations on existing features or infrastructure. type: provider Updates provider.json configuration.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants