The crew reads two words written in one millisecond in the order they were written #65

Merged
grokbot merged 1 commit from grokbot/forge:fix/crew-parks-tie into main 2026-10-18 20:44:40 +00:00
Owner

Which word on an issue is newest decided a park's strike, the planner's
list, an already-done note and the planner's split, and each compared
created_at alone. That is milliseconds: a park and a done note, a
person's word and a park, or an issue and the one split from it,
written in the same millisecond, tied, and the newer one read as not
newer. So a done issue stayed on the planner's list, a park after a
done note did not undo it, a person's word hid the parks after it, and
the planner was refused a split into an issue it had just opened. On a
fast runner that is chance: crew-parks failed this way on main
(the planner re-planning…, parked twice and then found done).

Each comparison now orders by (created_at, id). id() is monotonic, so
within a millisecond the id says which came first, the same order every
listing here already sorts by. handedOverAt becomes handedOver, the
newest park's time and id, so a split is checked against both. An issue
opened before, in the same millisecond, still cannot stand in.

Validation

pipeline/validate on 6c30ec09: baseline in 672s — bun 1.3.14, CI-shaped env (scrubbed vars, runner PATH), exact check.yml shard + forge.json commands.

step result time
bun install --frozen-lockfile ok (exit 0) 0s
forge.json check.fast BASELINE (exit 1) 190s
check.yml gate (1) pull_request BASELINE (exit 1) 15s
check.yml gate (2) pull_request ok (exit 0) 272s
check.yml gate (3) pull_request ok (exit 0) 195s
  • ⚠️ node v20.19.2 here, v22 on CI (tsc runs under node)
  • ⚠️ check.yml gate (1) pull_request stopped early at a BASELINE failure (fail-fast): its later files were not run in this step
test output (failures, totals)
▶ bun install --frozen-lockfile
  ok  exit 0  0s
▶ forge.json check.fast
(fail) egress, reported: an undeclared public host goes through and is counted; a private one never does > an undeclared public host is let through and counted [1.16ms] [shard 10]
Ran 3755 tests across 371 files in 150.9s; 1 failed.
classify: reran test/contain.test.ts test/crew-early.test.ts test/usage-report.test.ts  alone on origin/main dea83e0f and on this branch
  BASELINE  exit 1  190s
▶ check.yml gate (1) pull_request
(fail) egress, reported: an undeclared public host goes through and is counted; a private one never does > an undeclared public host is let through and counted [2.63ms] [shard 3]
Ran 113 tests across 3 files in 14.6s; 1 failed.
classify: reran test/contain.test.ts  alone on origin/main dea83e0f and on this branch
  BASELINE  exit 1  15s
▶ check.yml gate (2) pull_request
Ran 1406 tests across 136 files in 271.6s (136 shards).
  ok  exit 0  272s
▶ check.yml gate (3) pull_request
Ran 1441 tests across 136 files in 194.5s (136 shards).
  ok  exit 0  195s
Which word on an issue is newest decided a park's strike, the planner's list, an already-done note and the planner's split, and each compared `created_at` alone. That is milliseconds: a park and a done note, a person's word and a park, or an issue and the one split from it, written in the same millisecond, tied, and the newer one read as not newer. So a done issue stayed on the planner's list, a park after a done note did not undo it, a person's word hid the parks after it, and the planner was refused a split into an issue it had just opened. On a fast runner that is chance: crew-parks failed this way on main (`the planner re-planning…`, `parked twice and then found done`). Each comparison now orders by (created_at, id). `id()` is monotonic, so within a millisecond the id says which came first, the same order every listing here already sorts by. `handedOverAt` becomes `handedOver`, the newest park's time and id, so a split is checked against both. An issue opened before, in the same millisecond, still cannot stand in. <!-- pipeline:validation --> ### Validation `pipeline/validate` on `6c30ec09`: **baseline** in 672s — bun 1.3.14, CI-shaped env (scrubbed vars, runner PATH), exact check.yml shard + forge.json commands. | step | result | time | |---|---|---| | `bun install --frozen-lockfile` | ok (exit 0) | 0s | | `forge.json check.fast` | BASELINE (exit 1) | 190s | | `check.yml gate (1) pull_request` | BASELINE (exit 1) | 15s | | `check.yml gate (2) pull_request` | ok (exit 0) | 272s | | `check.yml gate (3) pull_request` | ok (exit 0) | 195s | - ⚠️ node v20.19.2 here, v22 on CI (tsc runs under node) - ⚠️ check.yml gate (1) pull_request stopped early at a BASELINE failure (fail-fast): its later files were not run in this step <details><summary>test output (failures, totals)</summary> ``` ▶ bun install --frozen-lockfile ok exit 0 0s ▶ forge.json check.fast (fail) egress, reported: an undeclared public host goes through and is counted; a private one never does > an undeclared public host is let through and counted [1.16ms] [shard 10] Ran 3755 tests across 371 files in 150.9s; 1 failed. classify: reran test/contain.test.ts test/crew-early.test.ts test/usage-report.test.ts alone on origin/main dea83e0f and on this branch BASELINE exit 1 190s ▶ check.yml gate (1) pull_request (fail) egress, reported: an undeclared public host goes through and is counted; a private one never does > an undeclared public host is let through and counted [2.63ms] [shard 3] Ran 113 tests across 3 files in 14.6s; 1 failed. classify: reran test/contain.test.ts alone on origin/main dea83e0f and on this branch BASELINE exit 1 15s ▶ check.yml gate (2) pull_request Ran 1406 tests across 136 files in 271.6s (136 shards). ok exit 0 272s ▶ check.yml gate (3) pull_request Ran 1441 tests across 136 files in 194.5s (136 shards). ok exit 0 195s ``` </details>
The crew reads two words written in one millisecond in the order they were written
All checks were successful
check / gate (3) (pull_request) Successful in 4m3s
check / gate (1) (pull_request) Successful in 11m9s
check / gate (2) (pull_request) Successful in 18m9s
check / check (pull_request) Successful in 1s
preview / preview (pull_request) Has been skipped
6c30ec0918
Which word on an issue is newest decided a park's strike, the planner's
list, an already-done note and the planner's split, and each compared
`created_at` alone. That is milliseconds: a park and a done note, a
person's word and a park, or an issue and the one split from it,
written in the same millisecond, tied, and the newer one read as not
newer. So a done issue stayed on the planner's list, a park after a
done note did not undo it, a person's word hid the parks after it, and
the planner was refused a split into an issue it had just opened. On a
fast runner that is chance: crew-parks failed this way on main
(`the planner re-planning…`, `parked twice and then found done`).

Each comparison now orders by (created_at, id). `id()` is monotonic, so
within a millisecond the id says which came first, the same order every
listing here already sorts by. `handedOverAt` becomes `handedOver`, the
newest park's time and id, so a split is checked against both. An issue
opened before, in the same millisecond, still cannot stand in.
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
trevato-apps/forge!65
No description provided.