{
  "version": "v3",
  "run_date": "2026-09-25",
  "python": "3.12.14",
  "sqlite": "3.53.1",
  "command": "python3 record_validation.py",
  "tests_run": 36,
  "passed": 36,
  "failed": 0,
  "errors": 0,
  "skipped": 0,
  "duration_seconds": 0.512,
  "test_names": [
    "test_approval.ApprovalTests.test_approval_expires_before_dispatch",
    "test_approval.ApprovalTests.test_approved_resume_does_not_redraft",
    "test_approval.ApprovalTests.test_cancel_after_effect_does_not_claim_rollback",
    "test_approval.ApprovalTests.test_cancel_before_dispatch_prevents_publish",
    "test_approval.ApprovalTests.test_concurrent_approve_reject_one_decision_wins",
    "test_approval.ApprovalTests.test_crash_after_effect_and_expiry_reconciles_without_write",
    "test_approval.ApprovalTests.test_draft_change_after_approval_invalidates_binding",
    "test_approval.ApprovalTests.test_duplicate_approval_is_idempotent",
    "test_approval.ApprovalTests.test_hash_must_match_reviewed_action",
    "test_approval.ApprovalTests.test_memory_change_while_waiting_invalidates_decision",
    "test_approval.ApprovalTests.test_memory_revoke_after_effect_still_allows_receipt_lookup",
    "test_approval.ApprovalTests.test_missing_reviewer_role_rejected",
    "test_approval.ApprovalTests.test_no_receipt_after_dispatch_stays_unknown",
    "test_approval.ApprovalTests.test_outside_scope_rejected",
    "test_approval.ApprovalTests.test_pause_has_no_side_effect_and_keeps_checkpoints",
    "test_approval.ApprovalTests.test_pending_approval_expires",
    "test_approval.ApprovalTests.test_rejection_is_terminal",
    "test_approval.ApprovalTests.test_requester_cannot_approve_own_action",
    "test_lab.Lab.test_api_adapter_mocked_success_and_429",
    "test_lab.Lab.test_cancel_fences_running_worker",
    "test_lab.Lab.test_cli_really_terminates_after_commit",
    "test_lab.Lab.test_deadline_stops_claim",
    "test_lab.Lab.test_deleted_memory_invalidates_saved_draft",
    "test_lab.Lab.test_effect_before_checkpoint",
    "test_lab.Lab.test_grader_rejects_trace_mutation",
    "test_lab.Lab.test_idempotency_payload_conflict",
    "test_lab.Lab.test_input_identity_conflict",
    "test_lab.Lab.test_memory_expiry_invalidates_task",
    "test_lab.Lab.test_memory_revision_supersedes",
    "test_lab.Lab.test_memory_scope_expiry_and_confirmation",
    "test_lab.Lab.test_normal_and_repeat_delivery",
    "test_lab.Lab.test_old_generation_cannot_commit",
    "test_lab.Lab.test_resume_after_collect",
    "test_lab.Lab.test_transient_budget_and_backoff",
    "test_lab.Lab.test_two_processes_only_one_claim",
    "test_lab.Lab.test_unknown_citation_rejected"
  ],
  "scope": "offline fixtures; real SQLite; two-process claim and decision races; real CLI exit; mocked HTTP",
  "not_tested": [
    "live model API",
    "real authentication",
    "production load",
    "network partitions",
    "browser rendering"
  ]
}