# Optional offline record checker

Version 1.2.0. No installation or network request. Requires an existing Python 3.10 or later. Review the source before running it under your own permissions. It reads only explicitly selected local UTF-8 JSON files, each up to 64 KiB, and prints a report. It does not follow evidence references, transmit data, modify files or authorize action.

From the extracted reading-pack root: `python3 tools/check_record.py decision-record/example.json`

A zero exit status means a structurally valid, internally consistent record, including an unknown or fictional record. It does NOT mean that an artifact passed, evidence is true or action is authorized. Inspect structure_valid, record_complete, decision_from_recorded_statuses, record_type and limitations. artifact_verified, evidence_verified, method_reference_verified and action_authorized always remain false. Exit 1 means a decision-label conflict; exit 2 means invalid input/schema/comparison file; exit 3 means a requested method comparison mismatched or was unavailable. An unavailable or mismatched method does not erase the separate recorded check outcome.

Use schema 1.1. Earlier 1.0 records need the added artifact revision, method reference and recommendation fields; the checker does not migrate records. For a real completed record, change record_type to task_record, confirm the prefilled method_reference or fill it from the exact guide JSON, and replace draft limitations with what remains unverified. artifact_revision records the template/build provenance; put your actual task or deliverable version in scope_and_version. The source_sha256 field identifies the normalized build-input guide record, not the downloadable file bytes; copy it from the matching guide JSON along with build_revision. Without --guide, method references are checked for shape only. With --guide, the checker recomputes the normalized source digest and compares the recorded ID and revision; with --manifest, it also compares the supplied guide bytes with the selected manifest entry. Matching local inputs is not proof of publisher authenticity or current online state. A supported recorded failure dominates unrelated unavailable checks; missing evidence is not invented.

The direct worksheet remains sufficient if you do not need automated consistency checking. No agent-performance advantage is claimed.

## Match a saved decision to a supplied guide

From the pack root: `python3 tools/check_record.py sample/decision-record.json --guide guides/review-agent-skills/guide.json --manifest reading-pack-manifest.json`

All three files are explicit inputs. Paths inside them are never opened. Read method_comparison.status separately from decision_from_recorded_statuses. A source-content match does not cover generated metadata, including navigation and authorization labels unless the optional manifest byte comparison is also supplied. The manifest has no publisher signature; if someone replaces both file and manifest, a match cannot establish authenticity. Preserve a separately trusted archive digest or source when provenance matters. Older guide formats without source_fields return unavailable rather than guessed agreement.
