Repository navigation
Read a scenario's view past stderr; match a pin URL only as a whole name - #23
Merged
Merged
Conversation
save-compat: view() took the last output line as the view, and run() puts stderr after stdout, so a library warning failed a correct read as a verdict on the candidate. Read the last line that is a JSON object. Output with no such line still fails. consumers: `url in spec` matched any longer repository name, so a consumer pinning another project was tested instead of skipped. The URL now has to end at the end of the spec, or at @ # / ? ; or whitespace, with or without .git. Closes #18 Closes #20 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Member
Author
|
Self-review rubric, scored against commit c756a52. Result: not ready for merge. Gate-run evidence is missing.
Judgment calls for a reviewer:
Phase 8: the merge was withheld. The dispatch's merge pre-authorization conveys permission, not validation. The two runs listed in the PR body, on 3.12, are the remaining step. This comment was drafted during a Gardener session (https://github.com/Stephenson-Software/gardener). drafted by Claude on behalf of Daniel Stephenson |
This was referenced Nov 7, 2026
dmccoystephenson
added a commit
that referenced
this pull request
Nov 7, 2026
…lds (#25) A documentation sweep against the gates, workflows and tags. Adds the consumers gate's assertion list (the other two gates had one), the keys each gate adds to result.json, what a manifest's expected and primaryFile do, and the view-must-be-an-object change from #23 to the untagged row. States that an all-skipped consumers run passes, as it does today (#21). Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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.
Summary
view()took the last output line as the view, andcommon.run()places stderr after stdout, so a library warning failed a correct read as a verdict on the candidate. The view is now read by a new pure helper,parse_view(), as the last line holding a JSON object. Output with no such line still fails, and a non-zero exit is still returned unchanged. A view that is not an object (previously accepted byview()) is now rejected; every scenario inscenarios/prints an object.url in specwas a substring test, so a repository URL matched every longer repository name, and a consumer that does not pin the library was tested instead of skipped._names_url()now requires the URL to end at the end of the spec, or at@ # / ? ;or whitespace, with or without.git. The issue's list was widened with?,;and whitespace so that a marker after a bare URL is still recognised.save_compat.pydocstring, the READMEscenariorow, the consumers paragraph and the "not in a tag yet" row were updated.No assertion name changes.
gates/common.pyand the workflows are untouched.Closes #18
Closes #20
Verification status: gate run UNVERIFIED
A real gate run was not obtained, so this PR is not to be merged automatically. The dispatch's permission allow-list required approval for
python3.12, for env-prefixed gate commands and forgh workflow run, and no approver was present.pythonon this host is 2.7 andpython3is 3.8. These blocks were not worked around.The following evidence was obtained:
python3 -m unittest tests/test_save_compat_view.py tests/test_consumers_find_pin.py tests/test_save_compat_migrations.py tests/test_result.pyon 3.8: 43 tests, OK, 4 skipped (tomllibneeds 3.11+).tests/test_tests_gate_probe.pycannot be imported on 3.8, with or without this change.gates/consumers_gate.pyatorigin/main:test_a_url_that_only_starts_with_the_repository_is_not_a_pinfailed on all 4 lines; restored, it passed.gates/save_compat.pyatorigin/main:test_a_clean_read_with_a_warning_after_it_passesfailed with(1, None, ...) != (0, {'saves': []}, ...), andtest_a_scenario_that_printed_no_object_failsfailed; restored, both passed.gates/save_compat.pyrun, PASS/FAIL lines to be quoted. No PASS or FAIL line from a real gate run exists yet.gates/consumers_gate.pyrun, PASS/FAIL lines to be quoted.Suggested runs on this branch, on 3.12:
Known limit
A stderr line that is itself a JSON object, such as a structured log record, is still read as the view, because
run()joins both streams. Separating them means changinggates/common.py, which is outside this PR.Issues not taken this cycle
gates/common.py, which is on the do-not-auto-merge list, and the issue asks for it to be kept apart.This PR description was drafted during a Gardener session (https://github.com/Stephenson-Software/gardener).
drafted by Claude on behalf of Daniel Stephenson
🤖 Generated with Claude Code