Repository navigation
fix(responses,usage): bundle L5 continuation, retry and usage boundary work #5608
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 60 commits
Commits
Show all changes
70 commits
Select commit
Hold shift + click to select a range
47e89b2
docs(devlog): plan the L5 luvs01 Responses and usage bundle
lidge-jun b1719ef
fix(usage): verify OAuth rotation before withheld attribution
luvs01 037af19
test(oauth): cover the eligible-target positive case and gate assertion
luvs01 a19cc8a
fix(oauth): require a live two-account roster before withheld attribu…
lidge-jun 66e09eb
fix(adapters): close Grok continuation and normalized tool catalog gaps
twoimo c30824f
fix(cursor): preserve continuation scope and avoid false repetition r…
8bfc164
fix(responses): lower undeclared historical custom tools when the des…
YotuAI 30d9ab2
test(responses): split historical custom-tool replay coverage off the…
YotuAI 6b5c452
fix(responses): reject malformed historical custom calls
YotuAI f18b3a3
fix(responses): bind historical outputs to custom calls
YotuAI 19e2dc5
fix(responses): reject duplicate historical call ids
YotuAI 9ad8442
fix(xai): preserve stateful tool output continuations
luvs01 41609fd
fix(xai): keep replay-miss reasoning cleanup independent of output re…
devin-ai-integration[bot] 385463f
test(responses): verify combined continuation boundaries
luvs01 3fa368d
fix(responses): normalize wrapped MCP tool names
ildunari ed6b8e3
fix(responses): unwrap default apply patch aliases
luvs01 209afc4
docs(structure): record default.-prefixed alias recovery in the freef…
devin-ai-integration[bot] a77b2e8
fix(responses): compile structured shell payloads sent to code-mode exec
Flowershangfromthebranches 40ba477
test(responses): verify combined tool normalization boundaries
luvs01 3e6b7e4
fix(responses): refuse ambiguous OpenCode Go resets
luvs01 a9bb313
test(responses): prove OpenCode Go pre-answer reset refusal by execution
luvs01 462befc
fix(routing): isolate policy retry body snapshot
luvs01 16a0926
test(routing): pin the retry snapshot against nested input mutation
luvs01 539f39c
fix(responses): isolate policy compaction state
luvs01 e9f4de4
fix(tests): bound the cold-spawn warm-up child on a live event loop
devin-ai-integration[bot] 8d4e7e8
fix(responses): fail closed on synthetic or stale compaction source s…
devin-ai-integration[bot] beb3317
fix(codex): bind scoped quota suppression to alternate
luvs01 95915af
fix(ci): restore core.ts to file-size ratchet cap
devin-ai-integration[bot] 214b2c2
fix(codex): record wrapped quota on suppressed moves and bind caller …
devin-ai-integration[bot] 0e5eaed
test(server): move scoped-quota auth cases into a sibling file under …
devin-ai-integration[bot] f6a32d2
fix(codex): re-check abort after the scoped-quota body read
devin-ai-integration[bot] e0dd9ad
fix(codex): release the discarded compact rejection body on abort
devin-ai-integration[bot] 65a7e80
fix(codex): keep compact abort cleanup off the return path
devin-ai-integration[bot] ad51b19
test(responses): preserve terminal refusal across recovery boundaries
luvs01 1de72f5
test(cursor): pin exact host-wrapper classification in continuation s…
lidge-jun 8860b4a
test(server): prove a suppressed same-workspace alternate is never sent
lidge-jun 3219114
docs(devlog): record the L5 responses sequence outcome
lidge-jun ed43719
docs(devlog): amend the L5 search and usage plan after review
lidge-jun 645a252
fix(responses): isolate Cursor combo shadow calls
luvs01 7435ff0
fix(responses): repair terminal-less bridged search legs
luvs01 4a64db7
fix(responses): repair continuation legs and prove behavior in tests
luvs01 e0833dd
fix(responses): close shadow combo intersection and continuation cove…
luvs01 257222b
test(web-search): preserve complete but open bridge-leg coverage
devin-ai-integration[bot] 797b367
test(web-search): keep repaired replay within caller and serving scope
luvs01 f4ae37e
test(server): reap fixture ACL workers before removing failover homes
luvs01 94d592f
fix(responses): keep combo shadow interception on the dispatch pick
lidge-jun 64eb1d1
test(web-search): bind repaired-leg replay to a keyed caller principal
lidge-jun 425ab42
fix(usage): restrict legacy -main provider collapse to Codex labels
luvs01 96986c6
fix(cli): mark access-key usage unavailable when attribution is absent
luvs01 e4d6897
fix(cli): treat a malformed attributionSince as unavailable
luvs01 7038b62
fix(gui): keep the app-server status read alive across Models tab swi…
luvs01 e4c999c
fix(usage): bound persisted requestedModel selectors
luvs01 454619d
fix(spend): enforce ceilings on native chat sends
luvs01 f4ced17
fix(usage): preserve observation and native reservation boundaries
luvs01 7539f40
test(usage): isolate native spend regressions within file caps
luvs01 59c1e79
test(usage): drain fixture owners before removing Windows homes
luvs01 883c066
test(usage): batch canonical pagination fixture writes
luvs01 8121917
fix(cli): accept only an ISO-8601 UTC attributionSince
lidge-jun 6c9b656
docs(usage): state the aliasing limit of the idempotent selector enco…
lidge-jun c044bc8
docs(devlog): record the L5 search and usage outcome
lidge-jun 841a113
docs(devlog): record the L5 pull request
lidge-jun d974c9b
docs(structure): keep runtime.md within its 600-line budget
lidge-jun 98dd3a4
refactor(cursor): move current-request selection out of protobuf-request
lidge-jun 71ce50a
docs(devlog): record the #5553 re-pin in the L5 plan
lidge-jun c326482
docs(devlog): record the L5 original closures
lidge-jun cb6058f
fix(usage): keep the native Chat spend estimate out of recorded usage
lidge-jun 40c0e4b
test(server): identify the suppressed alternate by its credential
lidge-jun 0da6959
fix: close L5 retry, continuation, and history review gaps
lidge-jun 6410694
fix: retain policy fallback for decorated selectors
lidge-jun fbcb157
Merge current dev into L5 responses usage repair
lidge-jun File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,89 @@ | ||
| # L5 luvs01 bundle: Responses continuation, retry and usage boundaries | ||
|
|
||
| Lane L5 of the luvs01 contributor-PR bundling. Eight open originals become one branch, | ||
| `codex/260923-luvs-l5-responses-usage`, cut from `origin/dev` at `a4bdc03054`, with ordered | ||
| attributable commits and one pull request to `dev`. Landing is decided by the maintainer; this | ||
| unit never merges. | ||
|
|
||
| ## Constraints | ||
|
|
||
| - Local verification is not run in this lane (no test, typecheck, build, install, CLI or service | ||
| commands). Hosted exact-head CI is the verifier; every report says "local checks: NOT RUN". | ||
| - Push only `HEAD:codex/260923-luvs-l5-responses-usage`. Never write to contributor branches, to | ||
| `stack/*` branches, or to `dev`. | ||
| - `tests/fixtures/file-size-baseline.json` caps never move up. Overflow moves byte for byte to a | ||
| sibling file registered in `scripts/test-layout/layout.json` `explicit` and | ||
| `tests/fixtures/test-layout-expected.json`. | ||
| - Security-sensitive review notes stay in scratch space, never in this directory. | ||
|
|
||
| ## Dispositions (pinned heads, re-checked 2026-09-23) | ||
|
|
||
| | Original | Head | Disposition | Evidence | | ||
| |---|---|---|---| | ||
| | #5474 cursor replay bound | `f4eab495c3` | ALREADY ON DEV (index) + DROP (cutoff) | The constant-time replacement index landed in `74490eee36` (#5507), which says it partially carries #5474. The remaining 4,096-message cutoff can begin inside a user turn, and its new test expects the initiating user root to vanish; #5507 deferred it for that reason. | | ||
| | #5305 usage.jsonl size cap | `fa7f53fee3` | DROP | Unconditional 64 MiB rotation and legacy-ledger deletion contradict the documented opt-in `usageLedgerMaxBytes` retention (`src/usage/ledger-retention.ts`, configuration reference). Readers only read `usage.jsonl`, so rotated rows disappear from totals. | | ||
| | #5434 OAuth rotation attribution | `f6778bfb70` | CHERRY-PICK | Both commits apply cleanly; `hasEligibleGenericOAuthFailoverTarget` is absent from dev. | | ||
| | #5560 continuation boundaries | `2ec0cd12f5` | REIMPLEMENT (net) + CHERRY-PICK | Final tree merges cleanly. The xAI empty-catalog selector part is already on dev in `b20acc79d2` (#5376); the first two commits are combined into their net change. The other nine commits carry in order. | | ||
| | #5542 tool normalization | `b57d7c5da0` | REIMPLEMENT (selective) | The four native-Responses commits are on dev in `53654291cd` (#5508). The five tool-normalization commits carry, with ADR-0097 renamed to ADR-0099 and dev's newer #5508 docs/tests kept on the three conflicts. | | ||
| | #5553 retry/compaction/account | `67c4f579e4` | REIMPLEMENT (selective) | `35fb727ddf` and `940b318292` are on dev in `b7351ddef3` (#5575), which widened the replacement fence. Fifteen commits carry; the retry conflicts keep dev's side. | | ||
| | #5562 search replay boundaries | `6ea3a95c21` | REIMPLEMENT (selective) | `76aa665e64` and `7e826dc089` are on dev in `b7351ddef3` (#5575). Combo isolation and terminal repair carry. Dev's caller-principal and single send-budget contracts are kept. `421ba780ae` and the lifecycle helper from `6b122cd2f0` are carried by open #5549 (another lane); the key-failover fixture adoption that depends on that helper is dropped from this lane and handed back to the maintainer. | | ||
| | #5556 usage observation | `d3589638a8` | CHERRY-PICK + REIMPLEMENT (one hunk) | Ten commits carry. The attribution-timestamp check is tightened to the producer's canonical ISO form. The merge-only commit and the screenshot-only commit are omitted. | | ||
|
|
||
| ## Commit ledger for the dropped originals | ||
|
|
||
| | Commit | Disposition | Reason | | ||
| |---|---|---| | ||
| | #5474 `49a9c15988` | ALREADY ON DEV (index) + DROP (cutoff) | `entryIndex` replacement is in `74490eee36`; the raw 4,096-message cutoff is dropped. | | ||
| | #5474 `68f74eb844` | DROP | The test asserts that the initiating user root disappears. | | ||
| | #5474 `f4eab495c3` | DROP | Merge from dev; no own change. | | ||
| | #5305 `fa7f53fee3` | DROP | Conflicts with the opt-in ledger retention contract. | | ||
|
|
||
| ## Transitive provenance | ||
|
|
||
| | Carrier | Source PRs and authors | | ||
| |---|---| | ||
| | #5474 | contributor fork PR #348 (luvs01) | | ||
| | #5560 | #5350 (Yeonwoo Choi / twoimo), #5420 (maosisheng, Cursor co-author), `82a5f6da81` (Epinephrine), `aac783fe8d` (Devin AI, Epinephrine co-author) | | ||
| | #5542 | #5508 (already on dev; itself carried #5479, #5470, #5492 by luvs01), #5230 (kosta), #5352 (Flowershangfromthebranches), `7cbbf44f6c` (Epinephrine), `19a2005e41` (Devin AI) | | ||
| | #5553 | #5446, #5423, #5415 (luvs01), compaction identity and scoped quota series (Epinephrine, Devin AI) | | ||
| | #5562 | #5480, #5365 (luvs01), `973a4ac702` (Devin AI, Epinephrine co-author) | | ||
| | #5556 | #5358, #5283, #5275, #5255 (luvs01) | | ||
|
|
||
| Cherry-picked commits keep their authors and gain `-x` source trailers. Reimplemented commits | ||
| carry `Co-authored-by` trailers for every source author. | ||
|
|
||
| ## Work-phase map | ||
|
|
||
| | Phase | Doc | Content | | ||
| |---|---|---| | ||
| | wp1 | this file | roadmap (docs only) | | ||
| | wp2 | `010_phase1_small_units.md` | #5434 | | ||
| | wp3 | `020_phase2_responses_sequence.md` | #5560, #5542, #5553 on the shared dispatch file | | ||
| | wp4 | `030_phase3_search_usage.md` | #5562, #5556 | | ||
| | wp5 | `040_phase4_pr_ci_review.md` | push, PR, review waves, exact-head CI, security verdict | | ||
| | wp6 | `050_phase5_close_originals.md` | close superseded originals with credit | | ||
|
|
||
| ## Shared files | ||
|
|
||
| - `src/server/responses/passthrough-dispatch.ts`: #5560 (error mapping near the custom-tool | ||
| admission), #5542 (native-control authorization), #5553 (OpenCode Go reset exception), #5434 | ||
| (OAuth budget-denial attribution). Disjoint hunks, applied in wp2 then wp3 order. | ||
| - `structure/transports/responses.md`: every carrier except #5562 edits a separate paragraph; | ||
| union the paragraphs and keep dev's #5575 status table. | ||
| - `scripts/test-layout/layout.json` and `tests/fixtures/test-layout-expected.json`: additive | ||
| entries only. | ||
| - Capped files touched: `src/server/responses/core.ts` (210/210, one-line re-export kept), | ||
| `tests/responses/responses-compaction-routing.test.ts` (2776 cap, carry reaches 2772), | ||
| `tests/server/server-auth.test.ts` (shrinks), `tests/providers/cursor/cursor-blob.test.ts` | ||
| (net zero), `tests/responses/openai-responses-passthrough.test.ts` (net zero after extraction), | ||
| `gui/src/pages/Models.tsx` (2792 cap, carry reaches 2783). | ||
|
|
||
| ## Cross-lane seams | ||
|
|
||
| `src/server/responses/request-prepare.ts`, `passthrough-delivery.ts`, `src/codex/auth-context.ts`, | ||
| `src/server/responses/compact.ts`, `core-codex-account.ts`, `src/usage/log.ts`, | ||
| `src/bridge/sse.ts`, `structure/ops/docs-and-release.md`, and both test-layout registries. | ||
| `src/responses/parser.ts` and `src/responses/plaintext-v2-agent-messages.ts` are not touched (the | ||
| #5542 hunk on the latter is already on dev). `421ba780ae` and the whole of `6b122cd2f0`/ | ||
| `6ea3a95c21` depend on the sandbox-cleanup helper that open #5549 carries; they stay out of this | ||
| lane so no change is applied twice. |
23 changes: 23 additions & 0 deletions
23
devlog/_plan/260923_luvs_l5_responses_usage/010_phase1_small_units.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| # wp2: #5434 OAuth rotation attribution | ||
|
|
||
| Source: #5434 head `f6778bfb70`. #5474 (`49a9c15988`, `68f74eb844`, merge `f4eab495c3`) and | ||
| #5305 (`fa7f53fee3`) close without a carry; the commit ledger is in `000_plan.md`. | ||
|
|
||
| ## Recipe | ||
|
|
||
| ```sh | ||
| git cherry-pick -x 1ac1ba0c8f f6778bfb70 | ||
| ``` | ||
|
|
||
| Files (MODIFY): `src/oauth/generic-account-failover.ts` (new non-mutating | ||
| `hasEligibleGenericOAuthFailoverTarget` using the same eligibility predicate as rotation), | ||
| `src/server/responses/adapter-continuation.ts`, `src/server/responses/passthrough-dispatch.ts`, | ||
| `src/server/responses/run-turn-execution.ts` (gate `noteAttemptRecoveryWithheld` on the probe), | ||
| `structure/transports/responses.md` (cooldown-aware attribution sentence), | ||
| `tests/oauth/generic-oauth-failover.test.ts` (negative cooldown case, positive eligible case, | ||
| source-oracle assertion over the three call sites). | ||
|
|
||
| ## Check | ||
|
|
||
| Static: `git diff --check origin/dev...HEAD`; merge preview clean. A reviewer confirms the probe | ||
| matches `rotateGenericOAuthAccountOn429`'s predicate and that the three sites are gated. |
53 changes: 53 additions & 0 deletions
53
devlog/_plan/260923_luvs_l5_responses_usage/020_phase2_responses_sequence.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,53 @@ | ||
| # wp3: #5560, #5542, #5553 on the shared Responses dispatch path | ||
|
|
||
| Applied after wp2 in this order. Each hunk on `passthrough-dispatch.ts` is disjoint. | ||
|
|
||
| ## #5560 (head `2ec0cd12f5`) | ||
|
|
||
| 1. Combine `71a9fe575b` and `ffd50f485c` (both Yeonwoo Choi) into one commit authored by | ||
| Yeonwoo Choi: `git cherry-pick -n 71a9fe575b ffd50f485c`, then restore | ||
| `src/adapters/xai-web-search.ts` to `origin/dev` (dev `b20acc79d2` already owns the selector | ||
| rule), keeping the net Cursor continuation, blob-estimate, xAI custom item-ID repair, extracted | ||
| tests and docs. The net diff leaves `tests/providers/cursor/cursor-blob.test.ts` at 3,657 lines | ||
| and `tests/responses/openai-responses-passthrough.test.ts` at 4,809. | ||
| 2. `git cherry-pick -x 31f21f0370 a326b67338 7e8fb09b39 57407be416 c7781bf81c fbecefa18b 82a5f6da81 aac783fe8d 2ec0cd12f5` | ||
| Layout-map conflicts resolve by union. | ||
|
|
||
| ## #5542 (head `b57d7c5da0`) | ||
|
|
||
| Skip `43f1c19fbe`, `10bf60cea3`, `d61ec2e603` (on dev in `53654291cd`) and `7f3f18aed8` (merge). | ||
|
|
||
| 1. `git cherry-pick -x e555e7305b`. Its decision record is added as ADR-0097 and renamed to | ||
| ADR-0099 by `b57d7c5da0` below (dev's ADR-0097 is unrelated); the head has no duplicate. | ||
| 2. `git cherry-pick -x 7cbbf44f6c 19a2005e41 9662528195`. | ||
| 3. `git cherry-pick -x b57d7c5da0`. As a single-commit pick it carries only its own delta (the | ||
| ADR rename and the combined JSON/SSE regression), so dev's #5508 versions of | ||
| `docs-site/.../guides/codex-integration.md`, `structure/transports/streaming-health.md` and | ||
| `tests/responses/ws-native-injection.test.ts` stay intact. A dry run on `a4bdc03054` applied | ||
| every wp3 commit without conflict. | ||
|
|
||
| ## #5553 (head `67c4f579e4`) | ||
|
|
||
| Skip `35fb727ddf`, `940b318292` (on dev in `b7351ddef3`) and `67c4f579e4` (merge). | ||
|
|
||
| 1. `git cherry-pick -x b8f9a45761 808dd85a9f db854bf306 b037810fe2 e6f9339f83 f86a53437c 76b40f9fd0 385f338d82 feb0c160aa 466c75c89c 9050722914 b2eda92b1b 1069b541f7 37a006e223` | ||
| 2. Conflicts in `src/lib/upstream-retry.ts`, `src/lib/errors.ts`, `tests/lib/upstream-retry.test.ts`, | ||
| `tests/usage/request-log.test.ts` keep dev's #5575 side (`invitesResendAfterReplacement`, the | ||
| whole-sentence refusal matcher and its status table). | ||
| 3. `git cherry-pick -x be1fee99aa`, then a follow-up commit (luvs01 co-author trailer) rewrites | ||
| the transport-doc paragraph so it references dev's broader replacement fence instead of a | ||
| 5xx-only rule. The dry run applied it without conflict; the wording is the only repair. | ||
|
|
||
| Cap checks after the phase: `src/server/responses/core.ts` 210, | ||
| `tests/responses/responses-compaction-routing.test.ts` at most 2,776. | ||
|
|
||
| ## Outcome (wp3) | ||
|
|
||
| All planned commits applied without conflict on `a077087b74`. Review follow-ups: | ||
| `test(cursor): pin exact host-wrapper classification in continuation scope` (exact summary and | ||
| ambient wrappers are classified by shape, matching the Codex client; documented in | ||
| `structure/providers/cursor.md`) and `test(server): prove a suppressed same-workspace alternate is | ||
| never sent` (exact one-send assertion; the transport contract now limits suppression to the | ||
| in-request move). A later request can still select a same-workspace sibling that was not itself | ||
| refused; that selection behavior predates this carry and is reported to the maintainer. | ||
| Local checks: NOT RUN. Static gate passed; hosted CI verifies in wp5. | ||
64 changes: 64 additions & 0 deletions
64
devlog/_plan/260923_luvs_l5_responses_usage/030_phase3_search_usage.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,64 @@ | ||
| # wp4: #5562 and #5556 | ||
|
|
||
| ## #5562 (head `6ea3a95c21`) | ||
|
|
||
| Skip `76aa665e64`, `7e826dc089` (on dev in `b7351ddef3`), `65c3477dd2` (merge), and | ||
| `421ba780ae`, `6b122cd2f0`, `6ea3a95c21`: open #5549 carries the sandbox-cleanup helper, | ||
| `createTestCaseLifecycle` and their tests (its `ef5c002220` and `8dc4050fad`). The key-failover | ||
| fixture adoption in `6b122cd2f0` imports that helper, so it cannot land here without applying the | ||
| helper twice; it is dropped from this lane and reported to the maintainer for a follow-up after | ||
| #5549. | ||
|
|
||
| 1. `git cherry-pick -x 7f45883fb5 c4fa8c8d8f`. | ||
| 2. `git cherry-pick -x 8d46989165 3f3fdf17f4`. Once the two already-landed commits are skipped, | ||
| both apply cleanly (dry run on `a4bdc03054`): `request-prepare.ts` keeps dev's caller-principal | ||
| block from #5575 and gains only the early combo intersection and shadow marker. | ||
| 4. `git cherry-pick -x 973a4ac702 bb49c9f582`, then a follow-up commit (luvs01 co-author) adapts | ||
|
lidge-jun marked this conversation as resolved.
Outdated
|
||
| `tests/web-search/web-search-passthrough-bridge.test.ts` (the `clientPrincipalId: "loopback"` | ||
| expectation) to dev's documented rule that keyless callers get no bridged replay: configure an | ||
| inbound API key, assert the derived principal, keep a keyless miss control. | ||
| 5. `ae52669293`: cherry-pick. | ||
| 6. Keep dev's `src/web-search/executor.ts`, `tests/web-search/web-search-sidecar-429.test.ts`, the | ||
| negative controls in `tests/web-search/web-search-bridge-replay.test.ts`, and the single | ||
| physical-send budget wording in `structure/runtime.md` and `structure/providers-and-adapters.md`. | ||
|
|
||
| ## #5556 (head `d3589638a8`) | ||
|
|
||
| 1. `git cherry-pick -x 0f0ef96ea3 83514c382f`. | ||
| 2. `138069331f` reimplemented: in `src/cli/access.ts` treat `attributionSince` as valid only when | ||
| it round-trips through `new Date(value).toISOString()`; add a malformed-but-parseable case | ||
| (for example `"0"`) next to the invalid-string case in `tests/cli/cli-dto-fidelity.test.ts`. | ||
| 3. `git cherry-pick -x 5563577fc2 c8a9d1a75e 823a7d2d9f 22ee516602 1a8d5f7ded 2241d03f44 ddfef1320b`. | ||
| 4. Omit `96602cd13d` (merge of `41ec40f7e3`, already an ancestor of dev) and `d3589638a8` | ||
| (screenshot asset only; the PR description links the existing capture). | ||
|
|
||
| Cap check: `gui/src/pages/Models.tsx` at most 2,792. | ||
|
|
||
| ## Amendments after review (wp4 P) | ||
|
|
||
| - #5562 `3f3fdf17f4`: drop its early combo intersection hunk in | ||
| `src/server/responses/request-prepare.ts`. It sampled a combo target with `routeModel` before | ||
| dispatch, so the decision could follow a different pick than the one sent and could advance | ||
| round-robin or random state. Dev's #4129 rule stays: a shadow call rewritten to a combo enters | ||
| the combo and carries `shadowCallIntercepted`. The test | ||
| `a combo whose first target intersects the source still routes as a combo` keeps dev's | ||
| assertions. The combo-child isolation marker and its tests remain. | ||
| - #5562 `bb49c9f582` follow-up: the bridge replay test configures an inbound API key, derives the | ||
| principal with `resolveContextPrincipal`, passes the full loopback admission, and adds a keyless | ||
| miss control. | ||
| - #5556 `138069331f` follow-up: accept `attributionSince` only in canonical | ||
| `toISOString()` form; positive fixtures use `.000Z`; malformed cases include `"0"`. | ||
| - #5556 selector encoding: `encodePersistedRequestedModel` must stay idempotent because rows are | ||
| normalized again on read, so a literal selector equal to another selector's encoded form | ||
| aliases it. Document the limitation in the code comment and pin it with a test; a digest column | ||
| would remove it and is reported to the maintainer. | ||
|
|
||
| ## Outcome (wp4) | ||
|
|
||
| #5562: seven commits carried; follow-ups `fix(responses): keep combo shadow interception on the | ||
| dispatch pick` and `test(web-search): bind repaired-leg replay to a keyed caller principal`. | ||
| `421ba780ae`, `6b122cd2f0` and `6ea3a95c21` stay with #5549. | ||
| #5556: ten commits carried; follow-ups `fix(cli): accept only an ISO-8601 UTC attributionSince` | ||
| and `docs(usage): state the aliasing limit of the idempotent selector encoding`. The screenshot | ||
| commit is not carried; the PR links the existing capture. | ||
| Local checks: NOT RUN. Static gate passed; hosted CI verifies in wp5. | ||
12 changes: 12 additions & 0 deletions
12
devlog/_plan/260923_luvs_l5_responses_usage/040_phase4_pr_ci_review.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| # wp5: pull request, review, CI, security verdict | ||
|
|
||
| 1. `git push --no-verify -u origin HEAD:codex/260923-luvs-l5-responses-usage`. | ||
| 2. Open one ordinary pull request to `dev` (not draft) with every section of | ||
| `.github/PULL_REQUEST_TEMPLATE.md`, the disposition table, a "Cross-lane seams" section, | ||
| "local checks: NOT RUN", and a screenshot link for the Models tab lifecycle change. | ||
| 3. Independent reviewers read each carried unit; each confirmed defect gets a fix and a focused | ||
| regression test in a new commit. | ||
| 4. CI is judged on the latest run per job at the current head. Missing, queued, skipped or | ||
| cancelled jobs are not success. If no cross-platform run appears after a push, close and reopen | ||
| once. | ||
| 5. An independent security reviewer reads the final diff and posts a short verdict comment. |
6 changes: 6 additions & 0 deletions
6
devlog/_plan/260923_luvs_l5_responses_usage/050_phase5_close_originals.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| # wp6: close superseded originals | ||
|
|
||
| For each original: re-read its head; if it moved past the pinned SHA, re-carry first. Then close | ||
| with a short credit comment naming the bundle PR (ALREADY ON DEV names the dev commit; DROP gives | ||
| the reason). Transitive source PRs owned by other contributors (#5350, #5420, #5230, #5352) are not | ||
| closed by this lane; the bundle description credits them. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.