Skip to content

ci: gate pull requests with the existing test scripts - #11

Merged
yashranaway merged 1 commit into
mainfrom
t3code/pr-ci
Aug 5, 2026
Merged

ci: gate pull requests with the existing test scripts#11
yashranaway merged 1 commit into
mainfrom
t3code/pr-ci

Conversation

@yashranaway

Copy link
Copy Markdown
Collaborator

Closes backlog §D1 and §D3.

Until now the only automation was the tag-triggered release workflow, so every pull request — #4 through #9 — merged with no automated checks at all. This adds .github/workflows/ci.yml.

Design

Every job invokes the same script a developer runs locally, the property release.yml already has. CI can't drift into a separate build path.

Job Runs Notes
static shell syntax (sh/bash/zsh), docs/qa/evidence checksums, whitespace vs base evidence is the only binary media in git — prove it still matches its manifest
runtime pnpm test:runtime jsdom context-pruning suite; fastest signal
protocol apps/headless/test.sh in swift:6.1-bookworm the 27-case protocol/security suite without Swift on the runner; same image Dockerfile.linux builds with
web eslint + next build the site can break invisibly today
linux-e2e Tests/linux-docker.sh full sandboxed-Chromium E2E; uploads the QA evidence bundle as an artifact
macos build.sh + test.sh native compile and suite
macos-e2e Tests/macos-e2e.sh not per-PR: nightly cron, workflow_dispatch, or the macos-e2e label, because it needs a GUI session and mutates com.headless.app user defaults

Triggers: pull requests, pushes to main, nightly cron, manual dispatch. Concurrency group cancels superseded runs.

Verified locally

  • YAML parses; the shell-syntax loop passes on all 12 sh/bash scripts (zsh ones are checked on the runner, where zsh is installed)
  • sha256sum -c on the committed QA evidence passes
  • pnpm test:runtime passes, reproducing the documented pruning numbers (48,428 → 895 bytes)
  • pnpm install --frozen-lockfile works for both workspace filters
  • web lint clean, next build succeeds (6/6 static pages)

Docker isn't reachable from my sandbox, so linux-e2e rests on the precedent that release.yml already runs linux-docker.sh on ubuntu-latest — this PR's own run is the real proof.

Docs updated in the same commit

AGENTS.md describes the gate, the roadmap marks the Phase 1 CI item done, and backlog §D1/§D3 record what shipped plus what remains.

Follow-ups (not in this PR)

  • Mark the jobs required in branch protection — a repo setting, not code
  • Consider arm64 Linux E2E on PRs (release covers it on tags)
  • Revisit making the macOS E2E a per-PR gate once its runtime is measured

Adds .github/workflows/ci.yml (backlog D1/D3). Until now the only automation
was the tag-triggered release workflow, so every pull request merged ungated.

Jobs, all invoking the same scripts a developer runs locally:

- static: shell syntax across sh/bash/zsh, docs/qa/evidence checksum
  verification, and a whitespace check against the PR base.
- runtime: pnpm test:runtime (jsdom context-pruning suite).
- protocol: apps/headless/test.sh inside swift:6.1-bookworm, the same image
  Dockerfile.linux builds with.
- web: eslint plus next build for apps/web.
- linux-e2e: Tests/linux-docker.sh, uploading the QA evidence bundle.
- macos: build.sh plus test.sh on macos-latest.
- macos-e2e: Tests/macos-e2e.sh gated to nightly cron, workflow_dispatch, or
  the macos-e2e label, because it needs a GUI session and mutates
  com.headless.app user defaults.

Docs updated to match: AGENTS.md describes the gate, ROADMAP marks the Phase 1
CI item done, and backlog D1/D3 record what shipped and what remains (branch
protection, arm64 E2E on PRs).
@yashranaway
yashranaway requested a review from SarthakWade August 5, 2026 18:57
@yashranaway
yashranaway merged commit 4011a85 into main Aug 5, 2026
7 checks passed
@yashranaway
yashranaway deleted the t3code/pr-ci branch August 5, 2026 19:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant