Skip to content

feat(providers): seed Kimi K3.1 Pro on the Moonshot API preset - #7695

Merged
lidge-jun merged 2 commits into
devfrom
lane/m4-moonshot-k31
Oct 24, 2026
Merged

lidge-jun merged 2 commits into
devfrom
lane/m4-moonshot-k31

Conversation

@lidge-jun

@lidge-jun lidge-jun commented Oct 24, 2026 •

Copy link
Copy Markdown
Owner

Summary

The moonshot (Kimi API) preset now seeds kimi-k3.1-pro and kimi-k3.1-pro-highspeed. Before this change the picker never offered them, and a routed request got no 1M window and no effort ladder (the price rows already landed in #7657, the seeds did not).

Everything below comes from official Moonshot platform pages only, fetched 2026-10-25:
models.md (both ids listed as current; China: platform.kimi.com/docs/models.md lists the same ids),
pricing/chat.md ("All K3 series models support a 1,048,576-token context window"),
K3.1 Pro quickstart and
models-overview.md ("kimi-k3.1-pro and kimi-k3.1-pro-highspeed also have the same parameter constraints as kimi-k3").

kimi-k3.1-pro / -highspeed (new) kimi-k3 (unchanged)
context window 1,048,576 1,048,576
input text + image text + image
reasoning always on; low/high/max, default max max only
wire map medium→high, xhigh→max, none → field omitted —
fixed sampling stripped, reasoning content preserved yes yes
tool_choice: required allowed (not auto-only) yes yes
  • none is omitted, not sent. K3.1 Pro cannot disable thinking and documents only low/high/max, so an explicit none uses REASONING_EFFORT_OMIT_SENTINEL and the upstream default (max) applies.
  • Saved configs get the new ids. Enrichment never rewrites a saved models list, and the picker reads it, so existing installs would never see K3.1 Pro. A moonshot row in STALE_MODEL_ROSTERS refreshes only a list that is byte for byte the previous seed, and only on the International or China endpoint (or no saved URL). Edited lists and Custom URLs are left alone. The previous seed is a frozen literal, so a later K2 retirement cannot change what this matches.
  • Docs: one English paragraph in guides/providers.md. Translated pages don't contradict it, and no preset count changed.
  • Structure docs: no edit. providers-and-adapters.md (owned by lane M5, 600/600) still reads correctly: line 87 covers the Kimi Coding seeds, and line 394 covers the generic stale-roster contract this change adds a data row to. chat-compat.md covers wire compatibility, not seeds. Per structure/AGENTS.md, a reviewed doc that stays accurate is not rewritten.

Owner decisions, deliberately not in this PR: the K2 series closes to new accounts on 2026-10-31 and retires by the end of December 2026 (models.md). This PR does not change the preset default (kimi-k2.7-code, entries-extended.ts), drop the K2 ids, or add rename migrations. Possible follow-ups: kimi-k3 on the API now also documents low/high/max (it is still seeded max-only), and the Kimi Coding presets still map none to "none" for their thinking-only K3/K3.1 ids.

Closes #7653

Verification

The regression tests failed on base 0aeaf0cb6b with only the test edits applied: bun test tests/providers/provider-registry-parity.test.ts tests/providers/model-roster-seed-repair.test.ts gave 85 pass / 3 fail (moonshot roster/metadata parity, the saved-row K3.1 wire test, and the saved roster refresh). After the fix: 88 / 0.

On merged head 8f0dddc40f (latest origin/dev merged in):

  • bun test (Bun 1.4.3) on provider-registry-parity, model-roster-seed-repair, usage-cost, reasoning-effort, codex-catalog, model-rename-migration: 630 pass / 0 fail, exit 0
  • bun run typecheck: exit 0
  • bun run privacy:scan: exit 0
  • bun run structure:check: exit 0
  • cd docs-site && bun install --frozen-lockfile && bun run build: exit 0 (593 pages, internal links checked)
  • OCX_TEST_RUNNER_BUN=<bun 1.4.3> bun run test:changed: on pre-merge head 889f80157b, 43,102 pass / 110 skip / 1 fail. On final head 8f0dddc40f, 43,088 pass / 110 skip / 17 fail / 5 errors. Every failure was a timeout in a server or timing test (image relay, account pool and main rotation, Codex plan/config lock, launcher PATH fallback, main quota observation, test-home guard), taking 2–27s against a 5s limit while the shared host's load average was 8–11. Re-running those 8 files alone on the final head gave 446 tests, 0 fail (bun test --isolate --preload ./tests/preload.ts with the 8 files). None of them touch the moonshot seeds.
  • Independent read-only review (GOAT task, codex/gpt-6.1-sol, high) at 8f0dddc40f: VERDICT: PASS, no findings. The reviewer also ran 663 focused tests (0 fail) and 72 extra request-body cases.

NOT RUN: full bun run test, because the host is shared (test:changed already covers the import graph of the changed files). GUI lint/tests were not run because gui/ is unchanged.

Checklist

  • Scope stays focused and avoids unrelated cleanup.
  • Docs or release notes were updated when needed.
  • Security-sensitive changes were reviewed for secrets, auth, and unsafe defaults.

The moonshot preset (api.moonshot.ai / api.moonshot.cn) now lists
kimi-k3.1-pro and kimi-k3.1-pro-highspeed next to kimi-k3 and the K2 ids,
per the official platform model list. Both get the 1,048,576-token window,
text + image input, and the documented always-thinking low/high/max ladder
(default max, medium -> high, xhigh -> max). An explicit "none" omits
reasoning_effort instead of sending an undocumented value. Sampling
parameters stay stripped and reasoning content is preserved.

Saved moonshot rows still carrying the previous built-in roster gain both
ids at startup through the existing stale-model-roster migration, limited
to the International and China endpoints; edited lists and Custom URLs are
left alone.

kimi-k3 keeps its max-only list, the K2 ids stay seeded, and the default
stays kimi-k2.7-code (open owner decision). Prices already landed in #7657.

Refs #7653
@lidge-jun
lidge-jun requested a review from Ingwannu as a code owner October 24, 2026 18:03
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 24, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-24T18:05:00.852274Z 8f0dddc PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@coderabbitai

coderabbitai Bot commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between 26598df and 8f0dddc.

Files selected for processing: 8
  • devlog/_plan/261025_moonshot_k31_seed/000_plan.md
  • devlog/_plan/261025_moonshot_k31_seed/010_phase1.md
  • docs-site/src/content/docs/guides/providers.md
  • src/providers/registry/entries-extended.ts
  • src/providers/registry/model-seeds.ts
  • src/providers/stale-model-roster-migration.ts
  • tests/providers/model-roster-seed-repair.test.ts
  • tests/providers/provider-registry-parity.test.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 8 remain after this review.

Walkthrough

The Moonshot registry adds Kimi K3.1 Pro and high-speed model metadata. A startup migration updates matching saved model rosters. Tests cover registry behavior and migration conditions, and the provider guide documents the models and preset behavior.

Changes: Moonshot K3.1 API models

Layer / File(s) Summary
Model seeds and registry metadata
devlog/_plan/261025_moonshot_k31_seed/000_plan.md, devlog/_plan/261025_moonshot_k31_seed/010_phase1.md, src/providers/registry/model-seeds.ts, src/providers/registry/entries-extended.ts, tests/providers/provider-registry-parity.test.ts
Adds both K3.1 Pro IDs to the Moonshot API roster with 1M context, text and image input, and a low/high/max reasoning ladder that defaults to max. The none setting omits the wire field. Registry parity tests cover model metadata and request serialization, including omitted sampling and penalty fields.
Saved roster migration
devlog/_plan/261025_moonshot_k31_seed/010_phase1.md, src/providers/stale-model-roster-migration.ts, tests/providers/model-roster-seed-repair.test.ts
Updates an exact pre-K3.1 roster for default, International, and China destinations. The migration adds context-window and default-reasoning metadata. Tests cover idempotence and preservation of custom URLs and edited rosters.
Provider guide updates
devlog/_plan/261025_moonshot_k31_seed/010_phase1.md, docs-site/src/content/docs/guides/providers.md
Documents model capabilities, reasoning mappings, omitted request parameters, and saved-roster migration conditions. The guide retains kimi-k2.7-code as the preset default and records K2 lifecycle dates.

Priority: Normal

Estimated code review effort: 3 (Moderate) | ~25 minutes

Change: Feature · Severity of issue fixed: Low

Possibly related PRs

  • lidge-jun/opencodex#7657: Adds the same K3.1 model IDs to the Kimi Coding roster and shared metadata, so those capabilities must remain consistent with the Moonshot API registry.

Suggested labels: enhancement, documentation

Merge Risk: Minimal · up to 8f0dd

The K3.1 seed and roster changes are ready for normal checks. Video input remains outside this change’s stated scope.

Pre-merge checks: Passed 3 · Failed 2

Failed Failed checks: 2 warnings

Check name Status Explanation Resolution
Linked Issues check Warning Issue #7653 requires the two moonshot K3.1 Pro IDs, a 1,048,576-token context, the low/high/max ladder, and text, image, and video input. The changed src/providers/registry/model-seeds.ts en… Add video capability for both K3.1 Pro IDs if the Moonshot API and the repository capability model support it. Update the registry metadata and adapter/catalog behavior as required. Add regression tests that verify video is advertised and a…
Docstring Coverage Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 5 files. (3 skipped: 3 … Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 3 passed
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title "feat(providers): seed Kimi K3.1 Pro on the Moonshot API preset" matches the main change. The PR adds kimi-k3.1-pro and kimi-k3.1-pro-highspeed to the moonshot preset, with their context win…
Out of Scope Changes check Passed The changed source paths implement #7653: src/providers/registry/model-seeds.ts adds the K3.1 Pro seed and capability data, src/providers/stale-model-roster-migration.ts repairs untouched saved Mo…
Full details: Title check

Explanation

The title "feat(providers): seed Kimi K3.1 Pro on the Moonshot API preset" matches the main change. The PR adds kimi-k3.1-pro and kimi-k3.1-pro-highspeed to the moonshot preset, with their context window, reasoning-effort ladder, and image input. The title is concise, uses a conventional prefix, and names the provider and model. It does not mention the stale-roster migration, but that is a supporting part of the change, so the title is still accurate.

Full details: Out of Scope Changes check

Explanation

The changed source paths implement #7653: src/providers/registry/model-seeds.ts adds the K3.1 Pro seed and capability data, src/providers/stale-model-roster-migration.ts repairs untouched saved Moonshot rosters, and the registry and roster tests cover those behaviors. The provider guide and devlog/_plan/261025_moonshot_k31_seed files document the same change. No unrelated cleanup or provider behavior appears in the supplied change summary.

Full details: Linked Issues check

Explanation

Issue #7653 requires the two moonshot K3.1 Pro IDs, a 1,048,576-token context, the low/high/max ladder, and text, image, and video input. The changed src/providers/registry/model-seeds.ts entries provide the IDs, context, reasoning maps, and ['text', 'image'] metadata. They do not provide video input. The added parity and roster tests cover the IDs, wire mapping, metadata, and saved-roster repair, but they do not establish video support. The K2 retirement request is planning work, not a coding requirement for this assessment.

Resolution

Add video capability for both K3.1 Pro IDs if the Moonshot API and the repository capability model support it. Update the registry metadata and adapter/catalog behavior as required. Add regression tests that verify video is advertised and accepted for both IDs. If the repository cannot represent or route video, document that specific limitation and update the issue requirement before merging.

Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 5 files. (3 skipped: 3 unsupported.)

Resolution

Write docstrings for the functions missing them to satisfy the coverage threshold.

Finishing Touches: 💡 1
📝 Generate docstrings: 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

✅ Deterministic PR hygiene checks passed.

@github-actions github-actions Bot added the enhancement New feature or request label Oct 24, 2026
@lidge-jun

Copy link
Copy Markdown
Owner Author

Local CI-equivalent (Linux) at 8f0dddc

PASS under the temporary base-identical exception; raw failed exits are retained below.

Host lidge-AI-AI; Ubuntu 24.04.4 LTS x86_64; kernel 7.0.0-30-generic. Pressure before suite: ok, load 3.19, 16 CPUs, available memory 22.5 GiB.
Exact detached/tested SHA 8f0dddc40f4902367c9fce2b85d2f0f9e1285080; brief SHA 8f0dddc40f4902367c9fce2b85d2f0f9e1285080; head moved: False. Comparison base 26598df2c4c07d781e344ac6119953fed77ecb27; merge-base 26598df2c4c07d781e344ac6119953fed77ecb27. Workflow and setup-action authority are the files at this exact head. Bun test-runner 1.4.3 / runtime 1.4.4, scratch-installed binaries verified and first on PATH for their respective roles.

Environment: CI=true, private 0700 OPENCODEX_TEST_TRUSTED_FIXTURE_DIR=/home/lidgeai/ocx-linux-r2.uFsToH/trusted-fixtures. GIT_DIR, GIT_INDEX_FILE, GIT_WORK_TREE explicitly unset. Default scope/general, batch size ≤12, no parallel override; original 120s batch deadline, 15s kill grace, --timeout 60000 retained. Original planner/runner functions are unchanged except absolute script-directory anchors; the final loop continues after a failed batch without retrying it. Shared identical frozen installs/GUI build were executed once.

Selectors: ci=True, GUI=False, docs=True, structure=False. The requested direct structure check runs as well.

Shard Completed / selected batches Complete
1/4 64/64 True
2/4 58/58 True
3/4 62/62 True
4/4 65/65 True

Test-file coverage: 2600/2600 general files, no gaps/duplicates: True. Dedicated storage-policy/api-usage and GUI tests are separate below.

Command Bun Exit Pass / fail / skip
bun install --frozen-lockfile 1.4.3 0 N/A
cd gui && bun install --frozen-lockfile 1.4.3 0 N/A
cd gui && bun run build 1.4.3 0 N/A
bash /home/lidgeai/ocx-linux-r2.uFsToH/evidence-7695-8f0dddc40f/shard-1.sh 1/4 (full-coverage continuation of scripts/ci/run-bun-test-batches.sh) 1.4.3 0 13490/0/21
bash /home/lidgeai/ocx-linux-r2.uFsToH/evidence-7695-8f0dddc40f/shard-2.sh 2/4 (full-coverage continuation of scripts/ci/run-bun-test-batches.sh) 1.4.3 0 12592/0/52
bash /home/lidgeai/ocx-linux-r2.uFsToH/evidence-7695-8f0dddc40f/shard-3.sh 3/4 (full-coverage continuation of scripts/ci/run-bun-test-batches.sh) 1.4.3 0 13685/0/89
bash /home/lidgeai/ocx-linux-r2.uFsToH/evidence-7695-8f0dddc40f/shard-4.sh 4/4 (full-coverage continuation of scripts/ci/run-bun-test-batches.sh) 1.4.3 1 12550/0/11
bun x tsc --noEmit 1.4.3 0 N/A
bun x tsc --noEmit -p tests/tsconfig.doctor-service-memory-contract.json 1.4.3 0 N/A
bun x tsc --ignoreConfig --noEmit --strict --target ESNext --module ESNext --moduleResolution bundler --types bun-types --skipLibCheck scripts/ci/docker-smoke.ts 1.4.3 0 N/A
cd gui && bun test --isolate tests 1.4.3 0 3515/0/0
bun run privacy:scan 1.4.3 0 N/A
bun run skill:surface:check 1.4.3 0 N/A
bun build scripts/release.ts --target=bun --outdir=.tmp/ci-release-script-check 1.4.3 0 N/A
bun run src/cli/index.ts help 1.4.3 0 N/A
bun run structure:check 1.4.4 0 N/A
bun test --isolate ./tests/storage/api-storage-policy-already-running.test.ts ./tests/storage/api-storage-policy-mutation-busy.test.ts ./tests/storage/api-storage-policy-put-race.test.ts ./tests/storage/api-storage-policy-run.test.ts ./tests/storage/api-storage-policy.test.ts ./tests/storage/api-storage.test.ts 1.4.3 0 9/0/0
bun test --isolate ./tests/server/api-usage.test.ts 1.4.3 0 34/0/0
cd docs-site && bun install --frozen-lockfile 1.4.4 0 N/A
cd docs-site && bun run build 1.4.4 0 N/A

Every batch uses bun test --isolate --timeout 60000 <exact manifest files> under the unchanged process deadline:

Shard / batch Exit Pass Fail Skip
1/4, 1/64 0 267 0 0
1/4, 2/64 0 187 0 0
1/4, 3/64 0 323 0 0
1/4, 4/64 0 308 0 0
1/4, 5/64 0 373 0 0
1/4, 6/64 0 244 0 3
1/4, 7/64 0 214 0 0
1/4, 8/64 0 300 0 0
1/4, 9/64 0 342 0 0
1/4, 10/64 0 371 0 0
1/4, 11/64 0 64 0 0
1/4, 12/64 0 8 0 0
1/4, 13/64 0 274 0 2
1/4, 14/64 0 215 0 0
1/4, 15/64 0 162 0 0
1/4, 16/64 0 184 0 0
1/4, 17/64 0 634 0 0
1/4, 18/64 0 197 0 0
1/4, 19/64 0 319 0 0
1/4, 20/64 0 433 0 1
1/4, 21/64 0 245 0 0
1/4, 22/64 0 182 0 1
1/4, 23/64 0 23 0 0
1/4, 24/64 0 14 0 0
1/4, 25/64 0 24 0 0
1/4, 26/64 0 209 0 0
1/4, 27/64 0 220 0 0
1/4, 28/64 0 73 0 0
1/4, 29/64 0 106 0 0
1/4, 30/64 0 43 0 0
1/4, 31/64 0 53 0 0
1/4, 32/64 0 105 0 0
1/4, 33/64 0 226 0 6
1/4, 34/64 0 229 0 0
1/4, 35/64 0 210 0 0
1/4, 36/64 0 316 0 0
1/4, 37/64 0 200 0 0
1/4, 38/64 0 179 0 0
1/4, 39/64 0 342 0 0
1/4, 40/64 0 271 0 0
1/4, 41/64 0 360 0 0
1/4, 42/64 0 246 0 0
1/4, 43/64 0 185 0 0
1/4, 44/64 0 247 0 0
1/4, 45/64 0 177 0 0
1/4, 46/64 0 290 0 0
1/4, 47/64 0 271 0 0
1/4, 48/64 0 292 0 0
1/4, 49/64 0 241 0 0
1/4, 50/64 0 272 0 0
1/4, 51/64 0 335 0 0
1/4, 52/64 0 186 0 0
1/4, 53/64 0 221 0 0
1/4, 54/64 0 295 0 2
1/4, 55/64 0 188 0 0
1/4, 56/64 0 100 0 0
1/4, 57/64 0 61 0 0
1/4, 58/64 0 80 0 0
1/4, 59/64 0 5 0 0
1/4, 60/64 0 212 0 0
1/4, 61/64 0 186 0 0
1/4, 62/64 0 101 0 0
1/4, 63/64 0 111 0 0
1/4, 64/64 0 139 0 6
2/4, 1/58 0 297 0 0
2/4, 2/58 0 316 0 0
2/4, 3/58 0 239 0 0
2/4, 4/58 0 210 0 0
2/4, 5/58 0 214 0 0
2/4, 6/58 0 156 0 7
2/4, 7/58 0 217 0 0
2/4, 8/58 0 261 0 0
2/4, 9/58 0 237 0 1
2/4, 10/58 0 417 0 0
2/4, 11/58 0 292 0 0
2/4, 12/58 0 222 0 0
2/4, 13/58 0 244 0 2
2/4, 14/58 0 216 0 2
2/4, 15/58 0 165 0 0
2/4, 16/58 0 107 0 2
2/4, 17/58 0 15 0 0
2/4, 18/58 0 249 0 0
2/4, 19/58 0 503 0 3
2/4, 20/58 0 74 0 0
2/4, 21/58 0 92 0 0
2/4, 22/58 0 1 0 0
2/4, 23/58 0 17 0 0
2/4, 24/58 0 273 0 0
2/4, 25/58 0 332 0 1
2/4, 26/58 0 301 0 1
2/4, 27/58 0 231 0 1
2/4, 28/58 0 203 0 1
2/4, 29/58 0 211 0 0
2/4, 30/58 0 117 0 0
2/4, 31/58 0 88 0 0
2/4, 32/58 0 98 0 0
2/4, 33/58 0 282 0 0
2/4, 34/58 0 169 0 0
2/4, 35/58 0 130 0 0
2/4, 36/58 0 265 0 0
2/4, 37/58 0 234 0 0
2/4, 38/58 0 294 0 0
2/4, 39/58 0 229 0 0
2/4, 40/58 0 325 0 0
2/4, 41/58 0 160 0 0
2/4, 42/58 0 185 0 0
2/4, 43/58 0 406 0 0
2/4, 44/58 0 99 0 0
2/4, 45/58 0 269 0 0
2/4, 46/58 0 334 0 0
2/4, 47/58 0 232 0 0
2/4, 48/58 0 156 0 0
2/4, 49/58 0 188 0 0
2/4, 50/58 0 118 0 0
2/4, 51/58 0 147 0 0
2/4, 52/58 0 321 0 0
2/4, 53/58 0 238 0 0
2/4, 54/58 0 221 0 0
2/4, 55/58 0 245 0 2
2/4, 56/58 0 164 0 0
2/4, 57/58 0 240 0 0
2/4, 58/58 0 326 0 29
3/4, 1/62 0 233 0 0
3/4, 2/62 0 205 0 0
3/4, 3/62 0 322 0 0
3/4, 4/62 0 1 0 0
3/4, 5/62 0 168 0 0
3/4, 6/62 0 9 0 0
3/4, 7/62 0 249 0 0
3/4, 8/62 0 187 0 0
3/4, 9/62 0 278 0 0
3/4, 10/62 0 308 0 0
3/4, 11/62 0 188 0 2
3/4, 12/62 0 357 0 0
3/4, 13/62 0 220 0 0
3/4, 14/62 0 194 0 30
3/4, 15/62 0 200 0 4
3/4, 16/62 0 120 0 2
3/4, 17/62 0 191 0 0
3/4, 18/62 0 171 0 2
3/4, 19/62 0 250 0 9
3/4, 20/62 0 281 0 2
3/4, 21/62 0 442 0 0
3/4, 22/62 0 165 0 0
3/4, 23/62 0 81 0 23
3/4, 24/62 0 270 0 1
3/4, 25/62 0 335 0 0
3/4, 26/62 0 271 0 0
3/4, 27/62 0 187 0 0
3/4, 28/62 0 235 0 1
3/4, 29/62 0 162 0 0
3/4, 30/62 0 199 0 0
3/4, 31/62 0 223 0 0
3/4, 32/62 0 158 0 0
3/4, 33/62 0 240 0 0
3/4, 34/62 0 120 0 0
3/4, 35/62 0 18 0 0
3/4, 36/62 0 263 0 0
3/4, 37/62 0 264 0 0
3/4, 38/62 0 118 0 1
3/4, 39/62 0 314 0 0
3/4, 40/62 0 227 0 0
3/4, 41/62 0 290 0 0
3/4, 42/62 0 227 0 0
3/4, 43/62 0 552 0 0
3/4, 44/62 0 243 0 0
3/4, 45/62 0 314 0 0
3/4, 46/62 0 166 0 1
3/4, 47/62 0 504 0 0
3/4, 48/62 0 470 0 0
3/4, 49/62 0 326 0 2
3/4, 50/62 0 154 0 0
3/4, 51/62 0 148 0 0
3/4, 52/62 0 285 0 0
3/4, 53/62 0 109 0 0
3/4, 54/62 0 5 0 1
3/4, 55/62 0 55 0 0
3/4, 56/62 0 159 0 0
3/4, 57/62 0 153 0 0
3/4, 58/62 0 46 0 0
3/4, 59/62 0 188 0 0
3/4, 60/62 0 428 0 2
3/4, 61/62 0 108 0 0
3/4, 62/62 0 331 0 6
4/4, 1/65 0 207 0 0
4/4, 2/65 0 356 0 0
4/4, 3/65 0 245 0 0
4/4, 4/65 0 159 0 0
4/4, 5/65 0 261 0 0
4/4, 6/65 0 40 0 0
4/4, 7/65 0 43 0 0
4/4, 8/65 0 51 0 0
4/4, 9/65 0 196 0 0
4/4, 10/65 0 283 0 0
4/4, 11/65 0 169 0 0
4/4, 12/65 0 272 0 0
4/4, 13/65 0 414 0 2
4/4, 14/65 1 304 0 0
4/4, 15/65 0 364 0 0
4/4, 16/65 0 225 0 2
4/4, 17/65 0 223 0 0
4/4, 18/65 0 233 0 0
4/4, 19/65 0 106 0 0
4/4, 20/65 0 240 0 1
4/4, 21/65 0 330 0 0
4/4, 22/65 0 122 0 0
4/4, 23/65 0 373 0 1
4/4, 24/65 0 147 0 1
4/4, 25/65 0 19 0 0
4/4, 26/65 0 17 0 0
4/4, 27/65 0 326 0 1
4/4, 28/65 0 221 0 0
4/4, 29/65 0 172 0 0
4/4, 30/65 0 252 0 0
4/4, 31/65 0 111 0 0
4/4, 32/65 0 208 0 0
4/4, 33/65 0 159 0 0
4/4, 34/65 0 182 0 0
4/4, 35/65 0 336 0 0
4/4, 36/65 0 122 0 0
4/4, 37/65 0 334 0 0
4/4, 38/65 0 120 0 0
4/4, 39/65 0 179 0 0
4/4, 40/65 0 237 0 0
4/4, 41/65 0 204 0 0
4/4, 42/65 0 259 0 0
4/4, 43/65 0 242 0 0
4/4, 44/65 0 173 0 0
4/4, 45/65 0 224 0 0
4/4, 46/65 0 181 0 0
4/4, 47/65 0 141 0 0
4/4, 48/65 0 323 0 1
4/4, 49/65 0 289 0 0
4/4, 50/65 0 37 0 0
4/4, 51/65 0 26 0 0
4/4, 52/65 0 207 0 0
4/4, 53/65 0 283 0 0
4/4, 54/65 0 253 0 1
4/4, 55/65 0 333 0 0
4/4, 56/65 0 229 0 0
4/4, 57/65 0 22 0 0
4/4, 58/65 0 8 0 0
4/4, 59/65 0 164 0 0
4/4, 60/65 0 4 0 0
4/4, 61/65 0 115 0 0
4/4, 62/65 0 26 0 0
4/4, 63/65 0 232 0 0
4/4, 64/65 0 159 0 0
4/4, 65/65 0 58 0 1

Combined command counts: 55875 pass / 0 fail / 173 skip. Failed command/batch exits stay failed.

Failures:

  • BASE-IDENTICAL — test 4/4 batch 14/65, tests/cli/cli-models-reasoning.test.ts: test process exited nonzero with no failed assertions. Assertion identical test file and recorded assertion outcomes; nonzero process exit. Base exit 1, 304/0/0; bun test --isolate --timeout 60000 tests/cli/cli-json-input.test.ts tests/cli/cli-log-follow.test.ts tests/cli/cli-logout-runtime.test.ts tests/cli/cli-management-auth.test.ts tests/cli/cli-models-free-only.test.ts tests/cli/cli-models-price.test.ts tests/cli/cli-models-prompt-length-pricing.test.ts tests/cli/cli-models-reasoning.test.ts tests/cli/cli-provider-lifecycle-runtime.test.ts tests/cli/cli-provider-settings.test.ts tests/cli/cli-ready-subprocess.test.ts tests/cli/cli-resolve-subprocess.test.ts (Bun 1.4.3); log /home/lidgeai/ocx-linux-r2.uFsToH/base-evidence-26598df2c4-1.4.3/batch-d9f5026759072045.log. Exact failed batch and every file compared on base once. Individually reproduced with identical test-file bytes and case outcomes: ['tests/cli/cli-models-reasoning.test.ts']. Raw process failure remains failed.

Base command ledger (once per base/runtime/file or exact batch, cached across these PRs):

Command Bun Exit Pass / fail / skip
bun install --frozen-lockfile (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3) 1.4.3 0 0/0/0
bun install --frozen-lockfile (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3/gui) 1.4.3 0 0/0/0
bun run build (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3/gui) 1.4.3 0 0/0/0
bun test --isolate --timeout 60000 tests/cli/cli-json-input.test.ts tests/cli/cli-log-follow.test.ts tests/cli/cli-logout-runtime.test.ts tests/cli/cli-management-auth.test.ts tests/cli/cli-models-free-only.test.ts tests/cli/cli-models-price.test.ts tests/cli/cli-models-prompt-length-pricing.test.ts tests/cli/cli-models-reasoning.test.ts tests/cli/cli-provider-lifecycle-runtime.test.ts tests/cli/cli-provider-settings.test.ts tests/cli/cli-ready-subprocess.test.ts tests/cli/cli-resolve-subprocess.test.ts (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3) 1.4.3 1 304/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-json-input.test.ts (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3) 1.4.3 0 49/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-log-follow.test.ts (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3) 1.4.3 0 36/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-logout-runtime.test.ts (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3) 1.4.3 0 37/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-management-auth.test.ts (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3) 1.4.3 0 4/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-models-free-only.test.ts (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3) 1.4.3 0 4/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-models-price.test.ts (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3) 1.4.3 0 15/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-models-prompt-length-pricing.test.ts (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3) 1.4.3 0 10/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-models-reasoning.test.ts (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3) 1.4.3 1 18/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-provider-lifecycle-runtime.test.ts (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3) 1.4.3 0 61/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-provider-settings.test.ts (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3) 1.4.3 0 61/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-ready-subprocess.test.ts (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3) 1.4.3 0 3/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-resolve-subprocess.test.ts (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3) 1.4.3 0 6/0/0

NOT RUN: gates/GUI lint: GUI selector false; gates/GUI build: GUI selector false; gates/Record dashboard preview source: GUI selector false; GitHub Actions checkout/setup/upload-artifact infrastructure and other platform/job legs outside this assignment; checkout, Bun role setup and dependency artifacts are reproduced locally

Fresh final PR head 8f0dddc40f4902367c9fce2b85d2f0f9e1285080; scratch HEAD 8f0dddc40f4902367c9fce2b85d2f0f9e1285080; source status clean. No PR branch/source edits, pushes, approvals, or merges were performed. Scratch worktrees are removed after posting; evidence logs remain outside them.

Exact per-batch file lists, exits and logs: /home/lidgeai/ocx-linux-r2.uFsToH/evidence-7695-8f0dddc40f/batches.json; command ledger /home/lidgeai/ocx-linux-r2.uFsToH/evidence-7695-8f0dddc40f/results.json; base comparisons /home/lidgeai/ocx-linux-r2.uFsToH/base-cache.json.

  • Manifest 1/4 SHA-256 16712891d7ce350ce702024fd75657bb77b4eaae94b34b59c2ebb8c13cce543b (/home/lidgeai/ocx-linux-r2.uFsToH/evidence-7695-8f0dddc40f/shard-1-manifest.tsv).
  • Manifest 2/4 SHA-256 d5d546123031baec24161223e6ef1c1ddfaed39214758163727815c8cdae5b4e (/home/lidgeai/ocx-linux-r2.uFsToH/evidence-7695-8f0dddc40f/shard-2-manifest.tsv).
  • Manifest 3/4 SHA-256 19e73657ad613ce34b3a18a8f0ac73a1926220a2721e37aa4ac8824963cedcb7 (/home/lidgeai/ocx-linux-r2.uFsToH/evidence-7695-8f0dddc40f/shard-3-manifest.tsv).
  • Manifest 4/4 SHA-256 b5504429c8103c80d7e192bbfe1ebccf828db9a4a16d586c88f9c5c03789cb62 (/home/lidgeai/ocx-linux-r2.uFsToH/evidence-7695-8f0dddc40f/shard-4-manifest.tsv).

UTC: 2026-10-24T21:59:29.814011+00:00

@lidge-jun

Copy link
Copy Markdown
Owner Author

Integration evidence (owner lane M4, maintainer integration): independent gpt-6.1-sol review PASS at 8f0dddc. Exact-head PR CI run 40118974221 succeeded; Linux real-machine CI-equivalent run on this head also passed with full coverage (comment above). Not Windows-sensitive. Seeds kimi-k3.1-pro only; K2 retirement and the preset default remain an open owner decision, so #7653 stays open for that part.

Static merge simulation on current dev d891cac (this Mac): dev=d891cac8ebb7c1bdf3bd4ada389084be06168de8 base=26598df2c4c07d781e344ac6119953fed77ecb27 pr_files= 8 overlap=[]; merge clean; install exit=0; gui install exit=0; tsc exit=0; tsc doctor exit=0; structure:check exit=0; privacy:scan exit=0; layout+ratchet guards exit=0 52 pass 0 fail ;

Merged by the triage manager as maintainer integration (MAINTAINERS.md, dev only) with green exact-head PR CI, an independent review PASS, and the owner's approval of this bundle.

@lidge-jun
lidge-jun merged commit f0bf610 into dev Oct 24, 2026
32 of 36 checks passed
@lidge-jun
lidge-jun deleted the lane/m4-moonshot-k31 branch October 24, 2026 23:44
@lidge-jun

Copy link
Copy Markdown
Owner Author

macOS real-machine CI-equivalent verification (round 2, owner lane mac3)

Result: PASS. Full macOS coverage. No INTRODUCED failures. Two control-leg tests failed once under host load; neither reproduces on this head or on dev (details below).

  • Host: Apple Mac16,9, macOS 26.6.2 (25G83), arm64, 16 cores, 64 GB. Command Line Tools only (no Xcode.app), Swift 6.4, rustc/cargo 1.99.0.
  • Exact head: 8f0dddc40f4902367c9fce2b85d2f0f9e1285080 (unchanged from the requested head; merge base and 0 behind dev 26598df2c4). Every leg used a fresh detached scratch worktree.
  • Bun: official bun-darwin-aarch64 release binaries pinned by this head: test runner testRunnerBun 1.4.3 (c6da4a4d3) for the four test legs, runtime dependencies.bun 1.4.4 (38afee6c8) for the widget leg.
  • Env: clean env -i (HOME/USER/TMPDIR/LANG/PATH only), CI=true RUNNER_OS=macOS, GNU coreutils timeout on PATH (as the workflow's "Setup bounded batch utilities" step adds), OPENCODEX_TEST_TRUSTED_FIXTURE_DIR set to a private 0700 scratch directory per leg, GIT_DIR/GIT_INDEX_FILE/GIT_WORK_TREE unset. Test legs used the workflow env: BUN_TEST_FILE_SCOPE=all BUN_TEST_BATCH_SIZE=12 BUN_TEST_PARALLEL=1 BUN_TEST_BATCH_TIMEOUT_SECONDS=300 OCX_TEST_NO_QUEUE=1 OCX_TEST_FULL_SUITE=1.
  • Coverage: scripts/ci/run-bun-test-batches.sh ran from a copy whose only change turns the two in-loop exit "$status" lines into "record and continue" (plus an absolute scripts/ci path for its sourced helpers). Every batch ran, and the copy exits with the first failing status. Legs ran one at a time after a host pressure check.
  • Selector: this diff matches none of the native, setup_action, or remote_helper filters, so the macOS keyring, npm-global, setup-action, and remote-helper legs are not selected. macos widget + bundle runs on every non-PR event and is included.
Leg Command Exit Files Pass Fail Skip Time
macos 1/3 Install dependencies 0 1s
macos 1/3 Build GUI 0 8s
macos 1/3 TEST_SHARD=1/3 ... bash scripts/ci/run-bun-test-batches.sh 1/3 0 869/869 (90 batches) 16879 0 104 671s
macos 1/3 bun run src/cli/index.ts help 0
macos 2/3 Install dependencies 0 1s
macos 2/3 Build GUI 0 8s
macos 2/3 TEST_SHARD=2/3 ... bash scripts/ci/run-bun-test-batches.sh 2/3 0 869/869 (85 batches) 17758 0 24 574s
macos 2/3 bun run src/cli/index.ts help 0
macos 3/3 Install dependencies 0 1s
macos 3/3 Build GUI 0 8s
macos 3/3 TEST_SHARD=3/3 ... bash scripts/ci/run-bun-test-batches.sh 3/3 0 869/869 (81 batches) 17728 0 40 654s
macos 3/3 bun run src/cli/index.ts help 0
macos control (1/1) Install dependencies 0 1s
macos control (1/1) Build GUI 0 8s
macos control (1/1) TEST_SHARD=1/1 ... bash scripts/ci/run-bun-test-batches.sh 1/1 1 2607/2607 (254 batches) 52363 2 168 2084s
macos control (1/1) bun run src/cli/index.ts help 0
macos widget + bundle Install dependencies 0 1s
macos widget + bundle Test MenuBarCore 1 MenuBarCoreTests 123 passed, 0 failed; NativeTrayTests did not compile 54s
macos widget + bundle Build dashboard 0 8s
macos widget + bundle Prepare desktop sidecar 0 1s
macos widget + bundle Build WidgetKit appex 0 93s
macos widget + bundle Build unsigned desktop app 1 33s
macos widget + bundle Verify WidgetKit appex and desktop app 1 0s

The shard legs cover 869 + 869 + 869 = 2607 files, which equals the control's membership.

Failures and classification

  1. macos control batch 240/254 (8 files under tests/update/):

    • tests/update/update-restart-lease.test.ts: lease fixture containment and cleanup controls > missing-ack fails graceful cleanup even after bounded fallback (holder did not acknowledge acquisition, :263)
    • tests/update/update-npm-cache-preflight.test.ts: npm cache access pre-flight > runs the real worker protocol against npm's configured cache path (got npm_config_failed, :242)

    Classification: NOT REPRODUCED (timing flake), not INTRODUCED and not BASE-IDENTICAL. On dev 26598df2c4 with the same runtime and env, both files pass alone (19/0 and 20 pass/1 skip/0 fail), and the exact eight-file batch passes (154 pass/2 skip/0 fail). On this head the same files passed in the shard legs, and the exact eight-file batch rerun passed (154/2/0). The PR touches no src/update code. Both tests wait on real child processes, and host load average was about 9 from unrelated processes during the control leg.

  2. macos widget + bundle: Test MenuBarCore exit 1 (MenuBarCoreTests 123 passed, 0 failed; NativeTrayTests failed to compile: external macro implementation type 'SwiftUIMacros.StateMacro' could not be found, app/Sources/NativeTray/AccountSwitch.swift:32). Build unsigned desktop app exit 1 from the same NativeTray Swift compile in build.rs. Verify WidgetKit appex and desktop app exit 1 because no app bundle was produced. Classification: BASE-IDENTICAL. dev 26598df2c4 fails the same three steps with an identical error set. This host has Command Line Tools without Xcode, so the SwiftUI macro plugin is unavailable. Build WidgetKit appex passed.

NOT RUN: macOS keyring, npm-global, setup-action, and remote-helper legs (not selected for this diff). A signed or Xcode-backed widget build is not possible on this host. The first control attempt was killed by a session failure partway through and is not counted; the control above is a full rerun from a fresh worktree.

No changes, pushes, approvals, or merges were made.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant