From 2bbdd2fad695d621b715136917b5a0458ef4b500 Mon Sep 17 00:00:00 2001 From: wshallwshall Date: Sat, 22 Aug 2026 13:46:48 -0500 Subject: [PATCH 1/2] backlog: file #1330 -- 487's resolver conflict is a judgment merge, and the obvious resolution re-arms a fixed defect Filed under a live 5-hour rung because it cannot be finished in the remaining window, and because the analysis behind it would otherwise die with this session. An adversarial per-file pass found some of 487's assertions were written against the OLD interpreter selection order, which 505 reversed for cause: bin/bash.exe is the MINGW64 wrapper and rewrites PATH so /mingw64/bin outranks a caller's prepend. Resolving toward 487 therefore re-arms the defect 505 fixed, rather than merely duplicating work. The item carries the pointer to the per-file verdicts so a taker reads them instead of re-deriving, and records two smaller stranded pieces: 1321's banner flip, handed over after 1322 landed first via 525, and two ASVS re-scores whose item numbers nobody can derive because no cell-to-item map exists. One of those re-scores is a pass to PARTIAL -- a RE-OPEN, not a closure. Filed from the ALLOCATING worktree after the gate correctly refused the same commit from a scratch one. The escape is the documented git switch -c from the allocating tree, which I had explained to three other seats today before needing it myself. --- docs/BACKLOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/BACKLOG.md b/docs/BACKLOG.md index aef904d4..037dba60 100644 --- a/docs/BACKLOG.md +++ b/docs/BACKLOG.md @@ -13648,3 +13648,14 @@ intake loss engine_read 35 below confirmed sent 36 -- one message lost on i **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. + +## 1330. PR 487's five-file resolver conflict is a judgment merge whose obvious resolution re-arms a fixed defect + +> 🔢 **Filed 2026-08-22 by the lander, under a live 5-hour rung, because it cannot be finished in the remaining window.** Value **5/10** -- Difficulty **5/10**. PR **#487** (`lander/432-resolved`, draft, 45 ahead / 26 behind) conflicts with `origin/main` in FIVE files, all in the bash-interpreter resolver area that **#505** rewrote: `tests/_bash_resolver.py`'s consumers plus `tests/tooling_manifest.txt`. +> **THE RESOLUTION IS NOT MECHANICAL, AND THE OBVIOUS ONE IS WRONG.** An adversarial per-file pass (one classifier per file, each handed to a skeptic told to refute it) found that **some of #487's assertions were written against the OLD interpreter selection order** -- `bin/bash.exe` before `usr/bin/bash.exe`. #505 reversed that order because the first is the MSYSTEM=MINGW64 wrapper, which rewrites `PATH` so `/mingw64/bin` outranks anything a caller prepends. **So those assertions are now WRONG rather than merely redundant, and resolving toward #487 re-arms the exact defect #505 fixed.** +> **WHY IT MATTERS BEYOND THIS PR:** the blast radius is every test that PATH-stubs a binary Git ships in `mingw64/bin`. Measured: `curl`, `git` and `openssl` shipped; `gh`, `jq` and `python` not. That is why #505's release-age rows failed while its gh-stub rows passed, and why the failure read as flakiness for hours. +> **WHAT A TAKER NEEDS, so this is not re-derived:** the per-file verdicts are in this session's workflow output at `subagents/workflows/wf_c6ae5d48-661/journal.jsonl` -- one classifier result and one refutation per file. Read those before resolving. #487's CI is ~15 hours stale (03:04-03:20) and its three failures are all explained: the gitleaks one is a 23-minute window that closed itself when PR #491 merged needles and allowlist together, and the harness one predates #505. +> **ALSO STRANDED HERE, both small and neither started:** #1321's banner needs flipping to superseded -- the dispatcher filed it, then found #1322 had landed first via #525 and handed the flip over per `BUILDER.md` -- and the two re-scores the ASVS tracker handed over (`672b0f1b` four V6 cells partial->pass, `2e5cd61d` **6.1.3 pass->PARTIAL, a RE-OPEN**) need item numbers derived, because no cell-to-item map exists and the tracker correctly refused to guess one. + +**Cluster:** Merge queue / interpreter resolution. **Priority:** P3. **Verdict:** build. +**Severity:** no product effect and no PHI effect -- test-harness and merge-queue only. The cost of getting it wrong is silent: a PATH-stubbed test that reaches the real network reads as a pass on a fixture it never consulted. From aff06772cd8b332c82c5dbe5eede767ecd991a1b Mon Sep 17 00:00:00 2001 From: wshallwshall Date: Sat, 22 Aug 2026 22:18:55 -0500 Subject: [PATCH 2/2] backlog: close #1321 as a duplicate of #1322, the flip its filer could not take #1321 and #1322 record one root cause: the `serverdb` path alternation at `ci.yml:1358` does not list `messagefoundry/api/`, so an api-only change deselects the SQL Server and Postgres legs on the pull request that would catch it. Two seats filed it within minutes. #1322 landed on `main` first via PR #525; #1321 was filed on a branch and arrived by merge, so neither the ledger gate nor either author could see the collision. #1321's own row already declared itself the duplicate and handed the closure over, because `BUILDER.md:253` forbids a filer from closing their own row and `:148` assigns it here. This discharges that hand-over. Verified before flipping rather than relayed: #1322 carries every point #1321 does, including the `tests/test_api.py:587` substring-versus-equality half, and adds a fired-in-practice case (#514 / BACKLOG #1187, `fdd89b49`) and the nightly-arm severity bound. THE GLYPH IS A DELIBERATE CHOICE WITH NO PRECEDENT TO FOLLOW. The live ledger carried no prior close-as-duplicate-of-an-OPEN-item, so the alphabet had to be read rather than copied. The other two closed banners would each assert something false: the check would say the gate hole is fixed, and it is not, it is open at #1322; the no-entry would say an owner declined the work, and none did. The tombstone says this ROW is void, which is the true statement, and the banner text says so in words so no reader has to infer it from a pictograph. parse_items before 341 items / 246 open, after 341 / 245. The status gate reports 577 items across both files, each declaring exactly one status. Co-Authored-By: Claude Opus 5 --- docs/BACKLOG.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/docs/BACKLOG.md b/docs/BACKLOG.md index 0f941c0c..0841f968 100644 --- a/docs/BACKLOG.md +++ b/docs/BACKLOG.md @@ -13447,7 +13447,8 @@ twice in one hour. ## 1321. the server-DB path gate does not list `messagefoundry/api/`, so an api change selects those legs on neither a PR nor a push -> 🔢 **Filed 2026-08-22 - not started.** `main` can merge a change that breaks the Postgres and SQL Server suites and still report green, because neither leg runs on a push. The first pull request afterwards inherits the red and its author debugs someone else's change. +> 🪦 **CLOSED 2026-08-23 as a duplicate of [#1322](#1322) -- the defect is real and remains OPEN there.** *Banner flipped by the lander; the filer correctly declined to close their own row.* **This glyph does NOT mean the gate hole is fixed.** It means this ROW is void, because #1322 records the same root cause better. **A reader wanting the live item wants #1322.** +> *Original filing, kept so nothing is lost:* `main` can merge a change that breaks the Postgres and SQL Server suites and still report green, because neither leg runs on a push. The first pull request afterwards inherits the red and its author debugs someone else's change. > Verdict: build > Closing-act: code > @@ -13457,9 +13458,14 @@ twice in one hour. > collision.* **#1322 is the better record and carries everything this row does**, including the > `tests/test_api.py:587` substring-versus-equality point. > -> ⚠️ **I DID NOT FLIP THE BANNER.** *Closing is the Lander's act (`BUILDER.md:253` forbids the filer, -> `:148` assigns it), so it is handed over rather than taken.* **Until it is flipped this is an open -> duplicate, and a reader who reaches it before #1322 will re-derive work already recorded.** +> **BANNER FLIPPED 2026-08-23 by the lander, discharging the hand-over above.** *The filer was right +> not to take it: closing is the Lander's act (`BUILDER.md:253` forbids the filer, `:148` assigns it).* +> **Verified before flipping, not relayed:** #1322 carries every point this row does, including the +> `tests/test_api.py:587` substring-versus-equality half, and adds a fired-in-practice case (#514 / +> BACKLOG #1187, `fdd89b49`) plus the nightly-arm severity bound. **Glyph choice is deliberate and has +> no precedent to follow:** the live ledger had no prior close-as-duplicate-of-an-OPEN-item, and the +> other two closed glyphs would each assert something false -- `✅` that the gate hole is fixed, `⛔` +> that an owner declined the work. Neither is true; the work is open at #1322. **Cluster:** CI / test-gate coverage. **Priority:** P2. **Verdict:** build. **Severity:** gate-coverage gap, not a runtime defect. Nothing would ship broken to a deploying site; what is at stake is that the gate protecting two of three store backends is not armed on the branch it is supposed to protect.