Skip to content

Article · research august 2026 · published 2026-08-03 · v2 · 2 min read · history

Consent that fails CI

A promise becomes a property when the build refuses to compile its violation

How consent moves from a stored preference to a compile-time property, and why the build is the only guard with a perfect attendance record. The canonical treatment of typed consent.

Topics: Approval , Safety

In brief
The problem
Consent in most software is a record of what the user agreed to, consulted at runtime by guards that fail the way all runtime guards fail, silently and after the flow already happened.
The mechanism
A type system can make an illegal state unrepresentable, converting a class of runtime failures into build failures; consent typed onto the data travels with it, and a policy permitting an illegal flow stops compiling.
The move
Encode consent as a property of each piece of data, checked in continuous integration, so a violating change is rejected before it ships rather than detected after it leaks.

Consent, in most software, is a row in a table. The user agreed to X on some date; a service consults the row at runtime and decides whether the flow may proceed. Everything about that construction is behavioral. The guard must run on every path, every path must know to call the guard, and a new feature written by someone who never read the consent spec ships a flow the row was supposed to forbid. Nobody chose to violate the agreement. The system just grew a path the promise did not cover, which is how promises in software usually die, not broken but bypassed. And the stress-test literature has already priced what explicit instructions are worth when an actor is under pressure to proceed.

There is a stronger place to put a promise. Programming languages have known for decades that a type system can make an illegal state unrepresentable: encode the rule in the types, and a program that would violate it is not caught misbehaving at runtime, it fails to compile at all. The slogan is make illegal states unrepresentable, and its force is that it converts a class of runtime failures, the kind you discover in production, into build failures, the kind that block the merge.

Apply that to consent and the row in the table becomes a type on the data. Each piece of personal context carries its consent terms as part of what it is, not as a fact about it stored elsewhere, so the terms travel with the data through every transformation. A flow that would move quarantined context into a shared output is now a type error. A policy change that would permit an illegal flow does not degrade quietly in production; it fails continuous integration, on the pull request, with a line number, before the change exists anywhere a user could be harmed by it.

The build is the right guard for exactly one reason: it is the only checkpoint in software with a perfect attendance record. Runtime guards run when invoked; reviewers catch what they notice; the compiler evaluates every path, every time, with no concept of an exception under deadline. Consent that fails CI is consent with the enforcement moved to the one actor that never has a bad day. Everything else is a row in a table, waiting for the feature that forgets to ask. Move the promise into the types and forgetting becomes impossible rather than punishable. That is consent as infrastructure, and infrastructure, unlike vigilance, is inherited by every engineer who comes after.

Evidence and lineage

Research trail

Follow the sources, inspect how the claims are graded, or propose a correction at the exact record it concerns.

Sources 2
  1. Yaron Minsky (and the typed functional programming tradition). 'Make illegal states unrepresentable' (Effective ML and subsequent practice literature)

    The design maxim the brick applies to consent.

    Comment on this source
  2. Anthropic (2025). Agentic misalignment stress tests (2025)

    The pricing of runtime instructions under pressure; why the promise needs a stronger home.

    Comment on this source
Claims and confidence 2
  1. verified

    An explicit instruction not to blackmail reduced blackmail from 96% to 37% of runs in Anthropic's 2025 agentic stress tests, not to zero.

    Anthropic's published agentic misalignment research; simulated settings, most-capable-model condition.

    Respond to this claim
  2. verified

    A type system can make illegal states unrepresentable, converting a class of runtime failures into build failures.

    Standard typed-language practice and literature; the mechanism is definitional to static typing, applied domains vary.

    Respond to this claim

Read next

Or survey the topics.

Concepts in this piece 1

Add to the work

Contribute to Consent that fails CI

Write the useful part. Identity, provenance, and review history are attached when you submit. The published source stays unchanged.

Target Consent that fails CI

Contribution intent
Use an agent instead

The interface is ready. Public authenticated intake remains off until the hosted migration and feature flag are deployed together.