5.2 KiB
5.2 KiB
MIL-007 Framework Checklists and Usage
Metadata
| Key | Value |
|---|---|
| ID | MIL-007 |
| CrossReference | BC-001, US-001, UC-001, UC-002 |
Version History
| Date | Status | Author | Reviewer | Change | Commit |
|---|---|---|---|---|---|
| 2026-10-07 | Proposed | Jens Tirsvad Nielsen | S02 | Initial version | 1cd27f7 |
| 2026-10-07 | Proposed | Jens Tirsvad Nielsen | S02 | Added UC-002 and US-002 (global command); tasks 2 and 3 trace to UC-002 | 1cd27f7 |
Purpose
Decide whether a new project holds the whole framework, including the qc checklists that the framework keeps in its own submodule, and whether a Maintainer can start the script from the folder where the project is to be created, through a global command, with the README saying exactly how.
Deliverable
create-project.shthat, after adding theframeworksubmodule (and whenframeworkalready exists as that submodule), runsgit submodule update --init --recursivein the new project, soframework/qc/holds the checklists.create-project.shthat finds its own files when started through a symlink, so a link in a folder onPATHworks from any directory.- A README usage section that says: run the script from the folder in which the project is to be created (the default directory is
./<name>relative to where it is started), keepconfig.envand.envin the checkout and point to them with--configand--envor place them where the script reads them, and make the script global with a worked example (a symlink in aPATHfolder, with the check that it works), for Linux, macOS and Git Bash on Windows.
Go / No-Go Criteria
| # | Criterion (objectively checkable) | Go | No-Go |
|---|---|---|---|
| 1 | After a run, framework/qc/ in the new project holds the checklist files and git submodule status --recursive shows no entry starting with - |
Tests pass | An empty qc |
| 2 | A second run on a project whose qc is empty fills it and changes nothing else; on a complete project it changes nothing |
Tests pass | Anything else changed |
| 3 | A failed nested fetch stops the step, reports what exists, names git submodule update --init --recursive as the command to run by hand and shows no credential |
Tests pass | A credential shown, or the failure not reported |
| 4 | A framework without a submodule of its own does not make the step fail | Tests pass | Step fails |
| 5 | Started through a symlink in another folder, create-project.sh --help works and a run creates the project under the current folder |
Tests pass | Files not found, or the project created elsewhere |
| 6 | The README example for the global command was run once as written and its check passed | Verified | An example that was not run |
| 7 | The README states the folder to start from and where the new project lands, with an example from a folder that is not the checkout | Reviewed by S02 | Missing or unclear |
| 8 | All acceptance criteria of US-001.07 and US-002 in US-001 are met | Verified | Any unmet |
Dependencies
| Depends on | Reason |
|---|---|
| MIL-003 | The framework step and the README already exist |
Traceability
| Business Case objective / KPI / user story | Reference |
|---|---|
| User stories US-001.07 and US-002 | US-001 |
| Objective 5 (the framework submodule) | BC-001 |
| Objective 11 (global command) and success criterion 11 | BC-001 |
| Objective 7 (documentation) | BC-001 |
Ownership
| Role | Stakeholder ID (SA) |
|---|---|
| Owner | S01 |
| Approving reviewer | S02 |
Target Date
2026-12-11 — proposed; the Business Case sets no deadline.
Tasks
| # | Task | Summary | Needs its own Use Case/User Story? | Reference |
|---|---|---|---|---|
| 1 | Fetch the framework's own submodules | After git submodule add of the framework, and on the "already a submodule" path, run git submodule update --init --recursive in the new project. A failure stops the step, reports what exists and names the command to run by hand, without a credential. Step 9 and extension 9e of UC-001. |
Yes | UC-001 |
| 2 | Start through a command link | Resolve BASH_SOURCE through links (without requiring readlink -f, which macOS lacks) so SCRIPT_DIR and PROJECT_ROOT point into the checkout, and keep the current folder as the base of the default directory. Errors name the folder or path looked in. Steps 3 to 6 and extensions 4a and 4b of UC-002. |
Yes | UC-002 |
| 3 | Document the usage | Step 1 and extensions 1a and 3a of UC-002. README usage section: start from the folder where the project is to be created, where config.env and .env are read from, --config and --env, and the global command with a worked example and its check, for Linux, macOS and Git Bash on Windows. |
Yes | UC-002 |
| 4 | Test every case | qc filled after a run and after a rerun, nested fetch failure, framework without a submodule, start through a symlink from another folder. |
No |