@3f-consulting/spec-controller-core 0.1.0-alpha.3 → 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 (124) hide show
  1. package/README.md +1 -1
  2. package/dist/assemble/evidenceReconciliationFromSources.d.ts +8 -15
  3. package/dist/assemble/evidenceReconciliationFromSources.d.ts.map +1 -1
  4. package/dist/assemble/evidenceReconciliationFromSources.js +21 -24
  5. package/dist/assemble/evidenceReconciliationFromSources.js.map +1 -1
  6. package/dist/domain/checkCharacteristics.d.ts +24 -15
  7. package/dist/domain/checkCharacteristics.d.ts.map +1 -1
  8. package/dist/domain/checkCharacteristics.js +24 -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 +23 -2
  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 +17 -17
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +19 -19
  43. package/dist/index.js.map +1 -1
  44. package/dist/internal.d.ts +8 -15
  45. package/dist/internal.d.ts.map +1 -1
  46. package/dist/internal.js +37 -84
  47. package/dist/internal.js.map +1 -1
  48. package/dist/model.d.ts +3 -2
  49. package/dist/model.d.ts.map +1 -1
  50. package/dist/model.js +3 -2
  51. package/dist/model.js.map +1 -1
  52. package/dist/parse/checkScriptsRunInCI.d.ts +8 -7
  53. package/dist/parse/checkScriptsRunInCI.d.ts.map +1 -1
  54. package/dist/parse/checkScriptsRunInCI.js +7 -6
  55. package/dist/parse/checkScriptsRunInCI.js.map +1 -1
  56. package/dist/parse/ciStepRecord.d.ts +5 -17
  57. package/dist/parse/ciStepRecord.d.ts.map +1 -1
  58. package/dist/parse/ciStepRecord.js +7 -27
  59. package/dist/parse/ciStepRecord.js.map +1 -1
  60. package/dist/parse/corpusCodeFaults.d.ts +4 -4
  61. package/dist/parse/corpusCodeFaults.js +4 -4
  62. package/dist/parse/corpusFaults.d.ts +26 -37
  63. package/dist/parse/corpusFaults.d.ts.map +1 -1
  64. package/dist/parse/corpusFaults.js +18 -33
  65. package/dist/parse/corpusFaults.js.map +1 -1
  66. package/dist/parse/corpusGrammarFaults.d.ts +11 -73
  67. package/dist/parse/corpusGrammarFaults.d.ts.map +1 -1
  68. package/dist/parse/corpusGrammarFaults.js +27 -58
  69. package/dist/parse/corpusGrammarFaults.js.map +1 -1
  70. package/dist/parse/runningStaticChecks.d.ts +3 -2
  71. package/dist/parse/runningStaticChecks.d.ts.map +1 -1
  72. package/dist/parse/runningStaticChecks.js +3 -2
  73. package/dist/parse/runningStaticChecks.js.map +1 -1
  74. package/dist/parse/scenarios.d.ts +28 -13
  75. package/dist/parse/scenarios.d.ts.map +1 -1
  76. package/dist/parse/scenarios.js +48 -86
  77. package/dist/parse/scenarios.js.map +1 -1
  78. package/dist/parse/targetCorpus.d.ts +21 -11
  79. package/dist/parse/targetCorpus.d.ts.map +1 -1
  80. package/dist/parse/targetCorpus.js +16 -19
  81. package/dist/parse/targetCorpus.js.map +1 -1
  82. package/dist/parse/targetManifest.d.ts +12 -86
  83. package/dist/parse/targetManifest.d.ts.map +1 -1
  84. package/dist/parse/targetManifest.js +49 -138
  85. package/dist/parse/targetManifest.js.map +1 -1
  86. package/dist/provenance/provenance.d.ts +8 -11
  87. package/dist/provenance/provenance.d.ts.map +1 -1
  88. package/dist/provenance/provenance.js +2 -3
  89. package/dist/provenance/provenance.js.map +1 -1
  90. package/dist/render/evidenceGrid.d.ts +45 -0
  91. package/dist/render/evidenceGrid.d.ts.map +1 -0
  92. package/dist/render/evidenceGrid.js +145 -0
  93. package/dist/render/evidenceGrid.js.map +1 -0
  94. package/dist/render/markdown.d.ts.map +1 -1
  95. package/dist/render/markdown.js +85 -190
  96. package/dist/render/markdown.js.map +1 -1
  97. package/dist/render/runVerdict.d.ts +3 -2
  98. package/dist/render/runVerdict.d.ts.map +1 -1
  99. package/dist/render/runVerdict.js +11 -4
  100. package/dist/render/runVerdict.js.map +1 -1
  101. package/dist/render/staticChecks.d.ts.map +1 -1
  102. package/dist/render/staticChecks.js +10 -1
  103. package/dist/render/staticChecks.js.map +1 -1
  104. package/package.json +1 -6
  105. package/dist/domain/thresholds.d.ts +0 -123
  106. package/dist/domain/thresholds.d.ts.map +0 -1
  107. package/dist/domain/thresholds.js +0 -185
  108. package/dist/domain/thresholds.js.map +0 -1
  109. package/dist/parse/checkStaticEvidenceObligations.d.ts +0 -32
  110. package/dist/parse/checkStaticEvidenceObligations.d.ts.map +0 -1
  111. package/dist/parse/checkStaticEvidenceObligations.js +0 -78
  112. package/dist/parse/checkStaticEvidenceObligations.js.map +0 -1
  113. package/dist/parse/corpusClaimFaults.d.ts +0 -104
  114. package/dist/parse/corpusClaimFaults.d.ts.map +0 -1
  115. package/dist/parse/corpusClaimFaults.js +0 -128
  116. package/dist/parse/corpusClaimFaults.js.map +0 -1
  117. package/dist/parse/measurements.d.ts +0 -47
  118. package/dist/parse/measurements.d.ts.map +0 -1
  119. package/dist/parse/measurements.js +0 -65
  120. package/dist/parse/measurements.js.map +0 -1
  121. package/dist/render/measuredItem.d.ts +0 -30
  122. package/dist/render/measuredItem.d.ts.map +0 -1
  123. package/dist/render/measuredItem.js +0 -43
  124. package/dist/render/measuredItem.js.map +0 -1
