
Reified causation ontology and stigmergic commons turning causal relations into signed, timestamped objects with canonical SHA‑256 identities, JSON‑LD encoding, conformance vectors, and glass‑box provenance.
Benchmark scores by the reference implementation, PrologAI, on the public training sets — pure symbolic induction, no LLM.
Each badge above is a claim, and every claim deserves a plain explanation. Here they are, row by row, written for a newcomer. (The label side of each ribbon is a neutral grey, matching the PrologAI and Mentova badges; the colored right side runs a single warm fade across the project's official eight-color palette - from bright gold-yellow at the first honor, down through the oranges and reds, to a deep crimson-black at the license. See BRANDING.md.)
Row 1 — The Honors
ARC-AGI-1 | 400/400=100% — ARC-AGI stands for the Abstraction and Reasoning Corpus for Artificial General Intelligence: a famous series of public tests designed to measure whether a machine can genuinely reason about puzzles it has never seen, rather than repeat patterns it memorized. This badge says that Causalontology's reference implementation, PrologAI, solved all 400 of 400 tasks in the first benchmark's public training set — a perfect score — using pure symbolic induction: readable logic rules discovered from the puzzle examples, with no Large Language Model (no LLM — the text-predicting technology behind modern chatbots) involved at all. The badge links to PrologAI so you can inspect the work.
ARC-AGI-2 | 120/120=100% — the same story for the second, harder generation of the benchmark: all 120 of 120 public tasks solved, a perfect score, by the same glass-box symbolic methods. (Honesty note, exactly as the fine print says: both scores are on the public training sets — the openly published task collections — stated precisely and without inflation.)
WORLD'S FIRST | REIFIED CAUSATION ONTOLOGY STANDARD — the centerpiece claim. To reify means to turn an idea into a thing you can hold, name, and examine — here, turning "A causes B" from a bare arrow into a full object carrying its timing, its strength, its conditions, and its evidence. An ontology is an organized inventory of what exists and how things relate. A standard is a published specification anyone can implement, in any programming language, with a shared test suite deciding what counts as correct. This badge claims Causalontology is the first to deliver all three in one: causation, made into first-class objects, as an open standard.
Row 2 — The Standard
CONFORMANCE VECTORS | 137 — a conformance vector is a published test case: an input and the exact result a correct implementation must produce. There are 137 of them in this repository (V01–V38 the re-frozen original suite, V39–V119 the 2.0.0 and 3.0.0 additions, V120–V137 the 4.0.0 additions), and the rule is simple: an implementation is Causalontology-conformant if and only if it passes every one. Stated honestly, because it was measured on 2026-07-27 and the label overstates it: only 38 of the 137 files (V01–V38) actually carry test data that a runner reads. The other 99 carry a name, a group, an expect key-list and a prose note — their operation field reads "see bindings/*/conformance runner" — so 137/137 is 137 checks, of which 38 are driven by the shared files and 99 are implemented per binding. The "agree without sharing a line of code" guarantee is therefore real for V01–V38 and, for the rest, rests on nineteen ports written to the same prose. Full measurement and the repair path: PUBLISHING.md.
OBJECT KINDS | 21 — everything in Causalontology is one of exactly twenty-one kinds of object: ten type-tier content kinds (occurrent, causal_relation_object, continuant, realizable, stratum, bridge, cross_stratal_seam, port, conduit, quality), seven token-tier content kinds (token_individual, token_occurrence, state_assertion, token_causal_claim, and the three 4.0.0 arrivals attitude, predicted_occurrence, prediction_error — a particular history, local by default), and four provenance kinds (assertion, enrichment, retraction, succession — the signed records saying who claims, adds, withdraws, or rotates what). Twenty-one kinds, no exceptions — a learnable vocabulary for all causal knowledge, at every level of description and for both laws and histories.
LOCKED DECISIONS | 30 — the specification records 30 design decisions as locked: settled on purpose, in writing, so builders can proceed without the ground shifting under them (the original twenty-seven of the 1.0.0 lineage, plus three locked in the 2.0.0 re-mint — the new kinds and token tier, the bridged-reachability and skips changes, and Principle P7's whole-word naming). The register has since been amended twice, each time by EXTENSION rather than override: the 3.0.0 amendment added three extension decisions, and the 4.0.0 amendment added five more. Changing one requires a formal, versioned process — not a quiet edit.
Row 3 — The Foundations
CANONICAL | RFC 8785 — an RFC (Request for Comments) is a published internet standard. RFC 8785 defines one exact, byte-for-byte way to write a piece of JavaScript Object Notation (JSON) data, so that the same information always produces the same bytes regardless of who wrote it or how they formatted it. Causalontology uses it so that identity can never depend on formatting accidents.
IDENTITY | SHA-256 — SHA-256 (the Secure Hash Algorithm, 256-bit) is a mathematical fingerprint function: feed it any content and it produces a unique fixed-length code, and any change to the content changes the code. In Causalontology, an object's identity IS the fingerprint of its content — which means two strangers anywhere on Earth who express the same causal claim automatically produce the same identifier, and their contributions merge with no coordinator.
SIGNED | ED25519 — Ed25519 is a fast, widely trusted digital signature scheme. A signature is mathematical proof that a specific keyholder — and nobody else — produced a record. In Causalontology every assertion, every added word, every retraction is signed, so every piece of knowledge in the commons has a verifiable author, and forging someone else's contribution is impossible.
JSON-LD | LINKED DATA — JSON-LD (JSON for Linked Data) is a way of writing ordinary JSON so that it is simultaneously valid linked data — the web-standard format that lets knowledge from different sources connect into one global graph (the technology family behind Wikidata). Causalontology data speaks that language natively, so it can plug into the wider knowledge ecosystem for free.
Row 4 — The Character
GLASS BOX | ALWAYS — a black box gives you an answer but hides its reasons; a glass box lets you see every step. Everything here is inspectable: every claim traces to a named rule and a signed author, and you can always ask "why?" and get a readable answer. This is the project's deepest commitment.
STIGMERGY | BUILT IN — stigmergy is coordination through the shared environment itself: the way a half-built wall shows the next worker exactly where the next brick goes. In Causalontology, incomplete knowledge is visible and queryable — a claim missing its timing, a term nobody has defined, two claims that contradict — so the store itself continuously announces what most needs doing next, and any contributor (human or machine mind) can ask for the most valuable gap and fill it.
EVIDENCE | ACTING > WATCHING — Causalontology grades its evidence, and the top grade is intervention: the source acted and observed what followed, like a child flipping a switch rather than staring at it. Acting breaks the ambiguity that haunts pure observation — a coincidence in the data cannot survive your own hand on the switch. Every piece of knowledge carries its evidence grade, so consumers can weigh doing above watching.
Row 5 — The Lineage
FLAGSHIP APPLICATION | MENTOVA PROLOGAI — PrologAI is the glass-box cognitive architecture that serves as Causalontology's reference implementation, and Mentova is the synthetic mind built on it — the first full application of this ontology, and one day the first machine mind to read the commons' gaps and contribute causal knowledge back. The badge links to Mentova.
BOOK | AGI'S MISSING LINK — this repository is the data-structure layer of the book Causalontology: AGI's Missing Link, whose thesis is that the component most conspicuously missing from today's AI is an explicit, learnable, inspectable model of cause and effect, acquired by acting on the world. The complete, lay-readable canon is right here: Causalontology_Standalone_Design_v27.txt.
LICENSE | ATTRIBUTION ALWAYS; NO PROFIT, NO PROBLEM — the project's license, in its own words: credit the source always, and using it without profit is never a problem. It is the friendly name for the Apache License 2.0 text (see LICENSE and NOTICE), one license covering everything here — the code, the data, the specification, and the architecture.
"Where The Universe is concerned, Nouns are but guests in the House of Verbs." — D. R. Dison
A verb-first noun-hosting ontology — reality is what happens, and things are its participants. A programming-language-neutral standard and a shared global commons for reified causation — the data-structure layer of the book Causalontology: AGI's Missing Link.
Causalontology's identity, stated from five angles — each the same claim, that this is a first-of-its-kind synthesis:
Reification / Timing / Learning. "Causalontology is the world's first synthesis of reified causal representation, temporal-mechanistic modeling, and interventional learning into a single glass-box unified ontology."
Noun / Verb Governance. "Causalontology is the world's first synthesis of a process-first causal calculus, a continuant noun backbone, and a realizable hinge between them — one foundational ontology governing the verbs and hosting the nouns."
The Bridge. "Causalontology is the world's first synthesis of symbolic causal reasoning, the philosophy of process, and embodied interventional learning, unified in a single glass-box ontology."
Scholarly Framing. "Causalontology is the world's first synthesis of process ontology, causal modeling, and constructivist learning into a single foundational ontology."
Succinctly. "Causalontology is the world's first synthesis of reification, temporal causation, and interventional learning in one unified, glass-box ontology."
And this repository adds a further first of its own: to our knowledge, the first specification to deliver reified, provenance-signed causation as a programming-language-neutral standard with a shared, stigmergic commons — offered, glass-box style, with its evidence: the specification, the conformance vectors, and the running implementations, all inspectable.
Every term above is explained for a newcomer in the master document: Causalontology_Standalone_Design_v27.txt — the complete, self-contained canon of this repository.
Causalontology is a verb-first noun-hosting ontology. Verb-first: the atomic building block is the occurrent — the happening — and the fundamental unit reifies the master verb, causes, itself; even knowing is verb-first, because knowledge enters by acting (intervention) or by active watching — where the viewer identifies with the actor and internally simulates the action, as when you learn a dance from an instructional video — rather than by passive watching, through which little enters (2.0.0 gives that internally simulated intervention its own simulation evidence grade, distinct from raw observation and physical intervention). Noun-hosting: things (continuants) are first-class citizens, but they are understood through what they do and what happens to them — Causalontology governs the verbs and hosts the nouns, with realizable entities as the hinge between them.
Causalontology's purest form is a specification, not a program. It separates the data structure of causation and its rules (programming-language-neutral) from any implementation (twenty exist, from Prolog to Kotlin/Native). Two familiar pictures, held together:
The reference implementation is PrologAI, a glass-box cognitive architecture, driving the synthetic mind Mentova.
Causalontology is now at version 4.0.0. It is a major version because it adds three new object kinds - by the standard's own rule, that is always major - but for anyone adopting it the step is gentle: everything is additive, and no record you already hold changes.
This release was earned, not guessed. The standard's discipline forbids adding capabilities from the armchair: the 4.0.0 change order sat gated until konnectome - the glass-box regional-brain build on this substrate - hit two real walls in a real build (2026-07-22): it could hold another agent's false, nested belief privately but could not share it as a signed, evidence-graded, content-addressed record, and its prediction loop could compute a prediction error each tick but could not record an expected occurrence as distinct from an observed one. Those two findings, with the owner's written authorization, opened the gate; the change order's remaining candidates stay held, each awaiting its own finding.
Three things arrive, all token-tier:
attitude records that a HOLDER - a modeled agent inside the ontology, never a cryptographic key - believes, desires, intends, knows, expects, or fears some content, referenced by identity. The content may be FALSE (an attitude records what a mind contains, not what is true, and a false belief raises no conflict - that mismatch IS the false belief, first-class and shareable), and it may be another attitude, so "A believes that B believes X" is a two-level structure. This is the substrate of theory of mind.predicted_occurrence is the sibling of token_occurrence that has not (yet) happened: the occurrent type a predictor expects, at a stated wall-clock or ordinal-tick window (exactly one dimension, never both), with an optional identity-bearing strength - the predicted probability, part of the predicted content itself. A prediction is NOT a claim of fact: a forecast and a report of the same content carry different identifiers.prediction_error pairs a prediction with the occurrence that did - or did not - fulfil it (an absent observed means nothing arrived), carrying the signed, graded discrepancy, read actual-minus-expected. The predictive loop becomes first-class and inspectable rather than a transient number.With these, the vocabulary grows from eighteen kinds to twenty-one (the token tier from four to seven), and the conformance suite grows from 119 vector files to 137 — all green in all nineteen bindings. Read that number correctly: it is 137 checks, of which 38 are driven by the shared vector files and 99 are implemented per binding, measured and explained in the badge note above and in PUBLISHING.md.
Migration from 3.0.0. Nothing you already have breaks. All three additions are additive and identity-preserving: because an object's identity is the fingerprint of only the fields it actually carries, every valid 3.0.0 record keeps its identifier byte-for-byte and stays valid under 4.0.0 - witnessed directly by vector V136, which re-pins the exact frozen 3.0.0 bytes under the 4.0.0 implementation. To adopt, a consumer need only add support for the three new kinds so that it can accept records that use them; a consumer that never encounters them needs no change at all. The 119 vectors of 3.0.0 are unchanged, and the 4.0.0 gate is simply their superset: the full 137-vector suite.
The normative source for all of this is the Standalone Design, Causalontology_Standalone_Design_v27.txt; the per-language rollout plan lives in docs/Causalontology_4_0_0_Release_Plan.txt.
Ten type-tier content kinds — pure, immutable, content-addressed (SHA-256 over RFC 8785 canonical bytes):
| Kind | Prefix | What it is |
|---|---|---|
| Occurrent | occurrent: |
a process or event type (a verb), optionally pitched at a stratum
|
| Causal Relation Object | causal_relation_object: |
the fundamental unit: a reified causal claim — causes, effects, mechanism, temporal window, modality, context, refines lineage, skips
|
| Continuant | continuant: |
a thing that endures (a noun) |
| Realizable entity | realizable: |
a disposition, function, or role — with an identity-bearing label
|
| Stratum | stratum: |
a level of description within a named stratification scheme |
| Bridge | bridge: |
a cross-stratal identity map: one coarse occurrent IS a set of finer ones |
| Cross Stratal Seam | cross_stratal_seam: |
3.0.0 — a managed jump across non-adjacent strata: endpoints, an honest mechanism_status (unmodeled vs absent), an optional drawn chain, and the coarsest-stratum home rule |
| Port | port: |
a typed interface borne by a continuant |
| Conduit | conduit: |
a typed connection from port to port — a pipe, or a computer |
| Quality | quality: |
a property type a thing can bear |
Seven token-tier content kinds — immutable, content-addressed, local by default (see spec/safety.md):
| Kind | Prefix | What it is |
|---|---|---|
| Token Individual | token_individual: |
a particular thing (THIS one) |
| Token Occurrence | token_occurrence: |
a particular happening, at absolute time |
| State Assertion | state_assertion: |
a particular value over a particular interval |
| Token Causal Claim | token_causal_claim: |
a particular causing, optionally under a covering law |
| Attitude | attitude: |
4.0.0 — what a HOLDER's mind contains: a modeled agent believes / desires / intends / knows / expects / fears a content object — the content may be false, may be another attitude (nesting), and the holder is never the signing key |
| Predicted Occurrence | predicted_occurrence: |
4.0.0 — an occurrence a predictor EXPECTS at a stated wall-clock or tick window — an expectation, never a report; optional identity-bearing strength (the predicted probability) |
| Prediction Error | prediction_error: |
4.0.0 — the comparator's signal, reified: a prediction paired with the occurrence that did (or did not) fulfil it, carrying the signed discrepancy, actual minus expected |
Four provenance kinds — signed (Ed25519), add-only records:
| Kind | Prefix | What it says |
|---|---|---|
| Assertion | assertion: |
who claims it, on what evidence (intervention > observation > simulation), how strongly, optionally citing token evidenced_by
|
| Enrichment | enrichment: |
who added which alias, participant, or taxonomy link — every word has an author |
| Retraction | retraction: |
a source's honest withdrawal of its own record — history never erased |
| Succession | succession: |
key rotation with lineage |
The load-bearing decision: content is separated from provenance, uniformly. The same claim from any number of sources is one object; contradictory claims coexist, each with signed provenance; trust is a consumer-chosen policy, never forced consensus. The whole store merges by set union — a Conflict-free Replicated Data Type (CRDT) by construction.
No single machine holds the commons, and by design none has to. Because every object's identifier is the SHA-256 hash of its own content and the store merges by set union with no coordinator — the same math as the InterPlanetary File System (IPFS), Git, and Dat — the commons is a peer-to-peer federation: many nodes, each holding some of the data, gossiping new objects and converging to the same whole regardless of order. This is now live and self-healing: nodes gossip each new record to their peers as it arrives and a background anti-entropy pass reconciles any two replicas by comparing Merkle roots and shipping only the delta, so the commons converges even when gossip is dropped or a peer restarts — every inbound item verified by hash and signature, no coordinator, token tier not federated by default. With phase four merged, the four-phase storage-and-federation build is now complete — a durable, self-healing, horizontally scalable commons that anyone can read from a light client, cache at the edge, or help host a slice of; what remains is adoption, not architecture.
spec/snapshot.md.GET /shards and resolvable across nodes, with phase-three federation running per shard. All four phases are delivered — the build is complete.
Full design: Part 21, "Commons Storage and Federation Design," in the canon (Causalontology_Standalone_Design_v27.txt).
{ "type": "occurrent", "label": "press_button", "category": "action" }
{ "type": "occurrent", "label": "light_on", "category": "state_change" }
{ "type": "causal_relation_object", "causes": ["occurrent:press_button"], "effects": ["occurrent:light_on"] }That third document — a degenerate causal_relation_object, just cause and effect — is already valid, and the store lists it as a gap inviting enrichment (GET /gaps?kind=missing_field). Someone (or some mind) later refines it with a temporal window and modality, and the gap visibly closes. That is stigmergy: the structure's own partiality guides the next contribution. Full walkthrough: examples/quickstart.md.
Honest install note at 4.0.0 (updated 2026-07-27). Fifteen of the nineteen bindings have a live 4.0.x artifact; fourteen of those fifteen are additionally proved installed — the published artifact fetched into a clean location and the suite run from outside any checkout with
CAUSALONTOLOGY_SPECfirst poisoned and then stripped. The one exception is Rust, whose library is sound but whose published conformance binary cannot run for a consumer, so it is deliberately not counted as proved. The table below records what is actually installable today; the full evidence is in PUBLISHING.md.The three defective releases of 2026-07-26 are all repaired. Python (PyPI), Dart (pub.dev) and the Go module went out shipping no schemas, locating them from a repository-relative path, with conformance runners that loaded repository source instead of the installed artifact — so the "fresh install 137/137" proofs measured the build machine, and installed for real the Python wheel scored 62/137. All three are now fixed on the live registries: PyPI serves a corrected 4.0.0 (the fix went into the existing release as a second, build-tagged wheel that pip prefers, and the two defective files were deleted, so the release now holds exactly one file); pub.dev serves 4.0.1 with 4.0.0 retracted; the Go proxy serves
bindings/go/v4@v4.0.1with v4.0.0 retracted. The differing version numbers are deliberate — pub.dev and the Go proxy hold one immutable file per version, so 4.0.0 could never be made to serve correct code there, while a PyPI release holds many.One live channel still has a known defect: crates.io. Rust 4.0.0's library is proven sound — it compiles the twenty-one JSON Schemas into the crate, so it never depended on a checkout. Note why, because the earlier wording here filed Rust under the wrong reason: crates.io ships only the
bindings/rustsubtree, never the repository, and Rust is safe because the schemas live inside that subtree, not because of whole-repository delivery. What is not sound at 4.0.0 is its conformance program, which panics for any registry consumer, and its README, which told people to run it. Both are fixed at 4.0.1 in this tree, and 4.0.1 is not published; crates.io serves the 4.0.0 binary and the 4.0.0 README today.The
v4.0.3tag serves Swift, Zig, Packagist (PHP), and the C++ source tarball, and is also thesource.tagin the LuaRocks rockspec. Swift, PHP and the C++ tarball were sound atv4.0.1because a tag really does deliver the whole repository tree; Zig was not, and was genuinely broken —zig fetchprunes the tarball to the.pathslist in the rootbuild.zig.zon,spec/was not on it, and a consumer received ten files and zero schemas.v4.0.3fixes that, vendors PHP's schemas so it no longer relies on the accident, and makes the C++ CMake install carry its own copy.Do not verify a published artifact against the
v4.0.0tag: it pins the specification-freeze commit64b1d1a, which predates the binding port, sobindings/rustthere declares 2.0.0 and carries seventeen schemas. The crate on crates.io was published frommainat43d58a6; PUBLISHING.md records the source commit of every live artifact it can, and says plainly which six it cannot. Earlier tags are left where they are and never moved, because a pushed tag is a public surface a consumer may already have pinned.One specification, and the 137 conformance checks are the thing that must not differ — 38 of them driven by the shared frozen vector files, per the badge note above and the measurement in PUBLISHING.md. Each binding publishes only after the full suite passes against the built artifact installed into a clean location, from outside the checkout, not against the source tree beside it — that distinction is the whole of what went wrong, and the
conformanceworkflow now gates both modes on every push. Four bindings have nothing live at 4.x — Haskell, Perl, R and Julia — and a fifth publication is outstanding: crates.io's corrected 4.0.1. R was submitted to CRAN on 2026-07-27 and is sitting in CRAN's incoming queue; Julia's registration pull request is open and contested. All nineteen bindings pass the suite locally, perdocs/Causalontology_4_0_0_Release_Plan.txt; what remains for those five acts is the owner's registry credentials or account, and — for CRAN and Julia only — a human reviewer.
| Language | Command |
|---|---|
| Python |
pip install causalontology (4.0.0 live and correct on PyPI, fresh-install verified 137/137 against the registry; the correction shipped inside the same 4.0.0 release as a build-tagged wheel and the defective files were deleted) |
| JavaScript / TypeScript |
npm install causalontology (4.0.0 live on npm, fresh-install verified 137/137 against the registry; typings included; 1.0.0 deprecated) |
| Rust |
cargo add causalontology (4.0.0 live on crates.io; the library is proven sound — the crate compiles the twenty-one schemas in with include_str! and cannot build without them, verified with the repository bind-mounted away and every file access traced. The 4.0.0 conformance binary cannot run for a registry consumer and the 4.0.0 README instructs people to run it; 4.0.1 fixes both and is unpublished. 1.0.0 yanked) |
| Java |
io.github.ai-university-aiu:causalontology:4.0.0 (live on Maven Central, verified 137/137 against the jar downloaded from repo1.maven.org, signature checked) |
| Kotlin/Native |
io.github.ai-university-aiu:causalontology-kotlin:4.0.0 (live on Maven Central, linuxX64 klib; signature checked and the 21 schemas confirmed compiled in) |
| C# / .NET |
dotnet add package causalontology (4.0.0 live on NuGet, fresh-restore verified 137/137 against the registry; 1.0.0 unlisted) |
| Ruby |
gem install causalontology (4.0.0 live on RubyGems, fresh-install verified 137/137 against the registry; 1.0.0 yanked) |
| PHP |
composer require causalontology/causalontology:^4.0 (v4.0.3 live on Packagist — mirrored automatically from the tag, so ^4.0 resolves there; v4.0.1 was verified by a real composer require and v4.0.3 vendors the twenty-one schemas so the binding no longer depends on Composer shipping the whole repository. Earlier tags remain on the index) |
| Dart |
dart pub add causalontology (4.0.1 live on pub.dev, fresh-resolve verified 137/137 against the registry; 4.0.0 shipped without its schemas and is retracted, so ^4.0.0 now resolves to 4.0.1) |
| Elixir / Erlang |
{:causalontology, "~> 4.0"} (4.0.0 live on Hex, fresh-resolve verified 137/137 against the registry; 1.0.0 retired) |
| Lua |
luarocks install causalontology (4.0.0-1 live on LuaRocks, fresh-install verified 137/137 against the registry; 1.0.0 remains listed) |
| Swift |
.package(url: "https://github.com/ai-university-aiu/causalontology", from: "4.0.3") (4.0.x via the v4.0.3 tag; verified 137/137 at v4.0.1 and sound there, because a tag really does deliver the whole repository tree. Swift vendors nothing and derives its schema path from #filePath, so move or delete the SwiftPM checkout and you must set CAUSALONTOLOGY_SPEC. Listed on the Swift Package Index — PackageList PR #14440 merged 2026-07-17) |
| Go |
go get github.com/ai-university-aiu/causalontology/bindings/go/v4@v4.0.1; import .../bindings/go/v4/causalontology. v4.0.1 is live and verified — 137/137 from a module fetched fresh from proxy.golang.org with checksum verification on. v4.0.0 shipped without its schemas and is retracted: it no longer appears in go list -m -versions, and anyone still on it is shown the reason (the /v2 module stays live for 2.0.x; the v1 module line is deprecated and retracted via bindings/go/v1.0.1) |
| Zig |
zig fetch --save https://github.com/ai-university-aiu/causalontology/archive/refs/tags/v4.0.3.tar.gz, then dep.module("causalontology") and @import("causalontology") (4.0.x via the v4.0.3 tarball. v4.0.1 was broken: zig fetch prunes the tarball to the root manifest's .paths list, spec/ was not listed, and a consumer got ten files and zero schemas — validateSchema died with error.SpecDirNotSet. At v4.0.3 the fetched package is 209 files with all 21 schemas and all 137 vectors, and the schemas are compiled into the library besides, so no setSpecDir call is needed at all. A package hash covers only the pruned file set, so re-run zig fetch --save against the new tag rather than expecting an in-place fix; hash recorded in PUBLISHING.md) |
| C++ | build from the v4.0.3 source tarball with CMake (4.0.x via the v4.0.3 tag; there is no central registry claimed. The tarball is the whole repository, so spec/schema arrives with it, and at v4.0.3 cmake --install also copies the twenty-one schemas to <prefix>/share/causalontology/spec/schema — at v4.0.1 it installed zero, so a find_package consumer could not validate. The vcpkg and Conan ports are still open at 2.0.1, both blocked only on a Contributor License Agreement) |
Not installable yet, in any version at 4.x: Haskell, Perl, R and Julia. All four are conformant in this repository and pass 137/137 locally; each waits on a registrar rather than on code. R was submitted to CRAN on 2026-07-27 and is in the incoming queue; the other three are described in PUBLISHING.md.
Where the 4.0.0 rollout stands, as of 2026-07-27. Fifteen of the nineteen bindings have a live 4.0.x artifact: Python (PyPI 4.0.0), JavaScript (npm 4.0.0), Rust (crates.io 4.0.0 — library sound, conformance binary broken), Java and Kotlin/Native (Maven Central 4.0.0), C# (NuGet 4.0.0), Ruby (RubyGems 4.0.0), Elixir (Hex 4.0.0), Lua (LuaRocks 4.0.0-1), Dart (pub.dev 4.0.1), Go (bindings/go/v4@v4.0.1), and PHP, Swift, Zig and the C++ source tarball via the v4.0.3 git tag. Four have nothing at 4.x: Haskell (Hackage), Perl (CPAN), R (CRAN — submitted 2026-07-27, in CRAN's incoming queue) and Julia (General registration pull request #161292 open and contested; it registers v1.0.0, and Julia requires versions to land in order). A fifth publication is outstanding on a channel that is already live: crates.io's corrected 4.0.1. The three releases that went out defective on 2026-07-26 — Python, Dart and the Go /v4 module — were all repaired the next day. The honest state, why the earlier proofs were wrong, and which commit each live artifact was actually built from, is in PUBLISHING.md, along with the six live artifacts whose build commit was never recorded and the measured list of published artifacts still carrying the retracted "137 vectors" phrasing — which is almost all of them, including all nineteen conformance runners at the v4.0.3 tag that four of these channels read from.
The superseded releases stay where they are, and the rules differ by registry: 1.0.0 is yanked on PyPI, crates.io and RubyGems, deprecated on npm, retired on Hex, unlisted on NuGet, retracted on pub.dev, and retracted for the Go /v1 line; LuaRocks has no yank, Packagist mirrors every git tag, and Maven Central is immutable, so the older releases simply remain listed on those three. The Go /v2 module stays live for 2.0.x. Reach, stated precisely: Kotlin, Scala, Clojure, and Groovy consume the Java artifact from Maven Central as-is; Deno and Bun consume the npm package directly; and any WebAssembly host (browsers, edge workers, wasmtime embeddings) can use the WASM core attached to the latest release. Also in community review, and two majors behind: vcpkg (#52892) and Conan (#30612) for C++, both at 2.0.1 and both blocked only on a Contributor License Agreement. Anything still missing (OCaml, Scala Native, Fortran, COBOL if you dare, ...) remains the open invitation: the 137 frozen checks are the gate — 38 of them driven by the shared vector files, the rest ported per language; see the measurement in PUBLISHING.md. Details and status: PUBLISHING.md.
causalontology/
Causalontology_Standalone_Design_v27.txt the canon (complete, lay-readable)
spec/ normative core, identity, semantics, provenance,
store, safety; schema/ = 21 JSON Schemas + JSON-LD
context + Protobuf + the OWL mapping (BFO/RO/PROV)
conformance/ the 137 vector files (specification 4.0.0,
whole-word baseline) + the re-freeze tool; 38 of
them carry test data and 99 are named stubs — see
"What 137/137 counts" below
bindings/ nineteen bindings, one directory each: cpp · csharp
· dart · elixir · go · haskell · java · javascript
· julia · kotlin · lua · perl · php · python · r ·
ruby · rust · swift · zig — all conformant, with
the TypeScript typings inside the javascript
package and the WebAssembly core built from the
Rust crate; PrologAI is the reference
store/server/ Tier A store (live), SPARQL subset, N-Triples
export, reputation, Tier B federation, Tier C
offline replication + the test suites
store/stigmergy/ the contribution dashboard (served at /dashboard)
examples/ the quickstart + the Mentova gardener (the first
synthetic mind contributing to the commons)
dumps/example/ a small worked snapshot dump, verifiable offline
.github/workflows/ conformance.yml carries 23 Continuous Integration
(CI) jobs: every implementation, every push
archive/ superseded editions of versioned documents
GOVERNANCE.md · PUBLISHING.md · LICENSE · DATA_LICENSE · NOTICE
An implementation is Causalontology-conformant if and only if it passes the full suite for the specification version it declares — 137 checks, of which 38 are driven by the shared files in conformance/vectors/ and 99 are implemented per binding against a named requirement (measured 2026-07-27; see PUBLISHING.md and conformance/README.md). That rule is how twenty implementations in twenty languages — Prolog, Python, JavaScript, Rust, Java, Swift, Go, C#, Ruby, PHP, Dart, Elixir, Haskell, Perl, R, Lua, C++, Zig, Julia, and Kotlin/Native — agree without sharing a line of code — down to the length of a month (2,629,746 seconds) and the ranking of a resolve().
What
137/137counts, measured 2026-07-27 and stated plainly. It counts checks, not vector files. Every one of the nineteen runners reads 38 of the 137 files — exactly V01–V38 — and no more; Rust and Haskell open all 137 but only to read the label they print. The reason is in the files themselves: all 99 from V39 to V137 carry noinput, nogiven, nosteps, and anoperationfield that reads"see bindings/*/conformance runner". They are named stubs with anexpectkey-list and a prose note. So the honest headline is 137/137 conformance checks passed — 38 driven by the frozen shared vectors, 99 implemented per binding; a stricter honest figure is 26, the number of files whose bytes change any verdict. The claim above therefore holds unconditionally for V01–V38, and for the rest rests on nineteen ports written to the same prose note. Only the Rust runner notices a vectors directory with files missing. The measurement, and the cheapest repair, are in PUBLISHING.md.
Specification 4.0.0 status (the doxastic and predictive additions). The suite is now 137 vector files (V01–V38 re-frozen unaltered in meaning under the whole-word schemes of Principle P7, V39–V107 the 2.0.0 additions, V108–V119 the 3.0.0 additions, V120–V137 the 4.0.0 additions). All nineteen bindings now pass all 137 checks, each under its own job in
conformance.yml, in both source-tree and installed-artifact modes — the 3.0.0 delta folded in first where it was missing, then the 4.0.0 delta on top, perdocs/Causalontology_4_0_0_Release_Plan.txt. The38/38milestones further below are historical: they record the completed 1.0.0 effort and are left as written rather than restated. Registry state as of 2026-07-27: fifteen of the nineteen bindings have a live 4.0.x artifact, fourteen of those are additionally proved installed (Rust is the exception), and four have nothing at 4.x — Haskell, Perl, R (submitted to CRAN, awaiting a reviewer) and Julia (registration contested). See PUBLISHING.md for the per-channel evidence.
The reference implementation is now gated, not merely asserted. PrologAI is listed first among the bindings and named the reference implementation, so it is now held to the same standard as the rest: it is checked in Continuous Integration (CI — the practice of automatically building and testing every change) by its own prolog job in conformance.yml. That job checks out PrologAI beside this standard, installs SWI-Prolog, and runs PrologAI's own canonical harness against this repository's canonical conformance/vectors/, passing only when all 137 (V01–V137) pass. Because the harness runs against the standard's own vectors, the reference implementation can no longer silently drift from the specification: it earns the label by passing the same vectors as every other binding, under its own CI gate — one of the 23 jobs in that workflow — rather than by prose alone. (PrologAI shipped its own 4.0.0 port — causal_core 1.1.0 — so this gate now covers the full V01–V137 at specification 4.0.0.)
causalontology-py: the second implementation — 38/38 conformance vectors pass; language independence is provendemand_supply from real read telemetry), value-ranked GET /gaps, and the contribution dashboard at /dashboard — the commons guides its own growth; the MVP is complete
GET|POST /sparql (documented SELECT subset) + GET /export/triples (N-Triples) + the OWL mapping to BFO / RO / PROVGET /sync/export + POST /sync/pull: two live stores converge by signed set-union; 11/11 checks
replicate.py: offline bundles, order-independent merge (the CRDT laws proven 8/8), tamper evidence from content addresses and signatures aloneGET /reputation?source=: glass-box, computed from the signed history, succession-aware/gaps, intervenes (its own hand on the switch), induces the missing fields, signs with Ed25519, contributes, and the gap closes: 11/11 checks — the first synthetic mind gardening the commons
wasm32 (schemas embedded, no filesystem); 6/6 cross-checks in Node prove it byte-identical with the JS binding — one audited core for every hostv1.0.0 with a GitHub Release carrying the built artifacts; SwiftPM and Go modules live via tags; and the distribution campaign that followed: thirteen channels live — PyPI, npm, crates.io, Maven Central (jar + Kotlin klib), NuGet, RubyGems, Hex, LuaRocks, Packagist, pub.dev, SwiftPM, Go, Zig — with Julia, vcpkg, and Conan in community review (PUBLISHING.md)/v2 / Zig git-tag channels republished at 2.0.x (PUBLISHING.md)store/server/snapshot.py), with a detached SHA-256 checksum and signature — anyone can verify every byte offline and stand up a mirror by idempotent, tamper-evident union-merge, token tier excluded by default; 26/26 snapshot checks pass
store/server/federation.py) — every inbound object verified by hash and every record by signature before merge, add-only, no coordinator, token tier not federated by default; 26/26 federation checks pass
store/client/light_client.py); immutable content is served with immutable cache headers and an ETag equal to its identifier, cacheable forever behind any CDN, while mutable views are not; and a partial node holds only a hash-prefix slice, advertised on GET /shards and resolvable across nodes, with phase-three federation running per shard (store/server/sharding.py); 25/25 scale checks and 14/14 light-client checks pass
prolog job in conformance.yml checks out PrologAI beside this standard, installs SWI-Prolog, and runs PrologAI's own harness against this repository's canonical conformance/vectors/ — passing only on 137/137 (V01–V137), since PrologAI shipped its own 4.0.0 port as causal_core 1.1.0. (The gate was added at 119/119 and moved to 137/137 with the 4.0.0 port.) The reference implementation is now held to the same gate as every other binding, not merely asserted in prose, and cannot silently drift from the specification. Twenty implementations in twenty languages, and conformance.yml now carries 23 jobs.
Semantic Versioning; the conformance suite versioned in lock-step; extending any closed enumeration is a MAJOR change; releases gated in CI on the vectors; an open change process with conformance impact statements. See GOVERNANCE.md.
Before the public launch, contributions land through the change process in GOVERNANCE.md. The contribution model of the commons itself is stigmergic: ask the store for the most valuable gaps, close one, sign your work. Vocabulary discipline: resolve before you mint — and, per Principle P7, whole words, never abbreviations.
"The attribution always; no profit, no problem license." — one license for everything in this repository and its commons: the code, the data, the specification, and the architecture. It is the friendly name for the Apache License 2.0 text, the same license carried by PrologAI and Mentova: attribution (the NOTICE file) is always required, and use without profit is never a problem. The data license (DATA_LICENSE) carries the same terms, by the owner's decision of 2026-07-13.
D. R. Dison. Causalontology: AGI's Missing Link — the Standalone Standard and the Shared Commons, Version 27 (the 4.0.0 Edition), specification 4.0.0. AI University (AIU), 2026. github.com/ai-university-aiu/causalontology
D. R. Dison — Founder of AIU (Artificial Intelligence University), Creator and Owner of PrologAI and Mentova. ORCID 0009-0001-9246-5758 · linkedin.com/in/d-r-dison
"Causalontology will be the Wikipedia and Wikidata of AGI." — D. R. Dison
Benchmark scores by the reference implementation, PrologAI, on the public training sets — pure symbolic induction, no LLM.
Each badge above is a claim, and every claim deserves a plain explanation. Here they are, row by row, written for a newcomer. (The label side of each ribbon is a neutral grey, matching the PrologAI and Mentova badges; the colored right side runs a single warm fade across the project's official eight-color palette - from bright gold-yellow at the first honor, down through the oranges and reds, to a deep crimson-black at the license. See BRANDING.md.)
Row 1 — The Honors
ARC-AGI-1 | 400/400=100% — ARC-AGI stands for the Abstraction and Reasoning Corpus for Artificial General Intelligence: a famous series of public tests designed to measure whether a machine can genuinely reason about puzzles it has never seen, rather than repeat patterns it memorized. This badge says that Causalontology's reference implementation, PrologAI, solved all 400 of 400 tasks in the first benchmark's public training set — a perfect score — using pure symbolic induction: readable logic rules discovered from the puzzle examples, with no Large Language Model (no LLM — the text-predicting technology behind modern chatbots) involved at all. The badge links to PrologAI so you can inspect the work.
ARC-AGI-2 | 120/120=100% — the same story for the second, harder generation of the benchmark: all 120 of 120 public tasks solved, a perfect score, by the same glass-box symbolic methods. (Honesty note, exactly as the fine print says: both scores are on the public training sets — the openly published task collections — stated precisely and without inflation.)
WORLD'S FIRST | REIFIED CAUSATION ONTOLOGY STANDARD — the centerpiece claim. To reify means to turn an idea into a thing you can hold, name, and examine — here, turning "A causes B" from a bare arrow into a full object carrying its timing, its strength, its conditions, and its evidence. An ontology is an organized inventory of what exists and how things relate. A standard is a published specification anyone can implement, in any programming language, with a shared test suite deciding what counts as correct. This badge claims Causalontology is the first to deliver all three in one: causation, made into first-class objects, as an open standard.
Row 2 — The Standard
CONFORMANCE VECTORS | 137 — a conformance vector is a published test case: an input and the exact result a correct implementation must produce. There are 137 of them in this repository (V01–V38 the re-frozen original suite, V39–V119 the 2.0.0 and 3.0.0 additions, V120–V137 the 4.0.0 additions), and the rule is simple: an implementation is Causalontology-conformant if and only if it passes every one. Stated honestly, because it was measured on 2026-07-27 and the label overstates it: only 38 of the 137 files (V01–V38) actually carry test data that a runner reads. The other 99 carry a name, a group, an expect key-list and a prose note — their operation field reads "see bindings/*/conformance runner" — so 137/137 is 137 checks, of which 38 are driven by the shared files and 99 are implemented per binding. The "agree without sharing a line of code" guarantee is therefore real for V01–V38 and, for the rest, rests on nineteen ports written to the same prose. Full measurement and the repair path: PUBLISHING.md.
OBJECT KINDS | 21 — everything in Causalontology is one of exactly twenty-one kinds of object: ten type-tier content kinds (occurrent, causal_relation_object, continuant, realizable, stratum, bridge, cross_stratal_seam, port, conduit, quality), seven token-tier content kinds (token_individual, token_occurrence, state_assertion, token_causal_claim, and the three 4.0.0 arrivals attitude, predicted_occurrence, prediction_error — a particular history, local by default), and four provenance kinds (assertion, enrichment, retraction, succession — the signed records saying who claims, adds, withdraws, or rotates what). Twenty-one kinds, no exceptions — a learnable vocabulary for all causal knowledge, at every level of description and for both laws and histories.
LOCKED DECISIONS | 30 — the specification records 30 design decisions as locked: settled on purpose, in writing, so builders can proceed without the ground shifting under them (the original twenty-seven of the 1.0.0 lineage, plus three locked in the 2.0.0 re-mint — the new kinds and token tier, the bridged-reachability and skips changes, and Principle P7's whole-word naming). The register has since been amended twice, each time by EXTENSION rather than override: the 3.0.0 amendment added three extension decisions, and the 4.0.0 amendment added five more. Changing one requires a formal, versioned process — not a quiet edit.
Row 3 — The Foundations
CANONICAL | RFC 8785 — an RFC (Request for Comments) is a published internet standard. RFC 8785 defines one exact, byte-for-byte way to write a piece of JavaScript Object Notation (JSON) data, so that the same information always produces the same bytes regardless of who wrote it or how they formatted it. Causalontology uses it so that identity can never depend on formatting accidents.
IDENTITY | SHA-256 — SHA-256 (the Secure Hash Algorithm, 256-bit) is a mathematical fingerprint function: feed it any content and it produces a unique fixed-length code, and any change to the content changes the code. In Causalontology, an object's identity IS the fingerprint of its content — which means two strangers anywhere on Earth who express the same causal claim automatically produce the same identifier, and their contributions merge with no coordinator.
SIGNED | ED25519 — Ed25519 is a fast, widely trusted digital signature scheme. A signature is mathematical proof that a specific keyholder — and nobody else — produced a record. In Causalontology every assertion, every added word, every retraction is signed, so every piece of knowledge in the commons has a verifiable author, and forging someone else's contribution is impossible.
JSON-LD | LINKED DATA — JSON-LD (JSON for Linked Data) is a way of writing ordinary JSON so that it is simultaneously valid linked data — the web-standard format that lets knowledge from different sources connect into one global graph (the technology family behind Wikidata). Causalontology data speaks that language natively, so it can plug into the wider knowledge ecosystem for free.
Row 4 — The Character
GLASS BOX | ALWAYS — a black box gives you an answer but hides its reasons; a glass box lets you see every step. Everything here is inspectable: every claim traces to a named rule and a signed author, and you can always ask "why?" and get a readable answer. This is the project's deepest commitment.
STIGMERGY | BUILT IN — stigmergy is coordination through the shared environment itself: the way a half-built wall shows the next worker exactly where the next brick goes. In Causalontology, incomplete knowledge is visible and queryable — a claim missing its timing, a term nobody has defined, two claims that contradict — so the store itself continuously announces what most needs doing next, and any contributor (human or machine mind) can ask for the most valuable gap and fill it.
EVIDENCE | ACTING > WATCHING — Causalontology grades its evidence, and the top grade is intervention: the source acted and observed what followed, like a child flipping a switch rather than staring at it. Acting breaks the ambiguity that haunts pure observation — a coincidence in the data cannot survive your own hand on the switch. Every piece of knowledge carries its evidence grade, so consumers can weigh doing above watching.
Row 5 — The Lineage
FLAGSHIP APPLICATION | MENTOVA PROLOGAI — PrologAI is the glass-box cognitive architecture that serves as Causalontology's reference implementation, and Mentova is the synthetic mind built on it — the first full application of this ontology, and one day the first machine mind to read the commons' gaps and contribute causal knowledge back. The badge links to Mentova.
BOOK | AGI'S MISSING LINK — this repository is the data-structure layer of the book Causalontology: AGI's Missing Link, whose thesis is that the component most conspicuously missing from today's AI is an explicit, learnable, inspectable model of cause and effect, acquired by acting on the world. The complete, lay-readable canon is right here: Causalontology_Standalone_Design_v27.txt.
LICENSE | ATTRIBUTION ALWAYS; NO PROFIT, NO PROBLEM — the project's license, in its own words: credit the source always, and using it without profit is never a problem. It is the friendly name for the Apache License 2.0 text (see LICENSE and NOTICE), one license covering everything here — the code, the data, the specification, and the architecture.
"Where The Universe is concerned, Nouns are but guests in the House of Verbs." — D. R. Dison
A verb-first noun-hosting ontology — reality is what happens, and things are its participants. A programming-language-neutral standard and a shared global commons for reified causation — the data-structure layer of the book Causalontology: AGI's Missing Link.
Causalontology's identity, stated from five angles — each the same claim, that this is a first-of-its-kind synthesis:
Reification / Timing / Learning. "Causalontology is the world's first synthesis of reified causal representation, temporal-mechanistic modeling, and interventional learning into a single glass-box unified ontology."
Noun / Verb Governance. "Causalontology is the world's first synthesis of a process-first causal calculus, a continuant noun backbone, and a realizable hinge between them — one foundational ontology governing the verbs and hosting the nouns."
The Bridge. "Causalontology is the world's first synthesis of symbolic causal reasoning, the philosophy of process, and embodied interventional learning, unified in a single glass-box ontology."
Scholarly Framing. "Causalontology is the world's first synthesis of process ontology, causal modeling, and constructivist learning into a single foundational ontology."
Succinctly. "Causalontology is the world's first synthesis of reification, temporal causation, and interventional learning in one unified, glass-box ontology."
And this repository adds a further first of its own: to our knowledge, the first specification to deliver reified, provenance-signed causation as a programming-language-neutral standard with a shared, stigmergic commons — offered, glass-box style, with its evidence: the specification, the conformance vectors, and the running implementations, all inspectable.
Every term above is explained for a newcomer in the master document: Causalontology_Standalone_Design_v27.txt — the complete, self-contained canon of this repository.
Causalontology is a verb-first noun-hosting ontology. Verb-first: the atomic building block is the occurrent — the happening — and the fundamental unit reifies the master verb, causes, itself; even knowing is verb-first, because knowledge enters by acting (intervention) or by active watching — where the viewer identifies with the actor and internally simulates the action, as when you learn a dance from an instructional video — rather than by passive watching, through which little enters (2.0.0 gives that internally simulated intervention its own simulation evidence grade, distinct from raw observation and physical intervention). Noun-hosting: things (continuants) are first-class citizens, but they are understood through what they do and what happens to them — Causalontology governs the verbs and hosts the nouns, with realizable entities as the hinge between them.
Causalontology's purest form is a specification, not a program. It separates the data structure of causation and its rules (programming-language-neutral) from any implementation (twenty exist, from Prolog to Kotlin/Native). Two familiar pictures, held together:
The reference implementation is PrologAI, a glass-box cognitive architecture, driving the synthetic mind Mentova.
Causalontology is now at version 4.0.0. It is a major version because it adds three new object kinds - by the standard's own rule, that is always major - but for anyone adopting it the step is gentle: everything is additive, and no record you already hold changes.
This release was earned, not guessed. The standard's discipline forbids adding capabilities from the armchair: the 4.0.0 change order sat gated until konnectome - the glass-box regional-brain build on this substrate - hit two real walls in a real build (2026-07-22): it could hold another agent's false, nested belief privately but could not share it as a signed, evidence-graded, content-addressed record, and its prediction loop could compute a prediction error each tick but could not record an expected occurrence as distinct from an observed one. Those two findings, with the owner's written authorization, opened the gate; the change order's remaining candidates stay held, each awaiting its own finding.
Three things arrive, all token-tier:
attitude records that a HOLDER - a modeled agent inside the ontology, never a cryptographic key - believes, desires, intends, knows, expects, or fears some content, referenced by identity. The content may be FALSE (an attitude records what a mind contains, not what is true, and a false belief raises no conflict - that mismatch IS the false belief, first-class and shareable), and it may be another attitude, so "A believes that B believes X" is a two-level structure. This is the substrate of theory of mind.predicted_occurrence is the sibling of token_occurrence that has not (yet) happened: the occurrent type a predictor expects, at a stated wall-clock or ordinal-tick window (exactly one dimension, never both), with an optional identity-bearing strength - the predicted probability, part of the predicted content itself. A prediction is NOT a claim of fact: a forecast and a report of the same content carry different identifiers.prediction_error pairs a prediction with the occurrence that did - or did not - fulfil it (an absent observed means nothing arrived), carrying the signed, graded discrepancy, read actual-minus-expected. The predictive loop becomes first-class and inspectable rather than a transient number.With these, the vocabulary grows from eighteen kinds to twenty-one (the token tier from four to seven), and the conformance suite grows from 119 vector files to 137 — all green in all nineteen bindings. Read that number correctly: it is 137 checks, of which 38 are driven by the shared vector files and 99 are implemented per binding, measured and explained in the badge note above and in PUBLISHING.md.
Migration from 3.0.0. Nothing you already have breaks. All three additions are additive and identity-preserving: because an object's identity is the fingerprint of only the fields it actually carries, every valid 3.0.0 record keeps its identifier byte-for-byte and stays valid under 4.0.0 - witnessed directly by vector V136, which re-pins the exact frozen 3.0.0 bytes under the 4.0.0 implementation. To adopt, a consumer need only add support for the three new kinds so that it can accept records that use them; a consumer that never encounters them needs no change at all. The 119 vectors of 3.0.0 are unchanged, and the 4.0.0 gate is simply their superset: the full 137-vector suite.
The normative source for all of this is the Standalone Design, Causalontology_Standalone_Design_v27.txt; the per-language rollout plan lives in docs/Causalontology_4_0_0_Release_Plan.txt.
Ten type-tier content kinds — pure, immutable, content-addressed (SHA-256 over RFC 8785 canonical bytes):
| Kind | Prefix | What it is |
|---|---|---|
| Occurrent | occurrent: |
a process or event type (a verb), optionally pitched at a stratum
|
| Causal Relation Object | causal_relation_object: |
the fundamental unit: a reified causal claim — causes, effects, mechanism, temporal window, modality, context, refines lineage, skips
|
| Continuant | continuant: |
a thing that endures (a noun) |
| Realizable entity | realizable: |
a disposition, function, or role — with an identity-bearing label
|
| Stratum | stratum: |
a level of description within a named stratification scheme |
| Bridge | bridge: |
a cross-stratal identity map: one coarse occurrent IS a set of finer ones |
| Cross Stratal Seam | cross_stratal_seam: |
3.0.0 — a managed jump across non-adjacent strata: endpoints, an honest mechanism_status (unmodeled vs absent), an optional drawn chain, and the coarsest-stratum home rule |
| Port | port: |
a typed interface borne by a continuant |
| Conduit | conduit: |
a typed connection from port to port — a pipe, or a computer |
| Quality | quality: |
a property type a thing can bear |
Seven token-tier content kinds — immutable, content-addressed, local by default (see spec/safety.md):
| Kind | Prefix | What it is |
|---|---|---|
| Token Individual | token_individual: |
a particular thing (THIS one) |
| Token Occurrence | token_occurrence: |
a particular happening, at absolute time |
| State Assertion | state_assertion: |
a particular value over a particular interval |
| Token Causal Claim | token_causal_claim: |
a particular causing, optionally under a covering law |
| Attitude | attitude: |
4.0.0 — what a HOLDER's mind contains: a modeled agent believes / desires / intends / knows / expects / fears a content object — the content may be false, may be another attitude (nesting), and the holder is never the signing key |
| Predicted Occurrence | predicted_occurrence: |
4.0.0 — an occurrence a predictor EXPECTS at a stated wall-clock or tick window — an expectation, never a report; optional identity-bearing strength (the predicted probability) |
| Prediction Error | prediction_error: |
4.0.0 — the comparator's signal, reified: a prediction paired with the occurrence that did (or did not) fulfil it, carrying the signed discrepancy, actual minus expected |
Four provenance kinds — signed (Ed25519), add-only records:
| Kind | Prefix | What it says |
|---|---|---|
| Assertion | assertion: |
who claims it, on what evidence (intervention > observation > simulation), how strongly, optionally citing token evidenced_by
|
| Enrichment | enrichment: |
who added which alias, participant, or taxonomy link — every word has an author |
| Retraction | retraction: |
a source's honest withdrawal of its own record — history never erased |
| Succession | succession: |
key rotation with lineage |
The load-bearing decision: content is separated from provenance, uniformly. The same claim from any number of sources is one object; contradictory claims coexist, each with signed provenance; trust is a consumer-chosen policy, never forced consensus. The whole store merges by set union — a Conflict-free Replicated Data Type (CRDT) by construction.
No single machine holds the commons, and by design none has to. Because every object's identifier is the SHA-256 hash of its own content and the store merges by set union with no coordinator — the same math as the InterPlanetary File System (IPFS), Git, and Dat — the commons is a peer-to-peer federation: many nodes, each holding some of the data, gossiping new objects and converging to the same whole regardless of order. This is now live and self-healing: nodes gossip each new record to their peers as it arrives and a background anti-entropy pass reconciles any two replicas by comparing Merkle roots and shipping only the delta, so the commons converges even when gossip is dropped or a peer restarts — every inbound item verified by hash and signature, no coordinator, token tier not federated by default. With phase four merged, the four-phase storage-and-federation build is now complete — a durable, self-healing, horizontally scalable commons that anyone can read from a light client, cache at the edge, or help host a slice of; what remains is adoption, not architecture.
spec/snapshot.md.GET /shards and resolvable across nodes, with phase-three federation running per shard. All four phases are delivered — the build is complete.
Full design: Part 21, "Commons Storage and Federation Design," in the canon (Causalontology_Standalone_Design_v27.txt).
{ "type": "occurrent", "label": "press_button", "category": "action" }
{ "type": "occurrent", "label": "light_on", "category": "state_change" }
{ "type": "causal_relation_object", "causes": ["occurrent:press_button"], "effects": ["occurrent:light_on"] }That third document — a degenerate causal_relation_object, just cause and effect — is already valid, and the store lists it as a gap inviting enrichment (GET /gaps?kind=missing_field). Someone (or some mind) later refines it with a temporal window and modality, and the gap visibly closes. That is stigmergy: the structure's own partiality guides the next contribution. Full walkthrough: examples/quickstart.md.
Honest install note at 4.0.0 (updated 2026-07-27). Fifteen of the nineteen bindings have a live 4.0.x artifact; fourteen of those fifteen are additionally proved installed — the published artifact fetched into a clean location and the suite run from outside any checkout with
CAUSALONTOLOGY_SPECfirst poisoned and then stripped. The one exception is Rust, whose library is sound but whose published conformance binary cannot run for a consumer, so it is deliberately not counted as proved. The table below records what is actually installable today; the full evidence is in PUBLISHING.md.The three defective releases of 2026-07-26 are all repaired. Python (PyPI), Dart (pub.dev) and the Go module went out shipping no schemas, locating them from a repository-relative path, with conformance runners that loaded repository source instead of the installed artifact — so the "fresh install 137/137" proofs measured the build machine, and installed for real the Python wheel scored 62/137. All three are now fixed on the live registries: PyPI serves a corrected 4.0.0 (the fix went into the existing release as a second, build-tagged wheel that pip prefers, and the two defective files were deleted, so the release now holds exactly one file); pub.dev serves 4.0.1 with 4.0.0 retracted; the Go proxy serves
bindings/go/v4@v4.0.1with v4.0.0 retracted. The differing version numbers are deliberate — pub.dev and the Go proxy hold one immutable file per version, so 4.0.0 could never be made to serve correct code there, while a PyPI release holds many.One live channel still has a known defect: crates.io. Rust 4.0.0's library is proven sound — it compiles the twenty-one JSON Schemas into the crate, so it never depended on a checkout. Note why, because the earlier wording here filed Rust under the wrong reason: crates.io ships only the
bindings/rustsubtree, never the repository, and Rust is safe because the schemas live inside that subtree, not because of whole-repository delivery. What is not sound at 4.0.0 is its conformance program, which panics for any registry consumer, and its README, which told people to run it. Both are fixed at 4.0.1 in this tree, and 4.0.1 is not published; crates.io serves the 4.0.0 binary and the 4.0.0 README today.The
v4.0.3tag serves Swift, Zig, Packagist (PHP), and the C++ source tarball, and is also thesource.tagin the LuaRocks rockspec. Swift, PHP and the C++ tarball were sound atv4.0.1because a tag really does deliver the whole repository tree; Zig was not, and was genuinely broken —zig fetchprunes the tarball to the.pathslist in the rootbuild.zig.zon,spec/was not on it, and a consumer received ten files and zero schemas.v4.0.3fixes that, vendors PHP's schemas so it no longer relies on the accident, and makes the C++ CMake install carry its own copy.Do not verify a published artifact against the
v4.0.0tag: it pins the specification-freeze commit64b1d1a, which predates the binding port, sobindings/rustthere declares 2.0.0 and carries seventeen schemas. The crate on crates.io was published frommainat43d58a6; PUBLISHING.md records the source commit of every live artifact it can, and says plainly which six it cannot. Earlier tags are left where they are and never moved, because a pushed tag is a public surface a consumer may already have pinned.One specification, and the 137 conformance checks are the thing that must not differ — 38 of them driven by the shared frozen vector files, per the badge note above and the measurement in PUBLISHING.md. Each binding publishes only after the full suite passes against the built artifact installed into a clean location, from outside the checkout, not against the source tree beside it — that distinction is the whole of what went wrong, and the
conformanceworkflow now gates both modes on every push. Four bindings have nothing live at 4.x — Haskell, Perl, R and Julia — and a fifth publication is outstanding: crates.io's corrected 4.0.1. R was submitted to CRAN on 2026-07-27 and is sitting in CRAN's incoming queue; Julia's registration pull request is open and contested. All nineteen bindings pass the suite locally, perdocs/Causalontology_4_0_0_Release_Plan.txt; what remains for those five acts is the owner's registry credentials or account, and — for CRAN and Julia only — a human reviewer.
| Language | Command |
|---|---|
| Python |
pip install causalontology (4.0.0 live and correct on PyPI, fresh-install verified 137/137 against the registry; the correction shipped inside the same 4.0.0 release as a build-tagged wheel and the defective files were deleted) |
| JavaScript / TypeScript |
npm install causalontology (4.0.0 live on npm, fresh-install verified 137/137 against the registry; typings included; 1.0.0 deprecated) |
| Rust |
cargo add causalontology (4.0.0 live on crates.io; the library is proven sound — the crate compiles the twenty-one schemas in with include_str! and cannot build without them, verified with the repository bind-mounted away and every file access traced. The 4.0.0 conformance binary cannot run for a registry consumer and the 4.0.0 README instructs people to run it; 4.0.1 fixes both and is unpublished. 1.0.0 yanked) |
| Java |
io.github.ai-university-aiu:causalontology:4.0.0 (live on Maven Central, verified 137/137 against the jar downloaded from repo1.maven.org, signature checked) |
| Kotlin/Native |
io.github.ai-university-aiu:causalontology-kotlin:4.0.0 (live on Maven Central, linuxX64 klib; signature checked and the 21 schemas confirmed compiled in) |
| C# / .NET |
dotnet add package causalontology (4.0.0 live on NuGet, fresh-restore verified 137/137 against the registry; 1.0.0 unlisted) |
| Ruby |
gem install causalontology (4.0.0 live on RubyGems, fresh-install verified 137/137 against the registry; 1.0.0 yanked) |
| PHP |
composer require causalontology/causalontology:^4.0 (v4.0.3 live on Packagist — mirrored automatically from the tag, so ^4.0 resolves there; v4.0.1 was verified by a real composer require and v4.0.3 vendors the twenty-one schemas so the binding no longer depends on Composer shipping the whole repository. Earlier tags remain on the index) |
| Dart |
dart pub add causalontology (4.0.1 live on pub.dev, fresh-resolve verified 137/137 against the registry; 4.0.0 shipped without its schemas and is retracted, so ^4.0.0 now resolves to 4.0.1) |
| Elixir / Erlang |
{:causalontology, "~> 4.0"} (4.0.0 live on Hex, fresh-resolve verified 137/137 against the registry; 1.0.0 retired) |
| Lua |
luarocks install causalontology (4.0.0-1 live on LuaRocks, fresh-install verified 137/137 against the registry; 1.0.0 remains listed) |
| Swift |
.package(url: "https://github.com/ai-university-aiu/causalontology", from: "4.0.3") (4.0.x via the v4.0.3 tag; verified 137/137 at v4.0.1 and sound there, because a tag really does deliver the whole repository tree. Swift vendors nothing and derives its schema path from #filePath, so move or delete the SwiftPM checkout and you must set CAUSALONTOLOGY_SPEC. Listed on the Swift Package Index — PackageList PR #14440 merged 2026-07-17) |
| Go |
go get github.com/ai-university-aiu/causalontology/bindings/go/v4@v4.0.1; import .../bindings/go/v4/causalontology. v4.0.1 is live and verified — 137/137 from a module fetched fresh from proxy.golang.org with checksum verification on. v4.0.0 shipped without its schemas and is retracted: it no longer appears in go list -m -versions, and anyone still on it is shown the reason (the /v2 module stays live for 2.0.x; the v1 module line is deprecated and retracted via bindings/go/v1.0.1) |
| Zig |
zig fetch --save https://github.com/ai-university-aiu/causalontology/archive/refs/tags/v4.0.3.tar.gz, then dep.module("causalontology") and @import("causalontology") (4.0.x via the v4.0.3 tarball. v4.0.1 was broken: zig fetch prunes the tarball to the root manifest's .paths list, spec/ was not listed, and a consumer got ten files and zero schemas — validateSchema died with error.SpecDirNotSet. At v4.0.3 the fetched package is 209 files with all 21 schemas and all 137 vectors, and the schemas are compiled into the library besides, so no setSpecDir call is needed at all. A package hash covers only the pruned file set, so re-run zig fetch --save against the new tag rather than expecting an in-place fix; hash recorded in PUBLISHING.md) |
| C++ | build from the v4.0.3 source tarball with CMake (4.0.x via the v4.0.3 tag; there is no central registry claimed. The tarball is the whole repository, so spec/schema arrives with it, and at v4.0.3 cmake --install also copies the twenty-one schemas to <prefix>/share/causalontology/spec/schema — at v4.0.1 it installed zero, so a find_package consumer could not validate. The vcpkg and Conan ports are still open at 2.0.1, both blocked only on a Contributor License Agreement) |
Not installable yet, in any version at 4.x: Haskell, Perl, R and Julia. All four are conformant in this repository and pass 137/137 locally; each waits on a registrar rather than on code. R was submitted to CRAN on 2026-07-27 and is in the incoming queue; the other three are described in PUBLISHING.md.
Where the 4.0.0 rollout stands, as of 2026-07-27. Fifteen of the nineteen bindings have a live 4.0.x artifact: Python (PyPI 4.0.0), JavaScript (npm 4.0.0), Rust (crates.io 4.0.0 — library sound, conformance binary broken), Java and Kotlin/Native (Maven Central 4.0.0), C# (NuGet 4.0.0), Ruby (RubyGems 4.0.0), Elixir (Hex 4.0.0), Lua (LuaRocks 4.0.0-1), Dart (pub.dev 4.0.1), Go (bindings/go/v4@v4.0.1), and PHP, Swift, Zig and the C++ source tarball via the v4.0.3 git tag. Four have nothing at 4.x: Haskell (Hackage), Perl (CPAN), R (CRAN — submitted 2026-07-27, in CRAN's incoming queue) and Julia (General registration pull request #161292 open and contested; it registers v1.0.0, and Julia requires versions to land in order). A fifth publication is outstanding on a channel that is already live: crates.io's corrected 4.0.1. The three releases that went out defective on 2026-07-26 — Python, Dart and the Go /v4 module — were all repaired the next day. The honest state, why the earlier proofs were wrong, and which commit each live artifact was actually built from, is in PUBLISHING.md, along with the six live artifacts whose build commit was never recorded and the measured list of published artifacts still carrying the retracted "137 vectors" phrasing — which is almost all of them, including all nineteen conformance runners at the v4.0.3 tag that four of these channels read from.
The superseded releases stay where they are, and the rules differ by registry: 1.0.0 is yanked on PyPI, crates.io and RubyGems, deprecated on npm, retired on Hex, unlisted on NuGet, retracted on pub.dev, and retracted for the Go /v1 line; LuaRocks has no yank, Packagist mirrors every git tag, and Maven Central is immutable, so the older releases simply remain listed on those three. The Go /v2 module stays live for 2.0.x. Reach, stated precisely: Kotlin, Scala, Clojure, and Groovy consume the Java artifact from Maven Central as-is; Deno and Bun consume the npm package directly; and any WebAssembly host (browsers, edge workers, wasmtime embeddings) can use the WASM core attached to the latest release. Also in community review, and two majors behind: vcpkg (#52892) and Conan (#30612) for C++, both at 2.0.1 and both blocked only on a Contributor License Agreement. Anything still missing (OCaml, Scala Native, Fortran, COBOL if you dare, ...) remains the open invitation: the 137 frozen checks are the gate — 38 of them driven by the shared vector files, the rest ported per language; see the measurement in PUBLISHING.md. Details and status: PUBLISHING.md.
causalontology/
Causalontology_Standalone_Design_v27.txt the canon (complete, lay-readable)
spec/ normative core, identity, semantics, provenance,
store, safety; schema/ = 21 JSON Schemas + JSON-LD
context + Protobuf + the OWL mapping (BFO/RO/PROV)
conformance/ the 137 vector files (specification 4.0.0,
whole-word baseline) + the re-freeze tool; 38 of
them carry test data and 99 are named stubs — see
"What 137/137 counts" below
bindings/ nineteen bindings, one directory each: cpp · csharp
· dart · elixir · go · haskell · java · javascript
· julia · kotlin · lua · perl · php · python · r ·
ruby · rust · swift · zig — all conformant, with
the TypeScript typings inside the javascript
package and the WebAssembly core built from the
Rust crate; PrologAI is the reference
store/server/ Tier A store (live), SPARQL subset, N-Triples
export, reputation, Tier B federation, Tier C
offline replication + the test suites
store/stigmergy/ the contribution dashboard (served at /dashboard)
examples/ the quickstart + the Mentova gardener (the first
synthetic mind contributing to the commons)
dumps/example/ a small worked snapshot dump, verifiable offline
.github/workflows/ conformance.yml carries 23 Continuous Integration
(CI) jobs: every implementation, every push
archive/ superseded editions of versioned documents
GOVERNANCE.md · PUBLISHING.md · LICENSE · DATA_LICENSE · NOTICE
An implementation is Causalontology-conformant if and only if it passes the full suite for the specification version it declares — 137 checks, of which 38 are driven by the shared files in conformance/vectors/ and 99 are implemented per binding against a named requirement (measured 2026-07-27; see PUBLISHING.md and conformance/README.md). That rule is how twenty implementations in twenty languages — Prolog, Python, JavaScript, Rust, Java, Swift, Go, C#, Ruby, PHP, Dart, Elixir, Haskell, Perl, R, Lua, C++, Zig, Julia, and Kotlin/Native — agree without sharing a line of code — down to the length of a month (2,629,746 seconds) and the ranking of a resolve().
What
137/137counts, measured 2026-07-27 and stated plainly. It counts checks, not vector files. Every one of the nineteen runners reads 38 of the 137 files — exactly V01–V38 — and no more; Rust and Haskell open all 137 but only to read the label they print. The reason is in the files themselves: all 99 from V39 to V137 carry noinput, nogiven, nosteps, and anoperationfield that reads"see bindings/*/conformance runner". They are named stubs with anexpectkey-list and a prose note. So the honest headline is 137/137 conformance checks passed — 38 driven by the frozen shared vectors, 99 implemented per binding; a stricter honest figure is 26, the number of files whose bytes change any verdict. The claim above therefore holds unconditionally for V01–V38, and for the rest rests on nineteen ports written to the same prose note. Only the Rust runner notices a vectors directory with files missing. The measurement, and the cheapest repair, are in PUBLISHING.md.
Specification 4.0.0 status (the doxastic and predictive additions). The suite is now 137 vector files (V01–V38 re-frozen unaltered in meaning under the whole-word schemes of Principle P7, V39–V107 the 2.0.0 additions, V108–V119 the 3.0.0 additions, V120–V137 the 4.0.0 additions). All nineteen bindings now pass all 137 checks, each under its own job in
conformance.yml, in both source-tree and installed-artifact modes — the 3.0.0 delta folded in first where it was missing, then the 4.0.0 delta on top, perdocs/Causalontology_4_0_0_Release_Plan.txt. The38/38milestones further below are historical: they record the completed 1.0.0 effort and are left as written rather than restated. Registry state as of 2026-07-27: fifteen of the nineteen bindings have a live 4.0.x artifact, fourteen of those are additionally proved installed (Rust is the exception), and four have nothing at 4.x — Haskell, Perl, R (submitted to CRAN, awaiting a reviewer) and Julia (registration contested). See PUBLISHING.md for the per-channel evidence.
The reference implementation is now gated, not merely asserted. PrologAI is listed first among the bindings and named the reference implementation, so it is now held to the same standard as the rest: it is checked in Continuous Integration (CI — the practice of automatically building and testing every change) by its own prolog job in conformance.yml. That job checks out PrologAI beside this standard, installs SWI-Prolog, and runs PrologAI's own canonical harness against this repository's canonical conformance/vectors/, passing only when all 137 (V01–V137) pass. Because the harness runs against the standard's own vectors, the reference implementation can no longer silently drift from the specification: it earns the label by passing the same vectors as every other binding, under its own CI gate — one of the 23 jobs in that workflow — rather than by prose alone. (PrologAI shipped its own 4.0.0 port — causal_core 1.1.0 — so this gate now covers the full V01–V137 at specification 4.0.0.)
causalontology-py: the second implementation — 38/38 conformance vectors pass; language independence is provendemand_supply from real read telemetry), value-ranked GET /gaps, and the contribution dashboard at /dashboard — the commons guides its own growth; the MVP is complete
GET|POST /sparql (documented SELECT subset) + GET /export/triples (N-Triples) + the OWL mapping to BFO / RO / PROVGET /sync/export + POST /sync/pull: two live stores converge by signed set-union; 11/11 checks
replicate.py: offline bundles, order-independent merge (the CRDT laws proven 8/8), tamper evidence from content addresses and signatures aloneGET /reputation?source=: glass-box, computed from the signed history, succession-aware/gaps, intervenes (its own hand on the switch), induces the missing fields, signs with Ed25519, contributes, and the gap closes: 11/11 checks — the first synthetic mind gardening the commons
wasm32 (schemas embedded, no filesystem); 6/6 cross-checks in Node prove it byte-identical with the JS binding — one audited core for every hostv1.0.0 with a GitHub Release carrying the built artifacts; SwiftPM and Go modules live via tags; and the distribution campaign that followed: thirteen channels live — PyPI, npm, crates.io, Maven Central (jar + Kotlin klib), NuGet, RubyGems, Hex, LuaRocks, Packagist, pub.dev, SwiftPM, Go, Zig — with Julia, vcpkg, and Conan in community review (PUBLISHING.md)/v2 / Zig git-tag channels republished at 2.0.x (PUBLISHING.md)store/server/snapshot.py), with a detached SHA-256 checksum and signature — anyone can verify every byte offline and stand up a mirror by idempotent, tamper-evident union-merge, token tier excluded by default; 26/26 snapshot checks pass
store/server/federation.py) — every inbound object verified by hash and every record by signature before merge, add-only, no coordinator, token tier not federated by default; 26/26 federation checks pass
store/client/light_client.py); immutable content is served with immutable cache headers and an ETag equal to its identifier, cacheable forever behind any CDN, while mutable views are not; and a partial node holds only a hash-prefix slice, advertised on GET /shards and resolvable across nodes, with phase-three federation running per shard (store/server/sharding.py); 25/25 scale checks and 14/14 light-client checks pass
prolog job in conformance.yml checks out PrologAI beside this standard, installs SWI-Prolog, and runs PrologAI's own harness against this repository's canonical conformance/vectors/ — passing only on 137/137 (V01–V137), since PrologAI shipped its own 4.0.0 port as causal_core 1.1.0. (The gate was added at 119/119 and moved to 137/137 with the 4.0.0 port.) The reference implementation is now held to the same gate as every other binding, not merely asserted in prose, and cannot silently drift from the specification. Twenty implementations in twenty languages, and conformance.yml now carries 23 jobs.
Semantic Versioning; the conformance suite versioned in lock-step; extending any closed enumeration is a MAJOR change; releases gated in CI on the vectors; an open change process with conformance impact statements. See GOVERNANCE.md.
Before the public launch, contributions land through the change process in GOVERNANCE.md. The contribution model of the commons itself is stigmergic: ask the store for the most valuable gaps, close one, sign your work. Vocabulary discipline: resolve before you mint — and, per Principle P7, whole words, never abbreviations.
"The attribution always; no profit, no problem license." — one license for everything in this repository and its commons: the code, the data, the specification, and the architecture. It is the friendly name for the Apache License 2.0 text, the same license carried by PrologAI and Mentova: attribution (the NOTICE file) is always required, and use without profit is never a problem. The data license (DATA_LICENSE) carries the same terms, by the owner's decision of 2026-07-13.
D. R. Dison. Causalontology: AGI's Missing Link — the Standalone Standard and the Shared Commons, Version 27 (the 4.0.0 Edition), specification 4.0.0. AI University (AIU), 2026. github.com/ai-university-aiu/causalontology
D. R. Dison — Founder of AIU (Artificial Intelligence University), Creator and Owner of PrologAI and Mentova. ORCID 0009-0001-9246-5758 · linkedin.com/in/d-r-dison
"Causalontology will be the Wikipedia and Wikidata of AGI." — D. R. Dison