@3f-consulting/spec-controller-core 0.1.0-alpha.4 → 0.1.0-alpha.5

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.
Files changed (119) hide show
  1. package/dist/assemble/evidenceReconciliationFromSources.d.ts +4 -13
  2. package/dist/assemble/evidenceReconciliationFromSources.d.ts.map +1 -1
  3. package/dist/assemble/evidenceReconciliationFromSources.js +17 -22
  4. package/dist/assemble/evidenceReconciliationFromSources.js.map +1 -1
  5. package/dist/domain/checkCharacteristics.d.ts +22 -15
  6. package/dist/domain/checkCharacteristics.d.ts.map +1 -1
  7. package/dist/domain/checkCharacteristics.js +22 -15
  8. package/dist/domain/checkCharacteristics.js.map +1 -1
  9. package/dist/domain/evidenceReconciliation.d.ts +26 -2
  10. package/dist/domain/evidenceReconciliation.d.ts.map +1 -1
  11. package/dist/domain/evidenceReconciliation.js +164 -61
  12. package/dist/domain/evidenceReconciliation.js.map +1 -1
  13. package/dist/domain/fitnessChecks.d.ts +24 -35
  14. package/dist/domain/fitnessChecks.d.ts.map +1 -1
  15. package/dist/domain/fitnessChecks.js +3 -30
  16. package/dist/domain/fitnessChecks.js.map +1 -1
  17. package/dist/domain/journal.d.ts +13 -103
  18. package/dist/domain/journal.d.ts.map +1 -1
  19. package/dist/domain/journal.js +6 -19
  20. package/dist/domain/journal.js.map +1 -1
  21. package/dist/domain/ledger.d.ts.map +1 -1
  22. package/dist/domain/ledger.js +45 -34
  23. package/dist/domain/ledger.js.map +1 -1
  24. package/dist/domain/posting.d.ts.map +1 -1
  25. package/dist/domain/posting.js +4 -7
  26. package/dist/domain/posting.js.map +1 -1
  27. package/dist/domain/qualityCheckFaultMessages.d.ts +7 -2
  28. package/dist/domain/qualityCheckFaultMessages.d.ts.map +1 -1
  29. package/dist/domain/qualityCheckFaultMessages.js +7 -2
  30. package/dist/domain/qualityCheckFaultMessages.js.map +1 -1
  31. package/dist/domain/qualityCheckReconciliation.d.ts +21 -0
  32. package/dist/domain/qualityCheckReconciliation.d.ts.map +1 -1
  33. package/dist/domain/qualityCheckReconciliation.js +40 -105
  34. package/dist/domain/qualityCheckReconciliation.js.map +1 -1
  35. package/dist/domain/qualityCheckReconciliationFault.d.ts +3 -1
  36. package/dist/domain/qualityCheckReconciliationFault.d.ts.map +1 -1
  37. package/dist/domain/qualityCheckReconciliationFault.js +3 -1
  38. package/dist/domain/qualityCheckReconciliationFault.js.map +1 -1
  39. package/dist/index.d.ts +0 -1
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +0 -1
  42. package/dist/index.js.map +1 -1
  43. package/dist/internal.d.ts +2 -10
  44. package/dist/internal.d.ts.map +1 -1
  45. package/dist/internal.js +24 -71
  46. package/dist/internal.js.map +1 -1
  47. package/dist/parse/checkScriptsRunInCI.d.ts +8 -7
  48. package/dist/parse/checkScriptsRunInCI.d.ts.map +1 -1
  49. package/dist/parse/checkScriptsRunInCI.js +7 -6
  50. package/dist/parse/checkScriptsRunInCI.js.map +1 -1
  51. package/dist/parse/ciStepRecord.d.ts +5 -17
  52. package/dist/parse/ciStepRecord.d.ts.map +1 -1
  53. package/dist/parse/ciStepRecord.js +7 -27
  54. package/dist/parse/ciStepRecord.js.map +1 -1
  55. package/dist/parse/corpusCodeFaults.d.ts +4 -4
  56. package/dist/parse/corpusCodeFaults.js +4 -4
  57. package/dist/parse/corpusFaults.d.ts +24 -36
  58. package/dist/parse/corpusFaults.d.ts.map +1 -1
  59. package/dist/parse/corpusFaults.js +16 -32
  60. package/dist/parse/corpusFaults.js.map +1 -1
  61. package/dist/parse/corpusGrammarFaults.d.ts +11 -73
  62. package/dist/parse/corpusGrammarFaults.d.ts.map +1 -1
  63. package/dist/parse/corpusGrammarFaults.js +27 -58
  64. package/dist/parse/corpusGrammarFaults.js.map +1 -1
  65. package/dist/parse/runningStaticChecks.d.ts +3 -2
  66. package/dist/parse/runningStaticChecks.d.ts.map +1 -1
  67. package/dist/parse/runningStaticChecks.js +3 -2
  68. package/dist/parse/runningStaticChecks.js.map +1 -1
  69. package/dist/parse/scenarios.d.ts +27 -12
  70. package/dist/parse/scenarios.d.ts.map +1 -1
  71. package/dist/parse/scenarios.js +47 -85
  72. package/dist/parse/scenarios.js.map +1 -1
  73. package/dist/parse/targetCorpus.d.ts +21 -11
  74. package/dist/parse/targetCorpus.d.ts.map +1 -1
  75. package/dist/parse/targetCorpus.js +16 -19
  76. package/dist/parse/targetCorpus.js.map +1 -1
  77. package/dist/parse/targetManifest.d.ts +10 -85
  78. package/dist/parse/targetManifest.d.ts.map +1 -1
  79. package/dist/parse/targetManifest.js +47 -137
  80. package/dist/parse/targetManifest.js.map +1 -1
  81. package/dist/provenance/provenance.d.ts +8 -11
  82. package/dist/provenance/provenance.d.ts.map +1 -1
  83. package/dist/provenance/provenance.js +2 -3
  84. package/dist/provenance/provenance.js.map +1 -1
  85. package/dist/render/evidenceGrid.d.ts +45 -0
  86. package/dist/render/evidenceGrid.d.ts.map +1 -0
  87. package/dist/render/evidenceGrid.js +145 -0
  88. package/dist/render/evidenceGrid.js.map +1 -0
  89. package/dist/render/markdown.d.ts.map +1 -1
  90. package/dist/render/markdown.js +85 -190
  91. package/dist/render/markdown.js.map +1 -1
  92. package/dist/render/runVerdict.d.ts +3 -2
  93. package/dist/render/runVerdict.d.ts.map +1 -1
  94. package/dist/render/runVerdict.js +3 -2
  95. package/dist/render/runVerdict.js.map +1 -1
  96. package/dist/render/staticChecks.d.ts.map +1 -1
  97. package/dist/render/staticChecks.js +10 -1
  98. package/dist/render/staticChecks.js.map +1 -1
  99. package/package.json +1 -1
  100. package/dist/domain/thresholds.d.ts +0 -123
  101. package/dist/domain/thresholds.d.ts.map +0 -1
  102. package/dist/domain/thresholds.js +0 -185
  103. package/dist/domain/thresholds.js.map +0 -1
  104. package/dist/parse/checkStaticEvidenceObligations.d.ts +0 -32
  105. package/dist/parse/checkStaticEvidenceObligations.d.ts.map +0 -1
  106. package/dist/parse/checkStaticEvidenceObligations.js +0 -78
  107. package/dist/parse/checkStaticEvidenceObligations.js.map +0 -1
  108. package/dist/parse/corpusClaimFaults.d.ts +0 -104
  109. package/dist/parse/corpusClaimFaults.d.ts.map +0 -1
  110. package/dist/parse/corpusClaimFaults.js +0 -128
  111. package/dist/parse/corpusClaimFaults.js.map +0 -1
  112. package/dist/parse/measurements.d.ts +0 -47
  113. package/dist/parse/measurements.d.ts.map +0 -1
  114. package/dist/parse/measurements.js +0 -65
  115. package/dist/parse/measurements.js.map +0 -1
  116. package/dist/render/measuredItem.d.ts +0 -30
  117. package/dist/render/measuredItem.d.ts.map +0 -1
  118. package/dist/render/measuredItem.js +0 -43
  119. package/dist/render/measuredItem.js.map +0 -1
