"use strict";
/**
 * AnalysisResult — the canonical cross-process aggregate that every
 * dxkit subcommand reads from instead of independently re-running the
 * tool gather.
 *
 * Architectural posture:
 *
 *   - **One gather per repo+SHA.** `vyuh-dxkit health`, `vulnerabilities`,
 *     `test-gaps`, `quality`, `dev-report`, `licenses`, `bom`, `dashboard`,
 *     and `coverage` all build OR read this same struct. When two
 *     subcommands run minutes apart on the same commit, they see byte-
 *     identical inputs — multi-consumer drift on shared metrics becomes
 *     structurally impossible.
 *
 *   - **Provenance is part of the type.** `commitSha` + `dxkitVersion`
 *     + `schemaVersion` + `ignoreFileMtime` form the cache invalidation
 *     key. Any of them changing means the cached file is stale and the
 *     gather must rerun.
 *
 *   - **Dirty trees never persist.** When the working tree has
 *     uncommitted changes, `workingTreeDirty` is true. The cache module
 *     refuses to read or write the on-disk file in that state; in-
 *     process callers can still share a single rebuild via the in-
 *     memory cache, but nothing reaches `.dxkit/cache/` on disk.
 *
 *   - **`capabilities` + `metrics` are the canonical aggregates** —
 *     identical to what the health analyzer's internal gather produces,
 *     just persisted between processes. `CapabilityReport` already
 *     carries the canonical security aggregate (one severity-bucket
 *     source for every consumer). This envelope generalizes the same
 *     "one aggregate, many consumers" template up one architectural
 *     level: one `AnalysisResult` across the process boundary.
 *
 *   - **`derived` is for lazily-materialized per-analyzer outputs**
 *     (LicensesReport, BomReport, DevReport, …). Empty at first;
 *     consumers widen the union as each analyzer migrates so a
 *     subcommand can fetch its pre-rendered report by name. Keeping
 *     it optional lets every consumer choose between "render from
 *     `capabilities` + `metrics`" and "read the cached derived report"
 *     without forcing a single answer up front.
 */
Object.defineProperty(exports, "__esModule", { value: true });
exports.ANALYSIS_RESULT_SCHEMA_VERSION = void 0;
/**
 * Bump whenever the shape of `AnalysisResult` or any of its nested
 * types changes in a way that makes an older cached JSON file
 * incompatible. The cache module treats any mismatch as a hard miss
 * and rebuilds from scratch.
 */
exports.ANALYSIS_RESULT_SCHEMA_VERSION = 3;
//# sourceMappingURL=analysis-result.js.map