docs/projection-layers.md
Ontology versus projection — and a withdrawn conclusion
Withdrawal first
general-projection.md concluded that the vocabulary is universal across
purposive systems. That was promoted before it was earned. Four hypotheses
were available and I collapsed them into one:
- universal only over purposive systems;
- the vocabulary sits one layer above a more primitive one;
- the mapping into the vocabulary is wrong;
- purposeless systems need a different semantic layer feeding the same engine.
Measurement now favours (2) and (3), and specifically refutes (1) — because the gap the counterexamples exposed also affects organizations.
1. The measured gap: subjects cannot cease
Constructed a metabolite consumed at 01:00, expressed the only way the vocabulary allows:
at 00:00 -> subjects=[glucose] facts=[placement]
at 01:00 -> subjects=[glucose] facts=[placement,measure]
at 02:00 -> subjects=[glucose] facts=[placement,measure]
Glucose is still placed in the cytosol an hour after being consumed. A fact
becomes true at validAt and, absent supersession, is true forever. Quantity can
fall to zero; the subject persists in every later world.
And measured in core/time.ts:
export type Window = { from: Instant; to: Instant };
Window is defined and used by nothing. The need was anticipated and never
wired.
Why this refutes "purposive is the boundary"
An employee leaves. A service is decommissioned. A contract expires. A task is cancelled. Organizations need cessation exactly as much as cells do. The organizational case has not hit the gap only because HQ's roster is a static register — not because purposive systems are exempt.
So the counterexamples were not showing a boundary of applicability. They were showing a general expressiveness gap that the reference domain happens not to exercise.
2. What invariant was each SubjectKind carrying?
The instruction was to find the lower-level invariant each specializes rather than conclude it is irreducible. Argued, not measured:
| Kind | Invariant it was carrying |
|---|---|
work |
a subject with bounded temporal extent |
resource |
a subject consumed by relations |
artifact |
a subject produced by relations, then persistent |
actor |
a subject that initiates relations |
environment |
a subject that contains other subjects |
agreement |
a constraint on future relations, with extent |
Reducing to dimensions:
- temporal extent — bounded or unbounded
- conservation role — consumed, preserved, or produced by relation
- causal role — initiates or receives
- containment — contains or is contained
- constraint — constrains future relations, or does not
The six kinds are combinations of five dimensions, and two of them are not
subject properties at all: work is extent, agreement is a relation with
modality.
The test that matters
Do the dimensions cover the systems the kinds failed on?
| Subject | extent | conservation | causal | containment | constraint |
|---|---|---|---|---|---|
| a planet | unbounded | preserved | mutual | contained in system | constrains via gravity |
| a metabolite | bounded | consumed | receives | contained in cell | none |
| an employee | bounded | preserved | initiates | contained in org | bound by contract |
All three are expressible. The dimensions cover non-purposive systems that
SubjectKind could not classify — which is direct evidence for hypothesis (2):
the vocabulary is one layer above a more primitive one, not a boundary.
3. Three layers, kept separate
| Layer | Question | Contents |
|---|---|---|
| Observed reality | what objectively exists | bodies, molecules, people, vehicles — no vocabulary at all |
| Canonical semantics | smallest information-bearing structures | identity · relation · magnitude · location · extent · provenance |
| Projection semantics | what the renderer actually requires | identity · relation · magnitude · location · time |
SubjectKind appears in none of them. It survived no falsification attempt
and the renderer never needed it: layout.ts and metric.ts ran on four
domains without consulting a kind. It is an organizational ontology, useful
for classification and reporting, and it is not projection ontology.
Projection requires fewer primitives than semantic interpretation — exactly
as suspected. condition, SubjectKind, actor, work, agreement are all
interpretation-layer; none reaches the engine.
4. Can the engine be falsified?
The strongest available test: two systems with identical topology and identical magnitudes that demand different spatial interpretation.
Constructed one graph a→b→c→d with weights 0.9/0.8/0.7 under four readings:
TRANSFORMATION a becomes b (a ceases; one substance over time)
TRANSFER a sends to b (both persist; a thing moves)
DEPENDENCY a needs b (both persist; nothing moves)
CAUSATION a triggers b (both persist; influence only)
Engine output, all four identical:
a:1.8155,0 | b:0.7044,0 | c:-0.5456,0 | d:-1.9742,0 stress=0.0000
Under transformation that rendering is false: it depicts four coexisting entities where reality has one substance in sequence. So the engine does produce a wrong picture from a correct graph.
But the failure is upstream, not in the engine
The four readings differ in exactly one respect — whether the relation terminates its source. That is temporal extent, which §1 measured as inexpressible. Given extent, the four are not the same input: at any lens, transformation has one extant subject and the others have four.
The engine appears semantic-independent given complete canonicalization. The falsification found here is a canonicalization gap, not an engine defect.
That is the stronger result, and it is conditional: it holds only if extent is the last missing primitive. That is not established. The honest status is that one falsification attempt located a gap upstream rather than in the engine, which is evidence for semantic-independence and not proof of it.
5. Classification
| Element | Verdict |
|---|---|
identity (SubjectRef) |
universal — survived every attempt |
relation (exchange) |
universal — measured on four domains |
magnitude (measure) |
universal |
location (placement) |
universal, with direction of derivation reversing by domain |
time (validAt/recordedAt) |
universal but incomplete — no extent |
provenance (Evidence) |
universal |
extent (Window) |
universal, and missing — defined, unused, needed by every domain |
SubjectKind |
specialized — five dimensions, not six categories; not projection ontology |
work, agreement |
derived — extent, and constrained relation |
condition (20) |
specialized — normative; interpretation layer only |
One candidate architectural pressure, recorded and not acted on: temporal
extent is expressible in no current primitive, is needed by organizations as much
as by cells, and Window already exists unused. Under the standing rule that is
the strongest case yet for extending the ontology — but it is one measurement,
and the rule asks for a phenomenon the vocabulary cannot represent, so the
first question is whether supersession can encode cessation adequately. That
question is open.