{
  "checks": {
    "accessibility_conformance_claimed": false,
    "all_1037_exercise_answer_rows_preserved": true,
    "all_114_concepts_and_terms_indexed": true,
    "all_11_component_rights_preserved": true,
    "all_13999_native_relations_indexed": true,
    "all_15_native_manifest_members_hash_verified": true,
    "all_307_corrections_indexed": true,
    "all_3541_stable_units_indexed_without_body_text": true,
    "all_8_native_artifact_hashes_and_pages_preserved": true,
    "answer_provenance_1035_plus_2_preserved": true,
    "canonical_term_and_correction_stores_without_duplicate_rows": true,
    "common_virtual_stream_materialized": false,
    "documentation_data_mirror_byte_identity": true,
    "documentation_html_source_body_or_reversible_navigation_overlay": true,
    "epub_claimed": false,
    "exact_reverse_extraction_22131": true,
    "exercise_answer_bijection_verified": true,
    "existing_lossless_common_migration_reused": true,
    "historical_native_and_current_public_status_distinguished": true,
    "html_structure_and_documentation_links": true,
    "implementation_hashes_bound": true,
    "independent_native_projection_snapshot": true,
    "interoperability_envelope_hash_verified": true,
    "live_network_readback_performed_by_this_validator": false,
    "locked_anonymous_public_readback_receipt_hash_verified": true,
    "locked_readback_reports_zenodo_concept_lineage_open_and_published": true,
    "native_bodies_copied": false,
    "native_outcomes_invented": false,
    "native_prerequisites_invented": false,
    "native_segments_copied": false,
    "paired_receipt_atomic_staging_and_rollback_tested": true,
    "presentation_safe_titles_with_raw_native_titles_preserved": true,
    "public_manifest_validation_relationships": true,
    "public_state_changed": false,
    "publication_receipts_excluded_from_fixed_replay_inventory": true,
    "receipt_supplied_public_urls_and_hashes_preserved": true,
    "root_qualified_workspace_input_paths": true,
    "semantic_textbook_html_claimed": false,
    "source_closure_descriptor_hash_verified": true,
    "stale_pass_receipts_invalidated_before_build_and_validation": true,
    "strict_public_and_reader_allowlists": true,
    "target_supplied_authorization_provenance_preserved": true,
    "three_component_seventeen_chapter_fifty_seven_section_route": true
  },
  "contract": "course-learning-capability/1",
  "counts": {
    "answers": 1037,
    "artifacts": 8,
    "assets": 432,
    "chapters": 17,
    "common_crosswalk_records": 22131,
    "common_virtual_records": 22131,
    "components": 3,
    "concepts": 114,
    "corrections": 307,
    "entity_records_excluding_csv_relations": 8132,
    "exercises": 1037,
    "github_native_backend_files_verified": 15,
    "github_release_assets": 9,
    "github_release_assets_fully_hash_verified": 8,
    "indonesian_edition_supplied_answers": 2,
    "native_backend_manifest_members": 15,
    "native_records_total": 22131,
    "native_upstream_answers": 1035,
    "qa_events": 72,
    "relations": 13999,
    "rights_components": 11,
    "sections": 57,
    "segments": 3528,
    "source_files": 64,
    "target_reader_pages": 1124,
    "target_reader_pdfs": 3,
    "terms": 114,
    "unanswered_exercises": 0,
    "units": 3541,
    "zenodo_files": 9
  },
  "course_id": "B40",
  "html_links_checked": 24,
  "implementation": [
    {
      "bytes": 86968,
      "path": "scripts/b40_capability_model_v1.py",
      "sha256": "c68c31b654d8155600aa44cd1fb5dd8953cb2e463335eb8b996da3bcb37350dd"
    },
    {
      "bytes": 29966,
      "path": "scripts/build_b40_capability_v1.py",
      "sha256": "7c0d7e15ff085954d3c2d2d8e0dcb13089a326272bd93d12d1ca45c547ace5d7"
    },
    {
      "bytes": 51995,
      "path": "scripts/validate_b40_capability_v1.py",
      "sha256": "89ffed64975420b797956f6cd3b65a74e0798f63aa89b2e55b9822c0deec6c9b"
    }
  ],
  "isolated_two_build_byte_identity": {
    "byte_identical": true,
    "file_count": 15,
    "inventory": [
      "README.md",
      "data/capabilities.json",
      "data/claim-boundary.json",
      "data/concept-index.json",
      "data/educator-map.json",
      "data/learning-map.json",
      "data/ledger-references.json",
      "data/public-evidence.json",
      "data/relation-index.json",
      "data/rights-and-terms.json",
      "fixtures/negative-fixtures.json",
      "input/source-lock.json",
      "manifest.json",
      "views/B40-pengajar.html",
      "views/B40.html"
    ],
    "separate_python_processes": true,
    "tree_sha256": "23826de929ee9a7cf013d2565176a8117c1e60f8fe6d157af71dc6c31a25164c"
  },
  "locale": "id-ID",
  "manifest": {
    "bytes": 8555,
    "path": "manifest.json",
    "sha256": "43a292ac371a54cb3304a76873571eb8653abeadfb16738510c0837c774da578"
  },
  "migration_receipt": {
    "bytes": 17890,
    "path": "04_mirrors/id/program-matematika-indonesia-d120-current/releases/v0.59.0/hefferon-linear-algebra-id-backend-v1-migration-receipt.json",
    "sha256": "81f976c758f0453b3df1d2b07294955ccad0817b252a464df2d6b21166e4d4b0"
  },
  "native_manifest_hashes_verified": 15,
  "negative_fixtures": [
    {
      "expected_error": "B40-UNIT-IDENTITY",
      "fixture": "duplicate_unit",
      "state": "rejected"
    },
    {
      "expected_error": "B40-UNIT-IDENTITY",
      "fixture": "missing_unit",
      "state": "rejected"
    },
    {
      "expected_error": "B40-UNIT-ORDER",
      "fixture": "unit_order_change",
      "state": "rejected"
    },
    {
      "expected_error": "B40-LEARNER-ROUTE",
      "fixture": "component_loss",
      "state": "rejected"
    },
    {
      "expected_error": "B40-LEARNER-ROUTE",
      "fixture": "chapter_loss",
      "state": "rejected"
    },
    {
      "expected_error": "B40-PRESENTATION-TITLES",
      "fixture": "presentation_title_loss",
      "state": "rejected"
    },
    {
      "expected_error": "B40-ROUTE-COVERAGE",
      "fixture": "route_assignment_loss",
      "state": "rejected"
    },
    {
      "expected_error": "B40-COURSE-PREREQUISITE",
      "fixture": "prerequisite_invention",
      "state": "rejected"
    },
    {
      "expected_error": "B40-COURSE-OUTCOME",
      "fixture": "outcome_invention",
      "state": "rejected"
    },
    {
      "expected_error": "B40-ANSWER-BIJECTION",
      "fixture": "answer_mapping_loss",
      "state": "rejected"
    },
    {
      "expected_error": "B40-ANSWER-BIJECTION",
      "fixture": "duplicate_answer_mapping",
      "state": "rejected"
    },
    {
      "expected_error": "B40-ANSWER-ID-SELECTOR",
      "fixture": "ordinal_answer_selector",
      "state": "rejected"
    },
    {
      "expected_error": "B40-ANSWER-DIRECTION",
      "fixture": "answer_direction_reverse",
      "state": "rejected"
    },
    {
      "expected_error": "B40-ANSWER-BACKPOINTER",
      "fixture": "answer_backpointer_corrupt",
      "state": "rejected"
    },
    {
      "expected_error": "B40-ANSWER-ORDER-PATH",
      "fixture": "answer_order_path_corrupt",
      "state": "rejected"
    },
    {
      "expected_error": "B40-ANSWER-LOCATOR-HASH",
      "fixture": "answer_locator_hash_corrupt",
      "state": "rejected"
    },
    {
      "expected_error": "B40-ANSWER-PROVENANCE",
      "fixture": "answer_provenance_collapse",
      "state": "rejected"
    },
    {
      "expected_error": "B40-ANSWER-PROVENANCE",
      "fixture": "answer_provenance_symmetric_swap",
      "state": "rejected"
    },
    {
      "expected_error": "B40-ANSWER-AUTHORIZATION",
      "fixture": "answer_authorization_loss",
      "state": "rejected"
    },
    {
      "expected_error": "B40-CONCEPTS",
      "fixture": "concept_loss",
      "state": "rejected"
    },
    {
      "expected_error": "B40-TERMS",
      "fixture": "term_loss",
      "state": "rejected"
    },
    {
      "expected_error": "B40-RELATIONS",
      "fixture": "relation_loss",
      "state": "rejected"
    },
    {
      "expected_error": "B40-RELATION-TYPES",
      "fixture": "relation_type_change",
      "state": "rejected"
    },
    {
      "expected_error": "B40-RELATION-PROJECTION",
      "fixture": "relation_endpoint_change",
      "state": "rejected"
    },
    {
      "expected_error": "B40-PROJECTION-DOUBLE-COUNT",
      "fixture": "projection_double_count",
      "state": "rejected"
    },
    {
      "expected_error": "B40-LEDGER-CLOSURE",
      "fixture": "terminology_loss",
      "state": "rejected"
    },
    {
      "expected_error": "B40-LEDGER-CLOSURE",
      "fixture": "correction_loss",
      "state": "rejected"
    },
    {
      "expected_error": "B40-PROJECTION-REDUNDANCY",
      "fixture": "redundant_terminology_materialization",
      "state": "rejected"
    },
    {
      "expected_error": "B40-PROJECTION-REDUNDANCY",
      "fixture": "redundant_correction_materialization",
      "state": "rejected"
    },
    {
      "expected_error": "B40-RIGHTS",
      "fixture": "rights_loss",
      "state": "rejected"
    },
    {
      "expected_error": "B40-ARTIFACTS",
      "fixture": "artifact_page_change",
      "state": "rejected"
    },
    {
      "expected_error": "B40-ARTIFACT-STATUS",
      "fixture": "artifact_status_conflation",
      "state": "rejected"
    },
    {
      "expected_error": "B40-MIGRATION-ROUNDTRIP",
      "fixture": "migration_roundtrip_downgrade",
      "state": "rejected"
    },
    {
      "expected_error": "B40-CAPABILITIES",
      "fixture": "capability_summary_change",
      "state": "rejected"
    },
    {
      "expected_error": "B40-PUBLIC-ACCESS",
      "fixture": "closed_public_access",
      "state": "rejected"
    },
    {
      "expected_error": "B40-PUBLIC-EVIDENCE",
      "fixture": "public_checks_change",
      "state": "rejected"
    },
    {
      "expected_error": "B40-PUBLIC-EVIDENCE",
      "fixture": "credentials_recorded",
      "state": "rejected"
    },
    {
      "expected_error": "B40-PUBLIC-EVIDENCE",
      "fixture": "reader_identity_change",
      "state": "rejected"
    },
    {
      "expected_error": "B40-PUBLIC-ALLOWLIST",
      "fixture": "public_payload_injection",
      "state": "rejected"
    },
    {
      "expected_error": "B40-PUBLIC-ALLOWLIST",
      "fixture": "reader_payload_injection",
      "state": "rejected"
    },
    {
      "expected_error": "B40-ZENODO-ACCESS",
      "fixture": "closed_zenodo",
      "state": "rejected"
    },
    {
      "expected_error": "B40-READER-SCOPE",
      "fixture": "reader_scope_overclaim",
      "state": "rejected"
    },
    {
      "expected_error": "B40-FORMAT-OVERCLAIM",
      "fixture": "semantic_html_overclaim",
      "state": "rejected"
    },
    {
      "expected_error": "B40-FORMAT-OVERCLAIM",
      "fixture": "epub_overclaim",
      "state": "rejected"
    },
    {
      "expected_error": "B40-FORMAT-OVERCLAIM",
      "fixture": "accessibility_overclaim",
      "state": "rejected"
    },
    {
      "expected_error": "B40-BOUNDARY-NATIVE_BODIES_COPIED",
      "fixture": "native_body_copy",
      "state": "rejected"
    },
    {
      "expected_error": "B40-DATA-BODY-COPY",
      "fixture": "body_field_injection",
      "state": "rejected"
    },
    {
      "expected_error": "B40-BOUNDARY-NATIVE_SEGMENTS_COPIED",
      "fixture": "native_segment_copy",
      "state": "rejected"
    },
    {
      "expected_error": "B40-BOUNDARY-EXERCISE_ANSWER_JOINS_INFERRED",
      "fixture": "answer_join_inference",
      "state": "rejected"
    },
    {
      "expected_error": "B40-BOUNDARY-TARGET_SUPPLIED_ANSWERS_RETYPED_AS_UPSTREAM",
      "fixture": "supplied_answer_retyping",
      "state": "rejected"
    },
    {
      "expected_error": "B40-BOUNDARY-TARGET_SUPPLIED_AUTHORIZATION_OMITTED",
      "fixture": "authorization_omission",
      "state": "rejected"
    },
    {
      "expected_error": "B40-RIGHTS",
      "fixture": "blanket_license_claim",
      "state": "rejected"
    },
    {
      "expected_error": "B40-BOUNDARY-COMMON_VIRTUAL_BACKEND_MATERIALIZED",
      "fixture": "common_backend_materialization",
      "state": "rejected"
    },
    {
      "expected_error": "B40-PUBLIC-ACCESS",
      "fixture": "public_state_change",
      "state": "rejected"
    },
    {
      "expected_error": "B40-SOURCE-ROOT",
      "fixture": "unqualified_source_path",
      "state": "rejected"
    },
    {
      "expected_error": "B40-SOURCE-LOCK-IDENTITY",
      "fixture": "source_lock_native_role_change",
      "state": "rejected"
    },
    {
      "expected_error": "B40-SOURCE-LOCK-REPOSITORY",
      "fixture": "source_repository_change",
      "state": "rejected"
    },
    {
      "expected_error": "B40-SOURCE-HASH:units.jsonl",
      "fixture": "input_hash_change",
      "state": "rejected"
    },
    {
      "expected_error": "B40-MANIFEST-COUNTS",
      "fixture": "manifest_count_change",
      "state": "rejected"
    },
    {
      "expected_error": "B40-STALE-RECEIPT",
      "fixture": "stale_receipt_survival",
      "state": "rejected"
    },
    {
      "expected_error": "B40-REPLAY-INVENTORY",
      "fixture": "publication_noise_in_replay",
      "state": "rejected"
    },
    {
      "expected_error": "B40-RECEIPT-ROLLBACK",
      "fixture": "paired_receipt_partial_publish",
      "state": "rejected"
    }
  ],
  "public_documentation": {
    "base_path": "docs/backend/b40",
    "educator_path": "docs/backend/b40/B40-pengajar.html",
    "learner_path": "docs/backend/b40/B40.html",
    "manifest_path": "docs/backend/b40/manifest.json",
    "validation_path": "docs/backend/b40/validation.json"
  },
  "public_readback": {
    "bytes": 19910,
    "path": "04_mirrors/id/program-matematika-indonesia-d120-current/backend/course-capsule-v1/adapters/b40-capability-v1/input/public-native-readback.json",
    "sha256": "d5358c1a40bff3ad4544e4afb8734743d5da490c8ce4a03c704f145a6c2ee5ee"
  },
  "python": {
    "executable_name": "python.exe",
    "version": "3.13.9"
  },
  "schema": "b40-capability-validation/1",
  "source_hashes_verified": 18,
  "state": "pass",
  "validation_scope": {
    "common_virtual_stream_materialized": false,
    "network_access": "not performed; verifies the hash-locked anonymous readback receipt supplied by the separate public verifier",
    "public_mutation": false
  }
}
