Open Safety Qualification Architecture - A Sphinx-Needs boilerplate for safety-related systems.
Project description
OSQAr
Open Safety Qualification Architecture (OSQAr) is a documentation-first framework for producing and integrating auditable evidence shipments for safety/compliance work.
A shipment is a reviewable bundle that contains Sphinx documentation with maintained traceability, plus the implementation, tests, and analysis/verification reports needed to audit the evidence end-to-end.
Who this is for
OSQAr is for teams that need auditable, reviewable engineering evidence with traceability (requirements ↔ architecture ↔ verification), especially when evidence must be transferred between organizations.
Typical roles and workflows:
- Suppliers: build docs and verification evidence, then prepare integrity-protected shipments (HTML +
needs.json+ reports +SHA256SUMS). - Integrators: verify received shipments (checksums, optional traceability re-check), run extra integrator-side checks, and archive multiple shipments into a single intake with a consolidated HTML overview.
- Internal teams: use the same shipment workflow to standardize evidence packaging across subprojects and CI.
Features / use cases
- Write structured requirements, architecture and verification plans in reStructuredText (traceability via
sphinx-needs) - Render architecture diagrams with PlantUML (embedded in the docs)
- Export machine-readable traceability (
needs.json) alongside HTML - Generate traceability views (e.g., matrices) and keep verification coverage reviewable
- Verify traceability rules and produce audit-friendly reports
- Trace requirements, architecture and tests into the actual code and check for consistency
- Package documentation + evidence artifacts and protect them with checksum manifests
- Integrate multiple shipments in a workspace and review a consolidated overview
- Extend workflows via project and workspace configuration (custom commands + hooks)
- Use lifecycle management and collaboration workflows for multi-user teams
- Run reproducible native builds for the C/C++/Rust reference examples with optional Bazel integration
- Use CI-produced demo shipments and downloadable release bundles as a starting point for your own project setup, or scaffold new projects from minimal templates (C/C++/Rust/Python) via the OSQAr CLI
Docs and examples
- Framework docs (published): https://bitvortex.github.io/OSQAr/
- Examples index (published): https://bitvortex.github.io/OSQAr/examples/
- Download pre-built bundles (framework bundle, example workspace): https://github.com/bitvortex/OSQAr/releases
Quickstart
Dependencies:
- Python
>=3.9(seepyproject.toml) - Poetry: https://python-poetry.org/
- Optional for offline PlantUML rendering: Java and/or PlantUML (
PLANTUML_JARalso works). If neither is available, the build falls back to the public PlantUML web service (requires internet).
Install the OSQAr CLI (recommended for users):
pipx install osqar
osqar --help
Quickstart from a downloaded Release bundle (example workspace):
# Download the example workspace ZIP (and its .sha256) from GitHub Releases.
# Then verify checksum (if present), extract it, and verify all contained shipments:
osqar setup osqar_example_workspace_<tag>.zip
Notes:
- The PyPI package includes the minimal project templates used by
osqar new. - The full reference
examples/are not shipped on PyPI; use the git repo or release bundles if you need them.
Build the framework documentation (repo root):
poetry install
osqar build-docs
osqar open-docs
Build an example’s documentation (choose one):
osqar build-docs --project examples/c_hello_world
osqar build-docs --project examples/cpp_hello_world
osqar build-docs --project examples/rust_hello_world
osqar build-docs --project examples/python_hello_world
Run an example end-to-end (tests → docs), including optional evidence tooling:
poetry install --with evidence
cd examples/c_hello_world
./build-and-test.sh
Create a new project (minimal template scaffold):
# Default template profile is "basic" (lean scaffold)
osqar new --language c --name MySEooC --destination ../MySEooC
Notes:
- If you are working from a git clone and did not install the CLI via pipx, you can run the repo-root wrappers instead:
./osqar(Linux/macOS) orosqar.cmd/osqar.ps1(Windows).
Extensibility (custom commands + hooks)
OSQAr supports optional JSON configuration files so teams can plug in their own build/test/verification tooling while keeping OSQAr’s evidence structure, traceability, and integrity checks.
Project-side config: osqar_project.json
- Put this file in a project root (supplier/dev side).
- Use
commands.testandcommands.docsto override how tests and docs are executed. - Use
hooks.pre/hooks.postto run pre/post actions around OSQAr command events.
Example:
{
"commands": {
"test": "OSQAR_REPRODUCIBLE=1 ./build-and-test.sh",
"docs": "poetry run sphinx-build -b html . _build/html"
},
"hooks": {
"pre": {
"shipment.prepare": "echo pre-prepare"
},
"post": {
"shipment.prepare": ["echo post-prepare", "echo done"]
}
}
}
Integrator-side config: osqar_workspace.json
- Put this file in a trusted integrator workspace root and use it with
workspace report/verify/intake. - You can also attach extra integrator-side checks to shipment verification via
--verify-command(repeatable). - For
shipment verify, use--config-root <trusted_dir>to load workspace config from a trusted location.
Hook kill switch:
- Set
OSQAR_DISABLE_HOOKS=1or pass--no-hooks.
See the published docs for the full reference (supported keys, hook events, and security notes).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file osqar-0.6.0.tar.gz.
File metadata
- Download URL: osqar-0.6.0.tar.gz
- Upload date:
- Size: 112.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
45a89769d432fbe08d9f9a791eb632bc6efb3092a2a6dd081094ef143fcc2072
|
|
| MD5 |
72f36e5fe8c0f576b2a71e7e44e0445d
|
|
| BLAKE2b-256 |
ced5dedd0356a18161a666ba33e606238f1e3d6be0a46f96581e267d78e8135d
|
Provenance
The following attestation bundles were made for osqar-0.6.0.tar.gz:
Publisher:
release.yml on BitVortex/OSQAr
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
osqar-0.6.0.tar.gz -
Subject digest:
45a89769d432fbe08d9f9a791eb632bc6efb3092a2a6dd081094ef143fcc2072 - Sigstore transparency entry: 945864545
- Sigstore integration time:
-
Permalink:
BitVortex/OSQAr@3adeced12edc6e3cb76d7872fae0908c1f7f679d -
Branch / Tag:
refs/tags/v0.6.0 - Owner: https://github.com/BitVortex
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@3adeced12edc6e3cb76d7872fae0908c1f7f679d -
Trigger Event:
push
-
Statement type:
File details
Details for the file osqar-0.6.0-py3-none-any.whl.
File metadata
- Download URL: osqar-0.6.0-py3-none-any.whl
- Upload date:
- Size: 131.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa496a99fb9a80a3abfdfdccc82069f8ec5c8637380a71d86dfe4d351f81efdb
|
|
| MD5 |
591c3b9bb7d888ae11c0577327a66b82
|
|
| BLAKE2b-256 |
a60e57f9e0f1b1af45518120f3fcc327b4a1991243bcd671596502e1e6fff263
|
Provenance
The following attestation bundles were made for osqar-0.6.0-py3-none-any.whl:
Publisher:
release.yml on BitVortex/OSQAr
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
osqar-0.6.0-py3-none-any.whl -
Subject digest:
fa496a99fb9a80a3abfdfdccc82069f8ec5c8637380a71d86dfe4d351f81efdb - Sigstore transparency entry: 945864571
- Sigstore integration time:
-
Permalink:
BitVortex/OSQAr@3adeced12edc6e3cb76d7872fae0908c1f7f679d -
Branch / Tag:
refs/tags/v0.6.0 - Owner: https://github.com/BitVortex
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@3adeced12edc6e3cb76d7872fae0908c1f7f679d -
Trigger Event:
push
-
Statement type: