From 55f0acba63449a3ae66961e5946a57e8dd900415 Mon Sep 17 00:00:00 2001 From: wshallwshall Date: Sat, 22 Aug 2026 17:15:47 -0500 Subject: [PATCH] backlog: file #1331 -- one test name over six assertions makes a merge-blocking flake read as six bugs Content routed here by the dispatcher seat, which allocated no number and cited none. Filing routes to the lander because allocation and the commit that files it cannot be split across worktrees. WHAT IT COST, mine: test_connscale_smoke_end_to_end blocked THREE PRs in one evening -- 516, 530 and 529 -- on required contexts. WHY IT DOES NOT READ AS ONE PROBLEM, which is the row: it wears two different assertions. A throughput SLO (fixed_aggregate at N=24, 25.1 against a prior 34.5 * 0.75) and an intake loss (engine_read 35 below confirmed sent 36). Two seats hitting it twice see two unrelated bugs. THE DISPATCHER MEASURED THE CAUSE: the test is 273 lines and the end-to-end case asserts at least SIX separate properties under one name. That is why nobody has owned it, and it is why the fix direction is to make the failure NAME itself rather than to re-run it. ATTRIBUTION IS IN THE ROW because it is the reusable half: attribute by FILE SCOPE before re-running. 529 and 530 each touch zero files under pipeline, store or transports and neither touches the test, so neither can reach the intake path. That is what made both re-runs earned rather than manufactured. AND WHAT IS NOT MEASURED IS STATED: whether the two assertions share a root cause is unknown, neither failure was reproduced locally, and the three-PR count is one evening rather than a rate. Verified: parse_items 339 items / 245 open against main's 338 / 244, zero lost from either side, #1331 present and open. backlog_status_check green over 575. --- docs/BACKLOG.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/docs/BACKLOG.md b/docs/BACKLOG.md index 341483d9..818e083b 100644 --- a/docs/BACKLOG.md +++ b/docs/BACKLOG.md @@ -13553,3 +13553,31 @@ blind window is about a day rather than open-ended. **Cluster:** Ledger integrity / commit gates. **Priority:** P3. **Verdict:** build. **Severity:** no deployment axis (sec. 0) -- ledger hygiene. The cost is that a wrongly-transposed banner reads as a working cross-reference forever, and the two items it corrupts fail in opposite directions: one over-reports its status and one under-reports it. +## 1331. test_connscale_smoke_end_to_end wears six assertions under one name, so a merge-blocking flake reads as six unrelated bugs + +> 🔢 **Filed 2026-08-22 - not started.** One test name covers at least six separate properties, so two seats hitting it twice see two unrelated bugs rather than one recurring problem. It sits on three of the thirteen required contexts, so every occurrence is merge-blocking. +> Verdict: build +> Closing-act: code + +**Cluster:** CI integrity / test design. **Priority:** P2. **Verdict:** build. +**Severity:** queue tax, not a product defect. **Conditional, per section 0:** zero deployments; the cost is merge latency and a standing invitation to re-run until green, which manufactures a green rather than earning one. + +**What it cost, measured 2026-08-22 by the LANDER seat.** `tests/test_connscale_smoke.py::test_connscale_smoke_end_to_end` blocked **three PRs in one evening** -- #516, #530 and #529 -- on `test (ubuntu-latest, py3.14)` and the Windows legs. Read the required set from `.github/required-contexts.txt`, never from this row: it was recorded moving six times in one day. + +***WHY IT DOES NOT READ AS ONE PROBLEM, AND THIS IS THE ROW.*** It wears **two different assertions**: + +``` +throughput SLO fixed_aggregate at N=24: 25.1 against a prior 34.5 * 0.75 +intake loss engine_read 35 below confirmed sent 36 -- one message lost on intake +``` + +**Measured by the DISPATCHER seat on `origin/main`:** the test is **273 lines** and the end-to-end case asserts **at least six** separate properties -- record count, sweep modes, per-record `no_loss.ok`, two monotonicity SLOs, and the additive engine fields. **A single name over six assertions is why nobody has owned it.** + +**THE FIX DIRECTION IS TO MAKE THE FAILURE NAME ITSELF** -- split the assertions, or carry the failing property into the message, so the next reader knows which of the six broke without reading 273 lines. **Do not let this row become "re-run it".** + +**THE ATTRIBUTION RULE THAT MAKES A RE-RUN EARNED**, and it is what cleared both PRs this seat re-ran: *attribute by FILE SCOPE first.* #529 and #530 each touch **zero** files under `pipeline/`, `store/` or `transports/`, and neither touches the test, so neither can reach the intake path. That is a measurement rather than a shrug. + +**NOT MEASURED, DO NOT INFER:** whether the two assertions share a root cause -- nothing here shows it either way. Neither failure was reproduced locally; both figures are read off CI. The three-PR count is the lander's observation across one evening and is not a rate. + +**Source:** surfaced by the LANDER while attributing reds on #529 and #530; the six-assertion count and the required-context arithmetic are the DISPATCHER's, whose handoff routed the content here for filing. +