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

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 (120) hide show
  1. package/README.md +3 -1
  2. package/dist/assemble/evidenceReconciliationFromSources.d.ts +4 -13
  3. package/dist/assemble/evidenceReconciliationFromSources.d.ts.map +1 -1
  4. package/dist/assemble/evidenceReconciliationFromSources.js +17 -22
  5. package/dist/assemble/evidenceReconciliationFromSources.js.map +1 -1
  6. package/dist/domain/checkCharacteristics.d.ts +22 -15
  7. package/dist/domain/checkCharacteristics.d.ts.map +1 -1
  8. package/dist/domain/checkCharacteristics.js +22 -15
  9. package/dist/domain/checkCharacteristics.js.map +1 -1
  10. package/dist/domain/evidenceReconciliation.d.ts +26 -2
  11. package/dist/domain/evidenceReconciliation.d.ts.map +1 -1
  12. package/dist/domain/evidenceReconciliation.js +164 -61
  13. package/dist/domain/evidenceReconciliation.js.map +1 -1
  14. package/dist/domain/fitnessChecks.d.ts +24 -35
  15. package/dist/domain/fitnessChecks.d.ts.map +1 -1
  16. package/dist/domain/fitnessChecks.js +3 -30
  17. package/dist/domain/fitnessChecks.js.map +1 -1
  18. package/dist/domain/journal.d.ts +13 -103
  19. package/dist/domain/journal.d.ts.map +1 -1
  20. package/dist/domain/journal.js +6 -19
  21. package/dist/domain/journal.js.map +1 -1
  22. package/dist/domain/ledger.d.ts.map +1 -1
  23. package/dist/domain/ledger.js +45 -34
  24. package/dist/domain/ledger.js.map +1 -1
  25. package/dist/domain/posting.d.ts.map +1 -1
  26. package/dist/domain/posting.js +4 -7
  27. package/dist/domain/posting.js.map +1 -1
  28. package/dist/domain/qualityCheckFaultMessages.d.ts +7 -2
  29. package/dist/domain/qualityCheckFaultMessages.d.ts.map +1 -1
  30. package/dist/domain/qualityCheckFaultMessages.js +7 -2
  31. package/dist/domain/qualityCheckFaultMessages.js.map +1 -1
  32. package/dist/domain/qualityCheckReconciliation.d.ts +21 -0
  33. package/dist/domain/qualityCheckReconciliation.d.ts.map +1 -1
  34. package/dist/domain/qualityCheckReconciliation.js +40 -105
  35. package/dist/domain/qualityCheckReconciliation.js.map +1 -1
  36. package/dist/domain/qualityCheckReconciliationFault.d.ts +3 -1
  37. package/dist/domain/qualityCheckReconciliationFault.d.ts.map +1 -1
  38. package/dist/domain/qualityCheckReconciliationFault.js +3 -1
  39. package/dist/domain/qualityCheckReconciliationFault.js.map +1 -1
  40. package/dist/index.d.ts +0 -1
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +0 -1
  43. package/dist/index.js.map +1 -1
  44. package/dist/internal.d.ts +2 -10
  45. package/dist/internal.d.ts.map +1 -1
  46. package/dist/internal.js +24 -71
  47. package/dist/internal.js.map +1 -1
  48. package/dist/parse/checkScriptsRunInCI.d.ts +8 -7
  49. package/dist/parse/checkScriptsRunInCI.d.ts.map +1 -1
  50. package/dist/parse/checkScriptsRunInCI.js +7 -6
  51. package/dist/parse/checkScriptsRunInCI.js.map +1 -1
  52. package/dist/parse/ciStepRecord.d.ts +5 -17
  53. package/dist/parse/ciStepRecord.d.ts.map +1 -1
  54. package/dist/parse/ciStepRecord.js +7 -27
  55. package/dist/parse/ciStepRecord.js.map +1 -1
  56. package/dist/parse/corpusCodeFaults.d.ts +4 -4
  57. package/dist/parse/corpusCodeFaults.js +4 -4
  58. package/dist/parse/corpusFaults.d.ts +24 -36
  59. package/dist/parse/corpusFaults.d.ts.map +1 -1
  60. package/dist/parse/corpusFaults.js +16 -32
  61. package/dist/parse/corpusFaults.js.map +1 -1
  62. package/dist/parse/corpusGrammarFaults.d.ts +11 -73
  63. package/dist/parse/corpusGrammarFaults.d.ts.map +1 -1
  64. package/dist/parse/corpusGrammarFaults.js +27 -58
  65. package/dist/parse/corpusGrammarFaults.js.map +1 -1
  66. package/dist/parse/runningStaticChecks.d.ts +3 -2
  67. package/dist/parse/runningStaticChecks.d.ts.map +1 -1
  68. package/dist/parse/runningStaticChecks.js +3 -2
  69. package/dist/parse/runningStaticChecks.js.map +1 -1
  70. package/dist/parse/scenarios.d.ts +27 -12
  71. package/dist/parse/scenarios.d.ts.map +1 -1
  72. package/dist/parse/scenarios.js +47 -85
  73. package/dist/parse/scenarios.js.map +1 -1
  74. package/dist/parse/targetCorpus.d.ts +21 -11
  75. package/dist/parse/targetCorpus.d.ts.map +1 -1
  76. package/dist/parse/targetCorpus.js +16 -19
  77. package/dist/parse/targetCorpus.js.map +1 -1
  78. package/dist/parse/targetManifest.d.ts +10 -85
  79. package/dist/parse/targetManifest.d.ts.map +1 -1
  80. package/dist/parse/targetManifest.js +47 -137
  81. package/dist/parse/targetManifest.js.map +1 -1
  82. package/dist/provenance/provenance.d.ts +8 -11
  83. package/dist/provenance/provenance.d.ts.map +1 -1
  84. package/dist/provenance/provenance.js +2 -3
  85. package/dist/provenance/provenance.js.map +1 -1
  86. package/dist/render/evidenceGrid.d.ts +45 -0
  87. package/dist/render/evidenceGrid.d.ts.map +1 -0
  88. package/dist/render/evidenceGrid.js +145 -0
  89. package/dist/render/evidenceGrid.js.map +1 -0
  90. package/dist/render/markdown.d.ts.map +1 -1
  91. package/dist/render/markdown.js +85 -190
  92. package/dist/render/markdown.js.map +1 -1
  93. package/dist/render/runVerdict.d.ts +3 -2
  94. package/dist/render/runVerdict.d.ts.map +1 -1
  95. package/dist/render/runVerdict.js +3 -2
  96. package/dist/render/runVerdict.js.map +1 -1
  97. package/dist/render/staticChecks.d.ts.map +1 -1
  98. package/dist/render/staticChecks.js +10 -1
  99. package/dist/render/staticChecks.js.map +1 -1
  100. package/package.json +1 -1
  101. package/dist/domain/thresholds.d.ts +0 -123
  102. package/dist/domain/thresholds.d.ts.map +0 -1
  103. package/dist/domain/thresholds.js +0 -185
  104. package/dist/domain/thresholds.js.map +0 -1
  105. package/dist/parse/checkStaticEvidenceObligations.d.ts +0 -32
  106. package/dist/parse/checkStaticEvidenceObligations.d.ts.map +0 -1
  107. package/dist/parse/checkStaticEvidenceObligations.js +0 -78
  108. package/dist/parse/checkStaticEvidenceObligations.js.map +0 -1
  109. package/dist/parse/corpusClaimFaults.d.ts +0 -104
  110. package/dist/parse/corpusClaimFaults.d.ts.map +0 -1
  111. package/dist/parse/corpusClaimFaults.js +0 -128
  112. package/dist/parse/corpusClaimFaults.js.map +0 -1
  113. package/dist/parse/measurements.d.ts +0 -47
  114. package/dist/parse/measurements.d.ts.map +0 -1
  115. package/dist/parse/measurements.js +0 -65
  116. package/dist/parse/measurements.js.map +0 -1
  117. package/dist/render/measuredItem.d.ts +0 -30
  118. package/dist/render/measuredItem.d.ts.map +0 -1
  119. package/dist/render/measuredItem.js +0 -43
  120. package/dist/render/measuredItem.js.map +0 -1
@@ -1,12 +1,11 @@
1
1
  /**
2
- * The TARGET's feature corpus read into the two readings one reconciliation needs — moved here
3
- * from the app's ingest edge (3F-3088).
2
+ * The TARGET's feature corpus read into the readings one reconciliation needs — moved here from
3
+ * the app's ingest edge (3F-3088).
4
4
  *
5
5
  * WHY IT LIVES IN THE ENGINE. Every line of it is a pure function of sources somebody else already
6
- * read off disk: the obligation rule and the measured-tag union are `parseScenarios` and
7
- * `measuredCheckTags`, both core's own. Sitting at the app edge it was the reason a PUBLISHED
8
- * module imported core's unpublished `/internal` subpath for five symbols — the fault 3F-3086
9
- * repairs. One line made it impure and it was the only one: the feature discovery, which now
6
+ * read off disk: the obligation rule is `parseScenarios`, core's own. Sitting at the app edge it
7
+ * was the reason a PUBLISHED module imported core's unpublished `/internal` subpath for five
8
+ * symbols — the fault 3F-3086 repairs. One line made it impure and it was the only one: the feature discovery, which now
10
9
  * happens at the edge and arrives as `sources`.
11
10
  *
12
11
  * THE REGISTRY-KEYED READING THIS FILE ONCE ALSO PRODUCED — `checkHandles` and `citedScn`, the
@@ -15,14 +14,13 @@
15
14
  * (`citedRow`, below) or is a converted `@fitness` row read through `domain/fitnessChecks`
16
15
  * directly; there is no second discovery left to key a handle set off.
17
16
  */
18
- import type { FitnessCheckIndex } from "../domain/fitnessChecks.js";
19
- import { type ThresholdIndex } from "../domain/thresholds.js";
17
+ import type { FitnessCheckIndex, UnspecifiedFitnessRow } from "../domain/fitnessChecks.js";
20
18
  import { type ScriptCitation } from "./fitnessCitations.js";
21
19
  import type { Scenario } from "../model.js";
22
20
  /**
23
21
  * The target's feature corpus as ONE run reads it — the obligations it raises, the `@SCN` a run
24
- * whose CI step states a code cites, and the scenarios on the fitness axis no configured row
25
- * names.
22
+ * whose CI step states a code cites, the scenarios on the fitness axis no configured row names,
23
+ * and the configured rows the corpus carries no scenario for.
26
24
  *
27
25
  * THE READINGS ARE ONE, which is why they are produced together. All are derived from the same
28
26
  * bytes and the same configured rows, and the fault they exist to foreclose is precisely their
@@ -55,6 +53,18 @@ export interface TargetCorpus {
55
53
  * different reads — the same guarantee `citedRow` is composed here for.
56
54
  */
57
55
  unconfiguredFitnessScenarios: readonly string[];
56
+ /**
57
+ * The CONFIGURED ROWS the corpus carries no scenario for (@SCN-LNT-027, 3F-3472) — the other
58
+ * direction of the same disagreement, in manifest order, each with the characteristic its debit
59
+ * is owed at.
60
+ *
61
+ * IT IS HERE FOR THE MIRROR'S REASON AND NOT A WEAKER ONE. The corpus walk and the configured
62
+ * rows are both in hand exactly once, so the rows this names and the obligations `scenarios`
63
+ * raises are taken from ONE read of each side. Computed at the composition from `corpus.scenarios`
64
+ * it would be a second walk, free to disagree with the walk the obligations came from — which is
65
+ * the fault this whole reading exists to foreclose.
66
+ */
67
+ unspecifiedFitnessRows: readonly UnspecifiedFitnessRow[];
58
68
  }
59
69
  /**
60
70
  * THE SOURCES ARRIVE READ, AND THAT IS THE WHOLE OF WHAT MOVED. The edge discovers the target's
@@ -64,7 +74,7 @@ export interface TargetCorpus {
64
74
  * preserves that guarantee where a features directory would have re-opened the question inside the
65
75
  * engine.
66
76
  */
