-
Notifications
You must be signed in to change notification settings - Fork 0
Three Layer Architecture
flexo-rtm splits the system into three layers — Operational, Storage, and Analysis — each with a distinct latency budget, a distinct authority class, and a distinct interface contract. The layers are stacked but not interchangeable: collapsing any pair of them produces a system that either feels too slow to use or cannot make defensible certification claims. This page is the orientation reference; the layer-specific pages cover each surface in depth (see Operational Layer UX Discipline, Storage Layer Flexo Conventions, Analysis Layer Scope Algebra).
The canonical statement of the architecture lives in Design Spec §5; this page summarizes the rationale and boundaries.
A fast, in-memory, model-state-induced surface. The working-set is an rdflib dataset materializing only the slice of the certification complex that is currently checked out — typically hundreds of triples, not millions. Authoring happens through Pydantic models with write-time SHACL on every keystroke-equivalent edit. The skill and CLI operate against this layer exclusively. The whole point of the operational layer is that it must feel weightless: judgment surfacing, validation-edge creation, deferred-judgment markers, and batch staging all happen here without ever paying network round-trip latency to the authoritative store.
Flexo MMS — the authoritative, persistent, versioned quadstore. Triples live in fixed-partition named graphs (model, requirements, attestations, transcripts, guidance, audit). Branches isolate concurrent engineering streams. Every commit is an atomic transaction tagged with a single prov:Activity IRI and the active rtm:Scope IRI that was in effect during authoring. Conflict resolution is constraint-aware: verification-scope merges run through SHACL/SPARQL ASK and resolve automatically; validation-scope merges escalate to named human approvers. Storage is the only layer that persists authority; everything else either prepares writes for it or reads scoped projections out of it.
A read-mostly surface for certification, reporting, and topological analysis. Its input is an rtm:Scope IRI, which resolves to a named-graph union plus optional SPARQL filters; its output is a canonical input to whichever analysis is being run (coverage report, adequacy/sufficiency assessment, TDA pipeline, audit roll-up). When a complex is required, knowledgecomplex materializes it on demand — analysis pays the materialization cost, the operational layer never does. Results write back to storage as derived named graphs (transcript, attestation, audit), preserving the chain from input scope through analysis activity to emitted artifact.
The obvious design — and the one most quadstore-backed tooling settles on — collapses operational and storage into a single layer: every edit is a transaction against the authoritative store, every read goes back to the wire. That collapse is fatal for flexo-rtm because UX latency = adoption. The skill prompts engineers at judgment moments; if SHACL gating, scope projection, and judgment surfacing all run against Flexo over the network on every keystroke, the authoring loop is too slow to use. Engineers fall back to spreadsheets and the certification artifact never gets built.
So we pay the cost of a separate operational layer: an in-memory working set with its own SHACL validators, its own model state, and its own commit semantics. The cost is real — we maintain a serialization boundary and a batch-commit discipline — but it buys the only thing that matters at the human interface: the authoring loop feels local, because it is local.
The split between storage and analysis is the second non-collapse. Analysis is read-heavy, expensive (complex materialization can be combinatorial), and produces large derived artifacts. Mixing analysis writes into the authoring transaction stream would either slow authoring or pollute the authoritative graph with intermediate results. Instead, analysis runs on scoped projections, materializes complexes opt-in, and writes results to dedicated derived named graphs — analyzable, comparable across baselines, but never in the authoring path.
flowchart TB
subgraph OP["Operational — in-memory rdflib working set"]
OP1["Pydantic authoring"]
OP2["Write-time SHACL"]
OP3["Judgment surfacing"]
OP4["Batch staging"]
end
subgraph ST["Storage — Flexo MMS"]
ST1["Named graphs<br/>(model · requirements · attestations<br/>transcripts · guidance · audit)"]
ST2["Branches & merges"]
ST3["Atomic transactions"]
end
subgraph AN["Analysis — scoped certification & reporting"]
AN1["Scope resolution"]
AN2["Complex materialization<br/>(knowledgecomplex)"]
AN3["Transcript / attestation /<br/>audit emission"]
end
OP -- "atomic transaction<br/>(model + evidence + attestation)" --> ST
ST -- "scoped CONSTRUCT<br/>(graph union + filter)" --> AN
AN -- "derived named graphs<br/>(transcript · attestation · audit)" --> ST
The diagram shows three crossings, all of them deliberate.
Operational owns the working set, write-time SHACL, judgment surfacing, deferred-judgment markers, and the batch-commit envelope. It is the only layer that talks to a human.
Storage owns persistent authority, named-graph partitioning, branch/merge policy, conflict resolution, atomic transactions, per-commit provenance integrity, and per-commit scope metadata. It is the only layer that decides what is officially in the model.
Analysis owns scope resolution, complex materialization, canonical-input construction, certification artifact emission (transcripts, attestations, audit reports), and write-back of derived graphs. It is the only layer that produces certification claims.
The three layers communicate through three well-defined boundary protocols, and only these:
-
Operational → Storage — atomic transaction. A
flexo-rtm commitlands model triples, evidence references, and attestation triples together in a single Flexo transaction; partial commits are forbidden. Every triple in the commit shares oneprov:ActivityIRI and the commit records the activertm:ScopeIRI. Model evolution and traceability evolution always version together. See Storage Layer Flexo Conventions for the F1–F7 interface contract. -
Storage → Analysis — scoped CONSTRUCT. Analysis never reads the full quadstore; it reads through an
rtm:ScopeIRI that resolves to a graph union (and optionalFILTERclause) and CONSTRUCTs the canonical input. Scopes are themselves first-class RDF resources, composable by union / intersection / extension. See Analysis Layer Scope Algebra. -
Analysis → Storage — derived named-graph write. Analysis results are written back to dedicated named graphs (
transcript,attestation,audit) so that future analyses, comparisons across baselines, and reproducibility runs can re-read the chain from input scope through emitted artifact.
Three flows. No other crossings. In particular: the operational layer never reads from the analysis layer, and the analysis layer never reads from the operational layer.
- Analysis depends on Storage (it reads scoped projections; it writes back derived graphs).
- Operational depends on Storage (it commits atomically; it pulls working-set materializations on checkout).
- Operational and Analysis are independent — they share no code path and no runtime dependency. The operational layer authors; the analysis layer certifies; both meet through storage.
This independence is what lets the operational layer stay fast: nothing in the authoring loop calls into analysis, so nothing in the authoring loop can be slowed down by it.
Most quadstore-backed RDF tooling collapses operational and storage into one layer — the user types, the store records, and validation runs against the authoritative graph. That works fine when edits are infrequent or batch-oriented (e.g., bulk ingest, schema-driven ETL). It fails for engineering-authoring workflows where edits are frequent, granular, and judgment-laden, and where the SHACL surface is wide enough that every-keystroke validation against a real network store is unaffordable.
flexo-rtm separates them because the operational UX requires speeds the network cannot deliver. The cost is a serialization boundary and a batch-commit discipline; the reward is that the authoring surface stays local, fast, and judgment-friendly, while the authoritative store stays where it must be — versioned, branched, audited, and shared.
- Design Spec §5 — canonical statement with ASCII diagram
- Operational Layer UX Discipline
- Storage Layer Flexo Conventions
- Analysis Layer Scope Algebra
- Flexo Git Coexistence
- ADCS Prototype Lessons
- MVC Pattern from RIME TRL ANT
- Human-AI Accountability
- Multi-Agent Discourse Graph Precedent
- OSLC RM and QM Review
- INCOSE V2 Review
- OMG SysMLv2
- PROV EARL GSN P-PLAN
- Dragon Architecture and Mission Enterprise
- Traditional Forward and Backward Analysis
- Attestation Infrastructure in v0.1
- Identity Boundaries and Policy Projections
- External URI References
- Signed Envelopes and Established Standards
- Aspect Coverage with Adequacy and Sufficiency
- Federated Audit and Composition
- Certification Predicate
- Gap Taxonomy
- Quantitative Outcomes
- Engineering Lifecycle Stages (v0.2)
- Topological Framework Future Work (research phase)
- Vertices Edges Faces (research phase)
- Three-Layer Architecture
- Operational Layer UX Discipline
- Storage Layer Flexo Conventions
- Analysis Layer Scope Algebra
- OSLC Roundtrip Acceptance
- Identity Adapter Contract
- Flexo REST Binding
- SysMLv2 Ingestion Contract
- External URI Rules
- Signed Envelope Shapes
- Parsimony Manifest
- Lossless Roundtrip Definition
- Vendor Extension Carry-Through
- OSLC RM Adapter Contract
- OSLC QM Adapter Contract
- ADR Template
- ADR-001 Foundations First Approach
- ADR-002 SysMLv2 Anchoring
- ADR-003 Topological Framework Documented as Future Work
- ADR-003a v0.1 Ships Traditional Analysis Only
- ADR-004 Quantitative Certification Outcome
- ADR-005 Adequacy and Sufficiency as Guidance Subtypes
- ADR-006 Three-Layer Architecture
- ADR-007 Scope as First-Class RDF Resource
- ADR-008 Repo Name and Org Transfer Plan
- ADR-009 Two-Repo Strategy
- ADR-010 OSLC-RM and OSLC-QM in v0.1
- ADR-011 Lossless Criterion A plus C
- ADR-012 Direct RDF Properties over Reified Edges
- ADR-013 Simplicial Complex as Derived View When Built
- ADR-014 Parsimony Layer Build-Time Extraction
- ADR-015 GSN Adoption for Adequacy and Sufficiency
- ADR-016 Composable SHACL Profiles
- ADR-017 knowledgecomplex as Optional Extras
- ADR-018 V minus F Invariant Deferred with Topological Framework
- ADR-019 Derived Binary View from Quantitative Metrics
- ADR-020 Vocabulary Alignment with Zargham 2026
- ADR-021 Three Attestation Subclasses Ship in v0.1
- ADR-022 External URI References as Open-Source Foundation
- ADR-023 Cryptography by Composition of Battle-Tested Standards
- ADR-024 Identity by Thin Projection of External Sources
- ADR-025 Reproducibility is Structural and Local
- ADR-026 Cryptographic Agility via Algorithm Profiles
- ADR-027 Bit-Exactness vs Numerical Tolerances Are Both First-Class
- ADR-028 Scope-Level Adequacy and Sufficiency for Federated Audit
- ADR-029 Engineering Lifecycle Stages as Scope Metadata
- ADR-030 Polycentric ASOT Authority Model
- ADR-031 Attestation Status Pass Fail Deferred Deprecated
- ADR-032 Methodology Agnosticism as Foundational Axiom
- ADR-033 Generalized ASOT Principle for All Identified Things