Add project foundation: configuration, package skeleton, Doxyfile, CI and ADRs
CI / Test on Python 3.13 (push) Successful in 48s

Task: MIL-001#1
Refs #2
Refs #3
Refs #4
Refs #5
Refs #6
This commit is contained in:
2026-10-13 16:27:37 +08:00
parent b49df1cd33
commit 32a8b848c5
12 changed files with 789 additions and 59 deletions
@@ -0,0 +1,53 @@
# ADR-0001 Read the NATO data with the standard library csv module
## Metadata
| Key | Value |
| --- | --- |
| ID | ADR-0001 |
| CrossReference | [BC-001], [SA-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version, reviewed in RC-006 | pending |
Allowed Status values: `Proposed`, `Accepted`, `Rejected`, `Deprecated`, `Superseded by ADR-NNNN`.
---
## Context
The lecture reads the NATO alphabet file into a Pandas DataFrame and builds the dictionary with `iterrows`. The file has 26 rows and two columns. S01 follows the lecture, but S03 wants a repository with no runtime dependencies, and [BC-001] objective O5 and constraint "no runtime dependencies unless needed" say the same.
Options evaluated:
1. Pandas, as in the lecture: matches the course, but adds a large runtime dependency for a 26-row table.
2. Polars: smaller than Pandas, still a runtime dependency that the task does not need.
3. The standard library `csv` module: no dependency, and the dictionary comprehension that the assignment teaches works unchanged on the rows of `csv.DictReader`.
## Decision
Read the NATO alphabet with the standard library `csv` module (`csv.DictReader`) and build the letter-to-code-word dictionary with a dictionary comprehension. The project declares no runtime dependencies.
## Consequences
**Positive:**
- No runtime dependency to install or keep secure; S03 sees an empty dependency list.
- Faster start and a smaller environment for S02.
- The comprehension taught in the lecture is still used.
**Negative:**
- The code differs from the lecture's Pandas code, so S02 comparing line by line sees a difference.
- A later day that needs Pandas has to add it explicitly.
## Affected Artifacts
- [BC-001] — meets objective O5 and the constraint on runtime dependencies.
- [SA-001] — resolves the conflict between S01 and S03 listed there.
---
[BC-001]: ../business-case.md
[SA-001]: ../stakeholder-analysis.md
@@ -0,0 +1,50 @@
# ADR-0002 Skip the optional analysis artifacts
## Metadata
| Key | Value |
| --- | --- |
| ID | ADR-0002 |
| CrossReference | [BC-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version, reviewed in RC-007 | pending |
Allowed Status values: `Proposed`, `Accepted`, `Rejected`, `Deprecated`, `Superseded by ADR-NNNN`.
---
## Context
The journey of the framework offers analysis documents beyond the baseline: KPI definitions, a Business Model Canvas, a BPMN process model and a riskiest-assumption test. The project is a single-evening course exercise with six measurable success criteria already in [BC-001], no commercial model, no business process and no costly belief to test.
Options evaluated:
1. Write all four documents: complete, but each needs a review and adds no decision that the Business Case does not already hold.
2. Write only the KPI definitions: the success criteria would be restated in another file.
3. Skip all four and record the reason here.
## Decision
Skip the KPI definitions, the Business Model Canvas, the BPMN process model and the riskiest-assumption test. The Business Case's Success Criteria table carries the measures, and the baseline documents (Business Case, Stakeholder Analysis, Project Plan, milestones) are not skipped.
## Consequences
**Positive:**
- Less documentation to keep consistent for a small project.
- The success criteria are stated once, in one place.
**Negative:**
- A reader who expects a KPI document finds the measures in the Business Case instead.
- If the project grows (a package published, more users), the skipped documents must be written then.
## Affected Artifacts
- [BC-001] — its Success Criteria stay the only definition of the measures.
---
[BC-001]: ../business-case.md