Skip to contentShipGateShipGateShipGate
Production Admission

No WholeStack build reaches productionwithout passing ShipGate.

Nothing WholeStack builds reaches production without a SHIP from ShipGate. Checking software WholeStack did not build is not available yet.

Scan a repo — freeTurn on continuous CI
SHA-256 boundEd25519 signatureZero runnersStatic & runtime gatesAdvisory ≠ SHIPStaleness flagged
  • Cursor
  • Visual Studio Code
  • Claude
  • Windsurf
  • ChatGPT
  • Google Gemini
  • GitHub Copilot

Works with the editor you already use

Why teams add a gate

Green does not mean safe.

A build that compiles is not a change that is proven. Platform teams add ShipGate for three gaps CI doesn’t cover.

01
Gate 04 · Auth Drift

Passing CI is not proof

Tests answer whether code compiles. They do not answer if a protected route lost its auth guard, or if a caught error returns a false success.

CRITICAL FINDING // Route unauthenticated
- if (!session?.user) return 401; + // temporary staging bypass ✗ Auth Drift Scanner (Gate 04)
02
Gate 07 · Bailout Safety

No flattering greens

A scanner returning green on unreadable code is worse than no scanner. ShipGate returns UNVERIFIED when it cannot prove safety — never false green.

ADVISORY BLOCKER // Unanalyzable dynamic call
eval(untrustedInput); → AST analysis cannot prove invariant ⚠ UNVERIFIED (fail closed)
03
Gate 11 · Merkle Integrity

Evidence goes stale

A verdict is true only for the artifact that earned it. Once the tree moves, an old SHIP is flagged stale — bound to its hash, not your branch.

HASH DRIFT // Tree moved past seal
digest: sha256:4f8a... (clean) HEAD: 3 commits ahead of seal ◐ STALE: fresh PR run required
Production Admission

The gate before production.

WholeStack puts nothing into production without a SHIP. Each build boots in isolation, runs its journey, and ShipGate reads the evidence before release. Checking software WholeStack did not build is not available yet.

ShipGate Production Admission
sealed contract
build
artifact fidelity
isolated boot
journey run
ShipGate verification
SHIP
deploy
NO_SHIPProduction blocked
Reason: Unauthorized tenant access detected.
Mutation: tenantId replaced with foreign tenant
Expected: 403
Observed: 200
Production deployment BLOCKED.

The repo scan is a sample. Production Admission is the product: no SHIP, no production.

Verdict + evidence

A result in the PR.
Bound to the artifact.

ShipGate exists for the moment someone asks “what did we actually check before this merged?” The answer is a named gate, a finding, and a hash — not a screenshot of a green tick.

SHA-256Ed25519commit-boundadvisory ≠ SHIP
Commit-bound hashSHA-256 · tree digest

Every verdict carries the tree digest of the revision that earned it — not the branch tip.

digest: sha256:4f8a9c…e21 bound: commit 9f3c1ab
Merkle seal lineEd25519 · local seal

Manifest verification checks content hash plus a local Ed25519 service signature. Authenticity, not a public CA.

seal: merkle-root · ed25519 verify: hash match · sig ok
Evidence, not a tickGate · named finding

The PR answer is a named gate, a finding, and a hash — never a screenshot of green.

gate: Auth Drift Scanner finding: CRITICAL · route unguarded

17 static gates · severity-counted findings · advisory until a signed ShipGate run.

Proof bundleSAMPLE
content hash + Ed25519
Example layout, not a scan result. The 17 gate names come from the ShipGate catalog; the states beside them are placeholders. Your own run reports your own states.
Fake Success DetectorIntegrity
FAIL Reported a blocking finding. In continuous CI the pull-request check fails with it.
Finds try/catch blocks where a real async failure is swallowed and a success toast or notification is shown anyway — the exact fake-success pattern the Constitution forbids.
  • try { await … } catch { toast.success(…) }
  • Silent failure with optimistic UI feedback
  • Error handlers that report success on failure
In this example12 PASS2 FAIL1 WARN1 SKIP1 N/A17 gates total
A real bundle is bound to one commit and one artifact hash. Verifying it checks that content hash and a local Ed25519 service signature — authenticity, not a public CA and not a third-party attestation.
What we do not claim

Signed and artifact-bound. Not a compliance badge.

A gate is only worth having if it tells you when it cannot answer. ShipGate publishes its own limits in the same places it publishes verdicts.

Ed25519 · SHA-256

Signed, not certified

Manifest verification checks the content hash and a local Ed25519 service signature. That is authenticity — not a public CA, and not a third-party attestation.

● Guarantees artifact unchanged since scan
CLEAR ≠ SHIP

Advisory, not authority

