{
  "schema": "kenosian.deck-review-evidence.v1",
  "created_at": "2026-10-16T03:30:10.848243+00:00",
  "author": "Peter Jang / Kenosian",
  "artifact_url": "https://kpp.kenosian.com/k-lean/deck/",
  "source_snapshot_sha256": "d31fee3aaa31d82ba435d310d0970850cb1199dfcca9a47091441e2a77314b64",
  "source_revision_kind": "content snapshot; not a new Git commit",
  "specification": {
    "id": "draft-sullivan-tls-xof-schedule-00",
    "url": "https://www.ietf.org/archive/id/draft-sullivan-tls-xof-schedule-00.txt",
    "sha256": "706f421321d24366b46fa6d7edaa5b613bb8f278f3d05f7968ac31c080d66af4",
    "sections": [
      "2",
      "7.1",
      "7.3",
      "15.8",
      "15.9",
      "D.1"
    ]
  },
  "verification": {
    "lean": "Lean (version 4.14.0, x86_64-unknown-linux-gnu, commit 410fab728470, Release)",
    "verifier": "kenosian_vault.local.check from existing repository",
    "kernel_standard": true,
    "checked_theorem_results": 23,
    "theorems": [
      {
        "fqn": "KLean.TLS.DECK.frame_append_injective",
        "axioms": [
          "propext",
          "Quot.sound"
        ]
      },
      {
        "fqn": "KLean.TLS.DECK.frame_injective",
        "axioms": [
          "propext",
          "Quot.sound"
        ]
      },
      {
        "fqn": "KLean.TLS.DECK.serialize_injective",
        "axioms": [
          "propext",
          "Quot.sound"
        ]
      },
      {
        "fqn": "KLean.TLS.DECK.serialize_append",
        "axioms": [
          "propext",
          "Quot.sound"
        ]
      },
      {
        "fqn": "KLean.TLS.DECK.lengthItem_injective",
        "axioms": [
          "propext",
          "Quot.sound"
        ]
      },
      {
        "fqn": "KLean.TLS.DECK.derive_preserves_trunk",
        "axioms": [
          "propext",
          "Quot.sound"
        ]
      },
      {
        "fqn": "KLean.TLS.DECK.derive_exact_length",
        "axioms": [
          "propext",
          "Quot.sound"
        ]
      },
      {
        "fqn": "KLean.TLS.DECK.derive_query_sibling_disjoint",
        "axioms": [
          "propext",
          "Quot.sound"
        ]
      },
      {
        "fqn": "KLean.TLS.DECK.derive_query_context_disjoint",
        "axioms": [
          "propext",
          "Quot.sound"
        ]
      },
      {
        "fqn": "KLean.TLS.DECK.derive_query_length_disjoint",
        "axioms": [
          "propext",
          "Quot.sound"
        ]
      },
      {
        "fqn": "KLean.TLS.DECK.derive_context_before_label",
        "axioms": [
          "propext",
          "Quot.sound"
        ]
      },
      {
        "fqn": "KLean.TLS.DECK.absent_context_distinct_from_present_empty",
        "axioms": [
          "propext",
          "Quot.sound"
        ]
      },
      {
        "fqn": "KLean.TLS.DECK.ratchet_exact_residue",
        "axioms": [
          "propext",
          "Quot.sound"
        ]
      },
      {
        "fqn": "KLean.TLS.DECK.ratchet_discards_trunk_given_equal_residue",
        "axioms": [
          "propext",
          "Quot.sound"
        ]
      },
      {
        "fqn": "KLean.TLS.DECK.ratchet_not_counter_only",
        "axioms": [
          "propext",
          "Quot.sound"
        ]
      },
      {
        "fqn": "KLean.TLS.DECK.retired_handle_unavailable",
        "axioms": [
          "propext",
          "Quot.sound"
        ]
      },
      {
        "fqn": "KLean.TLS.DECK.destroyed_trunk_unavailable",
        "axioms": [
          "propext"
        ]
      },
      {
        "fqn": "KLean.TLS.DECK.cycle_retires_final_trunk",
        "axioms": [
          "propext",
          "Quot.sound"
        ]
      },
      {
        "fqn": "KLean.TLS.DECK.context_sharing_matches_leaf_path",
        "axioms": [
          "propext",
          "Quot.sound"
        ]
      },
      {
        "fqn": "KLean.TLS.DECK.client_server_application_queries_disjoint",
        "axioms": [
          "propext",
          "Quot.sound"
        ]
      },
      {
        "fqn": "KLean.TLS.DECK.finite_guessing_bound",
        "axioms": [
          "propext",
          "Classical.choice",
          "Quot.sound"
        ]
      },
      {
        "fqn": "KLean.TLS.DECK.min_entropy_guessing_bound",
        "axioms": [
          "propext",
          "Classical.choice",
          "Quot.sound"
        ]
      },
      {
        "fqn": "KLean.TLS.DECK.public_absorb_inverse",
        "axioms": [
          "propext",
          "Quot.sound"
        ]
      }
    ],
    "custom_axiom_declarations": 0,
    "proof_holes": 0,
    "native_decide": false
  },
  "byte_evidence": {
    "profile": "TLS13_SHAKE256",
    "draft_vectors_matched": 21,
    "lean_python_queries_matched": 13,
    "backend": "Python hashlib SHAKE256; Lean emits framed inputs"
  },
  "proved_scope": [
    "bounded uint16 framing and framed-sequence injectivity",
    "same-trunk label/context/output-length query distinction",
    "derive trunk preservation and exact output-length interface contract",
    "residue-seeded ratchet and logical retired-handle rejection",
    "complete three-stage schedule and final logical retirement",
    "finite guessing inequality given a view-conditioned point-mass bound",
    "known-input permutation absorption admits an inverse"
  ],
  "not_proved": [
    "concrete SHAKE256 or TurboSHAKE security",
    "statistical or computational independence of concrete output keys",
    "reduction from concrete DECK state recovery to the finite-guessing game",
    "physical memory zeroization",
    "full TLS handshake/MAC/composition security",
    "TTTPS public freshness creates secret entropy"
  ],
  "xof_model": "explicit length-indexed XOF parameter, not an embedded Keccak implementation",
  "files": {
    "DECK_Invariants.lean": "d31fee3aaa31d82ba435d310d0970850cb1199dfcca9a47091441e2a77314b64",
    "DECK_VectorQueries.lean": "508f904da9ab0031338930b900d88601b26d2951a06c83c526e8c8c097ce7e4e",
    "check_vectors.py": "b19f66f85df9badae387ac41494e4ab1fa37870eda9548bbc905f4094a70fc7f",
    "klean-result.json": "6ac2d9a6fcfcaf134b795c86d2fb866f09482ab06eead96c90b5a7fb4354a5b4",
    "klean-kernel.log": "3c77f2d5af8a10afd14b63208f01bd0a91900e5fc2d8582726a044f64e50c133",
    "vectors-result.json": "46ed5e7f4ed7715af1d8b83079dcb1bbce0b44dd50b09b20ea32cc984ca8e504",
    "vector-queries.log": "d3c83d41159271486cea6e35b87aed0d11e9bc25dc5602af6cc2b0d4e3840b94",
    "environment.json": "dd2e545413bd8e1a09376d306865e3e24d823d3b2ae20a0cbc7badb271e8a057",
    "entry.log": "3f99b0c3c66615ee5923b90104798aa5ffe2c1bef4e743a67c56fdad7a92c6f2",
    "README.md": "db58f3d55786a1120b56c6e911945c4d5239736f49da65cbc01dcead841a8d2b",
    "lean-toolchain": "6faf6530819a0bc6d6092a2d9b974ea8e8adfec955d0e51e02e1f82734264d14",
    "lakefile.lean": "7ba2b8eb3730ebce437badfc45cc3adc4741eb05b4e972f7049f0e3ef5cc204b",
    "lake-manifest.json": "bb83ccab84a02f5471a775b65bb2f3f1a849e848ea94e99662135c245f35eb3c",
    "reproduce.sh": "6463e63c2e03afa1669017ef12a1777ba0e255f17bdcae27ef389643023f8b7d"
  },
  "modular_sources": {
    "KLean/TLS/DECK/Framing.lean": "2e1a0e4961cdf5cc7c97e273ea5f38d0ccde6c15b12f18c60d9456fe5923f034",
    "KLean/TLS/DECK/GuessingBound.lean": "6f35d8352f139b37499970ffb5ea05b41ade2927b375eecf4515ba102a46116e",
    "KLean/TLS/DECK/Lifecycle.lean": "53e6ca3a108e448b947f1e30c293787bef371ba7e422739e27a8f5304e0168f0",
    "KLean/TLS/DECK/PublicAbsorb.lean": "91073c5cfb9ce7afc9ca9c8c1695b2ab0ee84d2737da7f5c3346ac24483e474e",
    "KLean/TLS/DECK/Schedule.lean": "810c15e73c3ab297096b186d175f120a02ba135aecbc96323a5f7323982de8ae"
  },
  "no_production_restart": true,
  "no_paid_aws_resources": true,
  "publication_note": "Relocated review copy; original sealed manifest is retained privately. Source digest and source receipt are unchanged."
}
