How the platform keeps answers from claiming too much

This page has the details for people who want them. It shows how the platform limits what each result can claim, and what it refuses to claim.

The Epistemic Protocol Machine

Ten reasoning operations you can chain. Every result names the evidence behind it, carries a ceiling on how far it can be pushed, and says who decided what.

01

Direct composition

All 100 directed pairs; arrows point from producer to consumer.

Hover overTap a primitive for its signature, or an arc for why that pair is permitted or blocked.

Direct composition of the ten primitives All one hundred directed pairs, arrows from producer to consumer. 85 pairs are type-compatible and 15 are blocked by the static checker. CHECK to CHECK: type-compatible CHECK to SEEK: type-compatible CHECK to MONITOR: type-compatible CHECK to IMAGINE: type-compatible CHECK to COMPARE: type-compatible CHECK to GAUGE: type-compatible CHECK to ADAPT: type-compatible SEEK to CHECK: type-compatible SEEK to SEEK: type-compatible SEEK to MONITOR: type-compatible SEEK to IMAGINE: type-compatible SEEK to COMPARE: type-compatible SEEK to GAUGE: type-compatible SEEK to ADAPT: type-compatible MONITOR to CHECK: type-compatible MONITOR to SEEK: type-compatible MONITOR to MONITOR: type-compatible MONITOR to IMAGINE: type-compatible MONITOR to COMPARE: type-compatible MONITOR to GAUGE: type-compatible MONITOR to ADAPT: type-compatible IMAGINE to CHECK: type-compatible IMAGINE to SEEK: type-compatible IMAGINE to MONITOR: type-compatible IMAGINE to IMAGINE: type-compatible IMAGINE to EXPLORE: type-compatible IMAGINE to COMPARE: type-compatible IMAGINE to GAUGE: type-compatible IMAGINE to ADAPT: type-compatible EXPLORE to CHECK: type-compatible EXPLORE to SEEK: type-compatible EXPLORE to MONITOR: type-compatible EXPLORE to IMAGINE: type-compatible EXPLORE to EXPLORE: type-compatible EXPLORE to COMPARE: type-compatible EXPLORE to GAUGE: type-compatible EXPLORE to ADAPT: type-compatible COMPARE to CHECK: type-compatible COMPARE to SEEK: type-compatible COMPARE to MONITOR: type-compatible COMPARE to IMAGINE: type-compatible COMPARE to EXPLORE: type-compatible COMPARE to COMPARE: type-compatible COMPARE to EXPLAIN: type-compatible COMPARE to GAUGE: type-compatible COMPARE to CHOOSE: type-compatible COMPARE to ADAPT: type-compatible EXPLAIN to CHECK: type-compatible EXPLAIN to SEEK: type-compatible EXPLAIN to MONITOR: type-compatible EXPLAIN to IMAGINE: type-compatible EXPLAIN to EXPLORE: type-compatible EXPLAIN to COMPARE: type-compatible EXPLAIN to EXPLAIN: type-compatible EXPLAIN to GAUGE: type-compatible EXPLAIN to CHOOSE: type-compatible EXPLAIN to ADAPT: type-compatible GAUGE to CHECK: type-compatible GAUGE to SEEK: type-compatible GAUGE to MONITOR: type-compatible GAUGE to IMAGINE: type-compatible GAUGE to EXPLORE: type-compatible GAUGE to COMPARE: type-compatible GAUGE to EXPLAIN: type-compatible GAUGE to GAUGE: type-compatible GAUGE to CHOOSE: type-compatible GAUGE to ADAPT: type-compatible CHOOSE to CHECK: type-compatible CHOOSE to SEEK: type-compatible CHOOSE to MONITOR: type-compatible CHOOSE to IMAGINE: type-compatible CHOOSE to EXPLORE: type-compatible CHOOSE to COMPARE: type-compatible CHOOSE to EXPLAIN: type-compatible CHOOSE to GAUGE: type-compatible CHOOSE to CHOOSE: type-compatible ADAPT to CHECK: type-compatible ADAPT to SEEK: type-compatible ADAPT to MONITOR: type-compatible ADAPT to IMAGINE: type-compatible ADAPT to EXPLORE: type-compatible ADAPT to COMPARE: type-compatible ADAPT to EXPLAIN: type-compatible ADAPT to GAUGE: type-compatible ADAPT to ADAPT: type-compatible CHECK to EXPLORE: blocked CHECK to EXPLAIN: blocked CHECK to CHOOSE: blocked SEEK to EXPLORE: blocked SEEK to EXPLAIN: blocked SEEK to CHOOSE: blocked MONITOR to EXPLORE: blocked MONITOR to EXPLAIN: blocked MONITOR to CHOOSE: blocked IMAGINE to EXPLAIN: blocked IMAGINE to CHOOSE: blocked EXPLORE to EXPLAIN: blocked EXPLORE to CHOOSE: blocked CHOOSE to ADAPT: blocked ADAPT to CHOOSE: blocked 01CHECK 02SEEK 03MONITOR 04IMAGINE 05EXPLORE 06COMPARE 07EXPLAIN 08GAUGE 09CHOOSE 10ADAPT

