Skip to content

[WRONG BRANCH] release: promote verified 2.52.0-preview.20260912 product tree to preview - #4399

Merged
lidge-jun merged 264 commits into
previewfrom
codex/release-2520-preview-20260912
Sep 12, 2026
Merged

[WRONG BRANCH] release: promote verified 2.52.0-preview.20260912 product tree to preview#4399
lidge-jun merged 264 commits into
previewfrom
codex/release-2520-preview-20260912

Conversation

@lidge-jun

Copy link
Copy Markdown
Owner

Summary

Verification

  • dev push-event Cross-platform CI run 34691465021 on f2f1783ae0: success. That is the last CI-bearing dev head; 392e182a00 adds a documentation-only commit that workflow path filters exclude.
  • Earlier dev push-event run 34691002428 on 4b6849cf12: success.
  • Regression sweep over every non-merge commit in the unverified window is recorded in devlog/_plan/260912_release_regression_train/025_sweep_results.md: eight lanes, six clean, one already-fixed minor, one blocking finding that is now landed.
  • Merge shape matches the previous promotion c1af92596a: a merge of dev into preview with package.json resolved to the channel version.
  • enforce-target is expected to reject this PR because it targets preview rather than dev. That is the promotion exception in the branch policy, not a defect.
  • Local tests, build, typecheck and install: NOT RUN under the standing restriction. The preview push-event run is the release gate and has to pass before anything publishes.

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.

github-actions Bot and others added 30 commits September 11, 2026 10:55
chore(release): open dev at 2.52.0 before releasing 2.51.0
…a-base

