D557 - A measured answer is not a prop, and a region always was one

Status: assumed Date: 2026-09-04

The question

Status::propped_up decides whether a run measured the emulator as it stands or was helped along, and a title recorded as helped is kept out of the honest slot and ranked separately. It answered the question as "the default was loosened, or any function was answered by name at all".

D555 found the consequence: PPSA02664's honest record had been unreachable since 2026-08-26, because one learned fact was loaded and any override at all made the run an experiment. The question put to the operator was whether a learned measurement should count. The answer was that anything moving the work forward is worth doing.

The decision

Draw the line at provenance, not at existence. Oracle already grades how a fact was established, and the file the loop writes already records it - known = "guest-observed" sits in today's only learned entry. That grade was being thrown away at one line, Learned::policy(), so every derived answer arrived downstream indistinguishable from one somebody typed into a file.

An answer is now knowledge or a prop by where it came from:

Provenance Counts as Why
published, differential, measured knowledge nobody tuned it to move a guest
guest-observed prop somebody tried answers until the guest proceeded
assumed prop it rests on nothing

guest-observed on the prop side is the part worth arguing with, and it is deliberate: the guest proceeding is one bit of consistency, not correctness, and a run resting on one is an experiment. It is also why this change moves no number in the corpus today - the only learned entry there is guest-observed, so PPSA02664 is still an experiment when it is loaded. What is fixed is the mechanism; the first hardware-measured answer will land in the honest slot instead of being quietly demoted.

The hole found on the way

A region was never counted at all. Status.overrides came from policy.overrides.len(), and a region - which writes a base into guest memory behind a byte count nothing measured, as today's entry says in its own assumes - lives in a different map. A policy that wrote guest memory and answered nothing reported zero overrides and read as an unassisted run.

The count is now of symbols decided for, answers and regions together, once each. That is why this change cannot only ever loosen: a run can move from experiment to honest by being measured, and it can move the other way by being caught writing.

Where the provenance lives

Beside the answers, in StubPolicy::known, rather than inside them - the answer is what the guest observes and the provenance is what a report observes, and folding them together would put a field in the guest's path that nothing in the guest's path reads.

Two maps can drift, so a name with no provenance reads as assumed. Drift can therefore only ever call a run less honest than it was; the opposite default would let a policy become honest by losing information, which is the failure worth designing against. A guard asserts it.

What this does not establish

That any label is true. A measurement's provenance is its own account of itself, and nothing here checks it - a mislabelled entry is indistinguishable from a correct one by construction. What the design buys is that the label is set from the measurement that produced the answer rather than by whoever writes the policy file, so mislabelling takes a lie rather than an omission.

Nor that guest-observed belongs on the prop side. That is a judgement about what "propped up" should mean, recorded as assumed for exactly that reason. If a hardware sweep later shows the loop's guest-observed answers agreeing with the target, the grade to change is the entry's, not this line.

Status of the old rule

Not loosened away. propped_up fires on a strictly smaller set than before, so the guard that caught the D312 case asserts it still catches it: every answer resting on nothing measured props a run up exactly as it used to, and the region case it never saw now props one up too.