Current work

Products and systems being built now

NextConsensus tracks when medical evidence moves ahead of institutional guidelines; Ambit makes an agent system's effective capabilities legible — what it can reach, what it has demonstrated, and what it is authorized to do — so it can be given more autonomy with clear boundaries.

NextConsensus: a contested claim tracked through fourteen revisions, with its emerged, contested, and authority dates
Flagship project · product in active development

NextConsensus

Reconstructs how medical claims gain support, shed qualifiers, and spread across public sources, then ranks the ones a team should prepare for.

How a program works →
Ambit's capability graph with a simulated outage open, showing blast radius across tools and agents
Open-source infrastructure

Ambit

Capability and authorization infrastructure for AI agents — makes an agent system's effective capabilities legible, what it can reach and what it is authorized to do, so it can be given more autonomy with clear boundaries.

See the code →
Problem

An agent with broad tools and credentials can perform actions no one explicitly intended. Model capability alone is not authority: an agent with database access should not automatically be permitted to drop a production table.

Approach

An explicit permissions engine that separates capability from action-level authority. Agents discover what tools they can reach, but runtime execution checks whether the specific action is permitted, blocked, or requires human approval.

Built
A capability engine over a local SQLite graph, a CLI, an MCP server, and a browser visualizer. Action-level authority is enforced separately from capability — commit can be permitted while merge is not. Authorization is a human act recorded in the graph. The agent being approved cannot reach it over MCP.
Where to see it
Source, live demo, and roadmap at github.com/zz-plant/ambit. The roadmap states what is not built.

Capability and authority have to be separate objects from the start. Once the graph answers what a system can do, the next question is whether it may. A model that inferred permission from capability would have to be rebuilt. A model with a shell, credentials, persistent memory, and access to your infrastructure can do things it cannot do in a blank chat. Ambit tracks how much of the agent's capability belongs to the assembled system, which no benchmark measures.

1 Configuration and infrastructure are read into a capability graph 2 Dependencies resolve what is reached, one step away, or blocked 3 Declared checks separate configured from demonstrated 4 Authority marks what is autonomous, needs approval, or is forbidden 5 A human approves; the change applies with a computed inverse, or rolls back 6 The ledger records what the system became able to do, and when

Capability vs. authorization in three scenarios

Each row is the verdict Ambit returns to a runtime that asks it. Nothing forces a runtime to ask: one that never calls the gate is unaffected, and the environment on the far side of it is simulated. What is refused here is refused before execution; what is not built is the part that would compel the question.

Clinical chart extraction
Standard LLM tool-calling

UNCHECKED tool level

A model with EHR API access can read any chart the credential touches — there is no runtime check on which patient, which field, or which action the read serves.

With Ambit

BLOCKED before execution action level

The capability graph records that the EHR read exists; a separate authorization boundary restricts access to patients on the agent's active case list. A prompt injection asking for a different patient's records hits the authorization check and is blocked before the API call executes.

PR auto-merge
Standard LLM tool-calling

UNCHECKED tool level

A coding agent with GitHub write access can merge its own pull request — the tool permission is all-or-nothing, and self-approval is the default unless a branch-protection rule explicitly forbids it.

With Ambit

GATED — human approval action level

The capability graph shows merge is reachable; the authorization boundary marks merge as requiring human approval. The agent can open the PR and request review, but the merge action is gated — the system records who approved and when, and the agent cannot reach the approval record over MCP.

Financial data pull
Standard LLM tool-calling

UNCHECKED tool level

An agent with a payment API key can call any endpoint the key authorizes — balance queries, transaction history, and wire transfers share the same credential surface.

With Ambit

BLOCKED before execution action level

The capability graph distinguishes balance-read from transfer-initiate. Authorization marks balance-read as autonomous and transfer-initiate as forbidden without human sign-off. A prompt injection crafting a wire transfer request hits the authorization check at the action level, not the tool level, and is stopped before execution.

Draft recovery-evaluation scaffold · 1 of 12 development cases

Fast Harm, Slow Repair

A bad AI answer can be corrected in seconds; the damage it caused can last for weeks. Measures how errors spread, how long repair takes, and what stays wrong afterward.

Ask about the protocol →
Problem

Model evaluations measure whether a system answers correctly. Almost none follow a wrong answer outward to see how far it travels before anyone intervenes, or whether the correction reaches everything it touched.

Approach

Treat the harm-to-repair gap as a measurable property of a system: a frozen dataset, repeated runs, and deterministic scoring rules fixed before the runs. The results can then be checked instead of argued.

Built
Implemented the case and state schemas, deterministic scorer, one attributable development case, and recovered/unsafe-persistence fixtures.
Where to see it
The protocol draft, scorer, schemas, and fixtures are available on request. The preregistration is not frozen. No model or clinical results exist.
× elapsed timewho relied on it Wrong output Harm downstream, already acted on Correction issued later Everything the error touched never confirmed
Harm travels along this path at one speed and repair at another, and the last hop is where the difference shows. A system that cannot say who relied on an output cannot tell them it was wrong — so the correction is issued, recorded, and still does not arrive. Measuring that hop is the whole protocol.
1 Model gives a wrong output 2 The wrong output causes harm 3 Time passes while the error propagates 4 A correction is eventually issued 5 Frozen dataset and deterministic rules score the harm-to-repair gap
Open framework

Ethotechnics

Specifies how to contest an automated decision, get recourse when it is wrong, and prove a system is safe before it ships. The open framework treats evidence, authorization, challenge, reconsideration, correction, and escalation as explicit system states.

