Add Pretty Table project: plan, accepted documents and code

Business Case, Stakeholder Analysis, Project Plan and milestone MIL-001
with review records RC-001 to RC-003, then the Python project: PrettyTable
Pokemon table, constants, pytest tests, pyproject.toml, Doxyfile, CI
workflow and README.

Task: MIL-001#1
Task: MIL-001#2
Task: MIL-001#3
Task: MIL-001#4
Task: MIL-001#5
Task: MIL-001#6
Task: MIL-001#7
Task: MIL-001#8
This commit is contained in:
2026-10-07 12:02:59 +08:00
parent 115b6c64bf
commit b0a7414204
137 changed files with 6801 additions and 1 deletions
+48
View File
@@ -0,0 +1,48 @@
# Milestone / Gateway (MIL)
Cite in `CrossReference` only if the instance exists (`new-artifact.sh` checks this for you):
- **BC** — The objective / constraint (e.g. project duration) the milestone traces to
- **KPI** — The KPI IDs evaluated at this gate
- **US** — Forward: the user stories (`US-<v>.<NN>`) that deliver this gateway
## Required sections (after Metadata / Version History)
1. **Purpose** — what decision this gate supports.
2. **Deliverable** — the concrete, tangible output evaluated (never just a date).
3. **Go / No-Go Criteria** — objectively checkable, one per row.
4. **Dependencies** — other milestones that must precede this one.
5. **Traceability** — the Business Case objective and/or KPI ID(s) it maps to.
6. **Ownership** — owner and approving reviewer as `SA` stakeholder IDs.
7. **Target Date** — consistent with Business Case constraints.
8. **Tasks** — the implementation-level breakdown for this phase, one row
per task: `# | Task | Summary | Needs its own Use Case/User Story? |
Reference`. `Task` is a short title (becomes the Issue title on sync);
`Summary` is one to three sentences of real context — what the task
actually involves and why, grounded in this project's own documents, not
a restatement of the title — so someone reading the Issue on Gitea/GitHub
understands it without opening this file (becomes the Issue body).
## Breaking a phase into tasks
Not every task needs a use case — only model one when the task is something
a user, or another system, actually does:
- **Needs a use case/user story** — "User resets password", "Admin exports
customer report", "Payment service processes refund". Set the column to
`Yes` and put the `US-…`/`UC-…` ID in Reference.
- **Plain task, no use case** — "Refactor authentication middleware", "Add
database index", "Upgrade React version", "Fix null-pointer bug", "Add
unit tests", "Configure CI pipeline", "Optimize SQL query". Set the column
to `No` and leave Reference blank, or point at the design artifact it
implements (`DCD-…`, `OC-…`).
The hierarchy is: Business goal → Feature/requirement → Use case/user story
→ Tasks. The use case explains *why* a feature exists; tasks explain *how*
the team implements it — most tasks stay at that level.
## Syncing to Gitea/GitHub
Each `MIL-*` gateway becomes one Milestone on the git host; its `## Tasks`
row become Issues assigned to that milestone. Use the `project-planning`
skill and `framework/scripts/sync-project.sh` — do not create these by hand.