/** * What validate reports about itself — and, harder, what it must not. * * The goal is the harness-improvement loop: which codes fire in the field, at what depth runs * stop, whether passes produce proofs, which verification reasons refuse deploys. That is * answerable entirely with **closed-set dimensions** — and it has to be, because validate handles * exactly the material telemetry must never carry: recipe config, scanner source, wallet * addresses, file paths, exception text. So the rule is structural, not disciplinary: every * attribute value is either drawn from a compile-time set or clamped to `"other"`. There is no * code path by which free text reaches an attribute. * * Pure builders, exported for the redaction tests; the OTel instruments live in * `telemetry/metrics.ts` with the rest of the fleet's and consume these unchanged. */ import type { Finding } from "./types.js"; import type { ValidateResult } from "./run.js"; import type { VerifyReason } from "./proof.js"; /** One run: how deep it went, how it ended, whether the pass became durable. */ export declare function runAttributes(result: ValidateResult): Record; /** One finding: the class and where it sits — never the message, never the location. */ export declare function findingAttributes(finding: Finding): Record; /** One verification: the outcome alone. Which package it was is nobody's business here. */ export declare function verificationAttributes(outcome: "ok" | VerifyReason): Record; //# sourceMappingURL=telemetry.d.ts.map