Updating structure

This commit is contained in:
2026-09-26 00:48:37 -04:00
parent 6eceff8002
commit 36b3c4f2b6
116 changed files with 1947 additions and 140 deletions
@@ -0,0 +1,117 @@
---
sessionId: session-260925-234832-1pc0
---
# Requirements
### Overview & Goals
Rename all projects in the repository from single-word names (`Build`, `Deploy`, `Model`, `Web`) to qualified names starting with the `ZeroSpace.` prefix (`ZeroSpace.Build`, `ZeroSpace.Deploy`, `ZeroSpace.Model`, `ZeroSpace.Web`). Ensure all solution definitions, project files, folder paths, project references, namespaces, and script paths are updated consistently.
### Scope
- **In Scope:**
- Renaming project directories: `ZS/Build` → `ZS/ZeroSpace.Build`, `ZS/Deploy` → `ZS/ZeroSpace.Deploy`, `ZS/Model` → `ZS/ZeroSpace.Model`, `ZS/Web` → `ZS/ZeroSpace.Web`.
- Renaming `.csproj` files: `Build.csproj` → `ZeroSpace.Build.csproj`, `Deploy.csproj` → `ZeroSpace.Deploy.csproj`, `Model.csproj` → `ZeroSpace.Model.csproj`, `Web.csproj` → `ZeroSpace.Web.csproj`.
- Updating `ZS/ZeroSpace.sln` project declarations and configuration mappings.
- Updating `<ProjectReference>` in `ZeroSpace.Web.csproj`.
- Updating C# namespaces and `@using` directives to match the `ZeroSpace.*` convention.
- Updating hardcoded project/folder paths in `ZeroSpace.Build/Program.cs` and `ZeroSpace.Deploy/Program.cs`.
- **Out of Scope:**
- Modifying business logic or UI behavior in the Blazor web application.
- Renaming Markdown documentation files under `zs.docs`.
# Technical Design
### Current Implementation
The solution contains 4 projects in `ZS/`:
- `ZS/Model/Model.csproj`: Class library declaring `namespace Model;`.
- `ZS/Build/Build.csproj`: Console generator referencing `Model/Units.g.cs` and scanning for `ZS.sln`.
- `ZS/Deploy/Deploy.csproj`: Deployment tool targeting `../Web/Web.csproj`.
- `ZS/Web/Web.csproj`: Blazor WebAssembly app referencing `..\Model\Model.csproj` and using `Web`, `Web.Layout`, and `Model`.
- `ZS/ZeroSpace.sln`: Solution listing `Web`, `Build`, `Model`, and `Deploy`.
### Key Decisions
- **Rename Project Directories:** Project folder names will be updated to match the project names (`ZeroSpace.Build`, `ZeroSpace.Deploy`, `ZeroSpace.Model`, `ZeroSpace.Web`) to maintain standard .NET convention where directory name matches the assembly/project name.
- **Update Namespaces:** Align namespaces (`ZeroSpace.Model`, `ZeroSpace.Web`) with project naming for consistency across the solution.
- **Fix Solution Search in Build Tool:** Update `FindSolutionRoot` in `ZeroSpace.Build/Program.cs` to locate `ZeroSpace.sln` (or any `*.sln`).
### Proposed Changes
- **Project Structure & Naming:**
- `ZS/Build/` → `ZS/ZeroSpace.Build/`
- `ZS/Build/Build.csproj` → `ZS/ZeroSpace.Build/ZeroSpace.Build.csproj`
- `ZS/Deploy/` → `ZS/ZeroSpace.Deploy/`
- `ZS/Deploy/Deploy.csproj` → `ZS/ZeroSpace.Deploy/ZeroSpace.Deploy.csproj`
- `ZS/Model/` → `ZS/ZeroSpace.Model/`
- `ZS/Model/Model.csproj` → `ZS/ZeroSpace.Model/ZeroSpace.Model.csproj`
- `ZS/Web/` → `ZS/ZeroSpace.Web/`
- `ZS/Web/Web.csproj` → `ZS/ZeroSpace.Web/ZeroSpace.Web.csproj`
- **Solution File (`ZS/ZeroSpace.sln`):**
- Update project name strings and project file paths to `ZeroSpace.*`.
- **Project Reference (`ZS/ZeroSpace.Web/ZeroSpace.Web.csproj`):**
- Change `..\Model\Model.csproj` to `..\ZeroSpace.Model\ZeroSpace.Model.csproj`.
- **Source Files & Namespaces:**
- `ZS/ZeroSpace.Model/UnitData.cs`: `namespace ZeroSpace.Model;`
- `ZS/ZeroSpace.Model/UnitEfficiency.cs`: `namespace ZeroSpace.Model;`
- `ZS/ZeroSpace.Model/Units.g.cs`: `namespace ZeroSpace.Model;`
- `ZS/ZeroSpace.Build/Program.cs`: update model path to `ZeroSpace.Model`, generate `namespace ZeroSpace.Model;`, check `ZeroSpace.sln`.
- `ZS/ZeroSpace.Deploy/Program.cs`: update path lookups for `ZeroSpace.Web` and `ZeroSpace.Web.csproj`.
- `ZS/ZeroSpace.Web/Program.cs`: `using ZeroSpace.Web;`
- `ZS/ZeroSpace.Web/_Imports.razor`: `@using ZeroSpace.Web`, `@using ZeroSpace.Web.Layout`, `@using ZeroSpace.Model`
- `ZS/ZeroSpace.Web/Pages/Units.razor`: `@using ZeroSpace.Model`
### Architecture Diagram
```mermaid
graph TD
Sln[ZS/ZeroSpace.sln] --> Web[ZS/ZeroSpace.Web]
Sln --> Model[ZS/ZeroSpace.Model]
Sln --> Build[ZS/ZeroSpace.Build]
Sln --> Deploy[ZS/ZeroSpace.Deploy]
Web --> Model
Build -. generates Units.g.cs .-> Model
Deploy -. publishes .-> Web
```
# Testing
### Validation Approach
- Verify solution builds cleanly via CLI (`dotnet build ZS/ZeroSpace.sln`).
- Run code generation via `dotnet run --project ZS/ZeroSpace.Build/ZeroSpace.Build.csproj` to confirm `Units.g.cs` is generated with the proper namespace.
- Validate project references and dependencies resolve without warnings or missing assembly errors.
### Key Scenarios
- `dotnet build ZS/ZeroSpace.sln` succeeds with 0 errors and 0 warnings.
- `ZeroSpace.Web` compiles with reference to `ZeroSpace.Model`.
- `ZeroSpace.Build` locates `zs.docs` and writes generated code into `ZS/ZeroSpace.Model/Units.g.cs`.
### Edge Cases
- Relative path traversal from build outputs (`AppContext.BaseDirectory` in `ZeroSpace.Deploy`) resolving the renamed `ZeroSpace.Web` project directory.
- `FindSolutionRoot` helper locating `ZeroSpace.sln` accurately.
# Delivery Steps
### ✓ Step 1: Rename project directories and project files
Project folders and `.csproj` files follow the `ZeroSpace.*` naming convention.
- Rename directory `ZS/Model` to `ZS/ZeroSpace.Model` and project file `Model.csproj` to `ZeroSpace.Model.csproj`.
- Rename directory `ZS/Build` to `ZS/ZeroSpace.Build` and project file `Build.csproj` to `ZeroSpace.Build.csproj`.
- Rename directory `ZS/Deploy` to `ZS/ZeroSpace.Deploy` and project file `Deploy.csproj` to `ZeroSpace.Deploy.csproj`.
- Rename directory `ZS/Web` to `ZS/ZeroSpace.Web` and project file `Web.csproj` to `ZeroSpace.Web.csproj`.
### ✓ Step 2: Update solution file and project references
`ZeroSpace.sln` and project reference paths correctly reference the renamed projects and directories.
- Update `ZS/ZeroSpace.sln` project entries and relative paths for `ZeroSpace.Web`, `ZeroSpace.Build`, `ZeroSpace.Model`, and `ZeroSpace.Deploy`.
- Update project reference `<ProjectReference Include="..\ZeroSpace.Model\ZeroSpace.Model.csproj" />` in `ZS/ZeroSpace.Web/ZeroSpace.Web.csproj`.
### ✓ Step 3: Update namespaces and code path references
Source code files, generator scripts, and deployment scripts use the updated `ZeroSpace.*` namespaces and folder paths.
- Update C# namespaces in `ZS/ZeroSpace.Model/UnitData.cs`, `ZS/ZeroSpace.Model/UnitEfficiency.cs`, and `ZS/ZeroSpace.Model/Units.g.cs` to `ZeroSpace.Model`.
- Update code generator in `ZS/ZeroSpace.Build/Program.cs` to target `ZeroSpace.Model` folder, output `namespace ZeroSpace.Model;`, and verify solution root resolution for `ZeroSpace.sln`.
- Update deploy script paths in `ZS/ZeroSpace.Deploy/Program.cs` to locate `ZeroSpace.Web` and `ZeroSpace.Web.csproj`.
- Update `ZS/ZeroSpace.Web/Program.cs`, `ZS/ZeroSpace.Web/_Imports.razor`, and `ZS/ZeroSpace.Web/Pages/Units.razor` to reference `ZeroSpace.Web`, `ZeroSpace.Web.Layout`, and `ZeroSpace.Model`.
### ✓ Step 4: Validate solution build and code generation
The entire solution builds cleanly with zero errors/warnings and code generation runs successfully.
- Run `dotnet build ZS/ZeroSpace.sln` to ensure all projects compile and link without errors.
- Run `ZeroSpace.Build` console application to ensure unit code generation completes and updates `ZeroSpace.Model/Units.g.cs` correctly.