package/dist/internal.js CHANGED
@@ -3,11 +3,12 @@
3
3
  * — reached by the sibling `spec-controller` app via the package's `/internal`
4
4
  * subpath export (`@3f-consulting/spec-controller-core/internal`).
5
5
  *
6
- * NOT THE PUBLIC v1 CONTRACT. The frozen v1 surface is the `.` barrel
7
- * (`index.ts`) alone — `@SCN-API-001` builds its drift-guard Program over
8
- * `index.ts` only, so this entry is deliberately OUT of its scope. Do NOT put
9
- * public API here: a symbol an external consumer should depend on belongs on the
10
- * `.` barrel (and must then be added to `@SCN-API-001`'s frozen enumeration).
6
+ * NOT THE PUBLIC v1 CONTRACT. The v1 surface is the `.` barrel (`index.ts`)
7
+ * alone, and this entry is deliberately outside it. Do NOT put public API here:
8
+ * a symbol an external consumer should depend on belongs on the `.` barrel, and
9
+ * putting it there is a contract decision NOTHING CHECKS — the drift guard that
10
+ * reconciled that barrel against a written-down enumeration, in both directions,
11
+ * left at 3F-3449 and has no replacement before 1.0.
11
12
  * This file exists solely so in-repo consumers get a SANCTIONED seam for a
12
13
  * core-internal helper instead of reaching into `core/src` by a deep relative
13
14
  * path.
@@ -27,12 +28,10 @@ export { parseScnCitation, parseScnCitations } from "./lib/scnCitation.js";
27
28
  // only a LEADING @ is a sigil. Shared because it was hand-copied seven times and the copies carried
28
29
  // the same anchored-strip-before-trim ordering, so a term a target typed with a stray space in
29
30
  // front of its @ was stored still carrying the @ and no bare lookup ever found it again — silently,
30
- // since an absent key is a legitimate reading everywhere it is asked for (3F-2976). The app's own
31
- // hand-authoring ports — a target's configured deferral tags, and the identity a measurement row is
32
- // de-duplicated by — reach it here rather than re-deriving it, which is what makes the artefact
33
- // producer's agreement with `parseMeasuredEvidenceObservations` true by construction instead of by
34
- // a comment saying it must be. Internal, not public — the sigil convention is spec-controller's own
35
- // reading of a term, not a v1 contract, and @SCN-API-001 freezes that barrel exactly.
31
+ // since an absent key is a legitimate reading everywhere it is asked for (3F-2976). A caller outside
32
+ // the engine reaches it here rather than re-deriving it, which is what keeps its reading of a term
33
+ // the engine's by construction instead of by a comment saying it must be. Internal, not public — the sigil convention is spec-controller's own
34
+ // reading of a term, not a v1 contract, and the `.` barrel is where a v1 contract goes.
36
35
  export { bareTerm } from "./lib/bareTerm.js";
37
36
  // `parseTaggedScenarios` — the corpus read BEFORE any obligation rule is applied, and the input
38
37
  // the corpus hop above takes. Shared rather than re-derived at the edge: it is the single
@@ -41,51 +40,32 @@ export { bareTerm } from "./lib/bareTerm.js";
41
40
  // silently. Internal, not public — `parseScenarios` remains the v1 corpus surface.
42
41
  export { parseTaggedScenarios } from "./parse/scenarios.js";
43
42
  // `FITNESS_AXIS_TAG` — the ONE spelling of the word a CONVERTED check's scenario carries
44
- // (`parse/scenarios`, @SCN-LNT-018). Shared because the corpus check's grammar and one-check
45
- // rules (@SCN-STG-005, @SCN-STG-007) must admit exactly the scenarios the obligation rule raises
46
- // against, and this word is now the third source of what names a check on a corpus — the two
47
- // resolvers beside it answer for a target's registry and its ceilings, and neither can ever carry
48
- // this one: a converted check has no runnable script handle and no authored ceiling, only a
43
+ // (`parse/scenarios`, @SCN-LNT-018). Shared because the corpus check's grammar rule (@SCN-STG-005)
44
+ // must admit exactly the scenarios the obligation rule raises against, and this word is the one
45
+ // source left of what names a check on a corpus — the registry retired (3F-3161) and the measured
46
+ // axis's ceilings with it (3F-3516); a converted check has no runnable script handle, only a
49
47
  // configured row. A second spelling in `tests/checks/` would be a word the floor admitted while
50
48
  // the engine raised nothing for it, or the reverse — the seam 3F-3126 spent a slice closing.
51
49
  // A LITERAL RATHER THAN A RESOLVED SET, and deliberately: which words name a CHECK is the
52
50
  // target's answer, which AXIS a scenario is on is the model's, exactly as `unit` is. Internal,
53
- // not public — @SCN-API-001 freezes the `.` barrel exactly.
51
+ // not public — the `.` barrel carries the v1 contract and this is not one.
54
52
  export { FITNESS_AXIS_TAG } from "./parse/scenarios.js";
55
- // `thresholdsOf` / `measuredCheckTags` / `thresholdFor` — the ONE reading of a target's authored
56
- // BARS (`domain/thresholds`, @SCN-CIP-001; the bar carries the comparison it is read with per
57
- // @SCN-MUT-001). Shared because `measuredCheckTags` is the whole of the obligation-raising tag set
58
- // now the registry route retired (3F-3161): a measured check has no runnable script handle, so it
59
- // can never be registered, and no second reading is left for this one to be a union with. Any
60
- // second reader deciding independently which words name a measured check — the tier-tag floor
61
- // being the next one to need it (3F-2236) — would admit a tag the engine raises nothing for, or
62
- // refuse one it does. Internal, not public — where this configuration is AUTHORED moves with the
63
- // registry-home question.
64
- export { thresholdsOf, measuredCheckTags, thresholdFor } from "./domain/thresholds.js";
65
- // `parseMeasuredEvidenceObservations` — the measurement artefact read into citing Evidence
66
- // Observations (`parse/measurements`, @SCN-CIP-003). Shared because the balance command is the edge
67
- // that reads a target's files, and this is one of them. Internal, not public — where a measurement
68
- // artefact is AUTHORED is as open as the registry-home question the two entries above are parked
69
- // on, and the frozen v1 surface is not the place to settle it (@SCN-API-001 freezes that barrel
70
- // exactly, both directions).
71
- export { parseMeasuredEvidenceObservations } from "./parse/measurements.js";
72
- // `isMeasuredObservation` / `isStaticCheckObservation` — the sub-discriminators within the `lint`
73
- // axis (@SCN-CIP-003). Shared because `qualityCheck === "lint"` stopped narrowing to one interface
74
- // when the measured member joined the union, and every in-repo reader that wants a static check's
75
- // OWN fields — its runnable handle, its `exists`, its `enforcedOverRealSource` — now has to say
76
- // which of the two it means. A caller re-spelling the discriminator inline would be free to spell
77
- // it differently. Internal, not public — the union's third member is not on the frozen v1 surface.
78
- export { isMeasuredObservation, isStaticCheckObservation } from "./domain/journal.js";
53
+ // `isStaticCheckObservation` — the predicate every in-repo reader that wants a static check's OWN
54
+ // fields — its runnable handle, its `exists`, its `enforcedOverRealSource` — asks. The measured
55
+ // member it once told apart from left with the measured axis (3F-3516); it stays shared because a
56
+ // caller re-spelling the test inline would be free to spell it differently. Internal, not public.
57
+ export { isStaticCheckObservation } from "./domain/journal.js";
79
58
  // `ciRunSteps` / `CiRunStep` — the CI walk `ciRunCommands` projects, carrying each `run:` step's
80
- // `id:` and whether its red would abort the job. Shared because the local-ladder derivation must
81
- // not open a second YAML walk to see `continue-on-error`: that key is on the same step mapping this
82
- // walk already visits, and a second reader would be free to disagree with the first about which
83
- // steps a workflow even runs — which is the silent disagreement the one-place rule exists to
84
- // prevent (3F-3042). Its only consumer OUTSIDE the engine is `tests/checks/localLadder.ts`;
85
- // `runningStaticChecks` reads the same walk in-engine for the `id:` (3F-3261). Internal, not
59
+ // `id:` and whether its red would abort the job. Shared so that no caller opens a second YAML walk
60
+ // to see `continue-on-error`: that key is on the same step mapping this walk already visits, and a
61
+ // second reader would be free to disagree with the first about which steps a workflow even runs —
62
+ // which is the silent disagreement the one-place rule exists to prevent (3F-3042). Its consumer
63
+ // OUTSIDE the engine is `tests/steps/lintReconciliation.steps.ts`, at twelve call sites, one of
64
+ // which reads `abortsJob`; `runningStaticChecks` reads the same walk in-engine for the `id:`
65
+ // (3F-3261). The local-ladder derivation was the other outside consumer until 3F-3475. Internal, not
86
66
  // public — `ciRunCommands` remains
87
- // the v1 contract for anyone outside, and putting this on the frozen `.` barrel would widen a
88
- // frozen surface and owe @SCN-API-001 a hand-transcribed row to buy nothing.
67
+ // the v1 contract for anyone outside, and putting this on the `.` barrel would widen the v1
68
+ // contract to buy nothing.
89
69
  export { ciRunSteps } from "./parse/checkScriptsRunInCI.js";
90
70
  // `ciWorkflowSteps` / `CiWorkflowStep` / `CiStepAction` — the SAME walk read whole: `uses:` steps
91
71
  // as well as `run:` ones, each with the identity GitHub displays for it and the job it belongs to
@@ -93,53 +73,26 @@ export { ciRunSteps } from "./parse/checkScriptsRunInCI.js";
93
73
  // workflow runs — the third time that one-walk rule has held here, and for the reason it held the
94
74
  // first two. Internal, not public, on the same footing as `ciRunSteps`: `ciRunCommands` remains
95
75
  // the v1 contract for anyone outside, and the shape of a whole-pipeline step is a reading the
96
- // discovery inversion (3F-3343) is still settling, so freezing it now would owe @SCN-API-001 a
97
- // hand-transcribed row for a surface no consumer has yet asked for.
76
+ // discovery inversion (3F-3343) is still settling, so putting it on the v1 contract now would
77
+ // widen it for a surface no consumer has yet asked for.
98
78
  export { ciWorkflowSteps } from "./parse/checkScriptsRunInCI.js";
99
- // The `resolve*` family — a target's `specController.*` configuration read into the rows, bars
100
- // and mints the reconciler takes (`parse/targetManifest`). Shared because they moved INTO the
79
+ // The `resolve*` family — a target's `specController.*` configuration read into the rows and
80
+ // mints the reconciler takes (`parse/targetManifest`). Shared because they moved INTO the
101
81
  // engine and the tree's own gates still read a target's config through them: the corpus check
102
- // (@SCN-STG-005) and the characteristic roster resolve the same rows, bars and mints the
82
+ // (@SCN-STG-005) and the characteristic roster resolve the same rows and mints the
103
83
  // reconciler does, and a second reader deciding independently which words a manifest names would
104
84
  // admit a tag the engine raises nothing for. They sat at the app's ingest edge until 3F-3087,
105
85
  // where they were the reason a PUBLISHED module imported this unpublished subpath — the fault
106
- // 3F-3086 repairs. Internal, not public: where a target's rows, bars and mints are AUTHORED
86
+ // 3F-3086 repairs. Internal, not public: where a target's rows and mints are AUTHORED
107
87
  // is the registry-home question (increment D), so the shape of what these read is not a v1
108
- // contract yet, and @SCN-API-001 freezes that barrel exactly. Nothing under `tests/checks/`
88
+ // contract yet. Nothing under `tests/checks/`
109
89
  // travels in a tarball (`tsconfig.build.json` emits `src` alone), so reaching them here is the
110
90
  // seam working as 3F-2837 intended.
111
- export { resolveDeferralTags, resolveFitnessChecks, resolveThresholds, } from "./parse/targetManifest.js";
91
+ export { resolveDeferralTags, resolveFitnessChecks, } from "./parse/targetManifest.js";
112
92
  // `readTargetCorpus` HAS LEFT THIS SEAM (3F-3089), and the removal is the point rather than tidying.
113
93
  // It was shared here for exactly one consumer — the app's ingest edge, which composed the
114
94
  // reconciliation itself — and the composition moved into the engine
115
95
  // (`assemble/evidenceReconciliationFromSources`), which is what takes the last crossing off the
116
96
  // published path. Nothing in this workspace reaches the corpus read any more, and this file
117
97
  // re-exports only what the app genuinely shares.
118
- // `fitnessChecksOf` / `FitnessCheck` / `FitnessCheckIndex` — the ONE reading of a target's
119
- // CONVERTED rows (`domain/fitnessChecks`, @SCN-LNT-018). Shared because a measured row's own
120
- // COMMAND must cite the characteristic its row names when it writes the number down
121
- // (@SCN-LNT-024), and that word is the same word the obligation side raises the Evidence
122
- // Obligation against. A second reader in `tests/checks/` deciding independently what
123
- // characteristic a row names would post a credit under one spelling while the debit was raised
124
- // under another — an obligation with no credit and a credit with no obligation, from one row, and
125
- // loud nowhere. The pass reads only `characteristic` here; the BAR stays the ledger's
126
- // (@SCN-LNT-019, 3F-2509) and nothing on the command side reaches for it. Internal, not public —
127
- // where these rows are AUTHORED moves with the registry-home question the entries above are
128
- // parked on.
129
- //
130
- // `carriesBar` IS THE SHAPE QUESTION AND NEVER THE VALUE, and the two are not the same crossing
131
- // (3F-3164). The bar's NUMBER stays the ledger's, as above; whether a row carries one at all is
132
- // what says which KIND of check it is — the static sentence asserts an exit code, the measured one
133
- // asserts that a number arrived. THE CONSUMER THAT MADE THIS CROSSING WAS A GENERATOR AND IS GONE
134
- // (3F-3244): the corpus is authored now, so nothing derives a scenario's sentence from this answer
135
- // and the two sides can disagree, which is what makes the disagreement reportable. It is shared for
136
- // the reason `fitnessChecksOf` is — a second reader answering "is this row measured" its own way
137
- // would put the credit side and the obligation rule at odds about which evidence one row produces.
138
- // The header on `carriesBar` states the one-spelling rule this export serves.
139
- //
140
- // AND NOTHING THROWS ON THIS PATH, WHICH IS DELIBERATE. `fitnessChecksOf` is what `balance` reads a
141
- // CONSUMER'S manifest through, and a throw there turns one bad character in a stranger's
142
- // `package.json` into a run with no verdict at all — loud nowhere. A malformed row is dropped and
143
- // the obligation it would have raised is simply not raised, which the ledger reports.
144
- export { carriesBar, fitnessChecksOf, } from "./domain/fitnessChecks.js";
145
98
  //# sourceMappingURL=internal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,0FAA0F;AAC1F,4FAA4F;AAC5F,4FAA4F;AAC5F,4FAA4F;AAC5F,6FAA6F;AAC7F,wFAAwF;AACxF,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE3E,mGAAmG;AACnG,oGAAoG;AACpG,+FAA+F;AAC/F,oGAAoG;AACpG,qGAAqG;AACrG,mGAAmG;AACnG,+IAA+I;AAC/I,wFAAwF;AACxF,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAW7C,gGAAgG;AAChG,0FAA0F;AAC1F,gGAAgG;AAChG,2FAA2F;AAC3F,mFAAmF;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAM5D,yFAAyF;AACzF,mGAAmG;AACnG,gGAAgG;AAChG,kGAAkG;AAClG,6FAA6F;AAC7F,gGAAgG;AAChG,6FAA6F;AAC7F,0FAA0F;AAC1F,+FAA+F;AAC/F,2EAA2E;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,kGAAkG;AAClG,gGAAgG;AAChG,kGAAkG;AAClG,kGAAkG;AAClG,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAG/D,iGAAiG;AACjG,mGAAmG;AACnG,mGAAmG;AACnG,kGAAkG;AAClG,gGAAgG;AAChG,gGAAgG;AAChG,6FAA6F;AAC7F,qGAAqG;AACrG,mCAAmC;AACnC,4FAA4F;AAC5F,2BAA2B;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAG5D,kGAAkG;AAClG,kGAAkG;AAClG,6FAA6F;AAC7F,kGAAkG;AAClG,gGAAgG;AAChG,8FAA8F;AAC9F,8FAA8F;AAC9F,wDAAwD;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAGjE,6FAA6F;AAC7F,0FAA0F;AAC1F,8FAA8F;AAC9F,mFAAmF;AACnF,iGAAiG;AACjG,8FAA8F;AAC9F,8FAA8F;AAC9F,sFAAsF;AACtF,2FAA2F;AAC3F,8CAA8C;AAC9C,+FAA+F;AAC/F,oCAAoC;AACpC,OAAO,EACL,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AAEnC,qGAAqG;AACrG,0FAA0F;AAC1F,oEAAoE;AACpE,gGAAgG;AAChG,4FAA4F;AAC5F,iDAAiD"}
package/dist/model.d.ts CHANGED
@@ -16,9 +16,10 @@
16
16
  * - `domain/ledger.ts` — the Ledger + the whole-run predicates.
17
17
  *
18
18
  * This module stays as the stable internal aggregation point (`../model.js`) so the many
19
- * in-core importers and the frozen v1 barrel (`index.ts`, @SCN-API-001) see the SAME surface —
19
+ * in-core importers and the public v1 barrel (`index.ts`) see the SAME surface —
20
20
  * only the concepts' HOME moved. It is NOT a `domain/**` module itself (it re-exports across the
21
- * concept modules, an aggregation the domain-purity guard neither needs nor scans).
21
+ * concept modules, and it sits OUTSIDE `packages/core/src/domain/`, which is what `lint:boundaries`'s
22
+ * `domain-imports-adapter` rule is scoped to — the domain-purity guard's population until 3F-3438).
22
23
  */