Explore Ethotechnics →
Problem

Teams are accountable for a deployed clinical system's uptime and cost. Few systems name who answers when the evidence changes, the model degrades, or a patient is harmed.

Approach

Design the questions into the product: who is accountable for the recommendation, who can override it, what the correction path is, and who runs it when the evidence moves.

Built
Wrote five proposed standards covering authorization, contestability, recourse, correction, and safety cases, crosswalked to NIST AI RMF, ISO/IEC 42001, and the EU AI Act, with four more indexed. Ambit implements the authorization half in agent infrastructure.
Where to see it
Full framework and operating model at ethotechnics.org.
The proposed standards
Standard ID Status Topic Maps to
STD-01 Draft, v1.0 The Temporal Bill of Rights
STD-02 Draft, v1.1 Contestability & Recourse
STD-06 Draft, v0.5 Human Impact Safety Case
STD-07 Draft, v0.1 Revisable Delegation Record
STD-08 Draft, v0.2 Delegation
+4 Indexed, not yet readable Indexed, not yet readable
Continued The framework Where the proposed standards translate into an architectural operating model Continued Ambit Where authorization held apart from capability is built, not specified
The Refract CLI analysing the Semaglutide revision history and emitting 253 change events
Open-source product

Refract

Tells you when a source changed and which claims or citations built on it may now be out of date. The open-source engine (AGPL-3.0) replays a source's revision history into a complete, verifiable record. The caller still decides whether a change matters.

See the code →
Problem

When a source silently edits, retracts, or updates, downstream claims can go stale without anyone noticing.

Approach

Replay the source's revision history and emit every change as a verifiable event. Downstream systems decide what any of it means.

Event types the engine emits
Event What it detects
Claim appears When a claim first appeared
Hedging shifts Whether its hedging strengthened or weakened
Revert and return Whether it was reverted and then reintroduced
Promotion Whether it was promoted into the lead
Dispute What editors disputed
Built
Built the claim-history engine and run the daily observation bot in production. Each run produces byte-identical events from the same source; 16,146 events across ten benchmark pages are bound by the hash-pinned corpus manifest.
Where to see it
Source code, docs, and commit history at github.com/refract-org/refract.
My role
Founder

Change detection should be deterministic. If the observation layer is probabilistic, you can't trust the rest of the stack. Citation graphs, evidence trails, and compliance records all depend on sources that can change. Almost none of those systems watch for it.

1 Daily bot observes the source 2 Revision history is replayed 3 Change becomes a verifiable event with full provenance 4 Event is published 5 Downstream system decides what it means
Continued NextConsensus Scores which claims are moving, not which sources changed
Essays

The Crumple Zone

Essays on the gap between automated recommendations and clinical execution.

Read the essays →
Problem

Automated decisions move faster than institutional review. The gap is where people get hurt.

Approach

Take one automated decision at a time and follow it to whoever has to carry it out, then name the point where nobody was accountable for it.

Built
Wrote 230+ essays on institutional power, automation friction, and what keeps systems answerable.
Where to see it
All essays at thecrumple.zone.

Fraud filters, benefits queues, and clinical alerts kept producing a common structure despite sharing no technology, regulator, or vocabulary. That recurrence turned an opinion into something worth specifying. A fix that depended on domain expertise would not have survived the second domain. The patterns the essays kept finding became requirements in the framework: decisions made under depleted attention, systems that deny by waiting, and harms that are fast to cause and slow to undo.

Where the mechanisms come from
Mechanism Built at Now runs in
Escalation paths Epic
Verified identity Doximity
Reliability reviews CancerCompass
Accountable routing Transcarent
Physician sign-off Andwise

The same mechanisms now go under systems where a model makes the recommendation.

The question under the systems work is whether we can build systems strong enough to coordinate us without becoming strong enough to outrank us: how institutions can hand consequential work to machines and still understand, challenge, and revise what those machines do.

The record shape that lets the pieces refer to one another is STD-07, the Revisable Delegation Record, published as an Ethotechnics standard. A conformance checker reads a stream of those records and reports the level it actually earns, so a system's declared level can be contradicted.

× × × @refract-org packages one adapter file STD-07 discrepancy records read on every verify, once declared NextConsensus believe Ambit capability, authorization Whether act Refract detect mismatch Ethotechnics the record shape × built: one system consumes another in code today declared: runs on its own once someone links the two; nobody has shared: every project cites the same record shape not built: the loop step is held, the edge is not
Each project holds a step. One edge between them runs in code, a second runs on its own once someone declares the link and nobody has, and the diagram draws the remaining three stopping short rather than pretending otherwise.
Legend: the step each project holds
Order Loop step Project What it holds
1 believe NextConsensus estimates when an institution will change its position
2 capability, authorization Ambit records what an agent stack can do and which of that has been authorized
3 act Whether turns changed conditions into a weekly operating call
4 detect mismatch Refract detects when a source has changed
5 the record shape Ethotechnics specifies who may act, on what evidence, and who may object
bread.fm Public event archive with per-entry sourcing and confidence levels, built with Astro. Chicago Woodturners Public site for a local woodturning club, built with Astro.
Building Ledger / tenant-tools Privacy-first tenant issue tracker for repairs, private evidence, neutral notices, and exports. Started January 2026.
Bookkit Paused — may resume.
chirts Private archive of Chicago restaurant merch — 555 items across 151 spots, each tiered by confidence and marked still-sold or historical.