@sdd-method/sdd-cli 1.2.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/catalogue/build.d.ts.map +1 -1
- package/dist/lib/catalogue/build.js +14 -1
- package/dist/lib/catalogue/build.js.map +1 -1
- package/dist/lib/catalogue/builders/capability-edges.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/capability-edges.js +10 -1
- package/dist/lib/catalogue/builders/capability-edges.js.map +1 -1
- package/dist/lib/catalogue/builders/index.d.ts +2 -0
- package/dist/lib/catalogue/builders/index.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/index.js +1 -0
- package/dist/lib/catalogue/builders/index.js.map +1 -1
- package/dist/lib/catalogue/builders/quality-scores.d.ts +14 -0
- package/dist/lib/catalogue/builders/quality-scores.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/quality-scores.js +390 -0
- package/dist/lib/catalogue/builders/quality-scores.js.map +1 -0
- package/dist/lib/catalogue/builders/services.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/services.js +5 -1
- package/dist/lib/catalogue/builders/services.js.map +1 -1
- package/dist/lib/catalogue/canonical-schema.yaml +199 -1
- package/dist/lib/catalogue/coverage-render.d.ts +15 -0
- package/dist/lib/catalogue/coverage-render.d.ts.map +1 -1
- package/dist/lib/catalogue/coverage-render.js +85 -0
- package/dist/lib/catalogue/coverage-render.js.map +1 -1
- package/dist/lib/catalogue/coverage-run.d.ts.map +1 -1
- package/dist/lib/catalogue/coverage-run.js +7 -1
- package/dist/lib/catalogue/coverage-run.js.map +1 -1
- package/dist/lib/catalogue/scores-coverage.d.ts +138 -0
- package/dist/lib/catalogue/scores-coverage.d.ts.map +1 -0
- package/dist/lib/catalogue/scores-coverage.js +346 -0
- package/dist/lib/catalogue/scores-coverage.js.map +1 -0
- package/dist/lib/mcp/parse/gate-registry.d.ts +63 -4
- package/dist/lib/mcp/parse/gate-registry.d.ts.map +1 -1
- package/dist/lib/mcp/parse/gate-registry.js +127 -31
- package/dist/lib/mcp/parse/gate-registry.js.map +1 -1
- package/dist/lib/mcp/resources/gates.d.ts.map +1 -1
- package/dist/lib/mcp/resources/gates.js +13 -27
- package/dist/lib/mcp/resources/gates.js.map +1 -1
- package/dist/lib/mcp/tools/query-gate-status.d.ts.map +1 -1
- package/dist/lib/mcp/tools/query-gate-status.js +13 -27
- package/dist/lib/mcp/tools/query-gate-status.js.map +1 -1
- package/package.json +1 -1
|
@@ -62,9 +62,50 @@
|
|
|
62
62
|
# Builder contract: see docs/method/methods/guides/catalogue-builder-specification.md.
|
|
63
63
|
# Category taxonomy: see docs/method/methods/standards/product-category-taxonomy.md.
|
|
64
64
|
|
|
65
|
-
schema_version: "3.
|
|
65
|
+
schema_version: "3.2.0"
|
|
66
66
|
schema_owner: "sdd-method"
|
|
67
67
|
schema_status: "canonical"
|
|
68
|
+
# Bump rationale (3.2.0 — additive minor, 2026-08-06, per M-ADR 0205 §4.5):
|
|
69
|
+
# the rubric score registries join the catalogue metamodel. Two new catalogues
|
|
70
|
+
# and four new enums; no existing column, catalogue or enum is touched.
|
|
71
|
+
#
|
|
72
|
+
# 1. `quality_scores` — one row per (target, rubric), derived from
|
|
73
|
+
# `orchestration/gate-registry/<rubric>-scores.yaml`. The authored surface
|
|
74
|
+
# stays YAML (a score is a judgment, authored where it asserts intent);
|
|
75
|
+
# these rows are derived and never edited.
|
|
76
|
+
# 2. `quality_score_dimensions` — the per-dimension child. A child catalogue
|
|
77
|
+
# is FORCED, not stylistic: the fifteen rubrics carry fifteen disjoint
|
|
78
|
+
# dimension vocabularies (45 distinct keys measured in one estate), so no
|
|
79
|
+
# fixed column set can hold them.
|
|
80
|
+
# 3. Enums `quality_gate`, `score_selection_method`, `staleness_basis`,
|
|
81
|
+
# `scoring_form`. NONE is bound via column_enums — see quality_gate for
|
|
82
|
+
# the measured reason, which is the opposite lesson to 3.1.3's: there the
|
|
83
|
+
# defect was a binding that checked nothing, here the defect would be a
|
|
84
|
+
# binding that hard-fails an estate over a value it deliberately declared
|
|
85
|
+
# in its own registry header.
|
|
86
|
+
#
|
|
87
|
+
# Three shapes the survey behind this bump found, recorded because a builder
|
|
88
|
+
# written from the templates alone would get all three wrong (full record:
|
|
89
|
+
# the Phase-B B0 survey, 2026-08-06):
|
|
90
|
+
# - The live forward-estate data is FLAT, not the nested current/reviews
|
|
91
|
+
# shape all fifteen method templates specify. Reading only the template
|
|
92
|
+
# shape catalogues 6 entries out of 204.
|
|
93
|
+
# - The registry container key is unreliable (4 of 10 drift from the method
|
|
94
|
+
# template) and non-unique (`domains` and `capabilities` each name two
|
|
95
|
+
# different rubrics), so rubric_id comes from registry_type-or-filename.
|
|
96
|
+
# - `corpus_ref` — which M-ADR 0205 §4.5 names and the coverage instrument's
|
|
97
|
+
# staleness rule depends on — is authored NOWHERE today. It is introduced
|
|
98
|
+
# here as new authoring with a computed `scored_at` fallback, and
|
|
99
|
+
# `staleness_basis` records which of the two a row can actually use. A
|
|
100
|
+
# staleness verdict whose basis is unstated is not a measurement.
|
|
101
|
+
# `evidence_ref`, also named in §4.5, is deliberately NOT added: nothing
|
|
102
|
+
# authors it in any registry in either estate, and shipping it would create
|
|
103
|
+
# exactly the inert column that 2.48.0 deprecated `products.status` over.
|
|
104
|
+
# ACTIVATION NOTE (M-ADR 0200 §4.6): additive only — no existing row changes
|
|
105
|
+
# value and no existing check changes verdict. The new catalogues emit
|
|
106
|
+
# headers-only in any SDD without a gate-registry directory, which is every
|
|
107
|
+
# SDD in the method repo's own estate except the roots.
|
|
108
|
+
# Backward-compatible; SCHEMA_COMPAT "^3.0.0".
|
|
68
109
|
# Bump rationale (3.1.3 — patch, 2026-08-05): `repositories.column_enums`
|
|
69
110
|
# bound `service_type` — the AUTHORING field's name — but the catalogue
|
|
70
111
|
# column that carries the value is `component_type` (the builder maps
|
|
@@ -565,6 +606,75 @@ schema_status: "canonical"
|
|
|
565
606
|
|
|
566
607
|
enums:
|
|
567
608
|
|
|
609
|
+
quality_gate:
|
|
610
|
+
description: >
|
|
611
|
+
Gate verdict a rubric assessment records for a target, in
|
|
612
|
+
`quality_scores.gate` (per M-ADR 0205 §4.5). The vocabulary all fifteen
|
|
613
|
+
method-side gate registries declare.
|
|
614
|
+
|
|
615
|
+
DELIBERATELY NOT BOUND via `column_enums`, and the reason is measured
|
|
616
|
+
rather than assumed — do not "fix" this by binding it. These values come
|
|
617
|
+
from hand-authored score registries written by scoring runs, not from a
|
|
618
|
+
method-mandated authoring surface, and one estate's
|
|
619
|
+
`domain-architecture-scores.yaml` DECLARES AN EXTENDED VOCABULARY IN ITS
|
|
620
|
+
OWN FILE HEADER (`pass | pass-with-waiver | conditional | fail |
|
|
621
|
+
unscored`) and uses the extra value once. Binding would hard-fail that
|
|
622
|
+
estate's entire build over one deliberate, self-documented row. This
|
|
623
|
+
follows the `products.synthesis_band` precedent — the other column fed
|
|
624
|
+
from a rubric registry — where an out-of-vocabulary value is reported as
|
|
625
|
+
a convention finding and the cell left EMPTY, rather than emitting a
|
|
626
|
+
value no consumer can interpret. The builder names the file, the entry,
|
|
627
|
+
the value and the remedy, which is better diagnosis than a generic enum
|
|
628
|
+
violation could give. Contrast `service_type`, which IS bound: it comes
|
|
629
|
+
from repo-config, an authoring surface the method mandates.
|
|
630
|
+
values:
|
|
631
|
+
- { value: pass, description: "Meets the rubric's pass threshold with no hard gate triggered." }
|
|
632
|
+
- { value: conditional, description: "Below threshold or carrying flags — remediation required, not a failure." }
|
|
633
|
+
- { value: fail, description: "Below the fail threshold, or a hard gate triggered." }
|
|
634
|
+
- { value: unscored, description: "The entry exists but carries no assessment. Distinct from absent: an unscored row asserts that nothing has been judged, which is exactly the silence M-ADR 0205 §4.5's coverage instrument exists to make loud." }
|
|
635
|
+
|
|
636
|
+
score_selection_method:
|
|
637
|
+
description: >
|
|
638
|
+
How the effective review was chosen from a target's review history, in
|
|
639
|
+
`quality_scores.selection_method` — the `selection_policy.method` field
|
|
640
|
+
every gate registry carries. The catalogue models only the EFFECTIVE
|
|
641
|
+
score (one row per target/rubric); this column makes the row say WHICH
|
|
642
|
+
review it is rather than implying there was only one. Not bound, for the
|
|
643
|
+
same registry-authored reason as `quality_gate`.
|
|
644
|
+
values:
|
|
645
|
+
- { value: latest, description: "Most recent review by scored_at. The default and, at 2026-08-06, the only value in use across either estate." }
|
|
646
|
+
- { value: human-selected, description: "A human chose the effective review over the automatic pick." }
|
|
647
|
+
- { value: consensus, description: "Effective score reconciled across several reviews." }
|
|
648
|
+
- { value: highest-severity, description: "The most severe review wins — the conservative policy for gate-blocking rubrics." }
|
|
649
|
+
|
|
650
|
+
staleness_basis:
|
|
651
|
+
description: >
|
|
652
|
+
Which anchor a `quality_scores` row's staleness verdict can be computed
|
|
653
|
+
from, in `quality_scores.staleness_basis`. This column exists because a
|
|
654
|
+
staleness verdict whose basis is unstated is not a measurement — the
|
|
655
|
+
basis-error class that produced six wrong figures in a single day of this
|
|
656
|
+
method's own arc. The coverage predicate MUST NOT be able to emit a
|
|
657
|
+
staleness claim without naming which of these it used.
|
|
658
|
+
values:
|
|
659
|
+
- { value: corpus_ref, description: "The row carries the commit the assessment read — the precise anchor. Authored; introduced by the M-ADR 0205 §4.5 change-set, so absent from every score written before it." }
|
|
660
|
+
- { value: scored_at, description: "No corpus_ref; staleness computed from the assessment date against the target's last content change, resolved through target_path. Correct but coarser — it cannot distinguish a re-commit that changed nothing from a real edit." }
|
|
661
|
+
- { value: none, description: "Neither anchor available (no corpus_ref and no resolvable target_path). Staleness is UNKNOWN for this row and must be reported as unknown, never as fresh." }
|
|
662
|
+
|
|
663
|
+
scoring_form:
|
|
664
|
+
description: >
|
|
665
|
+
The scoring shape a rubric uses, in `quality_scores.scoring_form`.
|
|
666
|
+
Reserved by M-ADR 0205 §4.5 so the banded reverse family can arrive
|
|
667
|
+
additively without reshaping rows.
|
|
668
|
+
|
|
669
|
+
Only `weighted` is declared. The reverse estate's banded form (0-2 across
|
|
670
|
+
5-6 dimensions with strong/working/weak/not-usable bands) is real and
|
|
671
|
+
measured — 142 registry files, 501 scored units — but is NOT modelled
|
|
672
|
+
yet, so its value is deliberately absent rather than declared-and-unemitted:
|
|
673
|
+
if a builder emits a banded row before that change-set lands, it should
|
|
674
|
+
fail loudly, not pass against a vocabulary entry nothing produces.
|
|
675
|
+
values:
|
|
676
|
+
- { value: weighted, description: "Weighted 1-5 dimensions rolled into a weighted_score against a pass threshold, with flags and hard gates. The forward house form; all fifteen method-side registries use it." }
|
|
677
|
+
|
|
568
678
|
c4_system_kind:
|
|
569
679
|
description: >
|
|
570
680
|
Architectural kind of a C4 system. Derived 1:1 from the originating
|
|
@@ -1932,3 +2042,91 @@ catalogues:
|
|
|
1932
2042
|
- { name: needs_triage, type: boolean, nullable: false, description: "True when any asymmetry exists. Triage, not auto-fail (M-ADR 0180 §2.3)." }
|
|
1933
2043
|
- { name: run_date, type: string, nullable: false, description: "ISO date of the conformance run — the snapshot stamp enabling trend over time." }
|
|
1934
2044
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
2045
|
+
|
|
2046
|
+
quality_scores:
|
|
2047
|
+
primary_key: id
|
|
2048
|
+
description: >
|
|
2049
|
+
Rubric assessment of a target artefact, one row per (target, rubric), per
|
|
2050
|
+
M-ADR 0205 §4.5. Source: `orchestration/gate-registry/<rubric>-scores.yaml`
|
|
2051
|
+
— the authored surface stays YAML because a score is a judgment, authored
|
|
2052
|
+
where it asserts intent; these rows are DERIVED and never edited.
|
|
2053
|
+
|
|
2054
|
+
Models the EFFECTIVE score only — `current`, as chosen by the registry's
|
|
2055
|
+
`selection_policy`. The authored `reviews[]` history is deliberately not
|
|
2056
|
+
catalogued: variable-length history in a fixed-grain catalogue would give
|
|
2057
|
+
two answers to "what is the score". `review_run_id` and
|
|
2058
|
+
`selection_method` make each row name which review it is.
|
|
2059
|
+
|
|
2060
|
+
THE BUILDER MUST READ TWO AUTHORED DIALECTS. All fifteen method-side
|
|
2061
|
+
templates specify a nested shape (`selection_policy` / `current` /
|
|
2062
|
+
`reviews`), but the live forward-estate data is overwhelmingly FLAT —
|
|
2063
|
+
`gate`/`weighted_score`/`scored_at`/`scored_by`/`scores`/`flags` directly
|
|
2064
|
+
on the entry. Measured 2026-08-06: reading only the template shape would
|
|
2065
|
+
catalogue 6 entries out of 204. The templates were modernised; the data
|
|
2066
|
+
was not migrated, and both are legitimate.
|
|
2067
|
+
|
|
2068
|
+
`rubric_id` comes from the file's `registry_type` when declared, else the
|
|
2069
|
+
filename stem minus `-scores` — NEVER the container key, which is
|
|
2070
|
+
unreliable (4 of 10 forward registries drift from the method template)
|
|
2071
|
+
and non-unique (`domains` names both domain-architecture and
|
|
2072
|
+
intent-quality; `capabilities` names both feature-grounding and
|
|
2073
|
+
traceability-manifest).
|
|
2074
|
+
|
|
2075
|
+
Scope: the weighted house form only. The banded reverse family is
|
|
2076
|
+
additive later via `scoring_form` (see that enum).
|
|
2077
|
+
foreign_keys:
|
|
2078
|
+
- { column: sdd_id, references: products.id, nullable: true }
|
|
2079
|
+
columns:
|
|
2080
|
+
- { name: id, type: string, nullable: false, description: "PK: {rubric_id}__{target_kind}__{target_ref}. Composite in one slug because the natural key is a triple and the rest of this schema keys on a single `id`." }
|
|
2081
|
+
- { name: rubric_id, type: string, nullable: false, description: "The rubric that produced the assessment, e.g. adr-quality, contract-quality. From the registry's `registry_type` when declared, else the filename stem minus `-scores`. A `registry_type` disagreeing with its filename is a convention finding, never a silent preference." }
|
|
2082
|
+
- { name: scoring_form, type: string, nullable: false, description: "Scoring shape — see the scoring_form enum. `weighted` for every row the current builder emits." }
|
|
2083
|
+
- { name: target_kind, type: string, nullable: false, description: "What kind of thing was scored: adr | contract | c4_diagram | capability | domain | feature | product | repository | persona | screen | glossary | integration | user_story | work_order | strategic_doc. Polymorphic because scored units span catalogue entities and non-catalogued artefacts (M-ADR 0205 §4.5)." }
|
|
2084
|
+
- { name: target_ref, type: string, nullable: false, description: "Identifier of the scored target, in the vocabulary of its kind. For ADRs this is the prefix-stripped catalogue id (M-ADR 0186 §4.4), matching `adrs.id`." }
|
|
2085
|
+
- { name: target_path, type: string, nullable: true, description: "Repo-relative path to the scored artefact, from the entry's `file_path` where authored (7 of 15 registry shapes carry it). Doubles as the resolution anchor for `scored_at`-basis staleness — which is why its absence downgrades a row's staleness_basis to `none` rather than being cosmetic. Empty when the registry does not author it." }
|
|
2086
|
+
- { name: gate, type: string, nullable: true, description: "Verdict — see the quality_gate enum, which is deliberately UNBOUND. An out-of-vocabulary value leaves this cell EMPTY and raises a convention finding naming the file, entry and value (the products.synthesis_band precedent). Empty therefore means either unauthored or out-of-vocabulary, and the finding distinguishes them." }
|
|
2087
|
+
- { name: weighted_score, type: number, nullable: true, description: "The rubric's rolled-up weighted score. Empty for an unscored entry — which is a real state the registries author deliberately, not a gap." }
|
|
2088
|
+
- { name: score_denominator, type: number, nullable: true, description: "Denominator the weighted_score was computed against, where the rubric records one (contract-quality does). Present so a score is never reported without its basis." }
|
|
2089
|
+
- { name: scored_at, type: date, nullable: true, description: "Date of the effective assessment, from `scored_at` (the forward house form's field name — NOT `assessed_at`, which is the reverse family's file-level field). Date-typed: per the M-ADR 0205 §4.1 engine's TRY_CAST semantics, a prose value here is reported as a type nonconformance rather than aborting the load or being smoothed away — the `adrs.decision_date` case, which reverse practice already exercises." }
|
|
2090
|
+
- { name: corpus_ref, type: string, nullable: true, description: "The commit the assessment read — the precise staleness anchor. NEW AUTHORING introduced by this change-set: no score written before it carries one, so this column is empty across both estates at introduction and fills forward as registries are rewritten. The reverse family already has the idea under a different name (`snapshot.source_revision`)." }
|
|
2091
|
+
- { name: staleness_basis, type: string, nullable: false, description: "Which anchor this row's staleness can be computed from — see the staleness_basis enum. Emitted by the builder, never authored. Exists so no consumer can state a staleness verdict without its basis." }
|
|
2092
|
+
- { name: review_run_id, type: string, nullable: true, description: "Identifier of the effective review run. Empty in the flat dialect, which records no run ids." }
|
|
2093
|
+
- { name: selection_method, type: string, nullable: true, description: "How the effective review was chosen — see the score_selection_method enum. Empty in the flat dialect, which carries no selection_policy: absence means 'the only review', not 'policy unknown'." }
|
|
2094
|
+
- { name: scorer_provider, type: string, nullable: true, description: "Provider of the scoring agent (e.g. anthropic), from `current.scorer.provider`. Every score in this method is agent-produced, so which agent produced a judgment is part of the judgment, not metadata about it." }
|
|
2095
|
+
- { name: scorer_tool, type: string, nullable: true, description: "Tool the scoring agent ran in, from `current.scorer.tool`." }
|
|
2096
|
+
- { name: scorer_model, type: string, nullable: true, description: "Model that produced the assessment, from `current.scorer.model`. In the flat dialect the whole provenance block collapses to a free-text `scored_by:`, which lands here — so a value like 'intent-quality-review — rfms-connector-library' is expected and correct for flat-dialect rows, not a parse defect." }
|
|
2097
|
+
- { name: scorer_model_family, type: string, nullable: true, description: "Optional grouping field from `current.scorer.model_family`." }
|
|
2098
|
+
- { name: scorer_prompt_version, type: string, nullable: true, description: "Optional prompt-wrapper version from `current.scorer.prompt_version` — the input that makes a score reproducible." }
|
|
2099
|
+
- { name: flag_count, type: int, nullable: false, description: "Number of heuristic flags raised. Normalises two authored dialects: `flags: {name: bool}` (count the true ones) and `flags_raised: [names]` (count the list). A per-flag child catalogue is deliberately NOT built — it arrives when a named query needs to filter by flag name, not by accretion." }
|
|
2100
|
+
- { name: hard_gate_triggered, type: boolean, nullable: false, description: "Whether any hard gate fired. Normalises `hard_gates: {triggered, reasons}` and `hard_gates_triggered: [reasons]`." }
|
|
2101
|
+
- { name: required_actions_count, type: int, nullable: false, description: "Number of remediation actions the assessment recorded." }
|
|
2102
|
+
- { name: sdd_id, type: string, nullable: true, description: "SDD whose gate-registry authored this row. Soft FK to products.id — nullable because a registry can score targets in an SDD that emits no product row." }
|
|
2103
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134; left empty by per-SDD builders." }
|
|
2104
|
+
|
|
2105
|
+
quality_score_dimensions:
|
|
2106
|
+
primary_key: id
|
|
2107
|
+
description: >
|
|
2108
|
+
One row per (target, rubric, dimension) — the per-dimension detail behind
|
|
2109
|
+
a `quality_scores` row, per M-ADR 0205 §4.5.
|
|
2110
|
+
|
|
2111
|
+
A child catalogue rather than columns, and this is forced rather than
|
|
2112
|
+
stylistic: the fifteen rubrics carry FIFTEEN DISJOINT dimension
|
|
2113
|
+
vocabularies (`A1`-`A8`, `C1`-`C8`, `G1`-`G7`, `T1`-`T7`, `D1`-`D6`,
|
|
2114
|
+
`S1`-`S6`, `I1`-`I6`, plus five fully-named sets such as
|
|
2115
|
+
`definition_precision` and `intent_fidelity`) — 45 distinct keys measured
|
|
2116
|
+
in one estate alone. No fixed column set can hold them; serialised JSON in
|
|
2117
|
+
a cell would be unjoinable and break the relational metamodel; generic
|
|
2118
|
+
`d1..d8` columns would be lossy and re-create the positional-index failure
|
|
2119
|
+
class. A child table is what this metamodel already does for every
|
|
2120
|
+
one-to-many, and it joins natively on the M-ADR 0205 §4.1 engine.
|
|
2121
|
+
foreign_keys:
|
|
2122
|
+
- { column: quality_score_id, references: quality_scores.id, nullable: false }
|
|
2123
|
+
columns:
|
|
2124
|
+
- { name: id, type: string, nullable: false, description: "PK: {quality_score_id}__{dimension_key}." }
|
|
2125
|
+
- { name: quality_score_id, type: string, nullable: false, description: "The assessment this dimension belongs to." }
|
|
2126
|
+
- { name: rubric_id, type: string, nullable: false, description: "Denormalised from the parent so per-rubric dimension queries need no join." }
|
|
2127
|
+
- { name: target_kind, type: string, nullable: false, description: "Denormalised from the parent." }
|
|
2128
|
+
- { name: target_ref, type: string, nullable: false, description: "Denormalised from the parent." }
|
|
2129
|
+
- { name: dimension_key, type: string, nullable: false, description: "The rubric's own dimension identifier, verbatim — `A1` where the rubric uses codes, `definition_precision` where it uses names. NOT normalised into a method-wide vocabulary: the key is how the rubric and its registry refer to the dimension, and rewriting it here would make the row untraceable to the rubric that produced it." }
|
|
2130
|
+
- { name: dimension_score, type: number, nullable: true, description: "Score on that dimension. Empty for an unscored entry (the templates author explicit nulls)." }
|
|
2131
|
+
- { name: dimension_weight, type: number, nullable: true, description: "Weight the rubric assigns the dimension, where discoverable. Usually EMPTY: weights live in the rubric document and the registry header comment, not per entry — so this column is honest about the fact that a weighted_score cannot currently be recomputed from these rows alone." }
|
|
2132
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* value), because the references print through Python f-strings.
|
|
16
16
|
*/
|
|
17
17
|
import type { ContractCoverageResult, CoverageFinding, CoverageTier, EventCoverageResult, RepoCapabilityMetrics, ServiceCapabilityMetrics } from "./coverage-predicates.js";
|
|
18
|
+
import type { ScoresCoverageResult } from "./scores-coverage.js";
|
|
18
19
|
import type { CapabilityEventResult, DataModelEntitiesResult, DomainCatalogueGap, FeatureSpecPromotionResult, FeatureSurfaceDuplicationResult, RepoEdgesResult } from "./gate-checks.js";
|
|
19
20
|
/** Python `%.1f` — half to even at an exact scaled .5, else nearest. */
|
|
20
21
|
export declare function fmt1f(x: number): string;
|
|
@@ -36,4 +37,18 @@ export declare function renderFeatureEventCheck(res: {
|
|
|
36
37
|
export declare function renderPlatformDependenciesCheck(finding: boolean): string[];
|
|
37
38
|
export declare function renderFeatureSpecPromotionCheck(res: FeatureSpecPromotionResult): string[];
|
|
38
39
|
export declare function renderFeatureSurfaceDuplicationCheck(res: FeatureSurfaceDuplicationResult): string[];
|
|
40
|
+
/**
|
|
41
|
+
* Unlike the thirteen predicates above, this text has NO reference shell
|
|
42
|
+
* script to be byte-identical with — it is a new surface, so the lines are
|
|
43
|
+
* chosen rather than reproduced. Two rules they follow, both paid for
|
|
44
|
+
* elsewhere in this arc:
|
|
45
|
+
*
|
|
46
|
+
* - every count states its basis in the same breath as the number, so a
|
|
47
|
+
* figure can never be read against the wrong denominator;
|
|
48
|
+
* - a number the predicate CANNOT reach is printed beside the number it
|
|
49
|
+
* reports, so a gap is never mistaken for backlog. Here that is the
|
|
50
|
+
* rubrics with no catalogued population and the scores whose currency is
|
|
51
|
+
* unknowable — both stated, never dropped.
|
|
52
|
+
*/
|
|
53
|
+
export declare function renderScoresCoverage(res: ScoresCoverageResult, tier: "member" | "aggregate"): string[];
|
|
39
54
|
//# sourceMappingURL=coverage-render.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coverage-render.d.ts","sourceRoot":"","sources":["../../../src/lib/catalogue/coverage-render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EACV,sBAAsB,EACtB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACV,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,0BAA0B,EAC1B,+BAA+B,EAC/B,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAE1B,wEAAwE;AACxE,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CASvC;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,SAAS,eAAe,EAAE,EACpC,OAAO,EAAE,qBAAqB,GAC7B,MAAM,EAAE,CAmDV;AAcD,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,SAAS,eAAe,EAAE,EACpC,OAAO,EAAE,wBAAwB,EACjC,IAAI,EAAE,YAAY,GACjB,MAAM,EAAE,CA2CV;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,mBAAmB,EACxB,IAAI,EAAE,YAAY,GACjB,MAAM,EAAE,CAmEV;AAED,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,sBAAsB,EAC3B,IAAI,EAAE,YAAY,GACjB,MAAM,EAAE,CAoFV;AAID,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,SAAS,kBAAkB,EAAE,GAClC,MAAM,EAAE,CAKV;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,EAAE,CA2BnE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAMlE;AAED,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,uBAAuB,GAC3B,MAAM,EAAE,CAoBV;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,qBAAqB,GAAG,MAAM,EAAE,CAc/E;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE;IAC3C,QAAQ,CAAC,GAAG,CAAC,EAAE;QAAE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;CACnF,GAAG,MAAM,EAAE,CAMX;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAM1E;AAED,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,0BAA0B,GAC9B,MAAM,EAAE,CASV;AAED,wBAAgB,oCAAoC,CAClD,GAAG,EAAE,+BAA+B,GACnC,MAAM,EAAE,CAUV"}
|
|
1
|
+
{"version":3,"file":"coverage-render.d.ts","sourceRoot":"","sources":["../../../src/lib/catalogue/coverage-render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EACV,sBAAsB,EACtB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EACV,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,0BAA0B,EAC1B,+BAA+B,EAC/B,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAE1B,wEAAwE;AACxE,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CASvC;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,SAAS,eAAe,EAAE,EACpC,OAAO,EAAE,qBAAqB,GAC7B,MAAM,EAAE,CAmDV;AAcD,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,SAAS,eAAe,EAAE,EACpC,OAAO,EAAE,wBAAwB,EACjC,IAAI,EAAE,YAAY,GACjB,MAAM,EAAE,CA2CV;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,mBAAmB,EACxB,IAAI,EAAE,YAAY,GACjB,MAAM,EAAE,CAmEV;AAED,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,sBAAsB,EAC3B,IAAI,EAAE,YAAY,GACjB,MAAM,EAAE,CAoFV;AAID,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,SAAS,kBAAkB,EAAE,GAClC,MAAM,EAAE,CAKV;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,EAAE,CA2BnE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAMlE;AAED,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,uBAAuB,GAC3B,MAAM,EAAE,CAoBV;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,qBAAqB,GAAG,MAAM,EAAE,CAc/E;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE;IAC3C,QAAQ,CAAC,GAAG,CAAC,EAAE;QAAE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;CACnF,GAAG,MAAM,EAAE,CAMX;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAM1E;AAED,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,0BAA0B,GAC9B,MAAM,EAAE,CASV;AAED,wBAAgB,oCAAoC,CAClD,GAAG,EAAE,+BAA+B,GACnC,MAAM,EAAE,CAUV;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,oBAAoB,EACzB,IAAI,EAAE,QAAQ,GAAG,WAAW,GAC3B,MAAM,EAAE,CAiGV"}
|
|
@@ -344,4 +344,89 @@ export function renderFeatureSurfaceDuplicationCheck(res) {
|
|
|
344
344
|
`detailed slug canonical (per ADR 0177 §4.3)`,
|
|
345
345
|
];
|
|
346
346
|
}
|
|
347
|
+
// ─── Scores coverage (M-ADR 0205 §4.5, B2 — the fourteenth check) ─────────
|
|
348
|
+
/**
|
|
349
|
+
* Unlike the thirteen predicates above, this text has NO reference shell
|
|
350
|
+
* script to be byte-identical with — it is a new surface, so the lines are
|
|
351
|
+
* chosen rather than reproduced. Two rules they follow, both paid for
|
|
352
|
+
* elsewhere in this arc:
|
|
353
|
+
*
|
|
354
|
+
* - every count states its basis in the same breath as the number, so a
|
|
355
|
+
* figure can never be read against the wrong denominator;
|
|
356
|
+
* - a number the predicate CANNOT reach is printed beside the number it
|
|
357
|
+
* reports, so a gap is never mistaken for backlog. Here that is the
|
|
358
|
+
* rubrics with no catalogued population and the scores whose currency is
|
|
359
|
+
* unknowable — both stated, never dropped.
|
|
360
|
+
*/
|
|
361
|
+
export function renderScoresCoverage(res, tier) {
|
|
362
|
+
// Only silent when there is genuinely nothing to say. An SDD that measured
|
|
363
|
+
// NOTHING still reports which rubrics it skipped and why — suppressing that
|
|
364
|
+
// was this renderer's own first draft, and it is precisely the silent-cap
|
|
365
|
+
// shape the predicate exists to remove.
|
|
366
|
+
if (res.totalScores === 0 && res.metrics.length === 0 && res.notAdopted.length === 0) {
|
|
367
|
+
return [];
|
|
368
|
+
}
|
|
369
|
+
const out = [];
|
|
370
|
+
for (const f of res.findings) {
|
|
371
|
+
if (f.kind === "uncovered") {
|
|
372
|
+
out.push(`[finding] coverage: ${f.subject} carries no ${f.rubricId} score — ` +
|
|
373
|
+
`unscored is not passed; assess it or record why it is exempt ` +
|
|
374
|
+
`(no exemption vocabulary exists yet, per M-ADR 0199)`);
|
|
375
|
+
}
|
|
376
|
+
else if (f.kind === "orphaned-score") {
|
|
377
|
+
out.push(`[finding] orphan: ${f.rubricId} score for '${f.subject}' resolves to no ` +
|
|
378
|
+
`catalogue row — the assessment describes something the model no longer ` +
|
|
379
|
+
`holds; re-key the registry entry or withdraw the score`);
|
|
380
|
+
}
|
|
381
|
+
else {
|
|
382
|
+
out.push(`[finding] coverage: ${f.subject}`);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
for (const r of res.undeclaredRubrics) {
|
|
386
|
+
out.push(`[finding] coverage: scores exist for rubric '${r}', which declares no ` +
|
|
387
|
+
`eligibility mapping — its coverage cannot be computed and its targets are ` +
|
|
388
|
+
`not resolution-checked; add it to RUBRIC_ELIGIBILITY`);
|
|
389
|
+
}
|
|
390
|
+
if (res.metrics.length === 0) {
|
|
391
|
+
out.push(`[metric] scores_coverage (${tier}): n/a — no rubric measurable in this SDD ` +
|
|
392
|
+
`(${res.notAdopted.length} not adopted, ${res.totalScores} score(s) present)`);
|
|
393
|
+
out.push(`[metric] scores_coverage.not_adopted: ${res.notAdopted.length} rubric(s) have no ` +
|
|
394
|
+
`registry in this SDD and are n/a here — ${res.notAdopted.join(", ")}; ` +
|
|
395
|
+
`absence of the surface is not a gap in it, but an EMPTY registry is`);
|
|
396
|
+
return out;
|
|
397
|
+
}
|
|
398
|
+
const withPop = res.metrics.filter((m) => m.eligible !== null);
|
|
399
|
+
const noPop = res.metrics.filter((m) => m.eligible === null);
|
|
400
|
+
const eligible = withPop.reduce((a, m) => a + (m.eligible ?? 0), 0);
|
|
401
|
+
const covered = withPop.reduce((a, m) => a + m.covered, 0);
|
|
402
|
+
const orphaned = res.metrics.reduce((a, m) => a + m.orphaned, 0);
|
|
403
|
+
const pct = eligible === 0 ? "n/a" : `${fmt1f((covered / eligible) * 100)}%`;
|
|
404
|
+
out.push(
|
|
405
|
+
// The denominator is (artefact, rubric) PAIRS, not distinct artefacts — one
|
|
406
|
+
// domain is eligible under domain-architecture, intent-quality AND glossary,
|
|
407
|
+
// so 14 domains contribute 42 eligible pairs. Naming the unit here is the
|
|
408
|
+
// difference between a measurement and a number that reads 3x too large.
|
|
409
|
+
`[metric] scores_coverage (${tier}): ${covered}/${eligible} eligible ` +
|
|
410
|
+
`(artefact, rubric) pair(s) scored (${pct}) across ${withPop.length} rubric(s) ` +
|
|
411
|
+
`with a catalogued population; ${orphaned} score(s) orphaned of ${res.totalScores} total`);
|
|
412
|
+
for (const m of withPop) {
|
|
413
|
+
out.push(`[metric] scores_coverage.${m.rubricId}: ${m.covered}/${m.eligible} ` +
|
|
414
|
+
`${m.targetKind}(s) scored, ${m.scored} score(s) present, ${m.orphaned} orphaned`);
|
|
415
|
+
}
|
|
416
|
+
if (noPop.length > 0) {
|
|
417
|
+
out.push(`[metric] scores_coverage.no_denominator: ${noPop.length} rubric(s) score ` +
|
|
418
|
+
`artefacts the catalogue does not model — ` +
|
|
419
|
+
`${noPop.map((m) => `${m.rubricId}(${m.scored})`).join(", ")}; ` +
|
|
420
|
+
`their coverage is NOT measurable here and is not counted above`);
|
|
421
|
+
}
|
|
422
|
+
if (res.notAdopted.length > 0) {
|
|
423
|
+
out.push(`[metric] scores_coverage.not_adopted: ${res.notAdopted.length} rubric(s) have no ` +
|
|
424
|
+
`registry in this SDD and are n/a here — ${res.notAdopted.join(", ")}; ` +
|
|
425
|
+
`absence of the surface is not a gap in it, but an EMPTY registry is`);
|
|
426
|
+
}
|
|
427
|
+
const b = res.stalenessBasis;
|
|
428
|
+
out.push(`[metric] scores_staleness_basis: ${b.corpusRef} corpus_ref, ${b.scoredAt} scored_at, ` +
|
|
429
|
+
`${b.none} none — a row with basis 'none' has UNKNOWN currency, not fresh`);
|
|
430
|
+
return out;
|
|
431
|
+
}
|
|
347
432
|
//# sourceMappingURL=coverage-render.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coverage-render.js","sourceRoot":"","sources":["../../../src/lib/catalogue/coverage-render.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"coverage-render.js","sourceRoot":"","sources":["../../../src/lib/catalogue/coverage-render.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coverage-run.d.ts","sourceRoot":"","sources":["../../../src/lib/catalogue/coverage-run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAQH,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"coverage-run.d.ts","sourceRoot":"","sources":["../../../src/lib/catalogue/coverage-run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAQH,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,0BAA0B,CAAC;AA8BlC,MAAM,WAAW,iBAAiB;IAChC,wEAAwE;IACxE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,uEAAuE;IACvE,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;CAC9B;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GACzB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CA0F/B"}
|
|
@@ -25,7 +25,8 @@ import { createEngineSession } from "./engine-validator.js";
|
|
|
25
25
|
import { loadCanonicalSchema } from "./schema-loader.js";
|
|
26
26
|
import { runContractCoverage, runEventCoverage, runRepoCapabilityCoverage, runServiceCapabilityCoverage, } from "./coverage-predicates.js";
|
|
27
27
|
import { runCapabilityEventCheck, runDataModelEntitiesCheck, runEventCatalogueCheck, runFeatureEventCheck, runFeatureSpecPromotionCheck, runFeatureSurfaceDuplicationCheck, runGlossaryXrefCheck, runPlatformDependenciesCheck, runRepoEdgesCheck, } from "./gate-checks.js";
|
|
28
|
-
import {
|
|
28
|
+
import { runScoresCoverage } from "./scores-coverage.js";
|
|
29
|
+
import { renderCapabilityEventCheck, renderContractCoverage, renderDataModelEntitiesCheck, renderEventCatalogueCheck, renderEventCoverage, renderFeatureEventCheck, renderFeatureSpecPromotionCheck, renderFeatureSurfaceDuplicationCheck, renderGlossaryXrefCheck, renderPlatformDependenciesCheck, renderRepoCapability, renderRepoEdgesCheck, renderScoresCoverage, renderServiceCapability, } from "./coverage-render.js";
|
|
29
30
|
export async function runCatalogueCoverage(inputs, write) {
|
|
30
31
|
const sddRoot = resolve(inputs.sddPath ?? process.cwd());
|
|
31
32
|
const dir = resolve(sddRoot, inputs.cataloguesDir ?? "catalogues");
|
|
@@ -80,6 +81,11 @@ export async function runCatalogueCoverage(inputs, write) {
|
|
|
80
81
|
lines.push(...renderPlatformDependenciesCheck((await runPlatformDependenciesCheck(session, { sddRoot })).finding));
|
|
81
82
|
lines.push(...renderFeatureSpecPromotionCheck(await runFeatureSpecPromotionCheck(session)));
|
|
82
83
|
lines.push(...renderFeatureSurfaceDuplicationCheck(await runFeatureSurfaceDuplicationCheck(session)));
|
|
84
|
+
// The fourteenth check (M-ADR 0205 §4.5, Phase B): every eligible artefact
|
|
85
|
+
// carries a current score. Last in the block order because it is the newest
|
|
86
|
+
// and the baselines hold the stream positionally-agnostic but ordered.
|
|
87
|
+
const available = new Set(schema.catalogues.map((c) => c.name).filter((n) => present(n)));
|
|
88
|
+
lines.push(...renderScoresCoverage(await runScoresCoverage(session, { tier, available, sddRoot }), tier));
|
|
83
89
|
}
|
|
84
90
|
finally {
|
|
85
91
|
session.dispose();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coverage-run.js","sourceRoot":"","sources":["../../../src/lib/catalogue/coverage-run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,yBAAyB,EACzB,4BAA4B,GAE7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,EACtB,oBAAoB,EACpB,4BAA4B,EAC5B,iCAAiC,EACjC,oBAAoB,EACpB,4BAA4B,EAC5B,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,4BAA4B,EAC5B,yBAAyB,EACzB,mBAAmB,EACnB,uBAAuB,EACvB,+BAA+B,EAC/B,oCAAoC,EACpC,uBAAuB,EACvB,+BAA+B,EAC/B,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAW9B,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAyB,EACzB,KAA0B;IAE1B,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,aAAa,IAAI,YAAY,CAAC,CAAC;IACnE,MAAM,IAAI,GAAiB,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC;IAEnD,MAAM,MAAM,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC;IAEvE,MAAM,eAAe,GAAG,IAAI,GAAG,EAAmC,CAAC;IACnE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QACjC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;QACpE,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACnE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC;QACH,oEAAoE;QACpE,kEAAkE;QAClE,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,MAAM,yBAAyB,CAAC,OAAO,CAAC,CAAC;YACnD,KAAK,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,MAAM,4BAA4B,CAAC,OAAO,EAAE;gBACpD,IAAI;gBACJ,uBAAuB,EAAE,OAAO,CAAC,iBAAiB,CAAC;aACpD,CAAC,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,KAAK,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,MAAM,mBAAmB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAChE,KAAK,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,0DAA0D;QAC1D,MAAM,cAAc,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE;YAC3D,OAAO;YACP,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC;SACjC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9D,KAAK,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,MAAM,iBAAiB,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACnF,KAAK,CAAC,IAAI,CACR,GAAG,uBAAuB,CACxB,CACE,MAAM,oBAAoB,CAAC,OAAO,EAAE;YAClC,OAAO;YACP,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC;SACtC,CAAC,CACH,CAAC,OAAO,CACV,CACF,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,GAAG,4BAA4B,CAAC,MAAM,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACtF,KAAK,CAAC,IAAI,CAAC,GAAG,0BAA0B,CAAC,MAAM,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClF,KAAK,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5E,KAAK,CAAC,IAAI,CACR,GAAG,+BAA+B,CAChC,CAAC,MAAM,4BAA4B,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CACnE,CACF,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,GAAG,+BAA+B,CAAC,MAAM,4BAA4B,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5F,KAAK,CAAC,IAAI,CACR,GAAG,oCAAoC,CACrC,MAAM,iCAAiC,CAAC,OAAO,CAAC,CACjD,CACF,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,OAAO,EAAE,CAAC;IACpB,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;IAC7C,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AACzB,CAAC"}
|
|
1
|
+
{"version":3,"file":"coverage-run.js","sourceRoot":"","sources":["../../../src/lib/catalogue/coverage-run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scores coverage — M-ADR 0205 §4.5's coverage instrument, the fourteenth
|
|
3
|
+
* engine check (Phase B, B2). SQL on the §4.1 engine, like every other
|
|
4
|
+
* catalogue-reading predicate; `check-repo-config-coverage.sh` remains the
|
|
5
|
+
* only shell survivor and is not the model for this.
|
|
6
|
+
*
|
|
7
|
+
* The claim: *every eligible artefact carries a current score*. Eligibility is
|
|
8
|
+
* computed per rubric against the catalogue that holds its targets, and the
|
|
9
|
+
* predicate reports BOTH directions, because the two say different things:
|
|
10
|
+
*
|
|
11
|
+
* - an eligible target with no score is a GAP — nobody has judged it;
|
|
12
|
+
* - a score whose target does not resolve is an ORPHANED SCORE — the
|
|
13
|
+
* assessment corpus has decayed away from the model it describes.
|
|
14
|
+
*
|
|
15
|
+
* The second direction is not decoration. Measured on the forward estate at
|
|
16
|
+
* introduction: 85 of 99 ADR scores point at ids that no longer exist, because
|
|
17
|
+
* a rename moved the ADR canon and the registry keys were never migrated. A
|
|
18
|
+
* one-directional predicate would have reported that estate as having 99
|
|
19
|
+
* scored ADRs while none of them resolved.
|
|
20
|
+
*
|
|
21
|
+
* THE JOIN VOCABULARY IS THE WHOLE DIFFICULTY, and it is declared rather than
|
|
22
|
+
* guessed. A registry's entry keys are not the catalogue's ids, and the
|
|
23
|
+
* mismatch differs per rubric — measured, not assumed:
|
|
24
|
+
*
|
|
25
|
+
* - contract-quality keys are SPEC PATHS (`contracts-avro/.../X.avsc`),
|
|
26
|
+
* joining `contracts.spec_path`; against `contracts.id` they score 0 of 55.
|
|
27
|
+
* - adr-quality keys carry a tier prefix (`M-ADR-0001`) the catalogue strips
|
|
28
|
+
* (`ADR-0001`); the raw join scores 0 of 99.
|
|
29
|
+
* - domain-architecture keys are plain domain slugs and join `domains.id`
|
|
30
|
+
* directly, 13 of 13.
|
|
31
|
+
*
|
|
32
|
+
* So each rubric declares its catalogue, its join column and its reference
|
|
33
|
+
* transform, and the predicate REPORTS the resolution rate it achieved. A join
|
|
34
|
+
* that silently resolves nothing looks exactly like an estate that has scored
|
|
35
|
+
* nothing — the confident-false-zero shape this whole phase exists to remove.
|
|
36
|
+
*
|
|
37
|
+
* Rubrics whose targets have NO catalogue (c4-diagram, strategic-doc,
|
|
38
|
+
* user-story, work-order) have no eligibility denominator to compute. They are
|
|
39
|
+
* reported as such by name and their scores are still resolution-checked as
|
|
40
|
+
* far as they can be — never silently omitted, because a rubric missing from
|
|
41
|
+
* the output reads as a rubric with nothing to say.
|
|
42
|
+
*
|
|
43
|
+
* Reporting-only at both tiers, per §4.5. Exemption vocabulary starts EMPTY
|
|
44
|
+
* (M-ADR 0199): there is no way to mark a target exempt yet, deliberately, so
|
|
45
|
+
* the first figure is the honest total.
|
|
46
|
+
*
|
|
47
|
+
* ADOPTION GATING — a rubric is measured only where its REGISTRY EXISTS. An SDD
|
|
48
|
+
* that carries no `<rubric>-scores.yaml` has not adopted that rubric, so it has
|
|
49
|
+
* no eligible population for it, and reporting its whole ADR/contract/capability
|
|
50
|
+
* corpus as unscored would be true-but-useless noise. This is the same n/a rule
|
|
51
|
+
* the repo-config predicate applies and the same rule the quality-scores builder
|
|
52
|
+
* applies to an absent registry directory: absence of the whole surface is not a
|
|
53
|
+
* gap in it. Measured before adopting it: without this rule ONE reverse-estate
|
|
54
|
+
* SDD emits 630 gap lines for rubrics it has never used, which across that
|
|
55
|
+
* estate would swamp the baseline re-take and bury the real signal.
|
|
56
|
+
*
|
|
57
|
+
* The distinction that must NOT be lost, and is not: a registry that EXISTS but
|
|
58
|
+
* is EMPTY reports its full population as gaps. That is the method repo's own
|
|
59
|
+
* state — fifteen deliberately-empty containers — and it is exactly the silence
|
|
60
|
+
* §4.5 exists to make loud. Absent surface and empty surface are different
|
|
61
|
+
* claims, and conflating them is the defect this whole phase is about.
|
|
62
|
+
*
|
|
63
|
+
* The n/a count is always printed. A rubric skipped silently reads as a rubric
|
|
64
|
+
* with nothing to report.
|
|
65
|
+
*/
|
|
66
|
+
import type { EngineSession } from "./engine-validator.js";
|
|
67
|
+
export type ScoresCoverageTier = "member" | "aggregate";
|
|
68
|
+
/**
|
|
69
|
+
* How a rubric's scores reach the catalogue rows they describe.
|
|
70
|
+
*
|
|
71
|
+
* `refTransform` is applied to the SCORE's target_ref before comparison, in
|
|
72
|
+
* SQL, so the transform is visible in the query rather than hidden in host
|
|
73
|
+
* code. `null` means the ref is already in the catalogue's vocabulary.
|
|
74
|
+
*/
|
|
75
|
+
export interface RubricEligibility {
|
|
76
|
+
readonly rubricId: string;
|
|
77
|
+
readonly targetKind: string;
|
|
78
|
+
/** Catalogue holding the eligible population; null when none exists. */
|
|
79
|
+
readonly catalogue: string | null;
|
|
80
|
+
/** Column in that catalogue the score's target_ref matches. */
|
|
81
|
+
readonly joinColumn: string;
|
|
82
|
+
/** SQL expression transforming target_ref into the catalogue's vocabulary. */
|
|
83
|
+
readonly refTransform: ((ref: string) => string) | null;
|
|
84
|
+
/** SQL predicate narrowing the catalogue to eligible rows; null = all rows. */
|
|
85
|
+
readonly eligibilityFilter: string | null;
|
|
86
|
+
/** Why the filter is what it is — rendered nowhere, read by whoever changes it. */
|
|
87
|
+
readonly eligibilityNote: string;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* The declared mapping. Three entries are EXERCISED against real estate data
|
|
91
|
+
* (adr-quality, contract-quality, domain-architecture); the rest are declared
|
|
92
|
+
* from the registry and rubric shapes and have no populated corpus to verify
|
|
93
|
+
* against yet — a distinction the metric line states rather than blurs.
|
|
94
|
+
*/
|
|
95
|
+
export declare const RUBRIC_ELIGIBILITY: readonly RubricEligibility[];
|
|
96
|
+
export interface ScoresCoverageFinding {
|
|
97
|
+
readonly kind: "uncovered" | "orphaned-score" | "unresolvable-staleness";
|
|
98
|
+
readonly rubricId: string;
|
|
99
|
+
readonly subject: string;
|
|
100
|
+
}
|
|
101
|
+
export interface RubricCoverageMetric {
|
|
102
|
+
readonly rubricId: string;
|
|
103
|
+
readonly targetKind: string;
|
|
104
|
+
/** null when the rubric has no catalogued population. */
|
|
105
|
+
readonly eligible: number | null;
|
|
106
|
+
readonly covered: number;
|
|
107
|
+
/** Scores present for this rubric, however they resolve. */
|
|
108
|
+
readonly scored: number;
|
|
109
|
+
readonly orphaned: number;
|
|
110
|
+
}
|
|
111
|
+
export interface ScoresCoverageResult {
|
|
112
|
+
readonly findings: readonly ScoresCoverageFinding[];
|
|
113
|
+
readonly metrics: readonly RubricCoverageMetric[];
|
|
114
|
+
/** Rubrics carrying scores that no eligibility entry declares. */
|
|
115
|
+
readonly undeclaredRubrics: readonly string[];
|
|
116
|
+
/** Rubrics skipped because this SDD carries no registry for them. */
|
|
117
|
+
readonly notAdopted: readonly string[];
|
|
118
|
+
readonly stalenessBasis: {
|
|
119
|
+
readonly corpusRef: number;
|
|
120
|
+
readonly scoredAt: number;
|
|
121
|
+
readonly none: number;
|
|
122
|
+
};
|
|
123
|
+
readonly totalScores: number;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Runs the predicate. `available` names the catalogues actually present, so a
|
|
127
|
+
* rubric whose population file is absent is skipped the way every other
|
|
128
|
+
* predicate skips an absent population — silently, because absence of the
|
|
129
|
+
* whole surface is not a gap in it — while a rubric whose population is
|
|
130
|
+
* PRESENT but empty still reports its zero.
|
|
131
|
+
*/
|
|
132
|
+
export declare function runScoresCoverage(session: EngineSession, options: {
|
|
133
|
+
readonly tier: ScoresCoverageTier;
|
|
134
|
+
readonly available: ReadonlySet<string>;
|
|
135
|
+
/** SDD root — resolves which rubrics this SDD has actually adopted. */
|
|
136
|
+
readonly sddRoot: string;
|
|
137
|
+
}): Promise<ScoresCoverageResult>;
|
|
138
|
+
//# sourceMappingURL=scores-coverage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scores-coverage.d.ts","sourceRoot":"","sources":["../../../src/lib/catalogue/scores-coverage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,WAAW,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,wEAAwE;IACxE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,+DAA+D;IAC/D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,8EAA8E;IAC9E,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC;IACxD,+EAA+E;IAC/E,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,mFAAmF;IACnF,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,iBAAiB,EAiJ1D,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,gBAAgB,GAAG,wBAAwB,CAAC;IACzE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,yDAAyD;IACzD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACpD,QAAQ,CAAC,OAAO,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAClD,kEAAkE;IAClE,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,qEAAqE;IACrE,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,cAAc,EAAE;QACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAYD;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE;IACP,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,GACA,OAAO,CAAC,oBAAoB,CAAC,CA+J/B"}
|