Files
RepoFoundry/docs/uc-002/sd.md
T
Tirsvad 1cd27f77ed Plan MIL-007 and UC-002; AGPL-3.0 default only for a public GitHub project
- MIL-006: the AGPL-3.0 default needs GitHub and a public project
- MIL-007: fetch the framework's own submodules (qc); start through a command link; README usage
- UC-002 with SSD, DM, OC, SD and DCD; US-001.07 and US-002
- Reconcile the project DM, DCD, dictionary, use case diagram and traceability matrix
- Review records RC-022 to RC-028
2026-10-07 12:30:58 +08:00

3.0 KiB

Sequence Diagram

Metadata

Key Value
ID SD-002
CrossReference OC-002, DCD-003, DICT-001

Version History

Date Status Author Reviewer Change Commit
2026-10-07 Proposed Jens Tirsvad Nielsen S02 Initial version pending

Design objects are conceptual; in create-project.sh each becomes a small function group. DCD-003 gives each object its class and turns each message below into a method signature. ProjectCreator and ConfigLoader are the design objects of SD-001.

Sequence: startFromWorkingFolder

Realizes: startFromWorkingFolder in OC-002

Diagram

@startuml
actor Maintainer
participant ":Launcher" as L
participant ":ProjectCreator" as PC
participant ":Checkout" as CK
participant ":WorkingFolder" as WF

Maintainer -> L : startFromWorkingFolder(configPath, envPath)
activate L
L -> L : resolveCheckout(invocation)
create CK
L -> CK : Checkout(path)
L -> L : currentFolder()
create WF
L -> WF : WorkingFolder(path)
alt the Checkout's own files are not found
  L --> Maintainer : error naming the folder looked in
end
L -> PC : startProjectCreation(checkout, workingFolder, configPath, envPath)
activate PC
alt config.env or .env not found, or a value malformed
  PC --> L : error naming the path or the key
end
PC --> L : promptSet
deactivate PC
L --> Maintainer : promptSet
deactivate L
@enduml

Pattern Annotations

Pattern (GRASP / GoF) Applied to Rationale
Information Expert Launcher.resolveCheckout The launcher knows how the script was invoked, so it is the one that can follow the command link
Controller Launcher One object takes the system operation and hands the work to ProjectCreator; ProjectCreator stays unaware of links
Low Coupling ProjectCreator receives checkout and workingFolder as values The use case [UC-001] runs unchanged whatever way the script was started

Postcondition Coverage

Postcondition (from contract) Satisfied by message
P1 Run startFromWorkingFolder (the run starts with it)
P2 Checkout resolveCheckout(invocation) and the creation of Checkout
P3 WorkingFolder currentFolder() and the creation of WorkingFolder
P4 default directory under the WorkingFolder startProjectCreation(checkout, workingFolder, ...); the prompt default is built from workingFolder
P5 Configuration startProjectCreation loads config.env and .env from checkout or from the given paths (load of SD-001)
P6 PromptSet the returned promptSet
Exceptions: files not found; configuration not found or malformed the two alt fragments

Responsibility Check

Launcher only finds the checkout and the working folder; it reads no configuration and makes no repository. ProjectCreator keeps every other responsibility of SD-001.