diff --git a/docs/BACKLOG.md b/docs/BACKLOG.md index 28eb4e77..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. @@ -13650,3 +13656,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.