…world release design
Resolves the release.yml conflict in favor of this branch's workflow_dispatch-
only, provenance-script-driven publisher (scripts/verify_release_provenance.py):
per repo-owner decision, releases are no longer supposed to auto-trigger on
push, so master's push-triggered direct-cp release.yml is discarded.
Resolves scripts/verify_distribution_consistency.py by keeping both audit
functions and wiring them into the same run_audit() aggregate:
- release_workflow_errors() (this branch): validates release.yml's exact
closed-world step contract.
- check_target_triplet_consistency() (master, issue #5): validates that
distribution/targets.json is the single naming source of truth across
release.yml, the installers and the update manifest. Adjusted its
release.yml assertion from a per-asset "cp asset dist/asset" text match to
a generic "publishes dist/*" check, since the kept closed-world workflow
stages assets via the provenance script rather than literal per-asset copy
steps.
Merged the docstring and imports (kept this branch's sys/ElementTree/asdict
for --junit/--json plus master's issue #5 target-triplet note).
Also fixes fallout from the merge:
- tests/test_distribution_consistency.py and tests/unit/conftest.py fixtures
now include a distribution/targets.json + signed manifest artifact so the
newly-wired target-triplet check doesn't add spurious findings.
- tests/test_verify_distribution_consistency.py and
tests/unit/test_verify_distribution_consistency.py (both added by master)
assumed the older main()/ROOT-mutation/rel() API; updated to the kept
argparse-based main(argv)/run_audit(root) API and current message wording.
- scripts/bench_verify_distribution_consistency.py called vdc.main() with no
args, which now parses the caller's own sys.argv; passes argv=[] instead.
- added tests/__init__.py and tests/unit/__init__.py: two same-named test
modules (tests/test_verify_distribution_consistency.py and
tests/unit/test_verify_distribution_consistency.py, both pre-existing on
master) collided under pytest's default import mode when collecting
tests/ as a whole; this is unrelated to the release-workflow conflict but
blocked verifying the full suite.
Verified: python -m pytest tests/test_distribution_consistency.py
tests/test_release_provenance.py -v -> 37 passed. Full tests/ -> 81 passed,
7 pre-existing failures in tests/test_quality_helpers.py (untouched by this
merge) caused by a subprocess/stdio handle quirk in this sandbox, unrelated
to the merge.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Summary
quality-gatejobsMeasured local evidence
Tracking
Related: #10. Remaining acceptance stays tracked until this PR is merged, Actions is enabled, the live workflow is green, and the master ruleset rejects a non-green/up-to-date violation.