Fuse
Concepts

Reduction levels

How Fuse renders C# from light cleanup to aggressive compression and signature-only skeletons, and how to pick the smallest level that answers the task.

Reduction is the rendering step that emits source in fewer tokens without changing what it means. A single dial, the reduction level, drives the C# structural reduction: it is one enum value that selects how far Fuse goes, from no structural change to signature-only skeletons. Pick the smallest level that still answers your task.

The level is set with --level <value> on the fuse reduce command and the level parameter on the fuse_reduce MCP tool. fuse context and fuse review choose a render tier per file automatically to fit the token budget, drawing on the same ladder. The default level for fuse reduce is standard.

The Five Levels

LevelWhat it does to C#Use it when
noneNo C# structural reduction. Whitespace trim and condense still apply.A safe baseline that changes nothing structural
standardRemoves C# comments, using directives, namespace wrappers, and #region directives.Trim noise but keep structure
aggressiveThe standard removals plus aggressive whitespace and syntax compression.Maximum reduction with bodies intact
skeletonEmits structural skeletons (type and member signatures), bodies removed.An architecture pass on an unfamiliar solution
publicApiLike skeleton, but keeps only public and protected members.The contract a project presents to consumers

The levels are cumulative in effect: aggressive includes everything standard does, and publicApi is skeleton narrowed to the public surface.

none

This level does lossless cleanup only: it normalizes whitespace, condenses blank lines, and minifies XML-family and Razor files. It applies no C# structural reduction.

standard

--level standard removes four categories of C# structure together:

  • Comments: line and block comments, preserving string contents.
  • Using directives and aliases.
  • Namespace declarations and their indentation.
  • #region markers and preprocessor directives.

These four were once separate flags; the level applies all of them at once.

aggressive

--level aggressive runs the standard removals and then a second tier: it strips noise attributes such as DebuggerDisplay and MethodImpl, removes the this. prefix, rewrites auto-properties to a compact form, and collapses whitespace around delimiters. These transforms are regex-based, not Roslyn-parsed. They preserve string-literal contents, but the output is no longer guaranteed to compile and can rewrite syntax in ways a Roslyn parse would reject. Use it when the reader is a model that needs the logic, not a compiler. On the recorded corpus it removes 16 to 46 percent of tokens.

skeleton

--level skeleton drops method bodies entirely and emits class, interface, and member signatures. Unlike aggressive, skeleton extraction uses Roslyn syntax analysis. Across the four recorded repositories it removes 38 to 44 percent of tokens. An independent Roslyn parse found that it retained every public and protected type-name key and 96.3 to 99.4 percent of public and protected method-name keys. This measures declaration-name fidelity, not complete signature or API preservation. See Roslyn structural analysis vs regex for the measured comparison.

publicApi

--level publicApi is the skeleton narrowed to the contract a project exposes: it keeps only public and protected member signatures and drops the rest. Reach for it when you want the API surface alone.

Where the Level Applies

The level is the single dial for C# structural reduction on a fuse reduce call:

fuse reduce --files src/OrderService.cs --level skeleton

In fuse context and fuse review, the level is not set by hand. The context plan picks a render tier per file (full, compressed, or skeleton) to fit the --max-tokens budget, keeping the must-keep seeds in full and reducing peripheral files further when the budget is tight. Best-effort secret redaction (regex and entropy heuristics) runs before token counting at every level. See Keep secrets out.

Read the Fidelity Claim Correctly

The benchmark compares declaration names from reduced output with an independent Roslyn parse of the raw source. It does not verify every modifier, attribute, generic constraint, parameter, or return type. skeleton and publicApi intentionally drop bodies.

Survey Before You Reduce

When you only need a map, surveying the index is cheaper still:

fuse map ./src --detail all

fuse map lists indexed symbols, routes, and counts instead of file bodies. See Survey a codebase cheaply.

Try Two Views

Run both commands on one known file and compare whether the body is needed:

fuse reduce --files src/OrderService.cs --level aggressive
fuse reduce --files src/OrderService.cs --level skeleton

On this page