fix(zai): route coding quota probes by canonical base
…lared bare tool (#4264)

* fix(tools): normalize invented default. namespace back to declared bare tool

* fix(responses): normalize default namespace to declared bare tool and track bare provenance

- Downstream identity normalization in Responses relay: rewrite provider-invented
  default. prefix or namespace: "default" back to declared bare tool for SSE streams
  (added, done, terminal completed/incomplete snapshots) and non-streaming JSON
  responses, preserving all item fields (id, call_id, arguments).
- Bare tool provenance tracking: collectDeclaredBareWireToolNames collects top-level
  and builtin functions namespace declarations that do not carry . or __, preventing
  declarations like foo__view_image from authorizing default.view_image or
  { namespace: "default", name: "view_image" }.
- Shared normalization helper: update normalizeDeclaredToolName and guard helper
  docstrings to clarify default namespace normalization boundary beyond code-mode
  exec helpers.
- Test coverage in tests/responses/responses-undeclared-tool-guard.test.ts covering
  bare wire collection, SSE stream item rewriting, terminal snapshot rewriting, JSON
  rewriting, negative controls for declared namespaced tools, and preservation of
  explicitly declared default. and default__ tools.

* test(responses): cover 2-turn continuation caller relay and normalize function_call_arguments.done

---------

Co-authored-by: chilung <b0423031@gmail.com>
…ete-unavailable

fix(claude): allow deleting unavailable routes in desktop profile
* fix(claude): allow deleting unavailable routes in desktop profile

* test(claude): cover rejecting modifications to unavailable routes

* fix(tools): normalize invented default. namespace back to declared bare tool

* fix(responses): normalize default namespace to declared bare tool and track bare provenance

- Downstream identity normalization in Responses relay: rewrite provider-invented
  default. prefix or namespace: "default" back to declared bare tool for SSE streams
  (added, done, terminal completed/incomplete snapshots) and non-streaming JSON
  responses, preserving all item fields (id, call_id, arguments).
- Bare tool provenance tracking: collectDeclaredBareWireToolNames collects top-level
  and builtin functions namespace declarations that do not carry . or __, preventing
  declarations like foo__view_image from authorizing default.view_image or
  { namespace: "default", name: "view_image" }.
- Shared normalization helper: update normalizeDeclaredToolName and guard helper
  docstrings to clarify default namespace normalization boundary beyond code-mode
  exec helpers.
- Test coverage in tests/responses/responses-undeclared-tool-guard.test.ts covering
  bare wire collection, SSE stream item rewriting, terminal snapshot rewriting, JSON
  rewriting, negative controls for declared namespaced tools, and preservation of
  explicitly declared default. and default__ tools.

* test(responses): cover 2-turn continuation caller relay and normalize function_call_arguments.done

* fix(catalog): register the canonical Antigravity discovery RPC

google-antigravity declared liveModels but no modelDiscovery spec, so isRegistryModelDiscoveryUrl rejected its own canonical CCA URL and the TUN Fake-IP exception never applied. Relative path keeps allowBaseUrlOverride bases custom; the resolved URL is byte-identical to what buildModelsRequest already sent.

---------

Co-authored-by: chilung <b0423031@gmail.com>
…me flow-style refusals (#4268)

* fix(tools): normalize invented default. namespace back to declared bare tool

* fix(responses): normalize default namespace to declared bare tool and track bare provenance

- Downstream identity normalization in Responses relay: rewrite provider-invented
  default. prefix or namespace: "default" back to declared bare tool for SSE streams
  (added, done, terminal completed/incomplete snapshots) and non-streaming JSON
  responses, preserving all item fields (id, call_id, arguments).
- Bare tool provenance tracking: collectDeclaredBareWireToolNames collects top-level
  and builtin functions namespace declarations that do not carry . or __, preventing
  declarations like foo__view_image from authorizing default.view_image or
  { namespace: "default", name: "view_image" }.
- Shared normalization helper: update normalizeDeclaredToolName and guard helper
  docstrings to clarify default namespace normalization boundary beyond code-mode
  exec helpers.
- Test coverage in tests/responses/responses-undeclared-tool-guard.test.ts covering
  bare wire collection, SSE stream item rewriting, terminal snapshot rewriting, JSON
  rewriting, negative controls for declared namespaced tools, and preservation of
  explicitly declared default. and default__ tools.

* test(responses): cover 2-turn continuation caller relay and normalize function_call_arguments.done

* fix(catalog): register the canonical Antigravity discovery RPC

google-antigravity declared liveModels but no modelDiscovery spec, so isRegistryModelDiscoveryUrl rejected its own canonical CCA URL and the TUN Fake-IP exception never applied. Relative path keeps allowBaseUrlOverride bases custom; the resolved URL is byte-identical to what buildModelsRequest already sent.

* fix(integrations): apply DSH into an empty providers container and name flow-style refusals

locatePath refused both shapes a DSH-managed file has before any provider exists: a valueless providers: key (parses as null, so isPlainRecord rejected it) and providers: {} (no plain block key, so the missing-key branch never ran). Adopt both, and report a populated flow container as its own cause instead of blaming comments that are not in the file.

---------

Co-authored-by: chilung <b0423031@gmail.com>
* feat(cli): route ocx login codex to the Codex account-pool login

ocx login codex|chatgpt|openai answered with the ~90-provider usage wall, which never contains the word the user typed, because the Codex pool lives behind ocx account login. Route those three spellings to that flow and name it in the usage wall, ocx help and the registry entry.

* docs(cli): document the ocx login codex route and fold the review findings

Audit round 1 ran four independent grok-4.6 agents over the plan and the diff. Folded: redact bare leftovers in the account login parser now that ocx login reaches it, replace a flags-survive test that could not fail with one that reads the POST body, name openai-apikey in the wall and registry details since ocx login openai no longer shows the provider list, guard a future key-provider id collision, assert the production wall and the non-Codex path. Docs: the stale ocx login chatgpt form is replaced across the English guide, seven locales and both CLI reference pages.
Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com>
…lly (#4276)

* docs(structure): restructure the maintainer SOT and gate it mechanically

structure/ was 13 numbered files and 457KB that nothing verified. 04_transports-and-sidecars.md
alone was 1,860 lines, two docs shared the number 09, 95 [Decision Log] blocks sat inline in
contract text, and four paths the docs named had already been moved or deleted. No test read the
folder, so none of that could be caught.

Sections move verbatim into 27 topic docs, at most one directory deep, ordered by
structure/manifest.json instead of by filename. The NN_ prefix is what produced the 09 collision
and made splitting a doc cost a renumber; ordering now has one author. The 95 decision records
move to structure/decisions/ADR-NNNN-*.md, each linked from exactly one owning doc, so a doc
states the contract that holds now and links the reasoning rather than carrying it inline.

scripts/structure-ssot.ts is the gate, blocked into CI by tests/ci-workflows/structure-ssot.test.ts.
It fails on a doc missing from the manifest, a numeric prefix, a doc over the 600-line budget, an
unresolvable link, a backticked repository path this tree does not have, an inline [Decision Log],
a decision record with zero or two owners, a hole in record numbering, an invariant whose test is
gone, and a src/ area no doc claims. INDEX.md is generated by bun run structure:index and compared
byte for byte, so the reading order and the source-ownership table cannot contradict the manifest.

The nine invariants in overview.md now carry INV-* ids bound to the test that holds them, and each
of those tests names its id back, so splitting or renaming the test fails the gate instead of
silently unbinding the invariant. structure/AGENTS.md carries the rules the gate enforces.

Fixed in passing, each found by the new gate: gui/src/pages/CodexAuth.tsx (now
codex-set-multiauth.tsx) and two devlog units documented under _plan after they closed into _fin.

* docs(structure): make the SSOT gate survive its own review

Three read-only review passes over the previous commit found the gate claiming more than it
checked, and one paragraph lost in the split. Fixed here rather than shipped.

Content: clients/integrations.md lost its opening contract paragraph, the only sentence stating the
subsystem's reversibility promise. The split preserved preambles for docs migrated whole and dropped
them for docs assembled from a section list; that paragraph is restored.

Ownership: the map claimed every source area had exactly one owning doc. That is false in this
repository - src/server/ is genuinely described by the management-API doc, the Responses transport
doc and the Images doc - and the gate could not see it, because collision detection compared exact
strings while every real overlap was a nesting. The model is now many-docs-per-area, the manifest
lists what each doc actually names, and the five areas no doc names at all are recorded with
reasons instead of being assigned to a doc that never mentions them.

Invariants: five of nine were bound to tests that do not enforce them. INV-AGENT-01 named the
picker-order band test while the five-featured rule lives in catalog-full-picker-order.test.ts;
INV-AUTH-01 named a file whose nearest assertions run one credential against both planes, while
server-management-auth.test.ts has a describe block for the separation itself. Those two are
rebound, INV-RESTORE-01 is narrowed to the path its test covers, and INV-HOME-01 and INV-SLUG-01
have no honest test in this repository, so they are stated without a binding and recorded in
grace.unboundInvariants. Naming a test that would pass while the rule was violated is worse than
admitting the gap.

Gate: repository paths are resolved against the git index rather than the filesystem, because
existsSync cannot tell a tracked file from untracked local leftovers and is case-insensitive on
Windows and case-sensitive on Linux CI. Decision records are no longer checked against the present
tree - a record describes a past one. Fenced blocks are stripped before scanning. Link anchors are
validated. Record numbering requires uniqueness but no longer contiguity, which would have made two
branches collide on merge. Owners are counted per doc, not per mention. Leading digits are rejected
in one rule instead of two, so 01-overview.md fails like 01_overview.md. Inline decision-log
detection is case-insensitive and also catches the bullet template. The budget counts content lines
and drops a grace entry once the doc is back under it.

Tests: the suite proved one rule and shipped ten unproven. It now drives every rule red once
against a synthetic tree, including the three cases that must NOT fire - a stale path inside a
decision record, a path inside a fenced example, and a doc naming one record twice.

* docs(structure): carry the Z.ai quota section into the new layout

dev added a Z.ai quota-destination section to 05_gui-and-management-api.md while this branch was
open. Rebase rename-detection moved it into gui-and-management-api.md and brought its inline
[Decision Log] with it, which the gate refused - the first thing it caught that was not planted.
The reasoning is now ADR-0096, linked from the section that owns it.
Records the live-probe evidence that disproves the native/external diagnosis, maps the two real causes, and locks the slice order. wp2 replaces an instrumented build with a request-shape lever that reaches the existing expanded finalize grace, so the experiment runs on the shipped binary.
Follow-up to #4276. CodeRabbit posted twelve findings on that PR; these are the ones that were
still true against the merged code.

The gate was claiming more than it checked, again, in four places:

- A fragment-only link was skipped entirely, and one was already broken: structure/subagents.md
  pointed at #ultra-reasoning-level, a heading that moved to catalog.md during the split. Fragment
  targets now resolve against their own document, which found it immediately.
- Link targets were resolved with existsSync while backticked paths went through the index. That is
  the per-machine split verdict this module exists to remove, on the reference class the split
  churned hardest.
- A documents entry was accepted because the path existed, not because the doc said anything about
  it, so the map could claim coverage the prose did not have. A claim now has to be backed by a path
  the doc actually names.
- Decision-record ownership was inferred from any occurrence of the filename in raw text. A record
  path inside a fenced example counted as a second owner, and an orphaned record whose owner link
  was deleted still looked owned. Ownership is now the > Decision record: link, read fence-stripped.

Also: the filesystem fallback no longer applies when the git index is readable, so untracked local
leftovers cannot satisfy a check that CI will fail; the manifest goes through a validating loader so
a malformed file is a failure line instead of an uncaught stack trace; a missing overview.md is a
failure rather than silence across every invariant binding; and backticked paths rooted at any
tracked top-level entry are checked, not just the ten directories that were hardcoded.

One finding is answered rather than implemented. Validating every filename-shaped token would
reject the runtime files these docs legitimately name - config.toml, models_cache.json, ocx.pid -
which live in a user's home, not in this repository. The boundary is now stated in
structure/AGENTS.md, and root documents stay covered because a reference like MAINTAINERS.md is
written as a link, and links are checked.

Docs: the client-integration rationale left inline in adapters/registry.md moves into ADR-0093 with
its evidence intact. All 96 records are retitled to say what they are - the heading names the
section a record was extracted from, not the decision it contains, and a title that reads like a
decision name while being a section name sends maintainers to the wrong record. src/AGENTS.md now
says every applicable doc is updated, not one.

Six new negative cases, including the two that must NOT fire: a bare filename is not a repository
path, and a record named in prose is not an owner.
…roadmap

Removes the native-gate edit from branch A because conversationCheckpointUpdate is liveness-only, so arrival order is not content coverage. Downgrades the grace experiment to positive-only because client-tool-suspend elapsedMs is turn-relative and cannot witness which grace branch ran. Appends wp2b and wp5.
Adds a narrow noJsonSchemaModels contract that downgrades json_schema to json_object on the Zen gateway DeepSeek routes, stops arming the Go thinking-budget wire for models with no ladder, and pins both with structural parity guards. Maintainer self-integration into dev per MAINTAINERS.md: exact head 340bc24, 27 checks, 0 failing or pending.
…e stream

finalizeAfterDrain reaches finalizeTurnEvents which sets state.terminated, and returns [] for a terminated state, so draining before re-arming would leave the retry returning early without cancelCursorRun. Mirror its guards instead of calling it.
…point claim

000_plan.md rests on the absence of conversationCheckpointUpdate among a tool turn frames. Record the actual 33-frame sequence, and state plainly that the 7ms window between suspend and cancel makes this an absence of opportunity rather than evidence of absence.
A second review, run separately from the agent that wrote the previous commit, found two ways the
gate was still wider than its prose and one it had newly opened.

Deriving the top-level path set from the tracked tree meant a reference became INVISIBLE exactly
when its directory disappeared. go/ is the live case: retired and untracked, so every remaining go/
mention had silently stopped being checked, and the absentPaths exemption that documents its absence
had become unreachable. The set now unions in the roots this repository has or used to have.

The mention-backed ownership check accepted the area name itself, which a table of directory names
satisfies - 32 of 105 claims rested on exactly that, including nearly every claim in runtime.md. The
check is unchanged; the prose is, because the honest description is that it catches an invented
claim and does not prove the doc says anything useful.

The manifest loader validated that grace arrays were arrays, never their elements, so a bare string
where an object belongs still threw a TypeError from inside the checks. Element shapes are validated
now. Source-area enumeration read the filesystem while every path resolved through the index, so an
untracked scratch directory under src/ produced a failure CI could not reproduce; it reads the index
too. Decision-record ownership matched on basename, so a link outside decisions/ could claim a record
it did not point at.

Also corrected in the rules file: the decision-log check finds two literal markers, not all inline
reasoning - the rationale moved out of registry.md last commit contained neither, which is the proof;
root files are checked directly rather than only through links; and the index comparison normalises
line endings rather than being byte-for-byte.

Five new cases, two of which build a real git repository, because every prior negative case ran in a
plain temp directory where the index branch - the one the module argues hardest for - was never
reached. One drives the case-variant verdict, one rejects an untracked leftover.
…stant

parallel_tool_calls is local-only and never protobuf-encoded, so three arms at 12 tools isolate the finalize grace. 50ms yields no checkpoint frame; 1500ms yields one and 2742 captured bytes; reproduced both directions.
…asurement

ocx debug provider logs is a 500-line ring buffer, so line-count windowing silently returned zero for every arm once it filled. Reading a fixed tail restores the signal: 1500ms captures a post-toolCallStarted checkpoint of 3036 bytes, 50ms captures nothing. wp2 LATE stands; the usedTokens:0 pre-tool hypothesis is refuted by arrival order.
…ponses path

Two /v1/responses turns with previous_response_id share conversationHash cursor_cdbed7dcc and the second reports mode checkpoint rather than full-replay. C2 is chat-completions-specific and closes without a patch; the surviving defect is the client-tool turn.
…n actually sends

A client-tool turn suspends before turnEnded, and upstream sends that turns checkpoint right after toolCallStarted - after the 50ms drain grace, so it was cancelled away and every such turn full-replayed with cached_tokens 0. Measured live with the tool catalog held constant: 50ms captures nothing, 1500ms captures 3036 bytes. Extend once, bounded, before finalizeAfterDrain (which terminates the event state), and fire early from the capture site so a turn that does send a checkpoint pays arrival latency instead of the whole window. The native wire-model gate is untouched: capturedAfterClientTool proves arrival, not coverage.
…capture

fix(cursor): capture the conversation checkpoint a suspended tool turn actually sends
…4282)

Splits the DeepSeek thinking set by who serves the route (first-party deepseek-flash vs gateway deepseek-v4.1-flash), removes the retired deepseek-v4-pro from every static roster, and excludes it from the routed catalog on live-discovery providers where deleting a row would strip capabilities instead of the model. Carries the Command Code effort ladders from #4258. Maintainer integration into dev per MAINTAINERS.md with all checks passing at the exact head.
…dence

docs: retain cache delivery evidence and correct closure attribution
dev has not had a finished CI run since e432cf5, and the one push run that
was allowed to complete (f9815da) concluded failure, so dev is red rather
than merely unverified. This unit plans the path back: repair CI, sweep the
79-commit window for regressions, then promote preview and main.

Records the resolved release mechanics so later cycles do not re-derive them:
promotion is a pull request because the preview and main rulesets give admin a
pull_request bypass only, the prerelease is 2.52.0-preview.20260912, the stable
is 2.52.0, and dev must move to 2.53.0 before the stable can publish.
The "unreadable preimages" integration test created its denial with
spyOn(fs, "readFileSync") on the child's require("node:fs") handle, but
inject-coordination.ts binds readFileSync as an ESM named import, so
readOrNull and captureCodexPreImages never saw the mock. Every assertion in
that test ran against an undenied filesystem, which is why it fails identically
as test 4/4 on Linux and macos 2/2 on macOS with matchedReads: 0.

Replace the mock with chmod 0 so the EACCES is a real permission, and report an
unreadable field that proves the precondition before the later assertions
depend on it. The capture, compensation, outcome, and preservation expectations
are unchanged. Windows chmod only toggles the read-only bit and root ignores
mode 0, so both skip.
…on-fixtures

fix: complete Cline registration and stabilize integration fixtures
Eight read-only lanes covered every non-merge commit between the last green dev
and the merge that re-greened it. Six came back clean, one found only the help
text count #4390 had already fixed, and one found a real routing regression.

#4368 gave a quota refusal its own avoidance window, and pool candidates honour
it, but the main account reaches the candidate list through a separate
re-insertion block that never checks it. The same commit also promises that an
operator clearing the cooldown or naming the account overrules the avoidance,
and neither path does. All three were re-derived against source by a second
reviewer before being written down.
#4368 split a quota refusal into a capped cooldown and a longer window recording
what the refusal actually announced. Pool candidates honour that window. The main
login never did: it is not in config.codexAccounts, so it reaches selection only
through a separate re-insertion branch that checked the soft avoid and not the
quota avoidance. With the cooldown capped at fifteen minutes and the window
running up to six hours, a user with the main login plus a pool saw exactly the
failure #4368 was written to stop — the pool stayed avoided while the account
that refused came back and won the next pick on a weekly bar a burst limit never
touches.

The same commit states that an operator clearing the cooldown or naming the
account overrules the avoidance. Neither did. A reset-derived refusal writes only
the scoped health entry, and resetCodexRoutingForManualSelection read the
account-wide map and returned early when it was empty, so naming the account
cleared nothing in the case that produced the avoidance.
clearCodexAccountCooldown carried quotaAvoidUntil through in its rest spread,
which left the operator escape hatch not escaping while automatic probe recovery
deliberately drops the same field.

Found by a regression sweep over the window between the last green dev and the
merge that re-greened it, and re-derived against source by an independent
reviewer before any change was made.
The routing change alters shared Codex selection and manual cooldown recovery,
and structure/INDEX.md maps src/codex/ to this document, so the maintainer SSOT
has to describe it: the window binds the main alias on the same terms as an added
account, and both operator escapes clear it from the scoped entries a
reset-derived refusal actually writes.
fix(codex): apply a quota refusal's avoidance window to the main login
clearCodexAccountCooldown returned before it looked at quotaAvoidUntil whenever
cooldownUntil had already passed. The two durations have different lengths on
purpose — the cooldown caps at fifteen minutes, the announced window runs up to
six hours — so the moment an operator actually reaches for this escape hatch is
usually after the cooldown lapsed and only the window is still keeping the
account out of rotation. The call was a no-op there, and the dashboard reported
cleared: false while selection kept passing the account over for hours.

Treat a live avoidance window as its own reason to act, and keep the existing
contract otherwise: failure counters and softAvoid still survive.
…psed

fix(codex): let clear-cooldown lift an avoidance the cooldown outlived
#4397 made a live avoidance window its own reason for the clear-cooldown
operation to act, which changes the operator-facing contract. structure/INDEX.md
maps src/codex/ to this document, so the SSOT has to say that a lapsed cooldown
with a live window still reports a clear, and that an account with neither still
reports no change.
docs(structure): record what clear-cooldown does to a lapsed window
…view

The product tree is dev at 392e182, whose last CI-bearing head f2f1783
passed the full hosted matrix. Only package.json differs, carrying the preview
channel version.

dev had drifted 79 commits past its last finished CI run and the one run that
was allowed to complete had failed, so this promotion follows a repair and a
regression sweep rather than an ordinary cut: #4390 fixed an integration test
that never denied anything and had been red on dev since #4342, and
#4396/#4397/#4398 closed four gaps in the quota-avoidance contract #4368
introduced, including the main login never honouring the window its own refusal
announced.
@lidge-jun
lidge-jun requested a review from Ingwannu as a code owner September 12, 2026 11:50
@coderabbitai

coderabbitai Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 821 files, which is 521 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

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 82ab12d8-8716-43c4-b194-1cb668f4311f

📥 Commits

Reviewing files that changed from the base of the PR and between 69207f1 and 8d7e24e.

⛔ Files ignored due to path filters (15)
  • devlog/_plan/260911_account_pool_unification/assets/wp5b-pool-settings.png is excluded by !**/*.png
  • devlog/_plan/260912_cline_client/evidence/cline-export.png is excluded by !**/*.png
  • devlog/_plan/260912_cline_client/evidence/cline-integration.png is excluded by !**/*.png
  • devlog/_plan/260912_combo_carry/031_exhausted.png is excluded by !**/*.png
  • devlog/_plan/260912_combo_carry/032_unknown.png is excluded by !**/*.png
  • devlog/_plan/260912_combo_carry/033_expired.png is excluded by !**/*.png
  • devlog/_plan/260912_omo_client_integration/evidence/integrations-omo-tab.png is excluded by !**/*.png
  • devlog/_plan/260912_provider_catalog_unified_search/evidence/wp2-local-tab.png is excluded by !**/*.png
  • devlog/_plan/260912_provider_catalog_unified_search/evidence/wp3-note-clamp.png is excluded by !**/*.png
  • devlog/_plan/260912_provider_catalog_unified_search/evidence/wp3-note-popup.png is excluded by !**/*.png
  • devlog/_plan/260912_provider_catalog_unified_search/evidence/wp4-browse-mode.png is excluded by !**/*.png
  • devlog/_plan/260912_provider_catalog_unified_search/evidence/wp4-search-accounts.png is excluded by !**/*.png
  • devlog/_plan/260912_provider_catalog_unified_search/evidence/wp4-search-groups.png is excluded by !**/*.png
  • gui/public/provider-icons/devin.svg is excluded by !**/*.svg
  • gui/public/provider-icons/omo.svg is excluded by !**/*.svg
📒 Files selected for processing (821)
  • AGENTS.md
  • CONTRIBUTING.md
  • devlog/_fin/260912_devin_cli_account_login/000_plan.md
  • devlog/_fin/260912_devin_cli_account_login/001_cli_auth_survey.md
  • devlog/_fin/260912_devin_cli_account_login/002_audit_resolution.md
  • devlog/_fin/260912_devin_cli_account_login/003_blocker1_resolution.md
  • devlog/_fin/260912_devin_cli_account_login/004_live_cli_probe.md
  • devlog/_fin/260912_devin_cli_account_login/005_cli_key_is_a_real_credential.md
  • devlog/_fin/260912_devin_cli_account_login/006_prior_art.md
  • devlog/_fin/260912_devin_cli_account_login/007_reference_proxy_corroboration.md
  • devlog/_fin/260912_devin_cli_account_login/010_phase1_cli_login.md
  • devlog/_fin/260912_devin_cli_account_login/011_phase1_credential_import.md
  • devlog/_fin/260912_devin_cli_account_login/020_phase2_reclassify.md
  • devlog/_fin/260912_devin_cli_account_login/021_phase2_oauth_and_transport.md
  • devlog/_fin/260912_devin_cli_account_login/030_phase3_surface_and_land.md
  • devlog/_fin/260912_devin_cli_account_login/031_phase3_surface_and_land.md
  • devlog/_fin/260912_devin_cli_account_login/090_outcome.md
  • devlog/_plan/260911_account_pool_unification/000_plan.md
  • devlog/_plan/260911_account_pool_unification/010_phase1_manual_selection.md
  • devlog/_plan/260911_account_pool_unification/020_phase2_shared_kernel.md
  • devlog/_plan/260911_account_pool_unification/030_phase3_cache_affinity.md
  • devlog/_plan/260911_account_pool_unification/040_phase4_key_pool_strategy.md
  • devlog/_plan/260911_account_pool_unification/050_phase5_surface_consolidation.md
  • devlog/_plan/260911_cursor_checkpoint_capture/000_plan.md
  • devlog/_plan/260911_cursor_checkpoint_capture/001_frame_evidence.md
  • devlog/_plan/260911_cursor_checkpoint_capture/010_phase1_grace_experiment.md
  • devlog/_plan/260911_cursor_checkpoint_capture/011_wp2_deconfound.md
  • devlog/_plan/260911_cursor_checkpoint_capture/012_wp4_measurement_artifact.md
  • devlog/_plan/260911_cursor_checkpoint_capture/020_phase2_responses_identity.md
  • devlog/_plan/260911_cursor_checkpoint_capture/030_phase3_landing.md
  • devlog/_plan/260911_cursor_checkpoint_capture/040_wp5_coverage_instrument.md
  • devlog/_plan/260911_deepseek_v41_transition/000_plan.md
  • devlog/_plan/260911_deepseek_v41_transition/001_evidence.md
  • devlog/_plan/260911_deepseek_v41_transition/002_inventory.md
  • devlog/_plan/260911_deepseek_v41_transition/010_phase1_pr4258.md
  • devlog/_plan/260911_deepseek_v41_transition/020_phase2_v41_rollout.md
  • devlog/_plan/260911_deepseek_v41_transition/030_phase3_v4pro_removal.md
  • devlog/_plan/260911_deepseek_v41_transition/040_phase4_merge.md
  • devlog/_plan/260911_devin_two_providers/001_plan.md
  • devlog/_plan/260911_devin_two_providers/002_audit.md
  • devlog/_plan/260911_devin_two_providers/003_live_evidence.md
  • devlog/_plan/260911_devin_two_providers/004_devin_cli_split.md
  • devlog/_plan/260911_ocx_login_codex_routing/000_plan.md
  • devlog/_plan/260911_ocx_login_codex_routing/010_audit_round1.md
  • devlog/_plan/260911_opencode_go_free_stabilization/000_plan.md
  • devlog/_plan/260911_opencode_go_free_stabilization/001_issue_triage.md
  • devlog/_plan/260911_opencode_go_free_stabilization/002_cross_proxy_survey.md
  • devlog/_plan/260911_opencode_go_free_stabilization/003_registry_gap_inventory.md
  • devlog/_plan/260911_opencode_go_free_stabilization/004_audit_rounds.md
  • devlog/_plan/260911_opencode_go_free_stabilization/010_phase1_preset_structured_output.md
  • devlog/_plan/260911_opencode_go_free_stabilization/020_phase2_preset_consistency_guard.md
  • devlog/_plan/260911_opencode_go_free_stabilization/030_phase3_docs_and_pr.md
  • devlog/_plan/260911_opencode_go_free_stabilization/031_wp4_outcome.md
  • devlog/_plan/260911_r2_merge_train/000_plan.md
  • devlog/_plan/260911_r2_merge_train/010_phase1_pr4244.md
  • devlog/_plan/260911_r2_merge_train/020_phase2_pr4248.md
  • devlog/_plan/260911_r2_merge_train/030_phase3_pr4246.md
  • devlog/_plan/260911_r2_merge_train/040_phase4_pr4247.md
  • devlog/_plan/260911_ws_commit_boundary/000_plan.md
  • devlog/_plan/260911_ws_commit_boundary/010_journey_evaluation.md
  • devlog/_plan/260911_ws_commit_boundary/020_design_record.md
  • devlog/_plan/260911_ws_commit_boundary/025_audit_round1.md
  • devlog/_plan/260911_ws_commit_boundary/030_wp2_plan.md
  • devlog/_plan/260911_ws_commit_boundary/040_wp3_plan.md
  • devlog/_plan/260911_ws_commit_boundary/045_wp4_plan.md
  • devlog/_plan/260911_ws_commit_boundary/050_review.md
  • devlog/_plan/260912_accounts/000_plan.md
  • devlog/_plan/260912_accounts/001_roadmap_audit.md
  • devlog/_plan/260912_accounts/010_callback.md
  • devlog/_plan/260912_accounts/011_callback_delivery.md
  • devlog/_plan/260912_accounts/020_eligibility.md
  • devlog/_plan/260912_accounts/030_reset.md
  • devlog/_plan/260912_accounts/040_generic_family.md
  • devlog/_plan/260912_accounts/041_generic_lifecycle.md
  • devlog/_plan/260912_accounts/042_generic_health.md
  • devlog/_plan/260912_accounts/045_warmup.md
  • devlog/_plan/260912_accounts/050_history.md
  • devlog/_plan/260912_accounts/060_capacity.md
  • devlog/_plan/260912_accounts/070_tun.md
  • devlog/_plan/260912_accounts/080_reauth_api.md
  • devlog/_plan/260912_accounts/090_reauth_ui.md
  • devlog/_plan/260912_accounts/100_final.md
  • devlog/_plan/260912_cache_lane/000_plan.md
  • devlog/_plan/260912_cache_lane/010_claim.md
  • devlog/_plan/260912_cache_lane/020_affinity.md
  • devlog/_plan/260912_cache_lane/025_affinity_native.md
  • devlog/_plan/260912_cache_lane/026_affinity_adapt.md
  • devlog/_plan/260912_cache_lane/027_affinity_slot.md
  • devlog/_plan/260912_cache_lane/030_prefix.md
  • devlog/_plan/260912_cache_lane/035_prefix_adapt.md
  • devlog/_plan/260912_cache_lane/036_prefix_linear.md
  • devlog/_plan/260912_cache_lane/037_prefix_slot.md
  • devlog/_plan/260912_cache_lane/040_hermes.md
  • devlog/_plan/260912_cache_lane/050_verify.md
  • devlog/_plan/260912_cache_lane/060_handoff.md
  • devlog/_plan/260912_campaign_ci_fixtures/000_plan.md
  • devlog/_plan/260912_catalog_lane_readiness/000_plan.md
  • devlog/_plan/260912_catalog_lane_readiness/010_roadmap.md
  • devlog/_plan/260912_catalog_lane_readiness/011_design_reflection.md
  • devlog/_plan/260912_catalog_lane_readiness/020_review.md
  • devlog/_plan/260912_catalog_lane_readiness/022_keyboard_repair.md
  • devlog/_plan/260912_catalog_lane_readiness/030_evidence.md
  • devlog/_plan/260912_cline_client/000_plan.md
  • devlog/_plan/260912_cline_client/001_contract.md
  • devlog/_plan/260912_cline_client/009_roadmap_result.md
  • devlog/_plan/260912_cline_client/010_contract.md
  • devlog/_plan/260912_cline_client/019_contract_result.md
  • devlog/_plan/260912_cline_client/020_surfaces.md
  • devlog/_plan/260912_cline_client/029_surfaces_result.md
  • devlog/_plan/260912_cline_client/030_verification.md
  • devlog/_plan/260912_cline_client/039_gui_evidence.md
  • devlog/_plan/260912_codex_gpt54_retirement/000_plan.md
  • devlog/_plan/260912_codex_gpt54_retirement/010_catalog_removal.md
  • devlog/_plan/260912_codex_gpt54_retirement/020_defaults_repoint.md
  • devlog/_plan/260912_codex_gpt54_retirement/030_surfaces_and_gate.md
  • devlog/_plan/260912_codex_gpt54_retirement/040_done.md
  • devlog/_plan/260912_combo_carry/000_plan.md
  • devlog/_plan/260912_combo_carry/010_runtime.md
  • devlog/_plan/260912_combo_carry/020_editor.md
  • devlog/_plan/260912_combo_carry/030_verification.md
  • devlog/_plan/260912_combo_carry/034_render_evidence.md
  • devlog/_plan/260912_combo_carry/050_active_reactivation_repair.md
  • devlog/_plan/260912_grok_reset_coupon_gui/000_plan.md
  • devlog/_plan/260912_grok_reset_coupon_gui/005_status.md
  • devlog/_plan/260912_grok_reset_coupon_gui/010_architect_dispositions.md
  • devlog/_plan/260912_grok_reset_coupon_gui/020_reflection_gaps.md
  • devlog/_plan/260912_grok_reset_coupon_gui/030_audit_round1.md
  • devlog/_plan/260912_grok_reset_coupon_gui/evidence/architect-round1.md
  • devlog/_plan/260912_grok_reset_coupons/000_plan.md
  • devlog/_plan/260912_grok_reset_coupons/001_survey_seams.md
  • devlog/_plan/260912_grok_reset_coupons/005_status.md
  • devlog/_plan/260912_grok_reset_coupons/010_phase1_core_client.md
  • devlog/_plan/260912_grok_reset_coupons/020_phase2_surfaces.md
  • devlog/_plan/260912_grok_reset_coupons/030_phase3_delivery.md
  • devlog/_plan/260912_history_containment/000_plan.md
  • devlog/_plan/260912_history_containment/010_containment.md
  • devlog/_plan/260912_history_containment/020_continuation.md
  • devlog/_plan/260912_history_containment/030_relay.md
  • devlog/_plan/260912_history_containment/040_verification.md
  • devlog/_plan/260912_omo_client_integration/000_plan.md
  • devlog/_plan/260912_omo_client_integration/001_omo_contract.md
  • devlog/_plan/260912_omo_client_integration/002_registration_checklist.md
  • devlog/_plan/260912_omo_client_integration/003_brand_mark_provenance.md
  • devlog/_plan/260912_omo_client_integration/010_wp2_backend.md
  • devlog/_plan/260912_omo_client_integration/020_wp3_gui.md
  • devlog/_plan/260912_omo_client_integration/030_wp4_docs.md
  • devlog/_plan/260912_omo_client_integration/040_wp5_verification.md
  • devlog/_plan/260912_omo_client_integration/050_wp6_gjc_rename.md
  • devlog/_plan/260912_omo_client_integration/060_wp3_rendered_proof.md
  • devlog/_plan/260912_omo_client_integration/090_outcome.md
  • devlog/_plan/260912_operations/000_plan.md
  • devlog/_plan/260912_operations/001_roadmap_audit.md
  • devlog/_plan/260912_operations/010_update.md
  • devlog/_plan/260912_operations/020_listeners.md
  • devlog/_plan/260912_operations/030_totals.md
  • devlog/_plan/260912_operations/040_client_usage.md
  • devlog/_plan/260912_operations/050_pairing.md
  • devlog/_plan/260912_operations/060_transport.md
  • devlog/_plan/260912_operations/070_verification.md
  • devlog/_plan/260912_operations/080_update_events.md
  • devlog/_plan/260912_phantom_account_short_quota/000_plan.md
  • devlog/_plan/260912_phantom_account_short_quota/010_phase1_drop_elapsed_short_carry.md
  • devlog/_plan/260912_provider_catalog_unified_search/000_plan.md
  • devlog/_plan/260912_provider_catalog_unified_search/010_context.md
  • devlog/_plan/260912_provider_catalog_unified_search/015_codesign_grok.md
  • devlog/_plan/260912_provider_catalog_unified_search/016_audit_corrections.md
  • devlog/_plan/260912_provider_catalog_unified_search/020_r3_local_tab.md
  • devlog/_plan/260912_provider_catalog_unified_search/030_r2_note_clamp.md
  • devlog/_plan/260912_provider_catalog_unified_search/040_r1_unified_search.md
  • devlog/_plan/260912_provider_catalog_unified_search/050_delivery.md
  • devlog/_plan/260912_provider_catalog_unified_search/060_delivery_record.md
  • devlog/_plan/260912_provider_catalog_unified_search/evidence/grok-4.6-codesign.md
  • devlog/_plan/260912_release_regression_train/000_plan.md
  • devlog/_plan/260912_release_regression_train/010_ci_repair.md
  • devlog/_plan/260912_release_regression_train/020_regression_sweep.md
  • devlog/_plan/260912_release_regression_train/025_sweep_results.md
  • devlog/_plan/260912_release_regression_train/030_defect_landing.md
  • devlog/_plan/260912_release_regression_train/040_preview_release.md
  • devlog/_plan/260912_release_regression_train/050_main_release.md
  • devlog/_plan/260912_remote_workspace_carry/000_plan.md
  • devlog/_plan/260912_remote_workspace_carry/010_protocol.md
  • devlog/_plan/260912_remote_workspace_carry/020_executor_runtime.md
  • devlog/_plan/260912_remote_workspace_carry/030_integration.md
  • devlog/_plan/260912_remote_workspace_carry/040_hosted_validation.md
  • devlog/_plan/260912_zcode_protocol_and_catalog/000_plan.md
  • devlog/_plan/260912_zcode_protocol_and_catalog/001_research_zai_model_facts.md
  • devlog/_plan/260912_zcode_protocol_and_catalog/002_research_zcode_bundle_schema.md
  • devlog/_plan/260912_zcode_protocol_and_catalog/003_research_ocx_internals.md
  • devlog/_plan/260912_zcode_protocol_and_catalog/010_wp2_zcode_export_responses.md
  • devlog/_plan/260912_zcode_protocol_and_catalog/020_wp3_glm53_flash_modalities.md
  • devlog/_plan/260912_zcode_protocol_and_catalog/030_wp4_zai_responses_default.md
  • devlog/_plan/260912_zcode_protocol_and_catalog/evidence/zai-responses-models.json
  • docs-site/src/components/Landing.astro
  • docs-site/src/content/docs/fr/getting-started/quickstart.md
  • docs-site/src/content/docs/fr/guides/claude-code.md
  • docs-site/src/content/docs/fr/guides/codex-app-models.md
  • docs-site/src/content/docs/fr/guides/codex-integration.md
  • docs-site/src/content/docs/fr/guides/combos.md
  • docs-site/src/content/docs/fr/guides/integrations.md
  • docs-site/src/content/docs/fr/guides/model-ordering.md
  • docs-site/src/content/docs/fr/guides/providers.md
  • docs-site/src/content/docs/fr/guides/sidecars.md
  • docs-site/src/content/docs/fr/guides/sub-agent-surface.md
  • docs-site/src/content/docs/fr/reference/adapters.md
  • docs-site/src/content/docs/fr/reference/cli/agents.md
  • docs-site/src/content/docs/fr/reference/cli/providers-accounts.md
  • docs-site/src/content/docs/fr/reference/configuration/agents.md
  • docs-site/src/content/docs/fr/reference/configuration/providers.md
  • docs-site/src/content/docs/fr/reference/configuration/server.md
  • docs-site/src/content/docs/fr/reference/management-api.md
  • docs-site/src/content/docs/fr/reference/proxy-formats.md
  • docs-site/src/content/docs/getting-started/quickstart.md
  • docs-site/src/content/docs/guides/claude-code.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/integrations.md
  • docs-site/src/content/docs/guides/model-ordering.md
  • docs-site/src/content/docs/guides/opencode.md
  • docs-site/src/content/docs/guides/providers.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/claude-code.md
  • docs-site/src/content/docs/ja/guides/codex-app-models.md
  • docs-site/src/content/docs/ja/guides/codex-integration.md
  • docs-site/src/content/docs/ja/guides/combos.md
  • docs-site/src/content/docs/ja/guides/providers.md
  • docs-site/src/content/docs/ja/guides/sidecars.md
  • docs-site/src/content/docs/ja/guides/sub-agent-surface.md
  • docs-site/src/content/docs/ja/reference/adapters.md
  • docs-site/src/content/docs/ja/reference/cli/agents.md
  • docs-site/src/content/docs/ja/reference/cli/providers-accounts.md
  • docs-site/src/content/docs/ja/reference/configuration/agents.md
  • docs-site/src/content/docs/ja/reference/configuration/providers.md
  • docs-site/src/content/docs/ja/reference/configuration/server.md
  • docs-site/src/content/docs/ja/reference/management-api.md
  • docs-site/src/content/docs/ja/reference/proxy-formats.md
  • docs-site/src/content/docs/ko/getting-started/quickstart.md
  • docs-site/src/content/docs/ko/guides/claude-code.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/combos.md
  • docs-site/src/content/docs/ko/guides/providers.md
  • docs-site/src/content/docs/ko/guides/sidecars.md
  • docs-site/src/content/docs/ko/guides/sub-agent-surface.md
  • docs-site/src/content/docs/ko/guides/web-dashboard.md
  • docs-site/src/content/docs/ko/reference/adapters.md
  • docs-site/src/content/docs/ko/reference/cli/agents.md
  • docs-site/src/content/docs/ko/reference/cli/providers-accounts.md
  • docs-site/src/content/docs/ko/reference/configuration/agents.md
  • docs-site/src/content/docs/ko/reference/configuration/providers.md
  • docs-site/src/content/docs/ko/reference/configuration/server.md
  • docs-site/src/content/docs/ko/reference/management-api.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/agents.md
  • docs-site/src/content/docs/reference/cli/providers-accounts.md
  • docs-site/src/content/docs/reference/configuration.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/configuration/server.md
  • docs-site/src/content/docs/reference/management-api.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/claude-code.md
  • docs-site/src/content/docs/ru/guides/codex-app-models.md
  • docs-site/src/content/docs/ru/guides/codex-integration.md
  • docs-site/src/content/docs/ru/guides/combos.md
  • docs-site/src/content/docs/ru/guides/providers.md
  • docs-site/src/content/docs/ru/guides/sidecars.md
  • docs-site/src/content/docs/ru/guides/sub-agent-surface.md
  • docs-site/src/content/docs/ru/guides/web-dashboard.md
  • docs-site/src/content/docs/ru/reference/adapters.md
  • docs-site/src/content/docs/ru/reference/cli/agents.md
  • docs-site/src/content/docs/ru/reference/cli/providers-accounts.md
  • docs-site/src/content/docs/ru/reference/configuration/agents.md
  • docs-site/src/content/docs/ru/reference/configuration/providers.md
  • docs-site/src/content/docs/ru/reference/configuration/server.md
  • docs-site/src/content/docs/ru/reference/management-api.md
  • docs-site/src/content/docs/ru/reference/proxy-formats.md
  • docs-site/src/content/docs/tr/getting-started/quickstart.md
  • docs-site/src/content/docs/tr/guides/claude-code.md
  • docs-site/src/content/docs/tr/guides/codex-app-models.md
  • docs-site/src/content/docs/tr/guides/codex-integration.md
  • docs-site/src/content/docs/tr/guides/combos.md
  • docs-site/src/content/docs/tr/guides/integrations.md
  • docs-site/src/content/docs/tr/guides/providers.md
  • docs-site/src/content/docs/tr/guides/sidecars.md
  • docs-site/src/content/docs/tr/guides/sub-agent-surface.md
  • docs-site/src/content/docs/tr/reference/adapters.md
  • docs-site/src/content/docs/tr/reference/cli/agents.md
  • docs-site/src/content/docs/tr/reference/cli/providers-accounts.md
  • docs-site/src/content/docs/tr/reference/configuration/agents.md
  • docs-site/src/content/docs/tr/reference/configuration/providers.md
  • docs-site/src/content/docs/tr/reference/configuration/server.md
  • docs-site/src/content/docs/tr/reference/management-api.md
  • docs-site/src/content/docs/tr/reference/proxy-formats.md
  • docs-site/src/content/docs/zh-cn/getting-started/quickstart.md
  • docs-site/src/content/docs/zh-cn/guides/claude-code.md
  • docs-site/src/content/docs/zh-cn/guides/codex-app-models.md
  • docs-site/src/content/docs/zh-cn/guides/codex-integration.md
  • docs-site/src/content/docs/zh-cn/guides/combos.md
  • docs-site/src/content/docs/zh-cn/guides/providers.md
  • docs-site/src/content/docs/zh-cn/guides/sidecars.md
  • docs-site/src/content/docs/zh-cn/guides/sub-agent-surface.md
  • docs-site/src/content/docs/zh-cn/guides/web-dashboard.md
  • docs-site/src/content/docs/zh-cn/reference/adapters.md
  • docs-site/src/content/docs/zh-cn/reference/cli/agents.md
  • docs-site/src/content/docs/zh-cn/reference/cli/providers-accounts.md
  • docs-site/src/content/docs/zh-cn/reference/configuration/agents.md
  • docs-site/src/content/docs/zh-cn/reference/configuration/providers.md
  • docs-site/src/content/docs/zh-cn/reference/configuration/server.md
  • docs-site/src/content/docs/zh-cn/reference/management-api.md
  • docs-site/src/content/docs/zh-cn/reference/proxy-formats.md
  • docs-site/src/content/docs/zh-tw/getting-started/quickstart.md
  • docs-site/src/content/docs/zh-tw/guides/claude-code.md
  • docs-site/src/content/docs/zh-tw/guides/codex-app-models.md
  • docs-site/src/content/docs/zh-tw/guides/codex-integration.md
  • docs-site/src/content/docs/zh-tw/guides/combos.md
  • docs-site/src/content/docs/zh-tw/guides/integrations.md
  • docs-site/src/content/docs/zh-tw/guides/providers.md
  • docs-site/src/content/docs/zh-tw/guides/sidecars.md
  • docs-site/src/content/docs/zh-tw/guides/sub-agent-surface.md
  • docs-site/src/content/docs/zh-tw/guides/web-dashboard.md
  • docs-site/src/content/docs/zh-tw/reference/adapters.md
  • docs-site/src/content/docs/zh-tw/reference/cli/agents.md
  • docs-site/src/content/docs/zh-tw/reference/cli/providers-accounts.md
  • docs-site/src/content/docs/zh-tw/reference/configuration/agents.md
  • docs-site/src/content/docs/zh-tw/reference/configuration/providers.md
  • docs-site/src/content/docs/zh-tw/reference/configuration/server.md
  • docs-site/src/content/docs/zh-tw/reference/management-api.md
  • docs-site/src/content/docs/zh-tw/reference/proxy-formats.md
  • docs/README.md
  • docs/codex-app-model-catalog.md
  • docs/shadow-call-intercept.md
  • gui/public/provider-icons/README.md
  • gui/src/account-pool-strategy.ts
  • gui/src/app-routing.ts
  • gui/src/codex-auto-switch.ts
  • gui/src/combo-workspace-data.ts
  • gui/src/components/AddProviderModal.tsx
  • gui/src/components/CodexPoolStrategySetting.tsx
  • gui/src/components/apikeys-workspace/ClientConfigDialog.tsx
  • gui/src/components/apikeys-workspace/ClientConfigPanel.tsx
  • gui/src/components/apikeys-workspace/client-config-clients.ts
  • gui/src/components/integration-marks.ts
  • gui/src/components/provider-catalog/CatalogAccountRow.tsx
  • gui/src/components/provider-catalog/ProviderCatalog.tsx
  • gui/src/components/provider-catalog/ProviderNoteModal.tsx
  • gui/src/components/provider-catalog/account-row-types.ts
  • gui/src/components/provider-catalog/provider-presets.ts
  • gui/src/components/provider-workspace/AnthropicAccountPoolSettings.tsx
  • gui/src/components/provider-workspace/GrokResetCoupons.tsx
  • gui/src/components/provider-workspace/ProviderAuthPanel.tsx
  • gui/src/hooks/useGrokResetCoupons.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/ru.ts
  • gui/src/i18n/tr.ts
  • gui/src/i18n/zh-TW.ts
  • gui/src/i18n/zh.ts
  • gui/src/pages/Combos.tsx
  • gui/src/pages/api-keys-panels.tsx
  • gui/src/pages/dashboard-overview-sections.tsx
  • gui/src/pages/integrations/FileIntegrationPage.tsx
  • gui/src/pages/integrations/integration-api.ts
  • gui/src/pages/integrations/integration-tabs.ts
  • gui/src/pages/integrations/overview-clients.ts
  • gui/src/pages/providers-shared.ts
  • gui/src/pool-settings.ts
  • gui/src/provider-icons.ts
  • gui/src/styles/provider-catalog.css
  • gui/tests/account-pool-strategy.test.tsx
  • gui/tests/anthropic-pool-quota-window.test.tsx
  • gui/tests/api-access-models.test.ts
  • gui/tests/apikeys-actions.test.tsx
  • gui/tests/apikeys-model-test-wire.test.tsx
  • gui/tests/apikeys-models-states.test.tsx
  • gui/tests/client-config-panel.test.tsx
  • gui/tests/codex-account-auto-switch.test.tsx
  • gui/tests/codex-auto-switch-controller.test.tsx
  • gui/tests/combo-workspace-dirty.test.tsx
  • gui/tests/combo-workspace-empty.test.tsx
  • gui/tests/fr-localization.test.ts
  • gui/tests/grok-reset-coupons.test.tsx
  • gui/tests/integrations-api.test.ts
  • gui/tests/integrations-overview-rows.test.ts
  • gui/tests/locale-parity.test.ts
  • gui/tests/page-loading-contract.test.tsx
  • gui/tests/provider-catalog-note-popup.test.tsx
  • gui/tests/provider-catalog-search.test.tsx
  • gui/tests/subagents-fallback.test.tsx
  • gui/tests/vision-reasoning-contract.test.ts
  • gui/tests/vision-sidecar-dashboard.test.tsx
  • package.json
  • scripts/release-notes.ts
  • scripts/structure-ssot.ts
  • scripts/test-layout/layout.json
  • skills/ocx/references/01_management_surface.md
  • src/AGENTS.md
  • src/adapters/cline-pass-deepseek-v4-tool-replay.ts
  • src/adapters/command-code.ts
  • src/adapters/cursor.ts
  • src/adapters/cursor/checkpoint-store.ts
  • src/adapters/cursor/live-transport.ts
  • src/adapters/devin-cli/acp.ts
  • src/adapters/devin-cli/adapter.ts
  • src/adapters/devin-cli/binary.ts
  • src/adapters/devin-cli/models.ts
  • src/adapters/devin.ts
  • src/adapters/devin/cloud-direct/auth.ts
  • src/adapters/devin/cloud-direct/catalog.ts
  • src/adapters/devin/cloud-direct/chat.ts
  • src/adapters/devin/cloud-direct/index.ts
  • src/adapters/devin/cloud-direct/metadata.ts
  • src/adapters/devin/cloud-direct/wire.ts
  • src/adapters/devin/live-models.ts
  • src/adapters/google.ts
  • src/adapters/openai-chat.ts
  • src/adapters/openai-responses.ts
  • src/adapters/registry.ts
  • src/bridge.ts
  • src/claude/inbound-cache-stabilize.ts
  • src/claude/inbound.ts
  • src/cli/account-auth.ts
  • src/cli/account-extended.ts
  • src/cli/account.ts
  • src/cli/capabilities.ts
  • src/cli/config-command.ts
  • src/cli/dispatch.ts
  • src/cli/export-command.ts
  • src/cli/help.ts
  • src/cli/opencode.ts
  • src/cli/registry.ts
  • src/clients/config-export.ts
  • src/clients/config-export/cline.ts
  • src/clients/config-export/contracts.ts
  • src/clients/config-export/model-metadata.ts
  • src/clients/config-export/zcode.ts
  • src/codex/catalog/effort.ts
  • src/codex/catalog/metadata.ts
  • src/codex/catalog/native-models.ts
  • src/codex/catalog/parsing.ts
  • src/codex/catalog/provider-fetch.ts
  • src/codex/catalog/sync.ts
  • src/codex/history-provider.ts
  • src/codex/inject-coordination.ts
  • src/codex/inject.ts
  • src/codex/pool-rotation.ts
  • src/codex/quota.ts
  • src/codex/retired-model-migration.ts
  • src/codex/routing.ts
  • src/codex/warmup.ts
  • src/combos/failover.ts
  • src/combos/resolve.ts
  • src/config.ts
  • src/grok/grpc-web.ts
  • src/grok/reset-coupon-ledger.ts
  • src/grok/reset-coupons.ts
  • src/integrations/catalog-refresh.ts
  • src/integrations/cline-document.ts
  • src/integrations/cline-io.ts
  • src/integrations/cline-transaction.ts
  • src/integrations/config-io.ts
  • src/integrations/journal.ts
  • src/integrations/omp-yaml-source.ts
  • src/integrations/ownership-policy.ts
  • src/integrations/ownership.ts
  • src/integrations/registry.ts
  • src/integrations/state.ts
  • src/integrations/store.ts
  • src/integrations/writer.ts
  • src/lab/subject/behavior-fingerprint.ts
  • src/lib/abort.ts
  • src/lib/local-destinations.ts
  • src/lib/upstream-retry.ts
  • src/oauth/account-quota-rank.ts
  • src/oauth/callback-server.ts
  • src/oauth/devin-cli.ts
  • src/oauth/devin.ts
  • src/oauth/devin/api-base.ts
  • src/oauth/devin/login.ts
  • src/oauth/devin/register-user.ts
  • src/oauth/devin/types.ts
  • src/oauth/generic-account-failover.ts
  • src/oauth/index.ts
  • src/oauth/login-cli.ts
  • src/oauth/pool-kernel.ts
  • src/oauth/pool-settings-capability.ts
  • src/oauth/store.ts
  • src/oauth/token-guardian.ts
  • src/providers/codebuddy-models.ts
  • src/providers/command-code-efforts.ts
  • src/providers/default-aliases.ts
  • src/providers/derive.ts
  • src/providers/devin-cli-authmode-migration.ts
  • src/providers/key-failover.ts
  • src/providers/model-rename-startup.ts
  • src/providers/qoder-models.ts
  • src/providers/quota-key-accounts.ts
  • src/providers/quota-routing-cache.ts
  • src/providers/quota-types.ts
  • src/providers/quota.ts
  • src/providers/registry.ts
  • src/providers/stale-context-window-migration.ts
  • src/providers/zai-responses-migration.ts
  • src/quota/reset-observer.ts
  • src/quota/reset-seen-store.ts
  • src/remote-control/crypto.ts
  • src/remote-control/host.ts
  • src/remote-control/index.ts
  • src/remote-control/protocol.ts
  • src/remote-control/relay.ts
  • src/remote-control/workspace-agent-protocol.ts
  • src/remote-control/workspace-rpc-framing.ts
  • src/remote-control/workspace-tools.ts
  • src/remote-control/workspace-utf8.ts
  • src/responses/custom-tool-compat.ts
  • src/router.ts
  • src/routing/compatibility/behavior.ts
  • src/server/adapter-resolve.ts
  • src/server/auth-cors.ts
  • src/server/chat-completions.ts
  • src/server/chat-native.ts
  • src/server/claude-messages.ts
  • src/server/images.ts
  • src/server/index.ts
  • src/server/management-api.ts
  • src/server/management/agent-settings-routes.ts
  • src/server/management/config-routes.ts
  • src/server/management/grok-coupon-routes.ts
  • src/server/management/integration-routes.ts
  • src/server/management/oauth-account-routes.ts
  • src/server/management/provider-routes.ts
  • src/server/management/route-registry.ts
  • src/server/request-log.ts
  • src/server/responses-undeclared-tool-guard.ts
  • src/server/responses/codex-ws-exchange.ts
  • src/server/responses/codex-ws-wire.ts
  • src/server/responses/compact.ts
  • src/server/responses/core.ts
  • src/server/responses/ws-upstream.ts
  • src/server/zai-responses-startup.ts
  • src/types/config.ts
  • src/types/provider.ts
  • src/types/request.ts
  • src/types/tools.ts
  • src/update/job.ts
  • src/vision/plan.ts
  • src/web-search/index.ts
  • structure/02_config-and-codex-home.md
  • structure/03_catalog-and-subagents.md
  • structure/04_transports-and-sidecars.md
  • structure/AGENTS.md
  • structure/INDEX.md
  • structure/adapters/compatibility-contracts.md
  • structure/adapters/compatibility-lab.md
  • structure/adapters/registry.md
  • structure/catalog.md
  • structure/clients/claude-desktop.md
  • structure/clients/integrations.md
  • structure/codex-home.md
  • structure/config.md
  • structure/data-planes/images.md
  • structure/data-planes/inbound-compat.md
  • structure/data-planes/search.md
  • structure/decisions/ADR-0001-product-boundary.md
  • structure/decisions/ADR-0002-lifecycle.md
  • structure/decisions/ADR-0003-lifecycle.md
  • structure/decisions/ADR-0004-lifecycle.md
  • structure/decisions/ADR-0005-codex-home.md
  • structure/decisions/ADR-0006-codex-home.md
  • structure/decisions/ADR-0007-codex-home.md
  • structure/decisions/ADR-0008-codex-home.md
  • structure/decisions/ADR-0009-codex-home.md
  • structure/decisions/ADR-0010-codex-home.md
  • structure/decisions/ADR-0011-codex-home.md
  • structure/decisions/ADR-0012-codex-home.md
  • structure/decisions/ADR-0013-codex-home.md
  • structure/decisions/ADR-0014-codex-home.md
  • structure/decisions/ADR-0015-codex-home.md
  • structure/decisions/ADR-0016-config-surface.md
  • structure/decisions/ADR-0017-config-injection.md
  • structure/decisions/ADR-0018-config-injection.md
  • structure/decisions/ADR-0019-config-injection.md
  • structure/decisions/ADR-0020-provider-validation-ownership.md
  • structure/decisions/ADR-0021-shared-catalog.md
  • structure/decisions/ADR-0022-routed-tool-discovery-and-hosted-search.md
  • structure/decisions/ADR-0023-ultra-reasoning-level.md
  • structure/decisions/ADR-0024-ultra-reasoning-level.md
  • structure/decisions/ADR-0025-ultra-reasoning-level.md
  • structure/decisions/ADR-0026-ultra-reasoning-level.md
  • structure/decisions/ADR-0027-subagents.md
  • structure/decisions/ADR-0028-background-service-command-selection.md
  • structure/decisions/ADR-0029-windows-startup-ownership-listing-reuse.md
  • structure/decisions/ADR-0030-stable-service-launcher-launchd-and-systemd.md
  • structure/decisions/ADR-0031-responses-http-sse.md
  • structure/decisions/ADR-0032-responses-http-sse.md
  • structure/decisions/ADR-0033-responses-http-sse.md
  • structure/decisions/ADR-0034-responses-http-sse.md
  • structure/decisions/ADR-0035-responses-http-sse.md
  • structure/decisions/ADR-0036-responses-http-sse.md
  • structure/decisions/ADR-0037-responses-http-sse.md
  • structure/decisions/ADR-0038-responses-http-sse.md
  • structure/decisions/ADR-0039-responses-http-sse.md
  • structure/decisions/ADR-0040-responses-http-sse.md
  • structure/decisions/ADR-0041-responses-http-sse.md
  • structure/decisions/ADR-0042-responses-http-sse.md
  • structure/decisions/ADR-0043-responses-http-sse.md
  • structure/decisions/ADR-0044-responses-http-sse.md
  • structure/decisions/ADR-0045-standalone-images.md
  • structure/decisions/ADR-0046-claude-desktop-config-library-resolution.md
  • structure/decisions/ADR-0047-cursor-native-exec.md
  • structure/decisions/ADR-0048-cursor-native-exec.md
  • structure/decisions/ADR-0049-heartbeat-and-stall-deadline.md
  • structure/decisions/ADR-0050-heartbeat-and-stall-deadline.md
  • structure/decisions/ADR-0051-reasoning-and-tool-result-compatibility.md
  • structure/decisions/ADR-0052-reasoning-and-tool-result-compatibility.md
  • structure/decisions/ADR-0053-cursor-active-context-usage.md
  • structure/decisions/ADR-0054-cursor-conversation-checkpoint-reuse.md
  • structure/decisions/ADR-0055-google-thought-text-visibility-boundary.md
  • structure/decisions/ADR-0056-google-response-part-field-boundary.md
  • structure/decisions/ADR-0057-google-tool-call-thought-signature-replay.md
  • structure/decisions/ADR-0058-google-tool-result-adjacency-repair.md
  • structure/decisions/ADR-0059-xai-grok-hardening-official-grok-build-contract.md
  • structure/decisions/ADR-0060-kiro-client-parallel-tool-hint.md
  • structure/decisions/ADR-0061-kiro-responses-text-controls.md
  • structure/decisions/ADR-0062-chat-streaming-client-with-a-json-upstream-resul.md
  • structure/decisions/ADR-0063-volcengine-ark-assistant-continuation-shapes.md
  • structure/decisions/ADR-0064-chat-structured-output-compatibility.md
  • structure/decisions/ADR-0065-chat-structured-output-compatibility.md
  • structure/decisions/ADR-0066-anthropic-structured-output-compatibility.md
  • structure/decisions/ADR-0067-reasoning-display-parity-hidethinkingsummary.md
  • structure/decisions/ADR-0068-reasoning-display-parity-hidethinkingsummary.md
  • structure/decisions/ADR-0069-chat-to-responses-message-phase-inference.md
  • structure/decisions/ADR-0070-same-provider-combo-quota-fallback.md
  • structure/decisions/ADR-0071-combo-streaming-commit-boundary.md
  • structure/decisions/ADR-0072-transport-inventory.md
  • structure/decisions/ADR-0073-authentication-boundaries.md
  • structure/decisions/ADR-0074-api-ownership.md
  • structure/decisions/ADR-0075-startup-safety.md
  • structure/decisions/ADR-0076-startup-safety.md
  • structure/decisions/ADR-0077-startup-safety.md
  • structure/decisions/ADR-0078-usage-accounting.md
  • structure/decisions/ADR-0079-usage-accounting.md
  • structure/decisions/ADR-0080-github-pages.md
  • structure/decisions/ADR-0081-container-deployment-recipe.md
  • structure/decisions/ADR-0082-windows-service-wrapper-and-incomplete-updates.md
  • structure/decisions/ADR-0083-maintenance-governance.md
  • structure/decisions/ADR-0084-public-provider-contract.md
  • structure/decisions/ADR-0085-public-provider-contract.md
  • structure/decisions/ADR-0086-public-provider-contract.md
  • structure/decisions/ADR-0087-model-and-wire-identity.md
  • structure/decisions/ADR-0088-model-and-wire-identity.md
  • structure/decisions/ADR-0089-process-local-affinity-diagnostics.md
  • structure/decisions/ADR-0090-hermes-model-capabilities.md
  • structure/decisions/ADR-0091-ownership-axes.md
  • structure/decisions/ADR-0092-zcode-runtime-metadata.md
  • structure/decisions/ADR-0093-moonshot-ref-with-siblings-normalization.md
  • structure/decisions/ADR-0094-canonical-forward-continuation-extensions.md
  • structure/decisions/ADR-0095-canonical-forward-continuation-extensions.md
  • structure/decisions/ADR-0096-z-ai-quota-destination-ownership.md
  • structure/design-methodology.md
  • structure/gui-and-management-api.md
  • structure/manifest.json
  • structure/ops/docs-and-release.md
  • structure/ops/service-and-sidecars.md
  • structure/overview.md
  • structure/providers/chat-compat.md
  • structure/providers/cursor.md
  • structure/providers/google.md
  • structure/providers/kiro.md
  • structure/providers/openai-tiers.md
  • structure/providers/xai-grok.md
  • structure/remote-workspace.md
  • structure/runtime.md
  • structure/subagents.md
  • structure/transports/inventory.md
  • structure/transports/responses.md
  • structure/transports/streaming-health.md
  • tests/adapters/adapter-registry-authority.test.ts
  • tests/adapters/adapter-tool-conformance.test.ts
  • tests/adapters/bridge-legacy-shell-normalization.test.ts
  • tests/adapters/bridge-nonstreaming-terminal.test.ts
  • tests/adapters/key-failover.test.ts
  • tests/adapters/openai/openai-api-virtual-models.test.ts
  • tests/adapters/openai/openai-chat-hardening.test.ts
  • tests/adapters/openai/openai-chat-model-suffix.test.ts
  • tests/adapters/openai/openai-chat-path-override.test.ts
  • tests/adapters/openai/openai-provider-option.test.ts
  • tests/ci-workflows/structure-ssot.test.ts
  • tests/claude-integration/claude-context-windows.test.ts
  • tests/claude-integration/claude-inbound-cache-stabilize.test.ts
  • tests/claude-integration/claude-inbound.test.ts
  • tests/claude-integration/claude-management-api.test.ts
  • tests/claude-integration/claude-model-info.test.ts
  • tests/claude-integration/claude-models-discovery.test.ts
  • tests/claude-integration/claude-native-affinity.test.ts
  • tests/cli/cli-account-pool-verbs.test.ts
  • tests/cli/cli-capabilities.test.ts
  • tests/cli/cli-dispatch.test.ts
  • tests/cli/cli-headless-parity.test.ts
  • tests/clients/client-export-modality-enum.test.ts
  • tests/clients/cline-client.test.ts
  • tests/clients/cline-writer.test.ts
  • tests/clients/desktop-3p.test.ts
  • tests/clients/integrations-state.test.ts
  • tests/clients/integrations-writer.test.ts
  • tests/clients/omo-client.test.ts
  • tests/clients/remote-control-prototype.test.ts
  • tests/clients/remote-workspace-protocol.test.ts
  • tests/clients/remote-workspace-rpc-framing.test.ts
  • tests/clients/sync-client-integrations.test.ts
  • tests/codex-integration/bearer-admission-routed-provider.test.ts
  • tests/codex-integration/catalog-full-picker-order.test.ts
  • tests/codex-integration/catalog-zero-credit-picker.test.ts
  • tests/codex-integration/codex-auth-context.test.ts
  • tests/codex-integration/codex-catalog-golden.test.ts
  • tests/codex-integration/codex-catalog-model-picker-order.test.ts
  • tests/codex-integration/codex-catalog-restore.test.ts
  • tests/codex-integration/codex-catalog-sync-hardening.test.ts
  • tests/codex-integration/codex-catalog.test.ts
  • tests/codex-integration/codex-convergence-account-selectors.test.ts
  • tests/codex-integration/codex-history-provider.test.ts
  • tests/codex-integration/codex-inject-integration.test.ts
  • tests/codex-integration/codex-inject.test.ts
  • tests/codex-integration/codex-journal.test.ts
  • tests/codex-integration/codex-metadata-integrity.test.ts
  • tests/codex-integration/codex-pool-rotation.test.ts
  • tests/codex-integration/codex-quota-auto-refresh-main-admission.test.ts
  • tests/codex-integration/codex-quota-parser-parity.test.ts
  • tests/codex-integration/codex-quota-rejection.test.ts
  • tests/codex-integration/codex-routing.test.ts
  • tests/codex-integration/codex-v2-gate.test.ts
  • tests/codex-integration/codex-warmup.test.ts
  • tests/codex-integration/combos.test.ts
  • tests/codex-integration/effort-policy.test.ts
  • tests/codex-integration/issue-702-expired-replay-state.test.ts
  • tests/codex-integration/main-account-hard-lock-policy.test.ts
  • tests/codex-integration/model-visibility-management-api.test.ts
  • tests/codex-integration/native-model-toggle.test.ts
  • tests/codex-integration/reasoning-effort.test.ts
  • tests/codex-integration/slug-codec.test.ts
  • tests/codex-integration/token-guardian.test.ts
  • tests/codex-integration/warmup.test.ts
  • tests/config/client-config-export-new-clients.test.ts
  • tests/config/client-config-export.test.ts
  • tests/config/yaml-fragment-source.test.ts
  • tests/e2e-style/phase100-native-parity.test.ts
  • tests/fixtures/baseten-models.json
  • tests/fixtures/test-layout-expected.json
  • tests/gui/alibaba-intl-token-plan.test.ts
  • tests/gui/combo-workspace-data.test.ts
  • tests/gui/integrations-invariants.test.ts
  • tests/gui/provider-workspace-data.test.ts
  • tests/gui/volcengine-providers.test.ts
  • tests/oauth/generic-oauth-failover.test.ts
  • tests/oauth/oauth-callback-server.test.ts
  • tests/oauth/pool-kernel-generic-sweep.test.ts
  • tests/providers/baseten-provider.test.ts
  • tests/providers/cline-pass-deepseek-v4-tool-replay.test.ts
  • tests/providers/cline-pass-provider.test.ts
  • tests/providers/cline-pass-reasoning-efforts.test.ts
  • tests/providers/command-code-provider.test.ts
  • tests/providers/context-window-seed-repair.test.ts
  • tests/providers/cursor/cursor-tool-finalize-race.test.ts
  • tests/providers/cursor/cursor-tool-suspended-checkpoint.test.ts
  • tests/providers/cyber-policy-error-fidelity.test.ts
  • tests/providers/devin-adapter.test.ts
  • tests/providers/devin-cli-adapter.test.ts
  • tests/providers/devin-cli-authmode-migration.test.ts
  • tests/providers/devin-cli-login.test.ts
  • tests/providers/devin-hardening.test.ts
  • tests/providers/digitalocean-scaleway-provider.test.ts
  • tests/providers/opencode-cli.test.ts
  • tests/providers/opencode-go-deepseek.test.ts
  • tests/providers/opencode-go-session-header.test.ts
  • tests/providers/opencode-zen-deepseek-reasoning.test.ts
  • tests/providers/orcarouter-provider.test.ts
  • tests/providers/provider-config-batch-management.test.ts
  • tests/providers/provider-model-discovery-contract.test.ts
  • tests/providers/provider-quota.test.ts
  • tests/providers/provider-registry-parity.test.ts
  • tests/providers/upstream-transient-retry.test.ts
  • tests/providers/xai/grok-reset-coupon-cli.test.ts
  • tests/providers/xai/grok-reset-coupons.test.ts
  • tests/providers/zcode-client.test.ts
  • tests/responses/custom-tool-compat.test.ts
  • tests/responses/responses-undeclared-tool-guard.test.ts
  • tests/responses/ws-failure-stage.test.ts
  • tests/responses/ws-upstream.test.ts
  • tests/routing/fastwire-policy.test.ts
  • tests/routing/router-combo-failover-classification.test.ts
  • tests/routing/router.test.ts
  • tests/server/account-pool-management-api.test.ts
  • tests/server/adapter-resolve.test.ts
  • tests/server/config.test.ts
  • tests/server/management-client-config-route.test.ts
  • tests/server/management-provider-validation.test.ts
  • tests/server/server-combo-failover-e2e.test.ts
  • tests/server/server-images.test.ts
  • tests/server/server-key-failover-e2e.test.ts
  • tests/server/server-management-auth.test.ts
  • tests/test-layout.test.ts
  • tests/update/update-job.test.ts
  • tests/usage/quota-reset-observation.test.ts
  • tests/usage/quota-reset-seen-store.test.ts
  • tests/vision/sidecar-abort.test.ts
  • tests/vision/sidecar-settings-vision-controls.test.ts
  • tests/vision/sidecar-settings-vision-filter.test.ts
  • tests/vision/vision-anthropic.test.ts
  • tests/vision/vision-cache.test.ts
  • tests/vision/vision-eligibility.test.ts
  • tests/vision/vision-reasoning-contract.test.ts
  • tests/web-search/web-search.test.ts
  • tests/windows/windows-deploy-close-regressions.test.ts

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


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.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 12, 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-09-12T12:02:32.482430Z 8d7e24e 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.

@github-actions

Copy link
Copy Markdown
Contributor

Deterministic PR hygiene checks passed.

@github-actions github-actions Bot changed the title release: promote verified 2.52.0-preview.20260912 product tree to preview [WRONG BRANCH] release: promote verified 2.52.0-preview.20260912 product tree to preview Sep 12, 2026
@github-actions

github-actions Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

⏳ DRAFT

  • wrong target branch (preview); 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 September 12, 2026 11:51
@lidge-jun

Copy link
Copy Markdown
Owner Author

리뷰 · 우선순위 77 / 80

이 PR은 새 기능을 넣는 작업이 아니다. 이미 dev에서 검증해 둔 제품 트리를 미리보기 채널 preview로 올리는 출구다. 기준 트리는 392e182a00이다. 그 바로 앞 CI 통과 tip은 f2f1783ae0(Cross-platform CI run 34691465021 success)이고, 392e182a00#4398 문서만 더한 tip이라 워크플로 path filter에 걸려 새 제품 CI를 안 탄다. 로컬에서 git diff 392e182a00 origin/codex/release-2520-preview-20260912를 다시 재면 바뀌는 파일은 package.json 한 줄뿐이다. 버전만 2.52.02.52.0-preview.20260912이다. 본문이 말한 “dev와 바이트 동일, 채널 버전만 다르다”는 주장은 맞다.

지금 dev HEAD도 392e182a00이다. 직전 스냅샷과 같다. origin/preview tip은 #4273 머지(69207f1b0)이고 버전은 2.52.0-preview.20260911이다. 그래서 이번 컷은 “어제 preview에 올린 2.52 미리보기” 위에, 그 이후 dev에 쌓인 검증 트리를 날짜 스탬프만 하루 올린 채널 이름으로 다시 올리는 일이다. 디프가 800파일·수만 줄로 크게 보이는 이유는 preview가 그 사이 dev 커밋을 안 따라가서이지, 이 브랜치가 tip에서 새 제품을 더해서가 아니다. 여기서 각 버그를 라인 리뷰할 단계는 아니다.

왜 지금 올리냐면, dev가 마지막 끝난 CI보다 79커밋 앞서 있었고 한 번 허용된 push 런이 실패로 끝났기 때문이다. 본문이 적은 수리·회귀 스윕이 그 구멍이다. #4390은 ESM named import readFileSync를 스파이하지 못해 실제로는 거절이 안 되던 통합 테스트를 고쳤다(#4342 이후 red). #4396+#4397+#4398은 #4368이 연 쿼터 회피 계약의 구멍 네 곳을 닫았다. 그중 핵심은 메인 Codex 로그인이 자기 거절이 발표한 quotaAvoidUntil을 안 지키던 점이다. 증거 패킷은 트리에 있다: devlog/_plan/260912_release_regression_train/025_sweep_results.md(8레인, 6 CLEAN / 1 MINOR / 1 BLOCKING→랜딩), 040_preview_release.md가 프리릴리즈 숫자·시퀀스를 고정한다.

버전 이름은 nextPreviewRelease 규칙과 맞다. 이미 열린 더 높은 코어 preview 2.52.0-preview.20260911이 있어서 패치 bump는 거절되고, minor + UTC 날짜 20260912가 된다. dev는 이미 2.52.0이라 release.ymlassert-ahead는 추가 사전 이동 없이 통과한다. 머지 모양은 직전 승격 c1af92596a와 같다: devpreview에 머지하고 package.json만 채널 버전으로 해석한다.

게이트 패턴도 이전 preview 승격(#4273, #4010, #4116 등)과 같다. enforce-target이 빨갛고 제목에 [WRONG BRANCH]가 붙고 draft가 유지되는 것은 “기여는 dev로” 규칙이 preview 타깃을 막아서다. preview 채널 출구는 원래 preview가 맞다. 봇 안내대로 dev로 리타깃하면 이번 승격이 깨진다. 리뷰 시점 PR CI는 enforce-target만 FAILURE이고 Cross-platform 테스트·gates·npm-global 등은 아직 IN_PROGRESS다. 본문도 로컬 테스트/빌드는 standing restriction으로 안 돌렸다고 밝혔다. release.yml이 요구하는 건 머지 후 preview push-event 초록과, 필요 시 service-lifecycle이다.

경로 base=preview / enforce-target 실패 / 제목 [WRONG BRANCH] / draft - preview 채널 승격의 의도된 타깃이다. dev로 리타깃하지 마세요.
경로 git diff 392e182a00 HEADpackage.json 한 줄 - 로컬에서 재확인했다. 발행 직전에도 한 번 더 보면 된다.
경로 package.json 2.52.0-preview.20260912 - origin/preview2.52.0-preview.20260911, dev2.52.0. *-preview.* 형태와 assert-ahead 전제는 맞다.
경로 devlog/_plan/260912_release_regression_train/ - 스윕·preview 시퀀스 문서가 트리에 실제로 있다. 본문 경로와 일치한다.
경로 CI tip f2f1783ae0 success / 392e182a00 docs-only - 제품 게이트 tip 주장은 설득력 있다. 그래도 이 PR의 pull-request CI 집계와 머지 후 push-event는 따로 봐야 한다.
경로 이 PR pull-request CI - 리뷰 시점 enforce-target만 의도적 실패, 나머지 다수 pending. PR 런만으로는 release.yml 전제가 아니다.
경로 types.ts/config.ts 분리 캠페인 - 승격 범위(버전 한 줄 + 이미 머지된 트리)와 충돌 없음. 닫지 마세요.

메인테이너의 판단이 필요한 지점

  • draft를 풀고 maintainer-sponsored를 붙이거나 admin merge로 enforce-target을 넘길지
  • 이 PR pull-request CI가 초록이 될 때까지 기다릴지, 아니면 본문대로 머지 후 preview push-event를 진짜 게이트로 둘지
  • 머지 직후 gh workflow run release.yml --ref preview -f version=2.52.0-preview.20260912 -f tag=preview -f expected-sha=<40자 preview SHA> dry-run → live를 누가 눈으로 확인할지
  • 같은 컷의 main 안정 승격(#050_main_release 계획)을 preview 완충 뒤에 둘지, 같은 날 묶을지

너의 추천
프리즈(392e182a00) 대비 버전 한 줄·채널 이름·회귀 수리(#4390+#4396+#4397+#4398)·스윕 패킷은 맞다. 봇의 retarget-to-dev 안내는 무시하세요. 이 PR CI(특히 Cross-platform·gates)가 안정되면 draft 해제 후 preview로 머지하세요. 머지 커밋의 push-event Cross-platform·service-lifecycle이 초록인지 보고 release.yml을 돌리세요. types/config 분리와 무관하니 닫지 마세요. 안정(main) 컷은 preview npm 완충 뒤에 가는 편이 사고면이 작다.

이 댓글은 grok-bot이 작성했습니다

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8d7e24e7d2

ℹ️ 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".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +119 to +122
if (pathname === "/api/grok/reset-coupons/consume") {
if (req.method !== "POST") {
return jsonResponse({ error: "Method not allowed" }, 405, req, config);
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Require dashboard-session consent before redeeming coupons

The new redemption endpoint accepts any caller that passed the general management-auth gate and never checks ctx.principal/hasBrowserSessionEvidence, unlike the GitHub identity-spending route. An agent or process holding only the admin token can therefore consume an irreversible account coupon directly; the CLI's --yes flag is also machine-answerable. Require dashboard-session evidence before this action and document the consent boundary in AGENTS_INSTALL.md.

AGENTS.md reference: AGENTS.md:L174-L176

Useful? React with 👍 / 👎.

Comment on lines +216 to +219
let resolvedTokenId = requestedTokenId;
if (!resolvedTokenId) {
try {
const remaining = await getGrokRemainingResets({ accessToken: tokenSnapshot.accessToken });

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Persist the selected coupon before redeeming it

When tokenId is omitted—which the documented API and CLI allow—the ledger is opened with no token, then this branch selects a coupon without durably attaching it to the open operation. If the process dies after upstream redeems that coupon but before recordGrokResetCouponSettlement, retrying the same operationId is classified as execute, fetches the next remaining coupon, and can consume a second credit. Persist the resolved token before the irreversible RPC and resume only that recorded token on an open-operation retry.

Useful? React with 👍 / 👎.

Comment on lines +78 to +80
if (Object.keys(ledger.operations).length >= MAX_GROK_RESET_COUPON_OPERATION_IDS) {
return { kind: "capacity", operationId: identity.operationId };
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Prune the coupon ledger before enforcing its capacity

Once the ledger reaches 256 entries, this early return prevents both pruning and lookup of existing operations. Consequently, even after all settled entries pass the 30-day retention window, no subsequent open can reach writeGrokCouponLedger to remove them, leaving redemption permanently capacity-blocked; retries of already-settled operation IDs also stop replaying. Prune expired entries first and check an existing operation before rejecting a genuinely new ID.

Useful? React with 👍 / 👎.

Comment thread src/cli/account-auth.ts
{},
deps,
);
printData(result, wantsJson);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Return a failing CLI status for replayed redemption failures

When the server replays a durably recorded failure, it intentionally responds HTTP 200 with a code such as redeem_failed; runtimeRequest therefore succeeds, and this unconditional printData lets runCliAction return exit code 0. Automation retrying ocx account grok-reset-coupons --consume --operation-id … will report success despite no coupon being redeemed. Inspect the settled response code and throw or otherwise return a nonzero CLI status for non-redeemed outcomes.

Useful? React with 👍 / 👎.

@lidge-jun

Copy link
Copy Markdown
Owner Author

Maintainer-controlled promotion to the preview channel.

Exact head 8d7e24e7d2c57443e4740e377354276419046bfd: the full hosted matrix is green — test 1/44/4, macos 1/2, macos 2/2, gates, keyring on all three platforms, npm-global on all three, docker smoke, storage policy, api usage, hygiene, react-doctor, and the service-lifecycle trio (linux-systemd, macos-launchd, windows-schtasks) which this PR triggers because package.json changed.

enforce-target fails by design: it rejects any PR that does not target dev, and the branch policy names promotion as its exception. Nothing else is outstanding.

Local tests, build, typecheck and install: NOT RUN under the standing restriction. The preview push-event run is the actual release gate and has to pass before anything publishes.

@lidge-jun
lidge-jun marked this pull request as ready for review September 12, 2026 12:00
@lidge-jun
lidge-jun merged commit 9d4e45a into preview Sep 12, 2026
29 of 30 checks passed
@lidge-jun
lidge-jun deleted the codex/release-2520-preview-20260912 branch September 12, 2026 12:00
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.

3 participants