The 20 falsification gates

Every gate is encoded in contracts/claude-code-parity-apr-v1.yaml (canonical in aprender, pinned here via contracts/pin.lock). Every gate has:

  1. A FALSIFY-CCPA-NNN ID
  2. A short name
  3. A status (PROPOSED / ACTIVE_ALGORITHM_LEVEL / ACTIVE_RUNTIME)
  4. A test (or tests) that asserts the falsifier
  5. A natural-language description of what would falsify the gate

Full table — 20 gates

Source-of-truth invariants (M0+)

IDNameStatusMechanism
CCPA-009ci_main_branch_greenACTIVE_RUNTIMEbranch protection requires ci/gate
CCPA-010pmat_comply_100pctACTIVE_RUNTIMEpmat comply check: is_compliant=true ∧ 0 Fail checks
CCPA-011line_coverage_100pctACTIVE_RUNTIMEcargo llvm-cov: 100% functions ∧ ≥99% lines
CCPA-012pv_contract_gate_on_commitACTIVE_RUNTIMEpre-commit hook + CI pv validate + pin-check

Behavioral parity gates

IDNameStatusAsserted by
CCPA-001trace_schema_roundtripACTIVE_RUNTIMEcrates/ccpa-trace/tests/falsify_ccpa_001_roundtrip.rs (17 tests)
CCPA-002replay_determinismACTIVE_RUNTIMEcrates/ccpa-replayer/ (16 tests)
CCPA-003mock_completenessACTIVE_RUNTIMEsame harness
CCPA-004tool_call_equivalenceACTIVE_RUNTIMEcrates/ccpa-differ/tests/falsify_ccpa_004_tool_equivalence.rs (36 tests)
CCPA-005file_mutation_equivalenceACTIVE_RUNTIMEcrates/ccpa-differ/tests/falsify_ccpa_005_file_mutation.rs (15 tests)
CCPA-006sovereignty_on_replayACTIVE_RUNTIMEcrates/ccpa-differ/tests/falsify_ccpa_006_sovereignty.rs (10 tests)
CCPA-007corpus_coverageHARD-BLOCKING (M16)tests + CI ccpa coverage --oos-rows ...
CCPA-008parity_score_boundADVISORY (M230)crates/ccpa-differ/tests/falsify_ccpa_008_parity_score.rs (24 tests)
CCPA-013first_recorded_parity_scoreDISCHARGEDfixtures/canonical/measured-parity.json (n=30, aggregate=1.0000)
CCPA-014os_event_parity_boundACTIVE_RUNTIMEcrates/ccpa-differ/tests/falsify_ccpa_014_os_event_parity.rs
CCPA-015os_trace_output_purityACTIVE_RUNTIMEcrates/ccpa-subproc/tests/falsify_ccpa_015_output_purity.rs
CCPA-016outcome_parity_boundACTIVE_RUNTIMEcrates/ccpa-differ/tests/falsify_ccpa_016_outcome_parity.rs
CCPA-017project_scale_parity_boundPROPOSED (v1.28.0)crates/ccpa-differ/tests/falsify_ccpa_017_project_scale_parity.rs
CCPA-018arena_recovery_rate_boundPROPOSED (v1.29.0)crates/ccpa-arena/tests/falsify_ccpa_018_arena_recovery_rate.rs
CCPA-019calibration_required_before_verdictPROPOSED (v1.32.0)crates/ccpa-differ/tests/falsify_ccpa_019_calibration.rs
CCPA-020contract_compliance_per_turnPROPOSED (v1.32.0)crates/ccpa-arena/tests/falsify_ccpa_020_contract_compliance.rs

Cross-reference per chapter

Mechanically asserted

Every gate is enforced by pv validate per CLAUDE.md § "DOGFOOD pv, NEVER bash". pv is the dogfooded contract validator (binary from aprender-contracts-cli). Re-implementing what pv already does in bash/python is muda and is rejected. If pv validate rejects a contract, fix the contract or extend aprender-contracts/src/schema/.