Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | import type { CanonicalId } from "./id.js";
/** The stable domain roles in Moura's traceability hierarchy. */
export type NodeKind = "requirement" | "scenario" | "case";
/** A configurable verification dimension, deliberately not a closed enum. */
export type VerificationLayer = string;
export interface TraceNode {
readonly kind: NodeKind;
readonly localId: string;
}
export interface CaseNode extends TraceNode {
readonly kind: "case";
/** Layers for which runtime Evidence is required. */
readonly verify: readonly VerificationLayer[];
/** Explicit, Git-reviewed declarations for verification not yet implemented. */
readonly unimplemented?: readonly VerificationLayer[];
}
export interface ScenarioNode extends TraceNode {
readonly kind: "scenario";
readonly cases: readonly CaseNode[];
}
export interface RequirementNode extends TraceNode {
readonly kind: "requirement";
readonly scenarios: readonly ScenarioNode[];
}
/** The smallest unit for which verification coverage is evaluated. */
export interface CoveragePoint {
readonly canonicalCaseId: CanonicalId;
readonly layer: VerificationLayer;
}
/** Adapter-neutral evidence. A single result may cover several cases. */
export interface Evidence {
readonly covers: readonly CanonicalId[];
readonly layer: VerificationLayer;
readonly status: "passed" | "failed" | "broken" | "skipped";
readonly source?: string;
/** Optional presentation metadata; never used for matching or status. */
readonly name?: string;
}
|