Audit: make the front page true again, and say how this was built - #36
Merged
Conversation
**MPF-M-002 was missing from the rule table, and a scope limit still denied it.** Both are my error and they have the same cause: PR #32 made three README edits in one script, the third assertion failed, and nothing was written. I fixed the third separately and never noticed the first two had not landed. So the front page listed six rules while seven shipped, and told readers the tool does not check C2PA marking on web pages twelve lines above an example config that configures exactly that. The rule-table guard could not catch it: it asserted documented ⊆ shipped, not the reverse, and it matched rule ids anywhere in the file rather than in the table — so a missing row passed because the same id appeared in the scope limit that denied it. Both directions now, scoped to the table, mutation-tested. The table also gained a "Fails the build?" column. A reader deciding whether to put this in CI needs to know that two rules warn rather than fail, and why: the obligation is real, the judgement is not a string comparison. **The transcript was re-captured.** It predated three behaviour changes, so it showed verdicts the tool no longer produces. The new one shows two skips, which is a better advertisement than the old one: MPF-T-001 refusing to score an 18-token reply, and MPF-L-001 saying an images API is not where a person meets the content and naming the probe that would answer the question. **docs/RULES_SOURCES.md is now linked from the README**, with an English preface. It is the document that answers "this is one person's reading of an ambiguous regulation" — 884 lines of it, in German, and nothing pointed at it. The body stays German because that is the language the sources were read in and a translation would put a second interpretation between the reader and the argument; the paragraph numbers are the part that matters and they are language-neutral. **The README now says the project was built with heavy AI assistance.** The commit history makes the pace obvious, so it is better said than inferred — along with what that does and does not change, and a pointer at the two documents where the judgement calls are inspectable. Also: a contributor path from the README; the empty negative-test scaffolding replaced with a table of where those cases actually live, since "where are the negative tests" is a fair question to ask a compliance tool; the pre-0.1.0 self-audit marked superseded rather than deleted, because deleting a stale record is the habit this project argues against everywhere else; internal launch drafts removed from the public docs directory; CITATION.cff no longer claims Apache-2.0 for material that is CC-BY; `markproof init` no longer stamps someone else's SPDX header onto the user's config; and the WeasyPrint renderer carries the Article 50(2) two-limbs qualification the other two already had. Co-Authored-By: Claude Opus 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.
The documentation half of the launch audit. Follows #34 and #35.
The two that were my fault
MPF-M-002 was missing from the rule table, and a scope limit still denied it.
Same cause: PR #32 made three README edits in one script, the third assertion
failed, and nothing was written. I fixed the third separately and never checked
the first two had landed.
So the front page listed six rules while seven shipped, and said
…twelve lines above an example config containing
type: document, whichconfigures exactly that.
The guard could not catch it. It asserted
documented ⊆ shippedbut not thereverse, and matched rule ids anywhere in the file rather than inside the table —
so a deleted row still passed, because the same id appeared in the scope limit
denying it. Both directions now, scoped to the table, and mutation-tested: removing
the row turns the suite red.
The table gained a severity column
MPF-D-001MPF-D-002A reader deciding whether to put this in CI needs to know two rules warn rather
than fail — and why: the obligation is real, the judgement is not a string
comparison.
The transcript, re-captured
It predated three behaviour changes. The new one is better advertising than the
old:
Two refusals to guess, in the tool's own words.
Two things a hostile reader would have said
"Where is the document that admits this is one person's reading of an ambiguous
regulation?" It exists — 884 lines of it — and nothing pointed at it. Now linked
from the README with an English preface. The body stays German: that is the
language the sources were read in, and a translation would put a second
interpretation between the reader and the argument. The paragraph numbers are the
part that matters and they are language-neutral.
"How was this built?" The commit history makes the pace obvious, so it is
better said than inferred. The README now says it plainly, along with what that
changes and what it does not — and points at the two documents where the judgement
calls are open to inspection.
Also
actually live. "Where are the negative tests" is a fair question to ask a
compliance tool, and the answer should not be "grep for it".
record is the habit this project argues against everywhere else.
CITATION.cffno longer claims Apache-2.0 for material that is CC-BY.markproof initno longer stamps someone else's SPDX header onto the user's config.524 tests, ruff + mypy strict clean.
🤖 Generated with Claude Code