Re-introduce JetBrains.Annotations; mark outer-layer assemblies [PublicAPI]#6
Open
ChrisonSimtian wants to merge 3 commits into
Open
Re-introduce JetBrains.Annotations; mark outer-layer assemblies [PublicAPI]#6ChrisonSimtian wants to merge 3 commits into
ChrisonSimtian wants to merge 3 commits into
Conversation
…ublicAPI] Reverses the rebrand-era removal (CHANGELOG Fallout-build#76). Adds JetBrains.Annotations centrally and stamps [assembly: PublicAPI] on the consumer-facing "outer layer" so Rider/ReSharper treat their public surface as intentional API. Outer-layer membership is a single list in Directory.Build.props (_FalloutOuterApiAssemblies); inner layers (MSBuildTasks, SourceGenerators, the Cli/Migrate tools, Migrate.Analyzers, the Persistence.Solution parser) get no blanket annotation and are annotated selectively in source. The reference flows to consumers (no PrivateAssets) so their tooling sees the annotations too. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Non-breaking encapsulation pass on assemblies with no consumer-facing API (audit Tier 1). These were public by accident, not by design: - Fallout.MSBuildTasks.TaskItemExtensions (not packed; in-assembly helper) - Fallout.SourceGenerators.CodeAnalysisExtensions (not packed; in-assembly helper) - Fallout.Migrate.Migration + nested Summary (tool exe; used only by Program and the test project via InternalsVisibleTo) Migration is internalized alongside its Summary return type to keep accessibility consistent (CS0050). Migrate.Tests reach both via the existing IVT grant. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Records the public-by-accident audit behind the [PublicAPI] pass: Tier 1 done (non-breaking inner-layer flips), Tier 2 deferred (breaking, batched to the year cut), Tier 3 kept public (CI-config extensibility surface). Substitutes for a tracking issue since issues are disabled on this fork. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
Re-introduces
JetBrains.Annotations(reverses the rebrand-era removal, CHANGELOG Fallout-build#76), stamps[assembly: PublicAPI]on the consumer-facing outer layer, and does a non-breaking first pass of the public/internal encapsulation audit.Commits
JetBrains.Annotations+[assembly: PublicAPI]on the outer layerdocs/api-encapsulation-audit.mdtracking the restAnnotation approach
_FalloutOuterApiAssembliesinDirectory.Build.propslists the outer layer. A listed project auto-gets theJetBrains.Annotationsreference +[assembly: PublicAPI](via<AssemblyAttribute>). Opt out with<FalloutPublicApi>false</FalloutPublicApi>.[assembly: PublicAPI]; inner (MSBuildTasks,SourceGenerators, theCli/Migratetools,Migrate.Analyzers, thePersistence.Solutionparser) = no blanket. The audit found zero inner types needing a targeted[PublicAPI].PrivateAssets, so consumer tooling sees the annotations.Utilities.*), Solution (the public facade), Tooling.Generator, the 3Nuke.*shims. (NuGet.Analysisis pre-listed for when that branch merges — no-op here.)Encapsulation audit (see
docs/api-encapsulation-audit.md)TaskItemExtensions,CodeAnalysisExtensions,Migration(+Summary) →internal. No consumer-facing API in those assemblies.Fallout.BuildandPersistence.Solution.*Attribute.GetConfiguration() : ConfigurationEntity), correctly left public — the blanket[PublicAPI]is right for them.Verification
dotnet build fallout.slnx— 0 errors. Affected tests green (Migrate.Tests 22/22, SourceGenerators.Tests 6/6).🤖 Generated with Claude Code