Skip to content
Blast-radius gate

Review a risky migration

An agent proposes an 8-statement migration. Run it through the gate and watch each statement get graded on reversibility and live data impact.

Five additive statements are auto-allowed. A DROP COLUMN over 2.3M rows needs approval, an unrecognized ALTER COLUMN fails closed, and a DROP TABLE over 84M rows is blocked.

This faithfully reproduces the novyx-blast-radius gate. Run it yourself:
cd packages/novyx-blast-radius && PYTHONPATH=. python examples/demo.py

blast-radius gate

An agent proposes an 8-statement migration. Five are additive. Three are not.

1
CREATE TABLE feature_flags (id bigint, name text)

additive / reversible

ALLOW
2
ALTER TABLE users ADD COLUMN last_seen_at timestamptz

additive / reversible

ALLOW
3
ALTER TABLE users ADD COLUMN referral_code text

additive / reversible

ALLOW
4
CREATE INDEX idx_users_last_seen ON users (last_seen_at)

additive / reversible

ALLOW
5
ALTER TABLE orders ADD COLUMN coupon_id bigint

additive / reversible

ALLOW
6
ALTER TABLE users DROP COLUMN legacy_password_hash

users.legacy_password_hash · 2,300,000 rows · irreversible; 2,300,000 rows destroyed

APPROVAL
7
ALTER TABLE events ALTER COLUMN payload TYPE varchar(255)

unrecognized statement — fail-closed to human review

APPROVAL
8
DROP TABLE audit_events_2019

audit_events_2019 · 84,000,000 rows · irreversible; 84,000,000 rows destroyed — catastrophic

BLOCK
VERDICT: BLOCKED

Statement 6 of 8 drops column users.legacy_password_hash, which holds 2,300,000 rows — irreversible. Statement 7 is an unrecognized narrowing ALTER COLUMN — fail-closed to human review. Statement 8 drops table audit_events_2019, which holds 84,000,000 rows — catastrophic. The other 5 are additive.

Gated 3 of 8 statements; the rest auto-allowed.

Why it's a gate, not a filter

Argument-aware

The gate reads the real statement and its target — users.legacy_password_hash, not a keyword match — so the verdict is about what actually changes.

Graded on live data

Row counts come from a schema probe. The same DROP COLUMN is auto-allowed on an empty column and needs approval on 2.3M rows.

Fails closed

Anything it does not explicitly recognize — like a narrowing ALTER COLUMN ... TYPE — routes to human review instead of silently passing.

A verdict is only the front door. Behind it, Novyx Core records the decision on a tamper-evident audit chain, captures recovery metadata and checkpoints, and retains memory as context — so an approved change runs once and a mistake has a documented recovery path. See how Control governs the effect →

Put the gate in front of a real change

Start with the first agent action that can mutate production — a migration, a deploy, a refund, a CRM write — and expand from there.

Book a readiness call

Name the production action your coding agents are not allowed to perform yet.

Email us at:

sales@novyxlabs.com

Include the agent tool, blocked production action, decision deadline, and the budget owner who should join. We will reply with fit and scheduling options for a 25-minute call.

Learn Control