Skip to content
← Documentation

docs/phenomenon-ledger.md


The phenomenon ledger

Phenomena, not domains. Each is scored twice and independently: can the ontology express it, and does the canonicalization preserve it? Conflating the two is how a fixable defect gets promoted into a demand for new primitives.

All rows marked measured were run against core with correctly typed Fact fixtures and real urn() subjects.


The ledger

# Phenomenon Encoding in the existing vocabulary Ontology Canonicalization Evidence
1 appearance first fact about a subject, at validAt measured
2 disappearance condition: unavailable, or measure = 0 measured
3 transformation successive condition/measure on one subject measured
4 replacement A unavailable, B takes the placement measured
5 ownership transfer exchange: from → to measured
6 accumulation rising measure series measured
7 depletion falling measure series measured
8 conservation sum over measure across subjects ⚠️ measured
9 split a → b, a → c measured
10 merge b → a, c → a measured
11 diffusion chained exchanges over distinct pairs ⚠️ measured
12 synchronization two subjects' series moving together inferred from 6/7
13 oscillation measure up then down measured

Ontology: 13/13. Canonicalization: 4 pass, 2 accidental, 7 fail.


The measurements

Time-varying quantities, read through three lenses:

oscillation   t0[x=1]      t1[x=1]      t2[x=1]        (should be 1,5,1)
accumulation  t0[x=1]      t1[x=1]      t2[x=1]        (should be 1,2,3)
depletion     t0[x=9]      t1[x=9]      t2[x=9]        (should be 9,4,0)
conservation  t0[x=10,y=0] t1[x=10,y=0] t2[x=10,y=0]   (should be 10,0 → 4,6)

Every series is flat. The world does not change, at any lens, ever.

Subject-varying phenomena, same harness:

split       (a->b, a->c)          2/2 survive
merge       (b->a, c->a)          2/2 survive
replacement (A unavail, B active) 2/2 survive
diffusion   (a->b then b->c)      2/2 survive

The partition, and why it is the important result

The pass/fail line is not arbitrary. It falls exactly where the identity law predicts:

Phenomena that vary in the subject-tuple survive. Phenomena that vary only in time are erased.

factIdentity omits validAt from every family. So anything distinguished by who it is about keeps its distinctness; anything distinguished only by when collapses to its first-encountered observation. Split, merge, replacement and diffusion pass not because they are handled, but because they happen to differ in a field identity retained.

This is a prediction the ledger could have falsified and did not. A phenomenon failing on the subject-varying side, or passing on the time-varying side, would have broken the law. None did.

The two ⚠️ rows are false passes

  • Conservation appears to hold: x + y = 10 at every lens. It holds because nothing moved. A frozen world conserves everything trivially. An invariant that passes because the state is unreachable is not evidence the invariant is enforced — and this is the most dangerous row in the table, because it reports success in exactly the register a reviewer would trust.
  • Diffusion survives only because each hop used a distinct pair. A diffusion that revisits a pair — the normal case — collapses under row 5.

What this does not show

The ledger scores expressibility and preservation. It does not score whether any projection renders these phenomena, and no row should be read as "the world displays change". Rows 9–11 pass at the fact layer alone.

It is also not exhaustive. Thirteen phenomena were chosen before measurement; they are not a proof that a fourteenth is covered, and the Enumeration Lemma applies here as everywhere — a boundary derived from what was tested bounds nothing about what was not.


Classification

Verdict
Ontology survived. 13/13 expressible with no new primitive, no new fact family, and no use of Window.
Canonicalization falsified. 7 outright failures and 2 false passes, all traced to a single omission in factIdentity.

One defect, one function, thirteen phenomena downstream. This is a canonicalization failure and must not be recorded as an ontology failure — the vocabulary already carries validAt on every fact; the identity function discards it.

Unfixed and recorded, per standing instruction. The skew tolerance question in identity-law.md is the open decision blocking the change.