Skip to content
🚧 Early alpha — building the foundation. See the roadmap →

Conventional systems in the stack — built and adopted, layer by layer

Updated

Crosswalker is a stack of layered conventions — formalized systems (little languages, schemas, and vocabularies), some we built, some we adopted from existing standards and combined into a coherent whole. This page is the map: the entire pipeline at a glance, with each layer linking down to the page that goes deep. Start here; follow any layer that interests you.

Every layer, the convention(s) it runs on, and whether we built it or adopted / combined an existing standard. The chips are links — click any term you don’t recognize to jump to its definition. Data flows top to bottom; the Tier 1 contract (accent border) is the load-bearing middle. Crosswalker is general-ontology: GRC/compliance is the primary use case (the vast majority of usage), not the only one — so domain-specific pieces are marked (dashed) as use-case examples, not core architecture.

we builtadopted / combined
Sources · Tier 0
your data, any structured format — CSV · XLSX · JSON · OLIR · OSCAL
↓ parse the source
Parse
bounded transformation primitivesturn messy input into structured data · from RML · JSONata · dbt
↓ morph to vault shape
Morph
declarative recipe grammar · 5 mechanismstemplate filtersdecides which Obsidian primitive carries what
↓ address each concept
Address
render() → AddressCURIE identity · W3Ca concept → its file path, links, frontmatter
↓ build the Obsidian vault
Tier 1 = the canonical Markdown vault — the source of truth (what Obsidian reads, what git tracks, what survives plugin uninstall). The three-tier model (T0 source · T1 canonical · T2 cache) is established in system architecture.
↓ derive the cache projection
Cache · Tier 2
SQLite sidecar · sqlite-wasm + sqlite-vecdeletable speed cache — rebuilds from Tier 1
↓ query & read back
GRC use casethe three lenses — Control · Assurance · Risk — are the compliance-domain application of generic lenses and query-result projections; any ontology defines its own.
↓ export to standards

The shape is the design: we built the morph (parse → recipe → render → contract) and the way you read it back (data morphology + lenses); we adopted proven standards wherever one existed (CURIE for identity, STRM + SSSOM for crosswalk semantics, OSCAL for export, Bases + SQLite for query). Composing standards instead of reinventing them is what keeps a Tier 1 vault interoperable.

The map as a table. The diagram chips above link to quick definitions; this table links down to the full page(s) — concepts, logs, registry — that go deep on each convention.

LayerThe conventionBuilt / adoptedGo deeper
Parse — source → structured datatransformation primitives (≈40, closed catalog)built (from RML · JSONata · dbt)ETL and import · import-engine-design log
Morph — structured data → vault shapethe recipe grammar (5 layout mechanisms — source: spec/recipe.schema.json mechanism enum — × layout × also_emit × graph_edges)builtMapping into Obsidian · hierarchy primitives · Ch 22
Address — concept → place + linksrender(Recipe, ConceptIdentity) → Address + 10 template filtersbuilttarget-structure synthesis
IdentityCURIE / ConceptIdentityadopted (W3C)terminology · CURIE
Contract — what lands on diskTier 1 schema · managed/user_preserve · _crosswalker provenancebuiltv0.1 schema spec · the managed/user_preserve split
Crosswalk semanticsSTRM predicates + SSSOM metadataadopted / combinedSTRM · SSSOM · foundation synthesis
CacheTier 2 SQLite projectoradopted (sqlite-wasm · sqlite-vec)embedded vs server · Ch 24 substrate synthesis
Output — questions → picturesdata morphology + Bases + lenses/query-result projectionsbuilt (morphology) · adopted (Bases)data morphology · view shapes — GRC example: the lenses
ExportOSCAL · SSSOM · STRM serialization writersadopted serialization standardsroadmap v0.1.7

The pattern across the stack is not that every artifact is a DSL. Each role has an explicit contract: recipes are machine-evaluable declarative specifications, schemas validate canonical records, serializations represent exchanges, and renderers or projectors execute bounded operations. Those contracts keep the recipe schema decoupled from the engine, the engine from the Tier 1 schema, and the cache substrate from the schema. That decoupling is the modularity goal made concrete.