Skip to content

Split ROADMAP.md into roadmap dashboard + LEARNINGS.md #7

Split ROADMAP.md into roadmap dashboard + LEARNINGS.md

Split ROADMAP.md into roadmap dashboard + LEARNINGS.md #7

Workflow file for this run

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."