Phase 4: API knowledge — transcribe, never recall #20
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
| # Fast governance checks (pipeline Phase 1+). Pure bash, no toolchain — | |
| # feedback in seconds, long before the build workflows finish. | |
| # | |
| # Jobs: | |
| # doctor — enforces "every pipeline asset registers a ./dev verb or carries | |
| # a reasoned exemption" (see scripts/doctor for the contract). | |
| # lint — the NeoHaskell dialect gate: hlint with the dialect-first | |
| # .hlint.yaml (vanilla-module restrictions, banned partials, | |
| # teaching hints). Standalone pinned binary — no nix needed. | |
| name: checks | |
| on: | |
| pull_request: | |
| push: | |
| branches: [main] | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: checks-${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| doctor: | |
| name: dev doctor (verb registration) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| steps: | |
| - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| with: | |
| persist-credentials: false | |
| - run: ./dev doctor | |
| codemap: | |
| name: codemap check (localization ontology) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| steps: | |
| - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| with: | |
| persist-credentials: false | |
| # Same check.py as ./dev codemap-check; runner python + pinned pyyaml | |
| # (pulling the full nix dev shell for a YAML check is not worth 40m — | |
| # the PYTHON override is the sanctioned CI path, like lint's HLINT=). | |
| - run: python3 -c "import yaml" 2>/dev/null || pip3 install pyyaml==6.0.3 | |
| - run: PYTHON=python3 ./dev codemap-check | |
| lint: | |
| name: hlint (dialect gate) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| with: | |
| persist-credentials: false | |
| - name: Install hlint 3.10 (pinned binary + checksum) | |
| run: | | |
| curl -sSfL -o hlint.tar.gz \ | |
| https://github.com/ndmitchell/hlint/releases/download/v3.10/hlint-3.10-x86_64-linux.tar.gz | |
| echo "ccabc8802a58154699a3583b8dddc5ea2e6d65753a62c45c0e80088ebb16b42b hlint.tar.gz" | sha256sum -c - | |
| tar xzf hlint.tar.gz | |
| - name: Dialect gate | |
| run: HLINT=./hlint-3.10/hlint ./dev lint |