[4/5] VSA: Slim Configuration to YAML schema; organize root namespaces#3347
Merged
Mpdreamz merged 7 commits intoMay 19, 2026
Merged
Conversation
Elastic.Documentation.Configuration now contains only YAML schema types and deserializer wiring. Non-schema types are relocated: IEnvironmentVariables and SymlinkValidator move to Elastic.Documentation (domain primitives); CrossLinkEntry and DocSetRegistry move into the existing Builder/ sub-namespace; the dead LenientStringListConverter is deleted. Elastic.Documentation root namespace is pruned: ChangelogEntryType and ChangelogEntrySubtype move to the existing ReleaseNotes/ sub-namespace; SemVersion, VersionSpec, and VersionOrDate move to a new Versions/ sub-namespace; GlobalCliOptions moves to Elastic.Documentation.Tooling (preserving the Elastic.Documentation namespace via pragma so consumers need only a using-directive update, not a project-reference change). Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
…nfiguration Centralizes all YAML file reading in Elastic.Documentation.Configuration. The five serialization types (ChangelogConfigurationYaml, YamlLenientList, YamlLenientListConverter, TypeEntryYamlConverter) and ChangelogConfigurationLoader move from Elastic.Changelog into Configuration.Changelog/, registered in the shared YamlStaticContext so the single-static-context-per-assembly constraint is respected. Elastic.Changelog consumers drop the old using directives; no new project references are needed since Changelog already references Configuration. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
GlobalCliOptions moved here in PR4 and carries the Argh doc-comment shortnames/summaries that populate the CLI schema. Without GenerateDocumentationFile=true those annotations are invisible to the schema generator, making the schema diff fail in CI. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
reakaleek
approved these changes
May 19, 2026
website-search-data needs the DocumentationDocument shape and mapping config without pulling in the full Elastic.Documentation assembly (YAML loading, AppliesTo parsing, link registries, etc.). The new project has zero ProjectReferences and a single NuGet dep (Elastic.Mapping), making it safe to take as a standalone dep. DocumentationDocument.Applies changes from ApplicableTo? to IReadOnlyCollection<AppliesToEntry>, eliminating the AppliesTo project dep from the contract. ApplicableTo.ToAppliesTo() centralises the conversion so the wire-format is defined in exactly one place. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
This was referenced May 19, 2026
…library (#3350) Co-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
1ccaf54
into
refactor/slim-elastic-documentation
7 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Elastic.Documentation.Configurationwas accumulating types that have nothing to do with YAML schema parsing — a domain interface, a security utility, CLI options, and dead code.Elastic.Documentation's root namespace had the same drift: version types, changelog enums, and a CLI options class all living next to cross-cutting primitives with no structural signal about their purpose. Reviewers and future contributors had no way to distinguish schema types from infrastructure types without reading each file.What
Elastic.Documentation.Configurationis trimmed to YAML schema and deserializer wiring only.IEnvironmentVariablesandSymlinkValidatormove toElastic.Documentation(domain primitives);CrossLinkEntryandDocSetRegistrymove into the existingBuilder/sub-namespace; the deadLenientStringListConverter(zero references, contradicted by its own doc-comment) is deleted.ElasticsearchEndpointConfiguratorstays in Configuration due to a dependency cycle (Configuration → Toolingalready exists).Elastic.Documentation's root namespace is pruned to genuine cross-cutting primitives.ChangelogEntryTypeandChangelogEntrySubtypemove into the existingReleaseNotes/sub-namespace;SemVersion,VersionSpec, andVersionOrDatemove to a newVersions/sub-namespace;GlobalCliOptionsmoves toElastic.Documentation.Tooling(preserving theElastic.Documentationnamespace via pragma, so ~60 consumer files need only ausingupdate, not a project-reference change).All consumer changes are mechanical
usingdirective additions — no logic was touched.Part of a move to vertical slice architecture to be able to cleanly lift search contract: