story-041: The verification runner is not assumed to be Python - #40
Merged
Conversation
Implemented by the l5 harness story workflow.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The coordinator executed Python source to record which interpreter ran the verification suite, and read a configuration key whose name was a language. A target repository whose suite is not Python got an empty record and was told nothing.
What changed
The version probe is gone.
_VERSION_PROBE = "import platform; print(platform.python_version())", run as[interpreter, "-c", probe], was Python source and Python's flag for it. The recorded version field went with it: the interpreter path was already recorded and already answers "which one ran", so the field was not worth a new configuration key to keep.clean_clone_pythonis nowverification_runner— naming the role rather than the language. Nine coordinator sites, two artifact schemas, the config and the template.A retired key is refused, not ignored. A config still carrying
clean_clone_pythonwould otherwise fall through to the replacement's default and quietly exercise something other than what it asked for. The refusal sits above every other pre-flight, because it is decidable the moment the config loads: no run directory, nostate.json, no log, no branch, no agent invoked.The burn-down
story-040 split the scan's allowlist into a temporary half that should empty and a permanent half that should not. This story is the first payment:
What remains is exactly the other story's subject — two lines of prose in
prompts/tester.mdandmay_not_create: ["tests/"]in the workflow.the-test-location-comes-from-configurationremoves those three, and the list emptying is story-040's completion signal for the whole audit.Three judgements worth a reviewer's eye
One literal survives, deliberately.
orchestration/harness_config.pynamesclean_clone_pythonin order to refuse it, which is nominally against this story's own constraint that no language name entersorchestration/. Task 6 required the refusal and a retired key cannot be refused without being named, so it is onPERMANENT_MENTIONSwith that reason recorded. Filed asan-undeclared-config-key-is-refused— refusing any undeclared key removes the literal and catches mistyped keys, which nothing catches today.One acceptance criterion was over-stated. AC10 expected the scan to report nothing in the touched files; one line remains — a
self_route_problemsdocstring saying "Trueis not a budget however much Python is willing to treat it as one". That is a statement about this harness's own implementation, so it moved toPERMANENT_MENTIONSrather than being edited away.One edit outside
scope.modify, and it was forced.tests/test_stage_baseline.pycompared story-037's pre-story bound against the working tree, so renaming a local inrun_clean_clonemade it red for a change story-037 has nothing to say about. Repointed, not weakened.Verification
2288 passed, 21 written; verification passed on the first iteration, no retries; clean-clone green with the story committedtests/were permitted by the revert check — the suite fails with them reverted🤖 Generated with Claude Code