diff --git a/docs/artifact-registry.md b/docs/artifact-registry.md index 6e96f87..5de84ba 100644 --- a/docs/artifact-registry.md +++ b/docs/artifact-registry.md @@ -24,7 +24,7 @@ document of a type. `Primary File` may contain a glob (e.g. | DCD | Design Class Diagram | docs/dcd.md | 004 | | DICT | Domain Dictionary (PO and IT terms) | docs/dictionary.md | 002 | | UCD | Use Case Diagram | docs/use-case-diagram.md | 002 | -| RC | SQA Review Record | docs/sqa/reviews/rc-*.md | 030 | +| RC | SQA Review Record | docs/sqa/reviews/rc-*.md | 031 | | TM | Traceability Matrix | docs/sqa/traceability-matrix.md | 002 | ## Languages diff --git a/docs/dcd.md b/docs/dcd.md index 79397c8..6625391 100644 --- a/docs/dcd.md +++ b/docs/dcd.md @@ -9,8 +9,8 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-07 | Proposed | Jens Tirsvad Nielsen | S02 | Added Launcher, Checkout and WorkingFolder; startProjectCreation takes the checkout and working folder (from DCD-003, UC-002) | [1cd27f7] | | 2026-10-07 | Proposed | Jens Tirsvad Nielsen | S02 | Default configuration files: --config and --env, else ./config.env and ./.env in the working folder, else the checkout's | [0ab5006] | +| 2026-10-07 | Proposed | Jens Tirsvad Nielsen | S02 | .env is optional (as in UC-001 extension 2b): only config.env is required; a .env found nowhere means the token is asked | pending | --- @@ -89,7 +89,7 @@ class Launcher { class Checkout { -path : Path +configFile() : Path - +envFile() : Path + +envFile() : Path [0..1] } class WorkingFolder { -path : Path @@ -98,7 +98,7 @@ class WorkingFolder { } class ConfigFiles { -configFile : Path - -envFile : Path + -envFile : Path [0..1] } class Run { -isApply : Boolean @@ -261,7 +261,7 @@ Repository "0..*" --> "1" Visibility | `Launcher` | Command Link (the object that follows it) | Follows the command link to the checkout, takes the folder the Maintainer stands in, chooses the two configuration files, and starts the run. | none | `resolveCheckout`, `currentFolder`, `locateConfigFiles`, `startFromWorkingFolder` | | `Checkout` | Checkout | Names the folder that holds the script's own files and the default `config.env` and `.env`. | `path` | `configFile`, `envFile` | | `WorkingFolder` | Working Folder | Names the base of the default directory of the new project and the files it may hold. | `path` | `configFile`, `envFile` | -| `ConfigFiles` | none (system concept of [OC-002]) | Carries the two files chosen for the `Configuration`. | `configFile`, `envFile` | none | +| `ConfigFiles` | none (system concept of [OC-002]) | Carries the two files chosen for the `Configuration`; `envFile` is absent when no credentials file was found. | `configFile`, `envFile` | none | | `ProjectCreator` | none (controller for the system operations of [OC-001]) | Receives the two system operations, sequences the steps and stops on the first failure. | none | `startProjectCreation`, `provideProjectDetails` | | `ConfigLoader` | Configuration | Reads `config.env` and `.env` as plain text and validates every value, preset project details included. | none | `load` | | `CredentialCollector` | none (system concept) | Asks, without echo, for a credential that `.env` does not provide and validates it like one read from `.env`. | none | `collect` | @@ -373,5 +373,4 @@ SOLID check: no class has more than one reason to change (one host API, one kind [SD-001]: ./uc-001/sd.md [MIL-005]: ./milestones/mil-005-credentials.md [DICT-001]: ./dictionary.md -[1cd27f7]: https://git.tirsystem.com/TirSystem-BashScript/repo_foundry/commit/1cd27f77ed844773a969210a11de0d8bb98ac98f [0ab5006]: https://git.tirsystem.com/TirSystem-BashScript/repo_foundry/commit/0ab50068bf9e5be82a801af9dbe5b763eeaf7f31 diff --git a/docs/milestones/mil-007-framework-checklists.md b/docs/milestones/mil-007-framework-checklists.md index a65722c..dab47c4 100644 --- a/docs/milestones/mil-007-framework-checklists.md +++ b/docs/milestones/mil-007-framework-checklists.md @@ -9,8 +9,8 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-07 | Deprecated | Jens Tirsvad Nielsen | S02 | Task 4 renamed so its issue title is unique (the sync matches issues by title) | [be759e3] | | 2026-10-07 | Accepted | Jens Tirsvad Nielsen | S02 | The configuration files default to the working folder's, then the checkout's, confirmed and named (deliverable 3, criteria 9 and 10, tasks 2 to 4) | [0ab5006] | +| 2026-10-07 | Proposed | Jens Tirsvad Nielsen | S02 | .env is optional (as in UC-001 extension 2b): only config.env is required; a .env found nowhere means the token is asked (criteria 9 and tasks 2 and 4) | pending | --- @@ -36,7 +36,7 @@ Decide whether a new project holds the whole framework, including the `qc` check | 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 | -| 9 | With `--config` and `--env` absent, `./config.env` and `./.env` in the working folder are used, each file on its own, and the checkout's stand in for a missing one; with neither present the run stops before any request and names both places | Tests pass | A file used from another place, or a request made | +| 9 | With `--config` and `--env` absent, `./config.env` and `./.env` in the working folder are used, each file on its own, and the checkout's stand in for a missing one; with no `config.env` in either place the run stops before any request and names both places; with no `.env` the run goes on and asks for the token | Tests pass | A file used from another place, a request made, or a stop for a missing `.env` | | 10 | A file from the working folder is named with the Gitea address it holds and needs a yes, default no, before the first request; every file used is named in the output | Tests pass | A request before the yes, or a file used without being named | ## Dependencies @@ -70,9 +70,9 @@ Decide whether a new project holds the whole framework, including the `qc` check | # | 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, keep the current folder as the base of the default directory, and choose `config.env` and `.env` (named, else `./`, else the checkout's), naming them and asking a yes for a file from the working folder. Errors name the places looked in. Steps 3 to 6 and extensions 4a to 4c of [UC-002]. | Yes | [UC-002] | +| 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, keep the current folder as the base of the default directory, and choose `config.env` (required) and `.env` (optional) (named, else `./`, else the checkout's), naming them and asking a yes for a file from the working folder. Errors name the places looked in. Steps 3 to 6 and extensions 4a to 4c 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 (the folder first, then the checkout), the confirmation of a file from the folder, `--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 the qc fetch and the command link | `qc` filled after a run and after a rerun, nested fetch failure, framework without a submodule, start through a symlink from another folder; configuration files named, in the folder, in the checkout, mixed and in neither; the confirmation answered yes and no. | No | | +| 4 | Test the qc fetch and the command link | `qc` filled after a run and after a rerun, nested fetch failure, framework without a submodule, start through a symlink from another folder; configuration files named, in the folder, in the checkout, mixed, `config.env` in neither place and `.env` in neither place; the confirmation answered yes and no. | No | | --- @@ -81,5 +81,4 @@ Decide whether a new project holds the whole framework, including the `qc` check [UC-001]: ../uc-001/uc.md [UC-002]: ../uc-002/uc.md [MIL-003]: ./mil-003-scaffold-and-release.md -[be759e3]: https://git.tirsystem.com/TirSystem-BashScript/repo_foundry/commit/be759e38326eac2b11e65a2b582b2431186e338b [0ab5006]: https://git.tirsystem.com/TirSystem-BashScript/repo_foundry/commit/0ab50068bf9e5be82a801af9dbe5b763eeaf7f31 diff --git a/docs/sqa/reviews/rc-030-env-optional.md b/docs/sqa/reviews/rc-030-env-optional.md new file mode 100644 index 0000000..219f92a --- /dev/null +++ b/docs/sqa/reviews/rc-030-env-optional.md @@ -0,0 +1,66 @@ +# SQA Review Record: .env is optional, config.env is required + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-030 | +| CrossReference | [MIL-007], [QC-MIL-001], [UC-002], [US-001], [OC-002], [DCD-003], [DCD-002], [RC-029] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-07 | Proposed | Jens Tirsvad Nielsen | S02 | Initial version | pending | + +--- + +## Artifact Under Review + +- Instance reviewed: the change that makes `.env` optional while `config.env` stays required, in [MIL-007], [UC-002], [US-001] (US-002), [OC-002], [DCD-003] and [DCD-002]. It follows the merge of the credentials work (MIL-005), where a credential that `.env` does not provide is asked; the first version of these documents, reviewed in [RC-029], said that a missing `.env` stops the run. +- Checklist used: [QC-MIL-001] for [MIL-007]; the checklists of the other types are applied to the changed parts below. +- Review date: 2026-10-07 + +## Checklist Results ([MIL-007], QC-MIL-001) + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | A concrete deliverable is defined for every gate | Pass | Unchanged; task 2 now says `config.env` required and `.env` optional. | +| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Criterion 9 is objective in each case: no `config.env` stops the run and names both places; no `.env` goes on and asks for the token; a stop for a missing `.env` is a No-Go. | +| 3 | Dependencies on other milestones are explicitly mapped | Pass | Unchanged. The behaviour now agrees with the credentials milestone that merged first. | +| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Unchanged: objective 11 and success criterion 11. | +| 5 | Milestone owner and approving reviewer are identified | Pass | Unchanged. | +| 6 | Milestone has a defined target date consistent with project constraints | Pass | Unchanged. | + +## Change checks on the other artifacts + +| Artifact | Change | Status | Evidence/Notes | +| --- | --- | --- | --- | +| [UC-002] | Precondition; extension 4b for `config.env` only; new extension 4d for a `.env` found nowhere | Pass | 4d refers to extension 2b of the main use case for the asking of the credential; the use case stays free of implementation detail. | +| [US-001] | US-002 acceptance criterion split in two | Pass | One given/when/then for a missing `config.env` or a broken link, one for a missing `.env`, which points to US-001.05. | +| [OC-002] | P5: `envFile` may be absent; the missing-file exception split | Pass | Declarative; the new row says no error and points to the postcondition of [OC-001] that enters the credential. | +| [DCD-003], [DCD-002] | `envFile` is `[0..1]` on `ConfigFiles` and on `Checkout` | Pass | Multiplicity given; the class table says when it is absent. | +| [SD-002] | Not changed | Pass | The `alt` for "both places for a config file are not found" still holds, because it concerns `config.env`. | + +The code and tests were checked against the new wording: `locate_config_file` takes an `optional` word for `.env`, and the tests `test_a_config_file_found_nowhere_stops_before_any_request_and_names_both_places` and `test_a_credentials_file_found_nowhere_means_the_token_is_asked` cover the two cases. The full suite passed with 1136 checks. + +## Overall Verdict + +Go — the wording now agrees with the credentials behaviour on `main`, with the code and with the tests, and nothing else in the use case changes. Drafted by Claude Code for S02; the author and reviewer are the same person for now. The verdict takes effect, and the Version History rows of the reviewed documents change to `Accepted`, only when S02 confirms it. The open action items of [RC-028] and [RC-029] stay open. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| None | - | - | + +--- + +[MIL-007]: ../../milestones/mil-007-framework-checklists.md +[QC-MIL-001]: ../../../framework/qc/qc-milestones-gateways.md +[UC-002]: ../../uc-002/uc.md +[US-001]: ../../user-stories.md +[OC-002]: ../../uc-002/oc.md +[OC-001]: ../../uc-001/oc.md +[DCD-003]: ../../uc-002/dcd.md +[DCD-002]: ../../dcd.md +[RC-029]: ./rc-029-default-config-files.md +[RC-028]: ./rc-028-dcd-003.md diff --git a/docs/sqa/traceability-matrix.md b/docs/sqa/traceability-matrix.md index 5305856..2408426 100644 --- a/docs/sqa/traceability-matrix.md +++ b/docs/sqa/traceability-matrix.md @@ -9,8 +9,8 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-06 | Proposed | Jens Tirsvad Nielsen | S02 | Added MIL-006 | [d773fa9] | | 2026-10-07 | Proposed | Jens Tirsvad Nielsen | S02 | Added MIL-007, UC-002, SSD-002, DM-003, OC-002, SD-002 and DCD-003 with their reviews RC-022 to RC-028 | [1cd27f7] | +| 2026-10-07 | Proposed | Jens Tirsvad Nielsen | S02 | Added review RC-030 (.env optional) | pending | --- @@ -33,16 +33,16 @@ updated whenever an artifact instance is created or reviewed. | [MIL-004] | MIL | [BC-001], [PP-001] | [US-001] | [RC-018], [RC-019] | | [MIL-005] | MIL | [BC-001], [PP-001] | [US-001] | [RC-020] | | [MIL-006] | MIL | [BC-001], [PP-001] | [US-001] | [RC-022] | -| [MIL-007] | MIL | [BC-001], [PP-001] | [US-001], [UC-002] | [RC-022], [RC-029] | +| [MIL-007] | MIL | [BC-001], [PP-001] | [US-001], [UC-002] | [RC-022], [RC-029], [RC-030] | | [UCD-001] | UCD | [BC-001], [SA-001] | [US-001], [UC-001], [UC-002] | [RC-009], [RC-023] | -| [US-001] | US | [BC-001], [UCD-001], [MIL-001], [MIL-002], [MIL-003], [MIL-004], [MIL-005], [MIL-006], [MIL-007] | [UC-001] | [RC-001], [RC-020], [RC-022], [RC-029] | +| [US-001] | US | [BC-001], [UCD-001], [MIL-001], [MIL-002], [MIL-003], [MIL-004], [MIL-005], [MIL-006], [MIL-007] | [UC-001] | [RC-001], [RC-020], [RC-022], [RC-029], [RC-030] | | [UC-001] | UC | [UCD-001], [US-001], [SA-001] | [SSD-001], [DM-001] | [RC-002], [RC-020], [RC-023] | -| [UC-002] | UC | [UCD-001], [US-001], [SA-001], [BC-001] | [SSD-002], [DM-003] | [RC-023], [RC-029] | +| [UC-002] | UC | [UCD-001], [US-001], [SA-001], [BC-001] | [SSD-002], [DM-003] | [RC-023], [RC-029], [RC-030] | | [SSD-002] | SSD | [UC-002], [DM-003] | [OC-002] | [RC-024], [RC-029] | | [DM-003] | DM | [UC-002], [UCD-001], [SSD-002], [DICT-001], [DM-001] | [OC-002], [DCD-003] | [RC-025], [RC-029] | -| [OC-002] | OC | [SSD-002], [DM-003] | [SD-002] | [RC-026], [RC-029] | +| [OC-002] | OC | [SSD-002], [DM-003] | [SD-002] | [RC-026], [RC-029], [RC-030] | | [SD-002] | SD | [OC-002], [DCD-003] | [DCD-003] | [RC-027], [RC-029] | -| [DCD-003] | DCD | [DM-003], [SD-002], [DICT-001], [UC-002], [DCD-001] | [DCD-002] | [RC-028], [RC-029] | +| [DCD-003] | DCD | [DM-003], [SD-002], [DICT-001], [UC-002], [DCD-001] | [DCD-002] | [RC-028], [RC-029], [RC-030] | | [SSD-001] | SSD | [UC-001] | [OC-001] | [RC-003], [RC-020] | | [DM-001] | DM | [UC-001], [SSD-001] | [DM-002], [DICT-001], [OC-001], [DCD-001] | [RC-004], [RC-020] | | [DM-002] | DM | [DM-001] | [DICT-001], [DCD-001], [DCD-002] | [RC-005], [RC-020], [RC-025], [RC-029] | @@ -50,7 +50,7 @@ updated whenever an artifact instance is created or reviewed. | [OC-001] | OC | [SSD-001], [DM-001] | [SD-001] | [RC-006], [RC-020], [RC-026] | | [SD-001] | SD | [OC-001] | [DCD-001] | [RC-007], [RC-020], [RC-021] | | [DCD-001] | DCD | [UC-001], [DM-001], [DM-002], [OC-001], [SD-001], [DICT-001] | [DCD-002] | [RC-021] | -| [DCD-002] | DCD | [DCD-001], [DCD-003], [DM-002], [DICT-001] | - | [RC-021], [RC-028], [RC-029] | +| [DCD-002] | DCD | [DCD-001], [DCD-003], [DM-002], [DICT-001] | - | [RC-021], [RC-028], [RC-029], [RC-030] | ## Coverage Notes @@ -81,6 +81,7 @@ updated whenever an artifact instance is created or reviewed. [RC-027]: ./reviews/rc-027-sd-002.md [RC-028]: ./reviews/rc-028-dcd-003.md [RC-029]: ./reviews/rc-029-default-config-files.md +[RC-030]: ./reviews/rc-030-env-optional.md [DCD-001]: ../uc-001/dcd.md [DCD-002]: ../dcd.md [UCD-001]: ../use-case-diagram.md @@ -115,5 +116,4 @@ updated whenever an artifact instance is created or reviewed. [RC-015]: ./reviews/rc-015-mil-003.md [RC-016]: ./reviews/rc-016-create-project-sh.md [RC-017]: ./reviews/rc-017-e2e-security-review.md -[d773fa9]: https://git.tirsystem.com/TirSystem-BashScript/repo_foundry/commit/d773fa91df5a54090254e12e074880fb6526a9ff [1cd27f7]: https://git.tirsystem.com/TirSystem-BashScript/repo_foundry/commit/1cd27f77ed844773a969210a11de0d8bb98ac98f diff --git a/docs/uc-002/dcd.md b/docs/uc-002/dcd.md index ac04287..6017520 100644 --- a/docs/uc-002/dcd.md +++ b/docs/uc-002/dcd.md @@ -9,8 +9,8 @@ ## 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 | Default configuration files: --config and --env, else ./config.env and ./.env in the working folder, else the checkout's | [0ab5006] | +| 2026-10-07 | Proposed | Jens Tirsvad Nielsen | S02 | .env is optional (as in UC-001 extension 2b): only config.env is required; a .env found nowhere means the token is asked | pending | --- @@ -31,7 +31,7 @@ class Launcher { class Checkout { -path : Path +configFile() : Path - +envFile() : Path + +envFile() : Path [0..1] } class WorkingFolder { -path : Path @@ -40,7 +40,7 @@ class WorkingFolder { } class ConfigFiles { -configFile : Path - -envFile : Path + -envFile : Path [0..1] } class ProjectCreator { +startProjectCreation(workingFolder : WorkingFolder, configFiles : ConfigFiles) : PromptSet @@ -63,7 +63,7 @@ Run "1" *-- "1" WorkingFolder | `Launcher` | Command Link (the object that follows it) | Follows the command link to the checkout, takes the folder the Maintainer stands in, chooses the two configuration files, and starts the run. | none | `resolveCheckout`, `currentFolder`, `locateConfigFiles`, `startFromWorkingFolder` | | `Checkout` | Checkout | Names the folder that holds the script's own files and the default `config.env` and `.env`. | `path` | `configFile`, `envFile` | | `WorkingFolder` | Working Folder | Names the base of the default directory of the new project and the files it may hold. | `path` | `configFile`, `envFile` | -| `ConfigFiles` | none (system concept of [OC-002]) | Carries the two files chosen for the `Configuration`. | `configFile`, `envFile` | none | +| `ConfigFiles` | none (system concept of [OC-002]) | Carries the two files chosen for the `Configuration`; `envFile` is absent when no credentials file was found. | `configFile`, `envFile` | none | The concept Command Link has no class: it is a link the Maintainer makes with the shell, and the system only follows it. @@ -98,5 +98,4 @@ The concept Command Link has no class: it is a link the Maintainer makes with th [UC-002]: ./uc.md [DCD-001]: ../uc-001/dcd.md [DCD-002]: ../dcd.md -[1cd27f7]: https://git.tirsystem.com/TirSystem-BashScript/repo_foundry/commit/1cd27f77ed844773a969210a11de0d8bb98ac98f [0ab5006]: https://git.tirsystem.com/TirSystem-BashScript/repo_foundry/commit/0ab50068bf9e5be82a801af9dbe5b763eeaf7f31 diff --git a/docs/uc-002/oc.md b/docs/uc-002/oc.md index d9e932b..fd8391f 100644 --- a/docs/uc-002/oc.md +++ b/docs/uc-002/oc.md @@ -9,8 +9,8 @@ ## 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 | Default configuration files: --config and --env, else ./config.env and ./.env in the working folder, else the checkout's | [0ab5006] | +| 2026-10-07 | Proposed | Jens Tirsvad Nielsen | S02 | .env is optional (as in UC-001 extension 2b): only config.env is required; a .env found nowhere means the token is asked | pending | --- @@ -35,7 +35,7 @@ Concepts below use the IT terms of [DICT-001] for the PO concepts of [DM-003]. ` - P2. A `Checkout` instance was created and associated with the `Run`, with `path` set to the folder that holds the script's own files, reached through the `CommandLink`, however many links lie between them. - P3. A `WorkingFolder` instance was created and associated with the `Run`, with `path` set to the folder in which the Maintainer started the script. It was not changed by following the `CommandLink`. - P4. The default of `directory` in the `PromptSet` is `./` under the `WorkingFolder`, never under the `Checkout`. -- P5. A `ConfigFiles` instance was created and associated with the `Run`. Its `configFile` is `configPath` when given, otherwise `config.env` in the `WorkingFolder` when it exists, otherwise `config.env` in the `Checkout`; its `envFile` is chosen in the same way from `envPath` and `.env`. Each file is chosen on its own. The paths are named in the output before any request to a host. +- P5. A `ConfigFiles` instance was created and associated with the `Run`. Its `configFile` is `configPath` when given, otherwise `config.env` in the `WorkingFolder` when it exists, otherwise `config.env` in the `Checkout`; its `envFile` is chosen in the same way from `envPath` and `.env`, and is absent when none is found. Each file is chosen on its own. The paths are named in the output before any request to a host. - P6. A `Configuration` instance was created and associated with the `Run` from the `ConfigFiles`; the validation of [OC-001] `startProjectCreation` P2 and P3 applies. - P7. The `Run` was associated with a `PromptSet` that is returned. @@ -44,7 +44,8 @@ Concepts below use the IT terms of [DICT-001] for the PO concepts of [DM-003]. ` | Condition (failing precondition) | Outcome | | --- | --- | | The `Checkout`'s own files are not found from the link target | The `Run` ends with an error naming the folder it looked in; nothing was changed | -| `config.env` or `.env` is not named and is in neither the `WorkingFolder` nor the `Checkout` (P5) | The `Run` ends with an error naming both places it looked in and the options `--config` and `--env`; nothing was changed | +| `config.env` is not named and is in neither the `WorkingFolder` nor the `Checkout` (P5) | The `Run` ends with an error naming both places it looked in and the option `--config`; nothing was changed | +| `.env` is not named and is in neither the `WorkingFolder` nor the `Checkout` (P5) | No error: `envFile` is absent, the paths named in the output say so, and a missing `Credential` is entered by the Maintainer as in [OC-001] `startProjectCreation` P2 | | A chosen file is in the `WorkingFolder` and the Maintainer does not confirm it (P5) | The `Run` ends before any request to a host; nothing was changed | | A value in `config.env` or `.env` is malformed (P6) | As in [OC-001] `startProjectCreation`: the error names the key, never its value; nothing was changed | @@ -54,5 +55,4 @@ Concepts below use the IT terms of [DICT-001] for the PO concepts of [DM-003]. ` [DM-003]: ./dm.md [DICT-001]: ../dictionary.md [OC-001]: ../uc-001/oc.md -[1cd27f7]: https://git.tirsystem.com/TirSystem-BashScript/repo_foundry/commit/1cd27f77ed844773a969210a11de0d8bb98ac98f [0ab5006]: https://git.tirsystem.com/TirSystem-BashScript/repo_foundry/commit/0ab50068bf9e5be82a801af9dbe5b763eeaf7f31 diff --git a/docs/uc-002/uc.md b/docs/uc-002/uc.md index eb31767..497a507 100644 --- a/docs/uc-002/uc.md +++ b/docs/uc-002/uc.md @@ -9,8 +9,8 @@ ## 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 | Default configuration files: --config and --env, else ./config.env and ./.env in the working folder, else the checkout's; the files used are named and a file from the working folder is confirmed (step 4, extensions 4b and 4c, rules) | [0ab5006] | +| 2026-10-07 | Proposed | Jens Tirsvad Nielsen | S02 | .env is optional (as in UC-001 extension 2b): only config.env is required; a .env found nowhere means the token is asked | pending | --- @@ -26,7 +26,7 @@ - S02 — starting through a link never reads or writes outside the checkout and the current folder - S03 — the README says exactly how to make the command global - **Preconditions:** - - The checkout of RepoFoundry exists. `config.env` and `.env` exist as described in the README in the working folder or in the checkout, or the Maintainer points to them with `--config` and `--env`. + - The checkout of RepoFoundry exists. `config.env` exists as described in the README in the working folder or in the checkout, or the Maintainer points to it with `--config`. `.env` may exist in the same places, or be named with `--env`; a credential it does not provide is asked, as in [UC-001]. - A folder that is on the shell's `PATH` exists and the Maintainer may write to it. - **Postconditions (success guarantee):** - A command link exists in a `PATH` folder and leads to the script in the checkout. @@ -50,8 +50,10 @@ 1. The shell reports that the command cannot run; the README says how to recreate the link. - 4a. The checkout's own files cannot be found from the link target: 1. The system stops before any change and names the folder it looked in. -- 4b. `config.env` or `.env` is not named, and is in neither the working folder nor the checkout: - 1. The system stops before any change, names both places it looked in and says that `--config` and `--env` can point elsewhere. +- 4b. `config.env` is not named, and is in neither the working folder nor the checkout: + 1. The system stops before any change, names both places it looked in and says that `--config` can point elsewhere. +- 4d. `.env` is not named, and is in neither the working folder nor the checkout: + 1. The system names that no credentials file was found and goes on; a credential that is needed is asked without showing what is typed, as in extension 2b of [UC-001]. - 4c. A chosen file comes from the working folder: 1. The system names the file and the Gitea address it holds and asks the Maintainer to confirm, default no, before any request to a host; on no, the system stops before any request and any change. @@ -76,5 +78,4 @@ [US-001]: ../user-stories.md [SA-001]: ../stakeholder-analysis.md [BC-001]: ../business-case.md -[1cd27f7]: https://git.tirsystem.com/TirSystem-BashScript/repo_foundry/commit/1cd27f77ed844773a969210a11de0d8bb98ac98f [0ab5006]: https://git.tirsystem.com/TirSystem-BashScript/repo_foundry/commit/0ab50068bf9e5be82a801af9dbe5b763eeaf7f31 diff --git a/docs/user-stories.md b/docs/user-stories.md index 5154217..c551ef0 100644 --- a/docs/user-stories.md +++ b/docs/user-stories.md @@ -9,8 +9,8 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-07 | Proposed | Jens Tirsvad Nielsen | S02 | Added US-002 (global command from the target folder) for UC-002 | [1cd27f7] | | 2026-10-07 | Proposed | Jens Tirsvad Nielsen | S02 | US-002: the default configuration files are the working folder's, then the checkout's; confirmed and named | [0ab5006] | +| 2026-10-07 | Proposed | Jens Tirsvad Nielsen | S02 | US-002: only config.env is required; a .env found nowhere means the token is asked | pending | --- @@ -140,7 +140,8 @@ One further epic, "Start the script as a global command" ([UC-002]), with one st - Given the Maintainer stands in a folder, when the project directory is not preset, then its default is `./` under that folder, never under the checkout. - Given `--config` and `--env` name files, then those are read. Given they are not named, then `./config.env` and `./.env` in the folder the Maintainer stands in are read, each one that exists, and the checkout's file stands in for one that does not. - Given a file comes from the folder the Maintainer stands in, then the script names it and the Gitea address it holds and asks for a yes, default no, before any request; every file used is named in the output. -- Given a file is named nowhere, in neither folder, or a link is broken, then the script stops before any change and names both places it looked in. +- Given `config.env` is named nowhere and is in neither folder, or a link is broken, then the script stops before any change and names both places it looked in. +- Given `.env` is named nowhere and is in neither folder, then the script goes on and asks for the credentials it needs, as in US-001.05. - Given the README, then it shows the command that makes the link, the check that it works and a run from a folder that is not the checkout. | Traces to | Size | INVEST exceptions | @@ -165,5 +166,4 @@ Valuable, Negotiable, Estimable, Small and Testable hold for each story. Indepen [MIL-006]: ./milestones/mil-006-project-license.md [MIL-007]: ./milestones/mil-007-framework-checklists.md [PP-001]: ./project-plan.md -[1cd27f7]: https://git.tirsystem.com/TirSystem-BashScript/repo_foundry/commit/1cd27f77ed844773a969210a11de0d8bb98ac98f [0ab5006]: https://git.tirsystem.com/TirSystem-BashScript/repo_foundry/commit/0ab50068bf9e5be82a801af9dbe5b763eeaf7f31