Skip to content

docs: describe Triplex's relationship to WorldVM - #38

Open
bjacobso wants to merge 1 commit into
mainfrom
conductor/worldvm-rollout-triplex
Open

bjacobso wants to merge 1 commit into
mainfrom
conductor/worldvm-rollout-triplex

Conversation

@bjacobso

@bjacobso bjacobso commented Oct 4, 2026 •

Copy link
Copy Markdown
Owner

Part of the WorldVM family rollout. Triplex keeps its name, the @triplex-build scope, and triplex.build. This PR states that Triplex is a standalone database and also WorldVM's temporal fact store, and it writes down the API boundary between the two. The diff only changes docs: no code, public API, or package changes.

What changed

  • docs/worldvm.md (new), "Triplex and WorldVM", added to the sidebar under Project. It is also picked up by llms.txt. The page covers:
    • What does not change: name, scope, license, and site; the maturity contract stays Triplex's own; there is no WorldVM-specific API.
    • The question Triplex answers: the canonical concept→question table, with Triplex's relationship to each concept, plus the canon roles of Open Ontology, Triplex, and Runfold.
    • The boundary:
      • What WorldVM relies on: facts, time, query, journal, config, provenance, and storage, each with the exact public Triplex APIs.
      • What WorldVM owns: actors and capabilities, programs, threads, timers, events, connections, and stdlib types.
      • Ground rules: public entrypoints only; _triplex/* and :triplex/* stay reserved; WorldVM needs become backend-neutral Triplex proposals.
  • README: a short "Triplex and WorldVM" section before Documentation, plus a row in the docs table. It links only to https://worldvm.com.
  • docs/datalog-performance.md: removed a link to a pull request in a private Runfold repository. The text now describes Runfold by its canonical role, the engine behind WorldVM programs, and links to the new page.
  • docs/host-integration.md: the runfold_actor_due cleanup note is now general ("hosts that added an equivalent index, such as Runfold's…").

The boundary table is based on the Triplex APIs that WorldVM's current prototype and Runfold actually import: Triples.transact/entity/match/query/transactionByCommand/transactionsForEntity/currentPosition, ConfigStore commit/resolveRef/snapshotById, Attribute/EntityType/GraphConstraint, transaction meta with configSnapshot and enforce, and PgTriples over a shared SqlClient. It does not describe any surface they don't use or that doesn't exist.

Checks: pnpm format:check, pnpm lint, pnpm docs:check, pnpm docs:build (no dead links), and tsc -p tsconfig.alchemy.json all pass.

Proposed structural moves (not made here)

  1. No @worldvm/triplex re-publish. The original note lists @worldvm/triplex. If that package ever exists, it should be a thin WorldVM integration package that depends on @triplex-build/triplex: layer wiring, plus mapping WorldVM Entity/Fact/Relation to Triplex assertions and ref values. It should not re-export Triplex under a second name. Sequence: build it inside the WorldVM monorepo → document it on worldvm.com → only then mention it here.
  2. Pick one schema surface. Triplex ships an ontology DSL (Attribute, EntityType, GraphConstraint), and WorldVM's prototype uses it directly. The canon makes Open Ontology the world model ("What exists?"), so there are now two ontology DSLs. Proposal: Triplex's DSL becomes the low-level, storage-facing target that Open Ontology compiles to, and WorldVM programs against Open Ontology. Sequence:
    • (a) Open Ontology emits Triplex config nodes and graph constraints.
    • (b) WorldVM's runtime switches its model to Open Ontology.
    • (c) Triplex docs describe its DSL as the low-level layer, with no API change.
  3. @triplex-build/triplex-host (private, experimental) covers tenant identity, authorization, lifecycle, and routing. That overlaps WorldVM's Actor, Capability, and runtime concerns. Proposal: keep it private until it is decided whether it stays a Triplex-only data-plane protocol (database identity, fencing, data API) or its authorization and lifecycle parts move into WorldVM. Nothing moves before that.
  4. Name collision: World in @triplex-build/triplex/config. The export is undocumented; it holds the facts an evaluation reads plus its clock. It will be confused with WorldVM's World. Proposal: before 1.0, rename it to something like EvaluationWorld, keeping a deprecated alias for one minor release. No change here.
  5. Experimental backend dependency. WorldVM's Cloudflare deployment uses @triplex-build/triplex-cloudflare, which Triplex labels experimental and private. The new page says WorldVM is only as durable as the backend it runs on. WorldVM's own status docs should say the same.

Left as-is on purpose: the "Runfold call path" comment in test/fixtures/numeric-index.ts (code, and still accurate), the Stream.runFold matches (an Effect API, unrelated), and the published package READMEs (changing them needs a changeset and a release).

Open questions for Ben

  • Should the npm package README (packages/core/README.md) carry the one-paragraph WorldVM note? That needs a patch changeset and goes out with the next release.
  • Should @worldvm/triplex exist at all, or should WorldVM depend on @triplex-build/triplex directly (move 1)?
  • Which schema DSL is canonical for WorldVM programs: Open Ontology compiling to Triplex config, or Triplex's DSL directly (move 2)?
  • Who owns triplex-host's authorization and lifecycle contracts (move 3)?
  • Is WorldVM Query its own language that compiles to Triplex Datalog, or Triplex Datalog itself? The page currently says "Triplex Datalog evaluates queries over facts" and avoids picking.
  • Should the triplex.build homepage or nav link to worldvm.com? I kept it to the sidebar and README to avoid making Triplex read as a sub-brand.
  • OK to rename World (move 4)?

🤖 Generated with Claude Code


Open workspace in Conductor

Add a "Triplex and WorldVM" README section and docs page that position
Triplex as a standalone database and as WorldVM's temporal fact store,
and record the public Triplex surface WorldVM builds on. Replace the
link to a private Runfold pull request with a description of Runfold's
role as the engine behind WorldVM programs.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant