Skip to content

Run full validation on Ubuntu - #2

Merged
jkomyno merged 5 commits into
mainfrom
fix/build-issues
Mar 18, 2026
Merged

Run full validation on Ubuntu#2
jkomyno merged 5 commits into
mainfrom
fix/build-issues

Conversation

@jkomyno

@jkomyno jkomyno commented Mar 18, 2026

Copy link
Copy Markdown
Contributor

Summary

  • move the full CI and release validation jobs to ubuntu-latest
  • keep a separate macOS smoke job for package shape coverage
  • update the release documentation to match the new workflow layout

Why

The macOS GitHub Actions runner is crashing inside Bun after bun test completes, so the full validation path is more reliable on Ubuntu while retaining macOS smoke coverage.

Verification

  • bun run test:conformance
  • workflow changes only; GitHub Actions will validate the new runner split

@jkomyno
jkomyno merged commit b280a21 into main Mar 18, 2026
2 checks passed
sorenbs added a commit that referenced this pull request Jul 27, 2026
stage instrumentation, campaign teardown guard

Review #2's blocking conditions, each either verified-as-built or fixed:

1. Post-ACK is now proven, not asserted. The barrier was already
   capture-target-before-flush + pump-dispatches-itself (gate-
   serialized), which makes "acks on the wire before gathering" hold
   regardless of who wins the dispatch race. Two scenarios pin it:
   the_gather_window_waits_for_ack_dispatch holds the dispatch gate (the
   deterministic "acker paused after durability") and shows no gather
   decision until the held ack reaches its client;
   commits_during_a_flush_do_not_extend_its_barrier pins the
   no-deadlock capture rule under mid-flight commits.

2. The gather is adaptive. Skip the window when the NEXT generation is
   already big (WAL_GATHER_SKIP_REQS=32 / WAL_GATHER_SKIP_BYTES=1MiB;
   0 = never) — the window exists for a small next generation; at
   drift+saturation it is a pure tax (the CDG top-tier question).
   Finding from building the scenario: a synchronized herd at
   saturation produces NO drift, so the drift key already suppresses
   the window there; busy-skip matters exactly when drift and volume
   coincide, which the test constructs deterministically via the gate
   hold. Also fixed en route: the DST engine harness now mirrors
   production's flush-timer stretch when the pump is on — its 5 ms
   internal timer was flushing mid-PUT commits itself and silently
   neutering every busy-generation scenario.

3. Telemetry: pump {gathers_applied, gathers_skipped_busy,
   gathered_reqs, flushed_reqs/records/bytes (requests-per-WAL),
   ack_to_enqueue_sum_us/count}; ring {resident_bytes, peak_bytes}.

4. The benchmark consumer got the split cursors the review required:
   committed (advances only after a body fully decodes) vs one
   speculative lookahead. A body that dies mid-stream drains and
   DISCARDS the speculative response and re-polls from committed —
   accepting it would silently skip the failed response's records, an
   integrity bug no HTTP status surfaces. A raw-TCP fault server test
   scripts exactly that (truncated Content-Length + close, plus a
   canary record in the speculative response that must never be
   decoded) and asserts every record exactly once and the committed
   offset re-polled. recordsDecoded/bodyFailures now in the jsonl.

5. Ring ordering pinned at the reviewer's stricter boundary:
   publish-before-NOTIFY (a woken waiter's FIRST ring_read must hit),
   mid-batch reads, a producer-duplicate publishes nothing, and
   budget-1 oversized-record progress on ring and DB paths alike. The
   ring already stored encrypted wire frames and already had the
   engine-global budget + publish-order FIFO eviction the review asked
   for; resident/peak gauges added.

6. Live-read stage instrumentation (STREAMS_DEBUG_TIMING=1, bench
   only): woken long-poll responses carry Streams-Debug-Wait
   {waited, arm_us, read_us}; the consumer records both windows and the
   soak harvest carries their p50s — the classification data for the
   remaining roundtrip-minus-append interval (one WAL-ish, cause
   unproven).

7. Campaign hygiene (the destroyed-specimen lesson, review's exact
   design): deploys require SOAK_RUN_ID and stamp proj files; teardown
   refuses stamp mismatches and anything in preserve.txt.

docs/reviews/2026-07-27-perf-diff.patch carries the exact
9449597^..be2ed44 diff the reviewer requested for line-level sign-off.

90 tests green (89 + the awsbench integrity test).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant