Split ROADMAP.md into roadmap dashboard + LEARNINGS.md #7
Workflow file for this run
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: build | |
| # OPS-1: turn every guarantee in this repo from convention into a gate. | |
| # Runs on every PR (and on pushes to main): | |
| # 0. `npm test` — the pure-function net: porcelain parsing, result comparison, | |
| # query-text handling. No database, ~1s. It is here rather than in the eval | |
| # workflow because it gates the code the eval loop is BUILT from. | |
| # 1. validate the Knowledge Plane bundle + compile every Malloy model, | |
| # 2. fail on any validation error (build.js exits non-zero), | |
| # 3. fail if the write-back left the working tree dirty — i.e. someone edited | |
| # a concept but did not commit the regenerated routing table / | |
| # Implementations tables. This forces committed write-back. | |
| # | |
| # Note: the graph refresh (make_viz.py) is intentionally NOT wired here. It | |
| # needs the GoogleCloudPlatform/knowledge-catalog clone, which is gitignored and | |
| # absent in CI, so build.js skips it best-effort and it never dirties the tree. | |
| # Graphs are regenerated locally and committed by the author. | |
| on: | |
| pull_request: | |
| # Docs-only PRs change nothing the KP validation or write-back can react to. | |
| # Keep this to TRUE docs — concept files, CLAUDE.md and models/ are the whole | |
| # point of this gate, so never broaden to `**.md`. A PR touching any | |
| # non-ignored path still runs the full build. | |
| paths-ignore: | |
| - 'ROADMAP.md' | |
| - 'README.md' | |
| - 'LICENSE' | |
| - 'docs/**' | |
| push: | |
| branches: [main] | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: npm | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Unit tests (parsing, grading, path handling — no database) | |
| run: npm test | |
| - name: Build (validate KP against models + write-back) | |
| run: npm run build | |
| - name: Fail if write-back left the tree dirty | |
| run: | | |
| if [ -n "$(git status --porcelain)" ]; then | |
| echo "::error::Working tree is dirty after build. A concept changed but the regenerated write-back (kp/index.md, domain indexes, Implementations tables) was not committed. Run 'npm run build' locally and commit the result." | |
| git status --porcelain | |
| git --no-pager diff | |
| exit 1 | |
| fi | |
| echo "Working tree clean after build — write-back is committed." |