Skip to content

fix(pages): deploy a committed site artifact instead of building casket-ssg in CI - #77

Merged
hyperpolymath merged 2 commits into
mainfrom
fix/casket-pages-prebuilt-site
Sep 2, 2026
Merged

fix(pages): deploy a committed site artifact instead of building casket-ssg in CI#77
hyperpolymath merged 2 commits into
mainfrom
fix/casket-pages-prebuilt-site

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Fixes the failure mode behind #74 (not auto-closed — #74 will be closed manually after the first verified green "GitHub Pages" run on main, per the verify-then-close discipline).

The defect

casket-pages.yml ("GitHub Pages") has 0 successes in ~93 runs, in two eras:

  1. Through 2026-05-30: 46× failed at Setup Pages (Pages was not yet enabled for the repo).
  2. Since then: 47× cancelled at cabal build by timeout-minutes: 15 — casket-ssg's build-depends (pandoc >= 3.0, pandoc-types, text-icu, extra-libraries: lol) cannot cold-build in 15 minutes, and no cache was ever seeded because no run ever completed.

The fix (owner ruling: "prebuild/commit the site artifact")

  • site/ — the committed artifact: hand-authored static index.html (honestly labelled; makes no casket-ssg provenance claim), .nojekyll, and site/README.adoc stating the deploy-verbatim contract and how casket-ssg rendering can replace it later.
  • casket-pages.yml — deploy-only: checkout → configure-pages → upload-pages-artifact → deploy-pages, one job, 5-minute timeout. Name ("GitHub Pages"), triggers, permissions, and concurrency group are unchanged.

actions.lock contract

gh actions-lock (v0.1.6) was run in this PR per the standing same-PR contract: no pin changes needed — all four remaining actions were already pinned in .github/workflows/actions.lock. The tool warns that actions/cache@v4.3.0 and haskell-actions/setup@v2.7.5 entries are now unused by this workflow but offers no prune in fix mode; the machine-managed lockfile is left untouched by hand. (Its fix mode also wants to insert a banner line above the SPDX header of all 14 workflows, which would trip the Workflow security linter's line-1 SPDX check — that churn is deliberately not committed.)

Verification plan

PR CI proves the lock/workflow parse and governance gates only — casket-pages.yml triggers on push to main. After merge: watch the "GitHub Pages" run on main (including startup_failure, which gh pr checks cannot see), confirm the deploy at https://hyperpolymath.github.io/vexometer/, then close #74 with the record.

Pre-verified enablers: Pages is enabled with build_type: "workflow"; the competing Ddraig workflow (pages.yml) is disabled_manually, so this is the only live writer to the pages concurrency group.

🤖 Generated with Claude Code

…et-ssg in CI

The "GitHub Pages" workflow (casket-pages.yml) has never produced a green
deploy in ~93 runs (issue #74): 46 failures at Setup Pages before Pages was
enabled, then 47 cancellations when the cold cabal build of casket-ssg
(pandoc >= 3.0, pandoc-types, text-icu, extra-libraries: lol) hit the
15-minute job timeout.

Per owner ruling ("prebuild/commit the site artifact"):

* site/ now holds the deployed artifact — a hand-authored static index.html
  (honestly labelled as such; it does not claim casket-ssg provenance),
  .nojekyll, and a README.adoc stating the deploy-verbatim contract and the
  path back to casket-ssg rendering if its toolchain becomes viable.
* casket-pages.yml is now deploy-only: checkout -> configure-pages ->
  upload-pages-artifact -> deploy-pages, single job, 5-minute timeout.
  Name, triggers, permissions, and concurrency are unchanged; the filename
  is kept to avoid lockfile/context churn.
* gh actions-lock (v0.1.6) was run for the same-PR lock contract: no pin
  changes were needed (all four remaining actions already pinned). The tool
  warns that actions/cache and haskell-actions/setup entries are now unused
  but offers no prune in fix mode; the machine-managed lockfile is left
  untouched per the do-not-edit-by-hand contract.

Pages is enabled with build_type=workflow, and the competing Ddraig
workflow (pages.yml) is disabled_manually, so this deploy path is the only
live writer to the pages concurrency group.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 2, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 37 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Team

Run ID: 9db82d63-faab-4e0e-8d27-a827f6f61e53

📥 Commits

Reviewing files that changed from the base of the PR and between 66a0fbd and 35df58f.

⛔ Files ignored due to path filters (1)
  • .github/workflows/actions.lock is excluded by !**/*.lock
📒 Files selected for processing (4)
  • .github/workflows/casket-pages.yml
  • site/.nojekyll
  • site/README.adoc
  • site/index.html

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

…remove

gh actions-lock v0.1.6 fix mode warns about unused entries
(actions/cache@v4.3.0, haskell-actions/setup@v2.7.5 — orphaned by the
deploy-only rewrite) but does not prune them, while the same tool's CI
verifier in the governance workflow hard-fails on them (valid: false).
Hand-removed per the verifier's own remediation text; validated locally
with gh actions-lock --no-fix (14 workflows, no findings).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@hyperpolymath
hyperpolymath merged commit 370b373 into main Sep 2, 2026
27 checks passed
@hyperpolymath
hyperpolymath deleted the fix/casket-pages-prebuilt-site branch September 2, 2026 01:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

casket-pages.yml has never succeeded: cabal build exceeds 15-min timeout (was: Setup Pages failure)

1 participant