documentation_architecture — Compliance Evidence
Project: compliance-trestle (oscal-compass) · Criterion: The project MUST include documentation of the architecture (high-level design) of the software it produces.
Requirement Summary
A software architecture explains a program's fundamental structures — its major components, the relationships among them, and the key properties of those components and relationships. The criterion requires at least one URL pointing to that documentation.
Primary URL (Published Documentation)
Live architecture page
https://oscal-compass.github.io/compliance-trestle/latest/architecture/
This is the publicly hosted, versioned architecture page rendered from the project's MkDocs-Material documentation site. It is permanently accessible under the latest alias managed by mike.
Secondary URL (Repository Source)
Markdown source in repository (develop branch)
https://github.com/oscal-compass/compliance-trestle/blob/develop/docs/architecture.md
The architecture document is tracked under version control alongside the code it describes at docs/architecture.md.
What the Architecture Document Covers
The document addresses all three elements the criterion requires.
- Major Components
Eight distinct architectural layers are identified and mapped to their source locations:
Layer Location in codebase
Plugin Extension Point trestle/core/plugins.py
Entry Points — CLI & Python API trestle/cli.py, trestle/core/repository.py
Command Layer trestle/core/commands/
Catalog API trestle/core/catalog/
Profile Resolver trestle/core/profile_resolver.py, trestle/core/resolver/
Validator Framework trestle/core/validator.py, trestle/core/validator_factory.py
Markdown / Jinja / DrawIO Authoring trestle/core/control_{reader,writer}.py, trestle/core/markdown/, trestle/core/jinja/, trestle/core/draw_io.py
Signing & Canonicalization trestle/core/signing.py, trestle/core/canonicalization.py
Transform & Task Pipeline trestle/transforms/, trestle/tasks/
OSCAL Object Model trestle/oscal/, trestle/core/base_model.py
Workspace & Remote I/O trestle/common/, trestle/core/remote/cache.py
2. Relationships Among Components
A full ASCII component map in the document diagrams how the layers connect, with named, annotated edges:
Plugin packages inject CommandBase subclasses into Trestle.subcommands at module import time.
The CLI and Python API both dispatch to the Command Layer.
Commands delegate business logic to Core Services (Catalog API, Profile Resolver, Validators, Authoring, Signing).
All Core Services read and write through the OSCAL Object Model.
The OSCAL Object Model serialises to/from Workspace & Remote I/O.
3. Key Properties of Components and Relationships
Five named design properties are documented:
Property Description
Workspace-centric storage A .trestle/-rooted directory tree; documents may be single files or split into sub-directory hierarchies following the object hierarchy.
Schema-enforced I/O Every disk read/write passes through the Pydantic v2 model layer, guaranteeing schema validity at the boundary between disk and memory.
Composable pipelines Pipeline / Filter pattern (trestle/core/pipeline.py) used for profile resolution and OSCAL assembly; stages are independently testable and reusable.
Separation of concerns: CLI vs. API Commands delegate to core service classes; repository.py exposes the same services to Python callers without going through the CLI argument layer.
Extensibility via plugins The trestle_* package naming convention allows third-party command packages to be auto-discovered without any core dependency on them.
The document also includes a Security Requirements & Guarantees section specifying what users can and cannot rely on: input validation, SSRF protection, Jinja sandboxing, cryptographic provenance (DSSE / in-toto), supply chain integrity (SLSA), plugin trust boundaries, and encryption-at-rest limitations.
Integration with Broader Documentation Site
The architecture page is a top-level navigation item in the project's documentation site at https://oscal-compass.github.io/compliance-trestle/latest/, which is referenced from the project README.md:
"Complete documentation, tutorials, and background on compliance can be found here."
Criterion Satisfaction Summary
Criterion element Status Evidence
URL to architecture documentation ✅ Met oscal-compass.github.io/…/architecture/
Source file in repository ✅ Met docs/architecture.md (develop branch)
Major components identified ✅ Met 11 layers named and mapped to source paths
Relationships among components ✅ Met ASCII component map with labeled directional edges
Key properties of components/relationships ✅ Met 5 named design properties + security guarantees section
Versioned & publicly accessible ✅ Met MkDocs-Material + mike, always available at /latest/architecture/