Skip to content

Public audit-verification fixture

This is a course-authored synthetic snapshot. audit_packet.py is the frozen public surface; it has no network, package installation, credential, or personal-data path. Run it and verify_audit.py with python in a copy of this directory, as the notes show.

Frozen requirements

Every disposition is judged against these requirements, not against the wording of the review:

R1 access: a viewer or an owner can read a public report; no role reads a private report body.
R2 status: the status endpoint accepts only the labels ready and queued.
R3 paths: every exported or archived report path stays under /srv/reports.
R4 secrets: no export configuration exposes a secret directory.
R5 scoring: the private-count scorer gives 1 only when the answer's first word is the number of private sample reports; every other answer scores 0.
R6 root: the report root is written once, as REPORT_ROOT; no function repeats the literal path.

Production configuration is not part of this snapshot, so no check here can read it.

Files

  • audit_packet.py is the snapshot's report feature and its deterministic evidence checks. Run it with no --check to list each check and its argument keys. A run prints the args it used, the observation and the canonical command to record as evidence. It refuses a missing, extra or wrongly typed argument: private is a JSON true or false, and role is viewer or owner.
  • model-audit.json is a recorded review with five claims about security, evaluation and maintenance. Each has an id, an area and, for most, the function it cites. It names no check, input or answer; you choose the check and input for each claim. It is course-authored practice material; no model wrote it.
  • student-audit.json is an empty starter record. Students add one verification for each recorded claim and either a new defect check or a bounded clean-scope check. The notes show a filled row, the parts shape for a claim about each member of a listed set, and both own-check shapes.
  • verify_audit.py recomputes every named check, checks the exact reproducible command, checks that the input tests the claim and derives the supported disposition from the observation. It accepts only confirmed, refuted or undetermined; an undetermined row must name the missing input or why it cannot be decided.

The verifier tests the evidence supplied by the student. The recorded review is not a model score and its text is never sent to a grader. A hand trace is not an observation; retain the command output with the frozen snapshot identifier. An own check must probe a new input or state a checked range and its remaining boundary.