diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4b9d12d8..e67a9d7d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -52,6 +52,60 @@ jobs: - name: Tests run: pytest -q + conformance: + name: cross-implementation agreement + runs-on: ubuntu-latest + timeout-minutes: 15 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + cache: pip + # The Node implementation is deliberately not installed from npm: it has + # zero dependencies, so a bare runtime is the whole requirement. + - uses: actions/setup-node@v4 + with: + node-version: "20" + - name: Install + run: | + python -m pip install -U pip + pip install -e '.[test]' + - name: Canonicalization census + # Gates on cc.canonical.v2 only. v1 is retained read-only for + # historical receipts and is expected to carry its known defects. + run: python scripts/canonicalization_probe.py + - name: Evidence cards are current + run: python scripts/build_evidence_cards.py --check + - name: Corpus is current + run: python scripts/build_conformance_corpus.py --check + - name: Independent Node implementation agrees + run: node verifiers/node/cc_compose_verify.mjs + - name: Differential fuzz + run: python scripts/differential_compose.py --cases 4000 --seed 1 + - name: Conformance, canonicalization and acceptance suites + run: pytest -q tests/conformance tests/acceptance tests/unit/compose tests/unit/cli tests/unit/canonical tests/unit/evidence_card + + test-extra-is-sufficient: + name: the documented install path works + runs-on: ubuntu-latest + timeout-minutes: 20 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + cache: pip + # Installs '.[test]' SPECIFICALLY, not '.[dev]'. The extra strangers are + # told to use must be the extra that is tested; before this job the two + # diverged and the documented path produced a red suite (finding F-01). + - name: Install the documented test extra + run: | + python -m pip install -U pip + pip install -e '.[test]' + - name: Tests + run: pytest -q + package-build: runs-on: ubuntu-latest timeout-minutes: 15 diff --git a/.gitignore b/.gitignore index ae2fa91b..03fc7d1e 100644 --- a/.gitignore +++ b/.gitignore @@ -58,3 +58,7 @@ protocol_*.jsonl # Generated bundles and built docs (never track) *.zip + +# Film render intermediates (the .mp4 masters and posters are tracked; these are not) +visual_identity/before_you_see_it/renders/.frames-*/ +visual_identity/before_you_see_it/renders/*.webm diff --git a/Makefile b/Makefile index 97b5f888..52704294 100644 --- a/Makefile +++ b/Makefile @@ -113,12 +113,14 @@ GOV_CAPSULE_TESTS := tests/integration/test_claim_governance_capsule.py dev install setup init lock deps \ fmt lint type security package-build \ test test-unit test-int test-kernel test-release test-reporting test-week3 test-week6 cov bench \ + conformance differential acceptance test-compose canon-probe evidence-cards \ check-artifact-boundary check-repro-clean \ enterprise-smoke \ reproduce-smoke reproduce-mvp reproduce-figures figures reports ccc \ reproduce-paper verify-paper-artifacts paper-smoke \ verify-invariants verify-statistics verify-audit \ docs docs-serve \ + film film-ghost-ark \ docker-build docker-run \ clean distclean \ carto-install carto-smoke carto-mvp carto-verify-audit carto-verify-stats carto-suggest \ @@ -301,6 +303,41 @@ test-release: test-kernel test-reporting: install PYTHONPATH=src $(VENV_DIR)/bin/pytest tests/unit/reporting -q +# --- cross-implementation agreement (upgrade workstream W5) ----------------- +# Agreement here establishes that two implementations of one specification +# compute the same values. It does NOT establish that either is correct: both +# were authored in this project and can share a misreading of the spec. + +conformance: install + PYTHONPATH=src $(VENV_DIR)/bin/python scripts/build_conformance_corpus.py --check + node verifiers/node/cc_compose_verify.mjs + PYTHONPATH=src $(VENV_DIR)/bin/pytest tests/conformance -q + +differential: install + PYTHONPATH=src $(VENV_DIR)/bin/python scripts/differential_compose.py --cases 4000 --seed 1 + +# The acceptance gate for consumability: an external consumer's PUBLISHED +# four-control result, reproduced from cc.compose. Not "the API exists" -- +# their numbers, from this library. +acceptance: install + PYTHONPATH=src $(VENV_DIR)/bin/pytest tests/acceptance -q + +test-compose: install + PYTHONPATH=src $(VENV_DIR)/bin/pytest tests/unit/compose tests/unit/cli -q + $(VENV_DIR)/bin/ruff check src/cc/compose src/cc/cli/guard.py + +# Reproduces the S1 canonicalization findings. Exits non-zero while any +# unintended-kernel class remains, so the findings stay falsifiable. +# Evidence cards for an external Atlas. The committed cards are the not-run +# scaffold: verdicts are host-specific and must not be published from a laptop. +evidence-cards: install + PYTHONPATH=src $(VENV_DIR)/bin/python scripts/build_evidence_cards.py --check + PYTHONPATH=src $(VENV_DIR)/bin/pytest tests/unit/evidence_card -q + +canon-probe: install + PYTHONPATH=src $(VENV_DIR)/bin/python scripts/canonicalization_probe.py + PYTHONPATH=src $(VENV_DIR)/bin/pytest tests/unit/canonical -q + test-week3: install $(ACT); pytest -q --disable-warnings \ tests/unit/test_fh_intervals_alpha_cap.py \ @@ -472,6 +509,19 @@ docs: install docs-serve: install $(ACT); mkdocs serve -a 127.0.0.1:8000 +# ====================================================================== +# Film +# ====================================================================== +# "Before You See It" - deterministic 15s film, rendered frame by frame from +# visual_identity/before_you_see_it/film.html. Needs playwright + a chromium +# build; see that directory's README. + +film: install + $(ACT); python visual_identity/before_you_see_it/render_film.py --cut cc-framework + +film-ghost-ark: install + $(ACT); python visual_identity/before_you_see_it/render_film.py --cut ghost-ark + # ====================================================================== # Verifications # ====================================================================== diff --git a/README.md b/README.md index ac69ee54..f33d87e2 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,36 @@ stacked-system failure, not a safety certification.** +--- + +
+
+
+
+
+ A story can start a question. It cannot finish an answer.
+ Before You See It
+ · a 15-second film · Keep the wonder. Check the claim.
+