Skip to content

chore: post-Phase-3 source cleanup + modernization (pre-Phase-4 prep)#32

Merged
guy-lud merged 22 commits into
masterfrom
gsd/phase-4-collection-validation-binding
Jul 14, 2026
Merged

chore: post-Phase-3 source cleanup + modernization (pre-Phase-4 prep)#32
guy-lud merged 22 commits into
masterfrom
gsd/phase-4-collection-validation-binding

Conversation

@guy-lud

@guy-lud guy-lud commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

What

Broad source cleanup / modernization pass (commit 86dfa6b) across ~90 files — Core (Conversion/, Core/Reflection/, exception types, ValuesPopulator), Binders, GenericHost, the full unit-test project, and the benchmark project. Cleanup-flavored: implicit usings (dropped redundant using directives), nullable annotations, modern C# syntax (range/index), and ordinal string comparisons.

This branch is named phase-4-… but contains no Phase 4 feature work yet — it's a cleanup/prep checkpoint so Phase 4 can start from a clean master.

Verified (local, CI flavor)

  • dotnet build -c Release -p:ContinuousIntegrationBuild=true0 warnings, 0 errors
  • dotnet test -c Release208 passed, 0 failed (net8.0 + net10.0)

Known deferred (not blocking; tracked for the follow-up cleanup review)

Finished-code review (dotnet code-reviewer / security-auditor / performance-analyst) flagged, in CommandLineSettingsBinder:

  • H-1: the if (next is null) continue; guard (added earlier as post-review hardening) was dropped → reachable NullReferenceException via AddArguments(new[] { "--k", null }) at config-time. Not a secret leak — the redaction invariant was verified intact.
  • M-1: no test covers the null-lookahead path (which is why the full suite stays green).

Pre-stable alpha; shipping as-is by owner decision, fix tracked for the follow-up.

guy-lud added 22 commits July 14, 2026 13:59
- Flip public class SettingsHolder to internal sealed
- Removes an internal DTO from the public API surface
- Reachable from tests/benchmark via existing InternalsVisibleTo
- Drop Core.AspNet Project entry from SimpleSettings.slnx
- Drop Core.AspNet ProjectReference from UnitTests.csproj
- Delete src/Core/ExistForAll.SimpleSettings.Core.AspNet/ directory
- Test-local Core/AspNet/Environments.cs duplicate untouched
- Published 2.0.0-alpha.0.* alphas: unlist is owner-optional follow-up
- Split four Microsoft.Extensions.* pins into per-TFM conditional ItemGroups
- net8 floors: Configuration 8.0.0, Configuration.Json 8.0.1, DI 8.0.1, DI.Abstractions 8.0.2
- net10 stays 10.0.9 for all four
- Frees net8 consumers of the packable Binders + GenericHost packages from 10.x
…gument

- space-separated --k v, quoted-with-spaces single token
- prefixed-next-token = new key, prefixed-value non-binding
- SkipFirstArgument true/false, empty-token no-crash
- CLI-path secret-redaction regression (S2)
…02/D-04,D-05)

- SkipFirstArgument (default false, explicit override; no silent arg[0] drop)
- Parse rewritten to index/lookahead loop; space-separated --k v binds
- empty-safe zero-alloc prefix detection (length-delta + Array.IndexOf, cached prefix array)
- prefixed next-token treated as new key; ArgumentPrefixes XML-doc note
…p (SRC-02/Open Q #1)

- replace Environment.CommandLine.Split(' ') with Environment.GetCommandLineArgs()
- wrap caller action to enable SkipFirstArgument=true (exe skip owned by this entry point)
- quoted-value-with-spaces criterion now holds end-to-end unconditionally
@guy-lud
guy-lud merged commit 7f9e17c into master Jul 14, 2026
2 checks passed
@guy-lud
guy-lud deleted the gsd/phase-4-collection-validation-binding branch July 14, 2026 17:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant