osqar 0.5.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. osqar-0.5.2/CHANGELOG.md +201 -0
  2. osqar-0.5.2/LICENSE +158 -0
  3. osqar-0.5.2/MANIFEST.in +15 -0
  4. osqar-0.5.2/NOTICE +10 -0
  5. osqar-0.5.2/PKG-INFO +156 -0
  6. osqar-0.5.2/README.md +139 -0
  7. osqar-0.5.2/osqar.egg-info/PKG-INFO +156 -0
  8. osqar-0.5.2/osqar.egg-info/SOURCES.txt +72 -0
  9. osqar-0.5.2/osqar.egg-info/dependency_links.txt +1 -0
  10. osqar-0.5.2/osqar.egg-info/entry_points.txt +2 -0
  11. osqar-0.5.2/osqar.egg-info/requires.txt +5 -0
  12. osqar-0.5.2/osqar.egg-info/top_level.txt +2 -0
  13. osqar-0.5.2/osqar_data/__init__.py +9 -0
  14. osqar-0.5.2/osqar_data/static/custom.css +25 -0
  15. osqar-0.5.2/osqar_data/static/furo-fixes.css +73 -0
  16. osqar-0.5.2/osqar_data/templates/basic/c/04_implementation.rst +8 -0
  17. osqar-0.5.2/osqar_data/templates/basic/c/CMakeLists.txt +8 -0
  18. osqar-0.5.2/osqar_data/templates/basic/c/README.md +17 -0
  19. osqar-0.5.2/osqar_data/templates/basic/c/conf.py +92 -0
  20. osqar-0.5.2/osqar_data/templates/basic/c/include/project.h +11 -0
  21. osqar-0.5.2/osqar_data/templates/basic/c/index.rst +14 -0
  22. osqar-0.5.2/osqar_data/templates/basic/c/src/project.c +5 -0
  23. osqar-0.5.2/osqar_data/templates/basic/c/tests/test_project.c +5 -0
  24. osqar-0.5.2/osqar_data/templates/basic/cpp/04_implementation.rst +8 -0
  25. osqar-0.5.2/osqar_data/templates/basic/cpp/CMakeLists.txt +8 -0
  26. osqar-0.5.2/osqar_data/templates/basic/cpp/README.md +17 -0
  27. osqar-0.5.2/osqar_data/templates/basic/cpp/conf.py +92 -0
  28. osqar-0.5.2/osqar_data/templates/basic/cpp/include/project.hpp +5 -0
  29. osqar-0.5.2/osqar_data/templates/basic/cpp/index.rst +14 -0
  30. osqar-0.5.2/osqar_data/templates/basic/cpp/src/project.cpp +5 -0
  31. osqar-0.5.2/osqar_data/templates/basic/cpp/tests/test_project.cpp +5 -0
  32. osqar-0.5.2/osqar_data/templates/basic/python/04_implementation.rst +7 -0
  33. osqar-0.5.2/osqar_data/templates/basic/python/README.md +23 -0
  34. osqar-0.5.2/osqar_data/templates/basic/python/conf.py +92 -0
  35. osqar-0.5.2/osqar_data/templates/basic/python/index.rst +14 -0
  36. osqar-0.5.2/osqar_data/templates/basic/python/src/__init__.py +1 -0
  37. osqar-0.5.2/osqar_data/templates/basic/python/src/project.py +2 -0
  38. osqar-0.5.2/osqar_data/templates/basic/python/tests/__init__.py +0 -0
  39. osqar-0.5.2/osqar_data/templates/basic/python/tests/test_project.py +5 -0
  40. osqar-0.5.2/osqar_data/templates/basic/rust/04_implementation.rst +7 -0
  41. osqar-0.5.2/osqar_data/templates/basic/rust/Cargo.toml +7 -0
  42. osqar-0.5.2/osqar_data/templates/basic/rust/README.md +17 -0
  43. osqar-0.5.2/osqar_data/templates/basic/rust/conf.py +94 -0
  44. osqar-0.5.2/osqar_data/templates/basic/rust/index.rst +14 -0
  45. osqar-0.5.2/osqar_data/templates/basic/rust/src/lib.rs +13 -0
  46. osqar-0.5.2/osqar_data/templates/basic/shared/01_requirements.rst +6 -0
  47. osqar-0.5.2/osqar_data/templates/basic/shared/02_architecture.rst +7 -0
  48. osqar-0.5.2/osqar_data/templates/basic/shared/03_verification.rst +7 -0
  49. osqar-0.5.2/osqar_data/templates/basic/shared/04_implementation.rst +35 -0
  50. osqar-0.5.2/osqar_data/templates/basic/shared/05_test_results.rst +12 -0
  51. osqar-0.5.2/osqar_data/templates/basic/shared/06_lifecycle_management.rst +6 -0
  52. osqar-0.5.2/osqar_data/templates/basic/shared/_static/custom.css +1 -0
  53. osqar-0.5.2/osqar_data/templates/basic/shared/build-and-test.sh +28 -0
  54. osqar-0.5.2/osqar_data/templates/basic/shared/osqar_project.json +11 -0
  55. osqar-0.5.2/osqar_data/templates/basic/shared/poetry.lock +1712 -0
  56. osqar-0.5.2/osqar_data/templates/basic/shared/pyproject.toml +46 -0
  57. osqar-0.5.2/osqar_data/templates/basic/shared/requirements-docs.txt +5 -0
  58. osqar-0.5.2/pyproject.toml +68 -0
  59. osqar-0.5.2/setup.cfg +4 -0
  60. osqar-0.5.2/tools/__init__.py +4 -0
  61. osqar-0.5.2/tools/code_trace_check.py +568 -0
  62. osqar-0.5.2/tools/generate_checksums.py +258 -0
  63. osqar-0.5.2/tools/osqar_cli.py +59 -0
  64. osqar-0.5.2/tools/osqar_cli_util.py +693 -0
  65. osqar-0.5.2/tools/osqar_cmd_checksum.py +66 -0
  66. osqar-0.5.2/tools/osqar_cmd_code_trace.py +117 -0
  67. osqar-0.5.2/tools/osqar_cmd_doctor.py +510 -0
  68. osqar-0.5.2/tools/osqar_cmd_framework.py +153 -0
  69. osqar-0.5.2/tools/osqar_cmd_new.py +279 -0
  70. osqar-0.5.2/tools/osqar_cmd_open_docs.py +86 -0
  71. osqar-0.5.2/tools/osqar_cmd_shipment.py +1331 -0
  72. osqar-0.5.2/tools/osqar_cmd_traceability.py +50 -0
  73. osqar-0.5.2/tools/osqar_cmd_workspace.py +1338 -0
  74. osqar-0.5.2/tools/traceability_check.py +338 -0
