Skip to content

Repository files navigation

operator-gates

tests

Fail-closed GO / NO-GO cards before agents touch mail, money, or outreach.

Not a harness framework. Not a product SKU. A small, forkable contract from running companies where agents already sit on real inboxes and charges.

Peer desk: gregfredabytes.com · essay: Mail is the front door · inventory: what I run


Why this exists

Harness builders ship shells. Operator companies live where agents already touch customers and money. The hard part is not “make the model act” — it is deciding what it is allowed to send, charge, or promise, and proving the gate held.

Piece What it is
gate.py Posture → one-line GO / NO-GO card
operator-gates CLI check / replay / scars
scars/ Anonymized production incidents
ANTI_PATTERNS.md Refuse patterns that keep agents from fighting the human

No Relish guts. No private fleet paths.

What this is not

  • Not Dex-style thesis depth (12-factor-agents grade)
  • Not wired to a live boot plane — you pass posture (flags or JSON)
  • Not a mailer, billing engine, or production control plane
  • Proof you run a company is what I run, not this repo alone

Install / try

Requires Python ≥3.10.

git clone https://github.com/GFB2026/operator-gates.git
cd operator-gates
python -m pip install -e ".[dev]"
python -m pytest
operator-gates scars
operator-gates replay 001
operator-gates replay 002
operator-gates replay 004
operator-gates check mail_send --phrase          # exits 1 — NO-GO (mirror not ok)
operator-gates check mail_send --mirror-ok --phrase   # exits 0 — GO
operator-gates check other --host-pinned         # exits 0 — GO

Or:

python -m operator_gates replay 001
python examples/stale_mirror.py
python examples/wrong_host.py

JSON posture:

operator-gates check mail_send --json examples/posture.stale.json

For AI assistants / contributors

Safe lanes: docs, tests, CLI, and assistant config in .github/ plus .copilotignore. Read .github/copilot-instructions.md first. Install with python -m pip install -e ".[dev]" then python -m pytest.

Do not invent GO cards, send or charge, or wire this repo to a live boot plane.


Scars

001 — Stale mirror before send

scars/001-stale-mirror-before-send.md · essay: Mail is the front door

Good draft; stale mailbox mirror; NO-GO; sync + phrase; GO. Draft never left on a lying I/O plane.

002 — Wrong host, wrong truth

scars/002-wrong-host-wrong-truth.md

Identical path on more than one machine; no host pin; NO-GO; pin named; GO. Near-identical trees fork companies.

003 — Irreversible without held phrase

scars/003-irreversible-without-held-phrase.md

Thread felt green; no exact phrase in this turn; NO-GO. Vibes don’t authorize send/money. Compaction is how irreversible actions sneak out.

004 — Capitulation after disagreement

scars/004-capitulation-after-disagreement.md · essay: Capitulation after disagreement

Operator scolds; agent agrees, locks a rule, stops. NO-GO until spine revised and next artifact ships. Disagreement must not be taxed.

operator-gates replay 004

The card (contract)

Every mutator on send / money / outreach emits exactly one card first:

ARMED-CHECK: GO | path=mail_send | note=ops reply
ARMED-CHECK: NO-GO | path=mail_send | reason=mirror not ok | need=fix mirror or use read-only
  • NO-GO → block. Do not send or charge in the same turn.
  • GO → still honor phrase / capability rules. Infrastructure green ≠ permission invented from chat.

Identity

I run companies with agents in production — mail, desk, money, human gates.

If you build harness / HITL / agent I/O and this rhyme matters, write: greg@gregfredabytes.com

X: @gregfredabytes · GitHub: GFB2026

License

MIT

About

Fail-closed send/money gates for agent-operated companies — reference patterns, not a product SKU

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages