Black-and-white stick comic: museum of approval buttons under glass all labelled ASSERTED; the last empty plinth is labelled STALLED.

HITL as a runtime primitive, not a FAQ

A week of reading approval chrome across twenty-four peers. All asserted, none enforced. A gate with fourteen states can stall; a badge cannot.

A week of reading approval chrome. Not landing copy — the actual product screens, wherever anyone bothered to show one.

Notes from the field, then.

Seven hundred and twelve captured viewports. Twenty-four of them had something worth writing down. Four lead with an approval gate as the main surface. Thirty-one have gate chrome anywhere on the page, usually as a badge beside something else. Twenty-six vendors showed a below-fold capture, and that is where the good material was.

Trace is the densest gate chrome in the set, and all of it below the fold. A run header, then tiles: Blocked four, Needs Review nine, SLA at Risk six. Under that, a line reading approval overdue — assignee unresponsive for thirty-six hours, and another about a finance review gate exceeding its threshold. Named gates, not adjectives. There is a confidence gate too, with a minimum of seventy-five per cent, shown failing at sixty-two. The first viewport of that same page is a headline over abstract art. If you had only looked at the hero you would have filed them as marketing.

Maywood's hero is You read. You approve. Mid-page: supervised at every external boundary, over a feed of background activity. The cleanest statement of the geometry anybody makes — autonomous inside, human at the edge — and it is two sentences long.

End Close shows reconciliation exceptions with states of open, investigating, unassigned, and a column for average age in days. Age is the only clock in this entire set that is attached to the exception itself rather than to a threshold somebody configured.

Who else actually shows a write gate?

FullSeam puts accounts-payable invoices in lanes: Blocked, Escalated, Ready to post, with a confidence score on each row. Lane chrome, which is honest about being a queue rather than pretending to be an inbox. Dimely splits a mid-page grid into approved and needs review, with a pause control and clause citations on the extracted fields. The hero line is the best sentence on this shelf: only the exception surfaces. That is a claim about volume, which is what an operator actually wants to know.

IncidentFox shows the fix script — the literal code — next to an Approve and Run button, with a stated boundary that only this code executes. The most concrete write gate in the corpus. Everyone else shows a button; this one shows what the button does. Alter has an authorization engine that checks scope and rate limits, returns APPROVED, and writes an audit entry. Policy as a component with an output, rather than a promise in a security section.

ProcIndex names the problem instead of the feature: approvals waiting on context. Then a shared work queue, and the division of labour written as agents execute, your policies decide. Tracecat shows cases with a lane marked REVIEW REQUIRED and items awaiting approval, sitting beside a workflow canvas. One of the few places where a case object and a gate appear in the same screenshot. Paradigm has a table column literally named Prelim Gate, currently analysing — the rarest thing here: the word gate used as a column header, in a product, by accident of good design.

The thin ones, for calibration. One vendor's gate surface is typography — a beautifully set page about approval with no queue on it. Another says it hands work to a person to approve and shows nothing. A third has a chip labelled Guard. These are all filed under approval in the market's own language and none of them is evidence of anything.

So what is the week for, after all that?

Every one of these is asserted. A landing page, a mock, a docs claim. Not one is a shipped product where something fails if the behaviour is missing. That is not an accusation — marketing is allowed to be marketing — but it means the entire visible market for human approval is a vocabulary rather than a mechanism. Blocked, Needs Review, Escalated, Awaiting, Overdue, Ready. Six or seven badges, arranged differently.

A badge is a rendering of a field. A runtime primitive is a state machine that owns the field. Ours has fourteen states: proposed, policy-checked, auto-allowed, awaiting a human, clarifying, approved, rejected, escalated, stalled, timed out, executing, verify-pending, verified or failed, cancelled. Most of that list has a badge somewhere in the peer set. Two do not, anywhere, and they are the two that make it a runtime.

Stalled, because a badge cannot time out. Overdue is a threshold on one clock; stalled is a different condition with a different remedy, and no peer separates them.

Verify-pending, because a badge cannot ask the system of record whether the thing it approved actually happened.

One recommendation, and it is not about design. Pick the two states nobody renders and build those first, with a test that fails if they collapse into the ones that already exist. The badge vocabulary is free — you can copy any of the twenty-four above in an afternoon. The state machine is the product, and it is the reason approval belongs in the runtime rather than in an answer to a frequently asked question.

Thanks — fog cleared.

Same. Demand the fourteen states.

Research base: hitl-gate-peers ranked chrome (24 peers) · evidence-trace-midpage DOM capture · captures-surface-labels rollup · chrome-evidence tiers · interaction-loops gate state machine · gov-run enforced-vs-asserted

In this research

Catalog entities mentioned in the post or its research notes.