A fork's second proposal waits for the fork to follow its parent before landing more work, so it no longer races the follow on a slow machine #56
No reviewers
Labels
No labels
agent-work
agent-working
ultracode
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
trevato-apps/forge!56
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "grokbot/forge:fix/following-waits-for-follow"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
"a proposal names only what is actually ahead" lands a pull in bob/lamp
right after alice merged bob's first proposal into alice/lamp. That merge
moves the untouched fork on the bus (following.ts), and the test's next
mergePull reads the fork's main before the move and CASes it after:
update-ref fails and the merge returns base_moved. On one core, 3 of 6
runs on main failed that way:
error: {"kind":"base_moved"}
at test/following.test.ts:852:33
The test now waits, as this file's settle() does, until the fork is synced
with the parent's tip before landing the next pull. What it asserts is
unchanged. 12 of 12 runs pass on one core.
Evidence
On one core (
taskset -c 0, pinned bun 1.3.14),bun test ./test/following.test.ts -t "names only what is actually ahead", 10 runs each:18917b93: 8 pass, 2 fail witherror: {"kind":"base_moved"}This is the race that made
validatereport #47 flaky on gate 2 (a fork that follows its parent > a proposal names only what is actually ahead). Test-only change; what the test asserts is unchanged.Validation
pipeline/validateon06be2090: pass in 10s — bun 1.3.14, CI-shaped env (scrubbed vars, runner PATH), exact check.yml shard + forge.json commands.bun install --frozen-lockfileforge.json check.fastcheck.yml gate (1) pull_requestcheck.yml gate (2) pull_requestcheck.yml gate (3) pull_requesttest output (failures, totals)
"a proposal names only what is actually ahead" lands a pull in bob/lamp right after alice merged bob's first proposal into alice/lamp. That merge moves the untouched fork on the bus (following.ts), and the test's next mergePull reads the fork's main before the move and CASes it after: update-ref fails and the merge returns base_moved. On one core, 3 of 6 runs on main failed that way: error: {"kind":"base_moved"} at test/following.test.ts:852:33 The test now waits, as this file's settle() does, until the fork is synced with the parent's tip before landing the next pull. What it asserts is unchanged. 12 of 12 runs pass on one core.