Skip to content

Commit a801d0b

Browse files
add blockers log
1 parent 3bcc767 commit a801d0b

4 files changed

Lines changed: 50 additions & 4 deletions

File tree

‎AGENTS.md‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@ change. Never regenerate snapshots to conceal a regression. If correctness is
2828
uncertain, stop.
2929

3030
Before stopping at an incompatible upstream commit, remove that commit from the
31-
sync branch and leave the worktree clean at the last successful commit. Report:
31+
sync branch, append an entry to
32+
[`docs/scip-ruby/SORBET_SYNC_BLOCKERS.md`](docs/scip-ruby/SORBET_SYNC_BLOCKERS.md),
33+
commit that documentation change, and leave the worktree clean. Report:
3234

3335
- the last successfully incorporated upstream SHA
3436
- the incompatible upstream SHA, subject, and GitHub link

‎docs/scip-ruby/CONTRIBUTING.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,8 @@ This will correctly use the `scip-ruby/master` branch as the target.
354354
Follow the [Sorbet synchronization runbook](./SYNCING_SORBET.md). It describes
355355
the commit-by-commit process, validation, progress tracking, and the requirement
356356
to stop before the first upstream commit that needs an indexer adaptation.
357+
Each such stop is recorded in the
358+
[Sorbet synchronization blocker log](./SORBET_SYNC_BLOCKERS.md).
357359

358360
Do not modify existing commits or rewrite the history of `scip-ruby/master`.
359361
Once a completed sync is passing, temporarily turn on "Allow merge commits" in
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Sorbet synchronization blockers
2+
3+
This log records each Sorbet commit that stopped the upstream synchronization
4+
process because scip-ruby required an indexer adaptation. It preserves the
5+
reason for each stop, the proposed work, and the eventual resolution.
6+
7+
Add entries chronologically. Use one entry per blocking upstream commit. If a
8+
later sync attempt encounters the same commit, update its existing entry rather
9+
than creating a duplicate. When the adaptation lands, change its status to
10+
`Resolved` and link the resolving pull request or commit.
11+
12+
<!--
13+
Copy this template when the synchronization process stops:
14+
15+
## YYYY-MM-DD — Sorbet `<short SHA>`: <commit subject>
16+
17+
- **Status:** Blocked
18+
- **Last incorporated Sorbet commit:** `<SHA>`
19+
- **Blocking Sorbet commit:** [`<SHA>`](https://github.com/sorbet/sorbet/commit/<SHA>)
20+
- **Upstream change:** <Describe the changed API or representation.>
21+
- **Indexer impact:** <Explain why the current indexer cannot compile or produce
22+
correct SCIP output. Name affected scip-ruby files and symbols.>
23+
- **Evidence:** <Include concise compiler errors, test failures, or code
24+
evidence.>
25+
- **Required adaptation:** <Describe the concrete proposed implementation.>
26+
- **Tests:** <Describe tests to add or update.>
27+
- **Open questions:** None, or list unresolved design decisions.
28+
- **Resolution:** Pending
29+
-->
30+
31+
No blockers have been recorded yet.

‎docs/scip-ruby/SYNCING_SORBET.md‎

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ each newly incorporated Sorbet mainline commit. A run has two valid outcomes:
1313
1. It reaches the fixed target SHA, passes final validation, and updates
1414
`scip_ruby_sync_upstream_sorbet_sha`.
1515
2. It stops immediately before the first commit that requires an indexer
16-
change, leaving a clean branch and a precise adaptation report.
16+
change, records the blocker in
17+
[`SORBET_SYNC_BLOCKERS.md`](./SORBET_SYNC_BLOCKERS.md), and leaves a clean
18+
branch with a precise adaptation report.
1719

1820
Never implement the required indexer adaptation as part of the discovery run.
1921
After that adaptation has been reviewed and implemented separately, start or
@@ -187,8 +189,13 @@ At the first commit requiring an indexer change:
187189
git reset --hard "$LAST_SAFE_SHA"
188190
```
189191

190-
5. Confirm there is no active cherry-pick and `git status --short` is empty.
191-
6. Record the incompatible SHA as the next unprocessed commit in the local state
192+
5. Append a complete entry to `docs/scip-ruby/SORBET_SYNC_BLOCKERS.md` using its
193+
template. If that upstream SHA already has an entry, update it instead of
194+
adding a duplicate.
195+
6. Commit only the blocker-log change with a message such as
196+
`docs: record Sorbet sync blocker <short SHA>`.
197+
7. Confirm there is no active cherry-pick and `git status --short` is empty.
198+
8. Record the incompatible SHA as the next unprocessed commit in the local state
192199
file.
193200

194201
The blocker report must include:
@@ -204,10 +211,14 @@ The blocker report must include:
204211
- unresolved design choices or uncertainty
205212
- confirmation that the incompatible commit is not on the branch and the
206213
worktree is clean
214+
- the blocker-log entry and its commit
207215

208216
Report only the first incompatible commit. Later commits may depend on a design
209217
decision made while adapting to this one.
210218

219+
When the indexer adaptation is later implemented, update the corresponding log
220+
entry to `Resolved` and link its pull request or commit in the resolution field.
221+
211222
## Finish a completed sync
212223

213224
After every worklist commit through `TARGET_SHA` has passed:

0 commit comments

Comments
 (0)