Configuration Management and Design Transfer#
Document ID |
DHF-009 |
|---|---|
Version |
1.0 |
Date |
2026-03-22 |
Author |
pacs008 Engineering |
Status |
Released |
ISO 13485 Clauses |
7.3.8 (Design and Development Transfer), 4.2.3 (Control of Documents) |
1. Version Control#
1.1 Repository#
System: Git
Hosting: GitHub
Repository: pacs008 (private)
Default branch: main
1.2 Branching Strategy#
main — Production-ready code. All CI checks must pass before merge.
feature/ — Feature development branches. Created from main, merged back via pull request.
fix/ — Bug fix branches. Created from main, merged back via pull request.
All branches must pass the full CI pipeline before merge. Direct pushes to main are prohibited.
2. Commit Policy#
2.1 Signed Commits#
All commits must be cryptographically signed using GPG or SSH keys. This provides:
Authentication: Verifies the identity of the committer
Integrity: Guarantees the commit has not been tampered with
Non-repudiation: Creates an auditable chain of authorship
Unsigned commits are rejected by repository policy.
2.2 Commit Message Format#
Commits follow conventional commit format:
<type>(<scope>): <description>
[optional body]
[optional footer]
Types: feat, fix, docs, style, refactor, perf,
test, build, ci, chore
Examples:
feat(xml): add pacs.008.001.13 support with expiry datetime
fix(validation): correct IBAN checksum for edge case
test(gold-master): add v13 reference fixture
3. Pre-commit Hooks#
The .pre-commit-config.yaml file defines 13 hooks that run before every
commit:
# |
Hook |
Purpose |
|---|---|---|
1 |
trailing-whitespace |
Removes trailing whitespace from all files |
2 |
end-of-file-fixer |
Ensures every file ends with a single newline |
3 |
check-yaml |
Validates YAML file syntax |
4 |
check-json |
Validates JSON file syntax |
5 |
check-toml |
Validates TOML file syntax |
6 |
check-merge-conflict |
Detects unresolved merge conflict markers |
7 |
check-added-large-files |
Rejects files larger than 500 KB |
8 |
mixed-line-ending |
Enforces LF line endings ( |
9 |
detect-private-key |
Prevents accidental commit of private keys |
10 |
ruff (lint) |
Code linting with auto-fix ( |
11 |
ruff-format |
Consistent code formatting |
12 |
black |
Code style enforcement (line-length=79) |
13 |
mypy |
Static type checking (strict mode, pacs008/ only) |
4. Configuration Items#
Item |
Type |
Location |
|---|---|---|
Source code |
Python |
|
Test suite |
Python |
|
Jinja2 templates |
XML |
|
XSD schemas |
XML Schema |
|
Reference XML |
XML |
|
Project metadata |
TOML |
|
CI pipeline |
YAML |
|
Pre-commit config |
YAML |
|
Dockerfile |
Dockerfile |
|
Documentation |
RST |
|
Changelog |
Markdown |
|
DHF documents |
RST |
|
5. Baseline Definition#
Baseline: v0.0.1 (2026-03-21)
This baseline represents the initial release of the pacs008 library with the following verified characteristics:
Characteristic |
Value |
|---|---|
pacs.008 versions supported |
13 (001.01 through 001.13) |
Test count |
1,417 |
Branch coverage |
100% |
Bandit SAST findings |
0 |
mypy strict errors |
0 |
ruff/black violations |
0 |
Pre-commit hooks |
13 (all passing) |
CI matrix configurations |
14 (12 test + 1 lint + 1 security) |
Python versions |
3.9, 3.10, 3.11, 3.12 |
Operating systems |
Linux (Ubuntu), macOS, Windows |
Data source formats |
5 (CSV, JSON, JSONL, SQLite, Parquet) |
Risk mitigations |
12 (all verified, all residual risk Low) |
The baseline is tagged in Git as v0.0.1 and represents a complete,
verified, and traceable release.
6. Release Process Checklist#
Before any release, the following steps must be completed:
# |
Step |
Verification |
|---|---|---|
1 |
All CI pipeline jobs pass (test, lint, security, smoke) |
GitHub Actions green status |
2 |
Branch coverage >= 99% |
|
3 |
Bandit SAST reports zero findings |
CI security job output |
4 |
mypy strict reports zero errors |
CI lint job output |
5 |
All 13 gold master tests pass |
|
6 |
All pre-commit hooks pass |
|
7 |
CHANGELOG.md updated with release notes |
Manual review |
8 |
Version number updated in |
Manual review |
9 |
DHF documents updated if requirements, architecture, or risks changed |
Manual review |
10 |
Git tag created and signed |
|
11 |
Package built and tested locally |
|
12 |
Package published to PyPI |
|
13 |
Docker image built and tested |
|
14 |
Release notes published on GitHub |
GitHub Releases page |
7. Deployment Architecture#
The pacs008 library is distributed through three channels:
7.1 PyPI Package#
Build:
poetry buildproduces source distribution and wheelPublish:
poetry publishuploads to PyPIInstall:
pip install pacs008Dependencies: Resolved from
pyproject.tomlat install time
7.2 Docker Container#
Base image:
python:3.12-slimBuild:
docker build -t pacs008:latest .Port: 8000 (REST API via uvicorn)
User:
appuser(non-root)Health check: HTTP GET to
/api/healthevery 30 secondsStartup:
python -m uvicorn pacs008.api.app:app --host 0.0.0.0 --port 8000
7.3 Source Installation#
Clone:
git clone <repository>Install:
poetry installVerify:
poetry run pytestUsage: Import
pacs008directly or run CLI/REST API