Skip to contents

Ownership

Component Owns
Commons Live analysis and tools supplied by the application
Data-dict Data description and dictionary semantics
ellmer Model conversations and tool execution
shinychat Chat interface and tool-result presentation
Graft Exact artifacts, selections, decision history, vocabulary releases
Tempest Research evidence, verification, reports, and research admission
Rill Reader experience, access, approval, and retention policy

Stored contracts

Each artifact revision records its identity, media type, bytes, and exact dependencies. ArtifactRef, Artifact, and ArtifactSelection expose those values. Their S7 properties describe stored data; they do not grant authorization. A decision stream records the application’s explicit acceptance and withdrawal decisions for one subject and purpose. Decision and Recall values expose the predecessor, current head, purpose, and materialized artifacts. A review can add a decision while leaving the selection unchanged.

Reading a historical artifact and reading currently accepted content use different paths. graft_read() can read an exact old artifact after a correction. graft_recall() also requires the exact current accepted event, a matching purpose, and current eligibility from the application.

Vocabulary releases are stored as artifacts. Each release keeps concepts, relationships, field bindings, dictionary source bytes, canonical exports, and literal context together. It provides a shared vocabulary; it does not run an ontology reasoner.

Persistence boundary

The public ArtifactStore S7 class has LocalArtifactStore and PostgresArtifactStore implementations. Graft supports bounded immutable local files; a per-stream file lock serializes decisions from several processes, as an advisory lock does for a PostgreSQL scope. Its PostgreSQL scopes run inside transactions owned by the application. Normal reads verify digests and predecessor identity, ignore abandoned staging, and allow identical retries. A complete manifest must account for every entry, so abandoned staging and unknown objects are rejected. Replacement plans copy the exact artifacts remaining after exclusions into empty quarantine stores and verify the full image. The store does not provide distributed transactions, power-loss guarantees, authentication, or permanent deletion.

A closed directory backup retains the complete logical image, including orphan content and every historical decision. Verification compares the canonical bundle descriptor and all stored objects with an externally retained identity receipt. Restore copies into an empty quarantine target and checks both images again. See Back up and restore an artifact store.

Applications retire generations and use an independent durable journal to decide whether a backup may be restored. A valid content checksum does not authorize an old backup. See Verify a replacement artifact store.

Applications depend on these artifact semantics rather than graph tables or a compiler, so the persistence layer can be replaced. Any future engine must preserve exact retained identities and history. Graft has no public pluggable-backend interface today.

Native graph retirement

The graph/compiler APIs and their DuckDB, Python, LinkML, and graph-adapter dependencies are retired. Consumer contract 4 uses S7 stores and values through a task-oriented public API. Graft has no compatibility layer, and the retained artifact formats are unchanged. Source history, earlier ADRs, and experiment observations describe the previous architecture. Their native examples are historical context, not supported recipes for current Graft.