Hover over a primitive to isolate the pairs it can feed.

85 type-compatible15 blocked

The ring includes self-pairs. A pair passing the type check does not mean the call will run: artifact kinds, evidence and authority still apply to every actual call.

02

Complete type matrix

Read a row into a column. Open = type-compatible; X = blocked.

Hover overTap a cell to see why the static checker permits or blocks that pair.

producer, then consumerCHECKSEEKMONITORIMAGINEEXPLORECOMPAREEXPLAINGAUGECHOOSEADAPT
CHECK
SEEK
MONITOR
IMAGINE
EXPLORE
COMPARE
EXPLAIN
GAUGE
CHOOSE
ADAPT

WHY CONNECTIONS FAIL

09
OBS → EXPLORE / EXPLAIN / CHOOSEThe consumer excludes observational inputs.
04
INT → EXPLAIN / CHOOSEInterpretation-grade output is not an accepted input grade.
01
CHOOSE → ADAPTACT and LRN have no defined grade join.
01
ADAPT → CHOOSECHOOSE excludes the learning/revision grade.

STATIC TYPE CHECK

The ten diagonal self-pairs are permitted. The remaining directed pairs are 75 permitted + 15 blocked. The matrix checks one operation against the next one. It does not check what a whole program means.

03

How the protocol constrains a result

Different grades, evidence limits, authority and identities remain distinct.

Hover overTap a grade for its claim-strength range, a step for the code that performs it, or the ladder for the grades that admit each value.

3OBSObserve
2INTInterpret
3RSNReason
1ACTRecommend
1LRNRevise
AStatic admissibilityAccepted input grades + possible output grades + defined grade join.
BRuntime legitimacyResolve the actual artifacts; check domain conditions, evidence and current authority.
CExecution and annotationCompute the result; apply evidence-quality restrictions, claim-strength caps and typed refusals.
DDurable resultRetain identity, source references, disclosures, limits and the result envelope.
TYPE-LEVEL EXAMPLEIMAGINEEXPLORECOMPAREEXPLAIN
CLAIM STRENGTHCS0 < CS1 < CS2 < CS3 < CS4Not a probability

A primitive has a ceiling, not a guaranteed output strength. Each step's guard caps a claim at one level above its strongest input; the evidence-warrant assessment separately restricts interpretive claims and requires empirical warrant for CS4.

Adjacent-pair checking and accumulated graded effects are different mechanisms. A sequence of permitted pairs does not by itself establish semantic relevance or independent evidence.

04

Primitive anatomies

The functions and model attributes here were read out of the source. MCP modes are listed separately. Two operations sharing a grade does not mean you can swap one for the other.

Hover overTap a primitive's name for its signature, a function for its source signature and docstring, an operation for its registered contract, or the effect line for the operations that share it.

01

CHECK

OBSOBSERVED

Measure a specified state, field or spatial distribution.

Measurement / spatial observation / evidence inspection

Resolve regionSelect fieldQuery sourceBind result

FORMAL EPM SIGNATURE

Accepts: OBS, INT, RSN, ACT, LRN
Ceiling OBS:CS1 · Downgrades CS0

GUARDSPlace queries need an area or a named place; field queries need a field name. Reading a saved result needs its exact reference and the person's current access.

LIMITSA simulated measurement and a field observation keep different evidence labels. Uncertainty needs a separate assessment.

02

SEEK

OBSOBSERVED

Trace movement, routes and reachability through a network.

Tracing / spatial analysis / temporal sequencing

Resolve endpointsRead networkTrace / reachRetain path

FORMAL EPM SIGNATURE

Accepts: OBS, INT, RSN, ACT, LRN
Ceiling OBS:CS1 · Downgrades CS0

