Remove telemetry entirely (ADR-0010)#538
Open
ChrisonSimtian wants to merge 3 commits into
Open
Conversation
The telemetry feature carried over from NUKE has been inert since the fork: its Application Insights endpoint was the original maintainer's and can't be reused, the client dependency was dropped (Fallout-build#79), and TrackEvent was a stub. It was kept dormant on the intent of wiring up a Fallout-owned backend later — an intent with no owner, endpoint, or plan. Per ADR-0010, Fallout collects no telemetry, so the subsystem is removed rather than left as a dormant liability. Removes the Telemetry classes and the [Telemetry] build extension, every call site (the FalloutBuild attribute, the config-generation hook, and the setup / add-package / cake-convert CLI events), the FALLOUT_TELEMETRY_OPTOUT / NUKE_TELEMETRY_OPTOUT env vars, the FalloutTelemetryVersion / NukeTelemetryVersion MSBuild property (including its legacy lift and FALLOUT001 warning), the FalloutTelemetryDocsUrl constant, and the test-run opt-out plumbing. Not a breaking change: the env var and property only ever gated a no-op, and an unset/unknown one is silently ignored. The .NET SDK's own DOTNET_CLI_TELEMETRY_OPTOUT is left in place. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The migrate tool rewrote NUKE's telemetry knobs to Fallout-branded equivalents: NukeTelemetryVersion → FalloutTelemetryVersion and NUKE_TELEMETRY_OPTOUT → FALLOUT_TELEMETRY_OPTOUT. With telemetry removed (ADR-0010) those targets no longer exist, so renaming would plant dead, telemetry-branded cruft in every migrated project. Drop the rename rules and strip the knobs instead: RewriteCsprojsStep removes the <(Nuke|Fallout)TelemetryVersion> element line, ScriptRewriter removes any (NUKE|FALLOUT)_TELEMETRY_OPTOUT assignment line (bash/pwsh/cmd spellings). Specs updated to assert the knobs are gone rather than renamed. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Records the decision that Fallout collects no telemetry — reversing the prior "kept dormant, wire up a Fallout endpoint later" stance — and its rationale, non-breaking impact, and the alternatives (keep dormant / opt-in / local-only) that were rejected. Adds a "No telemetry" convention, drops the now-removed Microsoft.ApplicationInsights row from the dependency overview, updates the from-nuke migration guide to show the telemetry knobs are stripped, and rewords the build-events example that used telemetry as its illustration. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Collaborator
Author
|
I think this should go into the release. I dont like people spying on me and the Apps Insights instance is likely dead. |
ITaluone
approved these changes
Jul 24, 2026
ITaluone
left a comment
Collaborator
There was a problem hiding this comment.
Yeah.. another cool selling point :D
Contributor
There was a problem hiding this comment.
Pull request overview
Removes the inherited (and long-inert) telemetry subsystem from Fallout end-to-end, updates migration tooling to strip legacy telemetry knobs rather than renaming them, and records the “no telemetry” policy as ADR-0010.
Changes:
- Delete the Telemetry subsystem + build/CLI hooks, and remove all related knobs (
*_TELEMETRY_OPTOUT,*TelemetryVersion, telemetry docs URL plumbing). - Update
fallout migraterewrites to strip telemetry env-var/property lines instead of rewriting them to Fallout equivalents. - Add ADR-0010 and update docs/conventions to codify “Fallout collects no telemetry”.
Reviewed changes
Copilot reviewed 30 out of 30 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| tests/Fallout.Migrate.Specs/ScriptRewriterSpecs.cs | Updates/extends specs for script rewrites; adds telemetry opt-out stripping assertion. |
| tests/Fallout.Migrate.Specs/RewriteCsprojsStepSpecs.cs | Updates specs to expect telemetry version property removal instead of renaming. |
| tests/Fallout.Migrate.Specs/MigrationIntegrationSpecs.cs | Integration spec now asserts migrated scripts do not contain telemetry opt-out knobs. |
| tests/Fallout.Build.Specs/ExecutionSpecsInitializer.cs | Removes test-run initializer that set the telemetry opt-out env var. |
| src/Fallout.Migrate/Steps/ScriptRewriter.cs | Strips telemetry opt-out lines during script migration; removes legacy rename. |
| src/Fallout.Migrate/Steps/RewriteCsprojsStep.cs | Strips Nuke/FalloutTelemetryVersion MSBuild property during csproj migration. |
| src/Fallout.Common/Fallout.Common.targets | Removes legacy MSBuild property bridging for telemetry version. |
| src/Fallout.Cli/templates/_build.csproj | Removes telemetry version placeholder/property from template project. |
| src/Fallout.Cli/Commands/SetupCommand.cs | Removes telemetry setup + template parameter injection. |
| src/Fallout.Cli/Commands/RunCommand.cs | Stops setting FALLOUT_TELEMETRY_OPTOUT when launching dotnet. |
| src/Fallout.Cli/Commands/CakeConvertCommand.cs | Removes telemetry event emission. |
| src/Fallout.Cli/Commands/AddPackageCommand.cs | Removes telemetry event emission. |
| src/Fallout.Build/Telemetry/Telemetry.Properties.cs | Deletes telemetry property collection implementation. |
| src/Fallout.Build/Telemetry/Telemetry.Events.cs | Deletes telemetry event APIs (BuildStarted/TargetSucceeded/etc.). |
| src/Fallout.Build/Telemetry/Telemetry.cs | Deletes disclosure/consent/opt-out/version plumbing and awareness cookie logic. |
| src/Fallout.Build/FalloutBuild.cs | Removes [Telemetry] build extension attribute usage. |
| src/Fallout.Build/Execution/Extensions/TelemetryAttribute.cs | Deletes build extension that emitted telemetry events. |
| src/Fallout.Build/CICD/InvokeBuildServerConfigurationGenerationAttribute.cs | Removes telemetry emission on configuration generation. |
| src/Fallout.Build.Shared/Constants.cs | Removes telemetry docs URL constant. |
| docs/migration/from-nuke.md | Updates migration docs to reflect telemetry knobs are dropped/stripped. |
| docs/dependencies.md | Removes telemetry/dead ApplicationInsights dependency documentation section. |
| docs/agents/conventions.md | Updates repo conventions to explicitly forbid telemetry reintroduction. |
| docs/adr/README.md | Adds ADR-0010 to ADR index. |
| docs/adr/0010-no-telemetry-collection.md | New ADR documenting the no-telemetry decision and consequences. |
| docs/02-fundamentals/04-builds.md | Removes telemetry reference from “cross-cutting concerns” examples. |
| docs/01-getting-started/07-telemetry.md | Removes the telemetry documentation page. |
| build/Build.cs | Removes test-time telemetry opt-out env var injection. |
| build/_build.csproj | Removes FalloutTelemetryVersion property from build project. |
| build.sh | Removes FALLOUT_TELEMETRY_OPTOUT export. |
| build.ps1 | Removes FALLOUT_TELEMETRY_OPTOUT environment variable assignment. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+38
to
+55
| [Fact] | ||
| public void StripsTelemetryOptOutLineEntirely() | ||
| { | ||
| // Telemetry was removed from Fallout (ADR-0010) — the opt-out is dropped, not renamed | ||
| // to a dead FALLOUT_TELEMETRY_OPTOUT. The surrounding lines are untouched. | ||
| const string input = """ | ||
| export DOTNET_ROLL_FORWARD="Major" | ||
| export NUKE_TELEMETRY_OPTOUT=1 | ||
| dotnet nuke "$@" | ||
| """; | ||
|
|
||
| var result = ScriptRewriter.Rewrite(input); | ||
|
|
||
| result.Content.Should().NotContain("TELEMETRY_OPTOUT"); | ||
| result.Content.Should().Contain("DOTNET_ROLL_FORWARD"); | ||
| result.Content.Should().Contain("dotnet fallout"); | ||
| } | ||
|
|
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.
Gets rid of the telemetry feature inherited from NUKE — for good. Adds ADR-0010 recording the decision that Fallout collects no telemetry, and removes the subsystem in full.
Background
Telemetry has been inert since the fork: the Application Insights endpoint was the original maintainer's (unusable), the client dependency was dropped (#79), and
TrackEventwas a stub. It was kept dormant to "wire up a Fallout-owned backend later" — an intent with no owner, endpoint, or plan. This closes that off: no telemetry, no dormant scaffolding.What's removed
Telemetrysubsystem +[Telemetry]build extension, and every call site (theFalloutBuildattribute, the config-generation hook, thesetup/add-package/cake-convertCLI events).FALLOUT_TELEMETRY_OPTOUT/NUKE_TELEMETRY_OPTOUT,FalloutTelemetryVersion/NukeTelemetryVersion(incl. the legacy lift +FALLOUT001warning), theFalloutTelemetryDocsUrlconstant, the test-run opt-out, and the telemetry docs page.fallout migratenow strips NUKE's telemetry knobs instead of renaming them to deadFallout*equivalents.Compatibility — not a breaking change
The env var and MSBuild property only ever gated a no-op, and an unset/unknown one is silently ignored — no consumer build errors, no behaviour change (telemetry was already off). The .NET SDK's own
DOTNET_CLI_TELEMETRY_OPTOUTis left in place.Commits
Testing
dotnet build fallout.slnxclean. Specs green: Migrate 32, Build 147, CLI 47, Common 131 (+7 unrelated skips).🤖 Generated with Claude Code