causal-continuity-engine 0.1.6__tar.gz → 0.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/CONTRIBUTING.md +11 -6
  2. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/scripts/check_attribution.py +12 -0
  3. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/scripts/verify_distributions.py +4 -1
  4. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/scripts/verify_public_schemas.py +22 -4
  5. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/AGENTS.md +22 -12
  6. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/CHANGELOG.md +92 -0
  7. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/CITATION.cff +2 -2
  8. {causal_continuity_engine-0.1.6/causal_continuity_engine.egg-info → causal_continuity_engine-0.3.0}/PKG-INFO +209 -93
  9. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/README.md +208 -92
  10. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/SPEC.md +69 -15
  11. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/benchmarks/continuitybench/run.py +4 -0
  12. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/benchmarks/continuitybench/scenarios.py +89 -40
  13. causal_continuity_engine-0.3.0/causal_continuity_engine/__init__.py +27 -0
  14. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/api.py +55 -16
  15. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/capsule.py +122 -9
  16. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/cli.py +78 -6
  17. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/engine.py +1027 -191
  18. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/extraction.py +119 -16
  19. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/graph.py +11 -1
  20. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/invalidation.py +50 -16
  21. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/mcp.py +79 -13
  22. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/memory.py +20 -4
  23. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/partial.py +2 -1
  24. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/policy.py +9 -8
  25. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/proof.py +44 -12
  26. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/resume.py +281 -85
  27. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/store.py +73 -10
  28. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0/causal_continuity_engine.egg-info}/PKG-INFO +209 -93
  29. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine.egg-info/SOURCES.txt +47 -0
  30. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/docs/API.md +18 -5
  31. causal_continuity_engine-0.3.0/docs/MCP.md +270 -0
  32. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/docs/RELEASE.md +52 -16
  33. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/docs/REQUIREMENTS_COVERAGE.md +20 -14
  34. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/docs/adr/ADR-INDEX.md +706 -1
  35. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/pyproject.toml +1 -1
  36. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/requirements-dev.in +1 -1
  37. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/requirements-dev.lock +3 -3
  38. causal_continuity_engine-0.3.0/schemas/cce.capsule.v2.json +232 -0
  39. causal_continuity_engine-0.3.0/schemas/cce.continuity-receipt.v2.json +787 -0
  40. causal_continuity_engine-0.3.0/schemas/cce.proof-predicate.v2.json +85 -0
  41. causal_continuity_engine-0.3.0/schemas/cce.proof.v2.json +565 -0
  42. causal_continuity_engine-0.3.0/schemas/cce.resume.v2.json +864 -0
  43. causal_continuity_engine-0.3.0/tests/authority_helpers.py +25 -0
  44. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_api_contract.py +12 -5
  45. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_attribution_controls.py +39 -0
  46. causal_continuity_engine-0.3.0/tests/test_authority_atomic_append.py +418 -0
  47. causal_continuity_engine-0.3.0/tests/test_authority_cli.py +550 -0
  48. causal_continuity_engine-0.3.0/tests/test_authority_consumers.py +461 -0
  49. causal_continuity_engine-0.3.0/tests/test_authority_criticality.py +164 -0
  50. causal_continuity_engine-0.3.0/tests/test_authority_extraction.py +165 -0
  51. causal_continuity_engine-0.3.0/tests/test_authority_producer.py +203 -0
  52. causal_continuity_engine-0.3.0/tests/test_authority_read_reuse.py +252 -0
  53. causal_continuity_engine-0.3.0/tests/test_authority_redteam.py +293 -0
  54. causal_continuity_engine-0.3.0/tests/test_authority_withdrawal_classification.py +68 -0
  55. causal_continuity_engine-0.3.0/tests/test_benchmark_authority.py +91 -0
  56. causal_continuity_engine-0.3.0/tests/test_benchmark_cleanup.py +80 -0
  57. causal_continuity_engine-0.3.0/tests/test_capsule_packet_clock.py +124 -0
  58. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_cli.py +92 -2
  59. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_conformance.py +4 -4
  60. causal_continuity_engine-0.3.0/tests/test_contradiction_notice.py +346 -0
  61. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_engine_e2e.py +164 -74
  62. causal_continuity_engine-0.3.0/tests/test_extraction_negated_cue.py +93 -0
  63. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_identity_compatibility.py +39 -37
  64. causal_continuity_engine-0.3.0/tests/test_installed_contracts.py +167 -0
  65. causal_continuity_engine-0.3.0/tests/test_installed_packet_bounds.py +95 -0
  66. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_instrument_validation.py +77 -20
  67. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_invalidation_resume.py +67 -106
  68. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_isolated_review.py +6 -0
  69. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_learning_partial_api.py +13 -4
  70. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_mcp_server.py +34 -5
  71. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_memory_extraction.py +60 -46
  72. causal_continuity_engine-0.3.0/tests/test_obligation_boundaries.py +149 -0
  73. causal_continuity_engine-0.3.0/tests/test_obligation_completeness.py +366 -0
  74. causal_continuity_engine-0.3.0/tests/test_obligation_contract_repairs.py +136 -0
  75. causal_continuity_engine-0.3.0/tests/test_packet_byte_bounds.py +431 -0
  76. causal_continuity_engine-0.3.0/tests/test_packet_byte_transports.py +331 -0
  77. causal_continuity_engine-0.3.0/tests/test_packet_complete_trust.py +42 -0
  78. causal_continuity_engine-0.3.0/tests/test_packet_failure_boundaries.py +36 -0
  79. causal_continuity_engine-0.3.0/tests/test_packet_scope_receipts.py +88 -0
  80. causal_continuity_engine-0.3.0/tests/test_packet_scope_wire.py +368 -0
  81. causal_continuity_engine-0.3.0/tests/test_packet_validity_frontier.py +200 -0
  82. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_processor_compatibility.py +14 -3
  83. causal_continuity_engine-0.3.0/tests/test_proof_obligation_wire.py +238 -0
  84. causal_continuity_engine-0.3.0/tests/test_proof_rejection_reason.py +45 -0
  85. causal_continuity_engine-0.3.0/tests/test_readme_contract.py +100 -0
  86. causal_continuity_engine-0.3.0/tests/test_receipt_spec_contract.py +101 -0
  87. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions.py +10 -3
  88. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round10_release.py +10 -0
  89. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round11_deep_integrity.py +4 -9
  90. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round14_state_integrity.py +17 -6
  91. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round17_backfill_layout.py +8 -4
  92. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round18_assumption_edits.py +120 -76
  93. causal_continuity_engine-0.3.0/tests/test_regressions_round18_co_assertion.py +163 -0
  94. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round18_negation.py +69 -28
  95. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round18_source_order.py +97 -18
  96. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round2.py +31 -36
  97. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round3.py +59 -12
  98. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round4.py +2 -3
  99. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round5.py +3 -4
  100. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round6.py +25 -20
  101. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round7.py +61 -42
  102. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round8_engine.py +32 -17
  103. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round8_portability.py +29 -18
  104. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round9_integrity.py +2 -3
  105. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_release_boundary_validation.py +16 -4
  106. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_release_controls.py +52 -26
  107. causal_continuity_engine-0.3.0/tests/test_resume_prose_origin.py +189 -0
  108. causal_continuity_engine-0.3.0/tests/test_schema_release_identities.py +136 -0
  109. causal_continuity_engine-0.3.0/tests/test_task_packet_review.py +215 -0
  110. causal_continuity_engine-0.3.0/tests/test_task_packets.py +369 -0
  111. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_trust.py +2 -3
  112. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/action_intent_wrong_type.json +25 -20
  113. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/actor_wrong_type.json +25 -20
  114. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/created_at_invalid_calendar_date.json +24 -19
  115. causal_continuity_engine-0.3.0/vectors/created_at_leap_second.json +177 -0
  116. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/created_at_lowercase_designators.json +24 -19
  117. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/created_at_missing_timezone.json +24 -19
  118. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/created_at_noncanonical_offset.json +24 -19
  119. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/created_at_space_separator.json +24 -19
  120. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/empty_required_authoritative_failure.json +17 -12
  121. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/empty_required_authoritative_pass.json +17 -12
  122. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/empty_required_no_results.json +17 -12
  123. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/empty_required_self_asserted_pass.json +17 -12
  124. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/generate.py +48 -13
  125. causal_continuity_engine-0.3.0/vectors/historical_proof_version.json +177 -0
  126. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/incomplete_failed_check.json +24 -19
  127. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/index.json +42 -0
  128. causal_continuity_engine-0.3.0/vectors/input_item_wrong_type.json +178 -0
  129. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/invalid_result_value.json +25 -20
  130. causal_continuity_engine-0.3.0/vectors/lamport_fingerprint_spoof.json +1463 -0
  131. causal_continuity_engine-0.3.0/vectors/lamport_no_registry.json +1459 -0
  132. causal_continuity_engine-0.3.0/vectors/lamport_truncated_key.json +1459 -0
  133. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/missing_required_field.json +25 -20
  134. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/non_binary64_integer.json +25 -20
  135. causal_continuity_engine-0.3.0/vectors/obligation_duplicate.json +182 -0
  136. causal_continuity_engine-0.3.0/vectors/obligation_duplicate_task.json +178 -0
  137. causal_continuity_engine-0.1.6/vectors/created_at_leap_second.json → causal_continuity_engine-0.3.0/vectors/obligation_missing.json +21 -21
  138. causal_continuity_engine-0.3.0/vectors/obligation_wrong_kind.json +177 -0
  139. causal_continuity_engine-0.3.0/vectors/obligation_wrong_task.json +177 -0
  140. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/policy_decision_wrong_type.json +23 -18
  141. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/retry_cannot_launder_a_failure.json +29 -24
  142. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/self_asserted_cannot_satisfy.json +25 -20
  143. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/self_assertion_cannot_poison_authoritative_pass.json +29 -24
  144. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/status_contradicts_contents.json +25 -20
  145. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/summary_contradicts_contents.json +25 -20
  146. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/tamper_statement.json +25 -20
  147. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/tamper_statement_resealed.json +25 -20
  148. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/task_id_under_unrelated_field.json +20 -20
  149. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/unbound_task.json +17 -17
  150. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/unknown_action_intent_field.json +25 -20
  151. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/unknown_algorithm.json +25 -20
  152. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/unknown_evidence_context_field.json +25 -20
  153. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/unknown_execution_field.json +25 -20
  154. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/unknown_schema_version.json +25 -20
  155. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/unknown_top_level_field.json +25 -20
  156. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/unknown_verification_field.json +25 -20
  157. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/unverified_forged_body_no_key.json +25 -20
  158. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/unverified_hmac_no_key.json +25 -20
  159. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/valid_hmac.json +26 -21
  160. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/valid_hmac_jcs_edges.json +26 -21
  161. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/valid_hmac_unicode.json +26 -21
  162. causal_continuity_engine-0.3.0/vectors/valid_lamport.json +1463 -0
  163. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/wrong_project.json +25 -20
  164. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/verifiers/verify_proof.py +16 -3
  165. causal_continuity_engine-0.1.6/causal_continuity_engine/__init__.py +0 -21
  166. causal_continuity_engine-0.1.6/tests/test_regressions_round18_co_assertion.py +0 -119
  167. causal_continuity_engine-0.1.6/vectors/input_item_wrong_type.json +0 -163
  168. causal_continuity_engine-0.1.6/vectors/lamport_fingerprint_spoof.json +0 -1458
  169. causal_continuity_engine-0.1.6/vectors/lamport_no_registry.json +0 -1454
  170. causal_continuity_engine-0.1.6/vectors/lamport_truncated_key.json +0 -1454
  171. causal_continuity_engine-0.1.6/vectors/valid_lamport.json +0 -1458
  172. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.editorconfig +0 -0
  173. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.gitattributes +0 -0
  174. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.githooks/commit-msg +0 -0
  175. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.githooks/pre-commit +0 -0
  176. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/CODEOWNERS +0 -0
  177. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
  178. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  179. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/ISSUE_TEMPLATE/feature.yml +0 -0
  180. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/SECURITY.md +0 -0
  181. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/SUPPORT.md +0 -0
  182. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/dependabot.yml +0 -0
  183. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/pull_request_template.md +0 -0
  184. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/release.yml +0 -0
  185. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/ruleset.README.md +0 -0
  186. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/ruleset.json +0 -0
  187. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/scripts/bootstrap_tools.py +0 -0
  188. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/scripts/build_distributions.py +0 -0
  189. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/scripts/check_clean.py +0 -0
  190. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/scripts/check_content_marks.py +0 -0
  191. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/scripts/check_release_metadata.py +0 -0
  192. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/scripts/check_release_tag.py +0 -0
  193. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/scripts/check_stdlib.py +0 -0
  194. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/scripts/prepare_release_tag.py +0 -0
  195. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/scripts/render_api_docs.py +0 -0
  196. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/scripts/run_gates.py +0 -0
  197. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/scripts/run_isolated_review.py +0 -0
  198. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/tag-ruleset.json +0 -0
  199. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/workflows/ci.yml +0 -0
  200. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/workflows/commit-signature-audit.yml +0 -0
  201. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/workflows/content-integrity-pr.yml +0 -0
  202. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/workflows/content-integrity.yml +0 -0
  203. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/workflows/dependency-review.yml +0 -0
  204. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/workflows/no-ai-attribution.yml +0 -0
  205. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/workflows/release.yml +0 -0
  206. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/workflows/secret-scan.yml +0 -0
  207. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.gitignore +0 -0
  208. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.gitleaks.toml +0 -0
  209. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.pre-commit-config.yaml +0 -0
  210. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/LICENSE.txt +0 -0
  211. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/MANIFEST.in +0 -0
  212. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/NOTICE +0 -0
  213. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/benchmarks/__init__.py +0 -0
  214. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/benchmarks/continuitybench/__init__.py +0 -0
  215. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/capabilities.py +0 -0
  216. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/core.py +0 -0
  217. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/evidence.py +0 -0
  218. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/github.py +0 -0
  219. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/lamport.py +0 -0
  220. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/learning.py +0 -0
  221. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/ontology.py +0 -0
  222. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/py.typed +0 -0
  223. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/redaction.py +0 -0
  224. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/verifiers.py +0 -0
  225. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine.egg-info/dependency_links.txt +0 -0
  226. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine.egg-info/entry_points.txt +0 -0
  227. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine.egg-info/requires.txt +0 -0
  228. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine.egg-info/top_level.txt +0 -0
  229. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/docs/CAPABILITIES.md +0 -0
  230. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/docs/CONTENT-INGRESS-FIREWALL.md +0 -0
  231. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/docs/PUBLIC-FLIP.md +0 -0
  232. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/docs/REQUIREMENTS.md +0 -0
  233. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/docs/RESEARCH-ROADMAP.md +0 -0
  234. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/docs/TESTING.md +0 -0
  235. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/docs/V0.1.5-TRUST-CLOSURE.md +0 -0
  236. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/docs/assets/demo.svg +0 -0
  237. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/docs/assets/social-preview.png +0 -0
  238. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/examples/backfill_github.py +0 -0
  239. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/examples/quickstart.py +0 -0
  240. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/justfile +0 -0
  241. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/schemas/cce.anchor.v1.json +0 -0
  242. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/schemas/cce.capsule.v1.json +0 -0
  243. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/schemas/cce.continuity-receipt.v1.json +0 -0
  244. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/schemas/cce.event.v1.json +0 -0
  245. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/schemas/cce.proof-predicate.v1.json +0 -0
  246. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/schemas/cce.proof.v1.json +0 -0
  247. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/schemas/cce.recovery.v1.json +0 -0
  248. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/schemas/cce.resume.v1.json +0 -0
  249. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/setup.cfg +0 -0
  250. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/__init__.py +0 -0
  251. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/schema_validation.py +0 -0
  252. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_benchmark_runner.py +0 -0
  253. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_content_marks.py +0 -0
  254. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_distribution_environment.py +0 -0
  255. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_github_redaction.py +0 -0
  256. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round12_release_blockers.py +0 -0
  257. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round13_jcs.py +0 -0
  258. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round15_capsule_invalidation_github.py +0 -0
  259. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round15_public_boundaries.py +0 -0
  260. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round15_storage_boundaries.py +0 -0
  261. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round16_cli_api_core_capabilities.py +0 -0
  262. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round18_journal.py +0 -0
  263. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round8_boundaries.py +0 -0
  264. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round8_state.py +0 -0
  265. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round9_scope_freshness.py +0 -0
  266. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_sqlite_lifecycle.py +0 -0
  267. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_store_graph.py +0 -0
  268. {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/verifiers/__init__.py +0 -0
@@ -54,10 +54,10 @@ do. `just setup` installs every direct and transitive tool from
54
54
  source distributions, then installs `causal-continuity-engine` editable without dependency
55
55
  resolution or an isolated build environment. The reviewed direct inputs are
56
56
  `pytest` 9.1.1, `ruff` 0.16.7, `build` 1.6.1, `jsonschema` 4.26.0,
57
- `setuptools` 83.0.0, and `pip` 26.2.1. None is imported by the engine; jsonschema validates
57
+ `setuptools` 84.0.0, and `pip` 26.2.1. None is imported by the engine; jsonschema validates
58
58
  emitted receipt instances only in the test/release gate.
59
59
 
60
- The pins were last revalidated on 2026-09-15. Setuptools 83.0.0 is the first
60
+ The security review on 2026-09-15 recorded setuptools 83.0.0 as the first
61
61
  patched release for
62
62
  [GHSA-h35f-9h28-mq5c](https://github.com/advisories/GHSA-h35f-9h28-mq5c)
63
63
  and pip 26.2.1 is later than the first patched release for
@@ -68,9 +68,10 @@ and the lock carries Pygments 2.20.0, the fix for
68
68
  [GHSA-5239-wwwm-4pmq](https://github.com/advisories/GHSA-5239-wwwm-4pmq).
69
69
  On that date pytest 9.1.1, ruff 0.16.7, build 1.6.1, jsonschema 4.26.0 and pip
70
70
  26.2.1 were the current stable releases on PyPI; build 1.5.1 remains yanked.
71
- Setuptools stays at 83.0.0: 84.0.0 is a new major release that this review did
72
- not evaluate. This is a dated review record, not a claim that pins stay current
73
- without future review.
71
+ That review retained setuptools 83.0.0 without evaluating 84.0.0. The current
72
+ 84.0.0 pin is a subsequent build-tool update, with matching direct inputs and
73
+ hash lock. The security review is a dated record, not a claim that pins stay
74
+ current without future review.
74
75
 
75
76
  When a direct pin changes, edit `pyproject.toml` and `requirements-dev.in`,
76
77
  regenerate the lock with the command recorded in its header, and review the
@@ -257,7 +258,11 @@ outcome, say what distinguishes it from "nothing happened".
257
258
 
258
259
  **No authorship attribution to tooling.** The `.githooks/` hooks and the CI
259
260
  attribution guard both reject it, in commit messages and in committed files.
260
- Do not work around them.
261
+ Do not work around them. This is a rule about credit, not secrecy: AI coding
262
+ assistants are used in this project's development, and every change is
263
+ reviewed, tested, signed off, and committed by the maintainer, who is
264
+ responsible for it. If AI tools did significant work on your patch, say so in
265
+ plain words in the pull request; never list a tool as an author or co-author.
261
266
 
262
267
  ## Security
263
268
 
@@ -76,6 +76,13 @@ _ARTIFACT_AI_CREDIT = re.compile(
76
76
  _TOOL_BYLINE = re.compile(
77
77
  rf"{_AI_ALIAS.pattern}\s*\((?:anthropic|openai)\)[.!]?"
78
78
  )
79
+ # An AI coding session appends provenance rather than credit: a trailer whose key
80
+ # names the tool ("<tool>-Session: <link>") and a bare link to the session. Neither
81
+ # names an actor, so the credit grammar above never reached them.
82
+ _AI_SESSION_KEY = re.compile(
83
+ rf"{_AI_ALIAS.pattern}[- ]session(?:[- ](?:id|link|url))?"
84
+ )
85
+ _AI_SESSION_LINK = re.compile(r"<?https?://claude\.ai/code/session_[a-z0-9_-]+/?>?")
79
86
  _TRAILER_KEYS = frozenset({
80
87
  "assisted-by",
81
88
  "authored-by",
@@ -233,6 +240,11 @@ def scan_prose(
233
240
  key, separator, value = line.partition(":")
234
241
  if separator and key.replace("_", "-") in _TRAILER_KEYS:
235
242
  reason = _actor_reason(value)
243
+ if reason is None and separator and _AI_SESSION_KEY.fullmatch(
244
+ key.replace("_", "-")):
245
+ reason = "tool/model session trailer"
246
+ if reason is None and _AI_SESSION_LINK.fullmatch(line):
247
+ reason = "tool/model session link"
236
248
  if reason is None:
237
249
  match = _CREDIT.fullmatch(line) or _ROLE.fullmatch(line)
238
250
  if match is not None:
@@ -96,7 +96,8 @@ SDIST_GENERATED_FILES = {
96
96
  f"{EGG_INFO}/top_level.txt",
97
97
  }
98
98
  # Selected shipped test modules, chosen to cover the installed
99
- # CLI, the store and graph, trust, conformance vectors and the MCP server
99
+ # CLI, store and graph, trust, conformance, authority/scoped-packet contracts
100
+ # and bounded CLI/HTTP/MCP transports
100
101
  # against the artifact itself. The rest ship as audit evidence a reader can
101
102
  # run, not as checks this gate executes.
102
103
  WHEEL_BEHAVIOR_TESTS = (
@@ -107,6 +108,8 @@ WHEEL_BEHAVIOR_TESTS = (
107
108
  "tests/test_cli.py",
108
109
  "tests/test_conformance.py",
109
110
  "tests/test_mcp_server.py",
111
+ "tests/test_installed_contracts.py",
112
+ "tests/test_installed_packet_bounds.py",
110
113
  )
111
114
  WHEEL_EVIDENCE_TREES = {
112
115
  "benchmarks": {".py"},
@@ -19,6 +19,21 @@ RAW_ORIGIN = (
19
19
  TAG_RE = re.compile(r"v[0-9]+\.[0-9]+\.[0-9]+\Z")
20
20
  SCHEMA_VERSION_RE = re.compile(r"cce\.[a-z][a-z0-9-]*\.v[1-9][0-9]*\Z")
21
21
  MAX_SCHEMA_BYTES = 2 * 1024 * 1024
22
+ SCHEMA_RELEASES = {
23
+ "cce.anchor.v1.json": "v0.1.0",
24
+ "cce.capsule.v1.json": "v0.1.0",
25
+ "cce.continuity-receipt.v1.json": "v0.1.0",
26
+ "cce.event.v1.json": "v0.1.0",
27
+ "cce.proof-predicate.v1.json": "v0.1.0",
28
+ "cce.proof.v1.json": "v0.1.0",
29
+ "cce.recovery.v1.json": "v0.1.0",
30
+ "cce.resume.v1.json": "v0.1.0",
31
+ "cce.capsule.v2.json": "v0.2.0",
32
+ "cce.continuity-receipt.v2.json": "v0.2.0",
33
+ "cce.proof-predicate.v2.json": "v0.2.0",
34
+ "cce.proof.v2.json": "v0.2.0",
35
+ "cce.resume.v2.json": "v0.2.0",
36
+ }
22
37
 
23
38
 
24
39
  def _runtime_schema_versions(root: Path) -> dict[str, str]:
@@ -61,8 +76,11 @@ def _runtime_schema_versions(root: Path) -> dict[str, str]:
61
76
  def _schema_public_urls(root: Path) -> dict[str, str]:
62
77
  names = sorted(
63
78
  f"{version}.json" for version in _runtime_schema_versions(root).values())
79
+ unreviewed = sorted(set(names) - SCHEMA_RELEASES.keys())
80
+ if unreviewed:
81
+ raise SystemExit("unreviewed schema release identity: " + ", ".join(unreviewed))
64
82
  return {
65
- name: f"{RAW_ORIGIN}/v0.1.0/schemas/{name}"
83
+ name: f"{RAW_ORIGIN}/{SCHEMA_RELEASES[name]}/schemas/{name}"
66
84
  for name in names
67
85
  }
68
86
 
@@ -147,8 +165,8 @@ def verify(
147
165
  "public schema inventory differs from the reviewed runtime contract")
148
166
 
149
167
  # A schema TypeURI identifies that schema version, not the package release
150
- # currently carrying it. Later package tags must continue to verify the
151
- # immutable v0.1.0 URLs instead of silently repointing the v1 identities.
168
+ # currently carrying it. Each reviewed filename retains its assigned release
169
+ # independently of both the package tag and the payload's claimed $id.
152
170
  expected_urls = set(schema_public_urls.values())
153
171
  observed_ids: set[str] = set()
154
172
  for name in schema_names:
@@ -171,7 +189,7 @@ def verify(
171
189
  + ", ".join(sorted(unexpected_urls)))
172
190
 
173
191
  # Fetch the committed identity itself. The explicit map above freezes
174
- # today's v1 contract; this variable makes the deciding path follow the
192
+ # each reviewed identity; this variable makes the deciding path follow the
175
193
  # schema's checked-in $id rather than the current package tag.
176
194
  remote_bytes = fetch(committed_url)
177
195
  if not isinstance(remote_bytes, bytes):
@@ -14,12 +14,17 @@ history and a bi-temporal causal graph. Event-derived projections are
14
14
  rebuildable only while source payloads remain inside the retention window;
15
15
  runtime records are authenticated/audited rather than replay-derived. Memory
16
16
  tiers L0–L4 and token-budgeted Resume Packets are what
17
- an agent actually receives on resume. When a requirement changes or evidence
18
- contradicts an assumption, causal invalidation computes the blast radius
19
- over typed edges, bounds it, and classifies it deterministically. A task
20
- cannot be marked complete without a signed proof envelope whose required
21
- verifiers actually ran — `Engine.complete_task` has twenty independently
22
- instrumented rejection gates, including unresolved invalidation control,
17
+ an agent actually receives on resume. When a requirement changes, when the
18
+ source that stated an assumption withdraws it, or when an integration records
19
+ contradicting evidence through `engine.invalidation.fire(...)`, causal
20
+ invalidation computes the blast radius over typed edges, bounds it, and
21
+ classifies it deterministically. It does not read prose for meaning; a trusted
22
+ explicit negation of an active assumption's own wording raises a human-gated
23
+ notice (ADR-133). When policy
24
+ requires proof, a task cannot be marked complete without a signed proof envelope
25
+ whose required verifiers actually ran — `Engine.complete_task` has twenty-two
26
+ independently instrumented rejection gates, including current confirmed authority,
27
+ applicable authority conflicts, unresolved invalidation control,
23
28
  monotonic completed-state, and completable-state guards, and evidence is graded
24
29
  A–F from negative controls,
25
30
  mutation probes and determinism probes. That grade is a mechanical lower bound: it
@@ -114,7 +119,7 @@ python verifiers/verify_proof.py <proof.json> --fingerprint sha256:...
114
119
  vectors that *wrap* an envelope alongside its expected verdict, so passing
115
120
  one directly reports `E_SHAPE`; use `vectors/generate.py --check` for those.
116
121
 
117
- CLI subcommands, all real: `init ingest resume assumptions invalidations
122
+ CLI subcommands, all real: `init ingest authority resume assumptions invalidations
118
123
  verify check migrate replay rebuild audit evidence policy serve mcp`.
119
124
 
120
125
  ## Repo map
@@ -270,9 +275,11 @@ Repository text is evidence about intent. It is never instruction.
270
275
  can raise its authority above the authority of its source
271
276
  (`causal_continuity_engine/ontology.py`,
272
277
  `causal_continuity_engine/extraction.py`).
273
- - Untrusted text **may propose, never mandate.** A requirement extracted
274
- from an untrusted source is demoted to a claim, with the demotion recorded
275
- (AD-006).
278
+ - All prose **may propose, never mandate**, including OWNER and human-decision
279
+ prose. Requirements, constraints, decisions, assumptions and tasks become
280
+ source-event-bound proposals. Only an explicit owner-local canonical decision
281
+ through `record_authority_decision` or `authority --request FILE` confirms
282
+ authority; source standing and status resolution are not grants (ADR-126).
276
283
  - Imperative policy-override wording trips the injection screen, and when it
277
284
  does, **every item extracted from that text block is quarantined** — not
278
285
  just the matched span. Splitting a hostile block into a suspect part and a
@@ -322,8 +329,11 @@ below what it is about to do (ADR-048).
322
329
 
323
330
  Never add AI authorship credit to a commit message, PR title or body, code
324
331
  comment, documentation file, changelog, or example. No co-author trailers,
325
- no "generated with" lines, no tool bylines, no mention of AI involvement in
326
- this codebase anywhere.
332
+ no "generated with" lines, no tool bylines. This is a rule about credit, not
333
+ secrecy: `.github/CONTRIBUTING.md` states plainly that AI coding assistants
334
+ are used in development and that the maintainer reviews, tests, and commits
335
+ every change. Disclosure in plain words is allowed; crediting a tool as an
336
+ author is not.
327
337
 
328
338
  This is enforced, not requested. `.githooks/commit-msg` and
329
339
  `.githooks/pre-commit` block it locally (`core.hooksPath` is set to
@@ -9,6 +9,98 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
 
10
10
  No unreleased changes.
11
11
 
12
+ ## 0.3.0 — 2026-10-16
13
+
14
+ ### Added
15
+
16
+ - **A trusted explicit negation of an active assumption raises a human-gated
17
+ notice.** An OWNER, MEMBER or COLLABORATOR sentence that restates an active
18
+ assumption with one negator ("the feed is NOT ordered by timestamp"), negates
19
+ its cue ("we no longer assume …") or calls it wrong fires a
20
+ `contradictory_evidence` invalidation in `pending_confirmation`: nothing
21
+ changes until the owner records `confirm_invalidation` or
22
+ `reject_invalidation` through `authority --request`, with operands from
23
+ `Engine.authority_invalidation`. The notice appears in the resume packet and
24
+ makes `check` report `action_required`. The rule is closed and lexical; other
25
+ wordings are outside it (ADR-133).
26
+
27
+ ### Changed
28
+
29
+ - **Breaking: processor compatibility advances to `cce-processor/1.10.0` and
30
+ extraction to `cce-deterministic/1.5.0`.** Preserve older projected stores and
31
+ their SQLite sidecars after stopping writers. Re-ingest retained sources into
32
+ a separate new store/project and review its proposals before confirming them.
33
+ Older projections do not upgrade in place; erased source payloads cannot be
34
+ reconstructed by replay (ADR-114, ADR-132).
35
+
36
+ ### Fixed
37
+
38
+ - **A negated assumption cue no longer proposes the assumption it denies.**
39
+ "We no longer assume X", "We do not assume X" and "nothing relies on X"
40
+ extracted the same positive proposal as "We assume X", so a sentence written
41
+ to retire an assumption offered it for confirmation. The extractor now
42
+ abstains when a negator stands immediately before the cue. A prohibition or
43
+ decision form still proposes the constraint or decision the author wrote;
44
+ other wordings of a denial are outside this closed rule (ADR-132).
45
+
46
+ ## 0.2.0 — 2026-09-23
47
+
48
+ ### Changed
49
+
50
+ - **Breaking: extracted prose proposes; local confirmation confers authority.**
51
+ Requirements, constraints, decisions, assumptions and tasks extracted from
52
+ retained source text require an explicit owner-local decision before becoming
53
+ binding control state. Consumers check canonical decision history, source
54
+ support and the actual projection. A trusted author label or mutable graph
55
+ flag is not approval. Confirmation has no HTTP or MCP
56
+ endpoint; this trusts the existing OS/store owner, not an independently
57
+ authenticated human or a process isolated from that same account (ADR-126).
58
+ - **Breaking: processor compatibility advances to `cce-processor/1.9.0` and
59
+ extraction to `cce-deterministic/1.4.0`.** Preserve older projected stores and
60
+ their SQLite sidecars after stopping writers. Re-ingest retained sources into
61
+ a separate new store/project and review its proposals before confirming them.
62
+ Older authority projections do not upgrade in place; erased source payloads
63
+ cannot be reconstructed by replay. Existing finite admission limits still
64
+ apply; the version check is not a claim of complete database provenance.
65
+ - **Proof v2 binds the complete applicable obligation set.** Confirmed task
66
+ proofs include applicable requirements, constraints, decisions and assumptions,
67
+ their canonical scope and the relevant policy. Caller-supplied links cannot
68
+ subtract mandatory controls. Initial and final deciding reads are separate;
69
+ later changes can stale the proof. A verifier's evidence grade remains a
70
+ mechanical binding check, not proof of the obligation's semantic truth
71
+ (ADR-127).
72
+ - **Resume v2 is complete and explicitly project- or task-scoped.** Mandatory
73
+ controls, work, policy and trust information cannot be silently trimmed to fit
74
+ a budget. Watermarks are scope-specific; descriptive target metadata is not
75
+ a task selector. Current capsule v2 and continuity-receipt v2 remain project-only.
76
+ Historical v1 schemas are retained for interpretation, not current proof or
77
+ receipt acceptance (ADR-128).
78
+ - **Successful resume responses have a hard serialized-byte bound.** The default
79
+ is 131,072 bytes; the accepted range is 1 through 1,048,576. Engine, CLI, HTTP
80
+ and MCP count their actual final representation, including the relevant wrapper
81
+ and line ending. Only optional sections may be removed. Mandatory overflow
82
+ refuses before signing, collision audit or watermark advancement. Packet-budget
83
+ refusals have a separate 1,024-byte bound. This does not bound computation,
84
+ input memory, HTTP headers, arbitrary reserialization or an outer capsule
85
+ (ADR-129).
86
+
87
+ ### Fixed
88
+
89
+ - **Task expiry during packet composition used two validity instants.** Final
90
+ watermark admission now retains the selected instant while rechecking canonical
91
+ authority, source support, projected semantics and live status. Later freshness
92
+ uses current time; an as-of packet is not a lease. Unrelated late failures do
93
+ not promise to refund a consumed signature (ADR-130).
94
+ - **One obligation read repeatedly reconstructed the same canonical witnesses.**
95
+ Validated control witnesses and shared scope-task identities are reused only
96
+ within that non-mutating call, never across requests or a writer's own changes.
97
+ Measured read counts fall without dropping authority checks. Distinct witnesses
98
+ still traverse history; no latency or total-history scaling bound is claimed
99
+ (ADR-131).
100
+ - **The continuity-receipt specification named the historical v1 contract.**
101
+ SPEC §12 now matches the current project-only v2 producer and verifier, including
102
+ expected-scope binding and archived-v1 refusal. Historical schemas are unchanged.
103
+
12
104
  ## 0.1.6 — 2026-09-20
13
105
 
14
106
  Carries the unpublished 0.1.5 line forward with processor compatibility,
@@ -8,8 +8,8 @@ authors:
8
8
  - given-names: Thomas
9
9
  family-names: Albrecht
10
10
  alias: The Quantum Falcon
11
- version: 0.1.6
12
- date-released: 2026-09-20
11
+ version: 0.3.0
12
+ date-released: 2026-10-16
13
13
  license: Apache-2.0
14
14
  repository-code: https://github.com/thequantumfalcon/causal-continuity-engine
15
15
  url: https://github.com/thequantumfalcon/causal-continuity-engine