Preflight RUST / MV3 Chromium Extension Release Clearance
forbid(unsafe_code) auto_ship: false

● ADR-0003 · HUMAN SIGN-OFF ENFORCED

Does this build still match what you shipped and what you promised?

Extension bundles drift. Preflight gates every build before it reaches the Chrome Web Store: deterministic evidence, versioned policy packs, and a human decision when it matters.

● Harbor Node · isolated per tenant SOC2 · no JS execution
VERDICTS3 types
AGENTS5 deterministic
RUNTIME0 JS exec
preflight · harbor-node@1.4.2zsh
$ preflight review ./build.zip --claims ./claims.json
AGENT 01 artifact.rs — sha256:9f3c…a1d2 · 127 files, manifest v3
AGENT 02 extract.rs — manifest v3 ok, permissions parsed [storage, tabs, *://*.analytics.io/*]
AGENT 03 diff.rs — new host detected vs baseline: *.analytics.io (not in v1.4.1)
AGENT 04 rules.rs — host not in claims.json → BLOCK · CWS-07 / PRIV-01
AGENT 05 review.rs — verdict: BLOCK · needs human sign-off · 2 evidence chains
● key provenancepf_live_••••••••
PIPELINE

Five deterministic agents

Out-of-process Rust binary · Zero runtime execution
01

Artifact Hasher

artifact.rs
02

Evidence Extractor

extract.rs
03

Baseline Diff

diff.rs
04

Policy Auditor

rules.rs
05

Arbiter

review.rs
✓ Explainable chains — every verdict cites rule + diff▣ Baseline-locked — compares to last shipped + claims.json▣ Human sign-off required for BLOCK & NEEDS_HUMAN

Policy packs versioned like dependencies

Pin to cws-2026.1. Extend with your own claims.json. Rules are pure Rust, auditable, and deterministic.

audit --pack cws-2026.1 · deterministic
cws-2026.1CHROME WEB STORE

CWS-01 MV3 required BLOCKER

CWS-03 No broad host patterns HIGH

CWS-05 No eval / WASM without… BLOCKER

CWS-07 Declared hosts must match… BLOCKER

5 rules · locked to sha256:cws…
node-client-2026.1CUSTOM CLAIMS

PRIV-01 Host list pinned per tenant BLOCKER

PRIV-02 Permissions require justification HIGH

NODE-03 No websocket to non-allowlisted host BLOCKER

CLAIM-01 claims.json version and shape BLOCKER

5 rules · locked to sha256:node…

Isolation model

TeamsIndie
WORKSPACE ISOLATION
harbor-prod
key: pf_live_••••
harbor-staging
key: pf_live_••••
relay-dev
key: pf_live_••••
admin
can create keys, projects
reviewer
can sign-off BLOCK
ci
can push, cannot sign
Separation of duties: CI cannot self-approve. Review requires a second human.
AUDIT TRAIL
  1. 09:42:11 review created — drifted-host.zip → BLOCK
  2. 09:43:05 requested changes — justify host or remove
  3. 09:47:22 new build — clean-relay.zip → SHIP WITH CONDITIONS
  4. 09:47:40 signed-off — SHIP
All verdicts are append-only, content-addressed. Export to SIEM.

One key, everywhere

pf_live scoped to project, not user
LOCAL REVIEW
$ preflight review ./build.zip \
  --claims ./claims.json \
  --pack cws-2026.1 \
  --key $PREFLIGHT_KEY

  ✓ artifact sha256:9f3c…
  ✓ 5 agents ok
  → verdict: BLOCK (CWS-07)
PUSH TO CONTROL PLANE
$ preflight push ./build.zip \
  --project harbor-node \
  --key $PREFLIGHT_KEY

  → review: r/9f3c…
  → https://preflight.aetherhost.com.ng
  → awaiting sign-off
POST /v1/signupPOST /v1/sandbox/evaluateGET /v1/mePOST /v1/projects/:id/reviewsPOST /v1/reviews/:id/sign-off

Try without signup

Deterministic evaluation in the browser view · no workspace required● SANDBOX LIVE — no data leaves this tab
claims.json · editable ADR-0003
{
  "version": "1.4.2",
  "hosts": ["api.harbor.run", "cdn.harbor.run"],
  "permissions": ["storage", "activeTab"],
  "privacy": "strict",
  "justifications": {
    "storage": "session state for isolated tenant"
  }
}
local validation only strict privacy: ON
CONSOLE

› loading drifted-host.zip …
› parsing manifest.json — ok
› checking claims.json — hosts match

evidence:
host: *.analytics.io (new)
permission: storage
manifest: v3
VERDICT — BLOCKpack: cws-2026.1

New host *.analytics.io not in claims.json · CWS-07

HUMAN SIGN-OFF — THE LAST GATE

Ship only what you meant to ship.

Preflight runs in CI, blocks drift, and forces a reviewer when policy fails. Rust, deterministic. No JS execution. Same binary locally and in your pipeline.

Free for personal · team plans available
PREFLIGHT   RUST CLI · Web control planeMV3 · deterministic · explainableGitHub   Changelog   Security   © 2026 Preflight

Save Your API Key

This secret key is shown only once. Use it in the Web Console or with the Rust CLI in your terminal.

Terminal / Rust CLI usage: