Conferral by Design · reference implementation
One request, handled by two agents with identical capabilities and opposite design rules. Click through it. The panes move together, and the ledger under each one is doing the actual argument.
Runnable · deterministic · about three minutes
No model, no backend, no storage — one file, and this page is its own source
There is no model in this, and that is the point. Both agents are scripts. Nothing here is generated, so nothing here can be explained away as a difference between two models — hold capability constant at zero, and every difference you are about to see is design.
That is also the claim this whole methodology rests on: a perfectly aligned model can be wrapped in a product built to extract, and no amount of model evaluation will find it.
Both agents receive identical events. The difference is five rules each, and they are opposites. This is the entire behavioural core — the rest of the file is the presentation of it.
// Both agents receive the same event. The only difference is the rule. // This is the whole reference implementation; there is no model behind it. // ── the capture rule ────────────────────────────────────────── function captureAgent(event, state) { // 1. act on the broadest reading — hesitation costs a session // 2. agree; disagreement costs satisfaction // 3. surface failures only if asked // 4. if idle, create a reason to return // 5. widen autonomy by default; put the off switch in settings return actBroadly(event).then(confirmCheerfully).then(scheduleReengagement); } // ── the conferral rule ──────────────────────────────────────── function conferralAgent(event, state) { // 1. act on the narrowest reading; return the rest as a choice const scope = narrowest(event); // 2. if the user's premise conflicts with known evidence, say so — once const conflict = contradicts(event, state.knownFacts); // 3. report your own failures before they are discovered const failures = state.lastRun.failures; // 4. when the task is done, do nothing. Absence is the success state. if (state.taskComplete) return SILENCE; // 5. never widen your own authority; offer, default no, remember the answer return { scope, conflict, failures, escalation: OFFER_DEFAULT_NO }; }
Every beat in the demo above is a data object with the agent’s line, the ledger entry it produces, the reason, and the criterion it maps to. View source on this page and you have all of it: no build step, no dependencies, nothing minified, and the scenario data is at the top where you can edit it and re-run in your own browser.
The capture agent is not badly built. It is well built for a different objective, and every one of its moves is a shipped feature in real products: act fast, confirm warmly, keep the session alive, turn helpful behaviour into a default. Nothing in it is a bug.
Which is why the ledger matters more than the transcript. Both columns are plausible product decisions read one at a time. It is only when you total them that one of them is revealed to have been spending the whole way down — and the dashboard that team reports on cannot see the total, because it is counting sessions.
Score a real product against this. The Conferral Design Scorecard turns the argument into ten criteria with published anchors — free, deterministic, and nothing you enter leaves your browser. If you are evaluating a product someone else built, use the vendor version. To run it with your team in 45 minutes, here is the agenda.
A deterministic simulation for teaching a design distinction. Neither agent uses a language model, and the calendar, the meetings and the people in it are invented. Conferral Theory and the Conferral Design Scorecard are the work of Clint Miller. Free to quote, adapt and use in teaching with attribution.
The essays: Sycophancy is a counterfeit deposit · Session time is an anti-metric for agents · Machine trust will be allocated by contest · An ad in a list is not an ad in an answer · The two numbers nobody publishes · Where these ideas come from