Skip to content

Case 04 / Gated publisher · safety-first

Nyx Persona

GPT-5.6 drafts replies for a real Threads business account — but only deterministic server code, triggered by one human clicking approve, can ever publish.

Tests480 · ~10s · no network
Approvalsha256-bound to exact bytes
Core3,500 lines, hand-built
StackNeon · Threads API · Zod · Playwright
nyx-persona — gated publisher200 OK
Nyx Persona — approval queue

Demo

youtube.com/watch

The rule

Approval is cryptographically bound to a sha256 of the final reply body — you cannot approve text A and ship text B.

Build notes

Publish as a lease

Publishing is a claimed lease with expiry and reclaim rules, not a retry loop — double-posting is structurally impossible, not just unlikely.

Unknown over guessed

When the provider's answer is ambiguous, the outcome is recorded as 'unknown' instead of guessed; a confirmed publish is trusted immediately, an absence must age before it's believed.

Wording-only zone

Untrusted social text can't pick evidence, capabilities, or a publish target — the demo ships with a prompt-injection attempt the system escalates instead of obeying.

Hand-built core

A 1,132-line workflow state machine, an 843-line Zod contract layer, a 1,536-line persona compiler. 480 unit tests run in ~10 seconds with no network.

More screens

Nyx Persona escalation view with RISK and ESCALATED badges on a real prompt-injection fixture
Nyx Persona audit timeline showing New, Static preview, and Escalated events with timestamps and judge notes