plan(config): correct git layout — library committed to outer repo, no nested .git

The sibling libs (Auth/Theme/Health/Telemetry) are tracked as regular files in
the outer scadaproj repo, not separate git repos. Remove the git-init/nested-repo
instructions; all commits target the outer repo on feat/zb-mom-ww-configuration.
This commit is contained in:
Joseph Doherty
2026-06-01 09:23:08 -04:00
parent 229b82efbc
commit 80e4d59209
@@ -8,8 +8,11 @@ startup-options-validation toolkit — a failure-accumulating `IValidateOptions<
rule primitives, a bind+validate+`ValidateOnStart` DI helper, and a pre-host `ConfigPreflight` rule primitives, a bind+validate+`ValidateOnStart` DI helper, and a pre-host `ConfigPreflight`
aggregator — removing the duplicated validation plumbing the three sister apps each hand-roll. aggregator — removing the duplicated validation plumbing the three sister apps each hand-roll.
**Architecture:** A new standalone nested repo (`~/Desktop/scadaproj/ZB.MOM.WW.Configuration`), **Architecture:** A new self-contained solution directory committed into the outer `scadaproj`
.NET 10, one library project `ZB.MOM.WW.Configuration` with four public types repo at `~/Desktop/scadaproj/ZB.MOM.WW.Configuration` (same layout as the sibling
`ZB.MOM.WW.Telemetry`/`Health`/`Auth`/`Theme` — regular tracked files, **not** a submodule and
**not** a separate `.git`; build output `bin/`/`obj/`/`artifacts/` is gitignored). .NET 10, one
library project `ZB.MOM.WW.Configuration` with four public types
(`OptionsValidatorBase<TOptions>`, `ValidationBuilder`, `ServiceCollectionExtensions`, (`OptionsValidatorBase<TOptions>`, `ValidationBuilder`, `ServiceCollectionExtensions`,
`ConfigPreflight`) over one internal `Checks` helper that keeps rule wording identical across the `ConfigPreflight`) over one internal `Checks` helper that keeps rule wording identical across the
two front-ends (options-object validation vs raw-`IConfiguration` preflight). Scope is **startup two front-ends (options-object validation vs raw-`IConfiguration` preflight). Scope is **startup
@@ -61,9 +64,10 @@ format is `"<field> <reason>"`.
**Conventions for every task:** TDD — failing test first, minimal impl, green, commit. File-scoped **Conventions for every task:** TDD — failing test first, minimal impl, green, commit. File-scoped
namespaces, `sealed` by default, XML doc comments on public members (match the sibling libs). namespaces, `sealed` by default, XML doc comments on public members (match the sibling libs).
Library work is committed inside the nested repo `~/Desktop/scadaproj/ZB.MOM.WW.Configuration`; **All work — library and docs — is committed to the outer `scadaproj` repo on branch
docs/registry work is committed in the outer `scadaproj` repo. The `Files:` block IS the `feat/zb-mom-ww-configuration`** (the library is tracked files inside it, like the sibling libs;
`files_to_edit` contract. there is no separate nested `.git`). `dotnet build`/`test` may `cd` into the library dir, but every
`git commit` targets the outer repo. The `Files:` block IS the `files_to_edit` contract.
**Source references (read-only, to verify current-state against — do NOT modify):** **Source references (read-only, to verify current-state against — do NOT modify):**
- OtOpcUa: `~/Desktop/OtOpcUa/src/Core/ZB.MOM.WW.OtOpcUa.Configuration/Validation/{DraftValidator,DraftSnapshot}.cs` (draft validation stays per-project) - OtOpcUa: `~/Desktop/OtOpcUa/src/Core/ZB.MOM.WW.OtOpcUa.Configuration/Validation/{DraftValidator,DraftSnapshot}.cs` (draft validation stays per-project)
@@ -243,17 +247,17 @@ plan; README status table links resolve.
</Solution> </Solution>
``` ```
**Step 6: init repo + verify restore/build** **Step 6: verify restore/build** (NO `git init` — the library is tracked inside the outer repo)
```bash ```bash
cd ~/Desktop/scadaproj/ZB.MOM.WW.Configuration && git init -q cd ~/Desktop/scadaproj/ZB.MOM.WW.Configuration
dotnet build ZB.MOM.WW.Configuration.slnx dotnet build ZB.MOM.WW.Configuration.slnx
``` ```
Expected: build succeeds (0 source files yet → empty assembly is fine). Expected: build succeeds (0 source files yet → empty assembly is fine).
**Step 7: Commit** (nested repo) **Step 7: Commit** (outer repo, branch `feat/zb-mom-ww-configuration`)
```bash ```bash
git -C ~/Desktop/scadaproj/ZB.MOM.WW.Configuration add -A git -C ~/Desktop/scadaproj add ZB.MOM.WW.Configuration
git -C ~/Desktop/scadaproj/ZB.MOM.WW.Configuration commit -m "chore: scaffold ZB.MOM.WW.Configuration solution" git -C ~/Desktop/scadaproj commit -m "chore: scaffold ZB.MOM.WW.Configuration solution"
``` ```
--- ---
@@ -463,8 +467,8 @@ cd ~/Desktop/scadaproj/ZB.MOM.WW.Configuration && dotnet test
**Step 6: Commit** (nested repo) **Step 6: Commit** (nested repo)
```bash ```bash
git -C ~/Desktop/scadaproj/ZB.MOM.WW.Configuration add -A git -C ~/Desktop/scadaproj add ZB.MOM.WW.Configuration
git -C ~/Desktop/scadaproj/ZB.MOM.WW.Configuration commit -m "feat: Checks primitives + ValidationBuilder" git -C ~/Desktop/scadaproj commit -m "feat: Checks primitives + ValidationBuilder"
``` ```
--- ---
@@ -559,11 +563,11 @@ public abstract class OptionsValidatorBase<TOptions> : IValidateOptions<TOptions
} }
``` ```
**Step 4: Run — expect PASS**, then **Commit** (nested repo) **Step 4: Run — expect PASS**, then **Commit** (outer repo)
```bash ```bash
cd ~/Desktop/scadaproj/ZB.MOM.WW.Configuration && dotnet test cd ~/Desktop/scadaproj/ZB.MOM.WW.Configuration && dotnet test
git -C ~/Desktop/scadaproj/ZB.MOM.WW.Configuration add -A git -C ~/Desktop/scadaproj add ZB.MOM.WW.Configuration
git -C ~/Desktop/scadaproj/ZB.MOM.WW.Configuration commit -m "feat: OptionsValidatorBase<TOptions>" git -C ~/Desktop/scadaproj commit -m "feat: OptionsValidatorBase<TOptions>"
``` ```
--- ---
@@ -669,11 +673,11 @@ public static class ServiceCollectionExtensions
} }
``` ```
**Step 4: Run — expect PASS**, then **Commit** (nested repo) **Step 4: Run — expect PASS**, then **Commit** (outer repo)
```bash ```bash
cd ~/Desktop/scadaproj/ZB.MOM.WW.Configuration && dotnet test cd ~/Desktop/scadaproj/ZB.MOM.WW.Configuration && dotnet test
git -C ~/Desktop/scadaproj/ZB.MOM.WW.Configuration add -A git -C ~/Desktop/scadaproj add ZB.MOM.WW.Configuration
git -C ~/Desktop/scadaproj/ZB.MOM.WW.Configuration commit -m "feat: AddValidatedOptions bind+validate+ValidateOnStart" git -C ~/Desktop/scadaproj commit -m "feat: AddValidatedOptions bind+validate+ValidateOnStart"
``` ```
--- ---
@@ -825,11 +829,11 @@ public sealed class ConfigPreflight
} }
``` ```
**Step 4: Run — expect PASS**, then **Commit** (nested repo) **Step 4: Run — expect PASS**, then **Commit** (outer repo)
```bash ```bash
cd ~/Desktop/scadaproj/ZB.MOM.WW.Configuration && dotnet test cd ~/Desktop/scadaproj/ZB.MOM.WW.Configuration && dotnet test
git -C ~/Desktop/scadaproj/ZB.MOM.WW.Configuration add -A git -C ~/Desktop/scadaproj add ZB.MOM.WW.Configuration
git -C ~/Desktop/scadaproj/ZB.MOM.WW.Configuration commit -m "feat: ConfigPreflight raw-config aggregator" git -C ~/Desktop/scadaproj commit -m "feat: ConfigPreflight raw-config aggregator"
``` ```
--- ---
@@ -862,8 +866,8 @@ Expected: all tests green; exactly one `.nupkg` at `0.1.0`.
**Step 4: Commit** (nested repo) **Step 4: Commit** (nested repo)
```bash ```bash
git -C ~/Desktop/scadaproj/ZB.MOM.WW.Configuration add -A git -C ~/Desktop/scadaproj add ZB.MOM.WW.Configuration
git -C ~/Desktop/scadaproj/ZB.MOM.WW.Configuration commit -m "docs: README + CLAUDE.md; verify 0.1.0 pack" git -C ~/Desktop/scadaproj commit -m "docs: README + CLAUDE.md; verify 0.1.0 pack"
``` ```
--- ---