23
24
  export * from "./domain/journal.js";
24
25
  export * from "./domain/qualityCheckReconciliation.js";
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oBAAoB,CAAC"}
package/dist/model.js CHANGED
@@ -16,9 +16,10 @@
16
16
  * - `domain/ledger.ts` — the Ledger + the whole-run predicates.
17
17
  *
18
18
  * This module stays as the stable internal aggregation point (`../model.js`) so the many
19
- * in-core importers and the frozen v1 barrel (`index.ts`, @SCN-API-001) see the SAME surface —
19
+ * in-core importers and the public v1 barrel (`index.ts`) see the SAME surface —
20
20
  * only the concepts' HOME moved. It is NOT a `domain/**` module itself (it re-exports across the
21
- * concept modules, an aggregation the domain-purity guard neither needs nor scans).
21
+ * concept modules, and it sits OUTSIDE `packages/core/src/domain/`, which is what `lint:boundaries`'s
22
+ * `domain-imports-adapter` rule is scoped to — the domain-purity guard's population until 3F-3438).
22
23
  */
23
24
  export * from "./domain/journal.js";
24
25
  export * from "./domain/qualityCheckReconciliation.js";
package/dist/model.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oBAAoB,CAAC"}
@@ -3,15 +3,16 @@
3
3
  * observers import: walk the CI config STRUCTURALLY to its steps (`ciWorkflowSteps`, of which
4
4
  * `ciRunSteps` is the projection to the `run:` ones and `ciRunCommands` the projection to their
5
5
  * command strings), and test whether a command invokes
