| 6 |
U25a ★new |
test(api): hermetic aimock fallback catalog for OpenRouter fetcher (base: main; env-gated, main-safe) |
src/api/providers/fetchers/openrouter.ts (+~40: honor E2E_MOCK_MODEL_LIST_FALLBACK), bundled minimal catalog (openai/gpt-5, openai/gpt-5.1 with supported_parameters: ["reasoning"], +~25), fetcher test (+~20) |
M4 |
~85 |
| 7 |
U6 |
feat(tools): set_thinking_effort schema, prompt, mode filter (DTE-3a) |
native-tools/set_thinking_effort.ts (+49), native-tools/index.ts (+2), filter-tools-for-mode.ts (+41), filter-thinking-effort.spec.ts (+151), packages/types experiment/tool/shared files (+46) |
m7: enum: ["none","minimal","low","medium","high","xhigh","max"] on the effort property + spec (+~14) |
~305 |
| 8 |
U13 |
feat(orchestrator): new_task thinking-effort input (DTE-5a) |
NewTaskTool.ts (+95/−14), Task.ts (+56/−2), new_task.ts prompt (+6), shared/tools.ts (+3/−2), newTaskTool.spec.ts (+12), new-task-delegation.spec.ts (+6) — all from the union tree (FINAL shapes) |
B1 (FINAL strict schema — free via union source), m3 (mistake-guardrail triplet +~23), M7 (canonical normalize filter +~10), n6 ("disable"→undefined at the child re-validation consumer +~6), n7 (sibling parity with SetThinkingEffortTool normalization) |
~235 |
| 9 |
U7 |
feat(tools): SetThinkingEffortTool core (DTE-3b) |
SetThinkingEffortTool.ts core hunks (+200), setThinkingEffortTool.spec.ts part 1 (+220/504) — union tree; includes the 12-line custom-legacy effort-rank fallback test (m8) |
— |
⚠ ~400 (hunk-tune) |
| 10 |
U14 |
test(orchestrator): new_task effort task-level specs (DTE-5b) |
Task.new-task-effort.spec.ts (+194), newTaskThinkingEffort.spec.ts part 1 (~+200/407) — union assertions (B1-corrected shape) |
B1 (corrected schema assertions) |
⚠ ~394 |
| 11 |
U8 |
feat(tools): set_thinking_effort guards (escalation cap, oscillation, capability) (DTE-3c) |
SetThinkingEffortTool.ts remainder (+106), setThinkingEffortTool.spec.ts part 2 (+284/−10) |
m4a: export recordUserThinkingEffortWrite(task, effort) for guard-history reseed + API unit tests (+~15) |
~385 |
| 12 |
U15 |
test(orchestrator): new_task effort tool + parser specs (DTE-5c) |
newTaskThinkingEffort.spec.ts part 2 (~+207/−6), NativeToolCallParser.spec.ts (+51), NativeToolCallParser.ts (+6) — union content |
n7 parity check on the filter behavior |
~264 |
| 13 |
U9 |
feat(parser): parse and present set_thinking_effort tool calls (DTE-3d) |
NativeToolCallParser.ts (+20), presentAssistantMessage.ts (+12), both parser/presenter specs (+362) |
m6 skipped — one line in PR body |
⚠ ~394 |
| 14 |
U16 |
feat(webview): subtask thinking-effort UI in ChatView (DTE-5d) |
ChatView.tsx (+154/−47), ChatView.spec.tsx part 1 (~+125/−5) |
m13: visible caption/tooltip on the ask effort selector (reuses existing i18n) (+~14) |
~345 |
| 15 |
U10 |
feat(task): wire set_thinking_effort into task runtime (DTE-3e) |
Task.ts (+105/−1), Task.runtime-thinking-effort.test.ts dte-3 adds (~+290/311) |
— |
⚠ ~396 |
| 16 |
U17 |
test(webview): ChatView effort spec remainder + provider delegation (DTE-5e) |
ChatView.spec.tsx part 2 (~+125/−4), provider-delegation.spec.ts (+291/−2) |
— |
⚠ ~400 (hunk-tune at push) |
| 17 |
U11 |
feat(webview): display set_thinking_effort results in chat row (DTE-3f) |
ChatRow.tsx (+26), ChatRow.thinking-effort.spec.tsx (+120), ExperimentalSettings.spec.tsx (+75), Task test remainder (~21), vscode-extension-host.ts (+4) |
m10: localize the <Brain> aria-label (toggleTitle key or aria-hidden; +~14); n3: de-emoji the spec fixture + fix stale describe label (±4) |
~263 |
| 18 |
U18 |
feat(webview): wire new_task effort through extension host (DTE-5f) |
ClineProvider.ts (+50/−9), webviewMessageHandler.ts (+8/−1), webviewMessageHandler.spec.ts (+36/−3), vscode-extension-host.ts (+8/−1) |
m2: write-side ask-type gate + webview state reset on ask change + tests (+~45); n6 consumer mapping |
~160 |
| 19 |
U12 |
feat(i18n): translate set_thinking_effort strings (18 locales) (DTE-3g) |
locales/*/chat.json +5 ×18, */settings.json +4 ×18 |
n1: ja keeps the (experimental) marker + noun-phrase name; n2: zh-TW typography (full-width comma, Zoo(自動) spacing) |
~162 |
Tracking issue for the DTE-v2 recreation. Replaces this fork's #28 (closed as superseded) and the old upstream series: PRs Zoo-Code-Org#1336 Zoo-Code-Org#1338 Zoo-Code-Org#1354 Zoo-Code-Org#1355 Zoo-Code-Org#1356 Zoo-Code-Org#1359 Zoo-Code-Org#1361 Zoo-Code-Org#1366 Zoo-Code-Org#1379 and issues Zoo-Code-Org#1328 Zoo-Code-Org#1329 Zoo-Code-Org#1330 Zoo-Code-Org#1331 Zoo-Code-Org#1332 Zoo-Code-Org#1376 Zoo-Code-Org#1377 Zoo-Code-Org#1378 - all closed as superseded on 2026-09.
feat/dte-trial-all@27a2e97df(branch retained; tagdte-legacy/union). Never per-PR heads (B1/M7/m8 hazard).plans/dte-gap-review.md- 37 items (1 blocker / 8 major / 17 minor / 11 nit), all dispositioned in section 8 of the plan below.Unit status (maintained as PRs open/merge)
39762bf8139762bf81(incl.mutation-diff); CR settled, 4/4 RCs addressed, no new findings (vimô hình; handler+ClineProvider round-trip; 4-theme Docker baselines; re-review RCs incl. 3936323331 false+unset save-payload round-trip); head additively merges upstream main0d937c050; local mutation gate 2/2 killed at39762bf81; final wrap-up comment posted (5544529700, pings @edelauna); awaiting maintainer approval/mergeefbd336e5efbd336e5additively merges U1's final head39762bf81(last Zoo-Code-Org#1521 CR fix — false/unset persistence cases inSettingsView.spec.tsx, +23/−10; U2's 3 files byte-identical to18f488fa5); local gates green onefbd336e5(types 11/11, webview settings suites 26/26 incl. the new false-path test, mutation gate 17/17 Killed CI-faithful vs main tip0d937c050); CI on18f488fa5all green (4 stale CANCELLED superseded by fresh SUCCESS); CR finding 3936500327 (false save path — cumulative U1 content) addressed in-thread, fixed inefbd336e5; CR re-review in flightc5b48aa7ec5b48aa7emerges U2's new tipefbd336e5(U1's final head39762bf81now in stack); U3's 2 files byte-identical through the sync; local gates green onc5b48aa7e(check-types 11/11, vitest 8/8, mutation 25/25 Killed standalone vsefbd336e5); body updated (head/stack-base/gate lines); CI + CR re-review in flight — CR reviews cumulative diff (standalone range = 398)d70b40ad3)d70b40ad3additively merges U3 final headc5b48aa7e(U1's last CR fix in stack); U4's 5 files byte-identical to111cf40ae; local gates green ond70b40ad3(check-types 11/11, eslint 0, vitest 18/18, mutation 4/4 Killed vsc5b48aa7e); body drafted (u4-upstream-body.md); restore-guard kill test (L42) in head; held for upstream slot (plan §2.2 max-3-open) — push+open when a slot freesed4d4adf9)bb70d4f1b(mutation-gate fix folded in) + sync merge of U4 headd70b40ad3(pre-fix sync head54c033aa8); first gate run: 4 Survived → fixed same PR (L42): 1 default-branch kill test + 2 equivalent-mutant directives (equivalence proof in body; maintainer approval requested); local gates green oned4d4adf9(check-types 11/11, eslint 0, vitest 21/21, mutation 25/25 Killed vsd70b40ad3); body drafted (u5-upstream-body.md); held for upstream slot (plan §2.2 max-3-open)Risk flags (quick reference — review pass 2026-09-04)
ChatTextArea.tsxanchors overlap open upstream feat(ollama): add reasoning effort selectors and gate on Enable Thinking Zoo-Code-Org/Zoo-Code#1345; if it lands first, rebase U22 onto it (§10 watch item).Task.ts), U13 (NewTaskTool.ts), U22 (ChatTextArea.tsx), U9 (NativeToolCallParser.ts/presentAssistantMessage.ts), U16 (ChatView.tsx), U16/U17 (ChatView.spec.tsx).DTE Final Ship Plan — "Ship It All" (DTE-v2, finalized 2026-09)
This is the single execution source of truth. It supersedes
plans/dte-400line-recreation-plan.md(kept as historical inventory) and folds in every actionable finding fromplans/dte-gap-review.md. Everything below is final: content source, unit ledger, trigger order, decisions, and the ship-all acceptance gate.upstream/main(re-verify per branch; wave-1 baseb2f63d366unless main advanced).origin/feat/dte-trial-all@27a2e97df— file content viagit show 27a2e97df:<path>, hunks viagit diff <base>..27a2e97df -- <path>.b17373bb9(dte-3 tip) lacks the dte-5/dte-7-lineage fixes,6eba686c1(dte-5 tip) ships the strict-schema-breakingnew_task.ts(B1), and65ee7b5e6(dte-7 tip) lacks the A5 orchestrator hardening (M7) and the dte-3 12-line effort-rank test (m8). Only the union is complete.Union-tree verification (ran 2026-09, results pinned)
git merge-base --is-ancestor b17373bb9 27a2e97dfcustom-legacyeffort-rank fallback test) is inside the union; m8 resolves for free by extracting U7/U8 from the uniongit grep custom-legacy 27a2e97dfsrc/core/tools/__tests__/setThinkingEffortTool.spec.tsnew_task.ts@ unionthinking_effort=["string","null"]pattern, all four params inrequired(B1 shape) with the explanatory commentNewTaskTool.ts@ unionstartLevelsfilter at :94, empty-capability wording :106-107) — M7 shapethinking-effort-proxy.ts,fixtures/thinking-effort.ts,thinking-effort-tool/switching.test.ts,new-task-thinking-effort.test.ts(i.e. the dte-3→dte-7 comment drift and the 11-line teardown hygiene are already in the union content)taskMetadata.spec.tssrc/core/task-persistence/__tests__/taskMetadata.spec.tsat dte-2 tip and at the union (U4 file list confirmed)1. Decisions (all resolved — no open questions block execution)
simulateWebviewMessagetest-API affordance)supportsReasoningEffort; F7 profiles can declare efforts in settings"easonLiangWorldedtech/Zoo-Code#35. Branchfeat/dte-trial-allis never deleted (content-source reference; tagdte-legacy/union 27a2e97dfcreated in Phase 0). Upstream Zoo-Code-Org#1326/Zoo-Code-Org#1327 (F1 adaptive-thinking display fix) intentionally left open — its content is not in the union content source and merges independentlysleep(1500)e2e teardown) and n10 (EXPLICIT test wire-assertion omission) = kept, house pattern / documented choice2. Execution policy (in order, max 3 in flight)
main(shallow stacks). e2e/main units (U25a, U25–U30, U36) open only after their base units are merged and rebase onto plainmain(maintainer policy)./resume).mutation-diffscope stays fully killable in one Stryker run. Record the merge in the DTE-v2 final ship plan - 39-unit 400-line redo of the DTE series (supersedes #28) #35 ledger (both unit rows → same PR #). Never merge across wave/stack boundaries or to rescue an over-budget unit — split instead.3. Line-counting rule (binding)
git diff --shortstat <stack-base> <branch>— the number GitHub shows against that base.git diff --shortstaton the staged commit), not after CI. If the measure lands ≥380, restructure before pushing — move the next naturaldescribeblock / hunk group (the reserved split point) into the next unit — and re-measure. Never approve around the budget.mutation-diffgates on changed code). The amendment ledger (§7) tests are no exception.4. Final unit ledger (39 units; sequence column = trigger order)
Targets are estimates from the old branches ± amendments; measure every unit at push time and hunk-tune if over (⚠ marks units estimated ≥380).
Wave 1 — base (base:
main)git show 27a2e97df:<path>)feat(settings): dynamic thinking effort experimental toggle (DTE-1)Wave 2 — dte-2 content (stacked after U1)
feat(api): per-request effective reasoning-effort resolution (DTE-2a)reasoning.ts(+45),api/index.ts(+9),dte-effective-reasoning-effort.spec.ts(+58),experiments.spec.ts(1/28)feat(task): task-local runtime thinking effort state (DTE-2b)Task.ts(+132/−3),Task.runtime-thinking-effort.test.tscore describes (≈220/394)feat(persistence): persist task thinking effort to history (DTE-2c)taskMetadata.ts(+13/−1),history.ts(+8),taskMetadata.spec.ts(+81), Task test remainder (~174)feat(anthropic): adaptive thinking-effort envelope (DTE-2d)anthropic.ts(+43/−1),anthropic-adaptive-effort.spec.ts(+297),ExperimentalSettings.spec.tsx(1/75)Wave 3 — dte-3 content (stacked after U5) · Wave 4 — dte-5 content (parallel track, stacked after U5's head)
test(api): hermetic aimock fallback catalog for OpenRouter fetcher(base:main; env-gated, main-safe)src/api/providers/fetchers/openrouter.ts(+~40: honorE2E_MOCK_MODEL_LIST_FALLBACK), bundled minimal catalog (openai/gpt-5,openai/gpt-5.1withsupported_parameters: ["reasoning"], +~25), fetcher test (+~20)feat(tools): set_thinking_effort schema, prompt, mode filter (DTE-3a)native-tools/set_thinking_effort.ts(+49),native-tools/index.ts(+2),filter-tools-for-mode.ts(+41),filter-thinking-effort.spec.ts(+151),packages/typesexperiment/tool/shared files (+46)enum: ["none","minimal","low","medium","high","xhigh","max"]on the effort property + spec (+~14)feat(orchestrator): new_task thinking-effort input (DTE-5a)NewTaskTool.ts(+95/−14),Task.ts(+56/−2),new_task.tsprompt (+6),shared/tools.ts(+3/−2),newTaskTool.spec.ts(+12),new-task-delegation.spec.ts(+6) — all from the union tree (FINAL shapes)undefinedat the child re-validation consumer +~6), n7 (sibling parity with SetThinkingEffortTool normalization)feat(tools): SetThinkingEffortTool core (DTE-3b)SetThinkingEffortTool.tscore hunks (+200),+220/504) — union tree; includes the 12-linesetThinkingEffortTool.spec.tspart 1 (custom-legacyeffort-rank fallback test (m8)test(orchestrator): new_task effort task-level specs (DTE-5b)Task.new-task-effort.spec.ts(+194),newTaskThinkingEffort.spec.tspart 1 (~+200/407) — union assertions (B1-corrected shape)feat(tools): set_thinking_effort guards (escalation cap, oscillation, capability) (DTE-3c)SetThinkingEffortTool.tsremainder (+106),+284/−10)setThinkingEffortTool.spec.tspart 2 (recordUserThinkingEffortWrite(task, effort)for guard-history reseed + API unit tests (+~15)test(orchestrator): new_task effort tool + parser specs (DTE-5c)newTaskThinkingEffort.spec.tspart 2 (~+207/−6),NativeToolCallParser.spec.ts(+51),NativeToolCallParser.ts(+6) — union contentfeat(parser): parse and present set_thinking_effort tool calls (DTE-3d)NativeToolCallParser.ts(+20),presentAssistantMessage.ts(+12), both parser/presenter specs (+362)feat(webview): subtask thinking-effort UI in ChatView (DTE-5d)ChatView.tsx(+154/−47),ChatView.spec.tsxpart 1 (~+125/−5)feat(task): wire set_thinking_effort into task runtime (DTE-3e)Task.ts(+105/−1),Task.runtime-thinking-effort.test.tsdte-3 adds (~+290/311)test(webview): ChatView effort spec remainder + provider delegation (DTE-5e)ChatView.spec.tsxpart 2 (~+125/−4),provider-delegation.spec.ts(+291/−2)feat(webview): display set_thinking_effort results in chat row (DTE-3f)ChatRow.tsx(+26),ChatRow.thinking-effort.spec.tsx(+120),ExperimentalSettings.spec.tsx(+75), Task test remainder (~21),vscode-extension-host.ts(+4)<Brain>aria-label (toggleTitlekey oraria-hidden; +~14); n3: de-emoji the spec fixture + fix stale describe label (±4)feat(webview): wire new_task effort through extension host (DTE-5f)ClineProvider.ts(+50/−9),webviewMessageHandler.ts(+8/−1),webviewMessageHandler.spec.ts(+36/−3),vscode-extension-host.ts(+8/−1)feat(i18n): translate set_thinking_effort strings (18 locales) (DTE-3g)locales/*/chat.json+5 ×18,*/settings.json+4 ×18Zoo(自動)spacing)Wave 5 — dte-4 content (stacked after U11's head)
feat(webview): thinking-effort utilities (DTE-4a)thinkingEffort.ts(+82),thinkingEffort.spec.ts(+178)feat(webview): thinking-effort message handling (DTE-4b)webviewMessageHandler.ts(+54),webviewMessageHandler.thinking-effort.spec.ts(+141)recordUserThinkingEffortWrite+ two-writer oscillation test (+~35)feat(webview): push thinking-effort state to webview (DTE-4c)ClineProvider.ts(+51),ClineProvider.spec.ts(+154/−3)(task as any).apiConfigurationoverwrite of the merged copy) + tests (+~22)feat(webview): ThinkingEffortToggle composer component (DTE-4d)ThinkingEffortToggle.tsx(+118),ThinkingEffortToggle.spec.tsx(+238),ChatTextArea.tsxanchorsdisabledprop (−12); Zoo-Code-Org#1345 anchor watch (rebase onto it if it merges first)feat(webview): thinking-effort chip in TaskHeader + visual snapshots (DTE-4e)TaskHeader.tsx(+37/−1),TaskHeader.thinking-effort.spec.tsx(+166),ThinkingEffortToggle.visual.tsx(+32),.visual.fixture.tsx(+27),ChatRow.thinking-effort.spec.tsx(+15), + PNG baselinestabIndex={0}+aria-labelfromchipTooltip(+~26)feat(i18n): thinking-effort UI strings, locales 1/2 (DTE-4f-a)locales/*(~15/8 ×9: en, zh-TW, zh-CN, ja, ko, de, fr, es, ca)feat(i18n): thinking-effort UI strings, locales 2/2 (DTE-4f-b)locales/*(~15/8 ×9: pt-BR, ru, tr, nl, it, pl, hi, id, vi)Wave 6 — e2e addenda (open only after base units merged; rebase onto
main; content: union tree)test(e2e): DTE request capture proxy + fixtures (DTE-3e2e-a)thinking-effort-proxy.ts(+212),fixtures/thinking-effort.ts(+159),runTest.ts(+2), oldsetThinkingEffortTool.spec.ts−12test(e2e): set_thinking_effort tool + switching workflow (DTE-3e2e-b)thinking-effort-tool.test.ts(+166),thinking-effort-switching.test.tspart 1 (~+130/263)strictEqualagainst the documented default) (+~6)test(e2e): set_thinking_effort switching suite remainder (DTE-3e2e-c)thinking-effort-switching.test.tspart 2 (~+133)test(e2e): new_task effort fixtures (DTE-5e2e-a)fixtures/subtasks.ts(+189),runTest.ts(+2/−1)test(e2e): new_task thinking-effort workflow part 1 (DTE-5e2e-b)new-task-thinking-effort.test.tspart 1 (~+260/501)headersSentguard) + reuse — dedup ~90 lines inline (+30/−40)test(e2e): new_task thinking-effort workflow part 2 (DTE-5e2e-c)new-task-thinking-effort.test.tspart 2 (~+241)test(e2e): user composer-toggle thinking-effort flow (DTE-4e2e)packages/types/src/api.ts(+~15:RooCodeTestAPI.simulateWebviewMessage(msg)),src/extension/api.ts(+~12), provider test-hook wiring (+~20),suite/composer-toggle-thinking-effort.test.ts(+~75; marker-prompt fixture,sequenceIndex: 0, asserts the capturedreasoning.effortequals the user-selected level viawithOpenRouterCaptureProxy), marker fixture (+~15)Wave 7 — F7 content (stacked after U18's head)
feat(api): declared reasoning-effort capability for OpenAI-compatible providers (F7a)model-capabilities.ts(+34),openai.ts(+14/−1),lm-studio.ts(+12/−2),base-openai-compatible-provider.ts(+11/−1),friendli.ts(+11/−1),native-ollama.ts(+17/−5),router-provider.ts(+27/−10),model-capabilities.spec.ts(+61),native-ollama.spec.ts(+66)reasoning_effortviagetModelParams({format:"openai"})+getOpenAiReasoning(sibling pattern ofopenai.ts:170) + request-layer test asserting the body field (+~40)feat(settings): supported effort levels — schema + OpenAI-compatible panel (F7b-a)provider-settings/common.ts(+10/−1),provider-settings.test.ts(+55),OpenAICompatible.tsx(+48/−21),OpenAICompatible.spec.tsx(+128),SupportedEffortLevels.tsx(+67),ExperimentalSettings.tsx(+8)[]/ omitted) + one request-construction assertion for the declared flow (+~35)feat(settings): supported effort levels — LM Studio/Ollama/LiteLLM/Friendli panels (F7b-b)LMStudio.tsx/Ollama.tsx/LiteLLM panel/Friendli.tsx(+~25 each: renderSupportedEffortLevelsgated on profile shape),ApiOptions.tsxwiring, panel specs (+~40 each)feat(webview): F7 effort resolution in thinking-effort utilities (F7c)thinkingEffort.ts(+56/−7),thinkingEffort.spec.ts(+139/−5)packages/types(single implementation; both mirrors delegate) + packages/types spec (+~90); fallback if the extraction is messier: pinned parity-table test (+~40)feat(i18n): F7 settings strings, 18 locales (F7c-i18n)locales/*/settings.json(~8/3 ×18)test(api): F7 declared-effort integration specs (F7d)f7-declared-reasoning-effort.spec.ts(+249),SetThinkingEffortTool.ts(+21),NewTaskTool.ts(+11/−2),filter-tools-for-mode.ts(+10/−10),newTaskThinkingEffort.spec.ts(+34/−6)test(e2e): F7 touch-up in new_task e2e suitenew-task-thinking-effort.test.ts(+11) — basemain, opens after U34 mergedTotals: 39 units (38 full + 1 micro). Old-series own content ≈10,800 lines + amendments ≈900 lines ≈ 11,700 counted lines ÷ 400 ≈ 29 minimum; 39 units reflects natural feature boundaries + the required splits.
Risk flags (quick reference — review pass 2026-09-04)
ChatTextArea.tsxanchors overlap open upstream feat(ollama): add reasoning effort selectors and gate on Enable Thinking Zoo-Code-Org/Zoo-Code#1345; if it lands first, rebase U22 onto it (§10 watch item).Task.ts), U13 (NewTaskTool.ts), U22 (ChatTextArea.tsx), U9 (NativeToolCallParser.ts/presentAssistantMessage.ts), U16 (ChatView.tsx), U16/U17 (ChatView.spec.tsx).5. Per-PR workflow (identical for every unit)
git worktree add -b feat/dte-v2-<seq>-<slug> C:\work\Zoo-Code-fork\wt-dte-v2-<seq> <stack-base>+pnpm install --frozen-lockfile.git show 27a2e97df:<path> > <file>; mixed files via hunk-level surgery (git diff <base>..27a2e97df -- <path>→ hand-separated patches / edit to old content minus later-unit hunks). Apply the unit's §4 amendments on top.git status --shortafter every staging step. Hunk-surgery double-check (mixed files):git diff <stack-base> HEAD -- <paths>against the27a2e97dfhunk set for the file — every expected hunk present, no later-unit hunk leaked in (those belong to the stacked unit), no stray edits to pre-existing content. The §9 content-fidelity check is the final net; this catches per-unit mistakes early.pnpm --dir src exec eslint --prune-suppressions --max-warnings=0 <each touched src file>— suppression counts never increase.pnpm check-types(repo root); targeted vitest suites for every touched package (run from the package declaring Vitest).node scripts/find-missing-translations.jsif locale files changed (18 locales,src/i18nandwebview-ui/src/i18nwhere keys are used).themes:checkonly if visual baselines were regenerated (Docker artifact; never hand-editplaywright/themes/*).git diff --shortstat <stack-base> HEAD→ a+d ≤ 400 (§3); split if over.<stack-base>with the §6 body (stack note + budget statement mandatory; D3 note for dte-4 units; amendment list with finding IDs).mutation-diff(expect ~30 min) andcodecov/patch.plans/dynamic-thinking-effort-plan.md§10; mark the old PR(s) this unit replaces (already closed as superseded — keep the link in the close comment thread).6. PR body template
7. CI targets (upstream/main
b2f63d366; re-verify per push)code-qa.ymlcodecov/patchgreene2e.yml//comments inside fixture JSON)visual-regression.ymlcodeql.ymlmutation-testing.ymlmutation-diffgreen — changed lines have in-PR killing testslabel-pr-review-state.ymlci-pending→coderabbit-review-active→draft-approvedUndraft gate: all of the above green + CodeRabbit review complete with no actionable comments + final comment posted (findings → what changed; local verification; standalone a/d numbers).
8. Gap-amendment ledger (disposition of all 37 gap-review items)
In-PR (verified at merge of the listed unit): B1→U13/U14 · M1→U31 · M2→U32b · M4→U25a · M5→U36 · M6→U23 · M7→U13 (union source) · M8→the split itself · m1→U3+U21 · m2→U18 · m3→U13 · m4→U8+U20 · m5→U20 · m7→U6 · m8→U7/U8 (union source — free) · m9→U1 · m10→U11 · m11→U23 · m13→U16 · m14→U33 · m15→U32a · m16→U26 · m17→U29/U30 · n1/n2→U12 (+U24a quality pass) · n3→U11 · n4→U22 · n6→U13/U18 · n7→U13/U15/U18 · n8→U33b (optional) · n11→this document.
Documented keeps (no code change): m6 (U9 PR body) · m12/D3 (dte-4 PR bodies) · n9 (house pattern) · n10 (documented choice).
Post-merge follow-ups (file in tracking issue
easonLiangWorldedtech/Zoo-Code#35; the list below is embedded in #35's body — file the concrete PRs as they open and check the rows off there):openai.tshandleO3FamilyMessage→resolveEffectiveReasoningEffort; drop the staticas "low"|"medium"|"high"cast) + tests. ~40–60 lines.shouldUseReasoningEffortcapability-absent branch: compare selected effort vs capability/default (PoE 400 risk).ApiConfigSelector/ModeSelector/… patterns).9. Ship-all acceptance gate ("it's all shipped" checklist)
upstream/main; ledger rows carry final PR #, head SHA, measured a+d (each ≤400).git diff <pre-DTE main>..main -- <file>equalsgit diff 3ea9f63e6..27a2e97df -- <file>except the listed amendments — i.e. per-filegit diff main..27a2e97df -- <file>is empty, or its non-empty delta matches the §8 ledger entry. No union content silently dropped; no per-PR-head-only shape (B1/M7/m8 classes) shipped.feat/dte-trial-allbranch retained (tagdte-legacy/union 27a2e97dfcreated). Upstream Anthropic adaptive-thinking models: thinking content invisible (display omitted) and thinking_tokens telemetry missing Zoo-Code-Org/Zoo-Code#1326/fix(api): surface adaptive thinking display and thinking_tokens for Anthropic models Zoo-Code-Org/Zoo-Code#1327 (F1 adaptive-thinking display fix) left open by design — content not in the union content source; merges independently.plans/dynamic-thinking-effort-plan.md§10 updated with the full new PR table. (DTE-v2 final ship plan - 39-unit 400-line redo of the DTE series (supersedes #28) #35 created 2026-09-04 with the full plan + 39-unit status table; PR # / a+d cells fill in as units land.)10. Phase 0 (one-time prep)
dte-legacy/union 27a2e97dfcreated locally on 2026-09-04 (local reference; the branchfeat/dte-trial-allon the fork remains the shared pointer).easonLiangWorldedtech/Zoo-Code#35opened with this plan + the gap-review ledger embedded in its body.chat-model-thinking-selector) is still OPEN and touches the U22ChatTextArea.tsxanchors — if it merges first, rebase U22 onto it (policy recorded in old feat(webview): thinking effort surfaces — header chip, composer toggle, in-chat display (DTE series 4/5) Zoo-Code-Org/Zoo-Code#1359 body).gh api repos/Zoo-Code-Org/Zoo-Code/pulls/{N}/comments(old-series PR/issue threads are preserved after the 2026-09-04 closes — searchable via the close comments) and pin it in the base plan's §9; cross-reference in tracking issue DTE-v2 final ship plan - 39-unit 400-line redo of the DTE series (supersedes #28) #35. Counting stays additions+deletions regardless.