Skip to content

Instantly share code, notes, and snippets.

@VladimirMakaev
Last active November 1, 2026 20:00
Show Gist options
  • Select an option

  • Save VladimirMakaev/f9a5fd13c2cc1a31c2ca6992ce5774cb to your computer and use it in GitHub Desktop.

Select an option

Save VladimirMakaev/f9a5fd13c2cc1a31c2ca6992ce5774cb to your computer and use it in GitHub Desktop.
train22 landing trains manifest (rrnewton/hermit, rrnewton/reverie)

train22 landing trains

Built on rrnewton/hermit main cd9e333e8429 and rrnewton/reverie main 9443a6b28257. Branches (no PRs): VladimirMakaev/hermit and VladimirMakaev/reverie train22/<N>-<slug>. Each cluster is one linear branch on the previous one's tip; each PR's own commits are cherry-picked with their messages, authors and author dates unchanged, and every collision is resolved by a separate Train N: resolve ... commit right after the PR that meets it. Where a cherry-pick met a conflict the resolvers could not merge line by line, the PR commit takes the PR's side of that hunk (or the train's, where the PR's side was already in the train) and the resolution commit after it restores the other side. Two kinds of hunk are merged inside the pick because they need no judgment: version and test-count pins (arithmetic), and comment-only hunks where one side only appends sentences (the other side's text, then the appended sentences, rewrapped).

Train 1: train22/1-reverie-pin at 3a720d6d23ca

Reverie base and newer heads: this train's Reverie branch is built on Reverie 9443a6b28257, main's pin when the trains were built. Main has since moved its Reverie pin twice, to bca539918 (c67101103) and then to 1c22faddc (4f409f883), so this train's Reverie head does not descend from main's current pin. For a landing on current main, the pull requests now carry restacked heads (pushed 2026-11-01): reverie#1153 e1b54ae6eb90 (was a09bc2932007) on Reverie main 1c22faddc, and on Hermit main d192e5d72 #4769 1d74a108c3e9 (re-pinned to e1b54ae6e) and #4845 bcbc98a5d8eb. #4769's CARRY TO block reads "e1b54ae6e from bca539918" beneath main's own. On a main past 4f409f883, which pins 1c22faddc, #4769's pin commit conflicts with main's CARRY TO 1c22faddc block: keep main's, and #4769's becomes "from 1c22faddc" with only #1153's two commits. Rebuild the train only if the lander asks.

Review: complete (no resolution commit over 50 non-pin lines).

Reverie branch train22/1-reverie-pin at a09bc2932007 (on 9443a6b28257):

  • reverie#1153 head a09bc2932007 -> a09bc2932007 Fail closed when an instruction offset cannot be placed

Pin the landing needs: land the Reverie branch's commits on rrnewton/reverie main first (each PR's own commits and the resolution commits, in this order), then move Hermit's Reverie pin to the landed Reverie SHA in place of the train's pin a09bc2932007 (every site the pin commit touches, with a CARRY TO block from main's pin).

Hermit, on cd9e333e8429:

  • #4769 head 522920468a70 -> 522920468a70 Let chaos preempt inside straight-line code with --chaos-instruction-offset
  • #4845 head 3a720d6d23ca -> 3a720d6d23ca Carry --chaos-instruction-offset decisions through schedule traces, schedule replay and analyze

Gates on the AMD EPYC VM (ptrace backend, default log level, no relaxations; this host's PMU check refuses --strict):

  • cargo fmt --all -- --check: clean (1078 files)
  • heads: every pull request at its live GitHub head (2 pull requests, 0 stale)
  • pincheck (cargo nextest list over each counted node's exact selection against its pin): passed, pins: 13 nodes checked, 0 mismatches, 7 base-caused (the base's own stale pins)
  • main's stale pins: 7, base-caused (the base lists that many more than it pins, and the train adds nothing to them): test.cli, test.cli_on_host, test.detcore_unit, test.detcore_unit_on_host, test.hermit_unit, test.hermit_unit_on_host, test.record_replay
  • ci/sync-cell-config.sh --check: current
  • cargo clippy --workspace --all-targets -- -D warnings: clean
  • cargo nextest run -p hermit-detcore --lib: 3351 tests run: 3351 passed, 0 skipped; RPC digest test the_global_rpc_revision_matches_its_definitions: PASS
  • cargo nextest run -p detcore-model -p hermit-run --lib --bins: 1485 tests run: 1460 passed, 25 failed, 1 skipped
    • analyze::rundata::tests::strict_trials_refuse_an_inexact_branch_counter: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • analyze::rundata::tests::trial_preemption_keeps_the_explicit_maximum_request: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • analyze::rundata::tests::trials_without_strict_warn_once_of_an_inexact_branch_counter: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • config::tests::a_legacy_positional_array_reads_as_the_object_it_lists: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • config::tests::backend_config_json_preserves_every_backend_and_representable_bytes: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • config::tests::legacy_backend_json_round_trips_every_backend_capabilities_constant: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • preemption_admission::tests::an_annotated_priority_history_replays_only_with_precise_rcb_timers: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • preemption_admission::tests::explicit_active_maximum_is_refused_without_normalizing_the_request: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • preemption_admission::tests::explicit_timer_controls_still_refuse_after_disabling_the_maximum: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_copy_failure_retires_initialized_sibling_and_timer: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_copy_failure_with_trace_diagnostics: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_live_copy_preserves_sibling_and_timer_success: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_readv_import_failure_retires_initialized_sibling_and_timer: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_readv_live_import_preserves_sibling_and_timer_success: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::a_run_draw_picks_the_maximum_and_a_replay_takes_the_recorded_one: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::a_small_max_timeslice_gets_a_notice: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::only_instrumented_ptrace_family_runs_depend_on_host_perf: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::preemption_tests::chaos_seeded_timeslice_needs_a_pmu_timer: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::preemption_tests::explicit_maximum_is_refused_even_when_equal_to_the_parser_default: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::skid_margin_override_rejects_non_ptrace_backed_backends: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::strict_refusal_needs_strict_a_pmu_backend_and_an_inexact_counter: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • tests::backend_capabilities_match_the_golden_table: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • tests::backend_timer_delivery_is_explicit: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • tests::detcore_drives_kvm_guest_for_synthetic_syscall: pre-existing: fails at main cd9e333e8 on this host (known-kvm-guest-clock; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • tests::kvm_runs_dynamic_echo_through_detcore: pre-existing: fails at main cd9e333e8 on this host (known-kvm-guest-clock; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
  • lit suite (cargo build -p hermit-lit-guests --bins, cargo nextest run -p hermit-run --test lit): 97 tests run: 95 passed, 1 failed, 1 timed out, 2 skipped
    • lit_scheduler_strategies_chaos_verify: pre-existing (main): times out at 57 s at main cd9e333e8 on this host too; in main's own lit run (baseline.sh, 2026-11-01)
    • lit_timerfd_virtual_time_hermit_run_strict: pre-existing (main): fails identically at main cd9e333e8 on this host (strict refused by this host's PMU check); in main's own lit run (baseline.sh, 2026-11-01)
  • failing tests by name against main cd9e333e8's own runs of these three steps: failing 27: 27 in the named baseline, 0 NEW; 0 baseline tests passed here
  • code the train removes from its base that no pull request removes (dropcheck): 0 unexplained drops
  • cargo test -p reverie-liteinst-artifact (source catalog): 217 passed; 0 failed
  • Reverie cargo clippy --workspace --all-targets -- -D warnings: fails, pre-existing (main): Reverie main 9443a6b28 fails cargo clippy --workspace --all-targets -- -D warnings the same way (reverie-liteinst unused imports in its strace and native_unpublished test targets; reverie-dbt's lib test) (reverie-ptrace unit tests not reached)
  • integration tests named in the PRs' Validation sections: 6 pass here; 8 STRICT, 1 TIMEOUT
    • a_bounded_chaos_schedule_replays_as_recorded: strict here; bare-metal Intel host: PASS (7.1s)
    • a_chaos_instruction_offset_run_verifies_and_replays_at_its_offsets: strict here; bare-metal Intel host: PASS (4.4s)
    • a_killed_vfork_parent_does_not_stop_the_schedule: strict here; bare-metal Intel host: PASS (0.3s)
    • a_schedule_recorded_with_the_pipe_wake_latency_replays_only_with_it: strict here; bare-metal Intel host: PASS (6.9s)
    • an_instruction_offset_record_replays_from_its_schedule_and_analyze_verifies_its_endpoints: strict here; bare-metal Intel host: PASS (28.7s)
    • chaos_bounds_how_long_a_spinner_keeps_a_new_thread_waiting: strict here; bare-metal Intel host: PASS (3.7s)
    • chaos_instruction_offset_splits_a_branch_free_window: strict here; bare-metal Intel host: PASS (6.3s)
    • posix_timer_rows_verify_under_random_and_chaos_schedules: strict here; bare-metal Intel host: PASS (14.5s)
    • run_chaos_preemption_replay_reuses_the_recorded_epoch: timeout here; bare-metal Intel host: PASS (1.7s)

Train 2: train22/2-aarch64 at 649c1b56f50c

Reverie base and newer heads: this train's Reverie branch is built on train 1's (Reverie 9443a6b28257, main's pin when the trains were built). Main has since moved its Reverie pin to bca539918 (c67101103) and then to 1c22faddc (4f409f883), so this train's Reverie head does not descend from main's current pin. For a landing on current main, reverie#1137 now carries a restacked head (pushed 2026-11-01): 52449e346e3b (was a8f2fd5fa418) on Reverie main 1c22faddc; it and reverie#1153's e1b54ae6e both merge cleanly into Reverie main 19c014c65. Rebuild the train only if the lander asks.

Review: complete (every resolution commit over the threshold approved by both seats: 96f70bf14 239 lines).

Reverie branch train22/2-aarch64 at a6f6508abab4 (on a09bc2932007):

  • reverie#1137 head a8f2fd5fa418 -> 9331aabf6942 Take the aarch64 skid margin from each core's MIDR_EL1
    • resolution eb0400b1a89b: Train 2: resolve the reverie/src/pmu_config.rs catalog row between #1153 and #1137
  • reverie#1141 head 418becc511e7 -> 70172a0eb5ee Give aarch64 its own skid latency budget for staged timer events
    • resolution 18a452a605c7: Train 2: resolve the reverie/src/pmu_config.rs catalog row between #1137 and #1141
  • reverie#1145 head ff765efa7eaf -> b72d97cdfb38 Step toward a precise timer target branch to branch on aarch64
  • reverie#1157 head c4fc7202f462 -> efb1e9988c39 Run a load-exclusive sequence as one unit on the way to a precise timer target on aarch64
  • reverie#1149 head bc2cebde5c30 -> 4a3877367807 Keep a guest's SIGTRAP state across single steps on aarch64
  • reverie#1150 head 8d4b7d7055fb -> bb34c6ed0bba Repair SIGTRAP's action through an unsealed page where mseal is missing
  • reverie#1156 head 001571ae56e7 -> 6fc4a5e9bfaa Read SIGTRAP's state only where a step can reset it
  • reverie#1158 head 47c95ff5b98a -> 21eee84b4856 Read the guest's mask once per timer sequence
  • reverie#1167 head 53a37a3bd709 -> ec94e5298c9e Requeue a signal the kernel takes ahead of a timer step's report
  • reverie#1168 head aa943c4d5255 -> 7a55dd3155df Take a maskless poll's step as a call that keeps the mask
  • reverie#1172 head 0dd3006af7b9 -> f50ace2600e0 Keep a guest's pending, blocked SIGTRAP across Reverie's single-steps
    • resolution a6f6508abab4: Train 2: resolve the timer's module doc between #1145 and #1172

Pin the landing needs: land the Reverie branch's commits on rrnewton/reverie main first (each PR's own commits and the resolution commits, in this order), then move Hermit's Reverie pin to the landed Reverie SHA in place of the train's pin a6f6508abab4 (every site the pin commit touches, with a CARRY TO block from main's pin).

Hermit, on 3a720d6d23ca:

  • #4735 head 311d35b3303e -> 4e78c93f8662 Rewrite aarch64 load/store-exclusive retry loops to LSE atomics before a run
  • #4795 head aaee5aa1f51d -> edfa08183204 Rewrite aarch64 exclusive loops in the guest's memory when no overlay can carry them
    • resolution 691ba9ab86f8: Train 2: resolve the legacy form's keyless fields between #4769 and #4795
  • #4801 head 8b0d61def929 -> fc8d096aa773 Test aarch64's in-memory exclusive-loop rewrite end to end
    • resolution e88e520be187: Train 2: resolve the Reverie pin of #4801's new manifest lines
  • #4879 head f2a8c2a60ae8 -> 87568cc35c3f Rewrite Rust std's flag-setting and retry-elsewhere exclusive loops
  • #4884 head 2229b988b797 -> fbc2f2dad48f Name the store-exclusive retries behind a --verify divergence on aarch64
    • resolution 112e9813069f: Train 2: resolve the legacy form's keyless fields between #4795 and #4884
  • #4907 head 706c57a76659 -> df0a61bdaccf Say how much of a run the store-exclusive counts cover, and which files the overlay rewrite left
    • resolution 86d98021bb47: Train 2: resolve the legacy form's keyless fields between #4884 and #4907
  • #4909 head cb3898b7711e -> 1f2f432f13de Tell aarch64 code from data before counting or rewriting exclusive loops
    • resolution fd5194995d14: Train 2: resolve global RPC revision 21 between #main and #4909
    • resolution fc7216bd68cf: Train 2: resolve the shared aarch64 test image between #4801 and #4909
    • resolution 7d2f89a14a44: Train 2: regenerate ci/dag/validate.json from the merged validation DAG
    • pin 649c1b56f50c: Train 2: pin Reverie to the train's Reverie branch at a6f6508ab (Reverie a09bc2932 -> a6f6508ab)

Gates on the AMD EPYC VM (ptrace backend, default log level, no relaxations; this host's PMU check refuses --strict):

  • cargo fmt --all -- --check: clean (1089 files)
  • heads: every pull request at its live GitHub head (7 pull requests, 0 stale)
  • pincheck (cargo nextest list over each counted node's exact selection against its pin): passed, pins: 13 nodes checked, 0 mismatches, 7 base-caused (the base's own stale pins)
  • main's stale pins: 7, base-caused (the base lists that many more than it pins, and the train adds nothing to them): test.cli, test.cli_on_host, test.detcore_unit, test.detcore_unit_on_host, test.hermit_unit, test.hermit_unit_on_host, test.record_replay
  • ci/sync-cell-config.sh --check: current
  • cargo clippy --workspace --all-targets -- -D warnings: clean
  • cargo nextest run -p hermit-detcore --lib: 3407 tests run: 3407 passed, 0 skipped; RPC digest test the_global_rpc_revision_matches_its_definitions: PASS
  • cargo nextest run -p detcore-model -p hermit-run --lib --bins: 1497 tests run: 1472 passed, 25 failed, 1 skipped
    • analyze::rundata::tests::strict_trials_refuse_an_inexact_branch_counter: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • analyze::rundata::tests::trial_preemption_keeps_the_explicit_maximum_request: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • analyze::rundata::tests::trials_without_strict_warn_once_of_an_inexact_branch_counter: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • config::tests::a_legacy_positional_array_reads_as_the_object_it_lists: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • config::tests::backend_config_json_preserves_every_backend_and_representable_bytes: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • config::tests::legacy_backend_json_round_trips_every_backend_capabilities_constant: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • preemption_admission::tests::an_annotated_priority_history_replays_only_with_precise_rcb_timers: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • preemption_admission::tests::explicit_active_maximum_is_refused_without_normalizing_the_request: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • preemption_admission::tests::explicit_timer_controls_still_refuse_after_disabling_the_maximum: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_copy_failure_retires_initialized_sibling_and_timer: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_copy_failure_with_trace_diagnostics: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_live_copy_preserves_sibling_and_timer_success: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_readv_import_failure_retires_initialized_sibling_and_timer: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_readv_live_import_preserves_sibling_and_timer_success: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::a_run_draw_picks_the_maximum_and_a_replay_takes_the_recorded_one: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::a_small_max_timeslice_gets_a_notice: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::only_instrumented_ptrace_family_runs_depend_on_host_perf: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::preemption_tests::chaos_seeded_timeslice_needs_a_pmu_timer: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::preemption_tests::explicit_maximum_is_refused_even_when_equal_to_the_parser_default: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::skid_margin_override_rejects_non_ptrace_backed_backends: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::strict_refusal_needs_strict_a_pmu_backend_and_an_inexact_counter: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • tests::backend_capabilities_match_the_golden_table: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • tests::backend_timer_delivery_is_explicit: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • tests::detcore_drives_kvm_guest_for_synthetic_syscall: pre-existing: fails at main cd9e333e8 on this host (known-kvm-guest-clock; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • tests::kvm_runs_dynamic_echo_through_detcore: pre-existing: fails at main cd9e333e8 on this host (known-kvm-guest-clock; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
  • lit suite (cargo build -p hermit-lit-guests --bins, cargo nextest run -p hermit-run --test lit): 97 tests run: 94 passed, 2 failed, 1 timed out, 2 skipped
    • lit_scheduler_strategies_chaos_verify: pre-existing (main): times out at 57 s at main cd9e333e8 on this host too; in main's own lit run (baseline.sh, 2026-11-01)
    • lit_scheduler_strategies_strict_verify: host flake (c2 649c1b56f, 2026-11-01): --verify's two runs read different fstat bytes for /etc/ld.so.cache (syscall #265, same fd and size), so the host file changed between the runs; Hermit does not make a changing filesystem deterministic. Passed at c1 3a720d6d2 and at the previous c2. The host rewrites /etc/ld.so.cache often (its mtime read 07:47:22 UTC during the check at 07:47:43). Rerun alone at c2 649c1b56f: 3/3 PASS (36.3s, 36.2s, 39.0s).
    • lit_timerfd_virtual_time_hermit_run_strict: pre-existing (main): fails identically at main cd9e333e8 on this host (strict refused by this host's PMU check); in main's own lit run (baseline.sh, 2026-11-01)
  • failing tests by name against main cd9e333e8's own runs of these three steps: failing 28: 27 in the named baseline, 1 NEW; 0 baseline tests passed here
    • NEW lit_scheduler_strategies_strict_verify: host flake (c2 649c1b56f, 2026-11-01): --verify's two runs read different fstat bytes for /etc/ld.so.cache (syscall #265, same fd and size), so the host file changed between the runs; Hermit does not make a changing filesystem deterministic. Passed at c1 3a720d6d2 and at the previous c2. The host rewrites /etc/ld.so.cache often (its mtime read 07:47:22 UTC during the check at 07:47:43). Rerun alone at c2 649c1b56f: 3/3 PASS (36.3s, 36.2s, 39.0s).
  • code the train removes from its base that no pull request removes (dropcheck): 0 unexplained drops
  • cargo test -p reverie-liteinst-artifact (source catalog): 217 passed; 0 failed
  • Reverie cargo clippy --workspace --all-targets -- -D warnings: fails, pre-existing (main): Reverie main 9443a6b28 fails cargo clippy --workspace --all-targets -- -D warnings the same way (reverie-liteinst unused imports in its strace and native_unpublished test targets; reverie-dbt's lib test) (reverie-ptrace unit tests not reached)
  • integration tests named in the PRs' Validation sections: 4 pass here; all 4 also pass on the bare-metal Intel host

Train 3: train22/3-binder at e0d3385a4fcd

Review: complete (every resolution commit over the threshold approved by both seats: 34488052e 443 lines).

Hermit, on 649c1b56f50c:

  • #4742 head 0697c4cec85c -> 27887a1c1e81 Run a binder call that waits for another process on the background path, so the guest keeps running
  • #4751 head ee7879de230c -> bb8c85d0a62c Store where each backgrounded call rejoined in the preemption record, and replay at those turns
  • #4847 head 2965eccc055b -> 9c88ef83326f Begin a backgrounded call where its recording did in a schedule replay
    • resolution 34488052e55f: Train 3: put #4847's background starts at record format 5, above #4845's offsets at 4
  • #4761 head fcf4c4f8d0ee -> 45d5096d8968 Under --strict, refuse binder in a fresh run and name the replay route
    • resolution 20df651025ca: Train 3: resolve the legacy form's keyless fields between #4907 and #4761
  • #4878 head 8ac46d55d8da -> 368004075e3c Name where in the record every summarized schedule-replay desync lies
    • resolution e0d3385a4fcd: Train 3: count train 3's format-ladder units in the detcore pins

Gates on the AMD EPYC VM (ptrace backend, default log level, no relaxations; this host's PMU check refuses --strict):

  • cargo fmt --all -- --check: clean (1089 files)
  • heads: every pull request at its live GitHub head (5 pull requests, 0 stale)
  • pincheck (cargo nextest list over each counted node's exact selection against its pin): passed, pins: 13 nodes checked, 0 mismatches, 7 base-caused (the base's own stale pins)
  • main's stale pins: 7, base-caused (the base lists that many more than it pins, and the train adds nothing to them): test.cli, test.cli_on_host, test.detcore_unit, test.detcore_unit_on_host, test.hermit_unit, test.hermit_unit_on_host, test.record_replay
  • ci/sync-cell-config.sh --check: current
  • cargo clippy --workspace --all-targets -- -D warnings: clean
  • cargo nextest run -p hermit-detcore --lib: 3462 tests run: 3462 passed, 0 skipped; RPC digest test the_global_rpc_revision_matches_its_definitions: PASS
  • cargo nextest run -p detcore-model -p hermit-run --lib --bins: 1501 tests run: 1476 passed, 25 failed, 1 skipped
    • analyze::rundata::tests::strict_trials_refuse_an_inexact_branch_counter: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • analyze::rundata::tests::trial_preemption_keeps_the_explicit_maximum_request: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • analyze::rundata::tests::trials_without_strict_warn_once_of_an_inexact_branch_counter: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • config::tests::a_legacy_positional_array_reads_as_the_object_it_lists: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • config::tests::backend_config_json_preserves_every_backend_and_representable_bytes: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • config::tests::legacy_backend_json_round_trips_every_backend_capabilities_constant: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • preemption_admission::tests::an_annotated_priority_history_replays_only_with_precise_rcb_timers: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • preemption_admission::tests::explicit_active_maximum_is_refused_without_normalizing_the_request: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • preemption_admission::tests::explicit_timer_controls_still_refuse_after_disabling_the_maximum: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_copy_failure_retires_initialized_sibling_and_timer: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_copy_failure_with_trace_diagnostics: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_live_copy_preserves_sibling_and_timer_success: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_readv_import_failure_retires_initialized_sibling_and_timer: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_readv_live_import_preserves_sibling_and_timer_success: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::a_run_draw_picks_the_maximum_and_a_replay_takes_the_recorded_one: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::a_small_max_timeslice_gets_a_notice: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::only_instrumented_ptrace_family_runs_depend_on_host_perf: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::preemption_tests::chaos_seeded_timeslice_needs_a_pmu_timer: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::preemption_tests::explicit_maximum_is_refused_even_when_equal_to_the_parser_default: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::skid_margin_override_rejects_non_ptrace_backed_backends: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::strict_refusal_needs_strict_a_pmu_backend_and_an_inexact_counter: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • tests::backend_capabilities_match_the_golden_table: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • tests::backend_timer_delivery_is_explicit: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • tests::detcore_drives_kvm_guest_for_synthetic_syscall: pre-existing: fails at main cd9e333e8 on this host (known-kvm-guest-clock; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • tests::kvm_runs_dynamic_echo_through_detcore: pre-existing: fails at main cd9e333e8 on this host (known-kvm-guest-clock; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
  • lit suite (cargo build -p hermit-lit-guests --bins, cargo nextest run -p hermit-run --test lit): 97 tests run: 95 passed, 1 failed, 1 timed out, 2 skipped
    • lit_scheduler_strategies_chaos_verify: pre-existing (main): times out at 57 s at main cd9e333e8 on this host too; in main's own lit run (baseline.sh, 2026-11-01)
    • lit_timerfd_virtual_time_hermit_run_strict: pre-existing (main): fails identically at main cd9e333e8 on this host (strict refused by this host's PMU check); in main's own lit run (baseline.sh, 2026-11-01)
  • failing tests by name against main cd9e333e8's own runs of these three steps: failing 27: 27 in the named baseline, 0 NEW; 0 baseline tests passed here
  • code the train removes from its base that no pull request removes (dropcheck): 0 unexplained drops
  • cargo test -p reverie-liteinst-artifact (source catalog): see train 2 (Reverie unchanged since)
  • integration tests named in the PRs' Validation sections: 6 pass here; 1 STRICT
    • preadv2_and_pwritev2_at_the_current_offset_wait_as_readv_and_writev_do: strict here; bare-metal Intel host: PASS (9.2s)

Train 6: train22/6-scheduler-replay at 9b816ffb6a8c

Review: complete (every resolution commit over the threshold approved by both seats: ddbc0ed25 79 lines, 2e9d8c466 68 lines).

Hermit, on e0d3385a4fcd:

  • #4685 head 3dff8865a75a -> d1c34f7450c7 Print a partial run summary when --timeout stops the run
    • resolution ddbc0ed25fe2: Train 6: name train 3's unconsumed checkpoints and untaken starts only for a run that finished (#4685)
    • resolution b058ae5b09c9: Train 6: give #4685's run-timeout test #4845's offset argument
  • #4750 head 1e80485a90ca -> 94093e7c8af7 Name a replay's standard descriptors whose kind differs from its recording's
  • #4759 head 0200b8d0452b -> 7c3c119210bc Let a schedule replay keep the long slices of a preemption replay's record
  • #4766 head b8e86b110721 -> ec14b3338cce Warn instead of refusing a non-strict run with a skid overshoot
    • resolution 0b5a5679d64e: Train 6: resolve report_rcb_overshoot's call in #4769's kept timer after #4766
  • #4779 head 379c7c42610d -> 8f6badb707e2 Report the aarch64 virtual-counter reads an image can make
    • resolution 2e98558e0528: Train 6: resolve global RPC revision 17 between #4769 and #4779 (no new revision in the train)
  • #4780 head 00c878d75fb0 -> ff56239855da Record each segment's failed store-exclusives as a diagnosis aid
    • resolution 2e9d8c4667ca: Train 6: give SchedEvent #4780's store-exclusive count beside #4845's instruction offset
    • resolution 22fa40c18c6f: Train 6: point #4780's RPC-digest test at the composed SchedEvent Serialize
  • #4802 head 9478b9ba9b06 -> 22fa40c18c6f Let a thread switched away from at a replayed prehook carry out its call first
    • resolution aa06a69039ba: Train 6: resolve global RPC revision 21 between #main and #4802
  • #4867 head 7a98d683a232 -> 1ea5448e3e20 Raise the slice bound after a guest crash, behind --post-crash-timeslice
    • resolution 747eb70276c0: Train 6: resolve the legacy form's keyless fields between #4761 and #4867
    • resolution aedc31b1b1fc: Train 6: resolve global RPC revision 21 between #main and #4867
    • resolution f28085135a53: Train 6: resolve the slice bound between #4759 and #4867 (post-crash bound inside max_slice_length)
  • #4889 head f0a89ea5deb1 -> 31a30322e3bb Fix-forward for #4632 and #4653: interpolation keeps the preemption-charge cap
  • #4902 head cd1b0d698b6c -> ddec8d13f1dd Re-land #4597's preemption-replay half: a recorded check-in slice gets a bound, not an exact stop
    • resolution 1f5bff9e9ac1: Train 6: resolve global RPC revision 23 between #4902 and #4902
  • #4926 head 8c398864bb72 -> b2fa1b6ee3b5 Detcore: bound chaos past the end of a replayed schedule as without one
  • #4739 head 2b76d7f60476 -> db65119c3b97 Detcore records synchronization edges in the access trace
  • #4796 head 0733aed05c15 -> f111fa19d716 Detcore: report accesses to chosen guest bytes with --watch
    • resolution 0852fe4c1d17: Train 6: resolve the legacy form's keyless fields between #4867 and #4796
    • resolution 5175920873fd: Train 6: resolve global RPC revision 21 between #4902 and #4796
  • #4934 head 8072280e0c83 -> 23b79cc3037d Re-land first-pass sleep registration (#4682) with its fixes, after the train-12 revert
    • resolution 6dad1144655a: Train 6: resolve the legacy form's keyless fields between #4796 and #4934
    • resolution 57d69b520504: Train 6: resolve analyze's record-stamping docs between #4795, #4867 and #4934
  • #4654 head 28de69e9ef6f -> 26c8aaeba6bf Spread chaos timed waits with seeded wake times, under --chaos-timed-wait-spread
    • resolution 931e6451ac34: Train 6: resolve the legacy form's keyless fields between #4934 and #4654
  • #4777 head b7e62b80a889 -> 093511de28f0 Classify the options a schedule replay applies past its schedule
  • #4938 head e83ed19c2f10 -> 919a6feff78b Interrupt a nanosleep at a timer's due time and report the time left from there (#4931)
    • resolution 049c243873d7: Train 6: resolve global RPC revision 21 between #4902 and #4938
    • resolution 0b96efdd74d0: Train 6: bring this train's tests to the merged APIs
    • resolution 67e448a2247c: Train 6: set the detcore pins to the tests train 6 lists
    • resolution 9b816ffb6a8c: Train 6: rustfmt what this train's resolutions left unformatted
  • skipped as an identical copy: #4779 commit e379b8da6986 = train commit 9a38f87269e2
  • skipped as an identical copy: #4802 commit 9478b9ba9b06 = train commit c78a0a63b607

Gates on the AMD EPYC VM (ptrace backend, default log level, no relaxations; this host's PMU check refuses --strict):

  • cargo fmt --all -- --check: clean (1098 files)
  • heads: every pull request at its live GitHub head (17 pull requests, 0 stale)
  • pincheck (cargo nextest list over each counted node's exact selection against its pin): passed, pins: 16 nodes checked, 0 mismatches, 7 base-caused (the base's own stale pins)
  • main's stale pins: 7, base-caused (the base lists that many more than it pins, and the train adds nothing to them): test.cli, test.cli_on_host, test.detcore_unit, test.detcore_unit_on_host, test.hermit_unit, test.hermit_unit_on_host, test.record_replay
  • this train's rustfmt commit 9b816ffb6a8c: layout only by fmtproof.py (each file it changes equals its parent once whitespace and rustfmt's trailing commas before a closing bracket are removed)
  • ci/sync-cell-config.sh --check: current
  • cargo clippy --workspace --all-targets -- -D warnings: clean
  • cargo nextest run -p hermit-detcore --lib: 3580 tests run: 3580 passed, 0 skipped; RPC digest test the_global_rpc_revision_matches_its_definitions: PASS
  • cargo nextest run -p detcore-model -p hermit-run --lib --bins: 1537 tests run: 1512 passed, 25 failed, 1 skipped
    • analyze::rundata::tests::strict_trials_refuse_an_inexact_branch_counter: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • analyze::rundata::tests::trial_preemption_keeps_the_explicit_maximum_request: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • analyze::rundata::tests::trials_without_strict_warn_once_of_an_inexact_branch_counter: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • config::tests::a_legacy_positional_array_reads_as_the_object_it_lists: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • config::tests::backend_config_json_preserves_every_backend_and_representable_bytes: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • config::tests::legacy_backend_json_round_trips_every_backend_capabilities_constant: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • preemption_admission::tests::an_annotated_priority_history_replays_only_with_precise_rcb_timers: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • preemption_admission::tests::explicit_active_maximum_is_refused_without_normalizing_the_request: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • preemption_admission::tests::explicit_timer_controls_still_refuse_after_disabling_the_maximum: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_copy_failure_retires_initialized_sibling_and_timer: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_copy_failure_with_trace_diagnostics: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_live_copy_preserves_sibling_and_timer_success: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_readv_import_failure_retires_initialized_sibling_and_timer: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_readv_live_import_preserves_sibling_and_timer_success: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::a_run_draw_picks_the_maximum_and_a_replay_takes_the_recorded_one: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::a_small_max_timeslice_gets_a_notice: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::only_instrumented_ptrace_family_runs_depend_on_host_perf: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::preemption_tests::chaos_seeded_timeslice_needs_a_pmu_timer: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::preemption_tests::explicit_maximum_is_refused_even_when_equal_to_the_parser_default: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::skid_margin_override_rejects_non_ptrace_backed_backends: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::strict_refusal_needs_strict_a_pmu_backend_and_an_inexact_counter: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • tests::backend_capabilities_match_the_golden_table: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • tests::backend_timer_delivery_is_explicit: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • tests::detcore_drives_kvm_guest_for_synthetic_syscall: pre-existing: fails at main cd9e333e8 on this host (known-kvm-guest-clock; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • tests::kvm_runs_dynamic_echo_through_detcore: pre-existing: fails at main cd9e333e8 on this host (known-kvm-guest-clock; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
  • lit suite (cargo build -p hermit-lit-guests --bins, cargo nextest run -p hermit-run --test lit): 97 tests run: 95 passed, 1 failed, 1 timed out, 2 skipped
    • lit_scheduler_strategies_chaos_verify: pre-existing (main): times out at 57 s at main cd9e333e8 on this host too; in main's own lit run (baseline.sh, 2026-11-01)
    • lit_timerfd_virtual_time_hermit_run_strict: pre-existing (main): fails identically at main cd9e333e8 on this host (strict refused by this host's PMU check); in main's own lit run (baseline.sh, 2026-11-01)
  • failing tests by name against main cd9e333e8's own runs of these three steps: failing 27: 27 in the named baseline, 0 NEW; 0 baseline tests passed here
  • code the train removes from its base that no pull request removes (dropcheck): 0 unexplained drops
  • cargo test -p reverie-liteinst-artifact (source catalog): see train 2 (Reverie unchanged since)
  • integration tests named in the PRs' Validation sections: 14 pass here; 14 STRICT, 4 FAIL, 1 TIMEOUT
    • a_blocking_fifo_open_beside_a_pipeline_waits_for_its_writer: strict here; bare-metal Intel host: PASS (24.4s)
    • a_new_thread_past_a_replayed_schedule_gets_its_first_turn_within_a_second: strict here; bare-metal Intel host: PASS (11.7s)
    • a_pipe_writev_whose_iovec_array_is_rewritten_keeps_both_signals: strict here; bare-metal Intel host: PASS (7.3s)
    • a_schedule_replay_charges_expired_waits_as_its_recording_did: strict here; bare-metal Intel host: PASS (14.9s)
    • a_schedule_replay_keeps_the_long_slices_of_a_preemption_replay: strict here; bare-metal Intel host: PASS (3.4s)
    • a_signal_after_a_sleeps_deadline_does_not_interrupt_it: strict here; bare-metal Intel host: PASS (1.7s)
    • a_timer_due_before_a_sleeps_deadline_interrupts_it_with_the_time_left: strict here; bare-metal Intel host: PASS (2.6s)
    • an_ignored_or_blocked_sigchld_does_not_end_a_sleep: strict here; bare-metal Intel host: PASS (0.6s)
    • partial_and_timer_woken_pipe_calls_end_as_linux_does: strict here; bare-metal Intel host: PASS (7.4s)
    • pipe_calls_held_at_entry_and_woken_by_signals_end_as_linux_does: strict here; bare-metal Intel host: PASS (14.7s)
    • pipe_calls_woken_by_signals_end_as_linux_does: strict here; bare-metal Intel host: PASS (13.7s)
    • poll_timeout_returns_on_time_while_another_thread_spins: strict here; bare-metal Intel host: PASS (5.6s)
    • run_ptrace_nonleader_exec_displaces_runnable_leader: strict here; bare-metal Intel host: PASS (9.5s)
    • skid_overshoot_and_guest_failure_have_different_exit_codes: strict here; bare-metal Intel host: PASS (1.6s)
    • a_schedule_replay_names_a_stdio_kind_changed_since_the_recording: fail here (host-limited: fails the same way at #4750's own head on this AMD VM; PASS on the Intel host); bare-metal Intel host: PASS (0.6s)
    • run_kvm_exec_deletes_posix_timers_and_preserves_itimer: fail here (host-limited on both hosts: AMD VM: exit 122, the --strict refusal at PMU validation (Reverie's counter check reports SpecLockMap), also with /test created on the host; Intel host (Xeon Gold 6138, kernel 6.16.1): exit 125 before the guest starts, 'HERMIT_INTERNAL_FAILURE class=cli-error / Error: --mount target /test does not exist on this host. Hermit mounts onto an existing path outside /tmp: create it first, or choose a target under /tmp' (the test passes --mount=type=tmpfs,target=/test); strict validation passes there (rrnewton/hermit#5042)); bare-metal Intel host: FAIL, host-limited: exit 125, '--mount target /test does not exist on this host' (cli-error, before the guest starts; rrnewton/hermit#5042)
    • run_kvm_itimer_real_interrupts_sleep_in_all_eight_modes: fail here (host-limited on both hosts: AMD VM: exit 122, the --strict refusal at PMU validation (Reverie's counter check reports SpecLockMap), also with /test created on the host; Intel host (Xeon Gold 6138, kernel 6.16.1): exit 125 before the guest starts, 'HERMIT_INTERNAL_FAILURE class=cli-error / Error: --mount target /test does not exist on this host. Hermit mounts onto an existing path outside /tmp: create it first, or choose a target under /tmp' (the test passes --mount=type=tmpfs,target=/test); strict validation passes there (rrnewton/hermit#5042)); bare-metal Intel host: FAIL, host-limited: exit 125, '--mount target /test does not exist on this host' (cli-error, before the guest starts; rrnewton/hermit#5042)
    • run_ptrace_exec_deletes_posix_timers_and_preserves_itimer: fail here (host-limited on both hosts: AMD VM: exit 122, the --strict refusal at PMU validation (Reverie's counter check reports SpecLockMap), also with /test created on the host; Intel host (Xeon Gold 6138, kernel 6.16.1): exit 125 before the guest starts, 'HERMIT_INTERNAL_FAILURE class=cli-error / Error: --mount target /test does not exist on this host. Hermit mounts onto an existing path outside /tmp: create it first, or choose a target under /tmp' (the test passes --mount=type=tmpfs,target=/test); strict validation passes there (rrnewton/hermit#5042); #4938's landing condition: a host where --strict passes the counter check and /test exists); bare-metal Intel host: FAIL, host-limited: exit 125, '--mount target /test does not exist on this host' (cli-error, before the guest starts; rrnewton/hermit#5042)
    • run_chaos_preemption_replay_reuses_the_recorded_epoch: timeout here; bare-metal Intel host: PASS (1.8s)

Train 7: train22/7-syscalls-fd at 3053680d1328

Review: complete (no resolution commit over 50 non-pin lines).

Hermit, on 9b816ffb6a8c:

  • #4664 head 501914b9646c -> 7fea689014e0 Detcore: choose the port of an implicit bind deterministically
    • resolution e735c46b7c27: Train 7: resolve global RPC revision 21 between #4902 and #4664
    • resolution 03063cb80660: Train 7: sort #4664's port_allocator module beside #4867's post_crash
  • #4764 head b98c55b14f6f -> 79543bc4ec56 Add --untrap-passthrough-syscalls, an opt-in that leaves seven pass-through syscalls untrapped
    • resolution 42756bfa0087: Train 7: resolve the legacy form's keyless fields between #4654 and #4764
  • #4791 head 8bf3aae99596 -> 4817627b21e1 Freeze the Android system property area for the guest at the start of a run
    • resolution 285fd8d734f9: Train 7: resolve the legacy form's keyless fields between #4764 and #4791
  • #4885 head 63d73959cfee -> 79c01b5659be Fix-forward for #4620: CPU-clock sleeps, resolutions and timer tasks as Linux answers them
    • resolution 0de711f9253d: Train 7: resolve global RPC revision 20 between #4867 and #4885
  • #4933 head 345ae0cf2ff6 -> 3053680d1328 Test the MSG_ERRQUEUE decision through Detcore's descriptor model

Gates on the AMD EPYC VM (ptrace backend, default log level, no relaxations; this host's PMU check refuses --strict):

  • cargo fmt --all -- --check: clean (1102 files)
  • heads: every pull request at its live GitHub head (5 pull requests, 0 stale)
  • pincheck (cargo nextest list over each counted node's exact selection against its pin): passed, pins: 16 nodes checked, 0 mismatches, 7 base-caused (the base's own stale pins)
  • main's stale pins: 7, base-caused (the base lists that many more than it pins, and the train adds nothing to them): test.cli, test.cli_on_host, test.detcore_unit, test.detcore_unit_on_host, test.hermit_unit, test.hermit_unit_on_host, test.record_replay
  • ci/sync-cell-config.sh --check: current
  • cargo clippy --workspace --all-targets -- -D warnings: clean
  • cargo nextest run -p hermit-detcore --lib: 3612 tests run: 3612 passed, 0 skipped; RPC digest test the_global_rpc_revision_matches_its_definitions: PASS
  • cargo nextest run -p detcore-model -p hermit-run --lib --bins: 1554 tests run: 1529 passed, 25 failed, 1 skipped
    • analyze::rundata::tests::strict_trials_refuse_an_inexact_branch_counter: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • analyze::rundata::tests::trial_preemption_keeps_the_explicit_maximum_request: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • analyze::rundata::tests::trials_without_strict_warn_once_of_an_inexact_branch_counter: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • config::tests::a_legacy_positional_array_reads_as_the_object_it_lists: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • config::tests::backend_config_json_preserves_every_backend_and_representable_bytes: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • config::tests::legacy_backend_json_round_trips_every_backend_capabilities_constant: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • preemption_admission::tests::an_annotated_priority_history_replays_only_with_precise_rcb_timers: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • preemption_admission::tests::explicit_active_maximum_is_refused_without_normalizing_the_request: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • preemption_admission::tests::explicit_timer_controls_still_refuse_after_disabling_the_maximum: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_copy_failure_retires_initialized_sibling_and_timer: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_copy_failure_with_trace_diagnostics: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_live_copy_preserves_sibling_and_timer_success: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_readv_import_failure_retires_initialized_sibling_and_timer: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_readv_live_import_preserves_sibling_and_timer_success: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::a_run_draw_picks_the_maximum_and_a_replay_takes_the_recorded_one: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::a_small_max_timeslice_gets_a_notice: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::only_instrumented_ptrace_family_runs_depend_on_host_perf: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::preemption_tests::chaos_seeded_timeslice_needs_a_pmu_timer: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::preemption_tests::explicit_maximum_is_refused_even_when_equal_to_the_parser_default: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::skid_margin_override_rejects_non_ptrace_backed_backends: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::strict_refusal_needs_strict_a_pmu_backend_and_an_inexact_counter: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • tests::backend_capabilities_match_the_golden_table: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • tests::backend_timer_delivery_is_explicit: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • tests::detcore_drives_kvm_guest_for_synthetic_syscall: pre-existing: fails at main cd9e333e8 on this host (known-kvm-guest-clock; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • tests::kvm_runs_dynamic_echo_through_detcore: pre-existing: fails at main cd9e333e8 on this host (known-kvm-guest-clock; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
  • lit suite (cargo build -p hermit-lit-guests --bins, cargo nextest run -p hermit-run --test lit): 97 tests run: 95 passed, 1 failed, 1 timed out, 2 skipped
    • lit_scheduler_strategies_chaos_verify: pre-existing (main): times out at 57 s at main cd9e333e8 on this host too; in main's own lit run (baseline.sh, 2026-11-01)
    • lit_timerfd_virtual_time_hermit_run_strict: pre-existing (main): fails identically at main cd9e333e8 on this host (strict refused by this host's PMU check); in main's own lit run (baseline.sh, 2026-11-01)
  • failing tests by name against main cd9e333e8's own runs of these three steps: failing 27: 27 in the named baseline, 0 NEW; 0 baseline tests passed here
  • code the train removes from its base that no pull request removes (dropcheck): 0 unexplained drops
  • cargo test -p reverie-liteinst-artifact (source catalog): see train 2 (Reverie unchanged since)
  • integration tests named in the PRs' Validation sections: 1 pass here; 7 STRICT, 1 FAIL
    • cpu_time_clocks_read_the_logical_cpu_accounting: strict here; bare-metal Intel host: PASS (2.4s)
    • implicit_binds_take_the_same_ports_on_every_run: strict here; bare-metal Intel host: PASS (1.6s)
    • msg_dontwait_returns_at_once_on_a_blocking_socket: strict here; bare-metal Intel host: PASS (4.1s)
    • msg_errqueue_returns_at_once_on_inet_sockets_and_waits_on_unix_sockets: strict here; bare-metal Intel host: PASS (2.5s)
    • posix_timer_signal_rows_are_delivered_as_on_linux_at_bitwise_parity: strict here; bare-metal Intel host: PASS (34.2s)
    • systemd_sysusers_reads_its_configuration_as_natively: strict here; bare-metal Intel host: PASS (2.7s)
    • the_pipe_wake_hand_off_verifies_on_fifos_under_chaos_and_a_nonzero_latency: strict here; bare-metal Intel host: PASS (2.8s)
    • inherited_container_output_does_not_expose_capture_offset: fail here (pre-existing (main), host-limited: fails identically at main cd9e333e8 on this AMD VM, 3/3 in wt-tmp on 2026-11-01 (panic at hermit-cli/tests/cli.rs:14220, 'failed to read guest seek report: NotFound'): the test makes a --strict run, which this VM refuses (PMU validation), and reads the guest's report before checking the exit status. PASS 4/4 on the Intel host at c7 b764fec45. In baseline-cd9e333e8.txt.); bare-metal Intel host: PASS (0.3s)

Train 8: train22/8-analyze-cli-docs at b2daead69c87

Review: complete (every resolution commit over the threshold approved by both seats: e2656e1c6 55 lines, f60a0a923 68 lines, cad19c461 105 lines, 453f0dfa3 222 lines).

Hermit, on 3053680d1328:

  • #4608 head 3cb9d9c433c2 -> cf04a4439ea1 analyze: continue prefix trials coarser when the scheduler alone meets the target
  • #4609 head 42be1232d3cc -> 23346eba1a4e analyze: explain timing decisions and missing stacks; print only missed criteria
  • #4610 head a646cb47225f -> 40c2d9d81e07 analyze: let --minimize replay the record that met the target
  • #4640 head 15e25f6719c6 -> 76f70c2fb15e analyze: run --run1-preemptions as the target run instead of panicking
  • #4641 head 41c6c16c5631 -> e005a1cbc38b analyze: compare --target-exit-code with the code hermit run exits with
  • #4671 head 99c8417edc94 -> d13f97808f5c analyze: replay each bisection trial with the callback checkpoints its unchanged prefix reaches
  • #4706 head 7f7e644af715 -> 0079e8113678 analyze: remove its workspace on exit unless --keep-tmp
  • #4714 head 75c767a3bb26 -> bff40fdc8a5c analyze: discard a bisection trial's schedules once its outcome is read
  • #4729 head 4a7231a7e5b9 -> ad92cdafd1b8 analyze: name the conflicting accesses whose order flips
    • resolution e1ae52030ab6: Train 8: resolve the race finder's record spans between #4796 and #4729
  • #4741 head 1d31ad2acfe8 -> 4cba3c055d21 analyze: report the racing accesses at the deciding event
  • #4857 head 918a2f8be3c7 -> 9e8f705bacd5 analyze: watch the racing bytes when the syscall finder finds none
  • #4743 head c0b0fc737d9a -> 759361f73eca analyze: let --trial-log, not --verbose, set the trials' log level
    • resolution a1151097a80d: Train 8: resolve #4743's trial-log change against #4640, #4714 and #4671
  • #4745 head d8e5fa3cb340 -> 874c9abc20d3 analyze: take each report stack from two threads where the replays part
  • #4752 head 174924dd9f8c -> bf722460cb0d analyze: report its conclusions, not an internal failure
    • resolution 94083f72fb6a: Train 8: resolve analyze's phase-5 call between #4671 and #4752
  • #4746 head 534805b0a584 -> bd8142bb0be5 analyze: stop at a budget with a partial report, and resume
  • #4772 head 49435ee1dcd5 -> a0bb205954a9 Let analyze and bisect run --no-namespace trials with chosen guest IDs
    • resolution e1e8e18f60fc: Train 8: keep #4845's adoption of the recordings' instruction offsets beside #4772's trial guest IDs
  • #4873 head 2e23a5db188c -> 1635e875f7cb Replay analyze and bisect trials under one guest random seed
    • resolution e2656e1c6745: Train 8: expect #4934's sleep registration in #4873's seeded trial arguments
  • #4732 head 01ca3d8e36bb -> 20f523d54f92 Replay a recording's scheduler seed too, check an explicit --seed against it, and say which seeds were adopted
    • resolution 04b0d2b269f4: Train 8: resolve the legacy form's keyless fields between #4791 and #4732
    • resolution 2c04e48e8848: Train 8: resolve #4732's analyze options and target seed against #4714, #4743 and #4752
  • #4920 head 544621e09837 -> 1cbf502a9078 analyze: take a prefix trial's stacks at the deciding event's schedule position
    • resolution 975e435bb194: Train 8: resolve the legacy form's keyless fields between #4732 and #4920
    • resolution f60a0a923eba: Train 8: bring this train's analyze code and tests to the merged APIs
    • resolution 7f9725de1adc: Train 8: bring this train's tests to the merged APIs
  • #4792 head 64a566a94ade -> 73591902a8b4 analyze: rerun a trial its wall-clock bound stopped, never count it
  • #4835 head c0461e9752f5 -> 34f29db0313f analyze: splice only runs whose threads agree, keep stack-trace stops out of the decision, and never count a refused trial
    • resolution cad19c461f8f: Train 8: resolve #4792 and #4835 against the analyze line and #4845
    • resolution 453f0dfa30b9: Train 8: write the search's interval files with its endpoints' source fields
    • resolution b2daead69c87: Train 8: rustfmt what this train's resolutions left unformatted
  • skipped as an identical copy: #4741 commit df8ef98ad992 = train commit 8e5b52b15238
  • skipped as an identical copy: #4741 commit c4c8974fd42e = train commit 73668de89550
  • skipped as an identical copy: #4741 commit 5a8b0c393987 = train commit a7a45b13d02f
  • skipped as an identical copy: #4741 commit 856ade84ad7a = train commit efe56c3b48b7
  • skipped as an identical copy: #4741 commit 57ccfbd1b41a = train commit ed3ac43bedab
  • skipped as an identical copy: #4741 commit 5f2802fae06c = train commit 1fb09e24333a
  • skipped as an identical copy: #4741 commit eb0fb76d1be4 = train commit db65119c3b97
  • skipped as an identical copy: #4857 commit 73960a85083c = train commit c3b63a169e88
  • skipped as a carried copy: #4857 commit d1b0465bcfd5 is its copy of #4796's commit of the same subject; the train carries #4796's own (2d5f7e3243a8)
  • skipped as a carried copy: #4857 commit 0bdd7539a407 is its copy of #4796's commit of the same subject; the train carries #4796's own (5bf7637a784e)
  • skipped as a carried copy: #4857 commit 918a2f8be3c7 is its copy of #4796's commit of the same subject; the train carries #4796's own (f111fa19d716)

Gates on the AMD EPYC VM (ptrace backend, default log level, no relaxations; this host's PMU check refuses --strict):

  • cargo fmt --all -- --check: clean (1112 files)
  • heads: every pull request at its live GitHub head (21 pull requests, 0 stale)
  • pincheck (cargo nextest list over each counted node's exact selection against its pin): passed, pins: 16 nodes checked, 0 mismatches, 7 base-caused (the base's own stale pins)
  • main's stale pins: 7, base-caused (the base lists that many more than it pins, and the train adds nothing to them): test.cli, test.cli_on_host, test.detcore_unit, test.detcore_unit_on_host, test.hermit_unit, test.hermit_unit_on_host, test.record_replay
  • this train's rustfmt commit b2daead69c87: layout only by fmtproof.py (each file it changes equals its parent once whitespace and rustfmt's trailing commas before a closing bracket are removed)
  • ci/sync-cell-config.sh --check: current
  • cargo clippy --workspace --all-targets -- -D warnings: clean
  • cargo nextest run -p hermit-detcore --lib: 3622 tests run: 3622 passed, 0 skipped; RPC digest test the_global_rpc_revision_matches_its_definitions: PASS
  • cargo nextest run -p detcore-model -p hermit-run --lib --bins: 1770 tests run: 1745 passed, 25 failed, 1 skipped
    • analyze::rundata::tests::strict_trials_refuse_an_inexact_branch_counter: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • analyze::rundata::tests::trial_preemption_keeps_the_explicit_maximum_request: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • analyze::rundata::tests::trials_without_strict_warn_once_of_an_inexact_branch_counter: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • config::tests::a_legacy_positional_array_reads_as_the_object_it_lists: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • config::tests::backend_config_json_preserves_every_backend_and_representable_bytes: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • config::tests::legacy_backend_json_round_trips_every_backend_capabilities_constant: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • preemption_admission::tests::an_annotated_priority_history_replays_only_with_precise_rcb_timers: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • preemption_admission::tests::explicit_active_maximum_is_refused_without_normalizing_the_request: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • preemption_admission::tests::explicit_timer_controls_still_refuse_after_disabling_the_maximum: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_copy_failure_retires_initialized_sibling_and_timer: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_copy_failure_with_trace_diagnostics: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_live_copy_preserves_sibling_and_timer_success: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_readv_import_failure_retires_initialized_sibling_and_timer: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • ptrace_completion::tests::real_random_readv_live_import_preserves_sibling_and_timer_success: pre-existing: fails at main cd9e333e8 on this host (known-real-random-stack; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::a_run_draw_picks_the_maximum_and_a_replay_takes_the_recorded_one: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::a_small_max_timeslice_gets_a_notice: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::only_instrumented_ptrace_family_runs_depend_on_host_perf: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::preemption_tests::chaos_seeded_timeslice_needs_a_pmu_timer: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::preemption_tests::explicit_maximum_is_refused_even_when_equal_to_the_parser_default: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::skid_margin_override_rejects_non_ptrace_backed_backends: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • run::strict_refusal_needs_strict_a_pmu_backend_and_an_inexact_counter: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • tests::backend_capabilities_match_the_golden_table: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • tests::backend_timer_delivery_is_explicit: pre-existing: fails at main cd9e333e8 on this host (reverie-9443a6b2-capabilities; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • tests::detcore_drives_kvm_guest_for_synthetic_syscall: pre-existing: fails at main cd9e333e8 on this host (known-kvm-guest-clock; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
    • tests::kvm_runs_dynamic_echo_through_detcore: pre-existing: fails at main cd9e333e8 on this host (known-kvm-guest-clock; rrnewton/hermit#5012, fixed on main by 189f1ae1a)
  • lit suite (cargo build -p hermit-lit-guests --bins, cargo nextest run -p hermit-run --test lit): 97 tests run: 95 passed, 1 failed, 1 timed out, 2 skipped
    • lit_scheduler_strategies_chaos_verify: pre-existing (main): times out at 57 s at main cd9e333e8 on this host too; in main's own lit run (baseline.sh, 2026-11-01)
    • lit_timerfd_virtual_time_hermit_run_strict: pre-existing (main): fails identically at main cd9e333e8 on this host (strict refused by this host's PMU check); in main's own lit run (baseline.sh, 2026-11-01)
  • failing tests by name against main cd9e333e8's own runs of these three steps: failing 27: 27 in the named baseline, 0 NEW; 0 baseline tests passed here
  • code the train removes from its base that no pull request removes (dropcheck): 0 unexplained drops
  • cargo test -p reverie-liteinst-artifact (source catalog): see train 2 (Reverie unchanged since)
  • integration tests named in the PRs' Validation sections: 5 pass here; 3 FAIL, 5 STRICT
    • dbt_random_sources_are_deterministic_under_strict_verify: fail here (pre-existing (main), host-limited: main's own test; fails identically at main cd9e333e8 on this host, 3/3 on 2026-11-01 (random_determinism.rs:94, 'random guest did not reach L2 under strict verification: exit status: 125', 'HERMIT_INTERNAL_FAILURE class=backend-unavailable backend=dbt'): this source build does not enable the dbt feature); bare-metal Intel host: FAIL, host-limited (build): backend dbt is unavailable, the dbt feature is not enabled in this source build (as at main)
    • no_namespace_bisect_replays_the_schedules_it_writes: fail here (#4772's own test, with #4772's recorded landing condition: it needs Linux >= 7.1, which main's clone exit-signal probe checks (rrnewton/hermit#5005). On this AMD VM the probe refuses (HERMIT_POLICY_REFUSAL: 'legacy clone exit-signal validation is unsupported or unproven: SIGCHLD probe returned EFAULT (14), signal 65 probe returned EFAULT (14)'); the Intel host's probe refuses the same way (SIGCHLD and signal 65 probes returned EFAULT (14); expected EFAULT then EINVAL)); bare-metal Intel host: FAIL, refused by the clone exit-signal probe (SIGCHLD and signal 65 probes returned EFAULT; #4772's Linux >= 7.1 condition, rrnewton/hermit#5005)
    • no_namespace_minimize_replays_its_candidate_records: fail here (#4772's own test, with #4772's recorded landing condition: it needs Linux >= 7.1, which main's clone exit-signal probe checks (rrnewton/hermit#5005). On this AMD VM the probe refuses (HERMIT_POLICY_REFUSAL: 'legacy clone exit-signal validation is unsupported or unproven: SIGCHLD probe returned EFAULT (14), signal 65 probe returned EFAULT (14)'); the Intel host's probe refuses the same way (SIGCHLD and signal 65 probes returned EFAULT (14); expected EFAULT then EINVAL)); bare-metal Intel host: FAIL, refused by the same clone exit-signal probe (rrnewton/hermit#5005)
    • a_bounded_chaos_schedule_replays_as_recorded: strict here; bare-metal Intel host: PASS (7.9s)
    • a_no_namespace_run_shows_its_working_mount_and_hides_another: strict here; bare-metal Intel host: PASS (3.4s)
    • a_replay_stuck_off_its_schedule_lets_every_thread_run: strict here; bare-metal Intel host: PASS (0.7s)
    • a_replay_stuck_off_its_schedule_stops_under_replay_exhausted_panic: strict here; bare-metal Intel host: PASS (0.9s)
    • no_namespace_runs_render_the_base_mount_table: strict here; bare-metal Intel host: PASS (6.9s)

Landing order

Trains 1, 2, 3, 6, 7, 8 in that order, each on the previous train's tip. The Reverie branches of trains 1 and 2 land first, then Hermit's pin moves to the landed Reverie SHAs. Main has moved its Reverie pin twice since the trains were built (9443a6b28257 to bca539918 in c67101103, then to 1c22faddc in 4f409f883), so trains 1 and 2's Reverie heads do not descend from it. For a landing on current main the pull requests now carry restacked heads (pushed 2026-11-01): reverie#1153 e1b54ae6eb90 and reverie#1137 52449e346e3b on Reverie main 1c22faddc (both merge cleanly into Reverie main 19c014c65), and Hermit chain A on main d192e5d72, re-pinned to e1b54ae6e: #4769 1d74a108c3e9, #4845 bcbc98a5d8eb, #4902 46c4b72bdf8d and #4920 82e2c2fbedde. The trains carry these pull requests' earlier heads (#4769 522920468a70, #4845 3a720d6d23ca, #4902 cd1b0d698b6c in train 6, #4920 544621e09837 in train 8). On a main past 4f409f883, #4769's pin commit conflicts with main's CARRY TO 1c22faddc block: keep main's, and #4769's becomes "from 1c22faddc" with only #1153's two commits. Trains 3 to 8 change no Reverie code. Rebuild only if the lander asks.

Trains 4 and 5

Empty in this generation: train 6 builds directly on train 3's tip.

History

Deleted 2026-11-01 from VladimirMakaev/hermit, older-generation branches built on main 9ab8418de603 (superseded):

  • train22/3-binder at 1ed5fa69e23dbf99c9eaac210981dda43ea33728 (the new train 3 above reuses the name)
  • train22/4-record-format at ecd114306d4ffabe28adde8a19d0b8438541cba1
  • train22/5-poll-carriers at d1b114cacf8206d719a174de06e33f55fcafe088
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment