Skip to content

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

Part of test-evidence — Every verifiable claim and widget resolves to revision-bound test evidence, on every surface.

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

What waits on this

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.

Searches the titles and descriptions of every page this site publishes.