67
- export declare function readTargetCorpus(sources: readonly string[], deferralTags: readonly string[], thresholds: ThresholdIndex,
77
+ export declare function readTargetCorpus(sources: readonly string[], deferralTags: readonly string[],
68
78
  /**
69
79
  * The target's CONFIGURED ROWS (@SCN-LNT-018) — the CONVERTED route's half of the debit side. It
70
80
  * reaches `parseScenarios`, which raises the Evidence Obligations, and `citedRow`, which reads a
@@ -1 +1 @@
1
- {"version":3,"file":"targetCorpus.d.ts","sourceRoot":"","sources":["../../src/parse/targetCorpus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEhF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,YAAY;IAC3B,6EAA6E;IAC7E,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB;;;;;;OAMG;IACH,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,KAAK,cAAc,GAAG,IAAI,CAAC;IAClE;;;;;;;;OAQG;IACH,4BAA4B,EAAE,SAAS,MAAM,EAAE,CAAC;CACjD;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,UAAU,EAAE,cAAc;AAC1B;;;;;GAKG;AACH,aAAa,EAAE,iBAAiB,GAC/B,YAAY,CAmBd"}
1
+ {"version":3,"file":"targetCorpus.d.ts","sourceRoot":"","sources":["../../src/parse/targetCorpus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAC3F,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAOhF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,YAAY;IAC3B,6EAA6E;IAC7E,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB;;;;;;OAMG;IACH,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,KAAK,cAAc,GAAG,IAAI,CAAC;IAClE;;;;;;;;OAQG;IACH,4BAA4B,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD;;;;;;;;;;OAUG;IACH,sBAAsB,EAAE,SAAS,qBAAqB,EAAE,CAAC;CAC1D;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,YAAY,EAAE,SAAS,MAAM,EAAE;AAC/B;;;;;GAKG;AACH,aAAa,EAAE,iBAAiB,GAC/B,YAAY,CAkBd"}
@@ -1,12 +1,11 @@
1
1
  /**
2
- * The TARGET's feature corpus read into the two readings one reconciliation needs — moved here
3
- * from the app's ingest edge (3F-3088).
2
+ * The TARGET's feature corpus read into the readings one reconciliation needs — moved here from
3
+ * the app's ingest edge (3F-3088).
4
4
  *
5
5
  * WHY IT LIVES IN THE ENGINE. Every line of it is a pure function of sources somebody else already
6
- * read off disk: the obligation rule and the measured-tag union are `parseScenarios` and
7
- * `measuredCheckTags`, both core's own. Sitting at the app edge it was the reason a PUBLISHED
8
- * module imported core's unpublished `/internal` subpath for five symbols — the fault 3F-3086
9
- * repairs. One line made it impure and it was the only one: the feature discovery, which now
6
+ * read off disk: the obligation rule is `parseScenarios`, core's own. Sitting at the app edge it
7
+ * was the reason a PUBLISHED module imported core's unpublished `/internal` subpath for five
8
+ * symbols — the fault 3F-3086 repairs. One line made it impure and it was the only one: the feature discovery, which now
10
9
  * happens at the edge and arrives as `sources`.
11
10
  *
12
11
  * THE REGISTRY-KEYED READING THIS FILE ONCE ALSO PRODUCED — `checkHandles` and `citedScn`, the
@@ -15,9 +14,8 @@
15
14
  * (`citedRow`, below) or is a converted `@fitness` row read through `domain/fitnessChecks`
16
15
  * directly; there is no second discovery left to key a handle set off.
17
16
  */
18
- import { measuredCheckTags } from "../domain/thresholds.js";
19
17
  import { citationOfCitedRow } from "./fitnessCitations.js";
20
- import { parseScenarios, parseTaggedScenarios, unconfiguredFitnessScenarios } from "./scenarios.js";
18
+ import { parseScenarios, parseTaggedScenarios, unconfiguredFitnessScenarios, unspecifiedFitnessRows, } from "./scenarios.js";
21
19
  /**
22
20
  * THE SOURCES ARRIVE READ, AND THAT IS THE WHOLE OF WHAT MOVED. The edge discovers the target's
23
21
  * feature files and reads them ONCE, so the reading a citing run needs is still taken from the same
@@ -26,7 +24,7 @@ import { parseScenarios, parseTaggedScenarios, unconfiguredFitnessScenarios } fr
26
24
  * preserves that guarantee where a features directory would have re-opened the question inside the
27
25
  * engine.
28
26
  */
29
- export function readTargetCorpus(sources, deferralTags, thresholds,
27
+ export function readTargetCorpus(sources, deferralTags,
30
28
  /**
31
29
  * The target's CONFIGURED ROWS (@SCN-LNT-018) — the CONVERTED route's half of the debit side. It
32
30
  * reaches `parseScenarios`, which raises the Evidence Obligations, and `citedRow`, which reads a
@@ -34,21 +32,20 @@ export function readTargetCorpus(sources, deferralTags, thresholds,
34
32
  * which is the whole reason this reading is composed here.
35
33
  */
36
34
  fitnessChecks) {
37
- // THE OBLIGATION-RAISING TAG SET IS THE MEASURED HALF ALONE NOW (@SCN-CIP-001). The registered
38
- // half of the union retired with the registry (3F-3161): every bare check tag a stepless
39
- // scenario could carry against a registered handle is gone, and what is left is the measured
40
- // axis's own tags — a measured check has no runnable script handle, so it can never be
41
- // registered, and a corpus read against nothing else would raise nothing for it.
42
- const obligationTags = measuredCheckTags(thresholds);
43
- const scenarios = sources.flatMap((source) => parseScenarios(source, deferralTags, obligationTags, thresholds, fitnessChecks));
44
- // THE UNCONFIGURED-SCENARIO READING'S OWN WALK. Kept as its own pass over the sources — the
45
- // citation hop that once shared it retired with the registry, so there is only the one reader
46
- // left to hand it to.
35
+ // NO BARE CHECK TAG RAISES AN OBLIGATION ON A TARGET'S CORPUS. The registered half of the
36
+ // union retired with the registry (3F-3161) and the measured half with the measured axis
37
+ // (3F-3516), so the bare-tag set handed to `parseScenarios` is empty: a fitness obligation is
38
+ // raised by the axis word and a configured row, and by nothing else.
39
+ const scenarios = sources.flatMap((source) => parseScenarios(source, deferralTags, [], fitnessChecks));
40
+ // THE TAGGED WALK THE TWO CORPUS-VS-MANIFEST READINGS SHARE. Kept as its own pass over the
41
+ // sources, and handed to BOTH of them — the disagreement each names is the other's direction, so
42
+ // taking them from one walk is what stops one reading seeing a scenario the other does not.
47
43
  const tagged = sources.flatMap((source) => parseTaggedScenarios(source));
48
44
  return {
49
45
  scenarios,
50
46
  citedRow: (citedScn) => citationOfCitedRow(citedScn, fitnessChecks),
51
47
  unconfiguredFitnessScenarios: unconfiguredFitnessScenarios(tagged, fitnessChecks),
48
+ unspecifiedFitnessRows: unspecifiedFitnessRows(tagged, fitnessChecks),
52
49
  };
53
50
  }
54
51
  //# sourceMappingURL=targetCorpus.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"targetCorpus.js","sourceRoot":"","sources":["../../src/parse/targetCorpus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAE,iBAAiB,EAAuB,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAuB,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAyCpG;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAA0B,EAC1B,YAA+B,EAC/B,UAA0B;AAC1B;;;;;GAKG;AACH,aAAgC;IAEhC,+FAA+F;IAC/F,yFAAyF;IACzF,6FAA6F;IAC7F,uFAAuF;IACvF,iFAAiF;IACjF,MAAM,cAAc,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAC3C,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,CAAC,CAChF,CAAC;IACF,4FAA4F;IAC5F,8FAA8F;IAC9F,sBAAsB;IACtB,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;IACzE,OAAO;QACL,SAAS;QACT,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,kBAAkB,CAAC,QAAQ,EAAE,aAAa,CAAC;QACnE,4BAA4B,EAAE,4BAA4B,CAAC,MAAM,EAAE,aAAa,CAAC;KAClF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"targetCorpus.js","sourceRoot":"","sources":["../../src/parse/targetCorpus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,kBAAkB,EAAuB,MAAM,uBAAuB,CAAC;AAChF,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,4BAA4B,EAC5B,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAqDxB;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAA0B,EAC1B,YAA+B;AAC/B;;;;;GAKG;AACH,aAAgC;IAEhC,0FAA0F;IAC1F,yFAAyF;IACzF,8FAA8F;IAC9F,qEAAqE;IACrE,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAC3C,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,aAAa,CAAC,CACxD,CAAC;IACF,2FAA2F;IAC3F,iGAAiG;IACjG,4FAA4F;IAC5F,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;IACzE,OAAO;QACL,SAAS;QACT,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,kBAAkB,CAAC,QAAQ,EAAE,aAAa,CAAC;QACnE,4BAA4B,EAAE,4BAA4B,CAAC,MAAM,EAAE,aAAa,CAAC;QACjF,sBAAsB,EAAE,sBAAsB,CAAC,MAAM,EAAE,aAAa,CAAC;KACtE,CAAC;AACJ,CAAC"}
@@ -1,21 +1,19 @@
1
1
  /**
2
- * The TARGET's `specController.*` configuration, read into the rows, bars and mints the
2
+ * The TARGET's `specController.*` configuration, read into the rows and mints the
3
3
  * reconciler takes — the `resolve*` family, moved here from the app's ingest edge (3F-3087).
4
4
  *
5
5
  * WHY THEY LIVE IN THE ENGINE. Every one of them is a pure function of a manifest object
6
6
  * somebody else already read off disk, and every one of them is the ONE reading of the key it
7
- * names — `thresholdsOf`, `fitnessChecksOf` and `bareTerm` are all core's, so the reader and the
7
+ * names — `fitnessChecksOf` and `bareTerm` are both core's, so the reader and the
8
8
  * thing it reads through belonged on the same side of the package boundary. Sitting at the app
9
9
  * edge they were the reason a PUBLISHED module imported core's unpublished `/internal` subpath,
10
10
  * which is the fault 3F-3086 repairs; nothing about reading a parsed manifest ever needed the
11
11
  * edge that produced it.
12
12
  *
13
- * WHAT THE EDGE STILL OWES THEM, AND WHY IT IS A PARAMETER. Two of these readings depend on
13
+ * WHAT THE EDGE STILL OWES THEM, AND WHY IT IS A PARAMETER. One of these readings depends on
14
14
  * something the engine must not know: the deferral-tag STARTER SET is product policy the
15
- * application layer single-sources (`DEFAULT_DEFERRAL_TAGS`), and a bar naming a mutation gate
16
- * needs that gate's record read off the target's tree. Both arrive as arguments — the starter
17
- * set as data, the record as a `KillFloorReader` closure the edge builds — so the engine keeps
18
- * knowing nothing about files, records or ratchets (`lint:boundaries`' `core-imports-io` rule,
15
+ * application layer single-sources (`DEFAULT_DEFERRAL_TAGS`). It arrives as an argument, as data,
16
+ * so the engine keeps knowing nothing about files (`lint:boundaries`' `core-imports-io` rule,
19
17
  * which was @SCN-EPG-001's `io-import` arm until 3F-3437; and 3F-2841's pattern: a project-owned
20
18
  * term arrives as an input).
21
19
  *
@@ -24,7 +22,6 @@
24
22
  * malformed entry is dropped by the reading function it is handed to rather than thrown. A check
25
23
  * that throws on a typo produces no verdict at all.
26
24
  */
27
- import { type ThresholdIndex } from "../domain/thresholds.js";
28
25
  import { type FitnessCheckIndex } from "../domain/fitnessChecks.js";
29
26
  /**
30
27
  * The steps the TARGET names NON-CHECKS (@SCN-USG-015, 3F-3343) — `specController.notChecks`, read
@@ -50,65 +47,6 @@ export declare function resolveNotChecks(packageJson: {
50
47
  notChecks?: unknown;
51
48
  };
52
49
  }): readonly string[];
53
- /**
54
- * A bar naming a mutation gate rather than a figure.
55
- *
56
- * THE RECORD'S NAME MAY BE STATED AND OTHERWISE DEFAULTS, and the reason is whose the name is: the
57
- * record belongs to whoever owns the record, so the conventional one stands in and a project filing
58
- * its bars elsewhere writes it over.
59
- */
60
- export interface MutationGateReference {
61
- readonly mutationGate: string;
62
- readonly recordFile?: string;
63
- }
64
- /** The kill floor a reference names, or `null` where the record cannot supply it. */
65
- export type KillFloorReader = (reference: MutationGateReference) => number | null;
66
- /**
67
- * The TARGET's authored CEILINGS (@SCN-CIP-001) — `specController.thresholds`, read as
68
- * `@SCN → bare check tag → ceiling` through the engine's own `thresholdsOf`.
69
- *
70
- * The DEBIT side of the measured fitness check, and the reason the axis can reconcile at all. A
71
- * static check decides pass from fail itself; a measured one produces a number, and the bar that
72
- * number is held against has to come from somewhere the run cannot reach — otherwise the runner
73
- * grades its own homework and the ledger transcribes a verdict rather than reconciling one.
74
- *
75
- * IT IS THE TARGET'S, for the same reason the registry is (@SCN-LNT-005): a suite's acceptable
76
- * wall-clock is a property of the repository being reconciled and of the runner class it runs on,
77
- * never of the tool doing the reconciling. Read from `--package-json` alongside the scripts, the CI
78
- * config and the registry, so every input to a target's verdict came from that target.
79
- *
80
- * The third of this family's `specController.*` resolvers, and defensive like the two above it: a
81
- * missing, non-object or array-shaped config resolves EMPTY, and a malformed entry is dropped by
82
- * `thresholdsOf` rather than thrown. There is no starter set: a ceiling the target did not write
83
- * would hold its suites to a bar nobody chose.
84
- *
85
- * AND A BAR MAY NAME A MUTATION GATE INSTEAD OF A FIGURE (@SCN-MUT-012, 3F-2788). A number in a
86
- * manifest is a number somebody has to re-derive after every sweep that moves it. So the VALUE may
87
- * be a reference to a gate whose record already holds the counts, and it is substituted for that
88
- * gate's kill floor HERE — before `thresholdsOf` is called, so what reaches the index is the
89
- * number it has always taken. THE READER IS INJECTED, which is what keeps the engine knowing
90
- * nothing about records, gates or YAML now that the substitution lives inside it: the app edge
91
- * opens the target's record and hands in a closure, and this function only ever asks it for a
92
- * number (3F-3087).
93
- *
94
- * AND A REFERENCE THIS CANNOT SOURCE LEAVES NO BAR, NEVER A NUMBER (@SCN-MUT-013). A reference is a
95
- * bar living in a second file, so it can go missing four ways a typed one never could — and each
96
- * has a lenient reading that hands back a green nobody earned. All four are refused the same way,
97
- * which is `barOf`'s own way with an entry it cannot read: the key survives with nothing beside it,
98
- * so the check stays MEASURED and the complaint arrives from the missing-bar arm (@SCN-CIP-002)
99
- * rather than from the tag grammar, about a check nobody wrote.
100
- */
101
- export declare function resolveThresholds(packageJson: {
102
- specController?: {
103
- thresholds?: unknown;
104
- };
105
- },
106
- /**
107
- * The reader over the TARGET's records, built by the edge that knows where that tree is
108
- * (@SCN-LNT-005). One reader per resolution pass, so a manifest naming several gates of one
109
- * record reads that record once.
110
- */
111
- killFloor: KillFloorReader): ThresholdIndex;
112
50
  /**
113
51
  * Resolve the recognised deferral-tag set for the target (@SCN-PND-021) — the app's single-sourced
114
52
  * starter set EXTENDED by the target `package.json`'s `specController.deferralTags`. Config
@@ -145,29 +83,12 @@ starterTags: readonly string[]): readonly string[];
145
83
  * missing or wrongly-shaped config resolves EMPTY, and a malformed row is dropped by
146
84
  * `fitnessChecksOf` rather than thrown. There is no starter set: a target that has converted
147
85
  * nothing owes nothing on this route, which is what keeps the reading inert on an unswept corpus.
148
- *
149
- * AND A ROW'S BAR MAY NAME A MUTATION GATE INSTEAD OF A FIGURE, EXACTLY AS A THRESHOLD ENTRY'S MAY
150
- * (@SCN-MUT-012, 3F-3152). The row is the second place a target can author a bar, so it is the
151
- * second place the same substitution has to happen — through the SAME reader and the same
152
- * value-only, direction-blind replacement `resolveThresholds` calls, applied to the row before
153
- * `fitnessChecksOf` reads it. A converted row and a threshold entry cannot then come to disagree
154
- * about what a target wrote, which is the argument `fitnessCheckOf` already makes for reading the
155
- * bar through `barOf` rather than through a grammar of its own.
156
- *
157
- * A REFERENCE THIS CANNOT SOURCE STILL LEAVES NO BAR, NEVER A NUMBER (@SCN-MUT-013). What comes
158
- * back is `null` beside the key, which is what keeps the row MEASURED with nothing to hold it to —
159
- * the shape @SCN-CIP-002 reports, and the same reading the threshold route reaches.
160
86
  */
161
87
  export declare function resolveFitnessChecks(packageJson: {
162
88
  specController?: {
163
89
  fitnessChecks?: unknown;
164
90
  };
165
- },
166
- /**
167
- * The reader over the TARGET's records, built by the edge that knows where that tree is
168
- * (@SCN-LNT-005) — the same argument `resolveThresholds` takes, for the same reason.
169
- */
170
- killFloor: KillFloorReader): FitnessCheckIndex;
91
+ }): FitnessCheckIndex;
171
92
  /**
172
93
  * WHAT A TARGET'S RUNNER BLOCK YIELDED — the entries keyed by a canon tier, and the keys that are
173
94
  * not one (@SCN-USG-019).
@@ -235,6 +156,10 @@ export declare function resolveRunners(packageJson: {
235
156
  runners?: unknown;
236
157
  };
237
158
  }): ResolvedRunners;
159
+ /**
160
+ * ONE ACCOUNT FOR BOTH KINDS, in the order the manifest wrote them: a retired top-level key names
161
+ * itself, and `fitnessChecks` names each bar its rows still carry.
162
+ */
238
163
  export declare function resolveRetiredKeys(packageJson: {
239
164
  specController?: unknown;
240
165
  }): readonly string[];
@@ -1 +1 @@
1
- {"version":3,"file":"targetManifest.d.ts","sourceRoot":"","sources":["../../src/parse/targetManifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAmB,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAWrF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE;IAC5C,cAAc,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC1C,GAAG,SAAS,MAAM,EAAE,CAIpB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAaD,qFAAqF;AACrF,MAAM,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,qBAAqB,KAAK,MAAM,GAAG,IAAI,CAAC;AAgDlF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE;IAAE,cAAc,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;CAAE;AAC1D;;;;GAIG;AACH,SAAS,EAAE,eAAe,GACzB,cAAc,CAIhB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE;IACX,cAAc,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC7C;AACD,6FAA6F;AAC7F,WAAW,EAAE,SAAS,MAAM,EAAE,GAC7B,SAAS,MAAM,EAAE,CAcnB;AAGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE;IACX,cAAc,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC9C;AACD;;;GAGG;AACH,SAAS,EAAE,eAAe,GACzB,iBAAiB,CAMnB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe;IAC9B,uGAAuG;IACvG,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;IACxD,uGAAuG;IACvG,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE;IAC1C,cAAc,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACxC,GAAG,eAAe,CAclB;AAwBD,wBAAgB,kBAAkB,CAAC,WAAW,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,MAAM,EAAE,CAM/F"}
1
+ {"version":3,"file":"targetManifest.d.ts","sourceRoot":"","sources":["../../src/parse/targetManifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAmB,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAWrF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE;IAC5C,cAAc,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC1C,GAAG,SAAS,MAAM,EAAE,CAIpB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE;IACX,cAAc,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC7C;AACD,6FAA6F;AAC7F,WAAW,EAAE,SAAS,MAAM,EAAE,GAC7B,SAAS,MAAM,EAAE,CAcnB;AAGD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE;IAChD,cAAc,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC9C,GAAG,iBAAiB,CAEpB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe;IAC9B,uGAAuG;IACvG,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;IACxD,uGAAuG;IACvG,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE;IAC1C,cAAc,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACxC,GAAG,eAAe,CAclB;AAiDD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,MAAM,EAAE,CAO/F"}
@@ -1,21 +1,19 @@
1
1
  /**
2
- * The TARGET's `specController.*` configuration, read into the rows, bars and mints the
2
+ * The TARGET's `specController.*` configuration, read into the rows and mints the
3
3
  * reconciler takes — the `resolve*` family, moved here from the app's ingest edge (3F-3087).
4
4
  *
5
5
  * WHY THEY LIVE IN THE ENGINE. Every one of them is a pure function of a manifest object
6
6
  * somebody else already read off disk, and every one of them is the ONE reading of the key it
7
- * names — `thresholdsOf`, `fitnessChecksOf` and `bareTerm` are all core's, so the reader and the
7
+ * names — `fitnessChecksOf` and `bareTerm` are both core's, so the reader and the
8
8
  * thing it reads through belonged on the same side of the package boundary. Sitting at the app
9
9
  * edge they were the reason a PUBLISHED module imported core's unpublished `/internal` subpath,
10
10
  * which is the fault 3F-3086 repairs; nothing about reading a parsed manifest ever needed the
11
11
  * edge that produced it.
12
12
  *
13
- * WHAT THE EDGE STILL OWES THEM, AND WHY IT IS A PARAMETER. Two of these readings depend on
13
+ * WHAT THE EDGE STILL OWES THEM, AND WHY IT IS A PARAMETER. One of these readings depends on
14
14
  * something the engine must not know: the deferral-tag STARTER SET is product policy the
15
- * application layer single-sources (`DEFAULT_DEFERRAL_TAGS`), and a bar naming a mutation gate
16
- * needs that gate's record read off the target's tree. Both arrive as arguments — the starter
17
- * set as data, the record as a `KillFloorReader` closure the edge builds — so the engine keeps
18
- * knowing nothing about files, records or ratchets (`lint:boundaries`' `core-imports-io` rule,
15
+ * application layer single-sources (`DEFAULT_DEFERRAL_TAGS`). It arrives as an argument, as data,
16
+ * so the engine keeps knowing nothing about files (`lint:boundaries`' `core-imports-io` rule,
19
17
  * which was @SCN-EPG-001's `io-import` arm until 3F-3437; and 3F-2841's pattern: a project-owned
20
18
  * term arrives as an input).
21
19
  *
@@ -25,7 +23,6 @@
25
23
  * that throws on a typo produces no verdict at all.
26
24
  */
27
25
  import { bareTerm } from "../lib/bareTerm.js";
28
- import { thresholdsOf } from "../domain/thresholds.js";
29
26
  import { fitnessChecksOf } from "../domain/fitnessChecks.js";
30
27
  // THE FOUR CANON TIERS, read from the ledger's own enumeration rather than restated here
31
28
  // (@SCN-USG-019). A second list of the same four would agree by coincidence, and this axis's
@@ -60,107 +57,6 @@ export function resolveNotChecks(packageJson) {
60
57
  return [];
61
58
  return [...new Set(configured.filter((entry) => typeof entry === "string"))];
62
59
  }
63
- /** The reference a manifest value states, or `null` where it states none. */
64
- function gateReferenceOf(value) {
65
- if (!isBlock(value))
66
- return null;
67
- const gate = value["mutationGate"];
68
- if (typeof gate !== "string" || gate.trim() === "")
69
- return null;
70
- const recordFile = value["recordFile"];
71
- return typeof recordFile === "string"
72
- ? { mutationGate: gate, recordFile }
73
- : { mutationGate: gate };
74
- }
75
- /**
76
- * One check's entry with any gate reference in it replaced by the number that gate's record implies.
77
- *
78
- * VALUE-ONLY AND DIRECTION-BLIND. The key beside the number is the comparison, and this reads none
79
- * of them: a ceiling naming a gate resolves exactly as a floor does. The engine has no opinion
80
- * about which checks are floors (@SCN-LNT-005), so a target authoring a mutation ceiling is wrong
81
- * out loud rather than quietly overruled here.
82
- */
83
- function barWithGateResolved(bar, killFloor) {
84
- if (!isBlock(bar))
85
- return bar;
86
- const resolved = {};
87
- for (const [key, value] of Object.entries(bar)) {
88
- const reference = gateReferenceOf(value);
89
- // `null` where the record could not supply the floor — the value the engine already reads as
90
- // no bar, so a reference this could not source is indistinguishable downstream from an entry
91
- // nobody could read. What must never be written here is a number of this reader's choosing.
92
- resolved[key] = reference === null ? value : killFloor(reference);
93
- }
94
- return resolved;
95
- }
96
- /**
97
- * The manifest's threshold entries, with every gate reference in them substituted.
98
- *
99
- * NO RECORD IS OPENED FOR A MANIFEST THAT NAMES NO GATE, which is what keeps this inert for every
100
- * target that has never banked one — the two live `@ci-run-time` ceilings included.
101
- */
102
- function withGateReferencesResolved(entries, killFloor) {
103
- const resolved = {};
104
- for (const [scnKey, checks] of Object.entries(entries)) {
105
- if (!isBlock(checks)) {
106
- resolved[scnKey] = checks;
107
- continue;
108
- }
109
- const bars = {};
110
- for (const [checkKey, bar] of Object.entries(checks)) {
111
- bars[checkKey] = barWithGateResolved(bar, killFloor);
112
- }
113
- resolved[scnKey] = bars;
114
- }
115
- return resolved;
116
- }
117
- /**
118
- * The TARGET's authored CEILINGS (@SCN-CIP-001) — `specController.thresholds`, read as
119
- * `@SCN → bare check tag → ceiling` through the engine's own `thresholdsOf`.
120
- *
121
- * The DEBIT side of the measured fitness check, and the reason the axis can reconcile at all. A
122
- * static check decides pass from fail itself; a measured one produces a number, and the bar that
123
- * number is held against has to come from somewhere the run cannot reach — otherwise the runner
124
- * grades its own homework and the ledger transcribes a verdict rather than reconciling one.
125
- *
126
- * IT IS THE TARGET'S, for the same reason the registry is (@SCN-LNT-005): a suite's acceptable
127
- * wall-clock is a property of the repository being reconciled and of the runner class it runs on,
128
- * never of the tool doing the reconciling. Read from `--package-json` alongside the scripts, the CI
129
- * config and the registry, so every input to a target's verdict came from that target.
130
- *
131
- * The third of this family's `specController.*` resolvers, and defensive like the two above it: a
132
- * missing, non-object or array-shaped config resolves EMPTY, and a malformed entry is dropped by
133
- * `thresholdsOf` rather than thrown. There is no starter set: a ceiling the target did not write
134
- * would hold its suites to a bar nobody chose.
135
- *
136
- * AND A BAR MAY NAME A MUTATION GATE INSTEAD OF A FIGURE (@SCN-MUT-012, 3F-2788). A number in a
137
- * manifest is a number somebody has to re-derive after every sweep that moves it. So the VALUE may
138
- * be a reference to a gate whose record already holds the counts, and it is substituted for that
139
- * gate's kill floor HERE — before `thresholdsOf` is called, so what reaches the index is the
140
- * number it has always taken. THE READER IS INJECTED, which is what keeps the engine knowing
141
- * nothing about records, gates or YAML now that the substitution lives inside it: the app edge
142
- * opens the target's record and hands in a closure, and this function only ever asks it for a
143
- * number (3F-3087).
144
- *
145
- * AND A REFERENCE THIS CANNOT SOURCE LEAVES NO BAR, NEVER A NUMBER (@SCN-MUT-013). A reference is a
146
- * bar living in a second file, so it can go missing four ways a typed one never could — and each
147
- * has a lenient reading that hands back a green nobody earned. All four are refused the same way,
148
- * which is `barOf`'s own way with an entry it cannot read: the key survives with nothing beside it,
149
- * so the check stays MEASURED and the complaint arrives from the missing-bar arm (@SCN-CIP-002)
150
- * rather than from the tag grammar, about a check nobody wrote.
151
- */
152
- export function resolveThresholds(packageJson,
153
- /**
154
- * The reader over the TARGET's records, built by the edge that knows where that tree is
155
- * (@SCN-LNT-005). One reader per resolution pass, so a manifest naming several gates of one
156
- * record reads that record once.
157
- */
158
- killFloor) {
159
- const configured = packageJson.specController?.thresholds;
160
- if (!isBlock(configured))
161
- return thresholdsOf({});
162
- return thresholdsOf(withGateReferencesResolved(configured, killFloor));
163
- }
164
60
  /**
165
61
  * Resolve the recognised deferral-tag set for the target (@SCN-PND-021) — the app's single-sourced
166
62
  * starter set EXTENDED by the target `package.json`'s `specController.deferralTags`. Config
@@ -207,29 +103,9 @@ starterTags) {
207
103
  * missing or wrongly-shaped config resolves EMPTY, and a malformed row is dropped by
208
104
  * `fitnessChecksOf` rather than thrown. There is no starter set: a target that has converted
209
105
  * nothing owes nothing on this route, which is what keeps the reading inert on an unswept corpus.
210
- *
211
- * AND A ROW'S BAR MAY NAME A MUTATION GATE INSTEAD OF A FIGURE, EXACTLY AS A THRESHOLD ENTRY'S MAY
212
- * (@SCN-MUT-012, 3F-3152). The row is the second place a target can author a bar, so it is the
213
- * second place the same substitution has to happen — through the SAME reader and the same
214
- * value-only, direction-blind replacement `resolveThresholds` calls, applied to the row before
215
- * `fitnessChecksOf` reads it. A converted row and a threshold entry cannot then come to disagree
216
- * about what a target wrote, which is the argument `fitnessCheckOf` already makes for reading the
217
- * bar through `barOf` rather than through a grammar of its own.
218
- *
219
- * A REFERENCE THIS CANNOT SOURCE STILL LEAVES NO BAR, NEVER A NUMBER (@SCN-MUT-013). What comes
220
- * back is `null` beside the key, which is what keeps the row MEASURED with nothing to hold it to —
221
- * the shape @SCN-CIP-002 reports, and the same reading the threshold route reaches.
222
- */
223
- export function resolveFitnessChecks(packageJson,
224
- /**
225
- * The reader over the TARGET's records, built by the edge that knows where that tree is
226
- * (@SCN-LNT-005) — the same argument `resolveThresholds` takes, for the same reason.
227
106
  */
228
- killFloor) {
229
- const configured = packageJson.specController?.fitnessChecks;
230
- if (!Array.isArray(configured))
231
- return fitnessChecksOf(configured);
232
- return fitnessChecksOf(configured.map((row) => barWithGateResolved(row, killFloor)));
107
+ export function resolveFitnessChecks(packageJson) {
108
+ return fitnessChecksOf(packageJson.specController?.fitnessChecks);
233
109
  }
234
110
  /**
235
111
  * The TARGET's BEHAVIOURAL RUNNERS (@SCN-USG-011, 3F-3343) — `specController.runners`, read as
@@ -288,9 +164,9 @@ export function resolveRunners(packageJson) {
288
164
  };
289
165
  }
290
166
  /**
291
- * THE specController.* KEYS THIS READER HAS RETIRED (@SCN-USG-021, @SCN-USG-022) — the top-level
292
- * keys a manifest carries whose reading this tool has removed, in the order the manifest wrote
293
- * them.
167
+ * THE specController.* KEYS THIS READER HAS RETIRED (@SCN-USG-021, @SCN-USG-022, @SCN-USG-023) —
168
+ * the top-level keys a manifest carries whose reading this tool has removed, in the order the
169
+ * manifest wrote them.
294
170
  *
295
171
  * NAMED, NOT SILENTLY GONE. Retiring a route is not the same act as never having had one: a
296
172
  * consumer who wrote `checkRegistry` once, when it was read, believes it still routes their
@@ -302,16 +178,50 @@ export function resolveRunners(packageJson) {
302
178
  * retires once and is never re-read; the set only grows as this reader retires more of them
303
179
  * (`checkRegistry` first, 3F-3398; `staticChecks` second, 3F-3399 — the tiebreak
304
180
  * `parse/runningStaticChecks.ts`'s `handleOf` used to settle among several invoked scripts,
305
- * 3F-3396 deleted).
181
+ * 3F-3396 deleted; `thresholds` third, 3F-3517 — the ceilings the measured axis held a scenario
182
+ * to, 3F-3516 deleted).
306
183
  *
307
184
  * DEFENSIVE LIKE THE READERS ABOVE IT: a missing or non-object `specController` names no
308
185
  * retired key, never throws.
309
186
  */
310
- const RETIRED_SPEC_CONTROLLER_KEYS = ["checkRegistry", "staticChecks"];
187
+ const RETIRED_SPEC_CONTROLLER_KEYS = ["checkRegistry", "staticChecks", "thresholds"];
188
+ /**
189
+ * THE BAR A CONFIGURED ROW STILL CARRIES (@SCN-LNT-035) — the row-level keys this reader has
190
+ * retired, append-only like the top-level set above. Nothing reads a row's bar since 3F-3510: a
191
+ * row is credited by its own step's outcome, so a bar left on it holds the check to nothing. A
192
+ * `mutationGate` is a value of `atLeast`, so the key it sits under is what names it.
193
+ *
194
+ * NAMED WITH ITS ROW, `fitnessChecks[<@SCN>].<key>`, because a row-level key alone says nothing a
195
+ * consumer could find it by. A row stating no usable `@SCN` names no bar: the row reader drops it
196
+ * whole, and there is no handle to name its bar by.
197
+ */
198
+ const RETIRED_ROW_KEYS = ["atLeast", "atMost"];
199
+ function retiredRowKeysOf(rows) {
200
+ if (!Array.isArray(rows))
201
+ return [];
202
+ return rows.flatMap((row) => {
203
+ if (!isBlock(row) || typeof row["scn"] !== "string")
204
+ return [];
205
+ const scnId = bareTerm(row["scn"]);
206
+ if (scnId === "")
207
+ return [];
208
+ return Object.keys(row)
209
+ .filter((key) => RETIRED_ROW_KEYS.includes(key))
210
+ .map((key) => `fitnessChecks[${scnId}].${key}`);
211
+ });
212
+ }
213
+ /**
214
+ * ONE ACCOUNT FOR BOTH KINDS, in the order the manifest wrote them: a retired top-level key names
215
+ * itself, and `fitnessChecks` names each bar its rows still carry.
216
+ */
311
217
  export function resolveRetiredKeys(packageJson) {
312
218
  const configured = packageJson.specController;
313
219
  if (!isBlock(configured))
314
220
  return [];
315
- return Object.keys(configured).filter((key) => RETIRED_SPEC_CONTROLLER_KEYS.includes(key));
221
+ return Object.entries(configured).flatMap(([key, value]) => {
222
+ if (key === "fitnessChecks")
223
+ return retiredRowKeysOf(value);
224
+ return RETIRED_SPEC_CONTROLLER_KEYS.includes(key) ? [key] : [];
225
+ });
316
226
  }
317
227
  //# sourceMappingURL=targetManifest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"targetManifest.js","sourceRoot":"","sources":["../../src/parse/targetManifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"targetManifest.js","sourceRoot":"","sources":["../../src/parse/targetManifest.ts"],"names":[],"mappings":"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"}
@@ -15,17 +15,15 @@
15
15
  */
16
16
  /**
17
17
  * The CLI input paths/flags actually used for a run — each optional; only the ones
18
- * the operator supplied are present. Mirrors the CLI's ReconcileOptions (the same
19
- * --features/--vitest/--cucumber/--ci/--package-json/--measurements/--ci-steps seams).
18
+ * the operator supplied are present. The same --features/--vitest/--cucumber/--ci/
19
+ * --package-json/--ci-steps seams as the CLI's ReconcileOptions.
20
20
  *
21
- * `measurements` and the converted checks' credit stream joined the interface at 3F-3184
22
- * (@SCN-RPT-027). They were
23
- * ALREADY flowing through it: `reconcileInputsOf` builds one ReconcileOptions carrying all
24
- * seven and that same object is both reconciled and assigned to `ctx.inputs`, so structural
25
- * typing let the two ride along unseen and the block simply never named them. Both are
26
- * optional by design — passed only where the file exists — which is exactly why their
27
- * silence was ambiguous between "the run never got it" and "the run got it and the block
28
- * does not say so".
21
+ * The converted checks' credit stream joined the interface at 3F-3184 (@SCN-RPT-027). It was
22
+ * ALREADY flowing through it: `reconcileInputsOf` builds one ReconcileOptions and that same
23
+ * object is assigned to `ctx.inputs`, so structural typing let the stream ride along unseen and
24
+ * the block simply never named it. It is optional by design — passed only where the file
25
+ * exists — which is exactly why its silence was ambiguous between "the run never got it" and
26
+ * "the run got it and the block does not say so".
29
27
  */
30
28
  export interface RunInputs {
31
29
  features?: string;
@@ -33,7 +31,6 @@ export interface RunInputs {
33
31
  cucumber?: string;
34
32
  ci?: string;
35
33
  packageJson?: string;
36
- measurements?: string;
37
34
  ciSteps?: string;
38
35
  }
39
36
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"provenance.d.ts","sourceRoot":"","sources":["../../src/provenance/provenance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,MAAM,EAAE,SAAS,CAAC;IAClB,oEAAoE;IACpE,QAAQ,EAAE,IAAI,CAAC;IACf,sEAAsE;IACtE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAiBD,sFAAsF;AACtF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,2GAA2G;IAC3G,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;;OAYG;IACH,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AA2BD;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,2GAA2G;IAC3G,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,SAAS,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,UAAU,GAAG,gBAAgB,CAWlE;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,gBAAgB,GAAG,eAAe,CAwB9E;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,GAAG,eAAe,CAElE"}
1
+ {"version":3,"file":"provenance.d.ts","sourceRoot":"","sources":["../../src/provenance/provenance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,MAAM,EAAE,SAAS,CAAC;IAClB,oEAAoE;IACpE,QAAQ,EAAE,IAAI,CAAC;IACf,sEAAsE;IACtE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAgBD,sFAAsF;AACtF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,2GAA2G;IAC3G,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;;OAYG;IACH,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AA2BD;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,2GAA2G;IAC3G,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,SAAS,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,UAAU,GAAG,gBAAgB,CAWlE;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,gBAAgB,GAAG,eAAe,CAwB9E;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,GAAG,eAAe,CAElE"}