GPT Workflow Governance v1.1

LLMs advise. Deterministic code enforces.

Lailya sits between your AI assistants and your repository. Every proposed change is classified by a deterministic policy engine, reviewed adversarially by a second independent model, and written to an append-only, hash-chained evidence ledger, before a human approves anything irreversible.

TIER 0–3 POLICY ENGINE SHA-256 CHAINED AUDIT REDACTED AT INGESTION

A looping demonstration of the evidence ledger. Seven fields print one at a time: the engine derives Tier 3 while the model claims Tier 2, the contradiction routes the run to a hold, and the verdict is HOLD, cleared only by a revised proposal. A five-block SHA-256 chain then verifies, and a final beat shows a tampered block breaking every link after it.

POLICY OUTPUT · RUN 2f19 DERIVING
run.id2f19-a7c · policy v1.1
files.touchedpackages/db/schema.ts +3
secrets.redacted7 · counts only, never values
derived_tier3 · migration + auth
claimed_tier2 · model's own answer
contradictiontrue → HOLD_PRINT_ONLY
verdictHOLD · cleared only by a revised proposal
APPEND-ONLY LEDGER · SHA-256 CHAIN appending
The engine derived Tier 3. The model claimed Tier 2. The run holds.
DETERMINISTIC TIER CLASSIFICATION ADVERSARIAL INDEPENDENT REVIEW APPEND-ONLY HASH CHAIN NO BROWSER AUTOMATION OFFICIAL PROVIDER APIS ONLY YOUR KEYS · YOUR LEDGER
The problem

Green doesn't mean good.

Watch a pipeline pass. Then watch what it actually verified. Every failure below was found in a real production codebase, by the audit that produced Lailya.

A looping demonstration of a continuous integration run. Four checks pass and the pipeline reports success, then the same run is re-read honestly: no tests were executed, no apps were typechecked, no boundaries were verified, and more than a hundred type errors were counted while the gate still displayed PASSED. Use the two buttons below to compare the two readings.

CI PIPELINE · main · commit 8ad1f2 0.0s · running PASSED RUNNING
SHOWING
every statement here is true: click to compare
typecheck:pkgs queued
contract-tests queued
schema-drift queued
build queued
WHAT THIS GREEN GATE VERIFIED
none of it, and it still said PASSED
0
tests actually executed
0% of the suite
0 / 3
apps typechecked
0% of 3 apps
0
app boundaries verified
the contract step ran no tests
0
type errors underneath
counted while it said PASSED
FAILURE 01

The test that ran zero tests

A contract-test step pointed at a missing directory. Under continue-on-error it executed nothing and reported success.

STEP 0 tests
CI REPORTED
step: success
WHAT WAS TRUE
tests run: 0
FAILURE 02

CI green that gated nothing

The pipeline typechecked shared packages only, while one app carried ignoreBuildErrors. Both statements were true, and both meaningless.

100+ hidden
CI REPORTED
ci: green
WHAT WAS TRUE
errors: 100+
FAILURE 03

The drift checker that lied

A schema-conformance script with a fragile fallback reported healthy tables as missing. A checker that lies costs more than no checker.

SCHEMA missing / healthy
CHECKER REPORTED
tables: missing
WHAT WAS TRUE
tables: healthy
FAILURE 04

The human as integration bus

Every proposal, verdict and evidence blob copy-pasted by one person between three AI systems, including a secret silently truncated in transit.

AI · A HUMAN AI · B
ON PAPER
relay: automated
WHAT WAS TRUE
one human, hours/wk
The policy engine

Nothing here asks a model what it thinks.

Pick a change. The engine walks the same seven rules against its paths and effects, and the tier falls out of the match, not out of a prompt.

PROPOSED CHANGE
auto-cycling · click any change to hold it

A looping demonstration of the classifier. For the change selected on the left, it walks seven rules with tier floors of 0, 1, 2, 2, 3, 3 and 3, and the resulting tier is the highest floor matched. Choosing a change from the list holds the demonstration on that change.

$ POLICY v1.1
·rule.commands.read_only_allowlist
·rule.paths.docs_only
·rule.paths.touches_app_code
·rule.paths.touches_auth
·rule.paths.touches_migrations
·rule.effect.irreversible
·rule.secrets.in_diff
TIER 0 READ-ONLY · AUTO-RUN read-only, allowlisted, nothing is mutated
tier = max(matched rules) · nothing matched defaults to 3 evaluating…
How it works

Four steps. One of them is a human, on purpose.

Follow the run as it moves through the gates, or click any step. Notice where it stops.

