I1959 — The evidence publication is typed, bound to its build, and kept on gh-pages
Make scripts/pages call evidence publish in the build's checkout, refuse a dataset that is not bound to the build, and keep each deployed revision's evidence on gh-pages under evidence/<sha>/, retiring the interim publication of PR #577 (ADR 0087 decision 3).
BLOCKED wave 4 · p1 · implementation profile · runs alone
Blocked. This issue cannot start until I1955, I1954 are done. The status is derived from that, not declared.
Objective
Make scripts/pages call evidence publish in the build's checkout, refuse a dataset that is not bound to the build, and keep each deployed revision's evidence on gh-pages under evidence/<sha>/, retiring the interim publication of PR #577 (ADR 0087 decision 3).
Why
ADR 0087 retires the interim Recorded by CI publication once the script calls evidence publish, and CI artifacts expire, so the evidence of a deployed revision has to outlive them.
Current state
scripts/pages evidence (PR #577 with I1949) computes its own publication state in shell; nothing refuses a dataset for another commit; the evidence exists only as a CI artifact.
Desired state
scripts/pages evidence calls majordomus evidence publish; site-build refuses a dataset whose presented commit is not build.json.commit and any proven whose evidence commit the build does not contain; gh-pages keeps evidence/<sha>/ for every deployed revision; the artifact listing is paginated; the site's publication carries the first matching row of ADR 0087 decision 3's publication table, so an ancestor's record is listed by its commit beside dirty, stale, pending or unknown, no evidence is pending or unknown with the reason, and unavailable is no longer published, as decision 1 amends ADR 0068 when the interim section retires.
Scope
- scripts/pages
- scripts/site-build
- scripts/site-deploy
- scripts/ci/link-check
- .github/workflows/pages.yml
- .github/workflows/validate.yml
- .ai/repo/ci/pages.yaml
- .gitignore
- test/cases
- test/cases/357_ci_records_evidence.sh
- docs/EVIDENCE.md
- docs/GITHUB_PAGES_ARCHITECTURE.md
- docs/GITHUB_PAGES_PERFORMANCE.md
- docs/CLAIMS.yaml
- docs/claims
- .ai/repo/features/ci.md
Out of scope
- A new shell unit
- A verdict computed in the script
Dependencies
- I1955BLOCKED The evidence publication is an allow-listed projection
- I1954BLOCKED Every runner reaches the ledger, through the recording branch
What waits on this
- I1960BLOCKED Every widget names its proof
- I1961BLOCKED A deploy verifies the evidence routes it publishes
- I1963BLOCKED Evidence is tested end to end
Acceptance criteria
- The site's evidence dataset is produced only by evidence publish, run in the build's checkout
- site-build refuses a dataset for another commit, and a proven whose evidence commit the build does not contain
- A deployed revision's evidence stays reachable on gh-pages after its CI artifact expires
- Once the interim section retires, an ancestor-only record never publishes current, no evidence publishes pending or unknown naming the reason, and unavailable is not published, as ADR 0087 decision 1 amends ADR 0068 ¶3 and ¶4; asserted by case 518
Validation
- bash test/run.sh 518_evidence_publication_is_bound_to_its_build
- bash test/run.sh 519_evidence_survives_artifact_expiry
Evidence required
- publication_bound_to_its_build
- evidence_outlives_artifacts
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
Timeline
- started
- —
- verified
- —
- completed
- —
Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.
Canonical record: .ai/repo/project/issues/I1959.yaml. Read it back with majordomus plan show I1959.