GUARDSRoutes and reach need declared endpoints, a supported travel mode and a network the person may use. Options that cannot be honored are refused, not ignored. Trips between areas describe movement, not causes.

LIMITSTime order is the order runs completed, not real-world observation time. No trend or cause is established.

03

MONITOR

OBSOBSERVED

Observe conditions, events, execution state and changes over time.

Observation / temporal tracking / change detection

Name targetRead / evaluateObserve changeReport state

FORMAL EPM SIGNATURE

Accepts: OBS, INT, RSN, ACT, LRN
Ceiling OBS:CS1 · Downgrades CS0

GUARDSA watch needs a declared condition, a positive cooldown and the person's approval before it starts. Reading a simulation never advances it.

LIMITSStatus and state reads are observations only; watching adds no evidence strength.

04

IMAGINE

INTINTERPRETED

Specify a counterfactual scenario or interpret a conditional contrast.

Counterfactual construction / conditional interpretation

Select baseDeclare deltaFork / compileSave scenario

FORMAL EPM SIGNATURE

Accepts: OBS, INT, RSN, ACT, LRN
Ceiling INT:CS2 · Downgrades CS1

GUARDSA variant needs an existing scenario the person may use and explicit, typed changes. Every variant is approved by the person before it is generated.

LIMITSReading a result under its conditions creates no scenario and no run, and establishes no real-world effect.

05

EXPLORE

INTINTERPRETED

Execute a declared scenario over a specified simulation horizon.

Execution / model-based experimentation / run production

Validate scenarioReserve runExecute kernelsPublish receipt

FORMAL EPM SIGNATURE

Accepts: INT, RSN, ACT, LRN
Ceiling INT:CS2 · Downgrades CS1

GUARDSA run needs a scenario, continuation or sweep the person approved, simulate permission and available computing resources. An identical retry returns the original run.

LIMITSThe approved scenario fixes the scope, methods and starting world recorded with each run.

06

COMPARE

RSNREASONED

Compute explicit differences between compatible alternatives.

Contrast / alignment / multi-objective comparison

Resolve operandsAlign metricsCompute deltasPublish contrast

FORMAL EPM SIGNATURE

Accepts: OBS, INT, RSN, ACT, LRN
Ceiling RSN:CS3 · Downgrades CS2

GUARDSBoth sides must be complete, accessible results with compatible units and methods. Nothing partial is published.

LIMITSA difference does not establish a cause or a preference, and it does not choose between options.

07

EXPLAIN

RSNREASONED

Examine causal attribution under explicit identification assumptions.

Causal reasoning / structural identification / attribution

Specify contrastDeclare graphCheck identificationReport scope

FORMAL EPM SIGNATURE

Accepts: RSN, ACT, LRN
Ceiling RSN:CS3 · Downgrades CS2

GUARDSAttribution needs an outcome measure and an observed value. A structural check needs a declared diagram of causes without loops and a compatible measure; unobserved common causes are stated.

LIMITSEach causal conclusion holds only when its method's conditions are met, and only for the model or data it used.

08

GAUGE

RSNREASONED

Assess uncertainty and variability within a named method.

Uncertainty assessment / variability analysis / evidence qualification

Select evidenceCheck methodAssess variationState limits

FORMAL EPM SIGNATURE

Accepts: OBS, INT, RSN, ACT, LRN
Ceiling RSN:CS3 · Downgrades CS1, CS2

GUARDSEach method needs compatible results or observations, a common measure and its declared settings, such as the seed or grouping.

LIMITSClaim strength is ordinal, not a probability. Descriptive spread is not a confidence interval.

09

CHOOSE

ACTRECOMMENDED

Rank or search alternatives under declared objectives and constraints.

Decision support / constrained search / alternative ranking

Declare objectiveCheck feasibilityRank candidatesRetain choice set

FORMAL EPM SIGNATURE

Accepts: RSN, ACT
Ceiling ACT:CS4 · Downgrades CS3

GUARDSA search needs decision variables, an objective the person states and an approved scope for any new runs. Ranking needs qualified evidence about consequences.

LIMITSIt ranks the candidates it evaluated. It does not establish what the person prefers, an exhaustive search or a real-world optimum, and a recommendation is not approval.

10

ADAPT

LRNREVISED

Propose evidence-bound revisions without silently applying them.

Evidence assimilation / revision proposals / retained human control

Bind evidenceReconcile targetRetain proposalAwait control act

FORMAL EPM SIGNATURE

Accepts: OBS, INT, RSN, ACT, LRN
Ceiling LRN:CS3 · Downgrades CS1, CS2

GUARDSEvidence is required, and each observation is bound to a saved result. Applying a proposal is a separate act by the person.

LIMITSA proposal does not apply itself and does not establish relevance or a current belief.

05

Shared artifact anatomy

IDENTITY + PROVENANCE

Content digest; pinned specifications; seed plan; the software that ran each step; deterministic artifact references. Operational fields such as worker, queue and timestamps are separately classified.

FIVE RESULT CHANNELS

Data provenance / kernel fitness / proxy validity / epistemic warrant / contestation. Unknown or unavailable assessments remain explicit; no invented aggregate confidence.

REFUSALS + EVIDENCE

Refusal records name the source primitive, requested/evidence labels, violated invariants, reason, remediation and alternatives. A refusal may be examined without supporting the refused claim.

FRAMES + HUMAN AUTHORITY

Optional attributed readings retain concerns, operationalization mappings and meaning graphs. A reading does not change the run or strengthen evidence. Approval is a separate human act.

Read from the source at one revision. It does not certify what is deployed, and the internal flow diagrams are schematic.

What the platform refuses to claim

Every answer comes with a ceiling on it. The ceiling says how strong a claim that answer is allowed to support. If the evidence will not support what you asked for, the platform says so and tells you which evidence it did not have.

A refusal means the platform worked. It read the evidence it had, and the evidence did not support the step you asked for. An error is a different thing: an error means something broke.

Four rules produce those decisions. The mechanism comes from computer security, where a piece of data carries a label saying how sensitive it is, the label goes wherever the data goes, and certain operations are forbidden on labelled data. Here the label describes evidence instead of sensitivity, and it forbids claims the evidence cannot carry.

01

Every result says how strong it is

Say you measure how long it takes to drive across town at eight in the morning. You now know what happened. You do not know what would have happened if a lane were closed, and you do not know whether the traffic light caused the delay.

The platform keeps that difference attached to the result. Every result carries a label: observation, interpretation, reasoning, recommendation, revision. The label goes wherever the result goes. If someone later tries to use your traffic measurement as evidence about a cause, the label stops them.

Almost nobody reaches a wrong conclusion by lying. They reach it by taking a number measured under one set of conditions and using it to answer a different question. The label makes that swap visible the moment someone tries it.

OBS · Observe

You measured it. It tells you what happened. It does not tell you why, and it does not tell you what would happen under a change.

Operations that can reach it: CHECK, SEEK, MONITOR

INT · Interpret

You said what the data would mean under stated assumptions. A simulated run sits here: it did not happen, and how far you can trust it is bounded by the model.

Operations that can reach it: IMAGINE, EXPLORE

RSN · Reason

You attributed a difference, or identified a mechanism. This is the first grade allowed to say why something happened.

Operations that can reach it: COMPARE, EXPLAIN, GAUGE

ACT · Recommend

The result supports a course of action, measured against objectives and constraints that someone stated on the record.

Operations that can reach it: CHOOSE

LRN · Revise

The result proposes a revision to something previously held. It goes to governance for a decision rather than straight into the record.

Operations that can reach it: ADAPT

5 grades. They run OBS to INT to RSN, and from RSN to either ACT or LRN. Those last two are not ranked against each other: neither counts as the stronger. Claim strength runs CS0 < CS1 < CS2 < CS3 < CS4. Each operation accepts only certain grades as input, and cannot produce a result above its own ceiling. The result carries that ceiling with it.

02

The checker rejects some steps before anything runs

There are ten operations, and you can chain them: one operation's output becomes the next one's input. Measure something, compare the options, rank them. Ten operations means a hundred possible two-step chains.

Fifteen of those hundred get refused. Refused before anything runs, so no simulation starts and nothing is computed, the same way a spellchecker underlines a word before you have finished the sentence.

Nine of the fifteen are the same mistake. The first operation gives you an observation: you measured traffic, you know what happened. The second one needs more than that. The operation that explains something needs a cause. The one that picks between options needs grounds for a decision. A measurement gives you neither, so the chain is refused.

To explain a cause you need a simulation where you varied the thing you think caused it. To pick between options you need a comparison of those options. Those are the steps that raise an observation to something an explanation or a decision can stand on.

