Repository navigation
board: land the R2IL session's answers — D-RLR-4 re-scoped, palette/FnIndex tension resolved #302
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Supersession index is current | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| paths: | |
| # The generator's INPUTS, not just the generator. A plan or a ruled-symbol | |
| # verdict is what makes the committed table stale -- that is how it went | |
| # stale the first time (#1047 added a plan naming two ruled symbols, and | |
| # nothing noticed). | |
| - .claude/plans/** | |
| - .claude/v3/COMPONENT-MAP.md | |
| - .claude/tools/supersession_index.py | |
| - .claude/board/SUPERSESSION-INDEX.md | |
| - .github/workflows/supersession-index.yml | |
| # The BOARD is an input too, and was missing from this list. The | |
| # generator's "board coverage" column counts each plan's D-ids cited in | |
| # `board/entries/*.md` + `EPIPHANIES.md` (supersession_index.py:48-49, | |
| # read at :85), so a PR that only PREPENDS an epiphany citing a D-id | |
| # moves the table while the gate stayed silent -- CI green over a stale | |
| # index, which is the one thing this workflow exists to prevent. | |
| # Measured on #1123: an EPIPHANIES-only PR ran no `regenerate-and-diff` | |
| # at all. `CLAUDE.md` already named the board among the inputs; the | |
| # filter had not caught up. | |
| - .claude/board/entries/** | |
| - .claude/board/EPIPHANIES.md | |
| # `crates/` decides the "live" column (:27 globs it per symbol). Broad, | |
| # and deliberately so: a symbol deleted from the tree changes the table, | |
| # and the generator takes ~15 s, so the gate is cheap next to the Rust | |
| # jobs it runs beside. | |
| - crates/** | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| jobs: | |
| regenerate-and-diff: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Regenerate and compare | |
| run: | | |
| python3 .claude/tools/supersession_index.py > /tmp/regen.md | |
| if ! diff -u .claude/board/SUPERSESSION-INDEX.md /tmp/regen.md; then | |
| echo | |
| echo "::error::SUPERSESSION-INDEX.md is stale." | |
| echo "It is GENERATED from ALL of:" | |
| echo " .claude/plans/ + crates/ + .claude/v3/COMPONENT-MAP.md" | |
| echo " .claude/board/entries/ + .claude/board/EPIPHANIES.md" | |
| echo "so a plan naming a ruled symbol, a symbol added or deleted in" | |
| echo "crates/, OR a board entry citing a D-id can make it stale." | |
| echo "Regenerate and commit:" | |
| echo " python3 .claude/tools/supersession_index.py > .claude/board/SUPERSESSION-INDEX.md" | |
| exit 1 | |
| fi | |
| echo "index is current" |