@@ -60,46 +60,6 @@ export interface EvidenceObligation {
60
60
  * (the one-sided Pending Item) is a later slice.
61
61
  */
62
62
  pending?: boolean;
63
- /**
64
- * The check is a MEASURED fitness function (@SCN-CIP-001) — assessed by RUNNING the suite and
65
- * measuring it rather than by reading the source, so its evidence is a NUMBER and its
66
- * reconciliation is a comparison. ABSENT on every other obligation; `true` on a measured one.
67
- *
68
- * IT IS THE ROUTING MARKER, and it is separate from `threshold` on purpose. The reconciler takes
69
- * the measured arm on THIS flag, never on the presence of a ceiling — `measured: true` with NO
70
- * `threshold` is the legal, loud shape of an obligation whose ceiling nobody authored, and it
71
- * must reach the arm that says so (@SCN-CIP-002) rather than fall through to the static route and
72
- * be reported as a check nobody wrote.
73
- */
74
- measured?: true;
75
- /**
76
- * The CEILING this measured obligation is held to — present when the target's manifest authored
77
- * one for this `(scnId, staticCheck)` pair, absent when it did not.
78
- *
79
- * A `threshold` is a ceiling — a bar stayed under, never an allowance drawn down (canon, the
80
- * 2026-08-02 retirement): the reconciliation is
81
- * `measured <= threshold`. The DEBIT carries it, never the credit — a run supplying both the
82
- * number and the bar it was judged against would be grading its own homework, and the ledger
83
- * would transcribe a verdict rather than reconcile one.
84
- */
85
- threshold?: number;
86
- /**
87
- * The bar above is a FLOOR — `measured >= threshold`. ABSENT on an ordinary ceiling obligation,
88
- * which is every one this repository has authored (@SCN-MUT-001).
89
- *
90
- * SPARSE, AND SEPARATE FROM `threshold` FOR THE REASON `measured` IS. A `threshold` of `{ value,
91
- * comparison }` would restructure every measured row on the wire — including the two live
92
- * `ci-run-time` ones — for a fact that is false of most of them; with the flag, a bare-number
93
- * entry serialises exactly as it did before the comparison existed. And `atLeast: true` with NO
94
- * `threshold` is the legal, loud shape of a floor whose bar nobody authored: the flag says which
95
- * way the bar reads, the bar is what the arm then reports.
96
- *
97
- * THE DIRECTION IS THE TARGET's TO AUTHOR, not the engine's to know. A mutation score is a floor
98
- * in every repository there is, but an engine that read the direction off the tag would be
99
- * holding a roster of what a bare tag MEANS — the name-matching @SCN-LNT-005 puts in the target's
100
- * hands. A target authoring a mutation ceiling is wrong out loud rather than quietly overruled.
101
- */
102
- atLeast?: true;
103
63
  }
104
64
  /** A scenario — its @SCN id, and the evidence obligations its evidence tags raise. */
