instar 1.3.973 → 1.3.975

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.
@@ -41,15 +41,56 @@ export interface StandardCoverage {
41
41
  danglingRefs: string[];
42
42
  classifiedAt: string;
43
43
  }
44
+ /**
45
+ * What the audit's own inputs looked like, so a reader can tell an assessment
46
+ * over the WHOLE constitution apart from one over a fragment of it.
47
+ *
48
+ * Born from honest-denominators instance 4 (2026-07-25): this auditor reported
49
+ * `enforcedRatio: 0.0455` over 22 standards while the registry on disk carried
50
+ * 81. Reading the same registry in full gives 0.5375. The ratio was not wrong
51
+ * arithmetic — it was arithmetic over a denominator nobody could see, and the
52
+ * result was a figure 12× more alarming than reality, quoted onward as fact.
53
+ */
54
+ export interface RegistryProvenance {
55
+ /** Absolute path of the registry file this pass actually read. */
56
+ path: string;
57
+ /** Bytes read — a 46KB copy where the source carries 248KB is a staleness tell. */
58
+ bytes: number;
59
+ /** Article headings found inside detected standards families — the parse denominator. */
60
+ articleHeadings: number;
61
+ /** Headings that parsed into an article. */
62
+ parsed: number;
63
+ /** Headings inside a family that carried no `**Rule.**` and were dropped. */
64
+ droppedHeadings: string[];
65
+ /** Families detected structurally. */
66
+ families: string[];
67
+ /** Registry-parse canary verdict — false means the numbers below are NOT trustworthy. */
68
+ canaryOk: boolean;
69
+ canaryFailures: string[];
70
+ }
44
71
  export interface CoverageSummary {
45
72
  total: number;
46
73
  byKind: Record<EnforcementKind, number>;
47
- /** (ratchet + gate + lint) / total — the fraction of standards with a verified structural guard. */
48
- enforcedRatio: number;
74
+ /**
75
+ * (ratchet + gate + lint) / total — the fraction of standards with a verified
76
+ * structural guard. **`null` when `total` is 0**: with nothing to divide by
77
+ * there is no ratio, and reporting one (either the flattering 1 or the
78
+ * damning 0) states a measurement that was never taken. Callers must render
79
+ * null as "not assessed", never coerce it to a number.
80
+ */
81
+ enforcedRatio: number | null;
49
82
  /** Names of `documented-only` standards (the gaps). */
50
83
  gaps: string[];
51
84
  /** Total dangling refs across all standards. */
52
85
  danglingCount: number;
86
+ /**
87
+ * True only when the pass read a registry its own canary vouches for. False
88
+ * means every figure in this summary describes a fragment or a drifted parse
89
+ * — surface it beside the numbers rather than presenting them bare.
90
+ */
91
+ assessmentTrustworthy: boolean;
92
+ /** Provenance of the registry this pass read. */
93
+ registry: RegistryProvenance;
53
94
  }
