From b9c779bc09ef031ba86bcf2a246a6433543f5433 Mon Sep 17 00:00:00 2001 From: rsr-campaign Date: Fri, 18 Sep 2026 14:09:14 +0000 Subject: [PATCH] fix(pages): supply the Pages workflow the repository was configured for but never had MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pages is configured with build_type "workflow". This repository carries no Pages workflow, so the build never ran and the site was never published: https://hyperpolymath.github.io/nesy-solver/ returns 404 for the site root and for /.well-known/security.txt alike. Supplying the workflow is the fix that needs no repository-settings access. (A switch to the legacy branch builder would also work, but the token in use does not carry the Pages settings scope.) WHY THE STAGING IS A SUBSET, NOT THE REPOSITORY ROOT index.html references /public/styles.css and /public/app.js, and the site needs .well-known/ at its root. Those, plus the entry page, are what is staged. Publishing the repository root would instead serve 45 root files — AUDIT.adoc, Containerfile, server.js, wrangler.toml and the rest — none of which is content. WHY NOT .nojekyll The first pass added one, reasoning that Jekyll drops dot-directories. That is true of the legacy branch builder, and irrelevant here: a workflow upload does not run Jekyll, so the file would have been dead weight that looked like a fix. It is not included. UNRESOLVED, AND NOT FIXABLE FROM HERE wrangler.toml is a Cloudflare Pages configuration (pages_build_output_dir = "dist") and index.html advertises nesy-solver.dev, which does not currently resolve. So this repository may already have an intended host that is not GitHub Pages. If Cloudflare is the real target, this workflow is scaffolding rather than the answer, and .well-known/ still needs to reach that origin root — a GitHub Pages project path is not it. Settling that does not change this commit: it makes the configured Pages build run, and exposes nothing that was not already public. --- .github/workflows/casket-pages.yml | 70 ++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 .github/workflows/casket-pages.yml diff --git a/.github/workflows/casket-pages.yml b/.github/workflows/casket-pages.yml new file mode 100644 index 0000000..c87084b --- /dev/null +++ b/.github/workflows/casket-pages.yml @@ -0,0 +1,70 @@ +# SPDX-License-Identifier: MPL-2.0 +# +# GitHub Pages deployment. +# +# This repository has Pages configured with build_type "workflow", but carried +# no Pages workflow — so the build never ran and the site was never published. +# https://hyperpolymath.github.io/nesy-solver/ returned 404 for the site root +# and for /.well-known/security.txt alike. +# +# WHY THIS STAGES A SUBSET RATHER THAN PUBLISHING THE REPOSITORY ROOT +# +# index.html references /public/styles.css and /public/app.js, and the site +# needs .well-known/ at its root. Those three things, plus the entry page, are +# what is staged. Publishing the repository root instead would serve 45 root +# files — AUDIT.adoc, Containerfile, server.js, wrangler.toml and the rest — +# none of which is site content. +name: GitHub Pages + +on: + push: + branches: [main] + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 + + - name: Stage the site + run: | + set -euo pipefail + mkdir -p _site + cp index.html _site/index.html + [ -d public ] && cp -r public _site/public + # .well-known/ must sit at the ORIGIN ROOT to be discoverable + # (RFC 8615). nesy-solver.dev does not currently resolve, so nothing + # serves it today; this keeps it correct at whatever origin does. + [ -d .well-known ] && cp -r .well-known _site/.well-known + echo "staged:" + find _site -type f | sed 's/^/ /' + + - name: Setup Pages + uses: actions/configure-pages@983d7736d9b0ae728b81ab479565c72886d7745b # v5 + + - name: Upload artifact + uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3 + with: + path: '_site' + + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4