9 blocked

The consumer excludes observational inputs.

From: CHECK, SEEK, MONITOR
To: EXPLORE, EXPLAIN, CHOOSE

4 blocked

Interpretation-grade output is not an accepted input grade.

From: IMAGINE, EXPLORE
To: EXPLAIN, CHOOSE

1 blocked

ACT and LRN have no defined grade join.

From: CHOOSE
To: ADAPT

1 blocked

CHOOSE excludes the learning/revision grade.

From: ADAPT
To: CHOOSE

100 ordered pairs of the ten operations, of which 15 are rejected by static type checking before execution.

03

Each operation states what it does not establish

Every operation carries two sentences written into its definition: what it settles, and what it does not. Both were fixed when the operation was specified, before any result existed to attach them to.

Take the operation that measures variation across many runs. It tells you how far apart the runs came out. It does not give you a confidence interval, and it will not tell you how likely an outcome is in the world. A spread across runs of one model is evidence about that model, not about the world.

CHECK

Establishes: Measure a specified state, field or spatial distribution.

Does not establish: CHECK does not supply quantitative uncertainty, and it does not convert a simulated measurement into a field observation.

SEEK

Establishes: Trace movement, routes and reachability through a network.

Does not establish: SEEK does not establish regular sampling, real-world observation or a causal trend.

MONITOR

Establishes: Observe conditions, events, execution state and changes over time.

Does not establish: MONITOR does not raise the evidence quality of a result, however often it is polled.

IMAGINE

Establishes: Specify a counterfactual scenario or interpret a conditional contrast.

Does not establish: IMAGINE does not establish the real-world causal effect that a stated counterfactual describes.

EXPLORE

Establishes: Execute a declared scenario over a specified simulation horizon.

Does not establish: Running EXPLORE does not supply the empirical warrant required for the strongest claim strength.

COMPARE

Establishes: Compute explicit differences between compatible alternatives.

Does not establish: A numerical difference does not establish cause or preference and does not itself choose an alternative.

EXPLAIN

Establishes: Examine causal attribution under explicit identification assumptions.

Does not establish: EXPLAIN does not establish the graph it was given. Its identification holds only under that graph and the assumptions submitted with it.

GAUGE

Establishes: Assess uncertainty and variability within a named method.

Does not establish: Descriptive spread is not a confidence interval or predictive uncertainty. CS is ordinal, not a probability.

CHOOSE

Establishes: Rank or search alternatives under declared objectives and constraints.

Does not establish: CHOOSE does not establish human preference, an exhaustive candidate set or a real-world optimum, and a recommendation is not approval.

ADAPT

Establishes: Propose evidence-bound revisions without silently applying them.

Does not establish: ADAPT does not establish relevance, a current belief, a posterior distribution or quantitative uncertainty, and it does not apply the change it proposes.

04

A frame compiles, or the compiler says why not

A frame is what matters to one person, written down in a form the platform can compute with. Someone might say: I care how long it takes my child to get to school, and I care about noise on my street.

Turning that into a computation can fail. Maybe the platform has no measure for one of the things they said. Maybe two of their concerns sit on scales that cannot sensibly be combined, the way you cannot add a temperature to a ranking. Maybe a community has said that a piece of information is not available for this use.

When that happens you do not get a number. You get a deliberation result: each thing the compiler could not turn into a computation, and why. Every compilation returns one or the other.

When a frame is applied to a finished result, every measure the person named gets one of six dispositions. Two of the six are refusals: the platform could not evaluate the measure, or it was blocked from doing so.

4 deliberation triggers: missing operationalization, prohibited claim, missing commensuration, sovereignty block. 6 dispositions when a frame reads a result: observed, observed as proxy, declared irrelevant, not observed, could not evaluate, sovereign blocked. 4 statuses a stated limit can take: binding, satisfied, violated, skipped.

None of this makes a result correct. It only limits what you are allowed to claim from a correct result.

Measured on 16 September 2026

Counted over the files tracked in the repository on 16 September 2026: Python under the platform package, Rust under the simulation core, Python under the MCP server, TypeScript under the browser client, and Python under the tests. These are physical lines, including blank lines and comments. Strip those out and the count would be lower.

263,940lines of Python in the platform packages
64,106lines of Rust in the simulation core
38,870lines of Python in the MCP server
30,934lines of TypeScript in the browser client
430,177lines of automated tests
1,617test files