Reports
Archora produces three reports off the same scan. Each answers a different question, so pick the format that matches the audience.
What you can export
| Format | Audience | Question it answers |
|---|---|---|
| HTML | Reviewer, tech lead, code owner | "What does the architecture look like right now and what should we fix first?" |
| Fix-plan JSON | Automation, internal tools, planning | "Give me the prioritised repair queue with reason / action / verify per item." |
| Full JSON | Integrations, dashboards, custom views | "Give me the entire scan envelope so I can build my own slice." |
| JUnit | CI / test reporting tabs | "Surface every cycle and rule violation as a failed test case." |
| Markdown | PR comments | "Drop a compact summary into a code review." |
You can produce each one from the desktop app's Export menu or from the CLI: archora report . --format html|fix-plan|json|junit|md.
HTML report
The HTML brief is a single file with no JS, no graph runtime and no external assets. Open it in any browser; commit it to a repo if you want.
It contains:
- Repair brief — grade, score, modules, edges, generated module count when the policy is active.
- Fix first — the highest-priority finding spelled out as Action / Why / Verify.
- Top priority — table of the next 9 repair items, each tagged by type and target list.
- Cycles — top 20 cycles with severity, length, suggested breakpoint, and a sample of modules.
- Hotspots — top 20 modules by hotness with fan-in / fan-out and "in cycle" flag.
- Rule violations — split per layer / contracts.
- Impact summary — modules with the largest direct importer set so the reader knows where a change ripples furthest.
- Verification plan — short ordered list of the checks to run before claiming the fix is done.
The footer points back to the desktop app for the interactive workspace — the HTML is a brief, not a replacement.
Fix-plan JSON
Stable, versioned envelope your tooling can consume:
{
"kind": "archora-fix-plan",
"version": 1,
"exportedAt": "2026-05-12T00:00:00.000Z",
"appVersion": "archora",
"project": { "id": "...", "name": "...", "rootPath": "...", "detectedFramework": "vue" },
"architectureDebt": { "score": 13, "grade": "A", "breakdown": { ... } },
"summary": {
"cycles": 7,
"layerViolations": 1,
"contractViolations": 0,
"hotZones": 4,
"generatedModules": 12
},
"priorityFindings": [
{
"type": "cycle",
"id": "cycle:abcdef12",
"title": "Direct dependency cycle",
"weight": 100,
"targets": ["src/a.ts", "src/b.ts"],
"reason": "2 modules close a dependency cycle.",
"action": "Break the import from src/b.ts -> src/a.ts.",
"verify": "Open Cycles and confirm this cycle disappeared after re-scan.",
"params": { "severity": "direct" }
}
],
"evidence": {
"cycles": [...],
"layerViolations": [...],
"contractViolations": [...],
"hotZones": [...],
"generatedModules": [...]
},
"verificationOrder": ["Verify cycle breakpoints first", "Verify layer boundary fixes"]
}Guarantees:
kindandversionare stable. Breaking the shape requires bumpingversion.priorityFindingsis sorted byweightdescending. Findings whose every target is generated are flagged withgenerated: trueand aggressively de-prioritised so they never dominate the top of the queue.- Each finding always carries
reason,action,verifystrings — tooling can render them verbatim. evidencecontains the underlying cycles, violations, hotspots and generated module list (capped) so consumers don't need a second call.
Full JSON report
Versioned envelope around the entire ScanResult:
{
"schema": 1,
"app": "archora",
"exportedAt": "2026-05-12T00:00:00.000Z",
"scan": {
/* full ScanResult: modules, edges, cycles, metrics, ... */
}
}Use this for diffing in archora diff, for storing baselines in CI, or for building custom dashboards. It's bigger than the fix-plan — a few hundred MB on very large monorepos — so prefer the fix-plan when you only need the repair queue.
Re-export
Every successful export is recorded in History → Exported reports. Hit Re-export next to any record to repeat the same scope and format on the current scan, with a fresh timestamp in the file name. The button stays disabled when the active scan is from a different project — open that project first, scan, then re-export.
File names
archora-<project-slug>-<scope>-<iso-stamp>.<ext>
<scope>isreport,fix-planorcurrent-view.- The project slug is the sanitised project name. Diacritics, spaces and punctuation are folded to
-so the file is safe on any filesystem.
Failure handling
The export pipeline distinguishes user cancel from real errors:
- Cancelling the OS save dialog (desktop) silently aborts — no toast, no history record.
- Browser/Tauri write errors surface a
dangertoast with the underlying message. - The history record is only created after the file is on disk.