-
Notifications
You must be signed in to change notification settings - Fork 0
ADCS Prototype Lessons
flexo-rtm is not a green-field design. It is the next iteration of a working prototype — ADCS-lifecycle-demo — which already implements end-to-end requirements traceability for a satellite Attitude Determination and Control System against a live Flexo MMS instance. The prototype answered the question "does this approach work at all?" and shipped a production-grade pipeline with 166 passing tests against a real Flexo deployment. The remaining question — "what should the framework look like once the ADCS-specific scaffolding is removed?" — is what flexo-rtm answers.
This page records what the prototype proved, what carries forward unchanged, what gets abstracted before publishing, what is genuinely new in flexo-rtm, what we deliberately do not replicate, and the boundary between the two repos going forward. See also Design Spec for the v0.1 vocabulary that crystallizes these lessons.
The prototype is not a toy. It is a working, tested, production-shaped system. Specifically:
-
End-to-end pipeline in eight stages — ontology assembly → SysMLv2 structural model → SymPy symbolic analysis → scipy numerical simulation → evidence binding → RTM assembly → human attestation (CLI) → closure-rule validation → forward / backward / bidirectional audit → report generation → interrogation. Every stage is independently testable, and every stage emits a
p-plan:Activityinto a dedicated<adcs:plan-execution>named graph so the construction process itself is queryable. -
166 passing tests, including live integration against a remote Flexo MMS sandbox at
try-layer1.starforge.app. The Flexo backend round-trips named graphs, runs SPARQL across the union, and recovers identical audit results to the local backend. -
Named-graph dataset of eight graphs held as an
rdflib.Datasetwithdefault_union=True, so SPARQL queries match across<rtm:ontology>,<rtm:plan>,<adcs:structural>,<adcs:context>,<adcs:evidence>,<adcs:attestations>,<adcs:plan-execution>, and<adcs:audit>withoutGRAPHclauses. This partitioning matches how Flexo MMS structures branches and is the operational answer to "how do you keep RTM layers separable while still queryable?" -
SHACL closure-rule suite (ten invariants) — nine SHACL shapes plus one runtime re-verification check that re-hashes every
rtm:ProofArtifactand compares to its storedrtm:proofHash. Forward and backward traceability are independent shapes (8a / 8b) so error messages name the failing direction; bidirectional is the conjunction. - Forward, backward, and bidirectional audit that runs orthogonally to the closure-rule suite. Audit pass/fail is the certification outcome; closure-rule pass/fail is well-formedness. The prototype distinguishes these by running each direction independently and emitting separate failure lists.
- Backend abstraction — the same Dataset persists losslessly to local TTL/TriG, to a bare Apache Jena Fuseki, or to a live Flexo MMS instance. The runtime computes audit locally regardless of backend; the backend is only persistence. This validates the "Flexo as one of several substrates" framing in Three-Layer Architecture.
The prototype also captures per-activity execution provenance when computation runs in Docker — image digest, container ID, hostname, Python version are attached to the prov:Activity for every Stage 2 / Stage 3 run. That mechanism is the empirical seed for flexo-rtm's External URI References discipline.
Four patterns from the prototype are sound and need no reshaping. flexo-rtm reuses them directly:
-
Named-graph partitioning. One graph per content layer — ontology, plan, structural, context, evidence, attestations, plan-execution, audit. SPARQL against
Dataset(default_union=True)keeps queries simple while preserving per-layer addressability and Flexo branch alignment. -
Vocabulary assembly approach.
rtm:is a thin integration ontology over PROV-O, EARL, OntoGSN, P-PLAN, OSLC RM/QM, and the openCAESAR SysMLv2 OWL rendering. The prototype introduces no novel epistemic vocabulary; it composes battle-tested standards viaowl:equivalentClass/rdfs:subClassOf/rdfs:subPropertyOf.flexo-rtmkeeps this composition discipline — see Layered Ontology. -
Re-hash replay for evidence reproducibility. Every
rtm:Evidencecarriesrtm:contentHash+rtm:modelHash; everyrtm:ProofArtifactcarriesrtm:proofHash. At validation time the proof script is re-executed and the hash recomputed; any drift fails the closure rule. This pattern survives unchanged. -
Closure-rule suite as a separate well-formedness gate. A SHACL shape suite over the assembled dataset, with a runtime re-verification step for the one closure rule SHACL alone cannot express.
flexo-rtmkeeps this two-layer structure (declarative SHACL + runtime hash replay), and the regression corpus continues to exercise it.
The prototype's ontology mixes domain-general framework terms with ADCS-specific instance vocabulary. The framework half ships in flexo-rtm's core ontology; the ADCS-specific half stays in the prototype.
Domain-general layer (lifts into flexo-rtm): rtm:Requirement, rtm:Evidence (and its subclass structure), rtm:Attestation and its three subclasses, the GSN-based adequacy/sufficiency pattern, the audit shapes (forward / backward / bidirectional / orphans), the EARL outcome lattice (earl:passed / earl:failed / earl:cantTell / earl:inapplicable / earl:untested), the P-PLAN process-model pattern, and the content-addressing properties (rtm:contentHash, rtm:modelHash, rtm:gitCommit, rtm:sourceFile).
ADCS-specific layer (stays in the prototype): rtm:ProofArtifact, rtm:SimulationResult, rtm:SymbolicAnalysis, rtm:NumericalSimulation, the attitude-dynamics structural individuals, REQ-001..004, the satellite parameters, and the SymPy / scipy analysis scripts.
The assembly approach is sound and lifts as-is. The specific ontology — particularly the parts that bake in "evidence is a SymPy proof or a scipy simulation" — needs the new framing layered on. flexo-rtm introduces an Layered Ontology (core / profiles / domain) so that ADCS-style evidence becomes a profile extension, not a core commitment.
A great deal. The prototype is a pipeline that emits an RTM; flexo-rtm is the framework that any such pipeline consumes. The new surface includes:
-
Claude skill + MVC wrapper.
flexo-rtmships an authoring surface — a Claude skill plus a Model/View/Controller wrapper — so RTM authoring is a guided experience, not a Python-script exercise. - OpenAPI service (v0.2). A versioned HTTP API for RTM CRUD, attestation, and certification queries. The prototype has no service surface.
-
First-class
rtm:Scoperesource with composition algebra. Certification is computed over a scope (a subset of requirements / artifacts / attestations) rather than the whole dataset. Scopes compose. The prototype audits the entire dataset and has no equivalent. - Three-layer architecture — operational / storage / analysis split — so that Flexo MMS, local files, Fuseki, and OCI artifact stores are interchangeable substrates. See Three-Layer Architecture.
-
Quantitative outcomes. The prototype's audit is pass/fail;
flexo-rtmemits a structured certification result (coverage metrics, gap codes, per-aspect verdicts). -
OSLC-RM/QM lossless adapters. The prototype publishes alignment axioms;
flexo-rtmships round-trip adapters with acceptance criteria for losslessness (no truncation, no drift). - Parsimony policy at build time. The core ontology is small by design; profiles add capability. A build-time check prevents accidental core bloat.
-
SysMLv2 bidirectional I/O (v0.2).
.kermland.sysml.jsonround-trip with the structural graph. The prototype reads SysMLv2 RDF only. -
External URI references discipline. Git+commit IRIs, content hashes, and OCI digests are first-class references with SHACL gating. This formalizes what the prototype's Docker compute backend already emits informally as PROV
prov:atLocationandrtm:imageDigest. See External URI References. - Signed envelopes vocabulary. W3C VC Data Integrity, DSSE, cosign, and Rekor are composed (not invented) into a vocabulary for signing attestation envelopes. This closes the prototype's explicit "signed envelopes deferred" gap. See Signed Envelopes and Established Standards.
-
Three attestation subclasses.
rtm:SatisfactionAttestation,rtm:AdequacyAttestation,rtm:SufficiencyAttestationasrtm:Attestationsubtypes, with SHACL-enforced named-approver IRI on every instance. See Attestation Infrastructure in v0.1 and Aspect Coverage with Adequacy and Sufficiency. The prototype implements adequacy and sufficiency asgsn:Assumption/gsn:Justificationtext nodes;flexo-rtmpromotes them to typed attestations with their own named approvers. -
Identity boundaries with thin RDF projections. The prototype hardcodes GitHub IDs (
@mzargham);flexo-rtmships a configurable adapter pattern. GitHub, generic OIDC, and GitHub Actions OIDC are reference adapters in v0.1; SAML, LDAP/AD, Okta, Auth0, Keycloak are documented under the same contract. See Identity Boundaries and Policy Projections. -
Typed simplicial complex framing (Zargham 2026) — one related research line; not on
flexo-rtm's roadmap. Per ADR-032 Methodology Agnosticism as Foundational Axiom,flexo-rtm's v0.1 vocabulary (typed attestations, aspects, named approvers) aligns with this research line as forward-compatible interop, not as a commitment to its eventual destination; adopters who choose to run a topological audit as one possible downstream-analysis mode can do so without translation, and adopters who don't are unaffected. See Topological Framework Future Work. -
TDA capability — tracks the topological research line, not
flexo-rtm's roadmap; relevant only to adopters running topological downstream analysis.
Four gaps in the prototype are explicit non-features. flexo-rtm closes them:
-
No formal certification predicate specification. The prototype implements an audit, in code. The predicate "is this RTM certified?" is implicit in the audit module's procedures.
flexo-rtmmakes the predicate explicit and declarative — SHACL + SPARQL forms an executable specification, separable from any particular runtime. -
No transcript-as-replayable-artifact. The prototype emits
output/audit.mdandoutput/audit.csv— human-readable summaries. There is no machine-replayable log of the SPARQL queries and SHACL validations that produced the verdict.flexo-rtmemits a transcript that another implementation can re-execute against the same graph and confirm the same verdict. -
No first-class scope. The prototype audits the whole dataset, every time. There is no way to say "certify just REQ-003 and its dependencies under aspect
safety."flexo-rtm'srtm:Scoperesource is the answer. -
RTM data is RDF-native end-to-end. Fine for the prototype — there is no public API. For
flexo-rtm's service-readiness goal, Pydantic facades at the OpenAPI boundary are required so that callers do not need to speak SPARQL.
The prototype's eight named graphs become examples/adcs-corpus/ in flexo-rtm. Certification of this corpus is a regression test: the verdict computed by flexo-rtm v0.1 against the adopted-as-is ADCS data must match the verdict the prototype computes today. Drift is an ontology bug.
Importantly: the corpus already exercises adequacy and sufficiency attestations (REQ-001..004 each have both, via the GSN nodes), so v0.1 must support Attestation Infrastructure in v0.1 to pass regression — it is not optional, even though v0.1 ships none of the topological audits. The corpus also includes a deliberately-declined attestation (REQ-001, earl:failed) so the regression covers the "well-formed-but-not-passing" case as well as the passing case.
Going forward:
-
ADCS-lifecycle-demokeeps: the ADCS-specific structural model (satellite, parameters, controllers), the SymPy proof scripts, the scipy simulation harness, the live Flexo MMS provisioning recipes, and the live integration tests. It is the canonical demo of using the framework on a real engineering problem. -
flexo-rtmis: the framework the prototype consumes. Core ontology + profiles + scope resource + certification predicate + transcript format + signed-envelope vocabulary + identity adapters + OSLC adapters + Claude skill + (v0.2) OpenAPI service. -
Migration direction: the prototype migrates to depend on
flexo-rtm. It stops carrying its own copy of the framework half of the ontology; it importsflexo-rtmand adds the ADCS-specific profile on top. The live Flexo integration tests in the prototype become end-to-end smoke tests for the framework as well.
This boundary is what lets flexo-rtm ship as a domain-general framework while keeping the prototype as a continuously-running demonstration that the framework actually works on a real engineering artifact.
The ADCS prototype is one of two internal sibling packages whose prior art flexo-rtm directly inherits. See also:
-
Multi-Agent Discourse Graph Precedent —
multi-agent-dgis the sibling DSG package demonstrating the patchwork-of-named-graphs substrate (multi-owner RDF graphs, declared sharing policies compiled to SPARQL, post-export boundary invariants) that the Federated Audit and Composition primitive rides on. Where ADCS-lifecycle-demo proves the framework on a single engineering problem,multi-agent-dgproves the federated machinery underneath the composition story.
- 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