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`
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`),
.NET 10, one library project `ZB.MOM.WW.Configuration` with four public types
**Architecture:** A new self-contained solution directory committed into the outer `scadaproj`
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`,
`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
@@ -61,9 +64,10 @@ format is `"<field> <reason>"`.
**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).
Library work is committed inside the nested repo `~/Desktop/scadaproj/ZB.MOM.WW.Configuration`;
docs/registry work is committed in the outer `scadaproj` repo. The `Files:` block IS the
`files_to_edit` contract.
**All work — library and docs — is committed to the outer `scadaproj` repo on branch
`feat/zb-mom-ww-configuration`** (the library is tracked files inside it, like the sibling libs;
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):**
- 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>
```
**Step 6: init repo + verify restore/build**
**Step 6: verify restore/build** (NO `git init` — the library is tracked inside the outer repo)
```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
```
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
git -C ~/Desktop/scadaproj/ZB.MOM.WW.Configuration add -A
git -C ~/Desktop/scadaproj/ZB.MOM.WW.Configuration commit -m "chore: scaffold ZB.MOM.WW.Configuration solution"
git -C ~/Desktop/scadaproj add ZB.MOM.WW.Configuration
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)
```bash
git -C ~/Desktop/scadaproj/ZB.MOM.WW.Configuration add -A
git -C ~/Desktop/scadaproj/ZB.MOM.WW.Configuration commit -m "feat: Checks primitives + ValidationBuilder"
git -C ~/Desktop/scadaproj add ZB.MOM.WW.Configuration
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
cd ~/Desktop/scadaproj/ZB.MOM.WW.Configuration && dotnet test
git -C ~/Desktop/scadaproj/ZB.MOM.WW.Configuration add -A
git -C ~/Desktop/scadaproj/ZB.MOM.WW.Configuration commit -m "feat: OptionsValidatorBase<TOptions>"
git -C ~/Desktop/scadaproj add ZB.MOM.WW.Configuration
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
cd ~/Desktop/scadaproj/ZB.MOM.WW.Configuration && dotnet test
git -C ~/Desktop/scadaproj/ZB.MOM.WW.Configuration add -A
git -C ~/Desktop/scadaproj/ZB.MOM.WW.Configuration commit -m "feat: AddValidatedOptions bind+validate+ValidateOnStart"
git -C ~/Desktop/scadaproj add ZB.MOM.WW.Configuration
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
cd ~/Desktop/scadaproj/ZB.MOM.WW.Configuration && dotnet test
git -C ~/Desktop/scadaproj/ZB.MOM.WW.Configuration add -A
git -C ~/Desktop/scadaproj/ZB.MOM.WW.Configuration commit -m "feat: ConfigPreflight raw-config aggregator"
git -C ~/Desktop/scadaproj add ZB.MOM.WW.Configuration
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)
```bash
git -C ~/Desktop/scadaproj/ZB.MOM.WW.Configuration add -A
git -C ~/Desktop/scadaproj/ZB.MOM.WW.Configuration commit -m "docs: README + CLAUDE.md; verify 0.1.0 pack"
git -C ~/Desktop/scadaproj add ZB.MOM.WW.Configuration
git -C ~/Desktop/scadaproj commit -m "docs: README + CLAUDE.md; verify 0.1.0 pack"
```
---