First Scan Report
Understanding your first scan results. The "shock report" that reveals current technical debt, with summary gauges, top violations, and a Copy for AI button.
First Scan Report
The First Scan Report is the initial analysis of your entire codebase --- not just a PR diff, but a full scan of all TypeScript and JavaScript files in the project. This is the "shock report" that reveals the current state of technical debt your team has accumulated.
Every new project connected to Radar receives a First Scan Report automatically. It is designed to give you an honest, unflinching view of where you stand, and a clear path to improvement.
What to Expect
First scan results are often surprising. Codebases that "feel clean" to the team frequently show dozens or hundreds of violations that have accumulated over months or years of incremental changes. This is normal.
The report is not a judgment --- it is a baseline. The value of Radar is not the first scan score; it is the trend that follows. Every PR that passes the gate brings the score down.
Report Sections
Summary Gauges
Four circular gauges at the top of the report provide an at-a-glance summary:
| Gauge | What It Shows |
|---|---|
| Overall Debt Score | A 0--100 score aggregating all violations. 0 is pristine, 100 is critical debt across every category. The gauge needle and color indicate severity: green (0--30), yellow (31--60), red (61--100). |
| Architecture Health | Percentage of modules with clean architecture (no boundary violations, no circular dependencies). |
| Runtime Safety | Percentage of request handlers free from event-loop-blocking patterns. |
| Performance Risk | Count of unbounded queries and N+1 patterns, weighted by table volume. |
Top Violations
A prioritized list of the 10 most impactful violations in the codebase, ranked by a combination of severity and blast radius (how many files are affected).
Each violation entry shows:
- Rank (1--10)
- Rule ID and category
- Severity badge (Critical, Warning)
- File path and line number of the primary occurrence
- Occurrence count --- how many times this same violation appears across the codebase
- Description --- plain-language explanation of the risk
- Fix guidance --- concrete steps to resolve the violation
Tip: Start with violation #1 and work down. The ranking prioritizes violations that, when fixed, produce the largest score improvement.
Category Breakdown
A detailed breakdown of violations by category:
Architecture Debt:
- Total layer boundary violations
- Total circular dependencies (with cycle paths listed)
- Module boundary violations
- Forbidden framework imports in domain layers
Runtime Risk Debt:
- Sync I/O in request handlers (count and file list)
- Sync crypto operations
- ReDoS-vulnerable patterns
- Unbounded JSON/Buffer operations
Performance Debt:
- Unbounded queries by table volume (S/M/L/XL/XXL)
- N+1 query patterns
- Missing pagination on endpoints
- Fetch-all-filter-in-memory patterns
Reliability Debt:
- Fire-and-forget promises
- Missing timeouts on HTTP calls
- Empty catch blocks
- Missing error handling in use cases
Maintainability Debt:
- Functions exceeding complexity threshold (listed with their cyclomatic complexity)
- Files exceeding line count threshold
Each category section is collapsible. Expand a category to see the full list of violations with file paths and line numbers.
Copy for AI
The Copy for AI button is one of the most powerful features of the First Scan Report. It generates a formatted text version of the report optimized for pasting into AI coding tools.
What It Copies
The clipboard content includes:
## Technical Debt Radar - First Scan Report
Project: my-api
Scanned: 2026-03-18
Files analyzed: 342
Total violations: 47 (12 critical, 28 warnings, 7 info)
### Top 10 Violations (fix these first)
1. [CRITICAL] layer-boundary-violation
File: src/orders/domain/order.service.ts:14
Import: @prisma/client
Fix: Move database access to src/orders/infrastructure/order.repository.ts
2. [CRITICAL] sync-fs-in-handler
File: src/api/controllers/export.controller.ts:28
Pattern: fs.readFileSync('./template.html')
Fix: Replace with await fs.promises.readFile('./template.html', 'utf-8')
...
### All Violations by Category
[Full categorized list with file paths and line numbers]
### Fix Priority
1. Fix all Critical violations first (blocks merges)
2. Address XL/XXL performance violations (blocks merges)
3. Reduce Warning count by 50% in next sprint
How to Use It
The AI feedback loop:
- Click Copy for AI on the First Scan Report
- Open your AI coding tool (Claude Code, Cursor, Windsurf, or any AI assistant)
- Paste the report and ask the AI to fix the violations
- The AI reads the file paths, line numbers, and fix instructions, then generates fixes
- Run
radar scanlocally to verify the fixes - Push the changes --- Radar verifies on the PR
This workflow can resolve 50--80% of first scan violations in a single session, depending on codebase size and violation types.
Tip: For large codebases with many violations, paste only the top 10 violations first. Fix those, re-scan, then paste the next batch. This prevents the AI from being overwhelmed with too many changes at once.
Using the Report to Prioritize Fixes
Week 1: Critical Blockers
Focus exclusively on Critical violations because these block every future PR that touches the affected files:
- Architecture violations (layer boundaries, circular deps)
- Runtime risk violations (sync I/O in handlers)
- N+1 queries (always critical)
Week 2: High-Volume Performance
Address performance violations on your largest tables:
- Unbounded queries on XL and XXL tables
- Missing pagination on public-facing endpoints
- Fetch-all-filter-in-memory patterns
Week 3: Reliability and Maintainability
Clean up reliability patterns and start reducing complexity:
- Fire-and-forget promises (add
awaitor.catch()) - Missing timeouts on HTTP calls
- Split the highest-complexity functions
Ongoing: Gate Enforcement
After the initial cleanup, Radar's PR gate prevents new violations from being introduced. The debt score should trend downward over time as existing violations are fixed and no new ones are added.
Re-Running the First Scan
The First Scan Report is generated once when a project is first connected. To generate an updated full-project scan:
- Go to Settings > Project
- Click Re-run Full Scan
This creates a new First Scan Report with current results, useful after a major refactoring effort to measure progress against the original baseline.
The original First Scan Report is preserved for comparison. You can view both the original and the most recent full scan side by side.