Skip to content

Commit f8b31ec

Browse files
Zeph Gillenclaude
andcommitted
docs(fork): record v3.68.0 sync pain points + Sonnet 5 decision
Capture what the v3.68.0 sync surfaced so the next sync is smoother: - Tag-topology gotcha: our local release tags SHADOW upstream's (ours have no PR-number suffix), so `git merge-base` is authoritative, not tags. Upstream release tags are parallel snapshots, not a linear chain — merge the single target tag directly after `git fetch upstream --tags`. - Recurring conflicts now list the `latestAnnouncementId` string and the announcement `highlightN` blocks (chat.json / README "What's New"); note that `settings.json` usually auto-merges and not to `--theirs` whole README files. - Post-merge checklist: the full build needs a networked, non-sandboxed shell (ripgrep + tree-sitter WASM postinstall); tree-sitter/dist_assets test failures without those assets are false alarms, not regressions. - Sync log: Sonnet 5 adopted onto the fork's effort-shape across the Anthropic + Vertex registries and the OpenRouter + Requesty fetchers; `fetchers/requesty.ts` added to the Feature 2 map (was undocumented); openai-error-handler shim removed upstream (Zoo-Code-Org#767). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent ff20416 commit f8b31ec

1 file changed

Lines changed: 30 additions & 3 deletions

File tree

FORK.md

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,16 @@ across merges. `AGENTS.md` only points here.
2222
> (`git log --no-merges upstream/main..local/daily-driver`). Conflicts that were already resolved
2323
> _inside_ past merge commits are not captured. When a new area starts conflicting, add a row.
2424
25+
> **Tag-topology gotcha (learned in the v3.68.0 sync):** our local `vX.Y.Z` release tags
26+
> **shadow** upstream's — ours point at our own release-prep commits (no PR-number suffix), while
27+
> upstream's real tags carry a `(#NNN)` suffix on the release commit. So `git describe` / tag
28+
> comparisons lie; the authoritative fork-point is
29+
> `git merge-base local/daily-driver <upstream-tag>`. Upstream's release tags are also **parallel
30+
> snapshots, not a linear chain** (`v3.64.0` is not an ancestor of `v3.66.0`), so **merge the single
31+
> target tag directly** — don't chain per-release merges. Always `git fetch upstream --tags` first so
32+
> the target tag resolves (local tags are never clobbered by fetch, which is why the shadowing
33+
> persists).
34+
2535
## Divergence at a glance
2636

2737
| # | Local feature | Origin commit(s) | Nature |
@@ -122,8 +132,10 @@ These conflict on essentially **every** upstream merge and are expected — reso
122132
don't investigate them as regressions.
123133

124134
- `src/package.json` — version string → re-bump (see checklist re: VSIX)
125-
- `CHANGELOG.md` — take the union; keep our fork entries
126-
- `README.md`, `locales/*/README.md`, `webview-ui/src/i18n/locales/*/chat.json` — release/marketing churn
135+
- `src/core/webview/ClineProvider.ts` — the `latestAnnouncementId` string collides every release → take upstream's
136+
- `CHANGELOG.md` — take the union; keep our fork entries (the HEAD side is usually empty — upstream just prepends the new `## [X.Y.Z]` sections, so "take theirs" on the hunk preserves our older entries below)
137+
- `README.md`, `locales/*/README.md`, `webview-ui/src/i18n/locales/*/chat.json` — release/marketing churn; the conflict is the "What's New" / announcement `highlightN` block → take upstream's (in v3.68.0 our v3.62.0 highlights were superseded). Fork branding (Zoo Code, migration guide) sits _outside_ the conflict and auto-merges — do **not** `git checkout --theirs` the whole file
138+
- `webview-ui/src/i18n/locales/*/settings.json` usually **auto-merges** (both sides add different keys) — our `"max"` label + code-index strings and upstream's new keys coexist
127139
- `AGENTS.md` — now just a pointer paragraph, so the footprint is small
128140

129141
## Post-merge checklist
@@ -137,7 +149,22 @@ don't investigate them as regressions.
137149
every recent merge). A clean run = those 22 and nothing else; a 23rd is the regression to
138150
investigate.
139151
- [ ] Verify the Anthropic effort payload still emits `output_config.effort` (not `budget_tokens`)
140-
for Opus 4.7/4.8 — see the provider guards above.
152+
for Opus 4.7/4.8, Fable 5, and Sonnet 5 — see the provider guards above.
153+
- [ ] **The full build needs a networked, non-sandboxed shell:** `pnpm install` runs postinstalls
154+
that download the ripgrep binary and the tree-sitter WASM grammars. If those are absent the
155+
`services/tree-sitter/**` and `__tests__/dist_assets.spec.ts` suites fail on missing _assets_
156+
only (not code) — a false alarm. Run `pnpm install && pnpm build && pnpm vsix --force` before
157+
trusting the full `pnpm -w test` count.
158+
159+
## Sync log / decisions
160+
161+
- **v3.68.0** (from v3.62.0-era, merge-base `8c3ae1e8b`) — 63 upstream commits / 337 files, but the
162+
real conflict surface was ~14 code files, essentially all from upstream's **Claude Sonnet 5**
163+
(#778). **Decision:** adopt Sonnet 5 on the fork's **effort-shape** (not upstream's budget/binary)
164+
across the Anthropic + Vertex registries and the OpenRouter + Requesty fetchers — Sonnet 5 is
165+
adaptive-only and 400s on `budget_tokens`, so the budget shape would break it. Also surfaced:
166+
`fetchers/requesty.ts` was an undocumented fork divergence (now mapped in Feature 2), and upstream
167+
removed the `openai-error-handler` shim (#767 — all callers moved to `error-handler`, merged clean).
141168

142169
## Regenerate this map
143170

0 commit comments

Comments
 (0)