docs/universality-proof.md
Cognithamus — Universality Proof
Status: PROOF. Not implemented. Software is forgotten. The core is tested against five domains that share no vocabulary with each other or with engineering.
Under test — six concepts: World, Subject, Fact, Condition, Evidence, Time.
Four fact families: condition, measure, exchange, placement.
Six subject kinds: resource, work, actor, agreement, artifact, environment.
Twenty conditions across Availability, Progress, Capacity, Integrity,
Exposure, Economics.
Verdict: no seventh primitive is required. Four refinements within the existing concepts are required, and the test found all four. Each is recorded below with the domain that exposed it.
1. Hospital
Event. At 03:12 a ventilator in ICU bed 12 fails its self-test during use. The patient's care episode is moved to bed 9. The ICU is now at capacity.
| Concept | Instance |
|---|---|
| Subject | resource:hosp-a/icu/ventilator-12 |
| Subject | environment:hosp-a/icu |
| Subject | work:hosp-a/care-episode/adm-88231 |
| Subject | actor:hosp-a/nurse/j-okoro |
condition unavailable of resource:…/ventilator-12
validAt 03:12 evidence "self-test fault E14, device log"
exchange moved work:…/adm-88231
from environment:…/icu/bed-12 to environment:…/icu/bed-9
validAt 03:19 evidence "transfer record TR-4412"
placement actor:…/j-okoro at environment:…/icu since 03:12
evidence "shift roster 2026-07-31 night"
measure environment:…/icu metric occupied-beds value 12
limit 12 enforced evidence "bed board snapshot 03:20"
The saturation condition follows from the measure; the platform derives it, the connector does not assert it.
No new concept. Remaining connector vocabulary: ventilator, ICU, bed, care episode, fault code E14, transfer record — all in subtypes, evidence strings and metric names. None reaches the core.
⚠ Refinement 1 exposed here. exchange as specified is
{ from, to, observedAt, evidence } — it records between what but never
what moved. "The patient moved from bed 12 to bed 9" and "the oxygen feed was
rerouted from bed 12 to bed 9" are indistinguishable. exchange requires a
moved: SubjectRef. That is a missing field naming an existing core concept,
not a new primitive.
2. Manufacturing plant
Event. Line 3 halts at 14:02. A forming die has worn past tolerance. The production order behind it stops advancing, threatening a delivery commitment.
| Concept | Instance |
|---|---|
| Subject | resource:acme/plant-7/line-3 |
| Subject | artifact:acme/plant-7/die-4471 |
| Subject | work:acme/production-order/PO-99120 |
| Subject | agreement:acme/delivery/contract-5512 |
condition degraded of resource:…/line-3
validAt 14:02 evidence "SCADA tag L3_RATE = 0"
condition drifted of artifact:…/die-4471
validAt 14:02 evidence "CMM measured 4.02mm against spec 4.00 ±0.01"
condition stalled of work:…/PO-99120
validAt 14:02 evidence "no units completed since 14:02"
measure resource:…/line-3 metric throughput value 0 unit units/hour
limit 120 NOT enforced evidence "rated capacity, nameplate"
condition overcommitted of agreement:…/contract-5512
evidence "committed 40,000 by 08-15; run rate implies 31,200"
limit … NOT enforced is doing real work here: a rated line speed is an
aspiration, not a constraint the plant enforces. The world may report the number
but may not draw a capacity meter from it.
No new concept. Remaining vocabulary: die, SCADA, CMM, tolerance, production order, nameplate.
3. Shipping company
Event. Container MSKU7654321 has sat at Rotterdam since 26 July. Customs placed a hold because the declaration is incomplete. Demurrage is accruing past the free period.
| Concept | Instance |
|---|---|
| Subject | artifact:maersk/container/MSKU7654321 |
| Subject | environment:maersk/port/NLRTM |
| Subject | work:maersk/shipment/BL-88231 |
| Subject | artifact:maersk/customs-declaration/DEC-4412 |
| Subject | agreement:maersk/booking/BK-7781 |
placement artifact:…/MSKU7654321 at environment:…/NLRTM
since 2026-07-26T09:40Z evidence "gate-in scan GI-11928"
condition blocked of work:…/BL-88231
evidence "customs hold H2 raised 2026-07-28"
condition unverified of artifact:…/DEC-4412
evidence "HS code absent on line 3"
measure artifact:…/MSKU7654321 metric dwell value 5 unit days
evidence "gate-in 07-26 to now"
condition overspend of agreement:…/BK-7781
evidence "demurrage EUR 1,240 beyond 3 free days"
⚠ Refinement 2 exposed here, and it is the sharpest finding. placement was
specified as { actor: ActorRef; at: SubjectRef; since }. A container is not
an actor. Neither is a patient, a die, or a spacecraft. Locatedness is not a
property of participants — it is a property of things.
placement must be { subject: SubjectRef; at: SubjectRef; since }. This is a
widening of an existing family, not a new one — and it makes the core smaller,
because ActorRef disappears entirely and actor becomes purely a subject kind
with no residual special case anywhere.
No new concept. Remaining vocabulary: container, demurrage, bill of lading, HS code, gate-in, TEU.
4. University
Event. CS101 section A is over-enrolled for autumn term. The only qualified lab is fully booked, so a required practical cannot be scheduled, putting an accreditation requirement at risk.
| Concept | Instance |
|---|---|
| Subject | resource:univ/course-section/CS101-A |
| Subject | resource:univ/eng/lab-2 |
| Subject | actor:univ/staff/dr-shah |
| Subject | environment:univ/term/2026-fall |
| Subject | agreement:univ/accreditation/abet-2027 |
measure resource:…/CS101-A metric enrolment value 142
limit 120 enforced evidence "registrar snapshot 07-31"
condition overcommitted of resource:…/CS101-A
evidence "142 enrolled against an enforced cap of 120"
measure resource:…/lab-2 metric booked-sessions value 40
limit 40 enforced evidence "timetable 2026-fall"
condition saturated of resource:…/lab-2
condition blocked of work:univ/requirement/CS101-practical
evidence "no lab session available in term 2026-fall"
condition misconfigured of agreement:…/abet-2027
evidence "criterion 5 requires a practical component"
placement actor:…/dr-shah at resource:…/lab-2 since 2026-09-08T09:00Z
Note that unmonetised and vulnerable never appear. A domain not using
part of the taxonomy is not a failure — a closed vocabulary is only wrong if a
domain needs something it lacks.
No new concept. Remaining vocabulary: enrolment, section, term, accreditation criterion, timetable.
5. Space mission
Event. Reaction wheel 3 shows friction rising 12% per week. A science observation is deferred. The telemetry establishing this was true at the spacecraft 45 minutes before anyone on Earth could know it.
| Concept | Instance |
|---|---|
| Subject | resource:esa/juice/reaction-wheel-3 |
| Subject | work:esa/juice/observation/OBS-2291 |
| Subject | artifact:esa/juice/telemetry-frame/88213 |
| Subject | agreement:esa/dsn/pass-4471 |
| Subject | environment:esa/juice/phase/cruise |
condition degraded of resource:…/reaction-wheel-3
validAt 2026-07-31T04:15Z ← true at the spacecraft
recordedAt 2026-07-31T05:00Z ← knowable on Earth
evidence "TLM RW3_TRQ 0.8 mNm, +12%/wk, frame 88213"
measure resource:…/reaction-wheel-3 metric friction-torque
value 0.8 unit mNm
validAt 04:15 recordedAt 05:00
condition queued of work:…/OBS-2291
evidence "deferred to window 2026-08-03, planning cycle 118"
measure agreement:…/pass-4471 metric downlink-budget value 1.0
limit 1.0 enforced evidence "DSN allocation exhausted"
condition saturated of agreement:…/pass-4471
⚠ Refinement 3 exposed here. A single timestamp cannot express this. When something was true and when it became knowable are different instants, and the gap is 45 minutes here, weeks for a monthly batch, and seconds for a bedside monitor. Without both, "what did we know at time T" and "what was true at time T" collapse into one — which silently breaks replay, and would let a world claim foreknowledge it never had.
Facts require bi-temporality: validAt and recordedAt. Both are instants,
so this is a refinement of Time, already core — not a seventh primitive.
No new concept. Remaining vocabulary: reaction wheel, mNm, DSN pass, telemetry frame, planning cycle, light-time.
6. Refinement 4 — units and metrics must be open
Across the five domains the metrics are: occupied-beds, throughput,
dwell, enrolment, booked-sessions, friction-torque, downlink-budget.
The units are: beds, units/hour, days, students, sessions, mNm, fraction.
No closed platform list could contain these. Metric identifiers and units must be connector-declared — namespaced and registered in the manifest with a stated dimension — exactly as subject subtypes are.
The closure that matters is on conditions, not on metrics. A condition is a judgement about state and must be shared to prevent drift; a metric is a measurement and only needs to be declared and dimensioned. That asymmetry is the correct one, and this test is what makes it visible.
7. Verdict
| Domain | New primitive required? | Refinement exposed |
|---|---|---|
| Hospital | No | exchange needs moved |
| Manufacturing | No | — (confirmed enforced distinction) |
| Shipping | No | placement must be subject-at-subject |
| University | No | — (confirmed partial taxonomy use is fine) |
| Space mission | No | facts need validAt + recordedAt |
Four refinements, zero new primitives. Every one is a missing field or a widened type inside the six concepts:
exchange.moved: SubjectRef— Subject, already coreplacement.subjectreplacesplacement.actor— Subject, already corevalidAt/recordedAt— Time, already core- metric and unit identifiers are connector-declared — Evidence/provenance
The distinction being claimed
Software-engineering-independence would mean the core avoids naming repos and pods. Domain-independence is stronger: the core avoids naming any domain's furniture, and five domains sharing no vocabulary with one another expressed a real operational event in the same four sentences.
The strongest single piece of evidence is Refinement 2. placement was
actor-shaped because Cognithamus grew up watching agents move around a city.
A shipping container broke that assumption — and the fix made the core
smaller, not larger, by deleting ActorRef entirely. A primitive set that
gets simpler under adversarial load is one that was over-fitted before and is
converging now.
What is not proven
These five domains were chosen by me. That is a real limit: I selected the tests the core then passed. The honest claim is that the core survived five unrelated domains and got smaller doing it — not that no domain exists which could break it. The gap-reporting requirement in the connector contract is what converts that residual risk into future evidence rather than future surprise.
8. Consolidated core, after all proofs
core/
time Instant, Window. validAt and recordedAt.
evidence Citation, observer, provenance.
subject URN identity. 6 kinds, connector-declared subtypes.
condition 20 conditions in 6 families. Closed.
fact condition | measure | exchange | placement.
world Canonical state at an instant. No geometry.
Six modules. Four fact families. Zero domain vocabulary. Zero outgoing imports.