105
65
  export interface Scenario {
@@ -418,80 +378,30 @@ export interface GuardEvidenceObservation {
418
378
  locator?: string;
419
379
  }
420
380
  /**
421
- * One observed MEASUREMENT — the evidence of a MEASURED fitness check (@SCN-CIP-003), emitted by
422
- * the timing wrapper that ran the suite rather than read from a config or a result file.
423
- *
424
- * A THIRD MEMBER RATHER THAN A FLAG ON ITS SIBLING, and the reason is what the sibling MEANS.
425
- * `GuardEvidenceObservation` is one observed STATIC-check fact, read from the CI config and the
426
- * manifest; its two facts are `exists` and `enforcedOverRealSource`. A measurement has neither —
427
- * nothing looked at a manifest, nothing looked at a workflow — so reusing that interface would
428
- * mean setting two fields `true` to satisfy a type, asserting facts nobody observed. That is
429
- * fabricated evidence, in the tool built to refuse it. (`broken` took the opposite trade-off for a
430
- * reason that does not hold here: it rides a runtime observation whose other fields are all
431
- * genuinely present.)
432
- *
433
- * IT ARRIVES ALREADY CITING, which is why `scnId` and `checkTag` are REQUIRED here and optional on
434
- * the static twin. A static check's run is a script handle, and its `@SCN` has to be resolved for
435
- * it over two hops — a resolution that can reach nothing. A measurement has no handle: the thing
436
- * that measures a suite is the wrapper around the step, and canon puts the check-to-scenario
437
- * mapping in that runner. A row that cites nothing is therefore not an uncited credit but an
438
- * unreadable row, and the reader drops it.
439
- *
440
- * BOTH TERMS, NOT THE `@SCN` ALONE (@SCN-LNT-012). The `@SCN` says which ROW the credit posts to;
441
- * the `checkTag` says which of that row's obligations it ANSWERS. A stepless scenario may carry
442
- * more than one measured check, so two measurements can honestly cite one scenario.
443
- */
444
- export interface MeasuredEvidenceObservation {
445
- /** A measured fitness check rides the `lint` quality-check, as every fitness check does. */
446
- qualityCheck: "lint";
447
- /** The `@SCN` this measurement CITES — the row it posts to. */
448
- scnId: string;
449
- /** The BARE CHECK TAG this measurement IS (`ci-run-time`) — which obligation it answers. */
450
- checkTag: string;
451
- /** The measurement itself, in the check's own unit. Held against the obligation's `threshold`. */
452
- measured: number;
453
- }
454
- /**
455
- * The FITNESS observations — the `lint` quality-check's half of the union, in its two shapes.
381
+ * The FITNESS observations — the `lint` quality-check's half of the union.
456
382
  *
457
- * Named because `qualityCheck === "lint"` no longer narrows to one interface, and a reader that
458
- * needs "a fitness credit, either kind" should say so rather than re-spell the union.
383
+ * ONE SHAPE SINCE THE MEASURED AXIS LEFT (3F-3516). A measurement once joined the static-check
384
+ * fact here as a second member; with it gone the name is the guard observation's, kept so a reader
385
+ * that means "a fitness credit" still says so rather than naming the interface it happens to be.
459
386
  */
460
- export type FitnessEvidenceObservation = GuardEvidenceObservation | MeasuredEvidenceObservation;
387
+ export type FitnessEvidenceObservation = GuardEvidenceObservation;
461
388
  /**
462
- * Is this observation a MEASUREMENT? The sub-discriminator among the `lint` quality-check's two
463
- * shapes.
389
+ * Is this observation a STATIC-CHECK fact? The predicate every reader that wants a static check's
390
+ * OWN fields — its runnable handle, its `exists`, its `enforcedOverRealSource` — asks.
464
391
  *
465
- * Keyed on `measured` rather than on a kind field, because the field IS the difference: a static
466
- * observation carries facts about the tree, a measured one carries a number. Adding a tag field
467
- * would put the same distinction in two places, free to disagree.
468
- */
469
- export declare function isMeasuredObservation(observation: EvidenceObservation): observation is MeasuredEvidenceObservation;
470
- /**
471
- * Is this observation a STATIC-CHECK fact? The complement of `isMeasuredObservation` within the
472
- * `lint` quality-check, and the predicate every reader that wants a static check's OWN fields — its
473
- * runnable
474
- * handle, its `exists`, its `enforcedOverRealSource` — should ask.
475
- *
476
- * It exists so those readers state which of the two they mean instead of inheriting an answer from
477
- * `qualityCheck === "lint"`, which stopped being a single interface when the measured member joined
478
- * (@SCN-CIP-003).
392
+ * It outlived the measured member it was written to tell apart from (3F-3516): the `lint`
393
+ * quality-check is a single interface again, so this is the quality-check clause alone, and its
394
+ * readers keep naming what they mean rather than spelling `qualityCheck === "lint"` at each site.
479
395
  */
480
396
  export declare function isStaticCheckObservation(observation: EvidenceObservation): observation is GuardEvidenceObservation;
481
397
  /**
482
398
  * One observed evidence fact — a DISCRIMINATED UNION on `qualityCheck === "lint"`:
483
- * a runtime test result (keyed by scnId + its runtime quality-check), a
484
- * static-check evidenceObservation (`qualityCheck: "lint"`, keyed by `staticCheck`), or a
485
- * MEASUREMENT (`qualityCheck: "lint"`, carrying a number — @SCN-CIP-003). The
399
+ * a runtime test result (keyed by scnId + its runtime quality-check) or a
400
+ * static-check evidenceObservation (`qualityCheck: "lint"`, keyed by `staticCheck`). The
486
401
  * reconciler matches each evidence obligation against evidence observations of the
487
402
  * same quality-check.
488
- *
489
- * `qualityCheck === "lint"` now narrows to `FitnessEvidenceObservation`, not to
490
- * `GuardEvidenceObservation` alone; `isMeasuredObservation` tells the two apart. That widening is
491
- * deliberately type-forced: every site that reads a static observation's own fields off a
492
- * lint-narrowed value had to state which of the two it meant, rather than inherit an answer.
493
403
  */
494
- export type EvidenceObservation = RuntimeEvidenceObservation | GuardEvidenceObservation | MeasuredEvidenceObservation;
404
+ export type EvidenceObservation = RuntimeEvidenceObservation | GuardEvidenceObservation;
495
405
  /**
496
406
  * A PENDING ITEM — the one-sided ledger entry a deliberately-DEFERRED evidence
497
407
  * obligation raises. A `<quality-check>pending` tag (evidence-manifesto §11B) records
@@ -1 +1 @@
1
- {"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../../src/domain/journal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../../src/domain/journal.ts"],"names":[],"mappings":"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"}
@@ -125,27 +125,14 @@ export function pendingItemsOf(scenario) {
125
125
  .map((obligation) => ({ qualityCheck: obligation.qualityCheck }));
126
126
  }
127
127
  /**
128
- * Is this observation a MEASUREMENT? The sub-discriminator among the `lint` quality-check's two
129
- * shapes.
128
+ * Is this observation a STATIC-CHECK fact? The predicate every reader that wants a static check's
129
+ * OWN fields — its runnable handle, its `exists`, its `enforcedOverRealSource` — asks.
130
130
  *
131
- * Keyed on `measured` rather than on a kind field, because the field IS the difference: a static
132
- * observation carries facts about the tree, a measured one carries a number. Adding a tag field
133
- * would put the same distinction in two places, free to disagree.
134
- */
135
- export function isMeasuredObservation(observation) {
136
- return observation.qualityCheck === "lint" && "measured" in observation;
137
- }
138
- /**
139
- * Is this observation a STATIC-CHECK fact? The complement of `isMeasuredObservation` within the
140
- * `lint` quality-check, and the predicate every reader that wants a static check's OWN fields — its
141
- * runnable
142
- * handle, its `exists`, its `enforcedOverRealSource` — should ask.
143
- *
144
- * It exists so those readers state which of the two they mean instead of inheriting an answer from
145
- * `qualityCheck === "lint"`, which stopped being a single interface when the measured member joined
146
- * (@SCN-CIP-003).
131
+ * It outlived the measured member it was written to tell apart from (3F-3516): the `lint`
132
+ * quality-check is a single interface again, so this is the quality-check clause alone, and its
133
+ * readers keep naming what they mean rather than spelling `qualityCheck === "lint"` at each site.
147
134
  */
148
135
  export function isStaticCheckObservation(observation) {
149
- return observation.qualityCheck === "lint" && !("measured" in observation);
136
+ return observation.qualityCheck === "lint";
150
137
  }
151
138
  //# sourceMappingURL=journal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"journal.js","sourceRoot":"","sources":["../../src/domain/journal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAoGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAM,UAAU,yBAAyB,CAAC,SAA8B;IACtE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,mBAAmB,EAAE,CAAC;YACtD,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI;gBAAE,SAAS,CAAC,6BAA6B;YACxE,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;QACxG,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAa,EACb,YAAsC,EACtC,QAA4B;IAE5B,OAAO,YAAY,KAAK,MAAM;QAC5B,CAAC,CAAC,GAAG,KAAK,SAAS,QAAQ,EAAE;QAC7B,CAAC,CAAC,GAAG,KAAK,IAAI,YAAY,EAAE,CAAC;AACjC,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,qBAAqB,CACnC,mBAAkD;IAElD,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACzE,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAAC,QAAkB;IAC/C,OAAO,QAAQ,CAAC,mBAAmB;SAChC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;SAC1C,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AACtE,CAAC;AA2QD;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,WAAgC;IAEhC,OAAO,WAAW,CAAC,YAAY,KAAK,MAAM,IAAI,UAAU,IAAI,WAAW,CAAC;AAC1E,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,wBAAwB,CACtC,WAAgC;IAEhC,OAAO,WAAW,CAAC,YAAY,KAAK,MAAM,IAAI,CAAC,CAAC,UAAU,IAAI,WAAW,CAAC,CAAC;AAC7E,CAAC"}
1
+ {"version":3,"file":"journal.js","sourceRoot":"","sources":["../../src/domain/journal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA4DH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAM,UAAU,yBAAyB,CAAC,SAA8B;IACtE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,mBAAmB,EAAE,CAAC;YACtD,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI;gBAAE,SAAS,CAAC,6BAA6B;YACxE,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;QACxG,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAa,EACb,YAAsC,EACtC,QAA4B;IAE5B,OAAO,YAAY,KAAK,MAAM;QAC5B,CAAC,CAAC,GAAG,KAAK,SAAS,QAAQ,EAAE;QAC7B,CAAC,CAAC,GAAG,KAAK,IAAI,YAAY,EAAE,CAAC;AACjC,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,qBAAqB,CACnC,mBAAkD;IAElD,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACzE,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAAC,QAAkB;IAC/C,OAAO,QAAQ,CAAC,mBAAmB;SAChC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;SAC1C,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AACtE,CAAC;AAyOD;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CACtC,WAAgC;IAEhC,OAAO,WAAW,CAAC,YAAY,KAAK,MAAM,CAAC;AAC7C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../../src/domain/ledger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../../src/domain/ledger.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,6 @@
7
7
  // The row-level static-check cut (3F-2203) — the Ledger-wide lint list is built ON it, so the
8
8
  // obligation-side rule is stated once, at the row.
9
9
  import { staticCheckReconciliationsOf, isScenario } from "./scenarioReconciliation.js";
10
- import { isMeasuredObservation } from "./journal.js";
11
10
  /**
12
11
  * The WHOLE-RUN verdict — is the ENTIRE reconciliation balanced? A pure domain
13
12
  * derivation over the WHOLE `Ledger`: balanced IFF NO reconciling
@@ -162,6 +161,27 @@ const QUALITY_CHECK_ORDER = ["lint", "unit", "integration", "e2e", "performance"
162
161
  * `staticChecks`) are not Ledger-pure and are merged in by the assembler.
163
162
  */
164
163
  export function ledgerTally(balance) {
164
+ const { scenarioReconciliations, pending } = scenarioReconciliationTally(balance);
165
+ return {
166
+ scenarioReconciliations,
167
+ evidenceObligations: evidenceObligationTotals(balance),
168
+ // The Pending Items tally (@SCN-PND-011) — its OWN summary count, SEPARATE from the
169
+ // scenario verdict counts and the evidence-obligation counts. A Pending Item is deferred,
170
+ // not out-of-balance, so it is never one of the `OUT_OF_BALANCE_OUTCOMES` (never a `byOutcome`
171
+ // leaf of its own, at any leaf count). Always present (a pure balance derive, like `lint`);
172
+ // reads 0 when no scenario raises a pending obligation.
173
+ pending,
174
+ // The static-only lint tally (RMD-005) — replicates markdown's `countStaticEvidenceObligations`
175
+ // (static evidenceObligations balanced / total). Always present (a pure balance derive); `byOutcome`
176
+ // is kind-agnostic and cannot evidenceObservations this static-only cut.
177
+ lint: lintTally(balance),
178
+ };
179
+ }
180
+ /**
181
+ * The row-level half of `ledgerTally` — the Scenario Reconciliation verdict totals and the
182
+ * Pending Items count, both read off one pass over the rows.
183
+ */
184
+ function scenarioReconciliationTally(balance) {
165
185
  // The headline verdict tally counts EVERY Scenario Reconciliation (@SCN-RMD-001, 3F-1724):
166
186
  // the summary is the totals over ALL rows (double-entry-manifesto), and phantom / suspense
167
187
  // reconciliations are ALWAYS out-of-balance, so they count into the tally like any other row.
@@ -176,7 +196,7 @@ export function ledgerTally(balance) {
176
196
  // scenarios-carrying-pending (a scenario may raise several), mirroring the out-of-balance
177
197
  // decomposition, which counts obligations, not scenarios. A Pending Item is a structurally
178
198
  // distinct category (never a reconciling item / evidence obligation), so it is tallied
179
- // SEPARATELY here — never folded into `byOutcome` (the out-of-balance leaves) below.
199
+ // SEPARATELY here — never folded into `byOutcome` (the out-of-balance leaves).
180
200
  let pending = 0;
181
201
  for (const s of balance.scenarioReconciliations) {
182
202
  // Pending Items ride every row's `pendingItems` (only scenario rows carry them; a
@@ -193,6 +213,25 @@ export function ledgerTally(balance) {
193
213
  suspense++;
194
214
  verdict[s.verdict]++;
195
215
  }
216
+ return {
217
+ scenarioReconciliations: {
218
+ // Every row's verdict is tallied, so this IS the count of all Scenario Reconciliations
219
+ // (scenario + phantom + suspense) — the manifesto's "the summary is the totals".
220
+ total: verdict.balanced + verdict["out-of-balance"],
221
+ balanced: verdict.balanced,
222
+ outOfBalance: verdict["out-of-balance"],
223
+ // Sub-counts: a breakdown OF the totals above (scenario = total − phantom − suspense).
224
+ phantom,
225
+ suspense,
226
+ },
227
+ pending,
228
+ };
229
+ }
230
+ /**
231
+ * The obligation-level half of `ledgerTally` — every Quality Check Reconciliation tallied by
232
+ * outcome, with the `missing` ones split by quality-check.
233
+ */
234
+ function evidenceObligationTotals(balance) {
196
235
  // byOutcome tallies EVERY Quality Check Reconciliation across ALL rows (scenario AND
197
236
  // phantom), so `cites-unknown-scenario` reflects the real phantom count.
198
237
  const byOutcome = {
@@ -231,32 +270,10 @@ export function ledgerTally(balance) {
231
270
  }
232
271
  const total = Object.values(byOutcome).reduce((a, b) => a + b, 0);
233
272
  return {
234
- scenarioReconciliations: {
235
- // Every row's verdict is tallied, so this IS the count of all Scenario Reconciliations
236
- // (scenario + phantom + suspense) — the manifesto's "the summary is the totals".
237
- total: verdict.balanced + verdict["out-of-balance"],
238
- balanced: verdict.balanced,
239
- outOfBalance: verdict["out-of-balance"],
240
- // Sub-counts: a breakdown OF the totals above (scenario = total − phantom − suspense).
241
- phantom,
242
- suspense,
243
- },
244
- evidenceObligations: {
245
- total,
246
- byOutcome,
247
- outOfBalance: total - byOutcome.satisfied,
248
- missingByQualityCheck: QUALITY_CHECK_ORDER.filter((s) => (missing.get(s) ?? 0) > 0).map((subject) => ({ subject, count: missing.get(subject) })),
249
- },
250
- // The Pending Items tally (@SCN-PND-011) — its OWN summary count, SEPARATE from the
251
- // scenario verdict counts and the evidence-obligation counts. A Pending Item is deferred,
252
- // not out-of-balance, so it is never one of the `OUT_OF_BALANCE_OUTCOMES` (never a `byOutcome`
253
- // leaf of its own, at any leaf count). Always present (a pure balance derive, like `lint`);
254
- // reads 0 when no scenario raises a pending obligation.
255
- pending,
256
- // The static-only lint tally (RMD-005) — replicates markdown's `countStaticEvidenceObligations`
257
- // (static evidenceObligations balanced / total). Always present (a pure balance derive); `byOutcome`
258
- // is kind-agnostic and cannot evidenceObservations this static-only cut.
259
- lint: lintTally(balance),
273
+ total,
274
+ byOutcome,
275
+ outOfBalance: total - byOutcome.satisfied,
276
+ missingByQualityCheck: QUALITY_CHECK_ORDER.filter((s) => (missing.get(s) ?? 0) > 0).map((subject) => ({ subject, count: missing.get(subject) })),
260
277
  };
261
278
  }
262
279
  /**
@@ -402,12 +419,6 @@ export function staticObservationTally(ledger) {
402
419
  // credit (the uncited/broken ones the suspense row also holds) is not a static observation.
403
420
  if (obs.qualityCheck !== "lint")
404
421
  continue;
405
- // A MEASUREMENT rides the same axis and is not a static check (@SCN-CIP-003): nothing read a
406
- // manifest or a workflow for it, so it is neither a running static check nor an uncited one.
407
- // Counting it in either tally would report a static-analysis population this tree does not
408
- // have — the parallel-store fault the Ledger folds exist to foreclose.
409
- if (isMeasuredObservation(obs))
410
- continue;
411
422
  // A BROKEN CREDIT IS NEITHER COUNT (@SCN-LNT-026). It reaches the suspense row for a reason
412
423
  // the uncited count does not name: the check DID have a scenario naming it, and it did not
413
424
  // run. Counting it as uncited would report a check nobody named, sending the reader to write
@@ -1 +1 @@
1
- {"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/domain/ledger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/domain/ledger.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"posting.d.ts","sourceRoot":"","sources":["../../src/domain/posting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAEV,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACzB,MAAM,cAAc,CAAC;AAOtB;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,OAAO;AACjB,iFAAiF;AAC/E;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AACrC,qFAAqF;GACnF;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAC7C;;;;;;;;GAQG;GACD;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,eAAe,GAAG,qCAAqC,CAAA;CAAE,CAAC;AAE9G,6FAA6F;AAC7F,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,eAAe,CAAA;CAAE,CAAC;AAEtE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,qCAAqC,CAAA;CAAE,CAAC;AAE5F;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,SAAS,CACvB,WAAW,EAAE,0BAA0B,EACvC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,GAC/B,cAAc,CAAC;AAClB,wBAAgB,SAAS,CACvB,WAAW,EAAE,wBAAwB,EACrC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,GAC/B,kBAAkB,CAAC;AACtB,wBAAgB,SAAS,CACvB,WAAW,EAAE,mBAAmB,EAChC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,GAC/B,OAAO,CAAC"}
1
+ {"version":3,"file":"posting.d.ts","sourceRoot":"","sources":["../../src/domain/posting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAEV,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACzB,MAAM,cAAc,CAAC;AAMtB;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,OAAO;AACjB,iFAAiF;AAC/E;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AACrC,qFAAqF;GACnF;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAC7C;;;;;;;;GAQG;GACD;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,eAAe,GAAG,qCAAqC,CAAA;CAAE,CAAC;AAE9G,6FAA6F;AAC7F,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,eAAe,CAAA;CAAE,CAAC;AAEtE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,qCAAqC,CAAA;CAAE,CAAC;AAE5F;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,SAAS,CACvB,WAAW,EAAE,0BAA0B,EACvC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,GAC/B,cAAc,CAAC;AAClB,wBAAgB,SAAS,CACvB,WAAW,EAAE,wBAAwB,EACrC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,GAC/B,kBAAkB,CAAC;AACtB,wBAAgB,SAAS,CACvB,WAAW,EAAE,mBAAmB,EAChC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,GAC/B,OAAO,CAAC"}
@@ -27,9 +27,8 @@
27
27
  * A credit posts to its row whatever outcome it later earns — or none at all. The outcome rules
28
28
  * are the sibling concepts' (`qualityCheckReconciliation`, `scenarioReconciliation`).
29
29
  */
30
- // The union's OWN sub-discriminator over the `lint` quality-check (@SCN-CIP-003) — asked rather
31
- // than a hand-written shape test, so this rule classes an observation exactly as the reconciler
32
- // does.
30
+ // The union's OWN predicate over the `lint` quality-check — asked rather than a hand-written shape
31
+ // test, so this rule classes an observation exactly as the reconciler does.
33
32
  // A value import, hence its own statement beside the type-only one above.
34
33
  import { isStaticCheckObservation } from "./journal.js";
35
34
  export function postingOf(observation, scenarioIds) {
@@ -40,10 +39,8 @@ export function postingOf(observation, scenarioIds) {
40
39
  // to a phantom one — and so can neither discharge nor fail the obligation it cites. The
41
40
  // observation MAY carry an `scnId` and a `checkTag`, and does; both are ignored here.
42
41
  //
43
- // THE SUB-DISCRIMINATOR IS PART OF THE TEST BECAUSE THE AXIS CARRIES TWO SHAPES (@SCN-CIP-003):
44
- // only a static-check observation has the flag at all — a measurement is a number, and a
45
- // number that never arrived is an absence rather than a broken proof — so asking through the
46
- // union's own predicate is what stops this reaching for a field its sibling does not have.
42
+ // Asked through the union's own predicate, so this rule and the reconciler class a static-check
43
+ // observation the same way.
47
44
  if (isStaticCheckObservation(observation) && observation.broken === true) {
48
45
  return { kind: "suspense-scenario", posted: "broken" };
49
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"posting.js","sourceRoot":"","sources":["../../src/domain/posting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAQH,gGAAgG;AAChG,gGAAgG;AAChG,QAAQ;AACR,0EAA0E;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AA8FxD,MAAM,UAAU,SAAS,CACvB,WAAgC,EAChC,WAAgC;IAEhC,IAAI,WAAW,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;QACxC,4FAA4F;QAC5F,6FAA6F;QAC7F,6FAA6F;QAC7F,wFAAwF;QACxF,sFAAsF;QACtF,EAAE;QACF,gGAAgG;QAChG,yFAAyF;QACzF,6FAA6F;QAC7F,2FAA2F;QAC3F,IAAI,wBAAwB,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACzE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QACzD,CAAC;QACD,8FAA8F;QAC9F,2FAA2F;QAC3F,4FAA4F;QAC5F,6FAA6F;QAC7F,6FAA6F;QAC7F,oDAAoD;QACpD,IAAI,WAAW,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC;gBACvC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE;gBAChD,CAAC,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC;QAC7D,CAAC;QACD,8FAA8F;QAC9F,4FAA4F;QAC5F,wFAAwF;QACxF,uFAAuF;QACvF,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,qCAAqC,EAAE,CAAC;IACtF,CAAC;IACD,gGAAgG;IAChG,oFAAoF;IACpF,IAAI,WAAW,CAAC,MAAM,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACxF,IAAI,WAAW,CAAC,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IAC9F,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC;IAChE,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"posting.js","sourceRoot":"","sources":["../../src/domain/posting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAQH,mGAAmG;AACnG,4EAA4E;AAC5E,0EAA0E;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AA8FxD,MAAM,UAAU,SAAS,CACvB,WAAgC,EAChC,WAAgC;IAEhC,IAAI,WAAW,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;QACxC,4FAA4F;QAC5F,6FAA6F;QAC7F,6FAA6F;QAC7F,wFAAwF;QACxF,sFAAsF;QACtF,EAAE;QACF,gGAAgG;QAChG,4BAA4B;QAC5B,IAAI,wBAAwB,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACzE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QACzD,CAAC;QACD,8FAA8F;QAC9F,2FAA2F;QAC3F,4FAA4F;QAC5F,6FAA6F;QAC7F,6FAA6F;QAC7F,oDAAoD;QACpD,IAAI,WAAW,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC;gBACvC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE;gBAChD,CAAC,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC;QAC7D,CAAC;QACD,8FAA8F;QAC9F,4FAA4F;QAC5F,wFAAwF;QACxF,uFAAuF;QACvF,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,qCAAqC,EAAE,CAAC;IACtF,CAAC;IACD,gGAAgG;IAChG,oFAAoF;IACpF,IAAI,WAAW,CAAC,MAAM,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACxF,IAAI,WAAW,CAAC,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IAC9F,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC;IAChE,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC;AACxD,CAAC"}
@@ -7,8 +7,13 @@
7
7
  * where it belongs. The split is what makes the mutate exclusion honest — "do not mutate this
8
8
  * file" is defensible over a table of sentences and indefensible over anything that decides
9
9
  * something. A render helper parked here would leave the deciding logic unmutated too, and the
10
- * exclusion would then hide more than the prose it was granted for. (@SCN-MSG-002, 3F-2873, reads
11
- * the real stryker config back and reds if the exclusion names anything wider than this file.)
10
+ * exclusion would then hide more than the prose it was granted for. NOTHING NOW ASSERTS THAT IT
11
+ * DOES NOT: a check read the real stryker config back and redded on an exclusion that had widened,
12
+ * until 3F-3490 retired it as a claim about our own configuration rather than about the product.
13
+ * @SCN-MSG-002 keeps the half that IS about the product — every code renders a non-blank message
14
+ * carrying its own fault's parameters, proved in `qualityCheckFaultMessages.test.ts` beside this
15
+ * file — and the widened-exclusion residual is stated in `features/message-catalogue.feature`'s
16
+ * preamble, where the next reader of the exclusion meets it.
12
17
  *
13
18
  * TOTALITY IS NOT ASSERTED, IT IS UNCONSTRUCTIBLE. `QualityCheckFaultMessages` is a mapped type
14
19
  * over the code union, so the compiler refuses both a code with no message AND a message reaching
@@ -1 +1 @@
1
- {"version":3,"file":"qualityCheckFaultMessages.d.ts","sourceRoot":"","sources":["../../src/domain/qualityCheckFaultMessages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,EAAE,CAAC,IAAI,qBAAqB,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,iBAAiB,EAAE;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,KAAK,MAAM;CAClG,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,yBAS1C,CAAC"}
1
+ {"version":3,"file":"qualityCheckFaultMessages.d.ts","sourceRoot":"","sources":["../../src/domain/qualityCheckFaultMessages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,EAAE,CAAC,IAAI,qBAAqB,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,iBAAiB,EAAE;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,KAAK,MAAM;CAClG,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,yBAS1C,CAAC"}
@@ -7,8 +7,13 @@
7
7
  * where it belongs. The split is what makes the mutate exclusion honest — "do not mutate this
8
8
  * file" is defensible over a table of sentences and indefensible over anything that decides
9
9
  * something. A render helper parked here would leave the deciding logic unmutated too, and the
10
- * exclusion would then hide more than the prose it was granted for. (@SCN-MSG-002, 3F-2873, reads
11
- * the real stryker config back and reds if the exclusion names anything wider than this file.)
10
+ * exclusion would then hide more than the prose it was granted for. NOTHING NOW ASSERTS THAT IT
11
+ * DOES NOT: a check read the real stryker config back and redded on an exclusion that had widened,
12
+ * until 3F-3490 retired it as a claim about our own configuration rather than about the product.
13
+ * @SCN-MSG-002 keeps the half that IS about the product — every code renders a non-blank message
14
+ * carrying its own fault's parameters, proved in `qualityCheckFaultMessages.test.ts` beside this
15
+ * file — and the widened-exclusion residual is stated in `features/message-catalogue.feature`'s
16
+ * preamble, where the next reader of the exclusion meets it.
12
17
  *
13
18
  * TOTALITY IS NOT ASSERTED, IT IS UNCONSTRUCTIBLE. `QualityCheckFaultMessages` is a mapped type
14
19
  * over the code union, so the compiler refuses both a code with no message AND a message reaching
@@ -1 +1 @@
1
- {"version":3,"file":"qualityCheckFaultMessages.js","sourceRoot":"","sources":["../../src/domain/qualityCheckFaultMessages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,qBAAqB,EAA0B,MAAM,wBAAwB,CAAC;AAavF;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAA8B;IACrE,CAAC,qBAAqB,CAAC,+BAA+B,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CACjE,iEAAiE,KAAK,CAAC,OAAO,iBAAiB;QAC/F,0CAA0C,KAAK,CAAC,QAAQ,eAAe;QACvE,GAAG,KAAK,CAAC,MAAM,GAAG;IACpB,CAAC,qBAAqB,CAAC,gCAAgC,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAClE,iEAAiE,KAAK,CAAC,OAAO,iBAAiB;QAC/F,4CAA4C,KAAK,CAAC,QAAQ,eAAe;QACzE,GAAG,KAAK,CAAC,MAAM,GAAG;CACrB,CAAC"}
1
+ {"version":3,"file":"qualityCheckFaultMessages.js","sourceRoot":"","sources":["../../src/domain/qualityCheckFaultMessages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,qBAAqB,EAA0B,MAAM,wBAAwB,CAAC;AAavF;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAA8B;IACrE,CAAC,qBAAqB,CAAC,+BAA+B,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CACjE,iEAAiE,KAAK,CAAC,OAAO,iBAAiB;QAC/F,0CAA0C,KAAK,CAAC,QAAQ,eAAe;QACvE,GAAG,KAAK,CAAC,MAAM,GAAG;IACpB,CAAC,qBAAqB,CAAC,gCAAgC,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAClE,iEAAiE,KAAK,CAAC,OAAO,iBAAiB;QAC/F,4CAA4C,KAAK,CAAC,QAAQ,eAAe;QACzE,GAAG,KAAK,CAAC,MAAM,GAAG;CACrB,CAAC"}
@@ -279,5 +279,26 @@ export declare function noScnCodeReconciliations(): QualityCheckReconciliation[]
279
279
  * is the ROW's, and lives on `scenarioReconciliation` (`qualityCheckReconciliationsOf`).
280
280
  */
281
281
  export declare function bothMissingReconciliation(): QualityCheckReconciliation;
282
+ /**
283
+ * The item on the row a CONFIGURED ROW WITH NO SCENARIO earns (@SCN-LNT-027, 3F-3472) — canon's
284
+ * `missing`: Obligation Exists, Observation None.
285
+ *
286
+ * NO NEW OUTCOME, AND THAT IS THE ARGUMENT RATHER THAN THE CONVENIENCE. A row the manifest declares
287
+ * and no scenario specifies is a debit nothing observed, which is what `missing` already means and
288
+ * what `features/fitness-checks.feature` promises in those words. Minting a fourth corpus-shape
289
+ * outcome would put a second sentence beside a row canon already has a sentence for.
290
+ *
291
+ * THE OBLIGATION IS THE ROW'S OWN, and it is REAL — `{ qualityCheck: "lint", staticCheck: <the
292
+ * characteristic> }`, the same shape a converted scenario raises. That is what separates this from
293
+ * the uncoded-work item beside it: THAT one synthesises an empty `{}` because an untagged scenario
294
+ * names no check at all, and this row names exactly one. So the row posts it as a debit too, and
295
+ * the summary counts the obligation the manifest raised.
296
+ *
297
+ * NOTHING HERE CAN DISCHARGE IT, and that is structural rather than asserted: no observation is
298
+ * offered to this item at all, and the minted row's `@SCN` is not a member of the set the citation
299
+ * router posts credits against. A credit citing the row's code still mints a phantom row
300
+ * (@SCN-LNT-009); there is no route by which it reaches this one.
301
+ */
302
+ export declare function unspecifiedRowReconciliations(characteristic: string): QualityCheckReconciliation[];
282
303
  export {};
283
304
  //# sourceMappingURL=qualityCheckReconciliation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"qualityCheckReconciliation.d.ts","sourceRoot":"","sources":["../../src/domain/qualityCheckReconciliation.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,0BAA0B,EAE1B,0BAA0B,EAC3B,MAAM,cAAc,CAAC;AAStB;;;;;;;GAOG;AACH,MAAM,MAAM,OAAO,GACf,WAAW,GACX,SAAS,GACT,YAAY,GAGZ,SAAS,GAIT,wBAAwB,GAExB,mBAAmB,GAGnB,QAAQ,GAQR,wBAAwB,GAOxB,aAAa,GAOb,cAAc,CAAC;AASnB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CA4BvD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,OAAO,EAER,CAAC;AAE/C;;;;;;;;GAQG;AACH,OAAO,CAAC,MAAM,+BAA+B,EAAE,OAAO,MAAM,CAAC;AAE7D;;;;;;;;GAQG;AACH,UAAU,gCAAgC;IACxC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;;;;;;;;OAYG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC;;;;;;;;;;;;;OAaG;IACH,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,0BAA0B,GAAG,gCAAgC,GAAG;IAC1E,QAAQ,CAAC,CAAC,+BAA+B,CAAC,EAAE,OAAO,+BAA+B,CAAC;CACpF,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE7C;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CACvC,OAAO,EACP;IAAE,UAAU,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,YAAY,CAAA;CAAE,CAYxD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,gCAAgC,GACvC,0BAA0B,CAuB5B;AAsOD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,kBAAkB,EACvB,oBAAoB,EAAE,mBAAmB,EAAE,GAC1C,0BAA0B,CA6E5B;AA+CD;;;;;;;;;;;GAWG;AACH,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,SAAS,mBAAmB,EAAE,EAC7C,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAAC,GAC3C,0BAA0B,EAAE,CA6B9B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qCAAqC,CACnD,OAAO,EAAE,SAAS,mBAAmB,EAAE,GACtC,0BAA0B,EAAE,CAmB9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,SAAS,CAAC,0BAA0B,GAAG,wBAAwB,CAAC,EAAE,EAClF,OAAO,EAAE,SAAS,0BAA0B,EAAE,EAC9C,0BAA0B,EAAE,SAAS,0BAA0B,EAAE,GAChE,0BAA0B,EAAE,CA+B9B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,IAAI,0BAA0B,EAAE,CAEvE;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,IAAI,0BAA0B,CAEtE"}
1
+ {"version":3,"file":"qualityCheckReconciliation.d.ts","sourceRoot":"","sources":["../../src/domain/qualityCheckReconciliation.ts"],"names":[],"mappings":"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"}