Roo-Code/docs/reapplication-plan.md

372 lines
29 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Reapplication Plan — PRs Reverted by #11462
> **Analysis date:** 2026-02-14
> **Scope:** 42 PRs reverted by #11462 that were NOT reapplied by #11463
> **Method:** Dry-run `git cherry-pick --no-commit` against `main-sync-rc6`
---
## 1. Executive Summary
| Category | Count | % |
| --------------------- | ------ | ----- |
| **CLEAN_CHERRY_PICK** | 22 | 52 % |
| **MINOR_CONFLICTS** | 9 | 21 % |
| **MAJOR_CONFLICTS** | 6 | 14 % |
| **EXCLUDED (AI SDK)** | 5 | 12 % |
| **Total** | **42** | 100 % |
**Progress:** 37 of 42 PRs reapplied ✅. 5 PRs excluded (AI-SDK-dependent, will not be reapplied). Reapplication is complete.
### Overall Assessment
Over half (52 %) of the reverted PRs cherry-pick cleanly onto the current branch with zero conflicts. Another 21 % have only minor, mechanically-resolvable conflicts (lockfile diffs, adjacent-line shifts, small provider divergences). Together these 31 PRs have been reapplied across Batches 1 and 2.
The remaining 6 PRs (all MAJOR conflicts) have been reapplied in PR [#11475](https://github.com/RooCodeInc/Roo-Code/pull/11475) after all product decisions were approved:
- **Skills infrastructure** (#11102, #11157, #11414) — skills UI restored, then built-in skills mechanism removed as approved.
- **Cross-cutting removals** (#11253, #11297, #11392) — provider removals, browser use removal, and Grounding checkbox removal all approved and applied.
5 PRs have been permanently excluded because they depend on the AI SDK type system (see §8 Excluded PRs).
### Key Risk Areas
1. **`ClineProvider.ts` and `Task.ts`** are the most frequently touched files — sequential application within batches is essential.
2. **Skills infrastructure** is the #1 conflict magnet across 3 PRs.
3. **API provider files** (`gemini.ts`, `vertex.ts`, `bedrock.ts`) have diverged significantly.
4. **i18n `settings.json`** files cause positional conflicts for any PR adding keys.
5. **`pnpm-lock.yaml`** conflicts are trivially regeneratable via `pnpm install`.
---
## 1.5 Progress
| Batch | Status | Details |
| ------- | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| Batch 1 | ✅ COMPLETE | 22/22 PRs cherry-picked, PR [#11473](https://github.com/RooCodeInc/Roo-Code/pull/11473) created |
| Batch 2 | ✅ COMPLETE (rebuilt) | 9/9 PRs cherry-picked (3 AI SDK PRs excluded, 1 Azure PR excluded). PR [#11474](https://github.com/RooCodeInc/Roo-Code/pull/11474) |
| Batch 3 | ✅ COMPLETE | 4/4 PRs cherry-picked (skills infra + browser use removal). PR [#11475](https://github.com/RooCodeInc/Roo-Code/pull/11475) |
| Batch 4 | ✅ COMPLETE | 2/2 PRs cherry-picked (provider removals). PR [#11475](https://github.com/RooCodeInc/Roo-Code/pull/11475) |
---
## 2. Dependency Graph
```mermaid
graph TD
subgraph "Delegation Chain — ✅ MERGED (Batch 1)"
PR11281["#11281 prevent parent task state loss"]
PR11302["#11302 delegation-aware removeClineFromStack"]
PR11331["#11331 delegation race condition"]
PR11335["#11335 serialize taskHistory writes"]
PR11281 --> PR11302 --> PR11331 --> PR11335
end
subgraph Skills Chain
PR11102["#11102 skill mode dropdown"]
PR11157["#11157 improve Skills/Slash Commands UI"]
PR11414["#11414 remove built-in skills mechanism"]
PR11102 --> PR11157 --> PR11414
end
subgraph Opus 4.6
PR11224["#11224 Claude Opus 4.6 support"]
PR11232["#11232 Bedrock model ID for Opus 4.6"]
PR11224 --> PR11232
end
subgraph Gemini Provider
PR11233["#11233 empty-string baseURL guard"]
PR11303["#11303 Gemini thinkingLevel validation"]
PR11253["#11253 remove URL context/Grounding checkboxes"]
PR11233 --> PR11303 --> PR11253
end
subgraph Removal PRs – Product Decisions
PR11253
PR11297["#11297 remove 9 low-usage providers"]
PR11392["#11392 remove browser use entirely"]
PR11414
end
```
### Textual Dependency Summary
| Dependency Chain | PRs (in order) |
| ------------------- | ------------------------------------------------------- |
| Delegation (merged) | #11281 → #11302 → #11331 → #11335 = ✅ MERGED (Batch 1) |
| Skills | #11102 → #11157 → #11414 |
| Opus 4.6 | #11224 → #11232 |
| Gemini provider | #11233 → #11303 → #11253 |
---
## 3. Recommended Batches
### Batch 1 — Clean Cherry-Picks (Low Risk)
✅ **COMPLETE** — PR [#11473](https://github.com/RooCodeInc/Roo-Code/pull/11473)
**22 PRs · No manual conflict resolution**
Apply all CLEAN_CHERRY_PICK PRs in dependency order. These are safe to apply in a single session. Start with independent PRs, then apply the clean delegation PRs in chain order.
| Order | PR# | Title |
| ----- | ------ | ----------------------------------------------- |
| 1 | #10874 | image content in MCP tool responses |
| 2 | #10975 | transform tool blocks to text before condensing |
| 3 | #10981 | Codex-inspired read_file refactor |
| 4 | #10994 | allow import settings in welcome screen |
| 5 | #11038 | code-index gemini-embedding-001 |
| 6 | #11116 | treat extension .env as optional |
| 7 | #11131 | sanitize tool_use_id |
| 8 | #11140 | queue messages during command execution |
| 9 | #11162 | IPC task cancellation fixes |
| 10 | #11183 | AGENTS.local.md support |
| 11 | #11205 | cli provider switch race condition |
| 12 | #11207 | remove dead toolFormat code |
| 13 | #11215 | extract translation/merge resolver into skills |
| 14 | #11224 | Claude Opus 4.6 support across providers |
| 15 | #11225 | gpt-5.3-codex model |
| 16 | #11281 | prevent parent task state loss |
| 17 | #11302 | delegation-aware removeClineFromStack |
| 18 | #11313 | webview postMessage crashes |
| 19 | #11331 | delegation race condition |
| 20 | #11335 | serialize taskHistory writes |
| 21 | #11369 | task resumption in API module |
| 22 | #11410 | clean up repo-facing mode rules |
**Rationale:** These have zero conflicts and include the first 4 delegation PRs in the chain, which unblocks later batches.
> **Post-application notes:**
>
> - Extra fix commit: `maxReadFileLine` added to `ExtensionState` type for compatibility
> - #11215 and #11410 were empty commits (changes already present in base)
> - Verification: 5,359 backend tests ✅, 1,229 webview-ui tests ✅, TypeScript ✅
---
### Batch 2 — Minor Conflicts (Medium Risk)
✅ **COMPLETE (rebuilt)** — PR [#11474](https://github.com/RooCodeInc/Roo-Code/pull/11474)
**9 PRs (rebuilt) · Originally 13 PRs**
> **Rebuild note:** Originally 13 PRs. Rebuilt after excluding #11379, #11418, #11422 (AI SDK dependent) and #11374 (depends on excluded #11315).
| Order | PR# | Title | Conflicts | Notes |
| ----- | ------ | --------------------------------------------- | --------- | ------------------------------- |
| 1 | #11232 | Bedrock model ID for Opus 4.6 | 1 | Depends on #11224 (Batch 1) |
| 2 | #11233 | empty-string baseURL guard | 3 | Provider file conflicts |
| 3 | #11218 | defaultTemperature required in getModelParams | 2 | Provider signature changes |
| 4 | #11245 | batch consecutive tool calls in chat UI | 2 | Chat UI content conflicts |
| 5 | #11279 | IPC query handlers | 2 | IPC event types diverged |
| 6 | #11295 | lock toggle to pin API config | 1 | Trivial lockfile conflict |
| 7 | #11303 | Gemini thinkingLevel validation | 1 | Depends on #11233 |
| 8 | #11425 | cli release v0.0.53 | 2 | Version bump conflicts |
| 9 | #11440 | GLM-5 model for Z.ai | 2 | Z.ai provider diverged slightly |
> **Post-application notes:**
>
> - AI SDK contamination cleaned: Removed 3 AI SDK tests + import from gemini.spec.ts
> - Type errors fixed: Added missing `defaultTemperature` to vertex.ts and xai.ts
> - pnpm-lock.yaml regenerated: Clean lockfile matching current dependencies
> - Verification: 5,372 backend tests ✅, 1,250 webview-ui tests ✅, 14/14 type checks ✅, AI SDK contamination check clean
---
### Batch 3 — Major Conflicts: Skills & Browser Use (High Risk)
✅ **COMPLETE** — PR [#11475](https://github.com/RooCodeInc/Roo-Code/pull/11475)
**4 PRs · All product decisions approved**
| Order | PR# | Title | Conflicts | Notes |
| ----- | ------ | -------------------------------- | --------- | ----------------------------- |
| 1 | #11102 | skill mode dropdown | 44 | Skills infra must be restored |
| 2 | #11157 | improve Skills/Slash Commands UI | 48 | Superset of #11102 |
| 3 | #11414 | remove built-in skills mechanism | 30 | Depends on #11102 + #11157 |
| 4 | #11392 | remove browser use entirely | 15 | Cross-cutting removal |
---
### Batch 4 — Major Conflicts: Provider Removals (High Risk)
✅ **COMPLETE** — PR [#11475](https://github.com/RooCodeInc/Roo-Code/pull/11475)
**2 PRs · All product decisions approved**
| Order | PR# | Title | Conflicts | Notes |
| ----- | ------ | --------------------------------------- | --------- | ---------------------------------- |
| 1 | #11253 | remove URL context/Grounding checkboxes | 4 | Depends on Gemini PRs from Batch 2 |
| 2 | #11297 | remove 9 low-usage providers | 18 | Provider files modified/deleted |
---
## 4. Per-PR Analysis Table
| PR# | Title | Commit SHA | Category | Conflicting Files | Dependencies | Notes |
| ------ | ----------------------------------------------- | ------------ | -------- | --------------------------------------------------------------------------------------------------------------------- | ----------------- | ----------------------------------------------------- |
| #10874 | image content in MCP tool responses | `e46fae7ad7` | CLEAN | — | — | |
| #10975 | transform tool blocks to text before condensing | `b4b8cef859` | CLEAN | — | — | |
| #10981 | Codex-inspired read_file refactor | `cc86049f10` | CLEAN | — | — | 19 files (types, core, webview, tests) |
| #10994 | allow import settings in welcome screen | `fa93109b76` | CLEAN | — | — | 1 file (WelcomeViewProvider.tsx) |
| #11038 | code-index gemini-embedding-001 | `1e790b0d39` | CLEAN | — | — | |
| #11102 | skill mode dropdown | `16fbabf2a4` | MAJOR | 44 files: skills.json ×18, settings.json ×18, + skills infra | Skills chain head | Skills UI fully removed in revert |
| #11116 | treat extension .env as optional | `20d1f1f282` | CLEAN | — | — | extension.ts + test |
| #11131 | sanitize tool_use_id | `3400499917` | CLEAN | — | — | auto-merged presentAssistantMessage.ts |
| #11140 | queue messages during command execution | `ede1d29299` | CLEAN | — | — | auto-merged ChatView.tsx |
| #11157 | improve Skills/Slash Commands UI | `54ea34e2c1` | MAJOR | 48 files: CreateSkillDialog.tsx, SkillsSettings.tsx, SettingsView.tsx + skills infra | #11102 | Superset of #11102 conflicts |
| #11162 | IPC task cancellation fixes | `e5fa5e8e46` | CLEAN | — | — | auto-merged runTaskInCli.ts, Task.ts |
| #11183 | AGENTS.local.md support | `1da2b1c457` | CLEAN | — | — | .gitignore, custom-instructions.ts, test |
| #11205 | cli provider switch race condition | `aa49871a5d` | CLEAN | — | — | auto-merged webviewMessageHandler.ts |
| #11207 | remove dead toolFormat code | `f73b103b87` | CLEAN | — | — | trivially clean |
| #11215 | extract translation/merge resolver into skills | `5507f5ab64` | CLEAN | — | — | empty diff — already present |
| #11218 | defaultTemperature required in getModelParams | `0e5407aa76` | MINOR | cerebras.ts, mistral.ts | — | Provider signature changes |
| #11224 | Claude Opus 4.6 support across providers | `47bba1c2f7` | CLEAN | — | — | 30 files (provider types + i18n) |
| #11225 | gpt-5.3-codex model | `d5b7fdcfa7` | CLEAN | — | — | 2 files (openai-codex.ts + test) |
| #11232 | Bedrock model ID for Opus 4.6 | `8c6d1ef15d` | MINOR | packages/types/src/providers/bedrock.ts | #11224 | Content conflict in bedrock types |
| #11233 | empty-string baseURL guard | `23d34154d0` | MINOR | gemini.spec.ts, deepseek.ts, gemini.ts | — | Provider file conflicts |
| #11245 | batch consecutive tool calls in chat UI | `7afa43635f` | MINOR | ChatRow.tsx, ChatView.tsx | — | Content conflicts in chat UI |
| #11253 | remove URL context/Grounding checkboxes | `2053de7b40` | MAJOR | gemini.ts, vertex.ts, gemini-handler.spec.ts, vertex.spec.ts | #11233, #11303 | Gemini/Vertex diverged; needs product decision |
| #11279 | IPC query handlers | `9b39d2242a` | MINOR | packages/types/src/events.ts, src/extension/api.ts | — | IPC event types diverged |
| #11281 | prevent parent task state loss | `6826e20da2` | CLEAN | — | — | auto-merged Task.ts, ClineProvider.ts, tests |
| #11295 | lock toggle to pin API config | `5d17f56db7` | MINOR | pnpm-lock.yaml | — | Trivial lockfile conflict |
| #11297 | remove 9 low-usage providers | `ef2fec9a23` | MAJOR | 18 files: 9 provider files (modify/delete), pnpm-lock.yaml, ApiOptions.tsx, package.json | — | Needs product decision |
| #11302 | delegation-aware removeClineFromStack | `70775f0ec1` | CLEAN | — | #11281 | auto-merged ClineProvider.ts |
| #11303 | Gemini thinkingLevel validation | `a11be8b72e` | MINOR | src/api/providers/gemini.ts | #11233 | Content conflict |
| #11313 | webview postMessage crashes | `62a0106ce0` | CLEAN | — | — | auto-merged ClineProvider.ts |
| #11331 | delegation race condition | `7c58f29975` | CLEAN | — | #11302 | auto-merged task.ts, Task.ts, ClineProvider.ts, tests |
| #11335 | serialize taskHistory writes | `115d6c5fce` | CLEAN | — | #11331 | auto-merged ClineProvider.ts + test |
| #11369 | task resumption in API module | `b02924530c` | CLEAN | — | — | auto-merged api.ts |
| #11392 | remove browser use entirely | `fa9dff4a06` | MAJOR | 15 files: Task.ts, ClineProvider.ts, system-prompt.spec.ts, mentions/, build-tools.ts, ChatView.tsx, SettingsView.tsx | — | Cross-cutting removal; needs product decision |
| #11410 | clean up repo-facing mode rules | `d2c52c9e09` | CLEAN | — | — | trivially clean |
| #11414 | remove built-in skills mechanism | `b759b92f01` | MAJOR | 30 files: built-in-skills.ts, generate-built-in-skills.ts, shared/skills.ts + skills infra | #11157 | Skills files deleted in HEAD; needs product decision |
| #11425 | cli release v0.0.53 | `f54f224a26` | MINOR | CHANGELOG.md, package.json | — | Version bump conflicts |
| #11440 | GLM-5 model for Z.ai | `cdf481c8f9` | MINOR | src/api/providers/zai.ts, zai.spec.ts | — | Z.ai provider diverged slightly |
> **Note:** 5 PRs (#11315, #11374, #11379, #11418, #11422) have been excluded from this table. See §8 Excluded PRs.
---
## 5. Product Decisions Required
The following 4 PRs perform **removals of existing functionality**. They cannot be reapplied without explicit stakeholder sign-off because the removal may conflict with current product direction or user expectations.
### #11253 — Remove URL Context/Grounding Checkboxes
- **What it removes:** URL context and Grounding search checkboxes from Gemini and Vertex providers
- **Why sign-off is needed:** Grounding is a user-visible feature toggle. Removing it changes the Gemini/Vertex UX and may affect users relying on grounded responses. Product must confirm these features are deprecated.
- **Conflict scope:** 4 files (gemini.ts, vertex.ts, and their spec files)
- **Dependencies:** Should be applied after #11233 and #11303
### #11297 — Remove 9 Low-Usage Providers
- **What it removes:** 9 API provider integrations deemed low-usage
- **Why sign-off is needed:** Removing providers breaks existing users of those providers. Product must confirm the usage data supports removal and that affected users have been notified or migrated.
- **Conflict scope:** 18 files — 9 provider files are modify/delete conflicts (files were modified in HEAD but the PR deletes them), plus pnpm-lock.yaml, ApiOptions.tsx, package.json
- **Dependencies:** None, but should be applied after all other provider-touching PRs
### #11392 — Remove Browser Use Entirely
- **What it removes:** The entire browser use feature (browser automation, mentions, tool definitions, UI toggles)
- **Why sign-off is needed:** Browser use is a significant user-facing capability. Its removal is a major product decision affecting workflows that depend on browser automation. Product must confirm this feature is being sunset.
- **Conflict scope:** 15 files — cross-cutting across Task.ts, ClineProvider.ts, system-prompt.spec.ts, mentions/, build-tools.ts, ChatView.tsx, SettingsView.tsx
- **Dependencies:** None, but deeply cross-cutting
### #11414 — Remove Built-In Skills Mechanism
- **What it removes:** The built-in skills infrastructure (generation scripts, shared types, skill definitions)
- **Why sign-off is needed:** This removes the mechanism for shipping skills bundled with the extension. Product must confirm that the skills system is moving entirely to user-managed skills (via SKILL.md files) and that no built-in skills are planned.
- **Conflict scope:** 30 files — skills infrastructure files deleted in HEAD
- **Dependencies:** Requires #11102 and #11157 to be applied first (skills UI must exist before it can be removed)
---
## 6. Recommended Execution Order
### Phase 1: Clean Cherry-Picks (Batch 1) ✅
1. ✅ Cherry-pick the 22 CLEAN PRs in the order listed in Batch 1 (§3)
2. ✅ Run `pnpm install` to regenerate lockfile
3. ✅ Run full test suite to confirm no regressions
4. ✅ Commit/tag checkpoint: `batch-1-clean-complete`
> Checkpoint tagged: branch `reapply/batch-1-clean-cherry-picks`, PR [#11473](https://github.com/RooCodeInc/Roo-Code/pull/11473)
### Phase 2: Minor Conflict Resolution (Batch 2) ✅
5. ✅ Cherry-pick #11232 (Bedrock Opus 4.6 model ID) — resolve 1 conflict in bedrock.ts
6. ✅ Cherry-pick #11233 (empty-string baseURL guard) — resolve 3 provider conflicts
7. ✅ Cherry-pick #11218 (defaultTemperature) — resolve 2 provider signature conflicts
8. ✅ Cherry-pick #11245 (batch tool calls in chat UI) — resolve 2 chat UI conflicts
9. ✅ Cherry-pick #11279 (IPC query handlers) — resolve 2 IPC type conflicts
10. ✅ Cherry-pick #11295 (lock toggle) — resolve lockfile conflict, regenerate with `pnpm install`
11. ✅ Cherry-pick #11303 (Gemini thinkingLevel) — resolve 1 gemini.ts conflict
12. ✅ Cherry-pick #11425 (cli release v0.0.53) — resolve version bump conflicts
13. ✅ Cherry-pick #11440 (GLM-5 for Z.ai) — resolve 2 Z.ai conflicts
14. ✅ Run full test suite
15. ✅ Commit/tag checkpoint: `batch-2-minor-complete`
> Checkpoint tagged: branch `reapply/batch-2-minor-conflicts`, PR [#11474](https://github.com/RooCodeInc/Roo-Code/pull/11474)
### Phase 3: Product Decisions Gate ✅
16. ✅ Stakeholder sign-off obtained:
- [x] #11253 — Remove Grounding checkboxes
- [x] #11297 — Remove 9 low-usage providers
- [x] #11392 — Remove browser use
- [x] #11414 — Remove built-in skills mechanism
### Phase 4: Skills Infrastructure Restoration (Batch 3) ✅
17. ✅ Cherry-pick #11102 (skill mode dropdown) — resolved 44 conflicts (skills infra restoration)
18. ✅ Cherry-pick #11157 (improve Skills/Slash Commands UI) — resolved 48 conflicts
19. ✅ Cherry-pick #11414 (remove built-in skills) — resolved 30 conflicts
20. ✅ Cherry-pick #11392 (remove browser use) — resolved 15 conflicts
21. ✅ Run full test suite
22. ✅ Commit/tag checkpoint: `batch-3-skills-complete`
> Checkpoint tagged: branch `reapply/batch-3-4-5-major-conflicts`, PR [#11475](https://github.com/RooCodeInc/Roo-Code/pull/11475)
### Phase 5: Provider Removals (Batch 4) ✅
23. ✅ Cherry-pick #11253 (remove Grounding checkboxes) — resolved 4 conflicts
24. ✅ Cherry-pick #11297 (remove 9 providers) — resolved 18 conflicts
25. ✅ Run full test suite
26. ✅ Commit/tag checkpoint: `batch-4-removals-complete`
> Checkpoint tagged: branch `reapply/batch-3-4-5-major-conflicts`, PR [#11475](https://github.com/RooCodeInc/Roo-Code/pull/11475)
### Final
27. Run complete test suite (`pnpm test`)
28. Run linter (`pnpm lint`)
29. Manual smoke test of key flows (delegation, skills, providers)
30. Tag final checkpoint: `reapplication-complete`
---
## 7. Appendix: Reapplication Complete Summary
All 37 reapplicable PRs have been cherry-picked across Batches 1–4 (PRs #11473, #11474, #11475). 5 PRs have been permanently excluded as AI-SDK-dependent (see §8). The reapplication effort is **complete** at 37/42 PRs.
---
## 8. Excluded PRs (AI SDK Dependent — Will Not Be Reapplied)
The following 5 PRs depend on the AI SDK type system (`@ai-sdk/azure`, `RooMessage`, `readRooMessages`, `saveRooMessages`) introduced by AI SDK PRs #11380/#11409. They will **not** be reapplied or re-implemented.
| PR# | Title | Reason |
| ------ | --------------------------- | ---------------------------------------------------------------------------- |
| #11315 | Azure Foundry provider | Imports `@ai-sdk/azure`; entire provider is AI SDK dependent |
| #11374 | Azure Foundry fix | Depends on #11315 (Azure Foundry provider) |
| #11379 | Harden delegation lifecycle | Imports `RooMessage` types, `readRooMessages`, `saveRooMessages` from AI SDK |
| #11418 | Delegation reopen flow | Depends on #11379's `RooMessage` infrastructure |
| #11422 | Cancel/resume abort races | Depends on #11418 |
> **Rationale:** The AI SDK migration is not being pursued. These PRs are tightly coupled to the AI SDK type system and cannot be cherry-picked or meaningfully adapted without that dependency. The earlier delegation chain (#11281 → #11302 → #11331 → #11335) is clean, already merged in Batch 1, and provides sufficient delegation support without these PRs.