logicsrc/examples/openontology/ethereum-ecosystem
Anthony Ettinger 58c942c67f
Some checks failed
CI / build (push) Has been cancelled
test / test (push) Has been cancelled
feat(openontology): implement OpenOntology Phase 0 + local engine and CLI (#99)
Implements OpenPRD 0001 through Phase 0 (specification, schemas, example,
docs surface) and Phase 1 (local engine, CLI, conformance tests).

Schemas (17 contracts, JSON Schema Draft 2020-12, additionalProperties:false)
  manifest, namespace, entity-type, property, relationship-type, constraint,
  query, action, entity, claim, source, evidence, changeset, review, approval,
  event, package — registered in @logicsrc/validators and exported from
  @logicsrc/schemas under https://logicsrc.com/schemas/openontology/.

@logicsrc/openontology
  - canonical JSON + sha256 package digests; YAML, JSON, NDJSON, and inline
    authoring all compile to the same bytes, so digests are authoring-agnostic
  - id profile: compact / IRI / urn with one canonicalization rule, prefix
    bound by a Namespace object so IRIs reverse unambiguously
  - validation: schema, graph (domain/range, datatypes, dangling refs),
    provenance (source-or-firstParty, agent runId, derivation inputs), policy
    (excerpt limits, licensing, visibility, staleness) and declared
    constraints; four severities, stable codes, text/json/yaml/markdown
  - portable triple-pattern query AST: multi-hop, 14 operators, asOf and
    recordedAsOf, per-status filtering, distinct/order/limit, explanation
    mode, and enforced depth/binding/row limits
  - append-only store: claims are immutable; dispute/retract/supersede append
    status transitions and the effective status is the latest one
  - change sets: 9 operations, atomic pre-flight, conflict detection on stale
    base revisions, semantic diff with duplicate-identity warnings and
    affected-query deltas, per-operation reviewer decisions
  - policy: agents propose but can never apply — the denial keys on actor
    type, so every scope plus high confidence plus --yolo still cannot apply;
    merges need approval, bulk retractions need two, undeclared action side
    effects are denied
  - JSON-LD 1.1 export/import with PROV-O aliases and lossy-field reporting
  - pluggable signature envelope with a jws-ed25519 reference profile and a
    fail-closed trust policy

CLI: logicsrc ontology init|validate|lint|build|inspect, entity, claim, query,
changeset, import, export, audit. Reads take --format, writes default to a
proposal, exit codes are stable for CI.

Example: examples/openontology/ethereum-ecosystem — 12 entity types, 17
relationship types, 63 entities, 169 claims, 25 sources, 31 evidence records,
5 saved queries, every claim lifecycle state, and a pending merge proposal.
All data is fictional; the directory is removable without affecting any core
test.

Docs: docs/openontology{,-governance,-interoperability}.md, a real
/openontology route, homepage + nav + sitemap entries, and a root README
section.

Verification: 112 new tests; full monorepo build and every workspace test
pass; conformance bundle (18 valid + 13 invalid fixtures) runs against the
published schemas alone; Node.js 25 and Bun 1.3 produce byte-identical
digests, revisions, event trails, and query results.

Not included (later PRD phases): MCP resources, REST/SSE, Turso adapter, TUI
and PWA surfaces, RDF/SHACL mappings, source adapters, governed actions.

Refs: prd/0001-add-logicsrc-openontology-spec.md

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-26 02:10:13 -07:00
..
changesets feat(openontology): implement OpenOntology Phase 0 + local engine and CLI (#99) 2026-07-26 02:10:13 -07:00
data feat(openontology): implement OpenOntology Phase 0 + local engine and CLI (#99) 2026-07-26 02:10:13 -07:00
schema feat(openontology): implement OpenOntology Phase 0 + local engine and CLI (#99) 2026-07-26 02:10:13 -07:00
tools feat(openontology): implement OpenOntology Phase 0 + local engine and CLI (#99) 2026-07-26 02:10:13 -07:00
openontology.yaml feat(openontology): implement OpenOntology Phase 0 + local engine and CLI (#99) 2026-07-26 02:10:13 -07:00
README.md feat(openontology): implement OpenOntology Phase 0 + local engine and CLI (#99) 2026-07-26 02:10:13 -07:00

Ethereum Ecosystem Ontology (example)

A demonstration package for LogicSRC OpenOntology: an open map of people, organizations, projects, codebases, research topics, protocols, networks, layer 2s, applications, funding programs, publications, and events.

Every person, organization, project, and source in this package is fictional. It exists to demonstrate the contract, not to describe anyone real. Automated tests never depend on live public profiles, and nothing here implies endorsement by any real project or person.

The Ethereum framing is an example, not part of the core vocabulary. Delete this directory and every core OpenOntology test still passes.

What it covers

Entity types 12
Relationship types 17
Entities 63
Claims 169
Sources 25
Evidence records 31
Saved queries 5

Every claim lifecycle state appears at least once: asserted, proposed (an agent extraction awaiting review), disputed (with the counter-claim that disputes it), retracted (kept on the record, out of the current view), superseded (an affiliation that ended and what replaced it), and derived (with its rule and input claims).

changesets/merge-haddad.yaml is a pending merge proposal for a deliberate near-duplicate identity — the kind of thing entity resolution surfaces and a curator decides.

Try it

logicsrc ontology validate . --strict
logicsrc ontology inspect .
logicsrc ontology query list --dir .

# three hops: network → layer 2 → application → maintaining organization
logicsrc ontology query run orgs-behind-a-network --dir .

# what still needs a human decision
logicsrc ontology query run claims-needing-review --dir . --status proposed,disputed

# why does the ontology say this?
logicsrc ontology query explain orgs-behind-a-network --dir . --row 0

# what a reviewer sees for the pending merge
logicsrc ontology changeset diff changesets/merge-haddad.yaml --dir .

Regenerating

The package files are generated so the data stays internally consistent and the digest stays deterministic:

node tools/generate.mjs
logicsrc ontology validate . --strict

Edit tools/generate.mjs, not the generated schema/ and data/ files.