Skip to content

Add markproof init, and the files a public repo is expected to have - #29

Merged
Tippel-AI merged 1 commit into
mainfrom
feat/init-and-community
Aug 31, 2026
Merged

Add markproof init, and the files a public repo is expected to have#29
Tippel-AI merged 1 commit into
mainfrom
feat/init-and-community

Conversation

@Tippel-AI

Copy link
Copy Markdown
Owner

Final step of the audit remediation.

markproof init

The CLI's module docstring promised this command since M4:

``verify-report``, ``keygen`` and ``init`` arrive with the signed report in M4.

Two of the three shipped. A promised-but-absent command tells a reader the
documentation is not checked against the code — the wrong first impression for a
tool whose subject is verification, and part of why the adoption axis graded
weak.

The scaffold is deliberately small: one chat probe, with media, UI and text
marking commented out and each carrying the reason it is optional. A config
full of settings nobody chose is how people end up running checks they cannot
interpret. It refuses to overwrite an existing file, and it points a newcomer at
examples/demo-bot, because someone evaluating this tool may not have an endpoint
of their own yet.

The load-bearing test is that the output actually loads through load_config and
names a rulepack that ships. A scaffold that fails validation would be worse than
no command at all.

Community files

Not copied from a template — two of them are shaped by what this project is:

"A verdict looks wrong" asks which direction the verdict went and names
PASS where I expected FAIL first, as the outcome nothing downstream will catch.
It asks for report.json specifically: since #25 that file carries the rulepack
digest and the probe URLs, so a run can be reconstructed from it.

"A rule reads the law wrong" points at docs/RULES_SOURCES.md first and says
plainly that legal disagreement is welcome. The rulepacks are CC-BY and cite their
paragraphs precisely so that argument can be had in the open — the project does
not claim to be right about Article 50, it claims to be explicit about what it
checks.

The contact links route security reports to a private advisory, and route
"is my system in scope?" to the Commission, because that question is for a
lawyer and not for this tool.

The code of conduct says the thing that matters here — argue with the work,
and distinguish "I ran it and it failed" from "I think it would fail" — and is
honest that this is maintained by one person alongside other work, so some good
contributions will not be merged.

Plus CITATION.cff, since the rulepacks are citable material in their own right.

444 tests, ruff + mypy strict clean.

Where the audit stands after this

Axis Was Addressed by
first-contact weak #23
correctness adequate #24, #25
tests weak #24, #26
honesty adequate #20, #27
release adequate #23, #28
adoption weak #26, #28, this
architecture adequate #24, #28

Still open: #18 (C2PA-in-HTML rule), #19 (marking vs detectability in the report),
#1 (PyPI upload, which is yours to do).

🤖 Generated with Claude Code

The CLI module docstring had promised `init` since M4. It did not exist, which
tells a reader the documentation is not checked against the code — the wrong first
impression for a tool that sells verification. The audit rated adoption weak partly
on this.

`markproof init` writes a starting config. Deliberately small: one chat probe,
with media, UI and text marking commented out and the reason each is optional. A
scaffold full of settings nobody chose is how people end up running checks they
cannot interpret. It refuses to clobber an existing file, and it points a
first-time user at examples/demo-bot, because someone evaluating this tool may not
have an endpoint of their own yet.

Six tests, the load-bearing one being that the scaffold actually loads through
`load_config` and names a rulepack that ships. A starting config that fails
validation would be worse than no command.

Also the community files the repository lacked. Two of them are shaped by what
this project is rather than copied from a template:

  The "a verdict looks wrong" issue form asks which direction the verdict went,
  and names a PASS-that-should-have-failed as the outcome nothing downstream will
  catch. It asks for report.json specifically, because since #25 that file carries
  the rulepack digest and the probe URLs, so a run can be reconstructed.

  A second form exists for "a rule reads the law wrong", pointing at
  docs/RULES_SOURCES.md first. Legal disagreement is the most valuable
  contribution this project can get, and the rulepacks are CC-BY and cite their
  paragraphs precisely so that argument can be had in the open.

The code of conduct says the thing that actually matters here — argue with the
work, and say what you actually verified rather than what you believe — and is
honest that this is maintained by one person, so some good contributions will not
be merged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Tippel-AI
Tippel-AI merged commit 4539d47 into main Aug 31, 2026
7 of 8 checks passed
@Tippel-AI
Tippel-AI deleted the feat/init-and-community branch August 31, 2026 19:45
Tippel-AI added a commit that referenced this pull request Aug 31, 2026
pre-commit run --all-files only covers tracked files, so running it before
git add left four new files unchecked. CI, which checks out everything, caught
them — and I merged #29 without reading the failing check first.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant