Skip to content

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

FormatAudienceQuestion it answers
HTMLReviewer, tech lead, code owner"What does the architecture look like right now and what should we fix first?"
Fix-plan JSONAutomation, internal tools, planning"Give me the prioritised repair queue with reason / action / verify per item."
Full JSONIntegrations, dashboards, custom views"Give me the entire scan envelope so I can build my own slice."
JUnitCI / test reporting tabs"Surface every cycle and rule violation as a failed test case."
MarkdownPR 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:

json
{
  "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:

  • kind and version are stable. Breaking the shape requires bumping version.
  • priorityFindings is sorted by weight descending. Findings whose every target is generated are flagged with generated: true and aggressively de-prioritised so they never dominate the top of the queue.
  • Each finding always carries reason, action, verify strings — tooling can render them verbatim.
  • evidence contains 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:

json
{
  "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> is report, fix-plan or current-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 danger toast with the underlying message.
  • The history record is only created after the file is on disk.