Skip to content

ci: republish the coverage report to GitHub Pages - #6293

Open
ggreif wants to merge 1 commit into
masterfrom
gabor/coverage-report-site
Open

ggreif wants to merge 1 commit into
masterfrom
gabor/coverage-report-site

Conversation

@ggreif

@ggreif ggreif commented Aug 10, 2026

Copy link
Copy Markdown
Contributor
Screenshot 2026-08-11 at 15 17 30

#6136 dropped the report-site pipeline, but its final deploy is still live: https://caffeinelabs.github.io/motoko/ serves a page frozen at 2026-05-21 whose every link 404s. Two independent causes, both verified:

  • the old index was generated by tree -H . --fromfile, which emits ../-prefixed hrefs — served from /motoko/, ../coverage/ resolves to caffeinelabs.github.io/coverage/, outside the Pages prefix (404). Reproduced locally with the exact command.
  • Pages serves a directory URL only when that directory has an index.html and never generates listings, so e.g. /coverage/ir_passes/ 404s while /coverage/ir_passes/tailcall.ml.html is fine.

This restores the pipeline for coverage only — the old site's base-doc and docs entries are gone — with a hand-written landing page whose single link is relative, so it works at any prefix. No tree dependency.

report-site deliberately lives in packages, not common-constituents: the latter feeds the *-systems-go aggregates and would pull the instrumented coverage build into every test job.

Verified locally: the derivation builds against a stub coverage input and emits href="./coverage/"; nix eval .#report-site.name resolves; actionlint reports nothing on the new job (the findings it does report are pre-existing, in other jobs).

Note the reports job only runs on push to master, so it cannot exercise itself on this PR — the first real deploy happens on merge. Existing /coverage/... URLs keep working, since the report stays under coverage/.

No Changelog entry: this is CI/infra, with no user-visible compiler change.

#6136 dropped the report-site pipeline, but its last deploy is still live on
gh-pages — so https://caffeinelabs.github.io/motoko/ serves a page frozen at
2026-05-21, and every link on it 404s: the index was generated by
`tree -H . --fromfile`, which emits `../`-prefixed hrefs. Served from
`/motoko/`, `../coverage/` resolves outside the Pages prefix (verified: 404).
Subdirectories without an `index.html` 404 too, since Pages generates no
directory listings.

Restore the pipeline for the coverage report only (the `base-doc` and `docs`
entries of the old site are gone) with a hand-written landing page whose single
link is relative, so it works at whatever prefix the site is served from. No
`tree` dependency any more.

`report-site` sits in `packages` rather than `common-constituents`, because the
latter feeds the `*-systems-go` aggregates and would drag the instrumented
coverage build into every test job.

Verified: the derivation builds against a stub coverage input and emits
`href="./coverage/"`; `nix eval .#report-site.name` resolves; actionlint reports
nothing on the new job.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@ggreif
ggreif requested a review from a team as a code owner August 10, 2026 22:03
@ggreif ggreif self-assigned this Aug 10, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Comparing from 9cf37c3 to ce6e061:
The produced WebAssembly code seems to be completely unchanged.
In terms of gas, no changes are observed in 5 tests.
In terms of size, no changes are observed in 5 tests.

@github-actions

Copy link
Copy Markdown
Contributor

Cursor AI review

👍 APPROVE — looks safe to merge

Category Assessment Details
Summary Restores a master-only GitHub Pages deploy of the bisect coverage report via a new report-site Nix package and reports job, replacing the broken tree-generated index with a relative-link landing page.
Code Quality Small, focused restore: reuses existing tests.coverage, keeps report-site out of common-constituents (avoids dragging coverage into *-systems-go), no speculative extras.
Consistency Matches artifacts job patterns (pinned action SHAs, cachix/install-nix-action + cachix-action, cp -rL for symlink trees) and existing contents: write workflow perms for gh-pages push.
Correctness Traced flake.nixreport-site.nixtests.coverage (nix/tests.nix installPhase / test/Makefile bisect-ppx-report … -o coverage); landing href ./coverage/ stays under /motoko/; job is push+master only with SHA-pinned deploy action; no trigger/permission broadening.
Tests No Motoko .mo/.ok changes; deploy is intentionally master-only (cannot self-exercise on the PR). Coverage artifact already produced by common-tests via filterTests "common".
Changelog CI/infra only; correctly omitted (no user-visible moc/language change).

Verdict

Decision: APPROVE
Risk: Low
Reason: Contained CI restore with master-only deploy, pinned actions, and no compiler/RTS/typing surface. Relative index link and package placement match the stated failure mode and existing flake/CI structure.


Generated for commit ce6e061

@caffeine-ci-bot

Copy link
Copy Markdown
Contributor

This pull request has had no activity for 30 days and has been marked as stale. It will be closed in 14 days unless there is new activity. Comment or push to keep it open, or add the pinned label to prevent future stale notices.

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant