Assessment receipt validator 1.0 Supports receipt template 1.0 and prospective methodology 1.0. Documentation revision 1.1 | October 5, 2026 | Validator 1.0 unchanged Run locally with Python 3.10 or newer. No installation or dependencies are needed. From the directory containing the validator and receipt downloads: python3 -B validate_assessment_receipt_v1.py ai-prediction-ledger-assessment-template-v1.json python3 -B validate_assessment_receipt_v1.py ai-prediction-ledger-assessment-example-v1.json python3 -B validate_assessment_receipt_v1.py receipt.json --require-complete python3 -B validate_assessment_receipt_v1.py receipt-a.json receipt-b.json --require-complete The last two commands require real assessment files supplied by you. The downloaded example is fictional and cannot pass --require-complete as a real assessment. Results are JSON printed to standard output. The validator reads each supplied file and checks its declared fields, references, states and supported arithmetic. It does not edit inputs, fetch evidence, open frozen contracts, execute formula strings, publish assessments or connect to the ledger. No historical reassessment occurs. Reading the report valid: no detected format or rule violation. A blank template can be valid. complete_for_human_review: a real assessment has supplied the fields checked here. This checks a subset of methodology requirements, not full policy compliance, evidence verification or approval to publish. See the checklist below. errors: violations, with field paths. incomplete_fields: information still needed for human review. Incomplete drafts can pass ordinary validation. Declared published/included receipts fail if incomplete. warnings: verification limits and example exclusions. passed: all supplied files passed the requested mode. ledger_writes and network_requests: always zero. Exit status 0 means the requested checks passed. Status 1 means invalid input, unreadable files, duplicate included families, or incompleteness when required. Argument/usage errors have argparse's standard exit status 2. Checks The validator rejects unknown fields, duplicate JSON keys, non-finite numbers, numeric strings where numbers are required, probabilities outside [0,1], invalid dates, dangling evidence references, incompatible assessment states, numeric results for unresolved outcomes, legacy-write instructions and historical eligibility changes. It checks the declared conditions and subclaim denominator, distinct reviewers, revision metadata, prospective aggregate prerequisites, recorded timing and evidence cutoffs. It excludes templates and fictional examples from real-assessment completeness. For a batch, it rejects more than one included receipt with the same forecast_family_id. Supply current receipts only; historical revisions remain separate archival records. Completeness checklist: policy requirements and validator coverage Checked for completeness: assessment ID/date; forecast family, forecaster, exact quote, statement date/precision, primary-source URL and locator; contract identity, registration/freeze details, designation, timing note, event, population, success rule, human assistance, acceptable evidence and cutoff; measurement metric, denominator, units and sampling method; deadline timezone/precision; assessment state/as-of/reason; aggregate reason; assessor and distinct second reviewer with dates and reproduction confirmation; disagreement flag/note when applicable; and historical-preservation scope. Resolved states also need assessment evidence IDs, at least one calculation and a deadline end. Every supplied evidence entry needs its source URL, publisher/author, source type, publication date, passage, locator and supports statement. Other declared-rule and arithmetic checks still apply. Manually check every scored assessment against policy section 5. Validator 1.0 does not require populated evidence/observation dates, observation units or population, an uncertainty description, calculation formula or calculation units. These can remain null without an incomplete_fields warning, even in a receipt declared published. Conditional date checks run when relevant dates are supplied; they do not establish that missing dates are acceptable. Record the required dated observations, units, uncertainty/limitations and formula yourself, and verify that all inputs trace to primary evidence and the frozen contract. --require-complete does not perform this policy-compliance review. Unresolved outcome evidence is different from missing attribution. An unresolved receipt can pass with clear outcome gaps and null results when its checked fields are complete. A missing statement_date, exact_quote, primary_source_url or source_locator remains incomplete even for attribution_unresolved. Such a draft fails --require-complete and is rejected if declared published or included. Keep unknown values null; do not invent them. Separate unscored public evidence-gap notices are not complete assessment receipts or prospective aggregate entries. Condition findings use assessment.condition_findings[].state values met, not_met or unknown. For an unmet prerequisite, the finding state is not_met and the overall assessment.state is condition_not_met. The latter is not a condition-finding state. This documentation revision changes no validator behavior, methodology, receipt schema, ledger record, historical score or eligibility. Original guides remain at their original URLs; revised guides have documentation v1.1 URLs. Calculation inputs fulfillment: y (binary event), or met_count and total_count (contracted subclaims). signed_error / absolute_error / relative_absolute_error: predicted_value, observed_value. threshold_shortfall: threshold, observed_value, comparison set to "at_least". days_late: achievement_date and deadline as exact YYYY-MM-DD calendar dates. brier_loss: p and y, tied to the declared explicit probability and binary outcome. Numbers must be JSON numbers, not quoted text or booleans. An exact_fraction requires integer numerator and positive integer denominator. Supplied results must reproduce from fixed built-in arithmetic within 1e-12 relative tolerance (absolute near zero). Formula text is documentation only and is never evaluated. Null results require a withheld_reason. Unsupported shortfall directions, uncertain timing and interval-valued measurements need manual treatment; this validator does not calculate interval results. It does not infer a probability from qualitative words. Human review remains necessary A passing receipt can still contain false or unsupported claims. The validator cannot authenticate sources, prove a quote is original, verify source passages or contracts, decide that a measurement implements the success rule, establish all evidence gaps, detect undeclared duplicates, or verify reviewer identities. URL checks are syntactic; the validator does not follow them. Duplicate checks cover only supplied batch files, not the public ledger. Revision checks require declared history but do not authenticate prior receipts or compare their full contents. Keep evidence, interpretation and publication review separate. No validator result authorizes a ledger write. The download runs locally; publishing it does not enable server-side validation, activate a scoring engine or change the ledger API contract. Maintainer tests (workspace only; test files are not included in this download) python3 -B work/test_assessment_receipt_validator_v1.py Tests use the existing blank template, the fictional example and in-memory synthetic receipts. They do not reassess historical records or write ledger data.