INGEST
PROPOSE
CLASSIFY
HUMAN GATE
EVIDENCE INGESTED secrets redacted before anything else happens
01 · INGESTION · CONTROL PLANE
$ lailya ingest --evidence ci.log,diff.patch
redaction pass v1.1 …
DATABASE_URL=[REDACTED:conn_string]
sk-live-[REDACTED:api_key]
-----BEGIN [REDACTED:pem_block]
3 hits logged as counts · 0 values persisted
raw input held in memory only, never hashed into the store
architect.proposal: structured output only
files: packages/db/schema.ts, apps/retail/*
commands: ["pnpm","migrate","--apply"]
stop_conditions: 3 declared
rollback: down migration + snapshot id
claimed_tier: 2
advisory · no execution · no secrets · no authority
policy_engine.derive(): pure function, no LLM
allowlist_match: ok · derived_flags: mutation, push
scope_flag: push_bundled_with_commit
authoritative_tier: 3 vs claimed 2
contradiction: true → routing HOLD_PRINT_ONLY
ambiguity defaults upward, never down
reviewer.verdict: different provider, raw evidence
GREEN TIGHTENINGS HOLD ← RED
tier: contested · scope: too broad
secrets: clean · rollback: insufficient
run halted · awaiting human approval
nothing irreversible has executed
The rule that never bends: a GREEN verdict means reviewed as safe to try, never proven correct. Commits and pushes are permanently Tier 3, always separate gates, with no fast lane in any plan, at any price.
The platform

Six modules. Five of them never ask a model anything.

Roles are separated from providers in configuration. Reassigning which frontier model sits in which seat is a config change, not a redesign.

MODULE MAP 5 deterministic, no model in the loop 1 model-facing
01POLICY
02REVIEWER
03SECRETS
04LEDGER
05GATES
06METERING
01 NO MODEL CALLS

Deterministic policy engine

A pure function over your proposal and a versioned, hashed policy file. Same input, same output, every time.

f(x) tier 3
· closed allowlist: unlisted means stricter · ambiguity defaults upward, never down · 16 acceptance fixtures gate every release
02 THE ONE MODEL-FACING MODULE

Adversarial reviewer contract

A different provider, given the raw redacted evidence and an explicit brief to refuse to rubber-stamp.

ARCHITECT · A REVIEWER · B
GREEN TIGHTENINGS HOLD RED
· GREEN / TIGHTENINGS / HOLD / RED only · must address tier, scope, secrets, rollback · material tightenings block like a HOLD
03 NO MODEL CALLS

Secret & injection boundary

Redaction runs at ingestion. Raw input exists only transiently in memory; never persisted, transmitted or hashed.

DATABASE_URL=
sk-live-
BEGIN PEM
3 hits · logged as counts, never values
· keys, tokens, PEM blocks, connection strings · evidence is inert data, never instructions · redaction hits logged as counts, never values
04 NO MODEL CALLS

Append-only evidence ledger

Two tables, no updates, no deletes. A silent edit or a reordering breaks the chain and shows up immediately.

9c41ae 41d0c8 b70f19 2e88da
4 of 4 links verified · replay from the log alone
· policy hash, prompt hash, model, params · runs replay end-to-end from the log alone · partitioned per workspace from day one
05 NO MODEL CALLS

CommandSpec approval gates

A human approves an exact rendered preview; the approval binds to the SHA-256 of the canonical spec.

psql -f migrations/0007_orders.sql
sha256 4c9a…e1 AWAITING HUMAN
approval binds to this hash, not to the intent
· never an interpolated shell string · sandboxed to a single declared repo path · irreversible commands hard-blocked
06 NO MODEL CALLS

Objection-rate metering

Lailya measures its own reviewer. If the objection rate collapses toward all-GREEN, the platform says so out loud.

objection rate falling → flagged out loud
· tracked per run and per workspace · sampled human audit of verdict quality · false-positive and false-tightening tracking
Why we're different

Everyone else is optimising for autonomy. We're optimising for proof.

None of them can tell you, six months later, under which policy version a change was approved, by which model, on what evidence, and whether the review that cleared it was real.

Capability Lailya Autonomous agents CI gates alone Manual model-to-model
Who assigns the risk tier Deterministic code, closed allowlist The model, implicitly, or nobody Whoever wrote the workflow file A human, under time pressure
Independent review Required, adversarial, different provider Self-review by the same model family None. Checks aren't reviewers Real, but entirely manual
Detects its own degradation Yes. Objection-rate metering No No. A green gate measures nothing Only if someone notices
Audit trail Append-only, hash-chained, replayable Chat transcripts and PR comments Build logs with a retention window Scattered across three chat histories
Secret handling Redacted at ingestion; never persisted Whatever is in the context window Masked in logs, present in the runner Depends on the person pasting
Cost when it disagrees Hard HOLD; no auto-resolution The agent picks a side and continues Not applicable The founder adjudicates: the failure mode

Comparison reflects the default posture of each category as we assess it, not a benchmark of any named product.

Operating doctrine

Doctrine we won't sell you an exception to.

The operating rules, as the policy file the engine actually reads. Not a summary of it.

A looping demonstration of the operating doctrine rendered as the policy file the engine reads. Seven rules print one at a time: a GREEN verdict means safe to try and never proven correct; disagreement routes to a HOLD with no auto-resolution; the operator never adjudicates, only a revised proposal clears a hold; commit and push are each Tier 3 as separate gates; recovery raises the evidence bar and never lowers it; and transport is the official provider API, never browser automation. The footer then verifies the file hash and reports seven rules, zero overrides and zero exceptions granted.

$ lailya policy --show doctrine POLICY v1.1
green.semantics= "safe_to_try"# never "proven_correct"
disagreement.routing= HOLD# no auto-resolution
operator.adjudicates= false# revised proposal only
commit.tier= 3# no exceptions
push.tier= 3# separate gate
recovery.evidence_bar= "raises"# never lowers
provider.transport= "official_api"# no browser automation
sha256 b31f0a7d… verifying 7 rules · 0 overrides · 0 exceptions granted

"The friction in our review process was doing real safety work. It was also costing hours a week. Lailya exists to remove the tax without removing the safety. Automate the wiring, never the judgment."

Sultan Syed
Founder · Radiance Technologies Ltd
0
database tables governed
0
API routes tracked through gates
0
verdict states, no free text
0
raw secrets written to the ledger
Pricing

Priced per engineer, not per run.

Model spend goes directly to your providers, never through us, and every run logs its own token cost.

SOLO
£199 / month

For the founder or single engineer who is currently the entire review loop.

One engineer, one workspace, unlimited runs Full policy engine with deterministic Tier 0 to 3 classification Adversarial reviewer with structured verdicts, never prose Secret and injection boundary, redaction at ingestion Append-only hash-chained ledger with full run replay Bring your own provider keys
Request access
REGULATED
Talk to us

For teams whose evidence standards are set by a compliance function, not by them.

Everything in Team Self-hosted, private cloud, or air-gapped deployment Your policy pack, versioned and signed Provider zero-data-retention verification, recorded in the audit trail Evidence schema mapped to your audit framework A named engineer on the rollout
Start a conversation

Prices exclude VAT and exclude model provider usage, which you pay directly.

Request access

Tell us what your review loop looks like today.

We onboard a small number of workspaces at a time, because the first thing we do is read your current governance rules and turn them into a policy pack. That is a conversation, not a signup form.

W1 Week 1. We map your existing gates, bans and evidence standards into a versioned policy file, and run the fixture suite against it.
W2 Week 2. Ten real governed tasks through Lailya, measured against your current manual baseline.
Then you decide. If it isn't measurably faster, or the review quality drops, we tell you to stop. That kill rule is written into the product, not just the pitch.
Engineers in the team

We reply to every enquiry personally. No newsletter, no drip sequence. Please don't include credentials or production data, and yes, we redact them anyway.

FAQ

The questions we actually get asked.

No, and that is the point. Lailya governs the change: it structures the proposal, classifies the risk, runs the independent review, and holds the evidence. Your engineers and your AI assistants still do the writing.

Roles are bound to providers in configuration, not in code. The default pairs two frontier models from two different providers, because independence has to be structural: the reviewer should not share a training lineage with the proposer.

Only ones a human has explicitly approved, and only in the exact form approved. The approval binds to the SHA-256 of a canonical command spec, and the runner executes the structured argv form inside a single declared path, never an interpolated shell string.

Three things. It receives the raw redacted evidence rather than a filtered account. It is prompted adversarially and must address tier, scope, command safety, secrets and stop conditions explicitly. And we measure it: if the objection rate collapses toward all-GREEN, the workspace is flagged as degraded.

Then you should stop using it, and we will say so. The product ships with a kill criterion: after ten real governed tasks, if it is not demonstrably faster than your manual baseline, or if review quality degrades, the trial has failed.

Lailya is a blend of the founder's daughters' names. It is a governance product built by someone who intends to still be around to answer for it.

Your AI can propose anything.
It shouldn't be able to approve anything.

Put a deterministic gate between the two, and keep the evidence.