Skip to content

[WRONG BRANCH] release: promote frozen tip 2606f6f922 to main as 2.93.0 - #7805

Merged
lidge-jun merged 102 commits into
mainfrom
codex/promote-main-2.93.0
Oct 27, 2026
Merged

lidge-jun merged 102 commits into
mainfrom
codex/promote-main-2.93.0

Conversation

@lidge-jun

Copy link
Copy Markdown
Owner

Summary

Promotes the frozen dev candidate 2606f6f922d6c897836f4aafc0910f46293e5786 to main as stable 2.93.0. The promotion head merges in main ancestry with the ours strategy, so its tree is exactly the candidate tree (git diff 2606f6f922 HEAD is empty). Candidate version sources already say 2.93.0, and dev already outranks it (#7795, 736fa50, moved dev to 2.94.0).

The main-only 2.92.0 dependency fixes (#7643 zod 4.6.6 and body-parser 2.4.0, #7645 gui happy-dom 21.0.4) are already present in the candidate, so the ours merge drops nothing.

The same candidate shipped as 2.93.0-preview.20261027 (#7796, release run 40452751461) and passed the preview smoke on the release host (isolated install of the published package: ocx --version, start, /healthz ok, stop).

Known issue carried into this release: on a Remote Link Child, ocx stop leaves Codex pointed at the stopped Child until ocx start or ocx sync --restart-codex (from #7564; the native-restore fix #7736 is deferred).

Verification

  • Candidate 2606f6f922d6c897836f4aafc0910f46293e5786: workflow_dispatch Cross-platform CI lane=all 40434756491 success and Service lifecycle 40434760151 success, without reruns.
  • Preview SHA 701b5d0 (same tree plus preview version sources): push-event Cross-platform CI 40448022930 success, Service lifecycle 40448022888 success; release.yml dry run 40450889731 and publish 40452751461 success; npm preview dist-tag = 2.93.0-preview.20261027.
  • bun scripts/release-version-sources.ts check 2.93.0: all 4 version sources carry 2.93.0; origin/main is an ancestor of this head.
  • Push-event Cross-platform CI and Service lifecycle on the merged SHA gate release.yml.

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.

lidge-jun and others added 30 commits October 23, 2026 18:17
…opping dispatchers (#7527)

* fix(coding-agent): launch native Windows CLIs and refuse empty-arg-dropping dispatchers

On Windows, whichFromPath tried .cmd before .exe and resolveCodingAgentBinary
returned the first candidate hit. The official Qoder CN layout puts the
PowerShell dispatcher qodercn.cmd on PATH ahead of qoderclicn.exe, and the
PowerShell hop drops empty argv entries, so --setting-sources "" swallowed
--max-turns and every qoder-cn turn failed.

- whichFromPath: a same-stem .exe beats the .cmd in the same PATH directory;
  PATH order still decides between directories.
- resolveCodingAgentBinary: the first native hit among a profile's candidates
  wins over an earlier batch dispatcher; only native hits are cached.
- turn preflight: a remaining .cmd/.bat that must carry an empty argument is
  read, and the turn is refused with cli_dispatcher_drops_empty_args before
  spawn when it forwards through powershell/pwsh or cannot be read. npm-style
  shims that forward %* directly keep working.

Refs #7518

* fix(coding-agent): verify the whole batch dispatcher chain before trusting empty args

Review follow-up for #7527:
- a dispatcher larger than the 64 KiB inspection bound is refused as
  incomplete instead of approved on a truncated read;
- a hop to another .cmd/.bat is followed only through a literal %~dp0 or
  absolute path, up to four files; a hop through a variable, a deeper chain,
  or an unreadable target is refused (CALL :label and native .exe targets
  stay allowed, so npm cmd-shims keep working);
- the Windows native-receiver turns use only fixture PATH directories, so a
  Qoder CLI installed on the host cannot satisfy discovery.

Refs #7518

* docs(structure): fold the Windows executable-discovery note into the Qoder paragraph to stay within the line budget
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
GHSA-mrhx-c7xc-m3w5 and GHSA-27r3-jxmh-p828 blocked the 2.92.0 publish.
Leave the package version at 2.93.0 on dev.

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: lidge-jun <243035832+lidge-jun@users.noreply.github.com>
…7528)

Settle async Windows ACL work and native-main owner locks before fixture removal, so hosted-Windows teardowns no longer fail with EPERM after passing assertions. No retry, sleep or timeout changes.

Refs #7515
…deterministic (#7552)

Make the codex-runtime, client-connect and loopback-listener tests deterministic: bounded child deadlines with process milestones, and a port-0 public listener in place of the free-port-then-bind race. No sleeps or timeout increases.

Refs #7403 #7404

Co-authored-by: Shreyas652 <66720396+Shreyas652@users.noreply.github.com>
#7598)

Keep the cold first-exec of a fresh Bun copy and the PowerShell start out of two timed cases: the PATH-fallback cases share one warmed Bun copy created in a budgeted beforeAll, and the CurrentUser Root certificate inspection is replayed once before its timed case. The 10s product deadline is unchanged; a new seam test drives a deadline breach to unknown on every platform.

Refs #7578 #7569
…7657)

* feat(usage): price and seed Kimi K3.1 Pro on Kimi Code and Moonshot

Kimi Code's coding endpoint now lists k3.1-pro and k3.1-pro-highspeed
(live GET /coding/v1/models, context_length 1048576). Seed both on the
kimi, kimi-code and kimi-responses presets with a 1M window and the K3
low/high/max ladder (thinking-only, default max), and add expected-price
rows from the official table (platform.kimi.ai/docs/pricing/chat,
2026-10-24): K3.1 Pro $2/$10, cache hit $0.20, 5m cache write $2;
Highspeed $4/$20/$0.20/$4. The moonshot API preset gets price rows for
kimi-k3.1-pro and kimi-k3.1-pro-highspeed.

Re-verified K3, K2.7 Code (+highspeed) and K2.6 against the current table
(unchanged) and moved their verifiedAt to 2026-10-24. kimi-k2.5 left the
table (discontinued 2026-08-31), so its rows keep the 2026-07-20 snapshot
with a source that says so.

* docs(structure): name Kimi K3.1 Pro seeds and price rows in owning docs
…inputs change (#7658)

* ci: run docker/keyring smoke and React Doctor on PRs only when their inputs change

Every pull request the ci filter matched (about nine in ten) started
docker-smoke and the ubuntu keyring-smoke leg, and every pull request
started React Doctor, although React Doctor scans only gui/ and each smoke
job proves a narrow contract.

- ci.yml: new docker and keyring path filters in the changes job, validated
  with the other narrow outputs. On pull_request the two jobs also require
  their own filter; push (main/preview), workflow_dispatch and the nightly
  schedule still request both unconditionally. The aggregate ci gate mirrors
  the new conditions, so the ci check keeps reporting on every PR.
- react-doctor.yml: pull_request trigger path-filtered to gui/** and the
  workflow itself; the main push trend scan is unchanged.
- structure/ops/docs-and-release.md: workflow table updated.

* ci: include the compatibility-version module closure in the docker filter
…ed status (#7545)

Qoder: carry the replay-envelope guard, selector-status refusal and legacy catalog collision fixes onto current dev.

- Assistant text passes through the vendor-scaffolding guard and the shared tool-envelope line/fence recognizer; a replayed envelope ends the turn with non-retryable vendor_scaffold_detected without publishing it. Held text is settled before tool and reasoning events, and the recognizer resets at thinking boundaries.
- A contribution that raises UnrepresentableSelectorError reports unsafe / unresolvable-path for that client instead of failing the whole status collection.
- An unowned legacy modelConfigs.customModels row (provider opencodex, exported model) is reported as a conflict before any write.

Refs #7517 #7512 #7390

Co-authored-by: Ingwannu <186453546+Ingwannu@users.noreply.github.com>
Co-authored-by: terrytan95 <10609214+terrytan95@users.noreply.github.com>
…slot identity metadata (#7551)

Codex account list: keep each registered slotId and slotKind on account-list rows and add an optional upstreamAccountKey, a versioned HMAC of the ChatGPT account and user claims under the local administrator token. The native key requires one token that claims both the matching account and the user; missing or conflicting claims omit it. No raw identity or credential is serialized. Account listing and explicit refresh return stored pool accounts without creating a missing native CODEX_HOME (maintainer decision D2); non-directory, dangling and untraversable homes still fail closed.

Co-authored-by: alexalok <5950085+alexalok@users.noreply.github.com>
Co-authored-by: Plamyth <145187149+Plamyth@users.noreply.github.com>
Carry #7432 and fill all seven provider reference tables, preserving same-key versus replacement-key recovery boundaries.

Co-authored-by: lidge-jun <243035832+lidge-jun@users.noreply.github.com>
Co-authored-by: MannXo <17333793+MannXo@users.noreply.github.com>
* fix(command-code): rotate on insufficient-credit refusals

Command Code reports exhausted credits as HTTP 400/BAD_REQUEST, which bypasses the generic OAuth 429 rotation path. Normalize only the exact refusal to 429 while preserving the original body and status in headers.

* fix(command-code): require the literal credit refusal prefix

CodeRabbit noted the regex also accepted near-miss messages. Require the exact upstream prefix and cover the near misses.

* test(command-code): assert the retry response body and status

Cover the normalized retry response's original 400 status and preserved JSON body, as requested in review.

* fix(command-code): fail open on malformed UTF-8 refusals

Review noted that non-fatal UTF-8 decoding could still classify a malformed 400 body as an insufficient-credit refusal. Decode fatally so the existing fail-open path preserves the original response.

* fix(command-code): address review on credit-refusal handling

- Re-throw the caller's abort reason from refusal inspection.
- Register the new test in both layout maps and keep layout.json below the file-size ratchet.
- Document the narrow 400-to-429 normalization in the adapter contract.
- Cover the abort path with a focused test.

* test(command-code): keep upstream 429 and 402 out of credit classification

A genuine upstream 429 must keep its own Retry-After and reach rotation
unlabelled, and a 402 stays a 402 even when its body repeats the credit
wording. Pin both so the narrow 400 normalization cannot widen.

Co-authored-by: Yushi Chen <chenyushi63@gmail.com>

* test(command-code): drive the credit refusal through dispatch rotation

With two stored Command Code accounts, the exact credit refusal on the
first account now completes the same request on the sibling, while an
ordinary BAD_REQUEST stays on the account and surfaces as a 400. The
rotation case fails against the adapter without the normalization.

Co-authored-by: Yushi Chen <chenyushi63@gmail.com>

* fix(command-code): rewrite the credit refusal only on OAuth rows

A canonical key-auth Command Code row gets a same-key 429 retry ladder
from rateLimitRetryPolicyFor, so rewriting its permanent credit 400 into
a 429 would replay a credential with no credits left before surfacing
the error. Only OAuth rows have sibling accounts to rotate to, so key and
forward rows now keep the original 400.

Co-authored-by: Yushi Chen <chenyushi63@gmail.com>

---------

Co-authored-by: Yushi Chen <chenyushi63@gmail.com>
* fix(codex): calibrate Business Premium display capacity

Business Premium seats report the plan string self_serve_business_prolite,
which missed the configured capacity map and counted at the baseline
weight 1. OpenAI documents Premium as 5x Standard included usage, so
calibrate it at 5 in the display-only pool capacity estimate.

Refs #7440
Carries #7444

Co-authored-by: Ingwannu <ingwannu@users.noreply.github.com>

* docs(codex): move capacity calibration rule to openai-tiers and correct unknown-plan wording

---------

Co-authored-by: Ingwannu <ingwannu@users.noreply.github.com>
Apply fallback policy to the ranked profile selection before authentication or dispatch. Keep hard-lock pre-admission unchanged and cover refused and allowed selections with a synthetic caller-owned credential and strict fetch stub.

Co-authored-by: JUN <jun@lidgeai.com>
* fix(service): bind ownership lease release to its acquisition

* docs(runtime): distinguish takeover decline from stop or claim failure

Align the runtime ownership contract with the desktop shell: declined consent
attaches as a guest, while failed stop or claim does not continue as owner and
a stopped runtime is reported as stopped and unclaimed.

Co-authored-by: Epinephrine <luvs01@hanmail.net>

---------

Co-authored-by: JUN <jun@lidgeai.com>
* feat(gui): add JEV session pin controls and preserve save intent

* fix(gui): narrow the selected source for saved combo baselines

* fix(gui): guard JEV session pin numeric input parsing
Co-authored-by: JUN <243035832+lidge-jun@users.noreply.github.com>
…7656)

* fix(windows): resolve ACL identity natively with bounded async waits

* test: release stalled spill runners after queue settlement

---------

Co-authored-by: JUN <243035832+lidge-jun@users.noreply.github.com>
* fix(codex): keep user edits to config.toml across ocx sync

Injection (run by ocx sync, start, and settings changes) removed every root
model_context_window even though OpenCodex never writes that key, and it
rewrote a marker-owned [agents] default_subagent_* value whenever the marker
comment survived, including after the user edited the value.

Root model_context_window is now left alone. The journal records the exact
managed sub-agent default values each injection writes; a marked value that
no longer matches that record is adopted as user-owned (its marker is dropped)
on both sync and restore. Without a record the marker alone still decides.

Refs #7425

* fix(codex): decode multiline managed-default edits; qualify context-window docs

Review follow-up for #7553. Edit detection now decodes the whole assignment,
so a marked value the user rewrote as a multiline string is adopted instead of
refusing the sync. The docs note that Codex caps a root model_context_window
at each model's maximum window.

Refs #7425

* docs(structure): drop stale root context-window strip claim

Review follow-up for #7553.

Refs #7425

* test(codex): compare canonical sync sandbox paths

Compare native realpaths and the exact expected config file while retaining
separator-bounded containment and isolated child environments. Clarify that
the parent-home fingerprint observes the test harness home. Register the
carried test in the existing codex shard without growing layout.json.

Supersedes #7553; carries its original three commits with authorship intact.

Co-authored-by: chlwnsgurg <97290748+chlwnsgurg@users.noreply.github.com>

* test: isolate Codex host state in config-sync validation

Seed the existing runtime cache seam for the missing/null version equality
case, and pin the Desktop process fixture's user-owned native catalog.
An installed Codex must not select a real runtime or change model order
while these fixtures exercise cache equality and remote authority.

The unmodified dev sources reproduce both failures (59 pass, 2 fail).
These nine fixture-only lines give 61 pass, 0 fail. A scratch mutation
removing null normalization still fails the unchanged persisted-byte
assertion, so the target regression remains effective.

This is a minimal L5 write-scope exception needed for its required macOS
gates; no production code, timeout or assertion was changed.

* fix(codex): honor default ownership before journal snapshot restore

The first injected hash must stay pinned to protect unrelated user edits.
Before replaying that snapshot, compare native-default cleanup using the
latest recorded values against marker-only cleanup. Conflicting ownership
keeps restoration on the existing field-level path instead of deleting a
user edit that happens to recreate earlier injected bytes.

Reuse the same known-key parser on the already-read journal. Missing
records retain legacy behavior; profile and hash policies are unchanged.

Regression-first proof on unfixed sources: 9 pass, 4 fail. Model and effort
edits are preserved by both native restore APIs after the fix; legitimate
managed A-to-B-to-A cycles still restore the exact snapshot. The affected
journal/default suite passes 89 tests.

---------

Co-authored-by: chlwnsgurg <97290748+chlwnsgurg@users.noreply.github.com>
…atus names ocx sync --restart-codex (#7563) (#7564)

* fix(link): keep a connected client's integrations across ocx stop and name ocx sync in status (#7563)

* refactor(cli): move status routing hints into status.ts to keep cli/index.ts under the file-size threshold

* fix(lifecycle): preserve connected client ownership on successful stop

Keep server teardown behind persisted connection ownership and report connected stops as skipped. Align lifecycle contracts, CLI inventory and existing translations.

Co-authored-by: JUN <jun@lidgeai.com>

* test(lifecycle): align stop reporting guard with connected ownership

* fix(lifecycle): verify connected shutdown preservation before stopping

Require a PID-bound client identity or explicit shutdown preservation capability before manager mutation and recheck before POST or kill. Preserve fresh connection ownership in ordinary runtime exit cleanup, and correct stale-Link health guidance and remaining lifecycle prose.

* fix(lifecycle): keep stop compatibility proofs off environment proxies

* fix(lifecycle): keep connected stop POST on direct local transport

* fix(lifecycle): keep proven stopped clients idempotent and updateable

* fix(cli): declare connected-stop preservation discovery
… pin (#7616)

The Korean installation guide now names the current dependency as 1.4.4.
The rest of that sentence is unchanged, including the fallback window of
1.4.0 or newer and below 2.0.0.

Refs #7612

Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
…d tie (#7617)

* fix(codex): keep a role's model when auto-assign finds an equal-priced tie

- Break tier-and-price ties in favor of the model the role already uses, before the picker order that lists native models first
- Note the tie rule in structure/subagents.md

* docs(codex): say the current model wins a tie only when it is in it

- Qualify the tie-break wording in role-auto-assign.ts and structure/subagents.md, with picker order as the fallback
Display the actual zero-child count for root-only V2 settings and preserve mode-specific units when editing. Reject unsafe child and converted backend limits before PUT or configuration mutations, with focused regressions and contract documentation.
…7504)

* fix(chat): isolate Anthropic reasoning state

* Protect legacy signed reasoning and verify Chat ingress isolation

* test(chat): preserve opaque-state isolation across message roles

* test(chat): verify tool-result opaque state at upstream boundary
)

Replace the EventStream JavaScript CRC32 loop with the native Bun primitive while preserving wire validation and seeded byte-view semantics.

Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com>
* fix(i18n): complete Turkish dashboard copy and documentation

* test(i18n): guard Turkish connection copy and pacing semantics

---------

Co-authored-by: JUN <jun@lidgeai.com>
Caledvwlch and others added 11 commits October 27, 2026 03:02
…#7621)

* fix(codex): renew credit evidence for namespace-bound Direct accounts

* fix(test): supply required port in native pool fixture

* test(codex): isolate ACL setup and cold quota child work

* test(codex): complete fetch and routing fixture types

---------

Co-authored-by: JUN <243035832+lidge-jun@users.noreply.github.com>
#7531)

* fix(reasoning): separate support, thinking toggles and effort controls

* fix(reasoning): address capability and wire review findings

* fix(reasoning): preserve custom overrides and native thinking budgets

* fix(catalog): preserve retained model reasoning provenance

* fix(providers): preserve case-varied capability overrides

* fix(providers): attribute reasoning exclusions correctly

* fix(reasoning): preserve legacy wires and independent capability projections

Address six maintainer findings and preserve legacy Chat behavior across native and translated requests. Cover native effort recovery, Responses extension boundaries, tool omission, case-folded overrides, and Claude discovery.

* docs(structure): keep integrations.md within its 600-line budget after merging dev

The merge with dev put structure/clients/integrations.md at 601 lines; join the
reasoning-projection sentence onto the preceding export-metadata line.

* fix(reasoning): preserve legacy empty-ladder discovery signal

---------

Co-authored-by: JUN <243035832+lidge-jun@users.noreply.github.com>
* fix(codex): preserve hardlink names in catalog heal paths

* fix(codex): retain native catalog leaf aliases where safe

* fix(codex): fence uncertain catalog entry identity

* fix(codex): retain uncertainty after catalog hop exhaustion

* fix(catalog): retain uncertainty after symlink lookup failures

* fix(test): promote Bun 1.4.4 with independent runner role verification

* docs: align Docker Bun comments with unified role defaults

* test: use a draining TLS origin for early upload replies

* test: confine draining origin to buffered HTTP/1 upload

* fix(codex): resolve catalog link target parents with filesystem semantics

A relative symlink target containing .. was normalized lexically, so a symlinked intermediate directory made the comparator follow the wrong parent. Walk each intermediate component within the existing read budget: resolve symlinked or missing directories with realpath, treat non-directories and failures as unknown, and keep the leaf for the next lstat hop.

* fix(codex): match platform .. semantics in catalog link targets

Measured OS behavior splits by platform: Windows normalizes .. lexically across junctions/reparse points and even past missing components, while POSIX resolves each directory and refuses a missing crossing. Keep lexical resolve on Windows; on POSIX walk each intermediate component inside the read budget, record intermediate symlinks in the revalidation snapshot, and treat missing or non-directory crossings as unknown. Regressions assert the independent readFileSync/realpathSync result before the comparator verdict, and the POSIX-only literal-backslash case is an explicit platform skip.

* fix(codex): refuse non-directory crossings in POSIX link targets

A symlinked intermediate that resolves to a regular file must fail the traversal with ENOTDIR on POSIX; dirname() after realpath would have accepted the wrong catalog. Stat the resolved intermediate inside the read budget, require a directory, and record the resolved identity in the link snapshot so revalidation also catches a target swap.

* test(codex): reproduce catalog observation and reanchor regressions

* fix(codex): revalidate catalog evidence and reanchor selected publications

* fix(codex): retain recovery baseline when publication proof fails

* fix(codex): bind heal baselines to published entry evidence

* fix(codex): keep the validated heal publication selection

* fix(codex): capture publication identity before comparisons

---------

Co-authored-by: JUN <243035832+lidge-jun@users.noreply.github.com>
…ient cancellation (#7767)

A live sideband join now keeps its turn admission until the upstream transport closes when the client cancels after the upstream dial has started; before the dial, cancellation still retires the turn at once.
…#7622)

* fix(codex): renew credit evidence for namespace-bound Direct accounts

* fix(codex): recover credit retry advice without weakening account boundaries

* fix(test): supply required port in native pool fixture

* test(codex): isolate ACL setup and cold quota child work

* test(codex): complete fetch and routing fixture types

* fix(codex): retain the latest applicable credit retry hold

---------

Co-authored-by: JUN <243035832+lidge-jun@users.noreply.github.com>
* feat(providers): add AI Stupid Level API-key preset

Adds AI Stupid Level's Smart Router as an ordinary API-key preset:
openai-chat at https://aistupidlevel.info/v1, live discovery from the
key-gated GET /v1/models (which also validates the key), and the 15
routing modes seeded with auto-coding as the default. Each routing mode
declares a 262,144-token window, 64,000 output tokens and text-only
input, limits that hold for any model the router picks. Every inbound
stays on Chat: the router's /v1/messages is a passthrough to Anthropic
without routing.

Preset counts are recounted to 106 total and 85 key-based in all 8
guides, all 8 quickstarts and structure/ops/docs-and-release.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(providers): keep every AI Stupid Level model text-only, pinned ids included

The preset declared text-only input for its 15 routing modes only. A
pinned id from live discovery, such as claude-sonnet-4-6, had no
modality evidence, so an attached image was forwarded to the router,
which answers 400 unsupported_content.

Add a provider-wide inputModalities declaration, the modality
counterpart of contextWindow and supportsVerbosity. The registry seeds
it, and enrichProviderFromRegistry and routedProviderConfig backfill it
for rows saved earlier. isModelVisionSidecarConsumer,
requiresVisionPreprocessing, modelAcceptsImageInput and the routing
capability evidence fall back to it when no per-model entry lists the
id; a per-model entry still wins. The AI Stupid Level preset declares
["text"].

Regression tests: a pinned live id needs vision preprocessing, also for
a row saved before the declaration, and an image sent to
aistupidlevel/claude-sonnet-4-6 through the proxy never reaches the
router.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(providers): read provider-wide modalities only from the routed provider

Review follow-up on the provider-wide inputModalities declaration:

- Declare inputModalities on DerivedKeyLoginProvider, and copy it in
  providerConfigFromKeyLoginProvider, so a dashboard key login saves it
  like a CLI provider add does.
- Drop the name-only registry fallback from the routing capability
  evidence. It applied the preset's ["text"] to a same-named custom
  destination; the routed provider already carries the declaration,
  backfilled for the preset destination only.

Regression test: a same-named custom destination keeps its own modality
evidence and needs no vision preprocessing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs(providers): record the 2026-10-26 re-verification of the AI Stupid Level preset

The contract (router docs, terms, key-gated GET /v1/models) was checked
again on 2026-10-26: the 15 routing modes are unchanged. The pool of
pinnable models has changed since 2026-10-23 (Kimi K2.7 Code is no longer
listed), so the limits comment now calls 262,144 a conservative window
rather than the current pool minimum.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(providers): keep provider-wide modalities registry-only

Review follow-up: a row seeded from the AI Stupid Level preset kept
inputModalities: ["text"] after its baseUrl was pointed elsewhere, so a
custom image-capable endpoint would have had its images stripped.

The declaration is now registry-only, like other destination-bound
registry defaults: it is no longer seeded into saved config (CLI add or
key login), and enrichProviderFromRegistry and routedProviderConfig fill
it only while the provider points at the preset destination. This also
drops the src/oauth/login-cli.ts change.

The custom-destination test now covers a seeded row moved to another
URL as well as a hand-written custom row.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(providers): apply provider-wide modalities at runtime only

Review follow-up: enrichProviderFromRegistry copied the preset's
inputModalities onto the provider object, and init and management
writes persist that object, so a saved copy could still follow a row
to another URL.

Enrichment no longer copies it. registryInputModalitiesForDestination()
returns the registry value only while the row points at the preset
destination; vision eligibility applies it to its private copy, and
routedProviderConfig applies it to the routed provider.

Regression test: enrichment leaves the saved provider without the
field, while the runtime classification still holds at the preset
destination and not at another URL.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(providers): validate runtime modality overrides for AI Stupid Level

Reject malformed provider-wide modalities at schema and management boundaries, repair tolerant loads to text, and preserve exact model declaration precedence. Cover destination-bound runtime backfill without persisting registry defaults; derive the active key-login test roster from the registry.

Co-authored-by: Studio Platforms <ionutvisan@studioplatforms.eu>

* fix(providers): retain text-only fallback for renamed presets

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: JUN <243035832+lidge-jun@users.noreply.github.com>
…7777)

* fix(claude): drain parent ACL flights before intercept secret writes

* fix(claude): bound ACL admission and guard picker cleanup steps

* test(claude): yield a macrotask before barrier ordering assertions

A single microtask yield depended on the current await count; draining queued microtasks with setImmediate keeps the assertions meaningful if later code adds awaits (CodeRabbit review on #7777).

* fix(claude): admit nested Claude settings rewrites after the bind await

Review r2 F3: startup migration and Desktop first-party removals rewrite the credential-bearing Claude settings file synchronously after an await. A CLAUDE_CONFIG_DIR nested in the opencodex home shares the config-root ACL flight, so gate the migration and every removal through withConfigDirHardeningSettled on the Claude settings home (removeDesktopFirstPartySettled maps a settle timeout to the existing unreadable refusal without writing). Regressions: nested-home migration and settled removal, red without the barrier, green with it.

* fix(claude): admit model-default rewrites of a nested Claude home

Review r3 F4: POST /api/claude-code/model-defaults rewrites Claude settings, its staged file and recovery backups synchronously after the body await; gate the whole operation through withConfigDirHardeningSettled(claudeConfigDir()) inside the existing failure mapping. N1: the gateway-apply cleanup refusal no longer claims a JSON parse failure. Also asserts that the startup migration actually rewrites the stale proxy URL (CodeRabbit). Regression: model-defaults POST with a held parent flight, red without the barrier.

---------

Co-authored-by: JUN <243035832+lidge-jun@users.noreply.github.com>
* fix(codex): preserve hardlink names in catalog heal paths

* fix(codex): retain native catalog leaf aliases where safe

* fix(codex): fence uncertain catalog entry identity

* fix(codex): retain uncertainty after catalog hop exhaustion

* fix(catalog): retain uncertainty after symlink lookup failures

* fix(test): promote Bun 1.4.4 with independent runner role verification

* docs: align Docker Bun comments with unified role defaults

* test: use a draining TLS origin for early upload replies

* test: confine draining origin to buffered HTTP/1 upload

* fix(codex): resolve catalog link target parents with filesystem semantics

A relative symlink target containing .. was normalized lexically, so a symlinked intermediate directory made the comparator follow the wrong parent. Walk each intermediate component within the existing read budget: resolve symlinked or missing directories with realpath, treat non-directories and failures as unknown, and keep the leaf for the next lstat hop.

* fix(codex): match platform .. semantics in catalog link targets

Measured OS behavior splits by platform: Windows normalizes .. lexically across junctions/reparse points and even past missing components, while POSIX resolves each directory and refuses a missing crossing. Keep lexical resolve on Windows; on POSIX walk each intermediate component inside the read budget, record intermediate symlinks in the revalidation snapshot, and treat missing or non-directory crossings as unknown. Regressions assert the independent readFileSync/realpathSync result before the comparator verdict, and the POSIX-only literal-backslash case is an explicit platform skip.

* fix(codex): refuse non-directory crossings in POSIX link targets

A symlinked intermediate that resolves to a regular file must fail the traversal with ENOTDIR on POSIX; dirname() after realpath would have accepted the wrong catalog. Stat the resolved intermediate inside the read budget, require a directory, and record the resolved identity in the link snapshot so revalidation also catches a target swap.

* fix(test): drain account fixture config ACL work before removal

* fix(config): skip optional directory hardening for non-directories

* test(codex): reproduce catalog observation and reanchor regressions

* fix(codex): revalidate catalog evidence and reanchor selected publications

* fix(codex): retain recovery baseline when publication proof fails

---------

Co-authored-by: JUN <243035832+lidge-jun@users.noreply.github.com>
…roviders, catalog, pricing, docs) (#7779)

* feat(providers): add GPT-6.1 Terra alongside existing models

* docs(models): document GPT-6.1 Terra across locales

* docs(models): drop repeated Terra cross-link paragraphs and source comments

* feat(codex): add GPT-6.1 Terra alongside existing native models

Pin the supplied upstream row verbatim and register its native 500k/872k
context, low-through-ultra ladder, Fast-only tiers and multi-agent v2.
Keep GPT-5.6 Terra, defaults, configured-native template and roster version.
Apply Terra's client minimum only to per-model absence evidence so unrelated
roster success TTLs stay unchanged.

Verify native, account-qualified and OpenAI-forward rows, Claude context and
labels, and ultra-to-max wire folding. Keep Cursor and other lanes untouched.

Validation: 613 affected tests and 38 layout/ratchet tests pass on Bun 1.4.4;
typecheck, structure:check and privacy:scan pass.

* fix(codex): keep GPT-6.1 Terra entitlement handling on the GPT-6.1 Sol rule

* test(providers): give the Terra provider regression a unique layout name

* feat(usage): add GPT-6.1 Terra pricing and metadata

* fix(usage): price confirmed GPT-6.1 Terra Fast at the documented 2x

* test(service): expect OpenRouter GPT-6.1 Terra service-tier capability

---------

Co-authored-by: JUN <243035832+lidge-jun@users.noreply.github.com>
@lidge-jun
lidge-jun requested a review from Ingwannu as a code owner October 27, 2026 05:30
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 27, 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-27T05:47:44.540906Z 6a87fea Draft marked ready
ℹ️ 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 27, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 691 files, which is 391 over the limit of 300.

To get a review, reduce the PR to 300 files or fewer by splitting it into smaller PRs or changing its base branch.

Usage-priced reviews support at most 300 files.

Run configuration
Commits

Reviewing files that changed from the base of the PR and between 9f0d40a and 6a87fea.

Files ignored due to path filters: 3
  • bun.lock is excluded by !**/*.lock
  • desktop/src-tauri/Cargo.lock is excluded by !**/*.lock
  • src/generated/model-metadata.ts is excluded by !**/generated/**
Files selected for processing: 691
  • .github/actions/setup-project-bun/action.yml
  • .github/scripts/enforce-pr-target.test.cjs
  • .github/scripts/pr-hygiene.cjs
  • .github/scripts/pr-hygiene.test.cjs
  • .github/scripts/pr-quality-messages.cjs
  • .github/scripts/pr-quality-messages.test.cjs
  • .github/workflows/ci.yml
  • .github/workflows/enforce-pr-target.yml
  • .github/workflows/pr-hygiene.yml
  • .github/workflows/react-doctor.yml
  • AGENTS.md
  • CONTRIBUTING.md
  • Dockerfile
  • MAINTAINERS.md
  • bin/ocx.mjs
  • desktop/src-tauri/Cargo.toml
  • desktop/src-tauri/tauri.conf.json
  • devlog/_plan/261025_command_code_plan_denial/000_plan.md
  • devlog/_plan/261025_hermes_profiles/000_plan.md
  • devlog/_plan/261025_hermes_profiles/010_phase1.md
  • devlog/_plan/261025_moonshot_k31_seed/000_plan.md
  • devlog/_plan/261025_moonshot_k31_seed/010_phase1.md
  • devlog/_plan/261025_sync_expect_link/010_plan.md
  • docs-site/src/content/docs/contributing.md
  • docs-site/src/content/docs/fr/getting-started/quickstart.md
  • docs-site/src/content/docs/fr/guides/codex-app-models.md
  • docs-site/src/content/docs/fr/guides/providers.md
  • docs-site/src/content/docs/fr/reference/cli/lifecycle.md
  • docs-site/src/content/docs/fr/reference/cli/providers-accounts.md
  • docs-site/src/content/docs/fr/reference/configuration/providers.md
  • docs-site/src/content/docs/getting-started/installation.md
  • docs-site/src/content/docs/getting-started/quickstart.md
  • docs-site/src/content/docs/guides/codex-app-models.md
  • docs-site/src/content/docs/guides/codex-integration.md
  • docs-site/src/content/docs/guides/combos.md
  • docs-site/src/content/docs/guides/fallback-off.md
  • docs-site/src/content/docs/guides/integrations.md
  • docs-site/src/content/docs/guides/minimax.md
  • docs-site/src/content/docs/guides/protocol-paths.md
  • docs-site/src/content/docs/guides/providers.md
  • docs-site/src/content/docs/guides/remote-link.md
  • docs-site/src/content/docs/guides/remote-workspace.md
  • docs-site/src/content/docs/guides/sidecars.md
  • docs-site/src/content/docs/guides/sub-agent-surface.md
  • docs-site/src/content/docs/guides/web-dashboard.md
  • docs-site/src/content/docs/ja/getting-started/quickstart.md
  • docs-site/src/content/docs/ja/guides/codex-app-models.md
  • docs-site/src/content/docs/ja/guides/integrations.md
  • docs-site/src/content/docs/ja/guides/providers.md
  • docs-site/src/content/docs/ja/reference/cli/lifecycle.md
  • docs-site/src/content/docs/ja/reference/cli/providers-accounts.md
  • docs-site/src/content/docs/ja/reference/configuration/providers.md
  • docs-site/src/content/docs/ko/getting-started/installation.md
  • docs-site/src/content/docs/ko/getting-started/quickstart.md
  • docs-site/src/content/docs/ko/guides/codex-app-models.md
  • docs-site/src/content/docs/ko/guides/codex-integration.md
  • docs-site/src/content/docs/ko/guides/integrations.md
  • docs-site/src/content/docs/ko/guides/providers.md
  • docs-site/src/content/docs/ko/guides/remote-workspace.md
  • docs-site/src/content/docs/ko/reference/cli/lifecycle.md
  • docs-site/src/content/docs/ko/reference/cli/providers-accounts.md
  • docs-site/src/content/docs/ko/reference/configuration/providers.md
  • docs-site/src/content/docs/ko/reference/proxy-formats.md
  • docs-site/src/content/docs/reference/adapters.md
  • docs-site/src/content/docs/reference/cli/lifecycle.md
  • docs-site/src/content/docs/reference/cli/providers-accounts.md
  • docs-site/src/content/docs/reference/codex-retry-diagnostics.md
  • docs-site/src/content/docs/reference/configuration/agents.md
  • docs-site/src/content/docs/reference/configuration/providers.md
  • docs-site/src/content/docs/reference/platform-support.md
  • docs-site/src/content/docs/reference/proxy-formats.md
  • docs-site/src/content/docs/ru/getting-started/quickstart.md
  • docs-site/src/content/docs/ru/guides/codex-app-models.md
  • docs-site/src/content/docs/ru/guides/integrations.md
  • docs-site/src/content/docs/ru/guides/providers.md
  • docs-site/src/content/docs/ru/reference/cli/lifecycle.md
  • docs-site/src/content/docs/ru/reference/cli/providers-accounts.md
  • docs-site/src/content/docs/ru/reference/configuration/providers.md
  • docs-site/src/content/docs/tr/getting-started/quickstart.md
  • docs-site/src/content/docs/tr/guides/chatgpt-desktop.md
  • docs-site/src/content/docs/tr/guides/codex-app-models.md
  • docs-site/src/content/docs/tr/guides/composer-usage-gate-fallback.md
  • docs-site/src/content/docs/tr/guides/fallback-off.md
  • docs-site/src/content/docs/tr/guides/local-plugins.md
  • docs-site/src/content/docs/tr/guides/protocol-paths.md
  • docs-site/src/content/docs/tr/guides/providers.md
  • docs-site/src/content/docs/tr/reference/cli/lifecycle.md
  • docs-site/src/content/docs/tr/reference/cli/messaging.md
  • docs-site/src/content/docs/tr/reference/cli/providers-accounts.md
  • docs-site/src/content/docs/tr/reference/code-signing.md
  • docs-site/src/content/docs/tr/reference/codex-retry-diagnostics.md
  • docs-site/src/content/docs/tr/reference/configuration/providers.md
  • docs-site/src/content/docs/tr/troubleshooting/spend-ledger-synced-folder.md
  • docs-site/src/content/docs/tr/troubleshooting/update-failed.md
  • docs-site/src/content/docs/troubleshooting/update-failed.md
  • docs-site/src/content/docs/zh-cn/getting-started/quickstart.md
  • docs-site/src/content/docs/zh-cn/guides/codex-app-models.md
  • docs-site/src/content/docs/zh-cn/guides/integrations.md
  • docs-site/src/content/docs/zh-cn/guides/minimax.md
  • docs-site/src/content/docs/zh-cn/guides/providers.md
  • docs-site/src/content/docs/zh-cn/reference/cli/lifecycle.md
  • docs-site/src/content/docs/zh-cn/reference/cli/providers-accounts.md
  • docs-site/src/content/docs/zh-cn/reference/configuration/providers.md
  • docs-site/src/content/docs/zh-tw/getting-started/quickstart.md
  • docs-site/src/content/docs/zh-tw/guides/codex-app-models.md
  • docs-site/src/content/docs/zh-tw/guides/providers.md
  • docs-site/src/content/docs/zh-tw/guides/sub-agent-surface.md
  • docs-site/src/content/docs/zh-tw/reference/cli/lifecycle.md
  • docs-site/src/content/docs/zh-tw/reference/cli/providers-accounts.md
  • docs-site/src/content/docs/zh-tw/reference/configuration/providers.md
  • gui/src/app-routing.ts
  • gui/src/combo-workspace-data.ts
  • gui/src/components/ComboWorkspace.tsx
  • gui/src/components/apikeys-workspace/client-config-clients.ts
  • gui/src/components/combo-workspace-add-modal.tsx
  • gui/src/components/combo-workspace-detail-panel.tsx
  • gui/src/components/combo-workspace-jev-decision.tsx
  • gui/src/components/combo-workspace-utils.ts
  • gui/src/components/integration-marks.ts
  • gui/src/i18n/de.ts
  • gui/src/i18n/en.ts
  • gui/src/i18n/fr.ts
  • gui/src/i18n/ja.ts
  • gui/src/i18n/ko.ts
  • gui/src/i18n/pt.ts
  • gui/src/i18n/ru.ts
  • gui/src/i18n/tr.ts
  • gui/src/i18n/vi.ts
  • gui/src/i18n/zh-TW.ts
  • gui/src/i18n/zh.ts
  • gui/src/pages/Integrations.tsx
  • gui/src/pages/Models.tsx
  • gui/src/pages/RemoteLink.tsx
  • gui/src/pages/claude-code-save.ts
  • gui/src/pages/claude-code-sidecar.ts
  • gui/src/pages/claude-manual-env.ts
  • gui/src/pages/integrations/FileIntegrationPage.tsx
  • gui/src/pages/integrations/HermesProfilesPage.tsx
  • gui/src/pages/integrations/RestoreDialog.tsx
  • gui/src/pages/integrations/hermes-profile-api.ts
  • gui/src/pages/integrations/integration-api.ts
  • gui/src/pages/integrations/integration-tabs.ts
  • gui/src/pages/integrations/overview-clients.ts
  • gui/src/pages/models-shared.ts
  • gui/src/styles-integrations.css
  • gui/tests/claude-code-save.test.ts
  • gui/tests/claude-code-sidecar.test.ts
  • gui/tests/client-config-panel.test.tsx
  • gui/tests/client-marks-assets.test.ts
  • gui/tests/fr-localization.test.ts
  • gui/tests/i18n-locales.test.ts
  • gui/tests/integration-marks.test.ts
  • gui/tests/integrations-api.test.ts
  • gui/tests/jev-session-pin.test.tsx
  • gui/tests/locale-parity.test.ts
  • gui/tests/models-subagent-limit.test.tsx
  • gui/tests/remote-link.test.tsx
  • package.json
  • scripts/build-standalone.ts
  • scripts/ci/run-changed-tests.sh
  • scripts/ci/select-test-lane.sh
  • scripts/ci/verify-authenticode.ps1
  • scripts/model-metadata.source.json
  • scripts/test-layout/layout-adapters.json
  • scripts/test-layout/layout-agent-assertion.json
  • scripts/test-layout/layout-chat.json
  • scripts/test-layout/layout-clients.json
  • scripts/test-layout/layout-codex-collision.json
  • scripts/test-layout/layout-combos.json
  • scripts/test-layout/layout-credit-renewal.json
  • scripts/test-layout/layout-replay.json
  • scripts/test-layout/layout.json
  • scripts/test-run-lock-gate.ts
  • scripts/test-run-lock.ts
  • scripts/test-temp-lock.ts
  • skills/ocx/references/01_management_surface.md
  • skills/ocx/references/01_surface_agents-routing.md
  • skills/ocx/references/01_surface_lifecycle.md
  • skills/ocx/references/04_failure_semantics.md
  • skills/ocx/references/05_remote_hub.md
  • src/adapters/anthropic.ts
  • src/adapters/coding-agent/batch-dispatcher.ts
  • src/adapters/coding-agent/profile.ts
  • src/adapters/coding-agent/turn.ts
  • src/adapters/command-code.ts
  • src/adapters/cursor/native-exec-fs.ts
  • src/adapters/devin/live-models.ts
  • src/adapters/google-wire-compiler.ts
  • src/adapters/kiro-refusal.ts
  • src/adapters/kiro-wire.ts
  • src/adapters/kiro/reasoning.ts
  • src/adapters/openai-chat.ts
  • src/adapters/openai-chat/messages.ts
  • src/adapters/openai-chat/passthrough.ts
  • src/adapters/openai-chat/reasoning-replay.ts
  • src/adapters/openai-chat/reasoning-wire.ts
  • src/adapters/openai-chat/required-tool-result.ts
  • src/adapters/openai-responses/passthrough.ts
  • src/adapters/openai-responses/reasoning.ts
  • src/adapters/openai-responses/request-strips.ts
  • src/adapters/qoder/adapter.ts
  • src/adapters/qoder/scaffold-guard.ts
  • src/adapters/reasoning-controls.ts
  • src/adapters/tool-call-id.ts
  • src/bridge.ts
  • src/bridge/errors.ts
  • src/chat/inbound.ts
  • src/chat/outbound.ts
  • src/chat/reasoning-details.ts
  • src/claude/desktop-first-party.ts
  • src/claude/desktop-picker.ts
  • src/claude/first-party-settings.ts
  • src/claude/inbound.ts
  • src/claude/intercept/local-ca.ts
  • src/claude/intercept/picker-ca-cleanup.ts
  • src/claude/intercept/picker-ca-startup.ts
  • src/claude/intercept/picker-models.ts
  • src/claude/intercept/picker-runtime.ts
  • src/claude/intercept/runtime.ts
  • src/claude/model-info.ts
  • src/cli/account-api.ts
  • src/cli/capabilities-agents-routing.ts
  • src/cli/capabilities-base.ts
  • src/cli/capabilities-observe-system.ts
  • src/cli/claude-desktop.ts
  • src/cli/claude.ts
  • src/cli/codex-shim-autorestore.ts
  • src/cli/combo-result.ts
  • src/cli/combo.ts
  • src/cli/cross-home-owner.ts
  • src/cli/dispatch.ts
  • src/cli/ensure-desired-integrations.ts
  • src/cli/export-command.ts
  • src/cli/help.ts
  • src/cli/index.ts
  • src/cli/integration-plan-dto.ts
  • src/cli/opencode.ts
  • src/cli/registry.ts
  • src/cli/root.ts
  • src/cli/status.ts
  • src/cli/stop-restore.ts
  • src/cli/sync-expectation.ts
  • src/cli/uninstall-integrations.ts
  • src/client/connect.ts
  • src/client/link-home.ts
  • src/client/machine-api.ts
  • src/client/sync-expectation.ts
  • src/clients/config-export.ts
  • src/clients/config-export/agent-clients.ts
  • src/clients/config-export/contracts.ts
  • src/clients/config-export/qoder.ts
  • src/clients/config-export/reasoning-metadata.ts
  • src/clients/lazycodex.ts
  • src/clients/reasoning-controls.ts
  • src/codex/auth-api/account-identity.ts
  • src/codex/auth-api/account-list.ts
  • src/codex/auth-api/http.ts
  • src/codex/auth-api/main-account-probe.ts
  • src/codex/auth-api/pool-mode-gate.ts
  • src/codex/auth-api/pool-quota-probe.ts
  • src/codex/auth-context.ts
  • src/codex/catalog-self-heal.ts
  • src/codex/catalog/build-entries.ts
  • src/codex/catalog/configured-tiers.ts
  • src/codex/catalog/effort.ts
  • src/codex/catalog/gather-capture.ts
  • src/codex/catalog/heal-observation.ts
  • src/codex/catalog/metadata.ts
  • src/codex/catalog/model-hints.ts
  • src/codex/catalog/model-visibility.ts
  • src/codex/catalog/native-models.ts
  • src/codex/catalog/parsing.ts
  • src/codex/catalog/pinned-models.ts
  • src/codex/catalog/provider-models.ts
  • src/codex/catalog/retained-sync.ts
  • src/codex/catalog/routed-gather.ts
  • src/codex/catalog/write-audit.ts
  • src/codex/collision-identity.ts
  • src/codex/convergence.ts
  • src/codex/data/roster-pinned-models.json
  • src/codex/desired-state.ts
  • src/codex/desktop-compatibility/installed-build.ts
  • src/codex/desktop-compatibility/runtime.ts
  • src/codex/desktop-compatibility/usage-controller.ts
  • src/codex/desktop-compatibility/windows-certificate-trust.ts
  • src/codex/inject.ts
  • src/codex/inject/config-toml.ts
  • src/codex/inject/plan.ts
  • src/codex/inject/remove.ts
  • src/codex/journal.ts
  • src/codex/model-entitlements.ts
  • src/codex/native-main-owner.ts
  • src/codex/native-profile-store.ts
  • src/codex/pool-credit-policy.ts
  • src/codex/quota-types.ts
  • src/codex/quota.ts
  • src/codex/role-auto-assign.ts
  • src/codex/subagent-defaults.ts
  • src/combos/failover.ts
  • src/combos/jev-decision-contract.ts
  • src/combos/jev-service-exchange.ts
  • src/combos/jev.ts
  • src/combos/resolve.ts
  • src/combos/types.ts
  • src/config/load-degrade.ts
  • src/config/paths.ts
  • src/config/pending-teardown.ts
  • src/config/provider-validation.ts
  • src/config/removed-opencode-free.ts
  • src/config/schema/leaf-validators.ts
  • src/images/loop.ts
  • src/integrations/catalog-refresh.ts
  • src/integrations/hermes-profiles.ts
  • src/integrations/merge.ts
  • src/integrations/mutation-plan.ts
  • src/integrations/registry.ts
  • src/integrations/state.ts
  • src/integrations/writer.ts
  • src/lib/bun-path-runtime.mjs
  • src/lib/errors.ts
  • src/lib/eventstream-decoder.ts
  • src/lib/opaque-proxy-tunnel.ts
  • src/lib/pinned-http.ts
  • src/lib/process-control.ts
  • src/lib/socks5-fetch.ts
  • src/lib/socks5-upload-waiter.ts
  • src/lib/sse-decoder.ts
  • src/lib/state-store-sweeper.ts
  • src/lib/windows-native-principal-worker.ts
  • src/lib/windows-native-principal.ts
  • src/lib/windows-secret-acl.ts
  • src/lib/windows-user-principal.ts
  • src/link/ssh-config.ts
  • src/providers/account-quota-disk.ts
  • src/providers/codebuddy-models.ts
  • src/providers/codex-capacity.ts
  • src/providers/derive.ts
  • src/providers/kiro-models.ts
  • src/providers/mimo-thinking.ts
  • src/providers/model-rename-fields.ts
  • src/providers/model-rename-migration.ts
  • src/providers/openai-sidecar-credit.ts
  • src/providers/reasoning-capabilities.ts
  • src/providers/registry/entries-core.ts
  • src/providers/registry/entries-extended.ts
  • src/providers/registry/model-ids.ts
  • src/providers/registry/model-seeds.ts
  • src/providers/registry/types.ts
  • src/providers/resolved-model-policy.ts
  • src/providers/routed-config.ts
  • src/providers/stale-model-roster-migration.ts
  • src/remote-control/workspace-pi-runtime.ts
  • src/responses/compaction-summary.ts
  • src/responses/muse-tool-name-alias.ts
  • src/responses/parser.ts
  • src/responses/schema.ts
  • src/responses/thought-signature-replay.ts
  • src/routing/capability.ts
  • src/routing/history/ingest.ts
  • src/server/auth-cors.ts
  • src/server/chat-completions.ts
  • src/server/chat-native-eligibility.ts
  • src/server/chat-native-reasoning.ts
  • src/server/direct-local-http.ts
  • src/server/effort-policy.ts
  • src/server/index/live-sideband.ts
  • src/server/index/serve-options.ts
  • src/server/management-api.ts
  • src/server/management/agent-settings-routes.ts
  • src/server/management/combo-routes.ts
  • src/server/management/config-routes.ts
  • src/server/management/decision-discovery.ts
  • src/server/management/hermes-profile-routes.ts
  • src/server/management/integration-routes.ts
  • src/server/management/model-routes.ts
  • src/server/management/model-row-export-metadata.ts
  • src/server/management/model-rows.ts
  • src/server/management/native-integration-routes.ts
  • src/server/management/route-registry.ts
  • src/server/models-capabilities.ts
  • src/server/responses/adapter-delivery.ts
  • src/server/responses/adapter-dispatch.ts
  • src/server/responses/codex-ws-exchange.ts
  • src/server/responses/codex-ws-session.ts
  • src/server/responses/codex-ws-wire.ts
  • src/server/responses/combo-required-tool-contract.ts
  • src/server/responses/combo-stream-preflight.ts
  • src/server/responses/compact.ts
  • src/server/responses/context-overflow.ts
  • src/server/responses/core-combo-failure.ts
  • src/server/responses/core-combo.ts
  • src/server/responses/core-lifetime.ts
  • src/server/responses/core-normalize.ts
  • src/server/responses/core-options.ts
  • src/server/responses/main-hard-lock-routing.ts
  • src/server/responses/passthrough-delivery.ts
  • src/server/responses/policy-fallback.ts
  • src/server/responses/request-compression.ts
  • src/server/responses/request-prepare.ts
  • src/server/responses/request-sidecar-auth.ts
  • src/server/responses/response-effects.ts
  • src/server/responses/sidecar-execution.ts
  • src/server/stop-teardown.ts
  • src/server/ws-bridge.ts
  • src/service/desktop-supervision.d.mts
  • src/service/desktop-supervision.mjs
  • src/service/ownership-mutation-lease.mjs
  • src/types.ts
  • src/types/config.ts
  • src/types/provider.ts
  • src/types/request.ts
  • src/update/bind-probe.ts
  • src/update/job.ts
  • src/update/npm-install-job.ps1
  • src/update/npm-install.mjs
  • src/update/stop-contract.d.mts
  • src/update/stop-contract.mjs
  • src/update/stop-decision.d.mts
  • src/update/stop-decision.mjs
  • src/update/teardown-handover.ts
  • src/update/transactional-install.d.mts
  • src/update/transactional-install.mjs
  • src/usage/expected-prices.ts
  • src/usage/timeline.ts
  • src/vision/eligibility.ts
  • src/vision/plan.ts
  • src/web-search/loop.ts
  • structure/INDEX.md
  • structure/catalog-vendor-context.md
  • structure/catalog.md
  • structure/cli-management.md
  • structure/clients/claude-desktop.md
  • structure/clients/codex-desktop.md
  • structure/clients/hermes.md
  • structure/clients/integrations.md
  • structure/clients/qoder.md
  • structure/codex-home.md
  • structure/companion.md
  • structure/config.md
  • structure/dashboard-and-usage.md
  • structure/data-planes/chat-reasoning-details.md
  • structure/data-planes/images.md
  • structure/data-planes/inbound-compat.md
  • structure/decisions/ADR-7390-qoder-legacy-catalog-collision.md
  • structure/decisions/ADR-7456-mandatory-chat-tool-results.md
  • structure/decisions/ADR-7512-qoder-selector-status.md
  • structure/decisions/ADR-7517-qoder-replay-envelope.md
  • structure/desktop-shell.md
  • structure/fallback-policy.md
  • structure/gui-and-management-api.md
  • structure/manifest.json
  • structure/ops/desktop-supervision.md
  • structure/ops/docs-and-release.md
  • structure/ops/service-and-sidecars.md
  • structure/ops/test-sandbox-cleanup.md
  • structure/providers-and-adapters.md
  • structure/providers/chat-compat.md
  • structure/providers/chat-required-tool-results.md
  • structure/providers/cursor.md
  • structure/providers/jev-decision.md
  • structure/providers/kiro.md
  • structure/providers/openai-accounts.md
  • structure/providers/openai-tiers.md
  • structure/providers/pool-credit-renewal.md
  • structure/providers/xai-grok.md
  • structure/quota-snapshots.md
  • structure/remote-link.md
  • structure/remote-workspace.md
  • structure/runtime.md
  • structure/subagent-capacity.md
  • structure/subagents.md
  • structure/transports/byte-accounting.md
  • structure/transports/inventory.md
  • structure/transports/policy-fallback.md
  • structure/transports/responses-citations.md
  • structure/transports/responses-combo-boundaries.md
  • structure/transports/responses-failover.md
  • structure/transports/responses-wire-shapes.md
  • structure/transports/responses.md
  • structure/transports/streaming-health.md
  • tests/adapters/anthropic/anthropic-reasoning.test.ts
  • tests/adapters/coding-agent-windows-dispatch.test.ts
  • tests/adapters/openai/openai-chat-reasoning-wire-policy.test.ts
  • tests/adapters/openai/openai-chat-required-tool.test.ts
  • tests/adapters/openai/openai-empty-assistant-history.test.ts
  • tests/adapters/tool-identity-hash.test.ts
  • tests/ci-workflows/ci-pr-hygiene-approvals.test.ts
  • tests/ci-workflows/ci-privacy-gate.test.ts
  • tests/ci-workflows/ci-review-lanes.test.ts
  • tests/ci-workflows/ci-scope-gaps.test.ts
  • tests/ci-workflows/ci-scope-reduction.test.ts
  • tests/ci-workflows/ci-test-lane.test.ts
  • tests/ci-workflows/ci-workflows.test.ts
  • tests/ci-workflows/docs-gpt61-terra.test.ts
  • tests/ci-workflows/fixture-teardown-helper.test.ts
  • tests/ci-workflows/install-scripts.test.ts
  • tests/ci-workflows/release-windows-signing.test.ts
  • tests/ci-workflows/test-run-lock-generation.test.ts
  • tests/ci-workflows/test-runner.test.ts
  • tests/claude-integration/claude-cli.test.ts
  • tests/claude-integration/claude-context-windows.test.ts
  • tests/claude-integration/claude-desktop-first-party.test.ts
  • tests/claude-integration/claude-desktop-native-context.test.ts
  • tests/claude-integration/claude-desktop-remote-hub.test.ts
  • tests/claude-integration/claude-inbound.test.ts
  • tests/claude-integration/claude-intercept-acl-barrier.test.ts
  • tests/claude-integration/claude-model-default-labels.test.ts
  • tests/claude-integration/claude-model-info.test.ts
  • tests/claude-integration/claude-picker-upload.test.ts
  • tests/cli/cli-account-slot-identity.test.ts
  • tests/cli/cli-capabilities.test.ts
  • tests/cli/cli-combo-parity.test.ts
  • tests/cli/cli-dispatch.test.ts
  • tests/cli/cli-dto-fidelity.test.ts
  • tests/cli/cli-start-journal-order.test.ts
  • tests/cli/cli-sync-expect-link.test.ts
  • tests/cli/ocx-launcher-runtime.test.ts
  • tests/cli/ocx-launcher-source.test.ts
  • tests/clients/agent-clients.test.ts
  • tests/clients/client-connect.test.ts
  • tests/clients/client-export-effective-metadata.test.ts
  • tests/clients/client-export-reasoning-controls.test.ts
  • tests/clients/client-export-reasoning-metadata.test.ts
  • tests/clients/desktop-compatibility-build-probe.test.ts
  • tests/clients/desktop-compatibility-runtime.test.ts
  • tests/clients/desktop-compatibility-trust.test.ts
  • tests/clients/desktop-install-identity.test.ts
  • tests/clients/hermes-profile-routes.test.ts
  • tests/clients/hermes-profiles.test.ts
  • tests/clients/integrations-state.test.ts
  • tests/clients/lazycodex-detection.test.ts
  • tests/clients/link-ssh-config.test.ts
  • tests/clients/qoder-client.test.ts
  • tests/clients/remote-workspace-cli-runtimes.test.ts
  • tests/clients/sync-client-integrations-unattended.test.ts
  • tests/clients/sync-client-integrations.test.ts
  • tests/clients/workbuddy-selector-recovery.test.ts
  • tests/codex-integration/catalog-native-max-context.test.ts
  • tests/codex-integration/codex-account-slot-identity.test.ts
  • tests/codex-integration/codex-agent-thread-limit.test.ts
  • tests/codex-integration/codex-auth-context.test.ts
  • tests/codex-integration/codex-auth-headless-accounts.test.ts
  • tests/codex-integration/codex-catalog-exclusions.test.ts
  • tests/codex-integration/codex-catalog-heal-integration.test.ts
  • tests/codex-integration/codex-catalog-heal-reanchor.test.ts
  • tests/codex-integration/codex-catalog-ladders.test.ts
  • tests/codex-integration/codex-catalog-self-heal.test.ts
  • tests/codex-integration/codex-catalog-write-audit.test.ts
  • tests/codex-integration/codex-catalog.test.ts
  • tests/codex-integration/codex-config-preservation.test.ts
  • tests/codex-integration/codex-credit-retry-after.test.ts
  • tests/codex-integration/codex-credit-scoped-retry.test.ts
  • tests/codex-integration/codex-direct-credit-renewal.test.ts
  • tests/codex-integration/codex-direct-renewal-revocation.test.ts
  • tests/codex-integration/codex-inject.test.ts
  • tests/codex-integration/codex-quota-persistence.test.ts
  • tests/codex-integration/codex-runtime.test.ts
  • tests/codex-integration/codex-stored-main-duplicate.test.ts
  • tests/codex-integration/codex-sync-user-edits.test.ts
  • tests/codex-integration/combo-cooldown-reprobe.test.ts
  • tests/codex-integration/configured-ultrafast-picker.test.ts
  • tests/codex-integration/effort-policy.test.ts
  • tests/codex-integration/gpt6-native-rows.test.ts
  • tests/codex-integration/gpt61-terra-rows.test.ts
  • tests/codex-integration/main-account-hard-lock-fallback-off.test.ts
  • tests/codex-integration/main-account-hard-lock-fallback-routing.test.ts
  • tests/codex-integration/main-account-hard-lock-profile-dispatch.test.ts
  • tests/codex-integration/main-quota-provenance.test.ts
  • tests/codex-integration/native-model-toggle.test.ts
  • tests/codex-integration/ultrafast-live-catalog.test.ts
  • tests/config/client-config-export-new-clients.test.ts
  • tests/config/client-config-export.test.ts
  • tests/config/config-load-degrade.test.ts
  • tests/config/config-removed-opencode-free.test.ts
  • tests/config/settings-stream-mode.test.ts
  • tests/fixtures/handover-journal-probe.ts
  • tests/fixtures/import-cycle-baseline.json
  • tests/fixtures/npm-timeout-tree.mjs
  • tests/fixtures/parent-stop-runner.ts
  • tests/fixtures/pi-prompt-lifetime.ts
  • tests/fixtures/test-layout-expected.json
  • tests/gui/integrations-invariants.test.ts
  • tests/helpers/agent-task-recovery-fixture.ts
  • tests/helpers/compaction-routing-fixtures.ts
  • tests/helpers/desktop-package-observation.ts
  • tests/helpers/fixture-teardown.ts
  • tests/helpers/nested-test-run-lock-controller.ts
  • tests/helpers/responses-core-source.ts
  • tests/helpers/responses-state-never-settling-acl-child.ts
  • tests/helpers/test-run-lock-generation-worker.ts
  • tests/images/pinned-https-get.test.ts
  • tests/lib/opaque-proxy-tunnel.test.ts
  • tests/lib/pinned-http.test.ts
  • tests/lib/socks5-fetch.test.ts
  • tests/lib/socks5-tls-lifecycle.test.ts
  • tests/oauth/state-store-sweeper.test.ts
  • tests/providers/aistupidlevel-provider.test.ts
  • tests/providers/codebuddy-adapter.test.ts
  • tests/providers/command-code-credit-failover.test.ts
  • tests/providers/command-code-credit-rotation.test.ts
  • tests/providers/command-code-plan-denial.test.ts
  • tests/providers/cursor/cursor-local-models-schema.test.ts
  • tests/providers/cursor/cursor-native-grep-globs.test.ts
  • tests/providers/deepseek-inbound-wire.test.ts
  • tests/providers/digitalocean-scaleway-provider.test.ts
  • tests/providers/gpt61-terra-provider-rows.test.ts
  • tests/providers/kiro/kiro-refusal.test.ts
  • tests/providers/mimo-v26-catalog.test.ts
  • tests/providers/minimax-combo-image-input.test.ts
  • tests/providers/minimax-reasoning-split.test.ts
  • tests/providers/model-roster-seed-repair.test.ts
  • tests/providers/modelflare-provider.test.ts
  • tests/providers/provider-account-quota-persistence.test.ts
  • tests/providers/provider-capacity.test.ts
  • tests/providers/provider-input-modalities.test.ts
  • tests/providers/provider-registry-parity.test.ts
  • tests/providers/qoder-adapter.test.ts
  • tests/providers/qoder-scaffold-guard.test.ts
  • tests/providers/resolved-model-policy.test.ts
  • tests/providers/tokenlab-protocols.test.ts
  • tests/providers/xai/grok-lifecycle.test.ts
  • tests/responses/chat-anthropic-reasoning-details.test.ts
  • tests/responses/chat-inbound-reasoning-none.test.ts
  • tests/responses/chat-native-decline-reason.test.ts
  • tests/responses/chat-native-reasoning-scope.test.ts
  • tests/responses/codex-ws-handshake-validation.test.ts
  • tests/responses/compact-key-selection.test.ts
  • tests/responses/direct-credit-renewal-ingress.test.ts
  • tests/responses/eventstream-decoder.test.ts
  • tests/responses/eventstream-fragmentation.test.ts
  • tests/responses/openai-responses-summary-none.test.ts
  • tests/responses/protocol-antigravity-direct-chat.test.ts
  • tests/responses/responses-anthropic-compaction-prefix.test.ts
  • tests/responses/responses-compaction-override.test.ts
  • tests/responses/responses-native-item-extensions-compact.test.ts
  • tests/responses/responses-native-ultra-effort-wire.test.ts
  • tests/responses/responses-parser.test.ts
  • tests/responses/responses-request-compression.test.ts
  • tests/responses/responses-required-chat-tool.test.ts
  • tests/responses/responses-sidecar-usage.test.ts
  • tests/responses/responses-url-citation-title-repair.test.ts
  • tests/responses/sse-carriage-return.test.ts
  • tests/responses/thought-signature-credential-scope.test.ts
  • tests/responses/ws-committed-liveness.test.ts
  • tests/responses/ws-upstream.test.ts
  • tests/routing/codex-role-auto-assign.test.ts
  • tests/routing/fastwire-policy.test.ts
  • tests/routing/jev-decision.test.ts
  • tests/routing/jev-service-exchange.test.ts
  • tests/routing/router.test.ts
  • tests/server/agent-task-recovery-combo.test.ts
  • tests/server/agent-task-recovery.test.ts
  • tests/server/api-catalog-route.test.ts
  • tests/server/combo-metered-consent.test.ts
  • tests/server/loopback-listener-integration.test.ts
  • tests/server/management-qoder-selector-state.test.ts
  • tests/server/management-route-registry.test.ts
  • tests/server/management-sidecar-anthropic-instance.test.ts
  • tests/server/port-reclaim.test.ts
  • tests/server/server-combo-cooldown-recording.test.ts
  • tests/server/server-combo-required-tool-contract.test.ts
  • tests/server/server-kiro-refusal-e2e.test.ts
  • tests/server/server-live-cancel.test.ts
  • tests/server/server-live-close.test.ts
  • tests/server/server-live.test.ts
  • tests/server/server-management-auth.test.ts
  • tests/service/autostart-health.test.ts
  • tests/service/ownership-mutation-lease-diagnostics.test.ts
  • tests/service/service-desktop-supervision-windows.test.ts
  • tests/service/service-tier-capability.test.ts
  • tests/service/stop-deferred-teardown.test.ts
  • tests/service/stop-direct-fetch.test.ts
  • tests/test-layout-tooling.test.ts
  • tests/update/update-job.test.ts
  • tests/update/update-npm-supervisor-exit.test.ts
  • tests/update/update-npm-timeout.test.ts
  • tests/update/update-stop-classification.test.ts
  • tests/update/update-stop-first.test.ts
  • tests/update/update-teardown-handover.test.ts
  • tests/usage/gpt61-terra-pricing.test.ts
  • tests/usage/quota-pool.test.ts
  • tests/usage/quota-reset-observation.test.ts
  • tests/usage/request-history-rebuild-worker.test.ts
  • tests/usage/usage-cost.test.ts
  • tests/usage/usage-timeline.test.ts
  • tests/vision/mistral-vision-sidecar.test.ts
  • tests/vision/vision-text-only-predicate.test.ts
  • tests/windows/coding-agent-native-empty-argv.test.ts
  • tests/windows/windows-config-read-acl-memo.test.ts
  • tests/windows/windows-native-principal.test.ts
  • tests/windows/windows-user-principal.test.ts

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • 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 github-actions Bot added the intake: hygiene-blocked Deterministic PR hygiene checks failed label Oct 27, 2026
@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Deterministic hygiene checks failed.

  • new_suppression — A new TypeScript, lint, formatter, or similar suppression was added. Fix the underlying issue or obtain suppression-approved. Paths: tests/ci-workflows/ci-pr-hygiene-approvals.test.ts.

@github-actions github-actions Bot changed the title release: promote frozen tip 2606f6f922 to main as 2.93.0 [WRONG BRANCH] release: promote frozen tip 2606f6f922 to main as 2.93.0 Oct 27, 2026
@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

⏳ DRAFT

  • wrong target branch (main); retarget to dev. UI screenshot required.

What to do

  • Retarget this PR to dev — all contributions go to dev.
  • Add a screenshot of the UI change to the PR description.

Its title has been prefixed with [WRONG BRANCH].
Automatic draft conversion failed (token cannot change draft status). Please convert this pull request to a draft manually. The required enforce-target check will keep failing until every issue above is resolved.

@github-actions
github-actions Bot marked this pull request as draft October 27, 2026 05:31
Comment thread .github/workflows/ci.yml Dismissed
Comment thread .github/workflows/ci.yml Dismissed
@lidge-jun lidge-jun added the suppression-approved Maintainer approved a new type or lint suppression label Oct 27, 2026
@lidge-jun

Copy link
Copy Markdown
Owner Author

Release captain: suppression-approved for this promotion only. The flagged path, tests/ci-workflows/ci-pr-hygiene-approvals.test.ts, is the hygiene checker's own test suite (fixtures contain suppression strings), landed on dev via #7699; it appears here only because the diff spans everything since 2.92.0. The promotion commit changes no files (tree equals candidate 2606f6f). wrong-base and UI-screenshot findings are the expected promotion exceptions (#7634, #7796).

HOLD: this PR is not merged until the CodeQL alerts at .github/workflows/ci.yml:733-738 (test-changed job from #7782) get an independent security verdict.

@github-actions github-actions Bot removed the intake: hygiene-blocked Deterministic PR hygiene checks failed label Oct 27, 2026
@lidge-jun

Copy link
Copy Markdown
Owner Author

Release-captain disposition for CodeQL alerts 345, 346, 347 (actions/cache-poisoning/poisonable-step, .github/workflows/ci.yml:733/736/738, test-changed job from #7782): dismissed as false positive after an independent security review (PASS, zero blocking).

  • test-changed is restricted to pull_request (ci.yml:724), so the workflow_dispatch/schedule paths cited by the alerts cannot reach it. It inherits contents: read and supplies no custom secrets; checkout credentials are not persisted.
  • setup-bun (via .github/actions/setup-project-bun) does save an executable cache, but entries created by pull_request runs are scoped to refs/pull/<n>/merge and cannot be restored by trusted branch, scheduled, dispatched or release runs (release.yml:998 and dev-version-bump.yml:85 share the composite; matching keys do not bypass ref scoping).
  • The job replaces the existing unprivileged PR test execution (same checkout/install/run pattern as the test job since v2.92.0) and adds no secret, permission, privileged event path or cache mechanism.

@lidge-jun

Copy link
Copy Markdown
Owner Author

Release-captain promotion record (v2.93.0 step 6), merged on the owner's instruction. Head 6a87fea: tree = frozen candidate 2606f6f (ours merge of main). Candidate gates: lane=all 40434756491 + Service lifecycle 40434760151 green; same tree shipped as 2.93.0-preview.20261027 (release 40452751461) and passed the preview smoke. CodeQL alerts 345-347 dismissed as false positive after independent security review (see comment above). enforce-target fails only on promotion exceptions. PR CI 40455723510 was still running at merge; push-event Cross-platform CI + Service lifecycle on the merged SHA gate release.yml. Merge commit (not squash) keeps dev history reachable for the changelog builder.

@lidge-jun
lidge-jun marked this pull request as ready for review October 27, 2026 05:46
@lidge-jun
lidge-jun merged commit 88aaa75 into main Oct 27, 2026
40 of 43 checks passed
@lidge-jun
lidge-jun deleted the codex/promote-main-2.93.0 branch October 27, 2026 05:46
@lidge-jun

Copy link
Copy Markdown
Owner Author

Release-captain record (v2.93.0, owner delegated the decision): main push-event Cross-platform CI 40457212804 on 88aaa75 failed only test 2/4 (job 122033294440): tests/claude-integration/claude-picker-runtime.test.ts:780 "a busy picker port leaves the applied profile for the next restart to retry" got EADDRINUSE on 127.0.0.1:33317 at the second start.

Classification: test port race, not a product regression. The test picks a random free port pair by bind-probe-and-release (freePortPair), squats the picker port, then releases it and expects the next start to rebind the same port; the port was taken in between. The test has existed since #6072 (2026-09-27, in v2.92.0). The identical tree passed every test shard in candidate lane=all 40434756491, preview push CI 40448022930 and PR CI 40455723510.

Action: one rerun of the failed job only. A follow-up will remove the predetermined-port pattern from this test (same class as #7740).

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

Labels

suppression-approved Maintainer approved a new type or lint suppression

Projects

None yet

Development

Successfully merging this pull request may close these issues.