Skip to content

docs: publish and verify the GitHub Pages buyer surface #97

Description

@seonghobae

Finding

Fresh repository metadata on 2026-09-12 still reports has_pages: false, while docs/index.md is maintained as the buyer-facing Pages source and the product-development contract requires GitHub.io publication to be verified rather than inferred from checked-in Markdown.

The source/workflow half remains PR #98. Earlier repaired exacts proved direct HTTPS transport, zero redirects, real curl success, exact HTTP 200, source-SHA marker equality, and rendered-root digest verification. Fresh review found one more evidence-integrity gap in exact 2780f08f53c36f7f367a043b1097e13449552596: the verifier fetched public index-sha256.txt and then treated that public value as the expected digest. A cache-skewed state with a fresh source-sha.txt but stale index-sha256.txt plus matching stale / could therefore satisfy the predicate.

Current #98 exact is 0342fbda2c0e4f97d412d12d4a025fdffd46b599. Test-first 352c39c441e204c1a7ce15821b58e93bc49f1a67 requires build-origin digest authority; 95084621c54fae4f707969b8e3a868066bcbf082 computes the exact rendered _site/index.html digest, writes it into the Pages artifact, exports the same value as a build-job output, and passes it through the workflow DAG to deploy; 0342fbda2c0e4f97d412d12d4a025fdffd46b599 records the RCA and recovery boundary. Public index-sha256.txt must now equal that trusted build-origin value, and the fetched root bytes must hash to the same value. The public site is no longer allowed to define its own expected digest.

A checked-in workflow—even after source repair—is not publication evidence. The repository itself still has Pages disabled, protected main has not admitted #98, no protected-main Pages deployment has run, and no public GitHub.io source/root identity has been verified.

Boundary

This is documentation/publication authority only. Do not claim protected integration, immutable product release, gateway deployment or edge cutover merely because Pages is published. Do not publish mutable PR-head content as a released product state. Dedicated source writers retain their lanes; the Pages workflow is a normal reviewed source change and may publish only an admitted protected revision.

Acceptance

  • Preserve GitHub Actions publication from an admitted protected main revision with exact source-SHA and rendered-root binding unless a reviewed successor explicitly supersedes it.
  • Integrate the Pages source/workflow through normal dependency-ordered protected governance; do not transfer predecessor/head GREEN or review credit across movement.
  • Enable GitHub Actions as the repository Pages publishing source through the correct repository-owner/admin path.
  • Publish docs/index.md from an admitted protected revision and record the deployment/source SHA.
  • Fetch the returned deployment URL directly over HTTPS. /source-sha.txt, /index-sha256.txt, and the root must each complete successfully with exact HTTP 200; redirects are not accepted as publication evidence.
  • Require marker body == protected source SHA, build-origin root digest syntax == 64 lowercase hex, public digest body == build-origin digest, and SHA-256 of the fetched root bytes == that same build-origin digest.
  • Keep candidate/open-PR documentation clearly distinct from protected/released/cutover claims.
  • Preserve the recovery model: a bad documentation deployment is recovered by a reviewed forward/revert commit on protected history and a new protected-source deployment, not by publishing an arbitrary PR head.

Current evidence

Keep this issue open until repository-owner enablement, dependency-ordered protected integration, actual protected-source deployment, and public direct-response source plus build-origin rendered-root identity verification all exist.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions