Bind audit reports to exact inputs - #9
Merged
Conversation
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.
What changed
audit_spec()reportsChart.audit()reports to their chart contract, data, claim, and installed package version0.3with component hashes plus a bundle hashmatches_spec(...),matches_chart(...), and genericmatches_inputs(...)verification helpersWhy
A
READYreport was previously detached from the exact inputs that produced it. An agent could audit one spec, then edit the spec, data, or claim and still retain a mechanically green report with no intrinsic way to detect that drift.This PR makes the audit artifact content-addressed. A matching report means the inputs being shared are the same inputs that produced the verdict.
It does not make
READYa scientific or human-approval verdict. The hashes prove content identity only.Behavior
matches_spec(...) == Truedata=argument is suppliedValidation
Final GitHub Actions run #189 on head
9c59bf6passed completely:CI also caught two useful integration issues during development:
super()in the slotted dataclass report subclass failed on Python 3.10-3.12; the implementation now uses explicitAuditReportbase dispatch.0.2; it now expects0.3and verifies subject/data/claim/bundle hashes plus installed-version equality.Focused mutation coverage is in
tests/test_input_binding.py; CLI report-shape coverage is intests/test_cli.pyand the package workflow.