Skip to content

fix(release): drain v3.8.52 base-reds — #16956 fixtures, single customModels read in /api/models, stryker tap.testFiles - #17090

Merged
diegosouzapw merged 1 commit into
release/v3.8.52from
fix/release-v3.8.52-basereds-1018-sweep
Oct 18, 2026
Merged

diegosouzapw merged 1 commit into
release/v3.8.52from
fix/release-v3.8.52-basereds-1018-sweep

Conversation

@diegosouzapw

Copy link
Copy Markdown
Collaborator

⚠️ base-red inherited: #15306 — the full unit / integration / pack lanes time out under runner load on the base tip; this PR repairs the deterministic, code-level reds measured on the exact base a016744417.

Measured on the exact base a016744417 (2026-10-18)

Signature Class Repair here
managed-model-import "sync keeps a same-id manual model as the user-configurable metadata override" and admin-audit-events "deleting the final provider connection removes imported models but preserves manual models" — the stored manual row now carries endpointCapabilitySource: "operator" BASE-RED: #16956 (addCustomModel) persists the field for manual models by design; the two deepEqual fixtures were not updated fixtures learn the field (assertion intent unchanged: manual metadata survives sync / connection deletion)
api-models-hide-paid-6328 "/api/models retains genuine resolved vision capability for the Video Bridge picker" — customModels namespace bulk-read 2× per request, the guard allows 1 BASE-RED: #16956 made getAllActiveSyncedModels read customModels for the operator endpoint overlay, on top of the capability snapshot's vision read the snapshot owns the single read (readCustomModelsByProvider + buildCustomModelVisionOverrides) and exposes the rows; getAllActiveSyncedModels({ customModelsByProvider }) reuses them. Guard holds at 1 without loosening
Fast Quality Gates → check:mutation-test-coverage --strict: 4 covering unit tests missing from stryker.conf.json tap.testFiles BASE-RED: tests merged today (#16438, #16797, content-policy / stream-timing) without registration registered: content-policy-refusal, stream-timing-late-output, chat-empty-stream-recovery, provider-error-rules-opt-in-flags-16797
vitest open-sse/mcp-server/__tests__/audit.test.ts > MCP audit shutdown > checkpoints not reproduced: 8/8 in three local runs on the base → FLAKY / INFRA under load none
integration batch E2E: upload file, create batch, verify rate-limit logs appear (✖ at 250 s on CI) passes locally on the base (file takes 326 s) → load-sensitive, slow test none (debt: the poll loop needs minutes even idle)
integration #13389 catalog 1350-model cold, warm and concurrent budgets 9/9 locally on the base → load-dependent budget none
Release-Green lanes: test:unit:ci killed at 4800 s with output still flowing (10.7 MB), test:integration killed at 2400 s, build:cli killed at 1200 s after a 19-minute Next compile INFRA-RED: runner contention on omniroute-5 (report artifacts of run 39100729020) out of scope for code
Docs Sync (Strict) i18n drift + the four mirror tests BASE-RED (docs) separate i18n wave PR from docs/i18n-wave-1018 (in progress)

Validation (worktree HEAD 2015887e74)

  • RED → GREEN: the three failing tests fail on a016744417 and pass here — node --import tsx/esm --test tests/unit/managed-model-import.test.ts tests/unit/admin-audit-events.test.ts tests/unit/api-models-hide-paid-6328.test.ts → 18/18.
  • New regression test tests/unit/api-models-shared-custom-models-read.test.ts → 4/4: snapshot reads the namespace once and exposes the rows; the listing performs 0 reads when handed those rows and still 1 standalone; the derived vision map equals the direct bulk read (malformed row skipped).
  • The 26 unit files that import the touched modules (snapshot, vision overrides, active synced catalog, /api/models) → 201/201.
  • npm run typecheck:core → exit 0 · eslint with config/quality/eslint-suppressions.json on the touched files → no new violation · prettier clean.
  • npm run check:mutation-test-coverage → ✓ No drift.
  • Pre-commit hooks green (lint-staged, docs-sync, any-budget, tracked-artifacts, ai-attribution).

Not in this PR

  • Runner-contention timeouts of the full unit / integration / pack lanes (infra, not code).
  • The 250-second batch E2E and the catalog budget test are load-sensitive; flagged as debt, not changed.
  • i18n drift: wave PR to follow.

- tests: manual custom models now persist endpointCapabilitySource
  "operator" (#16956); the two deepEqual fixtures in managed-model-import
  and admin-audit-events learn the field (behavior intended by #16929).
- /api/models: the #16929 operator endpoint overlay added a second bulk
  read of the customModels namespace per request. The capability snapshot
  now owns that single read (readCustomModelsByProvider +
  buildCustomModelVisionOverrides) and getAllActiveSyncedModels reuses the
  rows, so the api-models-hide-paid-6328 "bulk-read once" guard holds again
  without loosening it. New regression test covers the shared read.
- stryker.conf.json: register the four covering tests the
  check:mutation-test-coverage gate reports (content-policy-refusal,
  stream-timing-late-output, chat-empty-stream-recovery,
  provider-error-rules-opt-in-flags-16797).
@diegosouzapw

Copy link
Copy Markdown
Collaborator Author

CI triage for this head (2015887e74) — red shards, each compared with the exact base

red check failing test(s) classification evidence
Docs Sync (Strict) [i18n-check] drifted sources (27) BASE-RED (docs) identical on the base tip; the i18n wave PR covers it
Unit Tests (3/8), Unit Tests fast-path (3/4) vision bridge key scope is translated without certifying stale locale content BASE-RED (i18n mirror test) same failure in #17068's shards on the base; mirrors untouched here
Unit Tests (4/8) resilience mirror provenance describes current source and target bytes, the two source-delta mirror records describe current source and translated bytes BASE-RED (i18n mirror tests) fail on the untouched base tip locally (tests/unit/cli-env-quality-docs-mirrors.test.ts)
Unit Tests (8/8) remote token privilege guidance is translated, not only marked current BASE-RED (i18n mirror test) fails on the untouched base tip locally
Unit Tests (1/8), Unit Tests fast-path (1/4) JON-562 real /v1/messages path rejects context-sized post-GC retention FLAKY / load-sensitive, not this PR passes in #17068's shards (same base era, same runner image 20261012.601, same Node 24.21.0, 43–45 s) and fails here (38 s); fails locally on the pure base cda89ded and on a016744417 (101–138 s under load 26); this PR touches /api/models and the capability snapshot only — the /v1/messages path builds no snapshot and no module cache holds one (grep createModelCapabilityResolutionSnapshot open-sse/handlers src/app/api/v1/messages src/sse → none)

The three tests this PR repairs (managed-model-import, admin-audit-events, api-models-hide-paid-6328) are green in every shard that ran them. Nothing above is introduced by this diff.

@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 added a commit that referenced this pull request Oct 18, 2026
check:mutation-test-coverage on the live tip lists combo-safety-stop and
provider-safety-error-propagation on top of the four #17090 registers;
inserted next to their neighbours so the two PRs do not collide on the
list tail. The four from #17090 remain reported here until it lands.
@diegosouzapw
diegosouzapw merged commit b7bfee1 into release/v3.8.52 Oct 18, 2026
42 of 50 checks passed
@diegosouzapw
diegosouzapw deleted the fix/release-v3.8.52-basereds-1018-sweep branch October 18, 2026 22:33
@diegosouzapw

Copy link
Copy Markdown
Collaborator Author

FYI for the i18n wave mentioned under "Not in this PR": #17117 already resyncs nine sources (SQLITE_RUNTIME, DEVIN_CLAUDE_BRIDGE, OPENCODE-V2-PLUGIN, LOG-EXPORT, CONTRIBUTING, FEATURE_FLAGS, RELEASE_CHECKLIST, FREE_TIERS, RUNNER_BOX) and #16980 covers README.md + the remaining docs, so the wave can skip those. The four mirror tests listed as base-red in this PR are #16980's scope.

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