Skip to content

v0.1.0

Choose a tag to compare

@adiprathapa adiprathapa released this 10 Aug 12:53
· 43 commits to main since this release

Gate runs a pull request's preview build inside a hardened sandbox, hands the verified preview URL to a critique service you supply, and publishes that service's design review back to GitHub as one sticky comment plus a Check Run. It is the GitHub-facing half of a two-part system: it judges and reports, it never edits code, and it never requests contents: write.

This is the first tagged release. Everything below was run against this tag on macOS 15.6, Node 24.14.0, pnpm 10.34.3.

What works today

From a clean clone, with no credentials, no API keys and no network:

  • The sandbox supervisor (packages/action/src/local-serve.ts). Process-group teardown rather than process teardown, a default-deny environment allowlist, hard ulimit caps, and loopback-only readiness probing that refuses an off-loopback redirect instead of following it. pnpm demo runs it against a fixture that forks a worker which traps SIGTERM and refuses to die, so you watch the containment happen. This part stands alone and is worth reading even if you never use the rest of Gate.
  • Review delivery. Sticky-comment upsert, Check Run mapping, and screenshot annotation. pnpm demo:review replays a recorded critique through the real delivery path and writes the exact comment, Check Run payload and annotated PNGs a pull request would have received.
  • Action path orchestration (runAction), covered end to end against a mock engine.
  • The engine client: async job protocol, HMAC signing, schema-version and Zod checks, and fail-closed degradation. A drifted or malformed result publishes nothing rather than a comment full of nulls.
  • Preview login sealing (gate auth), offline against a bundled fixture.
  • The App path (webhooks, BullMQ queue with supersession, Postgres with row-level tenant isolation tested against a non-superuser role), tested against PGlite and in-memory fakes.

573 tests across 92 files, with no live network anywhere in the suite.

What does not work yet

Read this part before wiring Gate into anything.

  • Half the system is not in this repository. Screenshot capture and the vision model sit behind the HTTP contract in packages/types, and no implementation of that contract ships here. With no reachable critique service configured, every review ends in a neutral Check Run saying exactly that, and nothing else is published. Writing that service is roadmap item 1, and it is the biggest single unlock.
  • The Action path constrains hostile pull request code; it does not sandbox it. The ulimit caps, environment allowlist, redirect refusal and fork gating are real mitigations. The aggregate cgroup-v2 caps that would close the gap are roadmap item 6. Read the threat model in the README before running this on a repository that accepts fork pull requests, and never on pull_request_target with repository secrets in scope.
  • The resource cap is Linux-only. ulimit -v does not apply on macOS, so the demo honestly reports applied no there. ulimit -u does not exist in dash, so the capped command runs under /bin/bash when it is present.
  • Windows is not supported. The supervisor relies on POSIX process groups.
  • uses: apatureai/gate@v0.1.0 does not resolve as a Marketplace action yet. The Action is a Docker action defined by action.yml and Dockerfile.action; publishing it is roadmap item 8.
  • Nothing is published to npm. All packages are private: true. Clone and build.
  • Billing has never processed a real charge. The Stripe plumbing and tier limits are unit-tested against fakes.
  • Dependency advisories are open. pnpm audit at the root reports 7 (1 moderate, 6 high) and apps/dashboard reports 4 high. The exact packages and which reach runtime are listed in roadmap item 5. Re-audit before deploying.
  • Baseline before/after comparison is built but unwired. packages/delivery/src/baseline.ts is tested; nothing on the review path calls it.

Quickstart

Needs Node 24 or newer and pnpm 10.34.3. No credentials.

git clone https://github.com/apatureai/gate.git
cd gate
git checkout v0.1.0
pnpm install --frozen-lockfile

pnpm demo          # the sandbox supervisor, live, against a hostile fixture app
pnpm demo:review   # a full design review comment, from a recorded critique, written to ./out

pnpm demo succeeds when the last line reads PASS, the teardown census ends in 0 left with orphans: 0, and the environment section reports leaked none. On a fresh clone you will see exactly eight gate bin warnings during install; they are explained in the README and disappear after pnpm build.

pnpm demo:review succeeds when four files land in out/, including out/review-comment.md and out/annotated-f_001.png with a red box drawn around the off-palette call to action.

Verified at this tag:

pnpm build       tsc -b, clean, exit 0
pnpm typecheck   tsc -b, exit 0
pnpm lint        eslint . --max-warnings=0, exit 0
pnpm test        Test Files  92 passed (92)
                      Tests  573 passed (573)

The README has the full quickstart, the threat model, the critique service contract, the configuration reference, and the roadmap. Contributions are welcome; the roadmap is the list of things most worth doing.

MIT licensed.