Three occurrences in two days, distinct PRs, same test family:
Seen on PR #1461 (run 33689988840) and twice on PR #1462 (runs 33683325163-family and 33717306176). In every case the full suite passes locally on the same commits (58/58 in the file), and a plain rerun goes green. Neither PR touches the annotate server.
These tests boot a real server against a temp PLANNOTATOR_DATA_DIR and exercise filesystem ordering (write record, then delete draft; chmod-unwritable directories). Suspect timing or permission semantics on the shared runners (chmod on hosted runners, write visibility ordering under load).
Fix shapes to evaluate: make the unwritable-directory setup assert its own precondition and skip honestly when chmod does not stick on the runner filesystem; widen the record-then-draft ordering assertions to poll briefly instead of asserting immediately after the response; or serialize this describe block if cross-test contention on the temp dir is the trigger.
Also worth recording: the agent-terminal sidecar test (packages/server/agent-terminal.test.ts, "node sidecar rebuilds spawn options") flaked the same way on the #1458 integration run. Different family, same pattern: server tests doing real fs/process work on shared runners.
Three occurrences in two days, distinct PRs, same test family:
Seen on PR #1461 (run 33689988840) and twice on PR #1462 (runs 33683325163-family and 33717306176). In every case the full suite passes locally on the same commits (58/58 in the file), and a plain rerun goes green. Neither PR touches the annotate server.
These tests boot a real server against a temp PLANNOTATOR_DATA_DIR and exercise filesystem ordering (write record, then delete draft; chmod-unwritable directories). Suspect timing or permission semantics on the shared runners (chmod on hosted runners, write visibility ordering under load).
Fix shapes to evaluate: make the unwritable-directory setup assert its own precondition and skip honestly when chmod does not stick on the runner filesystem; widen the record-then-draft ordering assertions to poll briefly instead of asserting immediately after the response; or serialize this describe block if cross-test contention on the temp dir is the trigger.
Also worth recording: the agent-terminal sidecar test (packages/server/agent-terminal.test.ts, "node sidecar rebuilds spawn options") flaked the same way on the #1458 integration run. Different family, same pattern: server tests doing real fs/process work on shared runners.