@@ -0,0 +1,201 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.5.2] - 2026-02-06
11
+
12
+ ### Added
13
+ - PyPI-distributable OSQAr CLI (`pipx install osqar`) with packaged scaffolding templates.
14
+
15
+ ### Changed
16
+ - `osqar new` now loads templates from packaged resources (works when installed from PyPI; examples are not shipped).
17
+
18
+ ## [0.5.1] - 2026-02-06
19
+
20
+ ### Changed
21
+ - Refactored the OSQAr CLI internals into per-command modules under `tools/` (thin `tools/osqar_cli.py` entrypoint).
22
+ - Removed the previously monolithic `tools/osqar_cli_app/` implementation to improve maintainability.
23
+
24
+ ### Fixed
25
+ - Workspace intake overview now shows project names (instead of a blank Project column).
26
+
27
+ ## [0.5.0] - 2026-02-06
28
+
29
+ ### Added
30
+ - Extensible JSON configuration for projects and workspaces:
31
+ - `osqar_project.json` supports `commands.docs`, `commands.test`, `commands.build`
32
+ - `osqar_workspace.json` supports `defaults.exclude` and integrator-side hooks
33
+ - Pre/post hook execution around key CLI events (shipment and workspace workflows)
34
+ - Hook kill switch: `--no-hooks` and environment `OSQAR_DISABLE_HOOKS=1`
35
+ - Integrator-side extra verification commands:
36
+ - `shipment verify --verify-command '<cmd>'` (repeatable)
37
+ - `workspace verify --verify-command '<cmd>'` (repeatable)
38
+ - Dedicated documentation page: “Configuration and hooks”
39
+
40
+ ### Changed
41
+ - `build-docs` (top-level shorthand) now also accepts `--config` and `--no-hooks` for parity with `shipment build-docs`
42
+ - Documentation now clarifies the security model: do not execute untrusted commands/hooks from received bundles
43
+
44
+ ## [0.4.2] - 2026-02-06
45
+
46
+ ### Added
47
+ - Workspace HTML overview now follows the main docs theme and includes shared CSS fixes
48
+
49
+ ### Changed
50
+ - Workspace HTML overview renders explicit verification status values for checksums/traceability (OK / FAIL / skipped)
51
+
52
+ ### Fixed
53
+ - Workspace HTML overview no longer appears visually empty in some themes
54
+ - Workspace overview renders placeholders for missing shipment metadata fields (version/origin)
55
+
56
+ ## [0.4.1] - 2026-02-06
57
+
58
+ ### Added
59
+ - `osqar open-docs` convenience command for opening built HTML docs
60
+ - `osqar build-docs --open` to build and open docs in one step
61
+ - Generalized shipment workflows (`shipment prepare`, `shipment verify`) with supplier/integrator commands kept as aliases
62
+ - `osqar doctor` tooling diagnostics (Poetry/Sphinx/PlantUML checks)
63
+
64
+ ### Changed
65
+ - Documentation now consistently prefers `./osqar` shorthand for traceability and checksums
66
+
67
+ ## [0.4.0] - 2026-02-05
68
+
69
+ ### Added
70
+ - Central CLI reference documentation and reduced CLI duplication across guides
71
+ - Cross-platform `osqar` wrapper scripts (`osqar`, `osqar.cmd`, `osqar.ps1`) and a shorthand `build-docs` command
72
+ - Minimal “basic” project templates (C/C++/Rust/Python) with shared template overlays
73
+ - Poetry-managed scaffolds (shared `pyproject.toml` + `poetry.lock`) for fixed documentation/tooling dependencies
74
+
75
+ ### Changed
76
+ - Documentation now prefers `./osqar build-docs` over raw `sphinx-build` invocations
77
+ - `osqar build-docs` prefers running Sphinx inside the target project’s Poetry environment when available
78
+ - Documentation navigation: moved CLI reference and project setup under the Framework section
79
+
80
+ ### Fixed
81
+ - Migrated project metadata to PEP 621 (`[project]`) to avoid Poetry deprecation warnings
82
+
83
+ ## [0.3.1] - 2026-02-03
84
+
85
+ ### Added
86
+ - Embedded JUnit test tables in example documentation (`test-results`), with CI/Pages generating per-example `test_results.xml` before Sphinx builds
87
+ - Embedded per-example code coverage evidence (`coverage_report.txt`) in CI/Pages builds
88
+ - Embedded per-example complexity evidence (`complexity_report.txt`) adjacent to coverage in the shared test results chapter
89
+
90
+ ### Fixed
91
+ - Normalized C/C++/Rust JUnit XML writers to include `errors`, `skipped`, and `time` attributes (prevents `-1` values in rendered summaries)
92
+
93
+ ## [0.3.0] - 2026-02-02
94
+
95
+ ### Added
96
+ - Reproducible native build mode for the C/C++/Rust examples (`OSQAR_REPRODUCIBLE=1` + `SOURCE_DATE_EPOCH`)
97
+ - Optional Bazel integration for the C/C++/Rust examples, including a reproducible `--config=reproducible` mode
98
+ - CI pipeline that builds deterministic example “shipments” (docs + `needs.json` + traceability report + checksums + test report) and uploads them as a downloadable artifact (`osqar-example-shipments`)
99
+
100
+ ### Changed
101
+ - Updated framework documentation and README to advertise reproducible builds and CI demo shipments
102
+ - Reframed OSQAr as a framework for producing, verifying, and integrating auditable evidence shipments
103
+ - Updated Copilot instructions to reflect Poetry-driven Sphinx builds and the shipment workflow
104
+ - CI now builds example shipments in separate jobs (matrix) and combines them afterwards for faster, isolated feedback
105
+
106
+ ### Fixed
107
+ - Fixed a reStructuredText formatting issue in the framework docs that broke the Bazel example code block
108
+ - Fixed Bazel 9 compatibility for the C/C++ examples by explicitly loading `cc_*` rules from `rules_cc`
109
+ - Fixed CI doc builds after Bazel runs by excluding `bazel-*` output trees from Sphinx source discovery (prevents duplicate need IDs)
110
+ - Fixed Bazel wrapper scripts to write JUnit XML to a workspace path (prevents missing `test_results.xml` in CI)
111
+
112
+ ## [0.2.4] - 2026-02-02
113
+
114
+ ### Changed
115
+ - Simplified and restructured the framework documentation entry points to reduce hierarchy and redundancy
116
+ - Removed Markdown boilerplate docs under `docs/` in favor of the published Sphinx documentation
117
+ - Aligned README and framework docs feature descriptions with implemented tooling and configuration
118
+
119
+ ### Added
120
+ - Prominent note that this repository is an example/boilerplate with LLM-assisted/generated content
121
+
122
+ ## [0.2.3] - 2026-02-01
123
+
124
+ ### Added
125
+ - Framework documentation on multi-user collaboration workflows (branching/merging strategies and conflict minimization)
126
+
127
+ ### Fixed
128
+ - Cleaned up and expanded the shared TSIM lifecycle management chapter (removed duplicated content; added practical examples and actions)
129
+
130
+ ## [0.2.2] - 2026-02-01
131
+
132
+ ### Added
133
+ - Integrator multi-project workflow documentation ("Multi-project workflows")
134
+ - Workspace intake/verify tooling for multi-shipment workflows, including a "Subproject overview" (HTML/JSON) with entrypoint links and needs.json-derived counts
135
+ - Optional supplier-provided shipment metadata file (osqar_project.json) with descriptive info, URLs, and origin
136
+
137
+ ## [0.2.1] - 2026-02-01
138
+
139
+ ### Added
140
+ - Shipment-oriented CLI commands to build docs, run tests, clean outputs, collect test reports, generate/verify checksums, and package shipments
141
+ - Unified shipment/workspace workflows for producing and verifying evidence bundles
142
+ - Extensive lifecycle management documentation at framework level and included in each example
143
+
144
+ ## [0.2.0] - 2026-02-01
145
+
146
+ ### Added
147
+ - Complete Temperature Monitor (TSIM) example demonstrating OSQAr capabilities
148
+ - Interactive traceability with 111 clickable requirement links
149
+ - Automated test integration with JUnit XML import
150
+ - PlantUML architecture diagrams with requirement traceability
151
+ - Domain-agnostic thermal sensor interface module (TSIM)
152
+ - Comprehensive test suite with 13 test cases
153
+ - Sphinx documentation with sphinx-needs traceability
154
+ - Poetry-based dependency management
155
+ - GitHub Actions CI/CD template
156
+ - Linked requirement IDs across all documentation
157
+ - Export of machine-readable traceability (`needs.json`) for framework docs and examples
158
+ - Traceability validation tool producing `traceability_report.json`
159
+ - Shipment integrity tool to generate and verify `SHA256SUMS` for example build outputs
160
+ - Supplier/integrator documentation for shipment-style evidence transfer and verification
161
+ - Simple OSQAr CLI (`./osqar` and Windows wrappers `osqar.cmd` / `osqar.ps1`) for scaffolding and verification tasks
162
+
163
+ ### Changed
164
+ - Version bumped to `0.2.0`
165
+ - CI and Pages workflows now run traceability checks and generate checksums for published examples
166
+ - Python compatibility constrained to `<3.14` due to upstream dependency support
167
+
168
+ ### Fixed
169
+ - Root docs build no longer indexes `.venv` contents when building locally
170
+
171
+ ### Changed
172
+ - Enhanced traceability matrix with clickable links
173
+ - Improved documentation structure with cross-references
174
+
175
+ ### Fixed
176
+ - PlantUML rendering compatibility issues
177
+ - Python version compatibility (3.11+)
178
+
179
+ ## [0.1.0] - 2026-01-23
180
+
181
+ ### Added
182
+ - Initial release of OSQAr (Open Safety Qualification Architecture)
183
+ - Core Sphinx configuration with sphinx-needs
184
+ - Basic documentation boilerplate
185
+ - Poetry project setup
186
+ - Apache-2.0 License
187
+
188
+ ### Changed
189
+ - N/A (initial release)
190
+
191
+ ### Deprecated
192
+ - N/A (initial release)
193
+
194
+ ### Removed
195
+ - N/A (initial release)
196
+
197
+ ### Fixed
198
+ - N/A (initial release)
199
+
200
+ ### Security
201
+ - N/A (initial release)
osqar-0.5.2/LICENSE ADDED
@@ -0,0 +1,158 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ 2. Grant of Copyright License. Subject to the terms and conditions of
13
+ this License, each contributor hereby grants to You a perpetual,
14
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
15
+ copyright license to reproduce, prepare Derivative Works of,
16
+ publicly display, publicly perform, sublicense, and distribute the
17
+ Work and such Derivative Works in Source or Object form.
18
+
19
+ 3. Grant of Patent License. Subject to the terms and conditions of
20
+ this License, each contributor hereby grants to You a perpetual,
21
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
22
+ (except as stated in this section) patent license to make, have
23
+ made, use, offer to sell, sell, import, and otherwise transfer the
24
+ Work, where such license applies only to those patent claims
25
+ licensable by such contributor that are necessarily infringed by
26
+ their Contribution(s) alone or by combination of their
27
+ Contribution(s) with the Work to which such Contribution(s)
28
+ was submitted. If You institute patent litigation against any
29
+ entity (including a cross-claim or counterclaim in a lawsuit)
30
+ alleging that the Work or a Contribution incorporated within the
31
+ Work constitutes direct or contributory patent infringement,
32
+ then any patent licenses granted to You under this License for
33
+ that Work shall terminate as of the date such litigation is filed.
34
+
35
+ 4. Redistribution. You may reproduce and distribute copies of the
36
+ Work or Derivative Works thereof in any medium, with or without
37
+ modifications, and in Source or Object form, provided that You
38
+ meet the following conditions:
39
+
40
+ (a) You must give any other recipients of the Work or
41
+ Derivative Works a copy of this License; and
42
+
43
+ (b) You must cause any modified files to carry prominent notices
44
+ stating that You changed the files; and
45
+
46
+ (c) You must retain, in the Source form of any Derivative Works
47
+ that You distribute, all copyright, patent, trademark, and
48
+ attribution notices from the Source form of the Work,
49
+ excluding those notices that do not pertain to any part of
50
+ the Derivative Works; and
51
+
52
+ (d) If the Work includes a "NOTICE" text file as part of its
53
+ distribution, then any Derivative Works that You distribute must
54
+ include a readable copy of the attribution notices contained
55
+ within such NOTICE file, excluding those notices that do not
56
+ pertain to any part of the Derivative Works, in at least one
57
+ of the following places: within a NOTICE text file distributed
58
+ as part of the Derivative Works; within the Source form or
59
+ documentation; or within a display generated by the Derivative
60
+ Works, provided that any such attribution notices do not
61
+ modify the license terms and conditions of this License.
62
+
63
+ You may add Your own attribution notices within Derivative Works
64
+ that You distribute, alongside or as an addendum to the NOTICE
65
+ text from the Work, provided that such additional attribution
66
+ notices cannot be construed as modifying the License.
67
+
68
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
69
+ any Contribution intentionally submitted for inclusion in the Work
70
+ by You to the Licensor shall be under the terms and conditions of
71
+ this License, without any additional terms or conditions.
72
+ Notwithstanding the above, nothing herein shall supersede or modify
73
+ the terms of any separate license agreement you may have executed
74
+ with Licensor regarding such Contributions.
75
+
76
+ 6. Trademarks. This License does not grant permission to use the trade
77
+ names, trademarks, service marks, or product names of the Licensor,
78
+ except as required for reasonable and customary use in describing the
79
+ origin of the Work and reproducing the content of the NOTICE file.
80
+
81
+ 7. Disclaimer of Warranty. Unless required by applicable law or
82
+ agreed to in writing, Licensor provides the Work (and each
83
+ Contributor provides its Contributions) on an "AS IS" BASIS,
84
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
85
+ implied, including, without limitation, any warranties or
86
+ conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or
87
+ FITNESS FOR A PARTICULAR PURPOSE.
88
+
89
+ 8. Limitation of Liability. In no event and under no legal theory,
90
+ whether in tort (including negligence), contract, or otherwise,
91
+ unless required by applicable law (such as deliberate and grossly
92
+ negligent acts) or agreed to in writing, shall any Contributor be
93
+ liable to You for damages, including any direct, indirect,
94
+ special, incidental, or consequential damages of any character
95
+ arising as a result of this License or out of the use or inability
96
+ to use the Work (including but not limited to damages for loss of
97
+ goodwill, work stoppage, computer failure or malfunction, or any
98
+ and all other commercial damages or losses), even if such
99
+ Contributor has been advised of the possibility of such damages.
100
+
101
+ 9. Accepting Warranty or Additional Liability. While redistributing
102
+ the Work or Derivative Works thereof, You may choose to offer,
103
+ and charge a fee for, acceptance of support, warranty, indemnity,
104
+ or other liability obligations and/or rights consistent with this
105
+ License. However, in accepting such obligations, You may act only
106
+ on Your own behalf and on Your sole responsibility, not on behalf
107
+ of any other Contributor, and only if You agree to indemnify,
108
+ defend, and hold each Contributor harmless for any liability
109
+ incurred by, or claims asserted against, such Contributor by reason
110
+ of your accepting any such warranty or additional liability.
111
+
112
+ END OF TERMS AND CONDITIONS
113
+
114
+ APPENDIX: How to apply the Apache License to your work.
115
+
116
+ To apply the Apache License to your work, attach the following
117
+ boilerplate notice, with the fields enclosed by brackets "[]"
118
+ replaced with your own identifying information. (Don't include
119
+ the brackets!) The text should be enclosed in the appropriate
120
+ comment syntax for the file format. We also recommend that a
121
+ file or class name and description of purpose be included on the
122
+ same "printed page" as the copyright notice for easier
123
+ identification within third-party archives.
124
+
125
+ Copyright [yyyy] [name of copyright owner]
126
+
127
+ Licensed under the Apache License, Version 2.0 (the "License");
128
+ you may not use this file except in compliance with the License.
129
+ You may obtain a copy of the License at
130
+
131
+ http://www.apache.org/licenses/LICENSE-2.0
132
+
133
+ Unless required by applicable law or agreed to in writing, software
134
+ distributed under the License is distributed on an "AS IS" BASIS,
135
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
136
+ implied. See the License for the specific language governing
137
+ permissions and limitations under the License.
138
+ MIT License
139
+
140
+ Copyright (c) 2026 OSQAr Contributors
141
+
142
+ Permission is hereby granted, free of charge, to any person obtaining a copy
143
+ of this software and associated documentation files (the "Software"), to deal
144
+ in the Software without restriction, including without limitation the rights
145
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
146
+ copies of the Software, and to permit persons to whom the Software is
147
+ furnished to do so, subject to the following conditions:
148
+
149
+ The above copyright notice and this permission notice shall be included in all
150
+ copies or substantial portions of the Software.
151
+
152
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
153
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
154
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
155
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
156
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
157
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
158
+ SOFTWARE.
@@ -0,0 +1,15 @@
1
+ include README.md
2
+ include CHANGELOG.md
3
+ include LICENSE
4
+ include NOTICE
5
+
6
+ # Ship packaged resources
7
+ recursive-include osqar_data/templates *
8
+ recursive-include osqar_data/static *
9
+
10
+ # Avoid shipping large/non-release directories
11
+ prune _build
12
+ prune examples
13
+ prune __pycache__
14
+ recursive-exclude * __pycache__
15
+ recursive-exclude * *.pyc
osqar-0.5.2/NOTICE ADDED
@@ -0,0 +1,10 @@
1
+ OSQAr - Open Safety Qualification Architecture
2
+
3
+ Copyright 2026 Jan Toennemann
4
+
5
+ This product is licensed under the Apache License, Version 2.0.
6
+ See the `LICENSE` file for the full license text and conditions.
7
+
8
+ Third-party notices:
9
+ - This project depends on several open-source libraries (see `pyproject.toml`).
10
+ - No separate third-party NOTICE entries are included at this time.
osqar-0.5.2/PKG-INFO ADDED
@@ -0,0 +1,156 @@
1
+ Metadata-Version: 2.4
2
+ Name: osqar
3
+ Version: 0.5.2
4
+ Summary: Open Safety Qualification Architecture - A Sphinx-Needs boilerplate for safety-related systems.
5
+ Author-email: Jan Toennemann <jan@toennemann.net>
6
+ License-Expression: Apache-2.0
7
+ Requires-Python: <3.15,>=3.9
8
+ Description-Content-Type: text/markdown
9
+ License-File: LICENSE
10
+ License-File: NOTICE
11
+ Requires-Dist: Sphinx==7.2.*
12
+ Requires-Dist: sphinx-needs>=2.0
13
+ Requires-Dist: sphinx-test-reports>=1.0
14
+ Requires-Dist: sphinxcontrib-plantuml>=0.25
15
+ Requires-Dist: furo>=2024.8.6
16
+ Dynamic: license-file
17
+
18
+ [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
19
+ [![CI (Tests and Builds)](https://github.com/bitvortex/OSQAr/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/bitvortex/OSQAr/actions/workflows/ci.yml)
20
+ [![Docs (GitHub Pages)](https://github.com/bitvortex/OSQAr/actions/workflows/pages-deploy.yml/badge.svg?branch=main)](https://github.com/bitvortex/OSQAr/actions/workflows/pages-deploy.yml)
21
+
22
+ # OSQAr
23
+
24
+ Open Safety Qualification Architecture (OSQAr) is a documentation-first framework for producing and integrating **auditable evidence shipments** for safety/compliance work.
25
+
26
+ 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.
27
+
28
+ ## Who this is for
29
+
30
+ OSQAr is for teams that need **auditable, reviewable engineering evidence** with traceability (requirements ↔ architecture ↔ verification), especially when evidence must be transferred between organizations.
31
+
32
+ Typical roles and workflows:
33
+
34
+ - **Suppliers**: build docs and verification evidence, then prepare integrity-protected shipments (HTML + `needs.json` + reports + `SHA256SUMS`).
35
+ - **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.
36
+ - **Internal teams**: use the same shipment workflow to standardize evidence packaging across subprojects and CI.
37
+
38
+ ## Features / use cases
39
+
40
+ - Write structured requirements, architecture and verification plans in reStructuredText (traceability via `sphinx-needs`)
41
+ - Render architecture diagrams with PlantUML (embedded in the docs)
42
+ - Export machine-readable traceability (`needs.json`) alongside HTML
43
+ - Generate traceability views (e.g., matrices) and keep verification coverage reviewable
44
+ - Verify traceability rules and produce audit-friendly reports
45
+ - Trace requirements, architecture and tests into the actual code and check for consistency
46
+ - Package documentation + evidence artifacts and protect them with checksum manifests
47
+ - Integrate multiple shipments in a workspace and review a consolidated overview
48
+ - Extend workflows via project and workspace configuration (custom commands + hooks)
49
+ - Use lifecycle management and collaboration workflows for multi-user teams
50
+ - Run reproducible native builds for the C/C++/Rust reference examples with optional Bazel integration
51
+ - 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
52
+
53
+ ## Docs and examples
54
+
55
+ - Framework docs (published): https://bitvortex.github.io/OSQAr/
56
+ - Examples index (published): https://bitvortex.github.io/OSQAr/examples/
57
+ - Download pre-built bundles (framework bundle, example workspace): https://github.com/bitvortex/OSQAr/releases
58
+
59
+ ## Quickstart
60
+
61
+ Dependencies:
62
+
63
+ - Python `>=3.9` (see `pyproject.toml`)
64
+ - Poetry: https://python-poetry.org/
65
+ - Optional for offline PlantUML rendering: Java and/or PlantUML (`PLANTUML_JAR` also works). If neither is available, the build falls back to the public PlantUML web service (requires internet).
66
+
67
+ Install the OSQAr CLI (recommended for users):
68
+
69
+ ```bash
70
+ pipx install osqar
71
+ osqar --help
72
+ ```
73
+
74
+ Notes:
75
+
76
+ - The PyPI package includes the **minimal project templates** used by `osqar new`.
77
+ - The full reference `examples/` are not shipped on PyPI; use the git repo or release bundles if you need them.
78
+
79
+ Build the framework documentation (repo root):
80
+
81
+ ```bash
82
+ poetry install
83
+ ./osqar build-docs
84
+ ./osqar open-docs
85
+ ```
86
+
87
+ Build an example’s documentation (choose one):
88
+
89
+ ```bash
90
+ ./osqar build-docs --project examples/c_hello_world
91
+ ./osqar build-docs --project examples/cpp_hello_world
92
+ ./osqar build-docs --project examples/rust_hello_world
93
+ ./osqar build-docs --project examples/python_hello_world
94
+ ```
95
+
96
+ Run an example end-to-end (tests → docs), including optional evidence tooling:
97
+
98
+ ```bash
99
+ poetry install --with evidence
100
+ cd examples/c_hello_world
101
+ ./build-and-test.sh
102
+ ```
103
+
104
+ Create a new project (minimal template scaffold):
105
+
106
+ ```bash
107
+ # Default template profile is "basic" (lean scaffold)
108
+ ./osqar new --language c --name MySEooC --destination ../MySEooC
109
+ ```
110
+
111
+ Notes:
112
+
113
+ - The `./osqar` wrapper is intended to be run from the OSQAr repo root.
114
+ - On Windows, use `osqar.cmd` or `osqar.ps1` from the repo root.
115
+
116
+ ## Extensibility (custom commands + hooks)
117
+
118
+ 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.
119
+
120
+ Project-side config: `osqar_project.json`
121
+
122
+ - Put this file in a project root (supplier/dev side).
123
+ - Use `commands.test` and `commands.docs` to override how tests and docs are executed.
124
+ - Use `hooks.pre` / `hooks.post` to run pre/post actions around OSQAr command events.
125
+
126
+ Example:
127
+
128
+ ```json
129
+ {
130
+
131
+ "commands": {
132
+ "test": "OSQAR_REPRODUCIBLE=1 ./build-and-test.sh",
133
+ "docs": "poetry run sphinx-build -b html . _build/html"
134
+ },
135
+ "hooks": {
136
+ "pre": {
137
+ "shipment.prepare": "echo pre-prepare"
138
+ },
139
+ "post": {
140
+ "shipment.prepare": ["echo post-prepare", "echo done"]
141
+ }
142
+ }
143
+ }
144
+ ```
145
+
146
+ Integrator-side config: `osqar_workspace.json`
147
+
148
+ - Put this file in a trusted integrator workspace root and use it with `workspace report/verify/intake`.
149
+ - You can also attach extra integrator-side checks to shipment verification via `--verify-command` (repeatable).
150
+ - For `shipment verify`, use `--config-root <trusted_dir>` to load workspace config from a trusted location.
151
+
152
+ Hook kill switch:
153
+
154
+ - Set `OSQAR_DISABLE_HOOKS=1` or pass `--no-hooks`.
155
+
156
+ See the published docs for the full reference (supported keys, hook events, and security notes).
osqar-0.5.2/README.md ADDED
@@ -0,0 +1,139 @@
1
+ [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
2
+ [![CI (Tests and Builds)](https://github.com/bitvortex/OSQAr/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/bitvortex/OSQAr/actions/workflows/ci.yml)
3
+ [![Docs (GitHub Pages)](https://github.com/bitvortex/OSQAr/actions/workflows/pages-deploy.yml/badge.svg?branch=main)](https://github.com/bitvortex/OSQAr/actions/workflows/pages-deploy.yml)
4
+
5
+ # OSQAr
6
+
7
+ Open Safety Qualification Architecture (OSQAr) is a documentation-first framework for producing and integrating **auditable evidence shipments** for safety/compliance work.
8
+
9
+ 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.
10
+
11
+ ## Who this is for
12
+
13
+ OSQAr is for teams that need **auditable, reviewable engineering evidence** with traceability (requirements ↔ architecture ↔ verification), especially when evidence must be transferred between organizations.
14
+
15
+ Typical roles and workflows:
16
+
17
+ - **Suppliers**: build docs and verification evidence, then prepare integrity-protected shipments (HTML + `needs.json` + reports + `SHA256SUMS`).
18
+ - **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.
19
+ - **Internal teams**: use the same shipment workflow to standardize evidence packaging across subprojects and CI.
20
+
21
+ ## Features / use cases
22
+
23
+ - Write structured requirements, architecture and verification plans in reStructuredText (traceability via `sphinx-needs`)
24
+ - Render architecture diagrams with PlantUML (embedded in the docs)
25
+ - Export machine-readable traceability (`needs.json`) alongside HTML
26
+ - Generate traceability views (e.g., matrices) and keep verification coverage reviewable
27
+ - Verify traceability rules and produce audit-friendly reports
28
+ - Trace requirements, architecture and tests into the actual code and check for consistency
29
+ - Package documentation + evidence artifacts and protect them with checksum manifests
30
+ - Integrate multiple shipments in a workspace and review a consolidated overview
31
+ - Extend workflows via project and workspace configuration (custom commands + hooks)
32
+ - Use lifecycle management and collaboration workflows for multi-user teams
33
+ - Run reproducible native builds for the C/C++/Rust reference examples with optional Bazel integration
34
+ - 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
35
+
36
+ ## Docs and examples
37
+
38
+ - Framework docs (published): https://bitvortex.github.io/OSQAr/
39
+ - Examples index (published): https://bitvortex.github.io/OSQAr/examples/
40
+ - Download pre-built bundles (framework bundle, example workspace): https://github.com/bitvortex/OSQAr/releases
41
+
42
+ ## Quickstart
43
+
44
+ Dependencies:
45
+
46
+ - Python `>=3.9` (see `pyproject.toml`)
47
+ - Poetry: https://python-poetry.org/
48
+ - Optional for offline PlantUML rendering: Java and/or PlantUML (`PLANTUML_JAR` also works). If neither is available, the build falls back to the public PlantUML web service (requires internet).
49
+
50
+ Install the OSQAr CLI (recommended for users):
51
+
52
+ ```bash
53
+ pipx install osqar
54
+ osqar --help
55
+ ```
56
+
57
+ Notes:
58
+
59
+ - The PyPI package includes the **minimal project templates** used by `osqar new`.
60
+ - The full reference `examples/` are not shipped on PyPI; use the git repo or release bundles if you need them.
61
+
62
+ Build the framework documentation (repo root):
63
+
64
+ ```bash
65
+ poetry install
66
+ ./osqar build-docs
67
+ ./osqar open-docs
68
+ ```
69
+
70
+ Build an example’s documentation (choose one):
71
+
72
+ ```bash
73
+ ./osqar build-docs --project examples/c_hello_world
74
+ ./osqar build-docs --project examples/cpp_hello_world
75
+ ./osqar build-docs --project examples/rust_hello_world
76
+ ./osqar build-docs --project examples/python_hello_world
77
+ ```
78
+
79
+ Run an example end-to-end (tests → docs), including optional evidence tooling:
80
+
81
+ ```bash
82
+ poetry install --with evidence
83
+ cd examples/c_hello_world
84
+ ./build-and-test.sh
85
+ ```
86
+
87
+ Create a new project (minimal template scaffold):
88
+
89
+ ```bash
90
+ # Default template profile is "basic" (lean scaffold)
91
+ ./osqar new --language c --name MySEooC --destination ../MySEooC
92
+ ```
93
+
94
+ Notes:
95
+
96
+ - The `./osqar` wrapper is intended to be run from the OSQAr repo root.
97
+ - On Windows, use `osqar.cmd` or `osqar.ps1` from the repo root.
98
+
99
+ ## Extensibility (custom commands + hooks)
100
+
101
+ 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.
102
+
103
+ Project-side config: `osqar_project.json`
104
+
105
+ - Put this file in a project root (supplier/dev side).
106
+ - Use `commands.test` and `commands.docs` to override how tests and docs are executed.
107
+ - Use `hooks.pre` / `hooks.post` to run pre/post actions around OSQAr command events.
108
+
109
+ Example:
110
+
111
+ ```json
112
+ {
113
+
114
+ "commands": {
115
+ "test": "OSQAR_REPRODUCIBLE=1 ./build-and-test.sh",
116
+ "docs": "poetry run sphinx-build -b html . _build/html"
117
+ },
118
+ "hooks": {
119
+ "pre": {
120
+ "shipment.prepare": "echo pre-prepare"
121
+ },
122
+ "post": {
123
+ "shipment.prepare": ["echo post-prepare", "echo done"]
124
+ }
125
+ }
126
+ }
127
+ ```
128
+
129
+ Integrator-side config: `osqar_workspace.json`
130
+
131
+ - Put this file in a trusted integrator workspace root and use it with `workspace report/verify/intake`.
132
+ - You can also attach extra integrator-side checks to shipment verification via `--verify-command` (repeatable).
133
+ - For `shipment verify`, use `--config-root <trusted_dir>` to load workspace config from a trusted location.
134
+
135
+ Hook kill switch:
136
+
137
+ - Set `OSQAR_DISABLE_HOOKS=1` or pass `--no-hooks`.
138
+
139
+ See the published docs for the full reference (supported keys, hook events, and security notes).