Detection Factory

An assembly line for security detection rules — signal in, proven rule out.

A language model can write a SIEM detection rule in seconds. That was never the hard part. The hard part is trusting it: will it fire a thousand times a day, or never? Did the model invent a field name? Does it duplicate something already deployed? Six months from now, is it still working?

The Detection Factory answers those questions mechanically. A rule moves through a series of stations, and promotion between stations is decided by machine-enforced gates, not by someone eyeballing a diff. Every gate decision is written into the rule file itself as an append-only log, so a rule in production carries its own proof of what it passed.

the line

Pipeline overview: seeders, six stations, two human gates, demotion and recall loops

fig 1 — what feeds the line, the stage each promotion writes, where a human is consulted, and the loops that send a rule back.

where ideas come from

Generation was never the bottleneck, so the line shouldn't wait on someone to have an idea. The Seeder subscribes to the places new detection needs actually show up:

no station talks to another

Stations share nothing except a state table. Each rule row has a stage column that acts as the routing key: a station polls for rows in its inbox stage, claims one, does its work, rewrites the stage, and exits. That's the whole integration layer. Any station can crash at any moment and nothing is lost, N copies of a station can run in parallel, and "send this rule back two steps" is a column rewrite with a reason attached. No queue, no broker, no scheduler.

why deployment is shaped like that

Credential boundaries between the factory, the outbox, the pull agent and the production repository

fig 2 — who holds which credential. Two humans, two keys, two teams, and none of them can land a change alone.

An autonomous pipeline that can write to the detection repository and effectively approve its own changes is a supply-chain risk: one leaked token poisons every detection you have. So the factory can only write to an outbox in its own access boundary. The pull agent, run by a different team, has a read-only key scoped to that outbox and nothing else, and it alone holds the repository credential. Branch protection means its role can't merge either.

what you get

Station names are callsigns, not products.