The free scan has no approved spec, no runtime evidence, and no signed certificate. It never issues SHIP and never returns a green branch-protection check.

● Never grants unverified release authority
HTTP 401 / 402

Fails closed

Continuous CI answers 401 without an account and 402 without the entitlement, and refuses activation when the GitHub App lacks Checks: write.

● Refuses merge checks if permissions fail
Pull-Request Check

What CI actually prints

The check WholeStack posts back on the commit — the same 17 gates as the free scan, run on that commit alone.

Checks APIdepth=1 fetchephemeral checkoutnever green
GitHub Checks API v3
Ephemeral isolation · no runners
github.com/your-org/your-app · Checks
Advisory scan · Production Admission

The scan is the demo. Admission is the product.

Labelled demo
Advisory scan — all 17 gates
§9 exits
$99 build · $79/mo live
Commit-bound evidence
Tied to the exact artifact hash
Persisted history
Every SHIP / NO_SHIP kept, staleness flagged
From demo to admission

How it works

Free advisory scan → continuous check → Production Admission in the deploy path.

1
STEP 01 // SCAN

Scan a repository — free

Open the labelled demo scan. All 17 static gates report individually. Advisory only — never a SHIP verdict. Hosted free-scan quotas are not a sold product.

# /scan/repo — labelled demo
gates: 17 static gates, each named
findings: critical · high · medium · low
verdict: CLEAR | BLOCKED | UNVERIFIED (advisory)
2
STEP 02 // VERDICT

Read a verdict, not a vibe

The report names the failing gate, the finding, and the revision it was earned on. A spec-free static scan is advisory by design — it never issues SHIP and never returns a green check.

# Advisory result, bound to the revision scanned
verdict: BLOCKED
score: readiness score, out of 100
# A static scan never authorizes a release.
3
STEP 03 // MERGE GATE

Verification on WholeStack builds

ShipGate issues SHIP / NO_SHIP on apps WholeStack builds. Foreign-repo merge CI and a $50/mo ShipGate CI add-on are not shipping products. Commercial exits follow §9: Build $99 once, live app $79/mo.

# GitHub App — no workflow file, no runners
on: pull_request · push
fetch: that commit only, --depth=1
# onto WholeStack infra, deleted after
check: "WholeStack / Readiness Advisory"
Audit Trail

Verdict history, once CI is on

Persisted runs live behind the ShipGate dashboard — part of continuous CI, and of every paid plan. The free scan reports; CI remembers.

Run history
sha256:digest

Run history

Every persisted run with its decision, tree digest, file count, and source commit.

run · decision · digest · files · SHA
Verdict rollup
Persisted Runs

SHIP / NO_SHIP rollup

Completed runs counted into a ship rate — exactly what ShipGate persisted, never a recomputed verdict.

ship_rate = persisted SHIP / completed
Stale verdicts
Drift Flagged

Stale verdicts, flagged

When the project's tree moves past a run, that verdict is marked stale instead of shown as current.

HEAD ahead of seal → STALE
Turn on continuous CIOpen dashboard
Pricing

Advisory scan is free. Admission is the product.

There is no ShipGate CI add-on. §9 prices: Build $99 once, live app $79/mo. The PR check is not built yet.

Preview

Labelled demo + live MCP. No card. No hosted free-scan quota product.

$0/forever
  • 17 static gates on the labelled demo
  • Advisory verdict: CLEAR · BLOCKED · UNVERIFIED
  • Live ShipGate MCP endpoint
  • Never a SHIP from the demo alone
  • Foreign-repo SHIP is not available yet (gap #20)
Open the demo

Build

An agreed app scope, two scoped revisions, release checks, and source export. Larger projects are quoted before work starts.

$99/once per app
  • Source archive + contract + verification receipt
  • Verification itself is free to run
  • No ShipGate CI add-on for sale
  • Pull-request check / CLI / VS Code extension not built yet
  • Same SKU as WholeStack /pricing

Live app

§9 live app — hosting after SHIP, no source purchase required.

$79/mo per app
  • Hosting + re-verify on change
  • Live-assurance receipts
  • No bundled ShipGate CI entitlement to invent
  • Agency costume later uses the same SKUs
See §9 pricing

Already on WholeStack? You get verification on apps WholeStack builds. Paid exits stay the §9 SKUs — nothing called ShipGate CI is bundled.

Frequently asked questions

How ShipGate works in practice.

Gates, verdicts, GitHub permissions, and what we refuse to claim.

Production Admission

Stop guessing. Verify every commit.

The free scan gives you advisory readiness across 17 static gates. Turn on continuous CI for signed, commit-bound merge verification on every pull request.

Scan a repo — freeTurn on continuous CI