import { CANON_CONCEPT, CELL_CONCEPT, CONSEQUENCE_CONCEPT, CONTROL_CONCEPT, DECAY_CONCEPT, GRAPH_CONCEPT, GRID_CONCEPT, HONEST_GAP_CONCEPT, KIND_CONCEPT, PAIR_CONCEPT, PREDICATE_CONCEPT, } from "#core/ids/concept.ids"; import { CELL_SECTION_ID, CONSEQUENCE_SECTION_ID, CONTROL_SECTION_ID, DECAY_SECTION_ID, GAP_SECTION_ID, GRID_SECTION_ID, PAIR_SECTION_ID, PREDICATE_SECTION_ID, } from "#core/ids/architecture.ids"; import type { GraphSection } from "#types/methodology.types"; export const DECAY_GRAPH_SECTIONS: Readonly> = { [DECAY_SECTION_ID]: { requires: [CANON_CONCEPT, KIND_CONCEPT], teaches: [DECAY_CONCEPT], traces: ["architecture-anti-pattern", "no_leaky_context", "no_implicit_contract", "no_shared_ownership"], }, [CONTROL_SECTION_ID]: { requires: [DECAY_CONCEPT], teaches: [CONTROL_CONCEPT], traces: ["no_breaking_change", "no_opaque_runtime", "no_convention_enforcement", "enforcement-core"], }, [PAIR_SECTION_ID]: { requires: [DECAY_CONCEPT, CONTROL_CONCEPT], teaches: [PAIR_CONCEPT], traces: ["debt_anti_patterns", "no_shortcuts", "no_fallback", "no_deprecation", "no_dual_path", "no_deferring"], }, [CONSEQUENCE_SECTION_ID]: { requires: [PAIR_CONCEPT], teaches: [CONSEQUENCE_CONCEPT], traces: ["no_silent", "no_location", "no_discipline", "no_convention_enforcement", "no_speculative_pattern"], }, }; export const COVERAGE_GRAPH_SECTIONS: Readonly> = { [PREDICATE_SECTION_ID]: { requires: [GRAPH_CONCEPT, CANON_CONCEPT], teaches: [PREDICATE_CONCEPT], traces: ["no_hidden", "no_unobserved", "correctness-core"], }, [GRID_SECTION_ID]: { requires: [PREDICATE_CONCEPT, DECAY_CONCEPT], teaches: [GRID_CONCEPT], traces: ["coverage_is_declared"], }, [CELL_SECTION_ID]: { requires: [GRID_CONCEPT], teaches: [CELL_CONCEPT], traces: ["no_unapproved", "gate_that_saturates_is_not_built"], }, [GAP_SECTION_ID]: { requires: [GRID_CONCEPT, CELL_CONCEPT], teaches: [HONEST_GAP_CONCEPT], traces: ["coverage_is_declared", "no_unobserved"], }, };