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.
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/CONTRIBUTING.md +11 -6
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/scripts/check_attribution.py +12 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/scripts/verify_distributions.py +4 -1
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/scripts/verify_public_schemas.py +22 -4
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/AGENTS.md +22 -12
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/CHANGELOG.md +92 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/CITATION.cff +2 -2
- {causal_continuity_engine-0.1.6/causal_continuity_engine.egg-info → causal_continuity_engine-0.3.0}/PKG-INFO +209 -93
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/README.md +208 -92
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/SPEC.md +69 -15
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/benchmarks/continuitybench/run.py +4 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/benchmarks/continuitybench/scenarios.py +89 -40
- causal_continuity_engine-0.3.0/causal_continuity_engine/__init__.py +27 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/api.py +55 -16
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/capsule.py +122 -9
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/cli.py +78 -6
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/engine.py +1027 -191
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/extraction.py +119 -16
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/graph.py +11 -1
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/invalidation.py +50 -16
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/mcp.py +79 -13
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/memory.py +20 -4
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/partial.py +2 -1
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/policy.py +9 -8
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/proof.py +44 -12
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/resume.py +281 -85
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/store.py +73 -10
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0/causal_continuity_engine.egg-info}/PKG-INFO +209 -93
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine.egg-info/SOURCES.txt +47 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/docs/API.md +18 -5
- causal_continuity_engine-0.3.0/docs/MCP.md +270 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/docs/RELEASE.md +52 -16
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/docs/REQUIREMENTS_COVERAGE.md +20 -14
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/docs/adr/ADR-INDEX.md +706 -1
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/pyproject.toml +1 -1
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/requirements-dev.in +1 -1
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/requirements-dev.lock +3 -3
- causal_continuity_engine-0.3.0/schemas/cce.capsule.v2.json +232 -0
- causal_continuity_engine-0.3.0/schemas/cce.continuity-receipt.v2.json +787 -0
- causal_continuity_engine-0.3.0/schemas/cce.proof-predicate.v2.json +85 -0
- causal_continuity_engine-0.3.0/schemas/cce.proof.v2.json +565 -0
- causal_continuity_engine-0.3.0/schemas/cce.resume.v2.json +864 -0
- causal_continuity_engine-0.3.0/tests/authority_helpers.py +25 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_api_contract.py +12 -5
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_attribution_controls.py +39 -0
- causal_continuity_engine-0.3.0/tests/test_authority_atomic_append.py +418 -0
- causal_continuity_engine-0.3.0/tests/test_authority_cli.py +550 -0
- causal_continuity_engine-0.3.0/tests/test_authority_consumers.py +461 -0
- causal_continuity_engine-0.3.0/tests/test_authority_criticality.py +164 -0
- causal_continuity_engine-0.3.0/tests/test_authority_extraction.py +165 -0
- causal_continuity_engine-0.3.0/tests/test_authority_producer.py +203 -0
- causal_continuity_engine-0.3.0/tests/test_authority_read_reuse.py +252 -0
- causal_continuity_engine-0.3.0/tests/test_authority_redteam.py +293 -0
- causal_continuity_engine-0.3.0/tests/test_authority_withdrawal_classification.py +68 -0
- causal_continuity_engine-0.3.0/tests/test_benchmark_authority.py +91 -0
- causal_continuity_engine-0.3.0/tests/test_benchmark_cleanup.py +80 -0
- causal_continuity_engine-0.3.0/tests/test_capsule_packet_clock.py +124 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_cli.py +92 -2
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_conformance.py +4 -4
- causal_continuity_engine-0.3.0/tests/test_contradiction_notice.py +346 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_engine_e2e.py +164 -74
- causal_continuity_engine-0.3.0/tests/test_extraction_negated_cue.py +93 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_identity_compatibility.py +39 -37
- causal_continuity_engine-0.3.0/tests/test_installed_contracts.py +167 -0
- causal_continuity_engine-0.3.0/tests/test_installed_packet_bounds.py +95 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_instrument_validation.py +77 -20
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_invalidation_resume.py +67 -106
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_isolated_review.py +6 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_learning_partial_api.py +13 -4
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_mcp_server.py +34 -5
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_memory_extraction.py +60 -46
- causal_continuity_engine-0.3.0/tests/test_obligation_boundaries.py +149 -0
- causal_continuity_engine-0.3.0/tests/test_obligation_completeness.py +366 -0
- causal_continuity_engine-0.3.0/tests/test_obligation_contract_repairs.py +136 -0
- causal_continuity_engine-0.3.0/tests/test_packet_byte_bounds.py +431 -0
- causal_continuity_engine-0.3.0/tests/test_packet_byte_transports.py +331 -0
- causal_continuity_engine-0.3.0/tests/test_packet_complete_trust.py +42 -0
- causal_continuity_engine-0.3.0/tests/test_packet_failure_boundaries.py +36 -0
- causal_continuity_engine-0.3.0/tests/test_packet_scope_receipts.py +88 -0
- causal_continuity_engine-0.3.0/tests/test_packet_scope_wire.py +368 -0
- causal_continuity_engine-0.3.0/tests/test_packet_validity_frontier.py +200 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_processor_compatibility.py +14 -3
- causal_continuity_engine-0.3.0/tests/test_proof_obligation_wire.py +238 -0
- causal_continuity_engine-0.3.0/tests/test_proof_rejection_reason.py +45 -0
- causal_continuity_engine-0.3.0/tests/test_readme_contract.py +100 -0
- causal_continuity_engine-0.3.0/tests/test_receipt_spec_contract.py +101 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions.py +10 -3
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round10_release.py +10 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round11_deep_integrity.py +4 -9
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round14_state_integrity.py +17 -6
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round17_backfill_layout.py +8 -4
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round18_assumption_edits.py +120 -76
- causal_continuity_engine-0.3.0/tests/test_regressions_round18_co_assertion.py +163 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round18_negation.py +69 -28
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round18_source_order.py +97 -18
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round2.py +31 -36
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round3.py +59 -12
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round4.py +2 -3
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round5.py +3 -4
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round6.py +25 -20
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round7.py +61 -42
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round8_engine.py +32 -17
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round8_portability.py +29 -18
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round9_integrity.py +2 -3
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_release_boundary_validation.py +16 -4
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_release_controls.py +52 -26
- causal_continuity_engine-0.3.0/tests/test_resume_prose_origin.py +189 -0
- causal_continuity_engine-0.3.0/tests/test_schema_release_identities.py +136 -0
- causal_continuity_engine-0.3.0/tests/test_task_packet_review.py +215 -0
- causal_continuity_engine-0.3.0/tests/test_task_packets.py +369 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_trust.py +2 -3
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/action_intent_wrong_type.json +25 -20
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/actor_wrong_type.json +25 -20
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/created_at_invalid_calendar_date.json +24 -19
- causal_continuity_engine-0.3.0/vectors/created_at_leap_second.json +177 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/created_at_lowercase_designators.json +24 -19
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/created_at_missing_timezone.json +24 -19
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/created_at_noncanonical_offset.json +24 -19
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/created_at_space_separator.json +24 -19
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/empty_required_authoritative_failure.json +17 -12
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/empty_required_authoritative_pass.json +17 -12
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/empty_required_no_results.json +17 -12
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/empty_required_self_asserted_pass.json +17 -12
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/generate.py +48 -13
- causal_continuity_engine-0.3.0/vectors/historical_proof_version.json +177 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/incomplete_failed_check.json +24 -19
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/index.json +42 -0
- causal_continuity_engine-0.3.0/vectors/input_item_wrong_type.json +178 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/invalid_result_value.json +25 -20
- causal_continuity_engine-0.3.0/vectors/lamport_fingerprint_spoof.json +1463 -0
- causal_continuity_engine-0.3.0/vectors/lamport_no_registry.json +1459 -0
- causal_continuity_engine-0.3.0/vectors/lamport_truncated_key.json +1459 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/missing_required_field.json +25 -20
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/non_binary64_integer.json +25 -20
- causal_continuity_engine-0.3.0/vectors/obligation_duplicate.json +182 -0
- causal_continuity_engine-0.3.0/vectors/obligation_duplicate_task.json +178 -0
- causal_continuity_engine-0.1.6/vectors/created_at_leap_second.json → causal_continuity_engine-0.3.0/vectors/obligation_missing.json +21 -21
- causal_continuity_engine-0.3.0/vectors/obligation_wrong_kind.json +177 -0
- causal_continuity_engine-0.3.0/vectors/obligation_wrong_task.json +177 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/policy_decision_wrong_type.json +23 -18
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/retry_cannot_launder_a_failure.json +29 -24
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/self_asserted_cannot_satisfy.json +25 -20
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/self_assertion_cannot_poison_authoritative_pass.json +29 -24
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/status_contradicts_contents.json +25 -20
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/summary_contradicts_contents.json +25 -20
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/tamper_statement.json +25 -20
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/tamper_statement_resealed.json +25 -20
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/task_id_under_unrelated_field.json +20 -20
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/unbound_task.json +17 -17
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/unknown_action_intent_field.json +25 -20
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/unknown_algorithm.json +25 -20
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/unknown_evidence_context_field.json +25 -20
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/unknown_execution_field.json +25 -20
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/unknown_schema_version.json +25 -20
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/unknown_top_level_field.json +25 -20
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/unknown_verification_field.json +25 -20
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/unverified_forged_body_no_key.json +25 -20
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/unverified_hmac_no_key.json +25 -20
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/valid_hmac.json +26 -21
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/valid_hmac_jcs_edges.json +26 -21
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/valid_hmac_unicode.json +26 -21
- causal_continuity_engine-0.3.0/vectors/valid_lamport.json +1463 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/vectors/wrong_project.json +25 -20
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/verifiers/verify_proof.py +16 -3
- causal_continuity_engine-0.1.6/causal_continuity_engine/__init__.py +0 -21
- causal_continuity_engine-0.1.6/tests/test_regressions_round18_co_assertion.py +0 -119
- causal_continuity_engine-0.1.6/vectors/input_item_wrong_type.json +0 -163
- causal_continuity_engine-0.1.6/vectors/lamport_fingerprint_spoof.json +0 -1458
- causal_continuity_engine-0.1.6/vectors/lamport_no_registry.json +0 -1454
- causal_continuity_engine-0.1.6/vectors/lamport_truncated_key.json +0 -1454
- causal_continuity_engine-0.1.6/vectors/valid_lamport.json +0 -1458
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.editorconfig +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.gitattributes +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.githooks/commit-msg +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.githooks/pre-commit +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/CODEOWNERS +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/ISSUE_TEMPLATE/feature.yml +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/SECURITY.md +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/SUPPORT.md +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/dependabot.yml +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/pull_request_template.md +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/release.yml +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/ruleset.README.md +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/ruleset.json +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/scripts/bootstrap_tools.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/scripts/build_distributions.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/scripts/check_clean.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/scripts/check_content_marks.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/scripts/check_release_metadata.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/scripts/check_release_tag.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/scripts/check_stdlib.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/scripts/prepare_release_tag.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/scripts/render_api_docs.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/scripts/run_gates.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/scripts/run_isolated_review.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/tag-ruleset.json +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/workflows/ci.yml +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/workflows/commit-signature-audit.yml +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/workflows/content-integrity-pr.yml +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/workflows/content-integrity.yml +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/workflows/dependency-review.yml +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/workflows/no-ai-attribution.yml +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/workflows/release.yml +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.github/workflows/secret-scan.yml +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.gitignore +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.gitleaks.toml +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/.pre-commit-config.yaml +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/LICENSE.txt +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/MANIFEST.in +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/NOTICE +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/benchmarks/__init__.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/benchmarks/continuitybench/__init__.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/capabilities.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/core.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/evidence.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/github.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/lamport.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/learning.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/ontology.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/py.typed +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/redaction.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine/verifiers.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine.egg-info/dependency_links.txt +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine.egg-info/entry_points.txt +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine.egg-info/requires.txt +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/causal_continuity_engine.egg-info/top_level.txt +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/docs/CAPABILITIES.md +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/docs/CONTENT-INGRESS-FIREWALL.md +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/docs/PUBLIC-FLIP.md +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/docs/REQUIREMENTS.md +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/docs/RESEARCH-ROADMAP.md +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/docs/TESTING.md +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/docs/V0.1.5-TRUST-CLOSURE.md +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/docs/assets/demo.svg +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/docs/assets/social-preview.png +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/examples/backfill_github.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/examples/quickstart.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/justfile +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/schemas/cce.anchor.v1.json +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/schemas/cce.capsule.v1.json +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/schemas/cce.continuity-receipt.v1.json +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/schemas/cce.event.v1.json +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/schemas/cce.proof-predicate.v1.json +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/schemas/cce.proof.v1.json +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/schemas/cce.recovery.v1.json +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/schemas/cce.resume.v1.json +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/setup.cfg +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/__init__.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/schema_validation.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_benchmark_runner.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_content_marks.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_distribution_environment.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_github_redaction.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round12_release_blockers.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round13_jcs.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round15_capsule_invalidation_github.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round15_public_boundaries.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round15_storage_boundaries.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round16_cli_api_core_capabilities.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round18_journal.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round8_boundaries.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round8_state.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_regressions_round9_scope_freshness.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_sqlite_lifecycle.py +0 -0
- {causal_continuity_engine-0.1.6 → causal_continuity_engine-0.3.0}/tests/test_store_graph.py +0 -0
- {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`
|
|
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
|
|
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
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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,
|
|
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}/
|
|
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.
|
|
151
|
-
#
|
|
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
|
-
#
|
|
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
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
-
-
|
|
274
|
-
|
|
275
|
-
|
|
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
|
|
326
|
-
|
|
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.
|
|
12
|
-
date-released: 2026-
|
|
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
|