Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions .downstream/upstream-review-v0.2.13.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,9 @@ Every official commit is adopted with its official behaviour. Where upstream and
- The account create, edit and bulk edit dialogs no longer show the two options, and nothing reads, writes or validates them. Deleted: `OpenAIReasoningPolicyFields.vue`, `utils/openaiReasoningPolicy.ts`, their specs and locale keys; the two `extra` key constants with their getters; the validation (`OPENAI_REASONING_POLICY_INVALID`) and the preservation of omitted values in the admin service; the handler checks, the import merge, the bulk-edit preflight and the scheduler cache projection. Migration 267 removes the stored keys (see Migrations). A stored per-account value is not carried over: an account that had recovery switched off follows the global switch after the upgrade.
- The rejected-cipher memory runs on one long-lived Redis client of its own, built with the gateway cache from the shared options: every read and write ends at the deadline of the operation's 100 ms budget, a refused dial fails the operation at once, and application cleanup closes the client before the shared one.
- The stop reason `policy_unavailable` is gone on both sides: nothing produces it since recovery became a direct call, the continuation diagnostic no longer accepts it, and the Ops error detail has no text for it. The text for `disabled` there names the switch, the account type and the request path instead of a per-account scope.
- The dated live recovery diagnostic is deleted (owner decision of 2026-10-04). It was the fork side of one sealed study of Chat reasoning replay and signature recovery (run `reasoning-replay-recovery-20260907`): a broker outside this repository ran one pinned binary once and passed only when the Chat replay cases completed, and those cases no longer exist. Deleted here: the live test, its offline control test and its support file, and the second command of `.github/scripts/test_reasoning_recovery.sh`. The broker scripts and their command entry outside this repository are deleted with it; the study's ledger on the server is not touched. The frozen gateway helper it shared with the reasoning fidelity harness (`ReasoningFidelityGatewayForTest`) now loads the recovery switch from the same frozen settings snapshot: a missing row keeps the default, a stored off stays off, an invalid row fails the bootstrap. The fidelity harness itself is unchanged. The deleted command was the only CI step that compiled files with the `reasoning_fidelity` build tag, so CI no longer compiles that harness.
- The dated live recovery diagnostic is deleted (owner decision of 2026-10-04). It was the fork side of one sealed study of Chat reasoning replay and signature recovery (run `reasoning-replay-recovery-20260907`): a broker outside this repository ran one pinned binary once and passed only when the Chat replay cases completed, and those cases no longer exist. Deleted here: the live test, its offline control test and its support file, and the second command of `.github/scripts/test_reasoning_recovery.sh`. The broker scripts and their command entry outside this repository are deleted with it; the study's ledger on the server is not touched.
- The reasoning fidelity diagnostic of the same date is deleted as well (owner decision of 2026-10-04), by a later change: every release tagged before that change merged still holds it, `v0.2.13-codexrip.1` included, and the first release tagged after it is the first without it. It was the fork side of a second sealed study (run `reasoning-fidelity-20260907`), driven by a broker outside this repository: four test files of `service` under the `reasoning_fidelity` build tag, namely the live test, its two offline tests (the control test, and the response parser with its fixtures) and the support file with the frozen gateway helper the recovery diagnostic had shared. For this release that helper was made to load the recovery switch from its frozen settings snapshot, and once the second command of the gate was gone no CI step compiled the four files. Nothing outside them used what they declared, and no file carries the build tag now. The broker scripts outside this repository are deleted with it; the study's run directory and ledger on the server are not touched.
- The continuation-repair diagnostic of 2026-09-09 is deleted by the same change (owner decision of 2026-10-04), so the same boundary holds for it. It was the fork side of a sealed study of its own (run `responses-continuation-repair-20260909`, in two rounds), driven by a broker outside this repository: two test files of `handler` under the `continuation_repair_live` build tag, namely the live test with its three offline tests and the support file with the fixture that built the OpenAI gateway handler with its gateway and Ops services over in-memory stores from a frozen snapshot. No CI step ever built with that tag. Nothing outside the two files used what they declared, every production function they called has other callers, and no file carries the build tag now. The live test was also the last code that named an environment switch of the dated studies: besides its own, it refused to start while the switch of the fidelity study or of the namespace round-trip study of 2026-09-08 was set. The fork side of that study, four test files of `service`, had left the tree with #206. The Ops continuation diagnostic and the unit tests of continuation, recovery and the namespace round trip are production code and ordinary tests; they were not part of the studies and are not changed. The broker scripts of both studies outside this repository are deleted with it; their run directories and ledgers on the server are not touched.
- Console theme: the page joins the selectors of the 系统提示词 rules through its own static `data-ui="reasoning-recovery"` hook (`pages/settings-ops-public.css`, and the narrow-screen heading rule of `pages/user.css`); it has no rule of its own.
- **Console theme for the new upstream UI.** Behaviour is upstream's; only styling was added under `frontend/src/styles/console`: the eleventh platform segment of the account dialog takes the `sky` identity glyph (`controls.css` 7.1a); the priority control sits as the value of the stacked priority line with label-toned steppers (`pages/accounts.css` 5, reached through the component's own static `data-testid` attributes); the mode toggle of `RechargeBonusTierEditor` carries the static `data-ui="seg-box"` hook. No `:has()`, no runtime-bound hook.
- One existing rule also reaches the new UI without a change: the `RechargeBonusTierEditor` card has the same header and `p-4` body as the payment provider card beside it, so the positional body rule of `pages/settings-ops-public.css` 2.2 gives it the settings card padding. The comment of that rule now names both cards.
Expand Down Expand Up @@ -140,8 +142,8 @@ Every official commit is adopted with its official behaviour. Where upstream and
- **Frontend.** `vue-tsc --noEmit` passes. ESLint passes on the 48 changed frontend files. Vitest (`--no-cache`) passes for 13 files with 279 tests: the eleven specs the follow-ups changed (`BulkEditAccountModal`, `CreateAccountModal`, `EditAccountModal`, `AccountActionMenu.spark_shadow`, `AccountBulkActionsBar`, `AppSidebar`, `AppSidebar.simple-mode`, `useModelContextCapacities`, `AccountsView.selectionScope`, `ReasoningRecoveryView`, `groupsProfitControl`), locale key completeness, and `CodexRuntime.native`, which mounts the continuation diagnostics. These ran against a local dependency tree that holds axios 1.18.1 and dompurify 3.3.1, while the lockfile pins 1.20.0 and 3.4.14.
- **推理恢复 on both sides.** The page's client and its spec use `GET` and `PUT` on `/admin/reasoning-recovery` under the `/api/v1` base with `{"enabled": <boolean>}` and read the answer through the envelope the API client unwraps. The handler test pins the path `/api/v1/admin/reasoning-recovery`, the envelope `{"code":0,"message":"success","data":{"enabled": …}}` and the 400 for any other body; the route test pins administrator authentication without step-up, and the page uses none.
- **Workflow references.** Every spec and script `.github/workflows/downstream-verify.yml` names exists. Its `Reasoning recovery contracts` step runs the renamed gate script, and its vitest list names `ReasoningRecoveryView.spec.ts` in place of the two deleted reasoning specs. The name filters of its Go steps select what they selected before, less the deleted tests (the retired settings test of the refusal runtime and the three scheduler cache projection tests of the per-account options); the two renamed Alpha Search tests still match. The critical list of the root `Makefile` no longer names the Cindy spec that #206 deleted. `test_upstream_automation_contract.py` (16 tests), `test_upstream_risk.py` (4) and `test_release_preflight.py` (12) pass.
- `.downstream/upstream-risk.json` is unchanged. It is computed from the two upstream tags and the downstream commit of the integration (`291d25e7f`: 157 upstream paths, 65 overlapping, 31 critical, 1420 downstream paths), so it also lists files the follow-ups delete. The gate that recomputes it (`.github/workflows/upstream-risk-gate.yml`) runs for pull requests from `sync/upstream-*` branches and on a manual dispatch for a pull request number. By reading, it recomputes from the tags and the downstream commit the manifest records, not from the head of the pull request, so a run dispatched for the follow-ups reproduces this manifest, deleted files included, and then requires the `upstream-reviewed` label because the class is `review_required`.
- **Changed after the runs above.** Five changes followed the runs above: the comment headers of 266 and 267 now cite the previous release (`v0.2.11-codexrip.9`) and its line numbers, with no statement changed, so the migration tests applied the same SQL; `TestOpenAIReasoningRecoveryChatToolRoundKeepsNoReasoningState` lost its last assertion, a search of the gin context for a key only the deleted replay set; the zh label of the recovery line in the Ops continuation diagnostics is 推理恢复, the name the reason text of the same panel already used; the live recovery diagnostic and the second command of the gate were deleted; and `ReasoningFidelityGatewayForTest` loads the recovery switch from its frozen snapshot. The zh texts of the 推理恢复 page are the ones the owner approved in the preview of 2026-10-03. Run on the final tree: `go build ./...`; `go vet` on `service` with the `unit` tag and with the `reasoning_fidelity` tag; `.github/scripts/test_reasoning_recovery.sh`, which passes with its one remaining command; `TestReasoningFidelityControl` and `TestReasoningFidelityFixtures` with the `reasoning_fidelity` tag; `test_upstream_automation_contract.py`; `vue-tsc --noEmit`; ESLint on the two changed frontend files; and vitest (`--no-cache`) for six files with 20 tests (`ReasoningRecoveryView`, locale key completeness, locale message compile, locale key collision, `CodexRuntime.native`, `OpsErrorDetailModal`).
- `.downstream/upstream-risk.json` is unchanged. It is computed from the two upstream tags and the downstream commit of the integration (`291d25e7f`: 157 upstream paths, 65 overlapping, 31 critical, 1420 downstream paths), so it also lists files the follow-ups delete and the six files of the two diagnostics deleted after the release (four of the reasoning fidelity diagnostic, two of the continuation-repair diagnostic). The gate that recomputes it (`.github/workflows/upstream-risk-gate.yml`) runs for pull requests from `sync/upstream-*` branches and on a manual dispatch for a pull request number. By reading, it recomputes from the tags and the downstream commit the manifest records, not from the head of the pull request, so a run dispatched for the follow-ups reproduces this manifest, deleted files included, and then requires the `upstream-reviewed` label because the class is `review_required`.
- **Changed after the runs above.** Five changes followed the runs above: the comment headers of 266 and 267 now cite the previous release (`v0.2.11-codexrip.9`) and its line numbers, with no statement changed, so the migration tests applied the same SQL; `TestOpenAIReasoningRecoveryChatToolRoundKeepsNoReasoningState` lost its last assertion, a search of the gin context for a key only the deleted replay set; the zh label of the recovery line in the Ops continuation diagnostics is 推理恢复, the name the reason text of the same panel already used; the live recovery diagnostic and the second command of the gate were deleted; and the frozen gateway helper of the reasoning fidelity diagnostic was made to load the recovery switch from its frozen snapshot. The zh texts of the 推理恢复 page are the ones the owner approved in the preview of 2026-10-03. Run on the final tree: `go build ./...`; `go vet` on `service` with the `unit` tag; `.github/scripts/test_reasoning_recovery.sh`, which passes with its one remaining command; `test_upstream_automation_contract.py`; `vue-tsc --noEmit`; ESLint on the two changed frontend files; and vitest (`--no-cache`) for six files with 20 tests (`ReasoningRecoveryView`, locale key completeness, locale message compile, locale key collision, `CodexRuntime.native`, `OpsErrorDetailModal`). The fifth change was covered on that tree by `go vet` on `service` with the diagnostic's build tag and by the diagnostic's two offline tests; the diagnostic was deleted after the release (see Integration decisions), and that change and both checks went with it.
- **Checked for the integration before it merged as #232 and not repeated here:** the build for `GOOS=linux GOARCH=amd64`; `go vet` plain, with the `e2e` tag and on the packages the follow-ups do not touch; `go generate ./ent`; the TypeSafe, System One, recharge bonus, security fix and platform list tests; the vitest specs of the new upstream UI. The previews the owner saw on 2026-10-03 (the new upstream UI under the console theme, the profit control section, 推理恢复, the TypeSafe dialogs) were captured from the separate branches against a mock API; the captures are not part of the repository.
- **Not run:** full suites, race tests, any other integration test, the production migration path against a database in the state of `v0.2.11-codexrip.9` (read only, see Migrations), a browser preview of the assembled tree, an owner preview of two zh texts of the Ops continuation diagnostics written after 2026-10-03 (the label 推理恢复 and the reason shown for `disabled`), real model or TypeSafe calls, deploy. Source integration does not claim a successful deployment.

Expand Down
Loading
Loading