| What matters | How each concern is measured here | What the reading could evaluate |
|---|---|---|
| Minutes added to each delivery round | minutes added to a delivery | observed |
| The side streets taking the diverted trips | how full the busiest street is | observed |
| Somewhere to stop outside each door | loading zones per kilometer | not observed |
Frames
A frame is what matters to someone, written down under their name and used to read the result of a simulation. Two people can read the same result under different frames. A reading does not change the run, and the platform does not decide between readings.
Hover overTap a layer, a bracket, a person or the city for what it stands for.
Two people read the same run through their own frames. The run is a bridge closing for repairs, marked by the cross: with the bridge shut, traffic diverts onto the side streets where one of them crosses and the other has a shop door. That is why both of them care about it, and why they care differently. Each frame has three layers: what matters to the person, how the concern is measured, and the rules the platform computes with. Both frames here end up measuring the same thing and setting different limits on it. The brackets mark the layers at which two readings can disagree.
We do not all inhabit the same city
- A blind person crosses by the sound of the crossing signal and the curbs they have learned.
- A deaf person crosses by the lit walk sign and cannot hear a car turning behind them.
- A wheelchair user needs a dropped curb at every corner, and one missing curb cut ends the route.
- An older person plans a walk by where the benches are, and a longer detour can mean staying home.
- A parent walking children to school counts the crossings that have a crossing guard.
- A person with lupus, or on a medicine that makes skin burn in sunlight, plans each walk by where the buildings cast shade at that hour.
- A woman walking home after a late shift chooses streets by their lighting and by who is out.
- A night-shift worker lives in the city the buses serve after midnight.
- Someone who reads little of the local language finds the way by landmarks, and a detour sign does not help.
- A family that does not drive on the Sabbath walks to its place of worship, and a closure lengthens the walk.
- For a person sleeping in a doorway, a detour brings traffic and noise into the one quiet street they had.
- For a member of an Indigenous community, the sidewalks of some neighborhoods cover a sacred river, homes and burial grounds that the rest of the city paved over.
A delivery driver counts the cost of a closure in minutes, and a shop owner on the same corner counts it in customers. Each of these people can run a simulation of one street corner and perceive a different result in it, because each of them is asking a different question.
A simulation measures what its makers set it to measure. Whether ten more minutes on a journey is a nuisance, a lost afternoon of trade, or a sign that a crossing has become dangerous depends on whose question is being answered. A platform that reports one number as the answer has chosen whose question to answer without saying so. Whathappensify records each reading as a reading: whose priorities it states, which measure each priority is tied to, and which priorities the simulation had no measure for.
One result, three readings
Three people read the same bridge closure: the streets around a bridge that closes for repairs, simulated with the bridge open and again with it closed. The example run produced four measures: how full the busiest street is, minutes added to a delivery, vehicles per hour past a point and journey time on a route. Each person's frame was compiled and evaluated against that example when this page was built, and the last column is what the platform recorded.
ILLUSTRATIVE READINGS OF A FICTIONAL RESULT / COMPILED, EVALUATED AND COMPARED BY THE PLATFORM WHEN THIS PAGE WAS BUILT
Hover overTap a reading, a row or a disposition for how the platform produced it.
| What matters | How each concern is measured here | What the reading could evaluate |
|---|---|---|
| A route to the pharmacy with no steps | the tallest curb on a route | not observed |
| Traffic on the one crossing they can use | vehicles per hour past a point · proxy, losing the speed of the vehicles and the behavior of their drivers | observed through a proxy |
| Reaching the clinic within twenty minutes | journey time on a route | observed |
| What matters | How each concern is measured here | What the reading could evaluate |
|---|---|---|
| People walking past the shop | people walking past per hour | not observed |
| Vehicles queueing outside the shop | vehicles per hour past a point · proxy, losing whether the vehicles are stopped or moving | observed through a proxy |
| The closure ending before the holiday season | nothing here | not computed |
All three readings hold one claim in common: the bridge closure diverts trips onto the side streets.
Under Step-free crossings and not Trade at the door: a route to the pharmacy with no steps; reaching the clinic within twenty minutes. Where the readings differ: both read vehicles per hour past a point; Step-free crossings sets a limit of 600 and loses the speed of the vehicles and the behavior of their drivers, and Trade at the door sets a limit of 900 and loses whether the vehicles are stopped or moving.
Represented: Deliveries on time, Step-free crossings and Trade at the door. Affected and absent: residents of the side streets.
Neither frame is the official one. The platform does not settle the difference between them.
What a reading changes
A frame changes which parts of a result receive attention and how much each one weighs. The run it reads keeps its output, and the strength of its evidence stays the same: a result simulated under stated assumptions is still that after ten frames have read it. If a result lacks the measures, the detail about people, the resolution or the mechanisms a frame needs, the platform states what is missing or declines the reading. A frame records who stated it. It may also name a community it speaks for; the platform records that too, and says beside it that recording it does not confirm they speak for that community.
Frames are optional, and the platform says so: You do not need a Frame to create, run, publish, or share a simulation. A result that nobody has read under a frame says: No Frame readings have been published for this result.
How a frame is stated
You tell your assistant what matters to you and why. The platform's prompt is one sentence: What matters to you here, and why? The assistant writes the frame down, ties each concern to a measure the simulation has where one exists, and takes you through three steps.
- What matters and why Your concerns, in your words. A frame the assistant drafted says so at the top: Proposed by your assistant. Change anything.
- How each concern is measured here One row for each concern: a measure, a proxy with what it loses, or nothing here. You accept, change or reject each row.
- What could be evaluated What the reading could evaluate and what it could not, with the reason. Then you place it beside another reading, save it or share it.
Attaching a frame to an answer is your act. The assistant can draft a frame, compile it and propose it, and you decide in the browser. A published reading carries its author's signature, and the platform checks the signature before it stores the reading, so no one can publish a reading under someone else's name. The last section of this page lists which of these steps are built and which are still designs.
Compiling values into computable form
Three layers, and a compiler that hands back either something to compute with or a question for people to settle.
A person states what matters in words, and words are not numbers. To read a simulation under them, some of those words have to become measures, limits and rules, and each translation loses something. The frame compiler keeps every step on the record: the statement as it was made, the translation into something measurable with what it loses, and the form the platform computes with. When a statement cannot be translated without a decision that belongs to people, the compiler returns the decision to them and produces no reading in its place.
Three layers
Someone tells you what matters to them, in words. To read a simulation against those words you have to turn some of them into measures and limits, and you lose something every time you do. The compiler keeps all three stages: the sentence the person said, the measure it became together with the loss, and the form the machine runs. When turning a sentence into a measure would mean making a decision that belongs to people, the compiler hands that decision back and gives you no reading at all.
Hover overTap an element for what it records.
WORKED EXAMPLEthe wheelchair user / must be able to cross / the one crossing they can use · mandate
WORKED EXAMPLEm-crossing: the speed of the vehicles and the behavior of their drivers lost
WORKED EXAMPLEvehicles_per_hour <= 600 · MUST_NOT · NonNegotiable
Eight kinds of statement
Every claim is tagged with one of eight illocutionary forces. The term is J. L. Austin's: when you say something you are also doing something, and issuing a mandate does a different thing than telling a story. That tag decides what happens when a claim has no mapping. An assertion or a mandate left without a mapping stops the compiler and goes back to people, because it carries enforcement and the compiler cannot guess how you meant to enforce it. The other six go through with a warning.
A claim can also carry a logic modality, which says how you reason about it. Epistemic is about what is known or believed. Deontic is about what is required or permitted. Alethic is about what is necessary or possible. Force and modality vary on their own, so a mandate can be epistemic and a story can be deontic.
Hover overTap a statement type for what it does and what the compiler does when it has no mapping.
LOGIC MODALITY · A SECOND AXIS, OPTIONAL
How much meaning the mapping loses
Each mapping ties one or more claims to one thing the machine can run: a limit, an objective or a gate. It has to declare three things about itself. The loss profile names what it dropped: dimensions, simplifications, known failure modes. The validity envelope says how far to trust it, with a confidence value, the gaps in its coverage, and the assumptions that would break it. The provenance says who made it, how, when and why, and whether anyone has reviewed it. If a mapping declares no loss, it is claiming nothing was lost, and you can challenge that like any other claim.
If you dispute a translation you can contest the mapping on its own and leave the claim and the computation alone. The model refuses a mapping that names a method but not its author or its date, so you can always trace a contested translation back to whoever made it.
Hover overTap a part of the mapping for what it declares in this example.
The wheelchair user's mandate from the readings above, as the compiler produced it when this page was built.
the wheelchair user / must be able to cross / the one crossing they can use
a count of vehicles stands in for the danger of crossing
vehicles_per_hour <= 600
- the speed of the vehicles
- the behavior of their drivers
- a count of vehicles stands in for the danger of crossing
- a crossing with few but fast vehicles reads as safe
- 0.4
- the crossing itself was never observed
- a signal at the crossing would change what a count of vehicles says about danger
- the wheelchair user's assistant
- automated inference
- 2026-09-14
- the nearest measure the simulation offers
- unreviewed
HOW A MAPPING CAN BE MADE
WHERE ITS REVIEW STANDS
Limits, objectives and gates
A constraint states a limit: a measure, a comparison and a threshold, plus a deontic operator and a tier. The operator is must, must not, should or may. The tier says what can happen under pressure. A non-negotiable constraint never gets relaxed, a preferred one gets relaxed with a warning, an aspirational one gets relaxed freely. The model refuses the pairs struck through below. An obligation or a prohibition cannot be aspirational, and a permission cannot be non-negotiable.
A limit is a line a result must not cross. A weight is a price at which crossing it becomes acceptable. A right that the applicable authority recognizes is applied as a limit and never turns into a weight. The frame names who asserts the right and which source recognizes it. The platform applies it inside the frame; it does not establish that the right exists.
An objective names a measure, a direction, a value space and a weight above zero. Objectives are where trade-offs happen. A capability gate allows, denies or requires one of the ten reasoning operations under a stated condition.
Hover overTap a cell for why the model accepts or refuses the pair, or a gate action for what it does.
OPERATOR × TIER · STRUCK THROUGH: REFUSED BY THE MODEL
| non-negotiable | preferred | aspirational | |
|---|---|---|---|
| MUST | |||
| MUST NOT | |||
| SHOULD | |||
| MAY |
CAPABILITY GATES
Value spaces, scales and exchange rates
Every limit and objective refers to a value space: minutes, vehicles per hour, a count of people, a category of land use. Each value space declares its measurement scale, and the model defines the four scales by the arithmetic each one supports. Names are the strict case. The compiler refuses to combine a nominal space with anything else, contract or no contract, because names support equality and membership and nothing more.
Any two other value spaces combine only under a commensuration contract, which names both spaces, the exchange rate, who authorized it and the community behind it. Without one, the compiler returns a deliberation result naming the pair, and CHOOSE, the operation that ranks options, drops off the list of what can still run. Minutes do not become money, or a sacred place, unless someone says so on the record.
Hover overTap a scale for the arithmetic it supports, or a cell for what the compiler did with that pair.
TWO OBJECTIVES IN DIFFERENT VALUE SPACES · × REFUSED · ⇄ ONLY WITH A CONTRACT
| nominal | ordinal | interval | ratio | |
|---|---|---|---|---|
| nominal | ||||
| ordinal | ||||
| interval | ||||
| ratio |
space a · space b · exchange rate · who authorized it · the community backing it · the conditions it applies under
The compiler returns one result or the other
Compiling a frame returns either the executable representation or a deliberation result. The model refuses to build a result holding both, or neither, or one whose success flag disagrees with what it holds. A deliberation result tells you what the compiler declined to compute: the claims behind each trigger, who has standing to decide, the questions to put to them, and which operations can still run.
Four triggers produce one. Each tile below came from compiling a small frame when this page was built, and its card quotes the compiler's own question. A malformed frame is refused before either outcome, with an error naming the fault. Warnings travel with both outcomes.
Hover overTap a trigger for the compiler's own question, a warning or an error for its message, or a primitive for whether it can still run.
COMPUTATION STATUS
FOUR TRIGGERS · EACH PRODUCED BY COMPILING A FRAME WHEN THIS PAGE WAS BUILT
The river under the sidewalk is not reduced to a number here. It is left for deliberation.
PRIMITIVES THAT CAN STILL RUN WHEN TWO VALUE SPACES MEET WITHOUT A CONTRACT
REFUSED BEFORE EITHER OUTCOME
- A mapping names a claim the frame does not hold.
- A limit refers to a measure the platform does not know.
- Two objectives combine a nominal value space with another.
WARNINGS
- W-FRAME-001 A story or a question has no mapping.
- W-FRAME-002 A recommendation, a warning, a contest or a request has no mapping.
- W-FRAME-003 A value space was used without being declared, so the compiler declared it.
- W-FRAME-004 A limit refers to a measure that no simulation fills in by itself.
THE MODEL REFUSES TO CONSTRUCT
- a compilation result that holds both outcomes
- a compilation result that holds neither outcome
- a compilation result whose success flag disagrees with what it holds
- a prohibition at the aspirational tier
- a commensuration contract from a value space to itself
- a mapping made by a named method with no author or date
- a tombstoned frame with no governance principal, rationale or digest
- a skipped evaluation with no reason
- a frame shared with a community whose identifier is empty
Reading a result
Apply a frame to a finished result and you get a record of what it could and could not evaluate. Every measure the frame names gets one of six dispositions, so you can tell a concern the result answered from one it had no measure for. If the result offers a measure no part of the frame asked about, that is listed on its own, as available and not examined. Set aside as irrelevant has no path that records it yet, because the frame model gives you no way to declare it.
Each limit is checked against the result and comes back binding, satisfied, violated or skipped, and a skipped limit names its reason. When a non-negotiable must or must-not limit cannot be checked, the record marks compliance as not established and treats the option as non-compliant for the decision. It records a violation only when the evidence shows one.
The record also says who shaped the frame: which groups contributed claims, how many of those claims became computations, which sovereign restrictions apply, and which affected groups contributed nothing, along with the basis for asserting that absence.
Hover overTap a disposition, a status or a skip reason for what it records.
STEP-FREE CROSSINGS, EVALUATED AGAINST THE EXAMPLE RESULT
| Limit | Status | Recorded with it |
|---|---|---|
| how full the busiest street is, at most 1; a preference, preferred | satisfied | |
| the tallest curb on a route, at most 2; an obligation, non-negotiable | skipped | metric not found; compliance not established; non-compliant for the decision |
| vehicles per hour past a point, at most 600; a prohibition on crossing it, non-negotiable | violated | |
| journey time on a route, at most 1200; a preference, preferred | satisfied |
EVALUATION STATUS
WHY A LIMIT IS SKIPPED
Comparing frames
Two frames are compared layer by layer. Claims in one only, in the other only, or held by both in different words. Mappings the same way. Then in the executable form: gates, value spaces, limits and objectives. The comparison records which layers diverge, and it reports two kinds of disagreement about measures: one both frames read but each translates with a different loss, and one that only a single frame reads at all.
Across more than two frames, the comparison sorts claims into those every frame holds, those only one holds, and those some hold. Where frames with independent sources land on the same threshold, it records the agreement and weights it by how independent those sources are.
Hover overTap a band or a concern for what the comparison found.
Step-free crossings
Trade at the door
Step-free crossings loses the speed of the vehicles and the behavior of their drivers.
Trade at the door loses whether the vehicles are stopped or moving.
Across all three example frames: 1 claim held by every frame, and 3 held only by Deliveries on time, 3 held only by Step-free crossings and 3 held only by Trade at the door.
Whose frame it is
Every frame says who is asserting it. If it also claims to speak for a community, it records that, and the platform does not check it: the field is there so someone can ask the question later. A frame only speaks for a community when that community wrote the version or authorized it.
You identify a frame by what is in it, not by a name someone gave it. Take a digest of what the author wrote, a digest of what the compiler produced, and a note of which compiler turned one into the other: that is the frame's identity. The digests below belong to the worked example and were computed when this page was built. Signatures and governance fields sit outside that hash, so you can sign a frame without changing which frame it is.
You choose who can see it: keep it private, share it with named communities, or make it public. You also choose whether anyone may fork it. A fork has to say what it is arguing with: which layer, which elements, and why. Retiring a frame leaves it readable. Tombstoning is the heavier move, and the record keeps who in governance ordered it, their reason, and a digest of both.
Publishing a reading means signing it. The platform checks your signature against the keys you registered before it stores anything, and refuses a reading that is unsigned or whose signature does not check out.
Hover overTap a state, a digest or an access setting for what it means.
LIFECYCLE
THE TRANSITIONS THE PLATFORM ALLOWS
- draft → compiled
- draft → deliberation required
- compiled → draft
- compiled → published
- deliberation required → draft
- published → retired
- retired → tombstoned
IDENTITY OF THE WORKED EXAMPLE
6ab3397fd21d91ae…97aa093ad4ac56d9…01d151b29123f6e8…recorded with the frameoutside the content hashWHO CAN READ AND FORK A FRAME
A READING'S PUBLICATION
SOURCE FINDING AT ONE REVISION, NOT A DEPLOYMENT CERTIFICATION / THE EXAMPLE RESULT AND ITS FRAMES ARE FICTIONAL