Fallout-build / Fallout-build/Fallout

Reintroduce JetBrains [PublicAPI] as an IDE authoring hint on consumer-facing assemblies

Open
#539 0 comments 0 reactions 0 assignees View on GitHub
enhancement target/vCurrent
Dominant language
C#
Stars
154
Forks
19
Avg merge
1d 22h
Merged PRs (30d)
15

Description

## Problem

[PR #76](https://github.com/Fallout-build/Fallout/pull/76) removed `JetBrains.Annotations` wholesale (~1450 `[PublicAPI]` + friends). Side effect: Rider/ReSharper now flag Fallout's public **build-authoring surface** as "unused" — because it *is* unused in-repo by design (external consumers call it, we don't). Contributors get persistent false-positive "unused symbol" noise on exactly the API we ship.

`[PublicAPI]` tells the IDE "this is intentional API, consumed externally — don't flag it." It's an **IDE authoring hint only**: zero runtime/semantic effect.

**Not this issue:** API-surface break detection / changelog gating. That's #410 / #530 (Roslyn `PublicApiAnalyzers`). Complementary and separate — one silences an IDE hint, the other guards the shipped surface.

## Outcome

Consumer-facing ("outer") assemblies advertise their public surface as intentional API again, so:

- contributors stop getting false unused-symbol warnings on shipped API;
- consumers' own Rider/ReSharper sees our surface as API too (the annotation flows through the package, no `PrivateAssets`).

## Acceptance criteria

- [ ] `JetBrains.Annotations` referenced so the annotation flows to consumers (no `PrivateAssets`).
- [ ] Outer/consumer-facing assemblies carry `[assembly: PublicAPI]` via a **single allowlist** (one source of truth), not ~1450 hand-placed attributes.
- [ ] Inner assemblies (Cli, Migrate, SourceGenerators, MSBuildTasks, Tooling.Generator, Persistence) get **no blanket**; genuine extensibility types there are annotated per-type (`[PublicAPI]` in source) — the hybrid split.
- [ ] An ADR records the decision (mechanism + outer/inner criterion) and goes up for public review.
- [ ] An encapsulation-audit doc tracks any public-by-accident types the pass surfaces.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.