From 5bcfc5e57b765e9d7e6281a4e02080d7778912d9 Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Wed, 4 Nov 2026 01:15:23 -0800 Subject: [PATCH 1/4] chore(quest): claim quest/m0/nightly/bindings-bench-evicted.md Quest-Claim: 3c5c50827c9546de From 2396436f070f20e69aa1e19c84f5d217f4c8e577 Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Wed, 4 Nov 2026 01:24:49 -0800 Subject: [PATCH 2/4] docs(quest): record the resolved bindings benchmark failure Co-Authored-By: GPT-6.1 Sol --- quest/m0/nightly/bindings-bench-evicted.md | 31 ++++++++++++++++------ 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/quest/m0/nightly/bindings-bench-evicted.md b/quest/m0/nightly/bindings-bench-evicted.md index 0208a02c573..b21084ca84c 100644 --- a/quest/m0/nightly/bindings-bench-evicted.md +++ b/quest/m0/nightly/bindings-bench-evicted.md @@ -15,13 +15,28 @@ Decided 2026-11-03 (maintainer, follow-up planning after the 2026-11-03 /quest-a - m1 - m2 -- Confirm the cause first. The likely one: each case's origin cache is - `CACHE_BYTES` (64 MiB), and a 64 KiB case writes 64-frame groups - (`frames()` caps at 64), so a round can outgrow the cache before a slow - binding reads it. -- Then size the case or its cache so it measures throughput rather than - eviction, and keep the other sizes' numbers comparable with past nights. -- Run every binding's runner locally (`just gh nightly bindings`) before - pushing. +Investigation 2026-11-04: + +- [The November 1 binding job](https://github.com/moq-dev/moq/actions/runs/41313466339/job/124868517685) + failed in `bench::benchmark_ffi` with `Evicted`. +- [moq-dev/moq#7446](https://github.com/moq-dev/moq/pull/7446), merged later + that day, fixed the cause in the cache policy: carrying debt for a cold + victim fell through into shedding the live group's unread frames. +- The [November 2](https://github.com/moq-dev/moq/actions/runs/41483654426/job/125408205493) + and [November 3](https://github.com/moq-dev/moq/actions/runs/41656613559/job/125988511175) + binding jobs passed. The unchanged benchmark also passes locally at a + one-second budget on `701b7196a348ff0b9656d7db7a193673772eeb0c`. +- The 64 KiB case writes 4 MiB per round, below its 64 MiB origin budget. + A local synchronous probe completed 10,000 rounds of every frame size, + including cache turnover, without eviction. There is no reproduced + failure that justifies changing the case sizes or cache budget. Public API: none. Wire: none. + +## Waiting + +- Maintainer: retire this stale quest (recommended), or retain it with a + newer failing run or reproducer that the merged cache fix does not + address. The original failure is fixed and two scheduled runs pass; + choosing whether to keep the quest changes its scope, so unattended + investigation leaves that decision for the maintainer. From dd926a48cde4f12e42359b67a4224f02f85911ae Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Wed, 4 Nov 2026 01:29:14 -0800 Subject: [PATCH 3/4] docs(quest): identify the locally checked Rust baselines Co-Authored-By: GPT-6.1 Sol --- quest/m0/nightly/bindings-bench-evicted.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quest/m0/nightly/bindings-bench-evicted.md b/quest/m0/nightly/bindings-bench-evicted.md index b21084ca84c..0cb009c8356 100644 --- a/quest/m0/nightly/bindings-bench-evicted.md +++ b/quest/m0/nightly/bindings-bench-evicted.md @@ -24,7 +24,7 @@ Investigation 2026-11-04: victim fell through into shedding the live group's unread frames. - The [November 2](https://github.com/moq-dev/moq/actions/runs/41483654426/job/125408205493) and [November 3](https://github.com/moq-dev/moq/actions/runs/41656613559/job/125988511175) - binding jobs passed. The unchanged benchmark also passes locally at a + binding jobs passed. The unchanged Rust baselines also pass locally at a one-second budget on `701b7196a348ff0b9656d7db7a193673772eeb0c`. - The 64 KiB case writes 4 MiB per round, below its 64 MiB origin budget. A local synchronous probe completed 10,000 rounds of every frame size, From 942a45ab3e371040484c38dbfe1452136df3947b Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Wed, 4 Nov 2026 07:30:29 -0800 Subject: [PATCH 4/4] docs(quest): retire the resolved binding benchmark quest The Evicted failure it reports was fixed by #7446, and the Nov 2 and Nov 3 binding jobs passed, so delete the quest and its link instead of rewriting its plan. Co-Authored-By: Claude Opus 5.5 --- quest/m0/nightly/README.md | 1 - quest/m0/nightly/bindings-bench-evicted.md | 42 ---------------------- 2 files changed, 43 deletions(-) delete mode 100644 quest/m0/nightly/bindings-bench-evicted.md diff --git a/quest/m0/nightly/README.md b/quest/m0/nightly/README.md index 43a745240fb..1b67d48e700 100644 --- a/quest/m0/nightly/README.md +++ b/quest/m0/nightly/README.md @@ -37,7 +37,6 @@ Public API: none. Wire: none. - [The receive-windows benchmark runs to the end](/quest/m0/nightly/receive-windows-evicted.md) - `benchmark_receive_windows` stops failing `frame: Evicted`, so the Rust benchmark-tests job publishes its report - [The relay's startup fits its stack under all features](/quest/m0/nightly/relay-stack.md) - `debug_relay_load_and_run_fit_windows_stack` passes under `--all-features`, fixed at the feature that grew the future -- [The binding benchmark's 64 KiB case measures](/quest/m0/nightly/bindings-bench-evicted.md) - the 64 KiB case completes instead of failing `evicted` - [The range-widening bench expects a narrowed read to end](/quest/m0/nightly/track-range-widening.md) - `track_range_widening/1r/64` stops asserting a pending read that #7545 made end - [moq-net's ingest fuzz target finds no stall](/quest/m0/nightly/ingest-fuzz.md) - the 13-byte stream that stalls ingest is fixed at its cause and kept as a regression test - [Nightly's shipping-size check passes](/quest/m0/nightly/shipping-size.md) - js/net, js/watch, and moq-relay growth over 5% is traced to its commits, then shrunk or accepted diff --git a/quest/m0/nightly/bindings-bench-evicted.md b/quest/m0/nightly/bindings-bench-evicted.md deleted file mode 100644 index 0cb009c8356..00000000000 --- a/quest/m0/nightly/bindings-bench-evicted.md +++ /dev/null @@ -1,42 +0,0 @@ -# [S] The binding benchmark's 64 KiB case measures - -## Goal - -Nightly's `Binding benchmark runners` job passes: the 64 KiB case of the -moq-ffi throughput benchmark (`rs/moq-ffi/src/bench.rs`, run by each -binding's runner such as `py/moq-rs/benches/ffi.py`) completes and reports -a number instead of failing `evicted` on `main`. - -## Plan - -Decided 2026-11-03 (maintainer, follow-up planning after the 2026-11-03 /quest-afk and /quest-complete runs), milestone: - -- ✅ m0, as a child of [Nightly passes on main](/quest/m0/nightly/README.md) -- m1 -- m2 - -Investigation 2026-11-04: - -- [The November 1 binding job](https://github.com/moq-dev/moq/actions/runs/41313466339/job/124868517685) - failed in `bench::benchmark_ffi` with `Evicted`. -- [moq-dev/moq#7446](https://github.com/moq-dev/moq/pull/7446), merged later - that day, fixed the cause in the cache policy: carrying debt for a cold - victim fell through into shedding the live group's unread frames. -- The [November 2](https://github.com/moq-dev/moq/actions/runs/41483654426/job/125408205493) - and [November 3](https://github.com/moq-dev/moq/actions/runs/41656613559/job/125988511175) - binding jobs passed. The unchanged Rust baselines also pass locally at a - one-second budget on `701b7196a348ff0b9656d7db7a193673772eeb0c`. -- The 64 KiB case writes 4 MiB per round, below its 64 MiB origin budget. - A local synchronous probe completed 10,000 rounds of every frame size, - including cache turnover, without eviction. There is no reproduced - failure that justifies changing the case sizes or cache budget. - -Public API: none. Wire: none. - -## Waiting - -- Maintainer: retire this stale quest (recommended), or retain it with a - newer failing run or reproducer that the merged cache fix does not - address. The original failure is fixed and two scheduled runs pass; - choosing whether to keep the quest changes its scope, so unattended - investigation leaves that decision for the maintainer.