6
- * a given npm script by an EXACT package-manager invocation (`commandInvokesScript`). `checkStaticEvidenceObligations` (the obligation-side observer) and
7
- * `runningStaticChecks` (the running-check observer) both read a check's
8
- * enforcement off these, so the watermelon-critical parse lives in ONE place — a mis-read could
9
- * itself HIDE a watermelon (read a wired static check as unwired, or the reverse).
6
+ * a given npm script by an EXACT package-manager invocation (`commandInvokesScript`).
7
+ * `runningStaticChecks` (the running-check observer, and since 3F-3410 the only static-check
8
+ * observer) reads a check's enforcement off these, so the watermelon-critical parse lives in ONE
9
+ * place — a mis-read could itself HIDE a watermelon (read a severed static check as enforced, or
10
+ * the reverse).
10
11
  *
11
12
  * The CI config is parsed with the reputable `yaml` parser (jobs → steps → run, including
12
13
  * block-scalar `run:` and `if:`/matrix steps) — never line-scanned. The step mapping is read
13
14
  * for its `continue-on-error` and its `id:` as well as its `run:`, because a step whose red the job
14
- * would swallow is a check that reports without enforcing (3F-3042, @SCN-LAD-008) and a step's
15
+ * would swallow is a check that reports without enforcing (3F-3042, @SCN-LNT-032) and a step's
15
16
  * `id:` is where a consumer writes the `@SCN` its check cites (3F-3261). A static check's
16
17
  * command counts as enforced only on an EXACT
17
18
  * package-manager invocation of its script name (`pnpm <script>` / `pnpm run <script>` /
@@ -37,7 +38,7 @@ export interface PackageJsonScripts {
37
38
  * null` for the reason the observation's own `scnId` is (`domain/journal.ts`) — an absent citation
38
39
  * carries no key at all.
39
40
  *
40
- * @SCN-LAD-008 — features/local-ladder.feature.
41
+ * @SCN-LNT-032 — features/fitness-reconciliation.feature.
41
42
  */
42
43
  export type CiRunStep = {
43
44
  readonly command: string;
@@ -151,7 +152,7 @@ export declare function ciRunCommands(ciSources: readonly string[]): string[];
151
152
  * command stays in the step. Reading it here is what lets the derivation say WHICH row a wired
152
153
  * check answers, rather than only that it is wired.
153
154
  *
154
- * @SCN-LAD-008 — features/local-ladder.feature.
155
+ * @SCN-LNT-032 — features/fitness-reconciliation.feature.
155
156
  */
156
157
  export declare function ciRunSteps(ciSources: readonly string[]): CiRunStep[];
157
158
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"checkScriptsRunInCI.d.ts","sourceRoot":"","sources":["../../src/parse/checkScriptsRunInCI.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,gFAAgF;AAChF,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAUD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,SAAS,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,aAAa,CAAC;AAE3F;;;;;;;GAOG;AACH,KAAK,aAAa,GACd;IAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAA;CAAE,GAC5B;IACE,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;IAC1B,2EAA2E;IAC3E,QAAQ,CAAC,gBAAgB,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3F,CAAC;AAEN;;;;;GAKG;AACH,MAAM,MAAM,YAAY;AACtB,kDAAkD;AAChD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAC3B,6DAA6D;GAC3D;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9B;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,iFAAiF;IACjF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,kFAAkF;IAClF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC,GAAG,YAAY,GACd,aAAa,CAAC;AA0IhB;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAEpE;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,CAEpE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,cAAc,EAAE,CAE9E;AAwBD,uFAAuF;AACvF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAE5E"}
1
+ {"version":3,"file":"checkScriptsRunInCI.d.ts","sourceRoot":"","sources":["../../src/parse/checkScriptsRunInCI.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,gFAAgF;AAChF,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAUD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,SAAS,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,aAAa,CAAC;AAE3F;;;;;;;GAOG;AACH,KAAK,aAAa,GACd;IAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAA;CAAE,GAC5B;IACE,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;IAC1B,2EAA2E;IAC3E,QAAQ,CAAC,gBAAgB,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3F,CAAC;AAEN;;;;;GAKG;AACH,MAAM,MAAM,YAAY;AACtB,kDAAkD;AAChD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAC3B,6DAA6D;GAC3D;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9B;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,iFAAiF;IACjF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,kFAAkF;IAClF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC,GAAG,YAAY,GACd,aAAa,CAAC;AA0IhB;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAEpE;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,CAEpE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,cAAc,EAAE,CAE9E;AAwBD,uFAAuF;AACvF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAE5E"}
@@ -3,15 +3,16 @@
3
3
  * observers import: walk the CI config STRUCTURALLY to its steps (`ciWorkflowSteps`, of which
4
4
  * `ciRunSteps` is the projection to the `run:` ones and `ciRunCommands` the projection to their
5
5
  * command strings), and test whether a command invokes
6
- * a given npm script by an EXACT package-manager invocation (`commandInvokesScript`). `checkStaticEvidenceObligations` (the obligation-side observer) and
7
- * `runningStaticChecks` (the running-check observer) both read a check's
8
- * enforcement off these, so the watermelon-critical parse lives in ONE place — a mis-read could
9
- * itself HIDE a watermelon (read a wired static check as unwired, or the reverse).
6
+ * a given npm script by an EXACT package-manager invocation (`commandInvokesScript`).
7
+ * `runningStaticChecks` (the running-check observer, and since 3F-3410 the only static-check
8
+ * observer) reads a check's enforcement off these, so the watermelon-critical parse lives in ONE
9
+ * place — a mis-read could itself HIDE a watermelon (read a severed static check as enforced, or
10
+ * the reverse).
10
11
  *
11
12
  * The CI config is parsed with the reputable `yaml` parser (jobs → steps → run, including
12
13
  * block-scalar `run:` and `if:`/matrix steps) — never line-scanned. The step mapping is read
13
14
  * for its `continue-on-error` and its `id:` as well as its `run:`, because a step whose red the job
14
- * would swallow is a check that reports without enforcing (3F-3042, @SCN-LAD-008) and a step's
15
+ * would swallow is a check that reports without enforcing (3F-3042, @SCN-LNT-032) and a step's
15
16
  * `id:` is where a consumer writes the `@SCN` its check cites (3F-3261). A static check's
16
17
  * command counts as enforced only on an EXACT
17
18
  * package-manager invocation of its script name (`pnpm <script>` / `pnpm run <script>` /
@@ -199,7 +200,7 @@ export function ciRunCommands(ciSources) {
199
200
  * command stays in the step. Reading it here is what lets the derivation say WHICH row a wired
200
201
  * check answers, rather than only that it is wired.
201
202
  *
202
- * @SCN-LAD-008 — features/local-ladder.feature.
203
+ * @SCN-LNT-032 — features/fitness-reconciliation.feature.
203
204
  */
204
205
  export function ciRunSteps(ciSources) {
205
206
  return ciWorkflowSteps(ciSources).flatMap((step) => ("runs" in step ? [runStepOf(step)] : []));
@@ -1 +1 @@
1
- {"version":3,"file":"checkScriptsRunInCI.js","sourceRoot":"","sources":["../../src/parse/checkScriptsRunInCI.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"checkScriptsRunInCI.js","sourceRoot":"","sources":["../../src/parse/checkScriptsRunInCI.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAO7B,qEAAqE;AACrE,SAAS,QAAQ,CAAC,CAAU;IAC1B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC;AAC7C,CAAC;AAED,oGAAoG;AACpG,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AA4F9C;;;;;;;;GAQG;AACH,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,OAAO,CAAC;AACrE,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,QAAQ,CAAC,KAAK,CAAC;QACpB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC;QACpF,CAAC,CAAC,EAAE,CAAC;AACT,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,IAAI,CAAC,KAAc;IAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChD,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACxB,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;AACpC,CAAC;AAED,+DAA+D;AAC/D,SAAS,WAAW,CAAC,QAAiB,EAAE,QAAiB;IACvD,yFAAyF;IACzF,6FAA6F;IAC7F,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;IAChG,CAAC;IACD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;IAC/F,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED;;;;;;GAMG;AACH,SAAS,QAAQ,CAAC,IAA6B;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC9C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,UAAU,CAAC,IAAa,EAAE,MAAoB;IACrD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACvE,IAAI,MAAM,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IACzC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACrF,CAAC;AAED;;;GAGG;AACH,SAAS,UAAU,CAAC,KAAa,EAAE,GAAY,EAAE,WAAmB;IAClE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACxC,MAAM,IAAI,GAAqB,EAAE,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,SAAS;QAC9B,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,MAAM,KAAK,SAAS;YAAE,SAAS;QACnC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC;YACR,WAAW;YACX,KAAK;YACL,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;YAC1C,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7B,2FAA2F;YAC3F,gFAAgF;YAChF,GAAG,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,GAAG,MAAM;YACT,GAAG,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,QAAQ,CAAC;SAClD,CAAC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,OAAO,CAAC,QAAgB,EAAE,WAAmB;IACpD,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAC/B,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;AAC7F,CAAC;AAED,mGAAmG;AACnG,SAAS,SAAS,CAAC,IAAgD;IACjE,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACvF,OAAO,IAAI,CAAC,SAAS;QACnB,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;QAC9B,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC7E,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAAC,SAA4B;IACxD,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,UAAU,CAAC,SAA4B;IACrD,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjG,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,eAAe,CAAC,SAA4B;IAC1D,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;AACtF,CAAC;AAED;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,IAAY,EAAE,KAAa;IACpD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK;gBAAE,CAAC,EAAE,CAAC;YAC7B,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK;gBAAE,OAAO,IAAI,CAAC;QACvC,CAAC;QACD,IAAI,GAAG,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;YACxE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,oBAAoB,CAAC,OAAe,EAAE,KAAa;IACjE,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/E,CAAC"}
@@ -38,7 +38,7 @@
38
38
  * PURE AND INJECTED, like every reader on this axis: the record arrives as data, parsed at the app
39
39
  * edge from the target's own evidence, and the rows arrive from the target's own manifest.
40
40
  */
41
- import { type FitnessCheckIndex } from "../domain/fitnessChecks.js";
41
+ import type { FitnessCheckIndex } from "../domain/fitnessChecks.js";
42
42
  import type { GuardEvidenceObservation } from "../model.js";
43
43
  /**
44
44
  * ONE STEP'S ENTRY in the record, as the dump wrote it.
@@ -77,7 +77,7 @@ export interface CiStepRecordEntry {
77
77
  */
78
78
  export type CiStepRecord = Readonly<Record<string, CiStepRecordEntry>>;
79
79
  /**
80
- * The credits a CI RUN'S OWN RECORD raises — one per entry naming a configured STATIC row, carrying
80
+ * The credits a CI RUN'S OWN RECORD raises — one per entry naming a configured row, carrying
81
81
  * WHAT ITS STEP DID: `satisfied` off a step that succeeded (@SCN-LNT-021) and `failing` off one
82
82
  * that failed (@SCN-LNT-028). There is no third answer: a step the record says was skipped is
83
83
  * broken evidence, whatever its row says (3F-3252).
@@ -112,24 +112,12 @@ export type CiStepRecord = Readonly<Record<string, CiStepRecordEntry>>;
112
112
  * own checkout, over the target's own tree. Neither is the manifest-mentions-a-name reading the
113
113
  * discovered route takes.
114
114
  *
115
- * A MEASURED ROW RAISES NOTHING HERE, AND THAT IS THIS READER'S OWN CLAIM (@SCN-LNT-022): its
116
- * credit is its NUMBER, which arrives on the measurement stream already citing, and a credit
117
- * raised beside it would be a second credit answering one Evidence Obligation — quietly, because
118
- * the row does name that characteristic. A step's outcome is an exit code and an exit code is not
119
- * a measurement, so there was never a reading of this document that could have answered such a
120
- * row anyway.
121
- *
122
115
  * AN ENTRY NO CONFIGURED ROW ANSWERS IS NOT THIS READER'S BUSINESS. `checkout`, `setup-node` and
123
116
  * the dump step itself are steps and not checks, and silence about them is the correct report.
124
117
  *
125
- * AND A CONFIGURED ROW NO ENTRY ANSWERS RAISES A BROKEN CREDIT, WHATEVER ITS SHAPE (@SCN-LNT-027),
126
- * which is why this walks the ROWS as well as the record. The bar decides which stream carries a
127
- * row's credit and says nothing about whether the check ran, so a MEASURED row is held to this
128
- * second reading exactly as a static one is: its number is its credit and its own step is still
129
- * what says it ran — the step whose command wrote that number down (@SCN-LNT-024) — and a number
130
- * arriving for a row the run recorded no step for is a number from a route that enumerates nothing.
131
- * The rows are the denominator, and a check quietly lifted out of a pipeline goes dark on the side
132
- * the pipeline cannot reach.
118
+ * AND A CONFIGURED ROW NO ENTRY ANSWERS RAISES A BROKEN CREDIT (@SCN-LNT-027), which is why this
119
+ * walks the ROWS as well as the record. The rows are the denominator, and a check quietly lifted
120
+ * out of a pipeline goes dark on the side the pipeline cannot reach.
133
121
  */
134
122
  export declare function ciStepRecordCredits(record: CiStepRecord | undefined, fitnessChecks: FitnessCheckIndex): GuardEvidenceObservation[];
135
123
  //# sourceMappingURL=ciStepRecord.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ciStepRecord.d.ts","sourceRoot":"","sources":["../../src/parse/ciStepRecord.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE5D;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;;OAQG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAyLvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,YAAY,GAAG,SAAS,EAChC,aAAa,EAAE,iBAAiB,GAC/B,wBAAwB,EAAE,CA2B5B"}
1
+ {"version":3,"file":"ciStepRecord.d.ts","sourceRoot":"","sources":["../../src/parse/ciStepRecord.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,KAAK,EAAgB,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAElF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE5D;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;;OAQG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAyLvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,YAAY,GAAG,SAAS,EAChC,aAAa,EAAE,iBAAiB,GAC/B,wBAAwB,EAAE,CAqB5B"}
@@ -38,7 +38,6 @@
38
38
  * PURE AND INJECTED, like every reader on this axis: the record arrives as data, parsed at the app
39
39
  * edge from the target's own evidence, and the rows arrive from the target's own manifest.
40
40
  */
41
- import { carriesBar, } from "../domain/fitnessChecks.js";
42
41
  /** The provider's own two words for a step that RAN, spelled once each. */
43
42
  const SUCCESS = "success";
44
43
  const FAILURE = "failure";
@@ -196,7 +195,7 @@ function rowHasNoEntryMessage(scnId) {
196
195
  "`specController.fitnessChecks` — so the check did not run.");
197
196
  }
198
197
  /**
199
- * The credits a CI RUN'S OWN RECORD raises — one per entry naming a configured STATIC row, carrying
198
+ * The credits a CI RUN'S OWN RECORD raises — one per entry naming a configured row, carrying
200
199
  * WHAT ITS STEP DID: `satisfied` off a step that succeeded (@SCN-LNT-021) and `failing` off one
201
200
  * that failed (@SCN-LNT-028). There is no third answer: a step the record says was skipped is
202
201
  * broken evidence, whatever its row says (3F-3252).
@@ -231,24 +230,12 @@ function rowHasNoEntryMessage(scnId) {
231
230
  * own checkout, over the target's own tree. Neither is the manifest-mentions-a-name reading the
232
231
  * discovered route takes.
233
232
  *
234
- * A MEASURED ROW RAISES NOTHING HERE, AND THAT IS THIS READER'S OWN CLAIM (@SCN-LNT-022): its
235
- * credit is its NUMBER, which arrives on the measurement stream already citing, and a credit
236
- * raised beside it would be a second credit answering one Evidence Obligation — quietly, because
237
- * the row does name that characteristic. A step's outcome is an exit code and an exit code is not
238
- * a measurement, so there was never a reading of this document that could have answered such a
239
- * row anyway.
240
- *
241
233
  * AN ENTRY NO CONFIGURED ROW ANSWERS IS NOT THIS READER'S BUSINESS. `checkout`, `setup-node` and
242
234
  * the dump step itself are steps and not checks, and silence about them is the correct report.
243
235
  *
244
- * AND A CONFIGURED ROW NO ENTRY ANSWERS RAISES A BROKEN CREDIT, WHATEVER ITS SHAPE (@SCN-LNT-027),
245
- * which is why this walks the ROWS as well as the record. The bar decides which stream carries a
246
- * row's credit and says nothing about whether the check ran, so a MEASURED row is held to this
247
- * second reading exactly as a static one is: its number is its credit and its own step is still
248
- * what says it ran — the step whose command wrote that number down (@SCN-LNT-024) — and a number
249
- * arriving for a row the run recorded no step for is a number from a route that enumerates nothing.
250
- * The rows are the denominator, and a check quietly lifted out of a pipeline goes dark on the side
251
- * the pipeline cannot reach.
236
+ * AND A CONFIGURED ROW NO ENTRY ANSWERS RAISES A BROKEN CREDIT (@SCN-LNT-027), which is why this
237
+ * walks the ROWS as well as the record. The rows are the denominator, and a check quietly lifted
238
+ * out of a pipeline goes dark on the side the pipeline cannot reach.
252
239
  */
253
240
  export function ciStepRecordCredits(record, fitnessChecks) {
254
241
  if (record === undefined)
@@ -259,22 +246,15 @@ export function ciStepRecordCredits(record, fitnessChecks) {
259
246
  const row = fitnessChecks.get(citedScn);
260
247
  if (row === undefined)
261
248
  continue;
262
- // RECORDED BEFORE THE BAR IS ASKED ABOUT, and the order is the rule rather than a convenience.
263
- // A measured row's CREDIT is skipped here (@SCN-LNT-022) and its ENUMERATION never was: its
264
- // step appearing in the record is the step whose command wrote its number down (@SCN-LNT-024),
265
- // and that is what says its check ran, exactly as for a static row. Asking `carriesBar` first
266
- // would leave every measured row looking unrecorded on a record that carried it.
267
249
  recorded.add(citedScn);
268
- if (carriesBar(row))
269
- continue;
270
- // NO `continue` ON A READING THIS READER HAS NONE FOR (@SCN-LNT-026). Every configured static
271
- // row the record holds an entry for raises something; which of the two shapes it raises is the
250
+ // NO `continue` ON A READING THIS READER HAS NONE FOR (@SCN-LNT-026). Every configured row the
251
+ // record holds an entry for raises something; which of the two shapes it raises is the
272
252
  // credit builder's answer, and the fall-through reaches the loud one rather than the exit.
273
253
  credits.push(creditOf(citedScn, row, readingOf(step.outcome), step.outcome));
274
254
  }
275
255
  // AND THE ROWS ARE WALKED TOO, NOT ONLY THE RECORD (@SCN-LNT-027). The rows come from the
276
256
  // target's manifest and the enumeration from the run's own record, so a row the record held no
277
- // entry for is a check that did not run — broken evidence naming that row, whatever its shape.
257
+ // entry for is a check that did not run — broken evidence naming that row.
278
258
  for (const [scnId, row] of fitnessChecks) {
279
259
  if (recorded.has(scnId))
280
260
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"ciStepRecord.js","sourceRoot":"","sources":["../../src/parse/ciStepRecord.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ciStepRecord.js","sourceRoot":"","sources":["../../src/parse/ciStepRecord.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,13 @@
1
1
  /**
2
2
  * THE CODE RULES of `spec-controller tags` — everything about a feature CODE binding to a feature
3
- * FILE. Its siblings hold the other two questions: `corpusGrammarFaults.ts` whether a tag on a
4
- * scenario means anything, `corpusClaimFaults.ts` how many checks one scenario may claim.
5
- * `corpusFaults.ts` composes the three and is the only entry point any of them has.
3
+ * FILE. Its sibling holds the other question: `corpusGrammarFaults.ts` whether a tag on a scenario
4
+ * means anything. `corpusFaults.ts` composes the two and is the only entry point either of them
5
+ * has.
6
6
  *
7
7
  * WHY THE MODULE IS SPLIT AT ALL, AND WHY ON THIS SEAM. The rules were authored in one module and
8
8
  * that module reached the 400-line `max-lines` ceiling with four more grammar clauses still to
9
9
  * land. The ceiling is not negotiable and an exception entry would have bought silence rather than
10
- * a smaller module (@SCN-CPX-001), so the split is the answer canon already named. The seam is the
10
+ * a smaller module (@SCN-FIT-001), so the split is the answer canon already named. The seam is the
11
11
  * one the rules themselves have: a code rule asks *does this code name exactly one file, and is
12
12
  * this scenario written in the file its own code names* — questions answered from the corpus's
13
13
  * SHAPE, needing nothing about the target. A grammar rule asks *does this word mean anything
@@ -1,13 +1,13 @@
1
1
  /**
2
2
  * THE CODE RULES of `spec-controller tags` — everything about a feature CODE binding to a feature
3
- * FILE. Its siblings hold the other two questions: `corpusGrammarFaults.ts` whether a tag on a
4
- * scenario means anything, `corpusClaimFaults.ts` how many checks one scenario may claim.
5
- * `corpusFaults.ts` composes the three and is the only entry point any of them has.
3
+ * FILE. Its sibling holds the other question: `corpusGrammarFaults.ts` whether a tag on a scenario
4
+ * means anything. `corpusFaults.ts` composes the two and is the only entry point either of them
5
+ * has.
6
6
  *
7
7
  * WHY THE MODULE IS SPLIT AT ALL, AND WHY ON THIS SEAM. The rules were authored in one module and
8
8
  * that module reached the 400-line `max-lines` ceiling with four more grammar clauses still to
9
9
  * land. The ceiling is not negotiable and an exception entry would have bought silence rather than
10
- * a smaller module (@SCN-CPX-001), so the split is the answer canon already named. The seam is the
10
+ * a smaller module (@SCN-FIT-001), so the split is the answer canon already named. The seam is the
11
11
  * one the rules themselves have: a code rule asks *does this code name exactly one file, and is
12
12
  * this scenario written in the file its own code names* — questions answered from the corpus's
13
13
  * SHAPE, needing nothing about the target. A grammar rule asks *does this word mean anything