Skip to content

release: v1.3.0 — architectural soundness, circulation facts & profes… #29

release: v1.3.0 — architectural soundness, circulation facts & profes…

release: v1.3.0 — architectural soundness, circulation facts & profes… #29

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
name: Node ${{ matrix.node }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node: [18, 20]
steps:
- uses: actions/checkout@v5
- name: Set up Node.js ${{ matrix.node }}
uses: actions/setup-node@v5
with:
node-version: ${{ matrix.node }}
cache: npm
- name: Install dependencies
run: npm ci
- name: Type-check
run: npm run typecheck
- name: Editor grammars are in sync with the token source
run: |
npm run gen:grammars
git diff --exit-code editors/archlang.tmLanguage.json playground/src/arch-language.js
- name: Error-code docs are in sync with the catalog
run: |
npm run gen:errors
git diff --exit-code docs/error-codes.md
- name: Test
run: npm test
bench:
name: Benchmark (informational)
runs-on: ubuntu-latest
# Timings are runner-dependent — this never gates the build; it posts a PR
# comment with the median per-stage deltas vs. bench/baseline.json.
if: github.event_name == 'pull_request'
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v5
with:
node-version: 20
cache: npm
- run: npm ci
- name: Run benchmark
run: |
npx tsx bench/run.ts --json > bench-current.json
node bench/compare.mjs bench-current.json bench-comment.md
- name: Post benchmark comment
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const body = fs.readFileSync('bench-comment.md', 'utf8');
const marker = '<!-- archlang-bench -->';
const { owner, repo } = context.repo;
const issue_number = context.issue.number;
const { data: comments } = await github.rest.issues.listComments({ owner, repo, issue_number });
const existing = comments.find((c) => c.body.includes(marker));
const payload = `${marker}\n${body}`;
if (existing) {
await github.rest.issues.updateComment({ owner, repo, comment_id: existing.id, body: payload });
} else {
await github.rest.issues.createComment({ owner, repo, issue_number, body: payload });
}