|
3 | 3 | **The authoritative list of every upstream-owned file this fork edits.** |
4 | 4 |
|
5 | 5 | Measured, not asserted: **34 upstream-owned files, +1466 / -112 lines**, against merge-base |
6 | | -`89c5a192f`. Everything else the fork adds lives in new files upstream has never seen and cannot |
7 | | -conflict. |
| 6 | +`887dd6e45` (the 2026-07-28 upstream sync). Everything else the fork adds lives in new files upstream |
| 7 | +has never seen and cannot conflict. |
| 8 | + |
| 9 | +The churn and risk columns are still measured against the _previous_ merge-base `89c5a192f`, because |
| 10 | +the 45 commits absorbed by that sync have not yet aged into a 60-day window. Recompute them at the |
| 11 | +next sync. |
8 | 12 |
|
9 | 13 | Regenerate this ledger before trusting it — see [Regenerating](#regenerating) at the bottom. An |
10 | 14 | earlier version of this file claimed the surface was 2 files and "Contracts / persistence: _None._" |
@@ -45,10 +49,10 @@ Sorted by risk, worst first. |
45 | 49 | | `apps/desktop/src/backend/DesktopBackendConfiguration.ts` | +29 | 5 | **145** | Backend heap headroom (`NODE_OPTIONS`) | |
46 | 50 | | `apps/web/src/components/chat/ComposerPrimaryActions.tsx` | +53/-13 | 2 | **132** | Queue button; extracts upstream's inline stop button | |
47 | 51 | | `apps/desktop/src/backend/DesktopBackendConfiguration.test.ts` | +42 | 3 | **126** | Heap-headroom assertions | |
| 52 | +| `packages/contracts/src/settings.ts` | +7/-2 | 14 | **126** | `notifyOnNeedsInput` (**persisted schema**) + Claude `homePath` placeholder/description | |
48 | 53 | | `packages/shared/src/composerTrigger.test.ts` | +31/-1 | 3 | **96** | `replaceTextRange` newline coverage | |
49 | 54 | | `apps/server/src/sourceControl/SourceControlProviderDiscovery.ts` | +20/-8 | 3 | **84** | Issue #4: CLI probe timeout + spawn-error classification | |
50 | 55 | | `apps/server/src/server.ts` | +3 | 25 | **75** | The intended mount point: one import, one `Layer.provideMerge`, one route entry | |
51 | | -| `packages/contracts/src/settings.ts` | +7/-2 | 14 | **70** | `notifyOnNeedsInput` (**persisted schema**) + Claude `homePath` placeholder/description | |
52 | 56 | | `apps/desktop/src/main.ts` | +4 | 17 | **68** | `ElectronNotification` layer | |
53 | 57 | | `apps/web/src/connection/platform.ts` | +7/-1 | 7 | **56** | Lazy `import()` of outbox cleanup to dodge a module-init cycle | |
54 | 58 | | `apps/web/src/routes/__root.tsx` | +6 | 9 | **54** | Mounts `<NotificationCoordinator>`, `<ThreadOutboxDrain>`, `<PushSubscriptionManager>` | |
@@ -115,11 +119,17 @@ git diff --numstat "$MB"..HEAD | while read -r a d p; do |
115 | 119 | done |
116 | 120 | ``` |
117 | 121 |
|
118 | | -That prints exactly the upstream-owned files the fork edits. Churn for any one of them: |
| 122 | +That prints exactly the upstream-owned files the fork edits. Churn for any one of them — anchored to |
| 123 | +the merge-base date, **not** to today, so the number is reproducible after the fact: |
119 | 124 |
|
120 | 125 | ```bash |
121 | | -git log --oneline --since="60 days ago" "$MB" -- <path> | wc -l |
| 126 | +SINCE=$(git show -s --format=%cI "$MB") |
| 127 | +git log --oneline --since="$SINCE" --until="$SINCE" --before="$SINCE" "$MB" -- <path> | wc -l |
| 128 | +# simpler and equivalent: the 60 days of upstream history ending at the merge-base |
| 129 | +git log --oneline "$MB" --since="$(git show -s --format=%cI "$MB") -60 days" -- <path> | wc -l |
122 | 130 | ``` |
123 | 131 |
|
124 | | -Re-run both after every upstream sync and update this file. If the ledger and this document |
125 | | -disagree, the ledger is right. |
| 132 | +**Re-run both after every upstream sync and update this file — including the merge-base hash in the |
| 133 | +header.** Every churn and risk figure shifts once the newly absorbed commits fall inside the window, |
| 134 | +so a ledger quoting an old merge-base is stale even when its file list is still right. If the |
| 135 | +regenerated ledger and this document disagree, the ledger is right. |
0 commit comments