54
95
  export interface CoverageReport {
55
96
  generatedAt: string;
@@ -1 +1 @@
1
- {"version":3,"file":"StandardsEnforcementAuditor.d.ts","sourceRoot":"","sources":["../../src/core/StandardsEnforcementAuditor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAQH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,iBAAiB,CAAC;AAE5F,MAAM,WAAW,aAAa;IAC5B,6DAA6D;IAC7D,GAAG,EAAE,MAAM,CAAC;IACZ,uCAAuC;IACvC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAClC,uEAAuE;IACvE,QAAQ,EAAE,OAAO,CAAC;IAClB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,eAAe,CAAC;IACjC,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,mFAAmF;IACnF,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IACxC,oGAAoG;IACpG,aAAa,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,gDAAgD;IAChD,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,gGAAgG;IAChG,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAC;CACpB;AAMD,0DAA0D;AAC1D,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAmB1F;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAgCvE;AAuID,sEAAsE;AACtE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAK7D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,cAAc,EACpB,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,GAC5B,cAAc,CA0ChB;AAED,uFAAuF;AACvF,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAY1D"}
1
+ {"version":3,"file":"StandardsEnforcementAuditor.d.ts","sourceRoot":"","sources":["../../src/core/StandardsEnforcementAuditor.ts"],"names":[],"mappings":"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"}
@@ -24,7 +24,7 @@
24
24
  import fs from 'node:fs';
25
25
  import path from 'node:path';
26
26
  import crypto from 'node:crypto';
27
- import { loadStandardsRegistry } from './StandardsRegistryParser.js';
27
+ import { parseStandardsRegistryDetailed, runRegistryCanary } from './StandardsRegistryParser.js';
28
28
  import { extractEnforcementRefs, flattenRefs } from './StandardEnforcementExtractor.js';
29
29
  const KIND_RANK = {
30
30
  ratchet: 4, gate: 3, lint: 2, 'spec-only': 1,
@@ -270,14 +270,19 @@ function repoStructureSignal(projectDir) {
270
270
  }
271
271
  /** Compute the input hash that drives the recompute short-circuit. */
272
272
  export function computeInputHash(opts) {
273
- let registry = '';
273
+ // An UNREADABLE registry must not hash identically to an empty-but-present one:
274
+ // that conflation is the honest-denominators shape at the cache layer, where a
275
+ // missing constitution would share a cache slot with a genuinely blank one.
276
+ // `computeCoverage` throws on an unreadable registry (the correct loud failure);
277
+ // this marker only keeps the short-circuit from confusing the two states.
278
+ let registryDigestInput;
274
279
  try {
275
- registry = fs.readFileSync(opts.registryPath, 'utf-8');
280
+ registryDigestInput = fs.readFileSync(opts.registryPath, 'utf-8');
276
281
  }
277
- catch {
278
- registry = '';
282
+ catch (err) {
283
+ registryDigestInput = `unreadable:${opts.registryPath}:${err instanceof Error ? err.message : String(err)}`;
279
284
  }
280
- const regHash = crypto.createHash('sha256').update(registry).digest('hex').slice(0, 16);
285
+ const regHash = crypto.createHash('sha256').update(registryDigestInput).digest('hex').slice(0, 16);
281
286
  return `${regHash}.${repoStructureSignal(opts.projectDir)}`;
282
287
  }
283
288
  /**
@@ -293,7 +298,21 @@ export function computeCoverage(opts, prior) {
293
298
  // return it (only its timestamp would differ on recompute). The short-circuit.
294
299
  return prior;
295
300
  }
296
- const articles = loadStandardsRegistry(opts.registryPath);
301
+ // Read ONCE and keep what the parse saw: the audit must be able to state the
302
+ // denominator it computed over (honest-denominators instance 4).
303
+ const registryMarkdown = fs.readFileSync(opts.registryPath, 'utf-8');
304
+ const { articles, diagnostics } = parseStandardsRegistryDetailed(registryMarkdown);
305
+ const canary = runRegistryCanary(articles, diagnostics);
306
+ const registry = {
307
+ path: opts.registryPath,
308
+ bytes: Buffer.byteLength(registryMarkdown, 'utf-8'),
309
+ articleHeadings: diagnostics.articleHeadings,
310
+ parsed: diagnostics.parsed,
311
+ droppedHeadings: diagnostics.droppedHeadings,
312
+ families: diagnostics.families,
313
+ canaryOk: canary.ok,
314
+ canaryFailures: canary.failures,
315
+ };
297
316
  const routeTable = loadRouteTable(opts.projectDir);
298
317
  // Collect every wanted marker across all articles → ONE bounded src walk.
299
318
  const extracted = articles.map((a) => ({ a, refs: extractEnforcementRefs(a) }));
@@ -317,14 +336,25 @@ export function computeCoverage(opts, prior) {
317
336
  byKind[s.enforcementKind] += 1;
318
337
  const total = standards.length;
319
338
  const enforced = byKind.ratchet + byKind.gate + byKind.lint;
320
- const enforcedRatio = total === 0 ? 0 : Number((enforced / total).toFixed(4));
339
+ // No denominator no ratio. Returning 0 here (the previous behaviour) reads on
340
+ // a dashboard as "0% of our standards are enforced" — a measurement, and an
341
+ // alarming one — when the truth is that nothing was measured at all.
342
+ const enforcedRatio = total === 0 ? null : Number((enforced / total).toFixed(4));
321
343
  const gaps = standards.filter((s) => s.enforcementKind === 'documented-only').map((s) => s.standard);
322
344
  const danglingCount = standards.reduce((n, s) => n + s.danglingRefs.length, 0);
323
345
  return {
324
346
  generatedAt: classifiedAt,
325
347
  inputHash,
326
348
  standards,
327
- summary: { total, byKind, enforcedRatio, gaps, danglingCount },
349
+ summary: {
350
+ total,
351
+ byKind,
352
+ enforcedRatio,
353
+ gaps,
354
+ danglingCount,
355
+ assessmentTrustworthy: total > 0 && registry.canaryOk,
356
+ registry,
357
+ },
328
358
  };
329
359
  }
330
360
  /** A stable, timestamp-free view used to assert determinism (two runs → identical). */
@@ -1 +1 @@
1
- {"version":3,"file":"StandardsEnforcementAuditor.js","sourceRoot":"","sources":["../../src/core/StandardsEnforcementAuditor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StandardsEnforcementAuditor.js","sourceRoot":"","sources":["../../src/core/StandardsEnforcementAuditor.ts"],"names":[],"mappings":"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"}
@@ -33,13 +33,53 @@ export interface StandardArticle {
33
33
  appliedThrough?: string;
34
34
  }
35
35
  /**
36
- * Parse the registry markdown into standards articles. Pure function no I/O
37
- * so tests can feed fixture content and production feeds the real file.
36
+ * What the parse SAW, so a caller can tell "nothing was dropped" apart from
37
+ * "nothing could be seen" the honest-denominator rule applied to the parse
38
+ * itself. `articleHeadings` is the denominator (`###` headings inside detected
39
+ * families); `parsed` is the numerator; `droppedHeadings` names the difference.
38
40
  */
41
+ export interface RegistryParseDiagnostics {
42
+ /** Families detected structurally (a `##` section with ≥1 Rule-bearing `###`). */
43
+ families: string[];
44
+ /** `###` headings inside detected families — the denominator. */
45
+ articleHeadings: number;
46
+ /** Headings that parsed into an article (i.e. carried a `**Rule.**`). */
47
+ parsed: number;
48
+ /** Headings inside a detected family that carried NO Rule line — silently lost before. */
49
+ droppedHeadings: string[];
50
+ /** `##` sections skipped because no `###` under them carried a Rule (Genesis, Two layers, …). */
51
+ nonFamilySections: string[];
52
+ }
53
+ /**
54
+ * Parse the registry markdown into standards articles PLUS what the parse saw.
55
+ * Pure function — no I/O — so tests can feed fixture content and production
56
+ * feeds the real file.
57
+ */
58
+ export declare function parseStandardsRegistryDetailed(markdown: string): {
59
+ articles: StandardArticle[];
60
+ diagnostics: RegistryParseDiagnostics;
61
+ };
62
+ /** Parse the registry markdown into standards articles. */
39
63
  export declare function parseStandardsRegistry(markdown: string): StandardArticle[];
40
64
  /** Resolve + read + parse the on-disk registry. Throws if the file is missing. */
41
65
  export declare function loadStandardsRegistry(registryPath: string): StandardArticle[];
42
- /** Minimum plausible article count far below the real ~21, catches a parse collapse. */
66
+ /** Read + parse the on-disk registry WITH parse diagnostics. Throws if missing. */
67
+ export declare function loadStandardsRegistryDetailed(registryPath: string): {
68
+ articles: StandardArticle[];
69
+ diagnostics: RegistryParseDiagnostics;
70
+ };
71
+ /**
72
+ * Coarse backstop only — catches a TOTAL parse collapse, nothing subtler.
73
+ *
74
+ * This constant used to be the canary's whole strength, with a comment reading
75
+ * "far below the real ~21". The registry grew to 81 articles and the constant
76
+ * never moved, so by 2026-07-25 it would have passed happily while 65 of 81
77
+ * articles vanished: a guard whose threshold never grew with the thing it
78
+ * guards. The real check is now `droppedHeadings` — a COMPLETENESS comparison
79
+ * against the count of article headings actually present, which needs no
80
+ * maintenance as the registry grows. Keep this floor as a backstop for callers
81
+ * that have no diagnostics to compare against; never treat it as sufficient.
82
+ */
43
83
  export declare const MIN_EXPECTED_ARTICLES = 15;
44
84
  /**
45
85
  * Anchor articles that MUST parse (with a non-empty rule) for the gate to be
@@ -51,7 +91,22 @@ export interface RegistryCanaryResult {
51
91
  ok: boolean;
52
92
  articleCount: number;
53
93
  failures: string[];
94
+ /**
95
+ * The denominator the completeness check ran against — `###` headings found
96
+ * inside detected families. `null` when the caller supplied no diagnostics,
97
+ * which means completeness was NOT assessed (only the coarse floor ran).
98
+ */
99
+ articleHeadings: number | null;
100
+ /** False when no diagnostics were supplied — the canary could not check completeness. */
101
+ completenessAssessed: boolean;
54
102
  }
55
- /** Run the registry parse canary over a parsed article set. */
56
- export declare function runRegistryCanary(articles: StandardArticle[]): RegistryCanaryResult;
103
+ /**
104
+ * Run the registry parse canary over a parsed article set.
105
+ *
106
+ * Pass `diagnostics` (from `parseStandardsRegistryDetailed`) to get the real
107
+ * check: every article heading present in a standards family must have parsed.
108
+ * Without it only the coarse floor + anchor checks run, and the result says so
109
+ * via `completenessAssessed: false` rather than implying a clean bill of health.
110
+ */
111
+ export declare function runRegistryCanary(articles: StandardArticle[], diagnostics?: RegistryParseDiagnostics): RegistryCanaryResult;
57
112
  //# sourceMappingURL=StandardsRegistryParser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StandardsRegistryParser.d.ts","sourceRoot":"","sources":["../../src/core/StandardsRegistryParser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,MAAM,WAAW,eAAe;IAC9B,2GAA2G;IAC3G,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAkBD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,EAAE,CA+C1E;AAED,kFAAkF;AAClF,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,eAAe,EAAE,CAG7E;AAID,0FAA0F;AAC1F,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAM5C,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,OAAO,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,+DAA+D;AAC/D,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,oBAAoB,CAWnF"}
1
+ {"version":3,"file":"StandardsRegistryParser.d.ts","sourceRoot":"","sources":["../../src/core/StandardsRegistryParser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,MAAM,WAAW,eAAe;IAC9B,2GAA2G;IAC3G,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAoCD;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,kFAAkF;IAClF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,iEAAiE;IACjE,eAAe,EAAE,MAAM,CAAC;IACxB,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,0FAA0F;IAC1F,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iGAAiG;IACjG,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAiDD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,GACf;IAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;IAAC,WAAW,EAAE,wBAAwB,CAAA;CAAE,CAsBxE;AAED,2DAA2D;AAC3D,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,EAAE,CAE1E;AAED,kFAAkF;AAClF,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,eAAe,EAAE,CAG7E;AAED,mFAAmF;AACnF,wBAAgB,6BAA6B,CAC3C,YAAY,EAAE,MAAM,GACnB;IAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;IAAC,WAAW,EAAE,wBAAwB,CAAA;CAAE,CAExE;AAID;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAM5C,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,OAAO,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;;;;OAIG;IACH,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,yFAAyF;IACzF,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,eAAe,EAAE,EAC3B,WAAW,CAAC,EAAE,wBAAwB,GACrC,oBAAoB,CAsBtB"}
@@ -17,53 +17,64 @@
17
17
  */
18
18
  import fs from 'node:fs';
19
19
  /**
20
- * The `##` families that contain standards ARTICLES. Other `##` sections (Why
21
- * this exists, Genesis, Two layers, How a standard joins, The Stakes) contain
22
- * `###` subheadings that are NOT articles and must be excluded.
20
+ * Standards families are detected STRUCTURALLY, not by name: a `##` section is a
21
+ * standards family iff it contains at least one `###` heading carrying a
22
+ * `**Rule.**` line. Other `##` sections (Why this exists, Genesis, Two layers,
23
+ * How a standard joins, The Stakes) carry `###` subheadings with no Rule line
24
+ * and are therefore excluded automatically.
25
+ *
26
+ * This replaced a hardcoded five-name allowlist (`The Root|The Substrate|
27
+ * Building|Shipping|Interaction`). That allowlist was a silent-drop generator:
28
+ * the registry grew a SIXTH family ("The Fractal — the framework that develops
29
+ * itself") and every article under it was discarded with no signal anywhere —
30
+ * found 2026-07-25 auditing this instrument (honest-denominators, instance 4).
31
+ * A name allowlist can only ever be as current as the last person who edited it;
32
+ * the structural rule needs no maintenance.
23
33
  */
24
- const STANDARDS_FAMILY_RE = /^##\s+(The Root|The Substrate|Building|Shipping|Interaction)\b/;
25
- /** Any `##` heading ends the current family's article-collection scope. */
34
+ /** Any `##` heading opens a new section scope. */
26
35
  const ANY_H2_RE = /^##\s+/;
36
+ const H2_NAME_RE = /^##\s+(.+?)\s*$/;
27
37
  const ARTICLE_RE = /^###\s+(.+?)\s*$/;
38
+ /**
39
+ * Family display name: the heading text up to the first dash separator, so
40
+ * "The Substrate — the model-level truths …" stays "The Substrate" (the value
41
+ * the `?family=` filter and the coverage report have always carried).
42
+ */
43
+ function familyName(heading) {
44
+ return heading.split(/\s+[—–-]\s+/)[0].trim();
45
+ }
28
46
  /** Extract the text after a `**Label.**` marker on a line (or '' if absent). */
29
47
  function fieldAfter(line, label) {
30
48
  const m = line.match(new RegExp(`^\\*\\*${label}\\.\\*\\*\\s*(.*)$`));
31
49
  return m ? m[1].trim() : null;
32
50
  }
33
- /**
34
- * Parse the registry markdown into standards articles. Pure function — no I/O —
35
- * so tests can feed fixture content and production feeds the real file.
36
- */
37
- export function parseStandardsRegistry(markdown) {
38
- const lines = markdown.split('\n');
39
- const articles = [];
40
- let currentFamily = null;
51
+ /** Split the registry into `##` sections, each holding its `###` blocks. */
52
+ function readSections(markdown) {
53
+ const sections = [];
54
+ let section = null;
41
55
  let cur = null;
56
+ let curName = '';
42
57
  const flush = () => {
43
- if (cur && cur.rule)
44
- articles.push(cur);
58
+ if (section && cur)
59
+ section.blocks.push({ name: curName, article: cur });
45
60
  cur = null;
61
+ curName = '';
46
62
  };
47
- for (const line of lines) {
48
- const famMatch = line.match(STANDARDS_FAMILY_RE);
49
- if (famMatch) {
63
+ for (const line of markdown.split('\n')) {
64
+ if (ANY_H2_RE.test(line)) {
50
65
  flush();
51
- currentFamily = famMatch[1];
66
+ const h2 = line.match(H2_NAME_RE);
67
+ section = { heading: h2 ? h2[1].trim() : '', blocks: [] };
68
+ sections.push(section);
52
69
  continue;
53
70
  }
54
- // A non-standards H2 closes the current family scope (so e.g. "## Two layers"
55
- // stops us from collecting its ### subheadings as articles).
56
- if (ANY_H2_RE.test(line) && !famMatch) {
57
- flush();
58
- currentFamily = null;
59
- continue;
60
- }
61
- if (!currentFamily)
71
+ if (!section)
62
72
  continue;
63
73
  const artMatch = line.match(ARTICLE_RE);
64
74
  if (artMatch) {
65
75
  flush();
66
- cur = { family: currentFamily, name: artMatch[1].trim(), rule: '', inPractice: '' };
76
+ curName = artMatch[1].trim();
77
+ cur = { family: familyName(section.heading), name: curName, rule: '', inPractice: '' };
67
78
  continue;
68
79
  }
69
80
  if (!cur)
@@ -87,15 +98,66 @@ export function parseStandardsRegistry(markdown) {
87
98
  }
88
99
  }
89
100
  flush();
90
- return articles;
101
+ return sections;
102
+ }
103
+ /**
104
+ * Parse the registry markdown into standards articles PLUS what the parse saw.
105
+ * Pure function — no I/O — so tests can feed fixture content and production
106
+ * feeds the real file.
107
+ */
108
+ export function parseStandardsRegistryDetailed(markdown) {
109
+ const sections = readSections(markdown);
110
+ const articles = [];
111
+ const diagnostics = {
112
+ families: [], articleHeadings: 0, parsed: 0, droppedHeadings: [], nonFamilySections: [],
113
+ };
114
+ for (const section of sections) {
115
+ // Structural family test: at least one `###` block under this `##` carries a Rule.
116
+ const isFamily = section.blocks.some((b) => b.article.rule);
117
+ if (!isFamily) {
118
+ if (section.heading)
119
+ diagnostics.nonFamilySections.push(section.heading);
120
+ continue;
121
+ }
122
+ diagnostics.families.push(familyName(section.heading));
123
+ for (const b of section.blocks) {
124
+ diagnostics.articleHeadings += 1;
125
+ if (b.article.rule) {
126
+ articles.push(b.article);
127
+ diagnostics.parsed += 1;
128
+ }
129
+ else
130
+ diagnostics.droppedHeadings.push(`${familyName(section.heading)} › ${b.name}`);
131
+ }
132
+ }
133
+ return { articles, diagnostics };
134
+ }
135
+ /** Parse the registry markdown into standards articles. */
136
+ export function parseStandardsRegistry(markdown) {
137
+ return parseStandardsRegistryDetailed(markdown).articles;
91
138
  }
92
139
  /** Resolve + read + parse the on-disk registry. Throws if the file is missing. */
93
140
  export function loadStandardsRegistry(registryPath) {
94
141
  const content = fs.readFileSync(registryPath, 'utf-8');
95
142
  return parseStandardsRegistry(content);
96
143
  }
144
+ /** Read + parse the on-disk registry WITH parse diagnostics. Throws if missing. */
145
+ export function loadStandardsRegistryDetailed(registryPath) {
146
+ return parseStandardsRegistryDetailed(fs.readFileSync(registryPath, 'utf-8'));
147
+ }
97
148
  // ── Canary (state-detector drift guard) ───────────────────────────────────
98
- /** Minimum plausible article count — far below the real ~21, catches a parse collapse. */
149
+ /**
150
+ * Coarse backstop only — catches a TOTAL parse collapse, nothing subtler.
151
+ *
152
+ * This constant used to be the canary's whole strength, with a comment reading
153
+ * "far below the real ~21". The registry grew to 81 articles and the constant
154
+ * never moved, so by 2026-07-25 it would have passed happily while 65 of 81
155
+ * articles vanished: a guard whose threshold never grew with the thing it
156
+ * guards. The real check is now `droppedHeadings` — a COMPLETENESS comparison
157
+ * against the count of article headings actually present, which needs no
158
+ * maintenance as the registry grows. Keep this floor as a backstop for callers
159
+ * that have no diagnostics to compare against; never treat it as sufficient.
160
+ */
99
161
  export const MIN_EXPECTED_ARTICLES = 15;
100
162
  /**
101
163
  * Anchor articles that MUST parse (with a non-empty rule) for the gate to be
@@ -109,12 +171,22 @@ export const ANCHOR_ARTICLES = [
109
171
  'Observability',
110
172
  'Never-Waste Feedback',
111
173
  ];
112
- /** Run the registry parse canary over a parsed article set. */
113
- export function runRegistryCanary(articles) {
174
+ /**
175
+ * Run the registry parse canary over a parsed article set.
176
+ *
177
+ * Pass `diagnostics` (from `parseStandardsRegistryDetailed`) to get the real
178
+ * check: every article heading present in a standards family must have parsed.
179
+ * Without it only the coarse floor + anchor checks run, and the result says so
180
+ * via `completenessAssessed: false` rather than implying a clean bill of health.
181
+ */
182
+ export function runRegistryCanary(articles, diagnostics) {
114
183
  const failures = [];
115
184
  if (articles.length < MIN_EXPECTED_ARTICLES) {
116
185
  failures.push(`only ${articles.length} articles parsed (expected ≥ ${MIN_EXPECTED_ARTICLES}) — registry format may have drifted`);
117
186
  }
187
+ if (diagnostics && diagnostics.droppedHeadings.length > 0) {
188
+ failures.push(`${diagnostics.droppedHeadings.length} of ${diagnostics.articleHeadings} article headings parsed with no **Rule.** line and were dropped: ${diagnostics.droppedHeadings.join('; ')}`);
189
+ }
118
190
  for (const anchor of ANCHOR_ARTICLES) {
119
191
  const hit = articles.find(a => a.name.toLowerCase().includes(anchor.toLowerCase()));
120
192
  if (!hit)
@@ -122,6 +194,12 @@ export function runRegistryCanary(articles) {
122
194
  else if (!hit.rule)
123
195
  failures.push(`anchor article "${anchor}" parsed with an empty rule`);
124
196
  }
125
- return { ok: failures.length === 0, articleCount: articles.length, failures };
197
+ return {
198
+ ok: failures.length === 0,
199
+ articleCount: articles.length,
200
+ failures,
201
+ articleHeadings: diagnostics ? diagnostics.articleHeadings : null,
202
+ completenessAssessed: Boolean(diagnostics),
203
+ };
126
204
  }
127
205
  //# sourceMappingURL=StandardsRegistryParser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StandardsRegistryParser.js","sourceRoot":"","sources":["../../src/core/StandardsRegistryParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StandardsRegistryParser.js","sourceRoot":"","sources":["../../src/core/StandardsRegistryParser.ts"],"names":[],"mappings":"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"}
@@ -69,6 +69,10 @@ export interface GuardsSummary {
69
69
  offRuntimeDivergent: number;
70
70
  runtimeEnriched: string;
71
71
  loadBearingGapKeys: string[];
72
+ /** Load-bearing guards whose posture cannot currently prove protection.
73
+ * These retain their existing anomaly class; this list is read-surface
74
+ * completeness, not a second probe alarm. */
75
+ loadBearingUninspectableKeys: string[];
72
76
  loadBearingSoakingKeys: string[];
73
77
  loadBearingAcceptedKeys: string[];
74
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"guardPostureView.d.ts","sourceRoot":"","sources":["../../src/monitoring/guardPostureView.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"guardPostureView.d.ts","sourceRoot":"","sources":["../../src/monitoring/guardPostureView.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,12 @@ const ROW_FIELD_ALLOWLIST = new Set([
27
27
  const RUNTIME_FIELD_ALLOWLIST = new Set([
28
28
  'enabled', 'dryRun', 'lastTickAt', 'tickAgeMs', 'stale', 'jobCount', 'pausedJobCount',
29
29
  ]);
30
+ const LOAD_BEARING_UNINSPECTABLE_STATES = new Set([
31
+ 'missing',
32
+ 'errored',
33
+ 'on-stale',
34
+ 'off-runtime-divergent',
35
+ ]);
30
36
  export { ROW_FIELD_ALLOWLIST, RUNTIME_FIELD_ALLOWLIST };
31
37
  function asBool(v) {
32
38
  return typeof v === 'boolean' ? v : undefined;
@@ -278,7 +284,8 @@ export function buildGuardInventory(opts) {
278
284
  off: 0, offDeviant: 0, offDarkDefault: 0,
279
285
  divergedPendingRestart: 0, errored: 0, missing: 0, offRuntimeDivergent: 0,
280
286
  runtimeEnriched: '',
281
- loadBearingGapKeys: [], loadBearingSoakingKeys: [], loadBearingAcceptedKeys: [],
287
+ loadBearingGapKeys: [], loadBearingUninspectableKeys: [],
288
+ loadBearingSoakingKeys: [], loadBearingAcceptedKeys: [],
282
289
  };
283
290
  let enriched = 0;
284
291
  for (const g of guards) {
@@ -286,6 +293,9 @@ export function buildGuardInventory(opts) {
286
293
  enriched++;
287
294
  if (g.loadBearingGap)
288
295
  summary.loadBearingGapKeys.push(g.key);
296
+ if (g.loadBearing && LOAD_BEARING_UNINSPECTABLE_STATES.has(g.effective)) {
297
+ summary.loadBearingUninspectableKeys.push(g.key);
298
+ }
289
299
  if (g.loadBearingSoaking)
290
300
  summary.loadBearingSoakingKeys.push(g.key);
291
301
  if (g.loadBearingAccepted)