causal-continuity-engine 0.1.0__tar.gz → 0.1.2__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.0 → causal_continuity_engine-0.1.2}/.github/CONTRIBUTING.md +19 -19
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/SECURITY.md +9 -23
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/scripts/verify_distributions.py +1 -1
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/workflows/release.yml +7 -2
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/AGENTS.md +4 -5
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/CHANGELOG.md +50 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/CITATION.cff +2 -2
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/MANIFEST.in +1 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/PKG-INFO +24 -16
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/README.md +22 -14
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine/__init__.py +1 -1
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine/cli.py +4 -2
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine.egg-info/PKG-INFO +24 -16
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine.egg-info/SOURCES.txt +1 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine.egg-info/requires.txt +1 -1
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/docs/RELEASE.md +14 -14
- causal_continuity_engine-0.1.2/docs/assets/demo.svg +23 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/pyproject.toml +1 -1
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/requirements-dev.in +1 -1
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_cli.py +14 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_regressions_round8_portability.py +14 -8
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_release_controls.py +23 -2
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.editorconfig +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.gitattributes +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.githooks/commit-msg +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.githooks/pre-commit +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/CODEOWNERS +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/ISSUE_TEMPLATE/feature.yml +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/SUPPORT.md +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/dependabot.yml +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/pull_request_template.md +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/release.yml +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/ruleset.README.md +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/ruleset.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/scripts/bootstrap_tools.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/scripts/build_distributions.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/scripts/check_clean.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/scripts/check_release_metadata.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/scripts/check_release_tag.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/scripts/check_stdlib.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/scripts/prepare_release_tag.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/scripts/render_api_docs.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/scripts/run_gates.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/scripts/verify_public_schemas.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/tag-ruleset.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/workflows/ci.yml +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/workflows/commit-signature-audit.yml +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/workflows/dependency-review.yml +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/workflows/no-ai-attribution.yml +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/workflows/secret-scan.yml +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.gitignore +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.gitleaks.toml +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.pre-commit-config.yaml +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/LICENSE.txt +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/NOTICE +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/SPEC.md +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/benchmarks/__init__.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/benchmarks/continuitybench/__init__.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/benchmarks/continuitybench/run.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/benchmarks/continuitybench/scenarios.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine/api.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine/capabilities.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine/capsule.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine/core.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine/engine.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine/evidence.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine/extraction.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine/github.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine/graph.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine/invalidation.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine/lamport.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine/learning.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine/memory.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine/ontology.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine/partial.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine/policy.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine/proof.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine/py.typed +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine/redaction.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine/resume.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine/store.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine/verifiers.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine.egg-info/dependency_links.txt +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine.egg-info/entry_points.txt +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine.egg-info/top_level.txt +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/docs/API.md +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/docs/CAPABILITIES.md +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/docs/PUBLIC-FLIP.md +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/docs/REQUIREMENTS.md +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/docs/REQUIREMENTS_COVERAGE.md +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/docs/RESEARCH-ROADMAP.md +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/docs/TESTING.md +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/docs/adr/ADR-INDEX.md +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/docs/assets/social-preview.png +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/justfile +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/requirements-dev.lock +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/schemas/cce.anchor.v1.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/schemas/cce.capsule.v1.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/schemas/cce.continuity-receipt.v1.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/schemas/cce.event.v1.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/schemas/cce.proof-predicate.v1.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/schemas/cce.proof.v1.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/schemas/cce.recovery.v1.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/schemas/cce.resume.v1.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/setup.cfg +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/__init__.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/schema_validation.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_api_contract.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_conformance.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_distribution_environment.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_engine_e2e.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_github_redaction.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_instrument_validation.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_invalidation_resume.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_learning_partial_api.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_memory_extraction.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_regressions.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_regressions_round10_release.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_regressions_round11_deep_integrity.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_regressions_round12_release_blockers.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_regressions_round13_jcs.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_regressions_round14_state_integrity.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_regressions_round15_capsule_invalidation_github.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_regressions_round15_public_boundaries.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_regressions_round15_storage_boundaries.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_regressions_round16_cli_api_core_capabilities.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_regressions_round2.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_regressions_round3.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_regressions_round4.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_regressions_round5.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_regressions_round6.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_regressions_round7.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_regressions_round8_boundaries.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_regressions_round8_engine.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_regressions_round8_state.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_regressions_round9_integrity.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_regressions_round9_scope_freshness.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_release_boundary_validation.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_sqlite_lifecycle.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_store_graph.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/tests/test_trust.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/action_intent_wrong_type.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/actor_wrong_type.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/created_at_invalid_calendar_date.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/created_at_noncanonical_offset.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/empty_required_authoritative_failure.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/empty_required_authoritative_pass.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/empty_required_no_results.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/empty_required_self_asserted_pass.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/generate.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/incomplete_failed_check.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/index.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/input_item_wrong_type.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/invalid_result_value.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/lamport_fingerprint_spoof.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/lamport_no_registry.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/lamport_truncated_key.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/missing_required_field.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/non_binary64_integer.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/policy_decision_wrong_type.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/retry_cannot_launder_a_failure.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/self_asserted_cannot_satisfy.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/self_assertion_cannot_poison_authoritative_pass.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/status_contradicts_contents.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/summary_contradicts_contents.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/tamper_statement.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/tamper_statement_resealed.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/task_id_under_unrelated_field.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/unbound_task.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/unknown_action_intent_field.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/unknown_algorithm.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/unknown_schema_version.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/unknown_top_level_field.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/unverified_forged_body_no_key.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/unverified_hmac_no_key.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/valid_hmac.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/valid_hmac_jcs_edges.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/valid_hmac_unicode.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/valid_lamport.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/vectors/wrong_project.json +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/verifiers/__init__.py +0 -0
- {causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/verifiers/verify_proof.py +0 -0
|
@@ -89,13 +89,14 @@ just test # should be green before you change anythi
|
|
|
89
89
|
```
|
|
90
90
|
|
|
91
91
|
Install gitleaks. It is load-bearing here, not decoration: GitHub's native
|
|
92
|
-
secret scanning and
|
|
93
|
-
|
|
94
|
-
leaves the machine; the `secrets` workflow scans pull requests,
|
|
95
|
-
`main`, and the full history weekly. The hook warns rather than
|
|
96
|
-
gitleaks is missing, so that server-side scan remains visible
|
|
97
|
-
`--no-verify`. The
|
|
98
|
-
|
|
92
|
+
secret scanning and push protection are enabled on this repository, but both
|
|
93
|
+
act only once content reaches GitHub. The local hook catches a credential
|
|
94
|
+
before it leaves the machine; the `secrets` workflow scans pull requests,
|
|
95
|
+
pushes to `main`, and the full history weekly. The hook warns rather than
|
|
96
|
+
refuses when gitleaks is missing, so that server-side scan remains visible
|
|
97
|
+
after a local `--no-verify`. The live ruleset requires `ci`, `attribution`,
|
|
98
|
+
`secrets`, and `DCO`, so a failing scan blocks the merge; see
|
|
99
|
+
`.github/ruleset.README.md`. If a
|
|
99
100
|
synthetic test value trips the scan,
|
|
100
101
|
allowlist it in `.gitleaks.toml` by value, never by path, so a real secret in
|
|
101
102
|
the same file is still caught.
|
|
@@ -139,10 +140,9 @@ wheel. The `ci` job fans all those paths into one context.
|
|
|
139
140
|
|
|
140
141
|
Attribution is not one of these, and it is not a lint rule. It is enforced by
|
|
141
142
|
`.githooks/pre-commit` locally and by the `attribution` job in
|
|
142
|
-
`.github/workflows/no-ai-attribution.yml`. The
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
`.github/ruleset.README.md`.
|
|
143
|
+
`.github/workflows/no-ai-attribution.yml`. The live ruleset requires both
|
|
144
|
+
`attribution` and `secrets` to pass before a merge; the apply and read-back
|
|
145
|
+
procedure is in `.github/ruleset.README.md`.
|
|
146
146
|
|
|
147
147
|
`docs/CAPABILITIES.md` is generated, never hand-edited. If your change moves a
|
|
148
148
|
symbol a claim points at, run
|
|
@@ -223,20 +223,20 @@ sdist, and checksum manifest to a separate draft-to-final publish job. See
|
|
|
223
223
|
|
|
224
224
|
**Sign off your commits.** Contributions are accepted under the
|
|
225
225
|
[Developer Certificate of Origin 1.1](https://developercertificate.org/), and
|
|
226
|
-
|
|
226
|
+
every commit in a pull request must carry a
|
|
227
227
|
`Signed-off-by` trailer:
|
|
228
228
|
|
|
229
229
|
```bash
|
|
230
230
|
git commit -s -m "fix(graph): bound traversal at the configured budget"
|
|
231
231
|
```
|
|
232
232
|
|
|
233
|
-
This is
|
|
234
|
-
check
|
|
235
|
-
Existing history predates enforcement and is not being
|
|
236
|
-
add trailers.
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
233
|
+
This is enforced. The DCO app checks every commit in a pull request and its
|
|
234
|
+
`DCO` check is a required status, so a pull request missing the trailer is
|
|
235
|
+
blocked from merging. Existing history predates enforcement and is not being
|
|
236
|
+
rewritten merely to add trailers. `git rebase --signoff` will add the trailer
|
|
237
|
+
if you forget it on an unpublished branch. By signing off you certify the
|
|
238
|
+
DCO's terms and license your contribution under the repository's Apache-2.0
|
|
239
|
+
license.
|
|
240
240
|
|
|
241
241
|
Keep the branch focused. One defect, one pull request. Do not reformat
|
|
242
242
|
adjacent code, rename things you did not introduce, or clean up unrelated dead
|
|
@@ -15,15 +15,14 @@ quarantine barrier, the redaction path, and the event and audit chains.
|
|
|
15
15
|
|
|
16
16
|
| Version | Supported |
|
|
17
17
|
|---|---|
|
|
18
|
-
|
|
|
18
|
+
| Latest commit on `main` | Yes |
|
|
19
19
|
| 0.1.x — latest published release | Yes |
|
|
20
20
|
| Older releases and arbitrary commits | No |
|
|
21
21
|
| Anything else | No such version exists |
|
|
22
22
|
|
|
23
23
|
This is pre-1.0 software with no release branches. A fix lands on `main`; if it
|
|
24
24
|
affects the latest published release, the supported delivery is a new 0.1.x
|
|
25
|
-
patch release rather than mutating or backporting to an older artifact.
|
|
26
|
-
the first release, the reviewed tip of `main` is the only supported version.
|
|
25
|
+
patch release rather than mutating or backporting to an older artifact.
|
|
27
26
|
|
|
28
27
|
Hosted CI requires fixes to pass on Python 3.11, 3.12, 3.13 and 3.14 on Linux,
|
|
29
28
|
and on Python 3.14 natively on Windows and macOS 15 ARM64.
|
|
@@ -34,24 +33,11 @@ and on Python 3.14 natively on Windows and macOS 15 ARM64.
|
|
|
34
33
|
either — if you are unsure whether something is a vulnerability, treat it as
|
|
35
34
|
one until it has been triaged.
|
|
36
35
|
|
|
37
|
-
**
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
maintainer's GitHub no-reply address does not accept inbound mail. This
|
|
43
|
-
project is therefore **not soliciting external security reports** while it
|
|
44
|
-
is private. If you have found something, hold the report until the
|
|
45
|
-
repository is public rather than routing it somewhere public in the
|
|
46
|
-
meantime.
|
|
47
|
-
|
|
48
|
-
Standing up a monitored contact address is a prerequisite for making this
|
|
49
|
-
repository public. The flip does not happen before there is somewhere for a
|
|
50
|
-
report to land.
|
|
51
|
-
|
|
52
|
-
**Once this repository is public**, use GitHub private vulnerability
|
|
53
|
-
reporting: Security tab → **Report a vulnerability**. That is the channel,
|
|
54
|
-
and it is the point at which reports become welcome.
|
|
36
|
+
**Use GitHub private vulnerability reporting: Security tab → Report a
|
|
37
|
+
vulnerability.** That is the channel, and reports are welcome. It is the only
|
|
38
|
+
one: GitHub has no user-to-user messaging, and the maintainer's GitHub
|
|
39
|
+
no-reply address does not accept inbound mail, so a report sent anywhere else
|
|
40
|
+
will not arrive.
|
|
55
41
|
|
|
56
42
|
This project has one maintainer and no on-call rotation. There is no
|
|
57
43
|
guaranteed response time and no bug bounty. What is offered instead: a
|
|
@@ -173,8 +159,8 @@ this project wants reported. Concretely:
|
|
|
173
159
|
|
|
174
160
|
## Coordinated disclosure
|
|
175
161
|
|
|
176
|
-
|
|
177
|
-
|
|
162
|
+
Report through the private-vulnerability-reporting channel above and give a
|
|
163
|
+
fix a reasonable window before publishing. If a
|
|
178
164
|
report is valid, the advisory will credit you by whatever name and link you
|
|
179
165
|
ask for, or anonymously if you prefer. If a report is not valid, you will get
|
|
180
166
|
the reasoning rather than silence.
|
{causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/.github/workflows/release.yml
RENAMED
|
@@ -129,10 +129,14 @@ jobs:
|
|
|
129
129
|
sdist="$(find dist -maxdepth 1 -type f -name 'causal_continuity_engine-*.tar.gz' -print -quit)"
|
|
130
130
|
expected_manifest="$(mktemp)"
|
|
131
131
|
trap 'rm -f "$expected_manifest"' EXIT
|
|
132
|
+
# SHA256SUMS is defined as filename-ordered by both the builder and
|
|
133
|
+
# verify_distributions.py, so sort on the filename field. Sorting the
|
|
134
|
+
# whole line would order by digest and match only when the digests
|
|
135
|
+
# happen to sort the same way the filenames do.
|
|
132
136
|
for artifact in "$sdist" "$wheel"; do
|
|
133
137
|
digest="$(sha256sum "$artifact" | cut -d ' ' -f 1)"
|
|
134
138
|
printf '%s %s\n' "$digest" "$(basename "$artifact")"
|
|
135
|
-
done | LC_ALL=C sort > "$expected_manifest"
|
|
139
|
+
done | LC_ALL=C sort -k2 > "$expected_manifest"
|
|
136
140
|
cmp --silent "$expected_manifest" dist/SHA256SUMS
|
|
137
141
|
echo "validated artifact $ARTIFACT_ID at sha256:$EXPECTED_ARTIFACT_DIGEST"
|
|
138
142
|
|
|
@@ -246,10 +250,11 @@ jobs:
|
|
|
246
250
|
test -f dist/SHA256SUMS
|
|
247
251
|
expected_manifest="$(mktemp)"
|
|
248
252
|
trap 'rm -f "$expected_manifest"' EXIT
|
|
253
|
+
# Filename-ordered, matching the builder and verify_distributions.py.
|
|
249
254
|
for artifact in "$sdist" "$wheel"; do
|
|
250
255
|
digest="$(sha256sum "$artifact" | cut -d ' ' -f 1)"
|
|
251
256
|
printf '%s %s\n' "$digest" "$(basename "$artifact")"
|
|
252
|
-
done | LC_ALL=C sort > "$expected_manifest"
|
|
257
|
+
done | LC_ALL=C sort -k2 > "$expected_manifest"
|
|
253
258
|
cmp --silent "$expected_manifest" dist/SHA256SUMS
|
|
254
259
|
mkdir upload
|
|
255
260
|
mv "$wheel" "$sdist" upload/
|
|
@@ -42,8 +42,7 @@ gates too, not optional extras. The `test` job in
|
|
|
42
42
|
to `main`, across Python 3.11, 3.12, 3.13 and 3.14. The runner stops at the first
|
|
43
43
|
failure. Native Windows and macOS 15 ARM64 invoke the same sequence on 3.14,
|
|
44
44
|
and the artifact job builds twice and exercises an installed wheel. The `ci`
|
|
45
|
-
job fans all four paths in.
|
|
46
|
-
ruleset today.
|
|
45
|
+
job fans all four paths in.
|
|
47
46
|
The committed desired state in `.github/ruleset.json` was applied and read
|
|
48
47
|
back on 2026-08-08: branch ruleset `20590966` is active with no bypass
|
|
49
48
|
actors, required signatures, and merge-blocking `ci`, `attribution`,
|
|
@@ -53,9 +52,9 @@ settings are mutable — re-read the live objects rather than trusting this
|
|
|
53
52
|
sentence.
|
|
54
53
|
`commit-signature-audit.yml` reports GitHub's verdict for the exact pushed
|
|
55
54
|
`main` SHA, but it runs after the commit has landed. It is a detective signal,
|
|
56
|
-
not a substitute for the
|
|
57
|
-
Treat `.github/ruleset.README.md` as the drift register
|
|
58
|
-
|
|
55
|
+
not a substitute for the preventive `required_signatures` branch rule.
|
|
56
|
+
Treat `.github/ruleset.README.md` as the drift register: re-read the live
|
|
57
|
+
objects before describing any control as enforced.
|
|
59
58
|
|
|
60
59
|
The `justfile` exposes focused local commands. Hosted Linux, Windows, macOS,
|
|
61
60
|
and release jobs use `run_gates.py` so no separately downloaded command runner can
|
|
@@ -9,6 +9,56 @@ 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.1.2 — 2026-08-09
|
|
13
|
+
|
|
14
|
+
A documentation and hygiene release. No engine, schema, proof, or HTTP
|
|
15
|
+
behaviour changed; the only executable changes are the credential-handling and
|
|
16
|
+
release-workflow fixes below.
|
|
17
|
+
|
|
18
|
+
`v0.1.1` was tagged from this same work and never published: the release
|
|
19
|
+
workflow's checksum recheck rejected its own verified artifacts, for the reason
|
|
20
|
+
recorded under Fixed. The tag is left in place so that failure stays
|
|
21
|
+
attributable, and the version was incremented rather than reused.
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- **`cce-engine serve` no longer echoes a byte of the API token file.** A
|
|
26
|
+
token file containing non-ASCII bytes surfaced Python's decode error, which
|
|
27
|
+
quotes the offending byte value. The raw bytes are now checked before
|
|
28
|
+
decoding and the command fails with `api token file must be ASCII`, naming
|
|
29
|
+
no content. Found while closing out a CodeQL triage: the alert itself was a
|
|
30
|
+
false positive, this residue was not.
|
|
31
|
+
- **The release workflow's checksum recheck compared the manifest in the wrong
|
|
32
|
+
order.** `SHA256SUMS` is filename-ordered, as both `build_distributions.py`
|
|
33
|
+
and `verify_distributions.py` define it, but the two shell rechecks in
|
|
34
|
+
`release.yml` sorted whole lines — which begin with the digest. The
|
|
35
|
+
comparison therefore succeeded only when the artifacts' digests happened to
|
|
36
|
+
sort the same way their filenames do, making every release a coin flip that
|
|
37
|
+
0.1.0 won and the 0.1.1 attempt lost. Both rechecks now sort on the filename
|
|
38
|
+
field, and a regression test pins the contract.
|
|
39
|
+
- **Documentation that described the repository as private and unpublished.**
|
|
40
|
+
Those statements were accurate when written and became false when the
|
|
41
|
+
repository went public and 0.1.0 shipped. The security policy was the
|
|
42
|
+
serious one — it stated there was no reporting channel at all and told
|
|
43
|
+
anyone who found a defect to withhold the report until the repository was
|
|
44
|
+
public, while private vulnerability reporting was already enabled.
|
|
45
|
+
`CONTRIBUTING.md` also said sign-off was unenforced and that native secret
|
|
46
|
+
scanning was unavailable, and `docs/RELEASE.md` said the release workflow
|
|
47
|
+
did not upload to PyPI and that installation instructions must not name
|
|
48
|
+
`pip install`. Each now states the live state, re-read from the API rather
|
|
49
|
+
than assumed.
|
|
50
|
+
- **The README demo image is referenced by an absolute URL.** PyPI does not
|
|
51
|
+
resolve repository-relative image paths, so the relative form would have
|
|
52
|
+
rendered as a broken image on the project page while rendering correctly on
|
|
53
|
+
GitHub.
|
|
54
|
+
|
|
55
|
+
### Added
|
|
56
|
+
|
|
57
|
+
- A terminal quickstart demo on the README's first screen, built from real
|
|
58
|
+
captured command output.
|
|
59
|
+
- `.svg` assets under `docs/` are admitted to the reviewed source contract and
|
|
60
|
+
ship in the sdist, alongside the existing `.png` allowance.
|
|
61
|
+
|
|
12
62
|
## 0.1.0 — 2026-08-08
|
|
13
63
|
|
|
14
64
|
Everything below is new; this is the first release.
|
|
@@ -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.
|
|
12
|
-
date-released: 2026-08-
|
|
11
|
+
version: 0.1.2
|
|
12
|
+
date-released: 2026-08-09
|
|
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
|
|
@@ -6,6 +6,7 @@ recursive-include causal_continuity_engine *.py py.typed
|
|
|
6
6
|
recursive-include benchmarks *.py
|
|
7
7
|
recursive-include docs *.md
|
|
8
8
|
include docs/assets/social-preview.png
|
|
9
|
+
include docs/assets/demo.svg
|
|
9
10
|
recursive-include schemas *.json
|
|
10
11
|
recursive-include tests *.py
|
|
11
12
|
recursive-include vectors *.py *.json
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: causal-continuity-engine
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.2
|
|
4
4
|
Summary: Causal Continuity Engine - continuity, causal invalidation, and proof for long-running coding agents
|
|
5
5
|
Author: Thomas Albrecht
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -30,7 +30,7 @@ Requires-Dist: pytest==9.1.1; extra == "dev"
|
|
|
30
30
|
Requires-Dist: ruff==0.16.1; extra == "dev"
|
|
31
31
|
Requires-Dist: build==1.5.0; extra == "dev"
|
|
32
32
|
Requires-Dist: jsonschema==4.26.0; extra == "dev"
|
|
33
|
-
Requires-Dist: pip==26.
|
|
33
|
+
Requires-Dist: pip==26.2; extra == "dev"
|
|
34
34
|
Dynamic: license-file
|
|
35
35
|
|
|
36
36
|
# Causal Continuity Engine
|
|
@@ -41,6 +41,8 @@ Continuity, causal invalidation, and proof for long-running coding agents.
|
|
|
41
41
|

|
|
42
42
|

|
|
43
43
|
|
|
44
|
+
<p align="center"><img src="https://raw.githubusercontent.com/thequantumfalcon/causal-continuity-engine/main/docs/assets/demo.svg" alt="cce-engine quickstart: install, init, audit verify, assumptions" width="760"></p>
|
|
45
|
+
|
|
44
46
|
## The problem
|
|
45
47
|
|
|
46
48
|
An agent working a codebase over weeks does not fail by forgetting text. It
|
|
@@ -85,23 +87,29 @@ parsing rather than importing, so a lazy or guarded import is caught too. CI
|
|
|
85
87
|
invokes the same `.github/scripts/check_stdlib.py` scanner through
|
|
86
88
|
`run_gates.py` on every pull request and every push to `main`.
|
|
87
89
|
|
|
88
|
-
The
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
intentional: the shorter `cce` distribution, import namespace, and command are
|
|
93
|
-
already used by an unrelated published project.
|
|
90
|
+
The PyPI distribution name is `causal-continuity-engine`, the import package is
|
|
91
|
+
`causal_continuity_engine`, and the executable is `cce-engine`. Those longer
|
|
92
|
+
names are intentional: the shorter `cce` distribution, import namespace, and
|
|
93
|
+
command are already used by an unrelated published project.
|
|
94
94
|
|
|
95
95
|
## Quickstart
|
|
96
96
|
|
|
97
97
|
Under five minutes, no dependencies beyond the package itself.
|
|
98
98
|
|
|
99
99
|
```bash
|
|
100
|
-
git clone https://github.com/thequantumfalcon/causal-continuity-engine
|
|
101
|
-
cd causal-continuity-engine
|
|
102
100
|
python -m venv .venv
|
|
103
101
|
# Activate with: source .venv/bin/activate (macOS/Linux)
|
|
104
102
|
# or: .venv\Scripts\Activate.ps1 (Windows PowerShell)
|
|
103
|
+
python -m pip install causal-continuity-engine
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
To work on the engine instead of using it, install the checkout editable — see
|
|
107
|
+
[.github/CONTRIBUTING.md](.github/CONTRIBUTING.md) for the full toolchain:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
git clone https://github.com/thequantumfalcon/causal-continuity-engine
|
|
111
|
+
cd causal-continuity-engine
|
|
112
|
+
python -m venv .venv
|
|
105
113
|
python -m pip install -e .
|
|
106
114
|
```
|
|
107
115
|
|
|
@@ -674,9 +682,9 @@ change, and there is no deprecation policy yet.
|
|
|
674
682
|
- Hosted CI requires the full suite on Python 3.11, 3.12, 3.13 and 3.14 on
|
|
675
683
|
Linux and natively on Windows 3.14 and macOS 15 ARM64/Python 3.14; 10/10
|
|
676
684
|
ContinuityBench scenarios pass with all 6 metrics at target
|
|
677
|
-
- Repository-policy JSON
|
|
678
|
-
|
|
679
|
-
[.github/ruleset.README.md](.github/ruleset.README.md).
|
|
685
|
+
- Repository-policy JSON was applied and read back against the live rulesets.
|
|
686
|
+
Remote settings are mutable, so the apply/read-back procedure that re-checks
|
|
687
|
+
them is in [.github/ruleset.README.md](.github/ruleset.README.md).
|
|
680
688
|
- The accepted ADRs in [docs/adr/ADR-INDEX.md](docs/adr/ADR-INDEX.md),
|
|
681
689
|
including the per-round review notes
|
|
682
690
|
- Capability claims that must mechanically resolve, generated into
|
|
@@ -710,9 +718,9 @@ condition.
|
|
|
710
718
|
of every requirement identifier used by code, tests, ADRs, and coverage.
|
|
711
719
|
- [docs/REQUIREMENTS_COVERAGE.md](docs/REQUIREMENTS_COVERAGE.md) — the
|
|
712
720
|
per-requirement implementation status and supporting evidence.
|
|
713
|
-
- [docs/PUBLIC-FLIP.md](docs/PUBLIC-FLIP.md) —
|
|
714
|
-
while this repository
|
|
715
|
-
|
|
721
|
+
- [docs/PUBLIC-FLIP.md](docs/PUBLIC-FLIP.md) — the register of every control
|
|
722
|
+
that could not be enabled while this repository was private, with the exact
|
|
723
|
+
command that turned each one on at the flip.
|
|
716
724
|
- [docs/RELEASE.md](docs/RELEASE.md) — the reproducible, signed, immutable-ready
|
|
717
725
|
release procedure and its continuity-bound attestation roadmap.
|
|
718
726
|
- [docs/RESEARCH-ROADMAP.md](docs/RESEARCH-ROADMAP.md) — standards-backed
|
|
@@ -6,6 +6,8 @@ Continuity, causal invalidation, and proof for long-running coding agents.
|
|
|
6
6
|

|
|
7
7
|

|
|
8
8
|
|
|
9
|
+
<p align="center"><img src="https://raw.githubusercontent.com/thequantumfalcon/causal-continuity-engine/main/docs/assets/demo.svg" alt="cce-engine quickstart: install, init, audit verify, assumptions" width="760"></p>
|
|
10
|
+
|
|
9
11
|
## The problem
|
|
10
12
|
|
|
11
13
|
An agent working a codebase over weeks does not fail by forgetting text. It
|
|
@@ -50,23 +52,29 @@ parsing rather than importing, so a lazy or guarded import is caught too. CI
|
|
|
50
52
|
invokes the same `.github/scripts/check_stdlib.py` scanner through
|
|
51
53
|
`run_gates.py` on every pull request and every push to `main`.
|
|
52
54
|
|
|
53
|
-
The
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
intentional: the shorter `cce` distribution, import namespace, and command are
|
|
58
|
-
already used by an unrelated published project.
|
|
55
|
+
The PyPI distribution name is `causal-continuity-engine`, the import package is
|
|
56
|
+
`causal_continuity_engine`, and the executable is `cce-engine`. Those longer
|
|
57
|
+
names are intentional: the shorter `cce` distribution, import namespace, and
|
|
58
|
+
command are already used by an unrelated published project.
|
|
59
59
|
|
|
60
60
|
## Quickstart
|
|
61
61
|
|
|
62
62
|
Under five minutes, no dependencies beyond the package itself.
|
|
63
63
|
|
|
64
64
|
```bash
|
|
65
|
-
git clone https://github.com/thequantumfalcon/causal-continuity-engine
|
|
66
|
-
cd causal-continuity-engine
|
|
67
65
|
python -m venv .venv
|
|
68
66
|
# Activate with: source .venv/bin/activate (macOS/Linux)
|
|
69
67
|
# or: .venv\Scripts\Activate.ps1 (Windows PowerShell)
|
|
68
|
+
python -m pip install causal-continuity-engine
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
To work on the engine instead of using it, install the checkout editable — see
|
|
72
|
+
[.github/CONTRIBUTING.md](.github/CONTRIBUTING.md) for the full toolchain:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
git clone https://github.com/thequantumfalcon/causal-continuity-engine
|
|
76
|
+
cd causal-continuity-engine
|
|
77
|
+
python -m venv .venv
|
|
70
78
|
python -m pip install -e .
|
|
71
79
|
```
|
|
72
80
|
|
|
@@ -639,9 +647,9 @@ change, and there is no deprecation policy yet.
|
|
|
639
647
|
- Hosted CI requires the full suite on Python 3.11, 3.12, 3.13 and 3.14 on
|
|
640
648
|
Linux and natively on Windows 3.14 and macOS 15 ARM64/Python 3.14; 10/10
|
|
641
649
|
ContinuityBench scenarios pass with all 6 metrics at target
|
|
642
|
-
- Repository-policy JSON
|
|
643
|
-
|
|
644
|
-
[.github/ruleset.README.md](.github/ruleset.README.md).
|
|
650
|
+
- Repository-policy JSON was applied and read back against the live rulesets.
|
|
651
|
+
Remote settings are mutable, so the apply/read-back procedure that re-checks
|
|
652
|
+
them is in [.github/ruleset.README.md](.github/ruleset.README.md).
|
|
645
653
|
- The accepted ADRs in [docs/adr/ADR-INDEX.md](docs/adr/ADR-INDEX.md),
|
|
646
654
|
including the per-round review notes
|
|
647
655
|
- Capability claims that must mechanically resolve, generated into
|
|
@@ -675,9 +683,9 @@ condition.
|
|
|
675
683
|
of every requirement identifier used by code, tests, ADRs, and coverage.
|
|
676
684
|
- [docs/REQUIREMENTS_COVERAGE.md](docs/REQUIREMENTS_COVERAGE.md) — the
|
|
677
685
|
per-requirement implementation status and supporting evidence.
|
|
678
|
-
- [docs/PUBLIC-FLIP.md](docs/PUBLIC-FLIP.md) —
|
|
679
|
-
while this repository
|
|
680
|
-
|
|
686
|
+
- [docs/PUBLIC-FLIP.md](docs/PUBLIC-FLIP.md) — the register of every control
|
|
687
|
+
that could not be enabled while this repository was private, with the exact
|
|
688
|
+
command that turned each one on at the flip.
|
|
681
689
|
- [docs/RELEASE.md](docs/RELEASE.md) — the reproducible, signed, immutable-ready
|
|
682
690
|
release procedure and its continuity-bound attestation roadmap.
|
|
683
691
|
- [docs/RESEARCH-ROADMAP.md](docs/RESEARCH-ROADMAP.md) — standards-backed
|
|
@@ -7,7 +7,7 @@ authenticated runtime records are not replay-derived (ADR-001). Storage is
|
|
|
7
7
|
SQLite implementing the PostgreSQL-first relational adjacency design (ADR-011).
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
|
-
__version__ = "0.1.
|
|
10
|
+
__version__ = "0.1.2"
|
|
11
11
|
|
|
12
12
|
SCHEMA_VERSIONS = {
|
|
13
13
|
"anchor": "cce.anchor.v1",
|
{causal_continuity_engine-0.1.0 → causal_continuity_engine-0.1.2}/causal_continuity_engine/cli.py
RENAMED
|
@@ -1144,8 +1144,10 @@ def cmd_serve(args):
|
|
|
1144
1144
|
engine, meta = _engine(args)
|
|
1145
1145
|
root = Path("." if args.dir is None else args.dir)
|
|
1146
1146
|
_, cce_dir = _physical_cce_directory(root, root / ".cce")
|
|
1147
|
-
|
|
1148
|
-
|
|
1147
|
+
token_bytes = _read_private(_secret_path(cce_dir, meta["api_token_file"]))
|
|
1148
|
+
if not token_bytes.isascii():
|
|
1149
|
+
raise ValueError("api token file must be ASCII")
|
|
1150
|
+
api_token = token_bytes.decode("ascii")
|
|
1149
1151
|
webhook_secret = _read_private(
|
|
1150
1152
|
_secret_path(cce_dir, meta["webhook_secret_file"]))
|
|
1151
1153
|
print(_sanitize_human(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: causal-continuity-engine
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.2
|
|
4
4
|
Summary: Causal Continuity Engine - continuity, causal invalidation, and proof for long-running coding agents
|
|
5
5
|
Author: Thomas Albrecht
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -30,7 +30,7 @@ Requires-Dist: pytest==9.1.1; extra == "dev"
|
|
|
30
30
|
Requires-Dist: ruff==0.16.1; extra == "dev"
|
|
31
31
|
Requires-Dist: build==1.5.0; extra == "dev"
|
|
32
32
|
Requires-Dist: jsonschema==4.26.0; extra == "dev"
|
|
33
|
-
Requires-Dist: pip==26.
|
|
33
|
+
Requires-Dist: pip==26.2; extra == "dev"
|
|
34
34
|
Dynamic: license-file
|
|
35
35
|
|
|
36
36
|
# Causal Continuity Engine
|
|
@@ -41,6 +41,8 @@ Continuity, causal invalidation, and proof for long-running coding agents.
|
|
|
41
41
|

|
|
42
42
|

|
|
43
43
|
|
|
44
|
+
<p align="center"><img src="https://raw.githubusercontent.com/thequantumfalcon/causal-continuity-engine/main/docs/assets/demo.svg" alt="cce-engine quickstart: install, init, audit verify, assumptions" width="760"></p>
|
|
45
|
+
|
|
44
46
|
## The problem
|
|
45
47
|
|
|
46
48
|
An agent working a codebase over weeks does not fail by forgetting text. It
|
|
@@ -85,23 +87,29 @@ parsing rather than importing, so a lazy or guarded import is caught too. CI
|
|
|
85
87
|
invokes the same `.github/scripts/check_stdlib.py` scanner through
|
|
86
88
|
`run_gates.py` on every pull request and every push to `main`.
|
|
87
89
|
|
|
88
|
-
The
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
intentional: the shorter `cce` distribution, import namespace, and command are
|
|
93
|
-
already used by an unrelated published project.
|
|
90
|
+
The PyPI distribution name is `causal-continuity-engine`, the import package is
|
|
91
|
+
`causal_continuity_engine`, and the executable is `cce-engine`. Those longer
|
|
92
|
+
names are intentional: the shorter `cce` distribution, import namespace, and
|
|
93
|
+
command are already used by an unrelated published project.
|
|
94
94
|
|
|
95
95
|
## Quickstart
|
|
96
96
|
|
|
97
97
|
Under five minutes, no dependencies beyond the package itself.
|
|
98
98
|
|
|
99
99
|
```bash
|
|
100
|
-
git clone https://github.com/thequantumfalcon/causal-continuity-engine
|
|
101
|
-
cd causal-continuity-engine
|
|
102
100
|
python -m venv .venv
|
|
103
101
|
# Activate with: source .venv/bin/activate (macOS/Linux)
|
|
104
102
|
# or: .venv\Scripts\Activate.ps1 (Windows PowerShell)
|
|
103
|
+
python -m pip install causal-continuity-engine
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
To work on the engine instead of using it, install the checkout editable — see
|
|
107
|
+
[.github/CONTRIBUTING.md](.github/CONTRIBUTING.md) for the full toolchain:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
git clone https://github.com/thequantumfalcon/causal-continuity-engine
|
|
111
|
+
cd causal-continuity-engine
|
|
112
|
+
python -m venv .venv
|
|
105
113
|
python -m pip install -e .
|
|
106
114
|
```
|
|
107
115
|
|
|
@@ -674,9 +682,9 @@ change, and there is no deprecation policy yet.
|
|
|
674
682
|
- Hosted CI requires the full suite on Python 3.11, 3.12, 3.13 and 3.14 on
|
|
675
683
|
Linux and natively on Windows 3.14 and macOS 15 ARM64/Python 3.14; 10/10
|
|
676
684
|
ContinuityBench scenarios pass with all 6 metrics at target
|
|
677
|
-
- Repository-policy JSON
|
|
678
|
-
|
|
679
|
-
[.github/ruleset.README.md](.github/ruleset.README.md).
|
|
685
|
+
- Repository-policy JSON was applied and read back against the live rulesets.
|
|
686
|
+
Remote settings are mutable, so the apply/read-back procedure that re-checks
|
|
687
|
+
them is in [.github/ruleset.README.md](.github/ruleset.README.md).
|
|
680
688
|
- The accepted ADRs in [docs/adr/ADR-INDEX.md](docs/adr/ADR-INDEX.md),
|
|
681
689
|
including the per-round review notes
|
|
682
690
|
- Capability claims that must mechanically resolve, generated into
|
|
@@ -710,9 +718,9 @@ condition.
|
|
|
710
718
|
of every requirement identifier used by code, tests, ADRs, and coverage.
|
|
711
719
|
- [docs/REQUIREMENTS_COVERAGE.md](docs/REQUIREMENTS_COVERAGE.md) — the
|
|
712
720
|
per-requirement implementation status and supporting evidence.
|
|
713
|
-
- [docs/PUBLIC-FLIP.md](docs/PUBLIC-FLIP.md) —
|
|
714
|
-
while this repository
|
|
715
|
-
|
|
721
|
+
- [docs/PUBLIC-FLIP.md](docs/PUBLIC-FLIP.md) — the register of every control
|
|
722
|
+
that could not be enabled while this repository was private, with the exact
|
|
723
|
+
command that turned each one on at the flip.
|
|
716
724
|
- [docs/RELEASE.md](docs/RELEASE.md) — the reproducible, signed, immutable-ready
|
|
717
725
|
release procedure and its continuity-bound attestation roadmap.
|
|
718
726
|
- [docs/RESEARCH-ROADMAP.md](docs/RESEARCH-ROADMAP.md) — standards-backed
|
|
@@ -13,9 +13,8 @@ and remain bound to the reviewed tag.
|
|
|
13
13
|
2. Preserve the repository-level requirement for full-length commit SHAs on
|
|
14
14
|
every GitHub Action reference. The 2026-08-04 API read-back reports
|
|
15
15
|
`sha_pinning_required: true`.
|
|
16
|
-
3. Preserve release immutability. It was enabled
|
|
17
|
-
|
|
18
|
-
not retroactive, so verify it again before the first tag.
|
|
16
|
+
3. Preserve release immutability. It was enabled before any tag or release
|
|
17
|
+
existed. The setting is not retroactive, so verify it again before each tag.
|
|
19
18
|
4. Confirm the maintainer's signing key renders both commits and signed tags
|
|
20
19
|
as **Verified** on GitHub, and record the expected key fingerprint or SSH
|
|
21
20
|
principal in the operator's release record.
|
|
@@ -181,17 +180,18 @@ Python image (or an equivalently authenticated interpreter distribution).
|
|
|
181
180
|
|
|
182
181
|
## Python package index publication
|
|
183
182
|
|
|
184
|
-
The GitHub release workflow
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
183
|
+
The GitHub release workflow uploads to PyPI. The name
|
|
184
|
+
`causal-continuity-engine` was claimed by the first successful publish
|
|
185
|
+
(0.1.0, 2026-08-08); a
|
|
186
|
+
[pending Trusted Publisher does not reserve a name](https://docs.pypi.org/trusted-publishers/creating-a-project-through-oidc/),
|
|
187
|
+
only publishing does.
|
|
188
|
+
|
|
189
|
+
The `pypi` job runs after `verify` and `publish`, is gated on the protected
|
|
190
|
+
`pypi` environment, and authenticates by OIDC Trusted Publishing bound to this
|
|
191
|
+
owner, repository, and `release.yml` — no long-lived token. It receives only
|
|
192
|
+
the already verified wheel and sdist, re-checks them against the checksum
|
|
193
|
+
manifest before upload, and emits PEP 740 attestations. Require PyPI's exposed
|
|
194
|
+
SHA-256 digests to match the GitHub release assets before announcing.
|
|
195
195
|
|
|
196
196
|
Do not reuse a failed version or replace an asset. Correct the cause, increment
|
|
197
197
|
the version, and create a new signed tag so the failure remains attributable.
|