spec-controller 0.1.0-alpha.1 → 0.1.0-alpha.2

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 (65) hide show
  1. package/README.md +94 -0
  2. package/dist/cli-args.d.ts +73 -0
  3. package/dist/cli-args.d.ts.map +1 -0
  4. package/dist/cli-args.js +114 -0
  5. package/dist/cli-args.js.map +1 -0
  6. package/dist/cli-balance/cli.d.ts +2 -19
  7. package/dist/cli-balance/cli.d.ts.map +1 -1
  8. package/dist/cli-balance/cli.js +76 -78
  9. package/dist/cli-balance/cli.js.map +1 -1
  10. package/dist/cli-balance/emit/writer.d.ts +1 -1
  11. package/dist/cli-registry.d.ts +35 -12
  12. package/dist/cli-registry.d.ts.map +1 -1
  13. package/dist/cli-registry.js +93 -33
  14. package/dist/cli-registry.js.map +1 -1
  15. package/dist/cli.d.ts +5 -3
  16. package/dist/cli.d.ts.map +1 -1
  17. package/dist/cli.js +9 -3
  18. package/dist/cli.js.map +1 -1
  19. package/dist/corpus/cli.d.ts +34 -0
  20. package/dist/corpus/cli.d.ts.map +1 -0
  21. package/dist/corpus/cli.js +128 -0
  22. package/dist/corpus/cli.js.map +1 -0
  23. package/dist/deferralTags.d.ts +1 -1
  24. package/dist/deferralTags.js +1 -1
  25. package/dist/ingest/gherkinValidation.d.ts +23 -0
  26. package/dist/ingest/gherkinValidation.d.ts.map +1 -1
  27. package/dist/ingest/gherkinValidation.js +27 -0
  28. package/dist/ingest/gherkinValidation.js.map +1 -1
  29. package/dist/ingest/ingestQualityChecks.d.ts +17 -2
  30. package/dist/ingest/ingestQualityChecks.d.ts.map +1 -1
  31. package/dist/ingest/ingestQualityChecks.js +94 -39
  32. package/dist/ingest/ingestQualityChecks.js.map +1 -1
  33. package/dist/ingest/ingestScenarios.d.ts +2 -1
  34. package/dist/ingest/ingestScenarios.d.ts.map +1 -1
  35. package/dist/ingest/ingestScenarios.js +32 -3
  36. package/dist/ingest/ingestScenarios.js.map +1 -1
  37. package/dist/mutation-ratchet/index.d.ts +36 -38
  38. package/dist/mutation-ratchet/index.d.ts.map +1 -1
  39. package/dist/mutation-ratchet/index.js +35 -37
  40. package/dist/mutation-ratchet/index.js.map +1 -1
  41. package/dist/mutation-ratchet/record.d.ts +21 -53
  42. package/dist/mutation-ratchet/record.d.ts.map +1 -1
  43. package/dist/mutation-ratchet/record.js +28 -44
  44. package/dist/mutation-ratchet/record.js.map +1 -1
  45. package/dist/mutation-ratchet/report.d.ts +31 -5
  46. package/dist/mutation-ratchet/report.d.ts.map +1 -1
  47. package/dist/mutation-ratchet/report.js +11 -3
  48. package/dist/mutation-ratchet/report.js.map +1 -1
  49. package/package.json +7 -2
  50. package/dist/mutation-ratchet/ratchet.d.ts +0 -129
  51. package/dist/mutation-ratchet/ratchet.d.ts.map +0 -1
  52. package/dist/mutation-ratchet/ratchet.js +0 -222
  53. package/dist/mutation-ratchet/ratchet.js.map +0 -1
  54. package/dist/mutation-ratchet/ratchetCli.d.ts +0 -57
  55. package/dist/mutation-ratchet/ratchetCli.d.ts.map +0 -1
  56. package/dist/mutation-ratchet/ratchetCli.js +0 -139
  57. package/dist/mutation-ratchet/ratchetCli.js.map +0 -1
  58. package/dist/mutation-ratchet/reconcile.d.ts +0 -82
  59. package/dist/mutation-ratchet/reconcile.d.ts.map +0 -1
  60. package/dist/mutation-ratchet/reconcile.js +0 -67
  61. package/dist/mutation-ratchet/reconcile.js.map +0 -1
  62. package/dist/mutation-ratchet/verdict.d.ts +0 -177
  63. package/dist/mutation-ratchet/verdict.d.ts.map +0 -1
  64. package/dist/mutation-ratchet/verdict.js +0 -387
  65. package/dist/mutation-ratchet/verdict.js.map +0 -1
@@ -1,48 +1,46 @@
1
1
  /**
2
2
  * THE MODULE'S OWN SURFACE — curated symbol by symbol, never a re-export of the tree behind it
3
- * (@SCN-RAT-014, 3F-2804).
3
+ * (3F-2804, 3F-3337).
4
+ *
5
+ * WHAT IS BEHIND THIS BARREL NOW IS TWO READERS, AND THE RATCHET THEY WERE BUILT FOR IS GONE
6
+ * (3F-3337). `record.ts` reads a target's banked gate record and hands back the kill floor it
7
+ * implies; `report.ts` counts a mutation report's own mutants into a measurement. What left with
8
+ * the ratchet is everything that COMPARED the two — the verdicts, the up-only recorder, the
9
+ * reconciliation entry and the command that ended on it — because this repository's gate is now a
10
+ * per-mutant comparison the runner keeps, and nothing types a mutation count here any more.
11
+ *
12
+ * ITS TWO CONSUMERS ARE BOTH IN THIS TREE, AND THEY WANT DIFFERENT HALVES. `ingest/
13
+ * ingestQualityChecks.ts` wants the RECORD half: the engine's `mutationGate` bar kind lets a target
14
+ * author a fitness row naming a gate instead of a figure, which is a published capability decided
15
+ * over a target's own record (@SCN-MUT-012, @SCN-MUT-013). `tests/checks/mutationScoreCli.ts` wants
16
+ * the REPORT half: `pnpm mutation:score` takes the two counts out of a sweep's report and divides
17
+ * them (@SCN-MUT-007, @SCN-MUT-008). Neither wants the other's, which is why both are named here
18
+ * rather than the tree behind them being passed on wholesale.
4
19
  *
5
20
  * A BARREL THAT RE-EXPORTED EVERY MODULE WOULD BE A CONTRACT NOBODY WROTE. Each module below
6
21
  * exports what its own siblings need from it, and sibling-visibility is a much wider set than
7
- * consumer-visibility: the gate-block span finder, the field rewriter, the per-verdict message
8
- * builders, the status sets and the loader's per-field readers are all exported so their
9
- * neighbours can reach them without a second copy. Passing that set on wholesale would freeze
10
- * every one of them as something a consumer may depend on, and the first refactor that moved one
11
- * would be a breaking change nobody meant to make. So this file names what a caller may hold and
12
- * the omissions are decisions.
13
- *
14
- * WHAT IS HERE IS THIS LIBRARY'S OWN ENTRY, AND WHAT ITS FIRST CONSUMER NEEDS. The entry is
15
- * `reconcileGate` — hand it the five terms a project owns and it answers with a verdict. Around it
16
- * sit the pieces a consumer that wants to compose its own way needs: the verdict over counts
17
- * already in hand, the two readers that turn a report into counts, the recorder, the loader, the
18
- * three score functions a consumer rendering its own view needs, the kill floor those same figures
19
- * imply in mutants, the default record name, and both error types the functions above raise — the
20
- * record fault and the up-only refusal — because a refusal a caller cannot name in a `catch` is a
21
- * refusal that caller cannot handle.
22
+ * consumer-visibility. Passing that set on wholesale would freeze every one of them as something a
23
+ * caller may depend on, and the first refactor that moved one would be a breaking change nobody
24
+ * meant to make. So this file names what a caller may hold and the omissions are decisions.
22
25
  *
23
- * THE KILL FLOOR CROSSES FOR A SECOND KIND OF CONSUMER, AND THAT IS WHY IT IS NOT A SCORE (3F-2788).
24
- * Everything above answers a reader that wants this library's verdict. `killFloorOf` answers one
25
- * that wants only the BAR — a ledger holding its own measured row to the same figure this library
26
- * reconciles against, so the two cannot disagree by construction. A consumer that derived it
27
- * instead would be the second place knowing how an allowance is spent.
26
+ * THE KILL FLOOR IS THE BAR, AND IT IS NOT A SCORE (3F-2788). `killFloorOf` answers a ledger
27
+ * holding a measured row to the figure a gate's own record implies, in mutants — a percentage would
28
+ * fold the kill lost and the population grown into one number, which is the distinction a bar on
29
+ * this axis exists to keep. A consumer that derived it instead would be the second place knowing
30
+ * how an allowance is spent.
28
31
  *
29
- * THE TYPES ARE SPELLED FOR A CONSUMER'S NAMESPACE RATHER THAN FOR THIS MODULE'S. `GateRecord` and
30
- * `GateAllowance` are unambiguous inside a directory about nothing else; imported into a repository
31
- * that has gates of several kinds they are not, so they cross this line under the fuller names.
32
- * The aliasing is deliberate and one-directional: the internal spellings stay internal.
32
+ * THE TYPES ARE SPELLED FOR A CONSUMER'S NAMESPACE RATHER THAN FOR THIS MODULE'S. `GateRecord` is
33
+ * unambiguous inside a directory about nothing else; imported into a repository that has gates of
34
+ * several kinds it is not, so it crosses this line under the fuller name. The aliasing is
35
+ * deliberate and one-directional: the internal spelling stays internal.
33
36
  *
34
- * AND NO DRIFT GUARD STANDS OVER IT, WHICH IS A DECISION NOW RATHER THAN AN OPEN QUESTION. The
35
- * sibling core package's barrel is reflected and compared against a frozen list in both directions,
36
- * so a symbol quietly added or dropped reds. That guard is what a PUBLISHED surface is owed, and
37
- * 3F-2859 stopped publishing this one: no manifest key resolves here, and no caller outside this
38
- * repository can spell the specifier at all. Freezing the list would make every refactor behind
39
- * this barrel a change to a contract nobody holds. What the curation above is still for is the
40
- * reader of this repository's own gate, and @SCN-RAT-014 reads the list back beside it — so a
41
- * symbol added here is a symbol somebody wrote down twice, which is the guard this surface earns.
37
+ * AND NO DRIFT GUARD STANDS OVER IT, WHICH IS A DECISION RATHER THAN AN OPEN QUESTION. The sibling
38
+ * core package's barrel is reflected and compared against a frozen list in both directions, so a
39
+ * symbol quietly added or dropped reds. That is what a PUBLISHED surface is owed, and 3F-2859
40
+ * stopped publishing this one: no manifest key resolves here, and no caller outside this repository
41
+ * can spell the specifier at all. Freezing the list would make every refactor behind this barrel a
42
+ * change to a contract nobody holds.
42
43
  */
43
- export { RECORD_FILE, reconcileGate } from "./reconcile.js";
44
- export { floorOf, gateRecordFor, killFloorOf, MalformedRecordError, parseGateRecords, recordedScoreOf, scoreOf, } from "./record.js";
45
- export { FallRefusedError, raisedRecordText } from "./ratchet.js";
44
+ export { floorOf, gateRecordFor, killFloorOf, MalformedRecordError, parseGateRecords, RECORD_FILE, } from "./record.js";
46
45
  export { measurementFromReport, readMutationReport, } from "./report.js";
47
- export { verdictFor, } from "./verdict.js";
48
46
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mutation-ratchet/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAuB,MAAM,gBAAgB,CAAC;AAEjF,OAAO,EACL,OAAO,EACP,aAAa,EACb,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,OAAO,GAGR,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAElE,OAAO,EACL,qBAAqB,EACrB,kBAAkB,GAEnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,UAAU,GAIX,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mutation-ratchet/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,EACL,OAAO,EACP,aAAa,EACb,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,GAEZ,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,qBAAqB,EACrB,kBAAkB,GAGnB,MAAM,aAAa,CAAC"}
@@ -1,6 +1,15 @@
1
1
  /**
2
2
  * A GATE'S RECORD — the pair of counts it last banked, and the allowance stated against them
3
- * (@SCN-RAT-001, 3F-2790).
3
+ * (@SCN-MUT-012, 3F-2790, 3F-3337).
4
+ *
5
+ * THE RATCHET THAT ONCE RECONCILED AGAINST THIS IS GONE; THE READER IS NOT (3F-3337). What reaches
6
+ * this module now is the engine's `mutationGate` bar kind, through `ingestQualityChecks.ts`: a
7
+ * target may author a fitness row whose bar names a gate rather than a figure, and the kill floor
8
+ * that gate's record implies is the bar the ledger then holds it to. That is a published
9
+ * capability, decided over a TARGET'S record, and this repository no longer keeps one of its own.
10
+ * @SCN-MUT-012 and @SCN-MUT-013 are what specify it — the second carrying, as its own Examples,
11
+ * the record that holds no gate of that name, the record that is not there to be read and the
12
+ * record holding text nothing can read as a record.
4
13
  *
5
14
  * THE RECORD IS TWO COUNTS, NEVER A BARE SCORE, and that is the load-bearing choice this whole
6
15
  * module exists to make possible. A mutation score is detected over total, so it falls for two
@@ -21,7 +30,7 @@
21
30
  * measured nothing read as scoring zero, an allowance nobody justified read as justified. The bar
22
31
  * is then enforced as though somebody had written it, and the only symptom is a build that has
23
32
  * quietly stopped being able to red. So each one is refused by name, and the refusal says which
24
- * record it read and where in that record the fault is (@SCN-RAT-002, 3F-2792).
33
+ * record it read and where in that record the fault is (@SCN-MUT-013, 3F-2792).
25
34
  *
26
35
  * IT IS NOT A STATIC CHECK, and takes no `static-check:` prefix. A static check is a pure function
27
36
  * of the checked-out tree; the record this reads feeds a reconciler that judges a MEASUREMENT,
@@ -29,27 +38,18 @@
29
38
  * this portfolio already carries.
30
39
  */
31
40
  /**
32
- * The section of a record file that holds every gate's counts.
33
- *
34
- * EXPORTED SO THE RECORDER CANNOT HOLD A SECOND COPY OF IT. `ratchet.ts` finds the same section in
35
- * the same text in order to rewrite two of its lines, and two spellings of one name is the
36
- * agreeing-until-somebody-edits-one shape this whole library exists to remove.
41
+ * The name a record is filed under when its caller does not choose one.
37
42
  *
38
- * The SECTION name is this module's, and the gate names inside it are the project's. A record file
39
- * is a project's own document and may hold whatever else that project keeps in it; what this module
40
- * asks of it is one section, under one name, so a project can file its mutation bars beside the
41
- * rest of its policy rather than in a file of their own.
42
- */
43
- export declare const MUTATION_GATES = "mutation-gates";
44
- /**
45
- * The field a refusal names when the fault is the ASK rather than a field of a gate's block — a
46
- * gate the record does not hold at all.
43
+ * A DEFAULT, NEVER A CONSTANT THE READER GOES LOOKING FOR. Which file holds a project's bars is
44
+ * that project's own fact, and a caller naming its own is answered by that name — this is only
45
+ * what stands in when none is given, and it is exported so a caller happy with the convention does
46
+ * not have to respell it and get one character of it wrong.
47
47
  *
48
- * EXPORTED FOR THE SAME REASON AS THE SECTION NAME: `ratchet.ts` refuses the same way when it is
49
- * asked to raise a gate no block is written for, and a refusal a reader has to recognise in two
50
- * spellings is one they will eventually parse wrongly.
48
+ * IT MOVED HERE FROM `reconcile.ts` WHEN THE RATCHET LEFT (3F-3337), unchanged. The entry that used
49
+ * to sit beside it reconciled a gate against this record; what is left reading a record is this
50
+ * module, so the default name sits with the reader that defaults to it.
51
51
  */
52
- export declare const WHOLE_GATE = "<gate>";
52
+ export declare const RECORD_FILE = "quality-thresholds.yml";
53
53
  /**
54
54
  * Raised when a record cannot be read as a bar.
55
55
  *
@@ -107,36 +107,6 @@ export interface GateRecord {
107
107
  readonly total: number;
108
108
  readonly allowance: GateAllowance;
109
109
  }
110
- /** A mutation score, as a percentage, computed from counts rather than read off a report. */
111
- export declare function scoreOf(detected: number, total: number): number;
112
- /** A percentage, at the one precision every figure in this library is stated to. */
113
- export declare function pct(value: number): string;
114
- /**
115
- * `detected/total (score%)` — the one shape every count pair in this library is stated in.
116
- *
117
- * BOTH HALVES, ALWAYS, AND THE SCORE BESIDE THEM. A message naming only the figure that moved
118
- * leaves its reader unable to see WHICH of the two moved, which is the single distinction this
119
- * library exists to make.
120
- *
121
- * IT LIVES HERE, BESIDE THE COUNTS, BECAUSE TWO READERS STATE IT. The reconciler prints it in every
122
- * verdict and the recorder prints it in its refusal, and one sentence spelled twice is the
123
- * agreeing-until-somebody-edits-one shape this library was built to remove.
124
- */
125
- export declare function counts(detected: number, total: number): string;
126
- /**
127
- * Whether one pair of counts scores strictly ABOVE another.
128
- *
129
- * CROSS-MULTIPLIED RATHER THAN DIVIDED, so the comparison is exact. Two scores equal as ratios can
130
- * differ in their last bit once each has been through a division, and a pair that did not move would
131
- * then read as one that did. The counts are whole and small enough that the products are exact.
132
- *
133
- * ONE FUNCTION READ BOTH WAYS ROUND, WHICH IS WHAT LEAVES EQUAL UNCLAIMED. Above and below are the
134
- * same two products with the arguments swapped, so no run can be claimed by both, and — the case
135
- * that matters — none can be claimed by neither. Two comparisons reached by different arithmetic
136
- * could each answer `false` for a run that is genuinely one or the other, and the run would fall out
137
- * of every reader here at once.
138
- */
139
- export declare function scoreRoseOver(detected: number, total: number, overDetected: number, overTotal: number): boolean;
140
110
  /**
141
111
  * The failing floor: the record's counts with its allowance spent out of the DETECTED count.
142
112
  *
@@ -170,8 +140,6 @@ export declare function floorOf(record: GateRecord): number;
170
140
  * holding it — agreeing until the day one of them is edited.
171
141
  */
172
142
  export declare function killFloorOf(record: GateRecord): number;
173
- /** The score the record itself states — what the ratchet raises and the verdict compares against. */
174
- export declare function recordedScoreOf(record: GateRecord): number;
175
143
  /**
176
144
  * Read every gate's record out of a record file's text.
177
145
  *
@@ -189,7 +157,7 @@ export declare function parseGateRecords(text: string, recordFile: string): Map<
189
157
  * This one is a record that reads perfectly, asked for a gate it never held — a gate name mistyped
190
158
  * where the caller states it. The lenient answer is not a wrong bar but NO bar, which reads
191
159
  * downstream as a gate with nothing to enforce, and it greens for as long as the typo survives.
192
- * Nothing about the record is wrong, so nobody is ever sent to look at it (@SCN-RAT-003, 3F-2793).
160
+ * Nothing about the record is wrong, so nobody is ever sent to look at it (@SCN-MUT-013, 3F-2793).
193
161
  *
194
162
  * AND THE REFUSAL LISTS THE GATES THE RECORD DOES HOLD. A record's gates are near-neighbours by
195
163
  * construction — a project names them after the scopes it is quarantining from each other — so a
@@ -1 +1 @@
1
- {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../src/mutation-ratchet/record.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAIH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAkB/C;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,WAAW,CAAC;AAEnC;;;;;;;;;;;;GAYG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAE3C,yEAAyE;IACzE,QAAQ,CAAC,UAAU,EAAE,MAAM;IAC3B,uFAAuF;IACvF,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,4FAA4F;IAC5F,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,mCAAmC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM;;IAPtB,yEAAyE;IAChE,UAAU,EAAE,MAAM;IAC3B,uFAAuF;IAC9E,OAAO,EAAE,MAAM;IACxB,4FAA4F;IACnF,GAAG,EAAE,MAAM;IACpB,mCAAmC;IAC1B,KAAK,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM;CAKjB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,gCAAgC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,+EAA+E;AAC/E,MAAM,WAAW,UAAU;IACzB,6FAA6F;IAC7F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,uDAAuD;IACvD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;CACnC;AAED,6FAA6F;AAC7F,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,oFAAoF;AACpF,wBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAET;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAElD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAEtD;AAED,qGAAqG;AACrG,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAE1D;AAiLD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAI1F;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAChC,UAAU,EAAE,MAAM,GACjB,UAAU,CAYZ"}
1
+ {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../src/mutation-ratchet/record.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAIH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW,2BAA2B,CAAC;AA0CpD;;;;;;;;;;;;GAYG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAE3C,yEAAyE;IACzE,QAAQ,CAAC,UAAU,EAAE,MAAM;IAC3B,uFAAuF;IACvF,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,4FAA4F;IAC5F,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,mCAAmC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM;;IAPtB,yEAAyE;IAChE,UAAU,EAAE,MAAM;IAC3B,uFAAuF;IAC9E,OAAO,EAAE,MAAM;IACxB,4FAA4F;IACnF,GAAG,EAAE,MAAM;IACpB,mCAAmC;IAC1B,KAAK,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM;CAKjB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,gCAAgC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,+EAA+E;AAC/E,MAAM,WAAW,UAAU;IACzB,6FAA6F;IAC7F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,uDAAuD;IACvD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;CACnC;AAOD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAElD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAEtD;AAiLD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAI1F;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAChC,UAAU,EAAE,MAAM,GACjB,UAAU,CAYZ"}
@@ -1,6 +1,15 @@
1
1
  /**
2
2
  * A GATE'S RECORD — the pair of counts it last banked, and the allowance stated against them
3
- * (@SCN-RAT-001, 3F-2790).
3
+ * (@SCN-MUT-012, 3F-2790, 3F-3337).
4
+ *
5
+ * THE RATCHET THAT ONCE RECONCILED AGAINST THIS IS GONE; THE READER IS NOT (3F-3337). What reaches
6
+ * this module now is the engine's `mutationGate` bar kind, through `ingestQualityChecks.ts`: a
7
+ * target may author a fitness row whose bar names a gate rather than a figure, and the kill floor
8
+ * that gate's record implies is the bar the ledger then holds it to. That is a published
9
+ * capability, decided over a TARGET'S record, and this repository no longer keeps one of its own.
10
+ * @SCN-MUT-012 and @SCN-MUT-013 are what specify it — the second carrying, as its own Examples,
11
+ * the record that holds no gate of that name, the record that is not there to be read and the
12
+ * record holding text nothing can read as a record.
4
13
  *
5
14
  * THE RECORD IS TWO COUNTS, NEVER A BARE SCORE, and that is the load-bearing choice this whole
6
15
  * module exists to make possible. A mutation score is detected over total, so it falls for two
@@ -21,7 +30,7 @@
21
30
  * measured nothing read as scoring zero, an allowance nobody justified read as justified. The bar
22
31
  * is then enforced as though somebody had written it, and the only symptom is a build that has
23
32
  * quietly stopped being able to red. So each one is refused by name, and the refusal says which
24
- * record it read and where in that record the fault is (@SCN-RAT-002, 3F-2792).
33
+ * record it read and where in that record the fault is (@SCN-MUT-013, 3F-2792).
25
34
  *
26
35
  * IT IS NOT A STATIC CHECK, and takes no `static-check:` prefix. A static check is a pure function
27
36
  * of the checked-out tree; the record this reads feeds a reconciler that judges a MEASUREMENT,
@@ -29,6 +38,19 @@
29
38
  * this portfolio already carries.
30
39
  */
31
40
  import { parse } from "yaml";
41
+ /**
42
+ * The name a record is filed under when its caller does not choose one.
43
+ *
44
+ * A DEFAULT, NEVER A CONSTANT THE READER GOES LOOKING FOR. Which file holds a project's bars is
45
+ * that project's own fact, and a caller naming its own is answered by that name — this is only
46
+ * what stands in when none is given, and it is exported so a caller happy with the convention does
47
+ * not have to respell it and get one character of it wrong.
48
+ *
49
+ * IT MOVED HERE FROM `reconcile.ts` WHEN THE RATCHET LEFT (3F-3337), unchanged. The entry that used
50
+ * to sit beside it reconciled a gate against this record; what is left reading a record is this
51
+ * module, so the default name sits with the reader that defaults to it.
52
+ */
53
+ export const RECORD_FILE = "quality-thresholds.yml";
32
54
  /**
33
55
  * The section of a record file that holds every gate's counts.
34
56
  *
@@ -41,7 +63,7 @@ import { parse } from "yaml";
41
63
  * asks of it is one section, under one name, so a project can file its mutation bars beside the
42
64
  * rest of its policy rather than in a file of their own.
43
65
  */
44
- export const MUTATION_GATES = "mutation-gates";
66
+ const MUTATION_GATES = "mutation-gates";
45
67
  /**
46
68
  * The document itself, when the fault is above any one gate — a record whose top level is not a
47
69
  * mapping of sections, or one the YAML parser could not read at all.
@@ -63,7 +85,7 @@ const WHOLE_SECTION = "<section>";
63
85
  * asked to raise a gate no block is written for, and a refusal a reader has to recognise in two
64
86
  * spellings is one they will eventually parse wrongly.
65
87
  */
66
- export const WHOLE_GATE = "<gate>";
88
+ const WHOLE_GATE = "<gate>";
67
89
  /**
68
90
  * Raised when a record cannot be read as a bar.
69
91
  *
@@ -100,43 +122,9 @@ export class MalformedRecordError extends Error {
100
122
  }
101
123
  }
102
124
  /** A mutation score, as a percentage, computed from counts rather than read off a report. */
103
- export function scoreOf(detected, total) {
125
+ function scoreOf(detected, total) {
104
126
  return (detected / total) * 100;
105
127
  }
106
- /** A percentage, at the one precision every figure in this library is stated to. */
107
- export function pct(value) {
108
- return value.toFixed(4);
109
- }
110
- /**
111
- * `detected/total (score%)` — the one shape every count pair in this library is stated in.
112
- *
113
- * BOTH HALVES, ALWAYS, AND THE SCORE BESIDE THEM. A message naming only the figure that moved
114
- * leaves its reader unable to see WHICH of the two moved, which is the single distinction this
115
- * library exists to make.
116
- *
117
- * IT LIVES HERE, BESIDE THE COUNTS, BECAUSE TWO READERS STATE IT. The reconciler prints it in every
118
- * verdict and the recorder prints it in its refusal, and one sentence spelled twice is the
119
- * agreeing-until-somebody-edits-one shape this library was built to remove.
120
- */
121
- export function counts(detected, total) {
122
- return `${detected}/${total} (${pct(scoreOf(detected, total))}%)`;
123
- }
124
- /**
125
- * Whether one pair of counts scores strictly ABOVE another.
126
- *
127
- * CROSS-MULTIPLIED RATHER THAN DIVIDED, so the comparison is exact. Two scores equal as ratios can
128
- * differ in their last bit once each has been through a division, and a pair that did not move would
129
- * then read as one that did. The counts are whole and small enough that the products are exact.
130
- *
131
- * ONE FUNCTION READ BOTH WAYS ROUND, WHICH IS WHAT LEAVES EQUAL UNCLAIMED. Above and below are the
132
- * same two products with the arguments swapped, so no run can be claimed by both, and — the case
133
- * that matters — none can be claimed by neither. Two comparisons reached by different arithmetic
134
- * could each answer `false` for a run that is genuinely one or the other, and the run would fall out
135
- * of every reader here at once.
136
- */
137
- export function scoreRoseOver(detected, total, overDetected, overTotal) {
138
- return detected * overTotal > overDetected * total;
139
- }
140
128
  /**
141
129
  * The failing floor: the record's counts with its allowance spent out of the DETECTED count.
142
130
  *
@@ -174,10 +162,6 @@ export function floorOf(record) {
174
162
  export function killFloorOf(record) {
175
163
  return record.detected - record.allowance.mutants;
176
164
  }
177
- /** The score the record itself states — what the ratchet raises and the verdict compares against. */
178
- export function recordedScoreOf(record) {
179
- return scoreOf(record.detected, record.total);
180
- }
181
165
  /**
182
166
  * Read the record's text into a document mapping.
183
167
  *
@@ -303,7 +287,7 @@ export function parseGateRecords(text, recordFile) {
303
287
  * This one is a record that reads perfectly, asked for a gate it never held — a gate name mistyped
304
288
  * where the caller states it. The lenient answer is not a wrong bar but NO bar, which reads
305
289
  * downstream as a gate with nothing to enforce, and it greens for as long as the typo survives.
306
- * Nothing about the record is wrong, so nobody is ever sent to look at it (@SCN-RAT-003, 3F-2793).
290
+ * Nothing about the record is wrong, so nobody is ever sent to look at it (@SCN-MUT-013, 3F-2793).
307
291
  *
308
292
  * AND THE REFUSAL LISTS THE GATES THE RECORD DOES HOLD. A record's gates are near-neighbours by
309
293
  * construction — a project names them after the scopes it is quarantining from each other — so a
@@ -1 +1 @@
1
- {"version":3,"file":"record.js","sourceRoot":"","sources":["../../src/mutation-ratchet/record.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"record.js","sourceRoot":"","sources":["../../src/mutation-ratchet/record.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,13 @@
1
1
  /**
2
2
  * THE MEASUREMENT — a gate's run, counted out of its mutation report's own mutants
3
- * (@SCN-RAT-010, 3F-2799).
3
+ * (@SCN-MUT-007, 3F-2799, 3F-3337).
4
+ *
5
+ * THE RATCHET THAT RECONCILED THIS IS GONE; THE READER IS NOT (3F-3337). Its one remaining caller
6
+ * is `tests/checks/mutationScoreCli.ts` — `pnpm mutation:score`, the producer that posts
7
+ * SCN-FIT-002's number — which takes the two counts out of this and divides them. @SCN-MUT-007 and
8
+ * @SCN-MUT-008 are what specify it now, and they state the same two things this file states: the
9
+ * valid population is the killed and the timed-out over those plus the survived and the
10
+ * never-covered, and a run with no readable report posts nothing rather than a count of zero.
4
11
  *
5
12
  * STATED, NEVER INFERRED, AND THAT IS THE WHOLE MODULE. A mutation report groups its mutants by
6
13
  * the file they were made in and gives each one a status. The metric scores two of those statuses
@@ -21,7 +28,8 @@
21
28
  * AND THE REPORT'S OWN THRESHOLDS ARE NOT READ, WHICH IS THE SAME RULING ONE ARTEFACT FURTHER OUT.
22
29
  * A report carries the thresholds its own run was configured against, and reading them would be
23
30
  * taking the runner's verdict on its own homework as the measurement. The bar lives in the record
24
- * (`record.ts`), and the report is only ever asked what happened. Every figure produced here is
31
+ * (SCN-FIT-002's own row, which `stryker.config.mjs` reads back), and the report is only ever
32
+ * asked what happened. Every figure produced here is
25
33
  * counted from the mutants; every other number in the document is left where it lies, however
26
34
  * conveniently it is shaped.
27
35
  *
@@ -31,7 +39,7 @@
31
39
  * holding exactly one, which is the shape a small fixture takes by default.
32
40
  *
33
41
  * AND A REPORT THAT CANNOT BE READ, OR THAT HOLDS NO SCORED MUTANT AT ALL, IS REFUSED RATHER THAN
34
- * SCORED ZERO (@SCN-RAT-009). Zero is a measurement — a run that mutated the scope and killed none
42
+ * SCORED ZERO (@SCN-MUT-008). Zero is a measurement — a run that mutated the scope and killed none
35
43
  * of it — and the two must not be spelled the same, because reconciling a zero reaches a regression
36
44
  * whose message sends its reader hunting kills that in this case never happened. The refusal comes
37
45
  * back as a value rather than a throw, so a caller cannot drop it by forgetting to catch.
@@ -40,9 +48,27 @@
40
48
  * is the report FORMAT's, which is nobody's installation, and the gate's name arrives from the
41
49
  * caller rather than out of the document.
42
50
  */
43
- import type { MutationMeasurement } from "./verdict.js";
44
51
  /**
45
- * A report read: the measurement, or the reason there is not one (@SCN-RAT-009, 3F-2800).
52
+ * One gate's measured run, in the two counts the metric is defined over.
53
+ *
54
+ * IT MOVED HERE FROM `verdict.ts` WHEN THE RATCHET LEFT (3F-3337), unchanged. It sat beside the
55
+ * comparison while there was one; what produces it now is this module alone, so it sits where it
56
+ * is made.
57
+ *
58
+ * TWO COUNTS AND NOT A SCORE. A measurement that arrived as a score would already have folded the
59
+ * two events a reader has to tell apart — a kill lost, and a population that grew — into one
60
+ * number, before any caller could look at either.
61
+ */
62
+ export interface MutationMeasurement {
63
+ /** The gate this run measured, as the caller names it. */
64
+ readonly gate: string;
65
+ /** Mutants the suite detected. */
66
+ readonly detected: number;
67
+ /** Every mutant the gate measured, detected or not. */
68
+ readonly total: number;
69
+ }
70
+ /**
71
+ * A report read: the measurement, or the reason there is not one (@SCN-MUT-008, 3F-2800).
46
72
  *
47
73
  * A REFUSAL IS A RESULT, NEVER AN EXCEPTION THE CALLER MAY FORGET TO CATCH. Reading a report is the
48
74
  * one step of this library that reaches for something outside its own arguments, so it is the one
@@ -1 +1 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/mutation-ratchet/report.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,mBAAmB,CAAA;CAAE,GAChE;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AA+DpD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GACjB,kBAAkB,CAoBpB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,kBAAkB,CAWvF"}
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/mutation-ratchet/report.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAIH;;;;;;;;;;GAUG;AACH,MAAM,WAAW,mBAAmB;IAClC,0DAA0D;IAC1D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,uDAAuD;IACvD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,mBAAmB,CAAA;CAAE,GAChE;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AA+DpD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GACjB,kBAAkB,CAoBpB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,kBAAkB,CAWvF"}
@@ -1,6 +1,13 @@
1
1
  /**
2
2
  * THE MEASUREMENT — a gate's run, counted out of its mutation report's own mutants
3
- * (@SCN-RAT-010, 3F-2799).
3
+ * (@SCN-MUT-007, 3F-2799, 3F-3337).
4
+ *
5
+ * THE RATCHET THAT RECONCILED THIS IS GONE; THE READER IS NOT (3F-3337). Its one remaining caller
6
+ * is `tests/checks/mutationScoreCli.ts` — `pnpm mutation:score`, the producer that posts
7
+ * SCN-FIT-002's number — which takes the two counts out of this and divides them. @SCN-MUT-007 and
8
+ * @SCN-MUT-008 are what specify it now, and they state the same two things this file states: the
9
+ * valid population is the killed and the timed-out over those plus the survived and the
10
+ * never-covered, and a run with no readable report posts nothing rather than a count of zero.
4
11
  *
5
12
  * STATED, NEVER INFERRED, AND THAT IS THE WHOLE MODULE. A mutation report groups its mutants by
6
13
  * the file they were made in and gives each one a status. The metric scores two of those statuses
@@ -21,7 +28,8 @@
21
28
  * AND THE REPORT'S OWN THRESHOLDS ARE NOT READ, WHICH IS THE SAME RULING ONE ARTEFACT FURTHER OUT.
22
29
  * A report carries the thresholds its own run was configured against, and reading them would be
23
30
  * taking the runner's verdict on its own homework as the measurement. The bar lives in the record
24
- * (`record.ts`), and the report is only ever asked what happened. Every figure produced here is
31
+ * (SCN-FIT-002's own row, which `stryker.config.mjs` reads back), and the report is only ever
32
+ * asked what happened. Every figure produced here is
25
33
  * counted from the mutants; every other number in the document is left where it lies, however
26
34
  * conveniently it is shaped.
27
35
  *
@@ -31,7 +39,7 @@
31
39
  * holding exactly one, which is the shape a small fixture takes by default.
32
40
  *
33
41
  * AND A REPORT THAT CANNOT BE READ, OR THAT HOLDS NO SCORED MUTANT AT ALL, IS REFUSED RATHER THAN
34
- * SCORED ZERO (@SCN-RAT-009). Zero is a measurement — a run that mutated the scope and killed none
42
+ * SCORED ZERO (@SCN-MUT-008). Zero is a measurement — a run that mutated the scope and killed none
35
43
  * of it — and the two must not be spelled the same, because reconciling a zero reaches a regression
36
44
  * whose message sends its reader hunting kills that in this case never happened. The refusal comes
37
45
  * back as a value rather than a throw, so a caller cannot drop it by forgetting to catch.
@@ -1 +1 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/mutation-ratchet/report.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAmBnD;;;;;;GAMG;AACH,MAAM,QAAQ,GAAsB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,UAAU,GAAsB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AAOjE,qCAAqC;AACrC,SAAS,OAAO,CAAC,MAAc;IAC7B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC/B,CAAC;AAED,yFAAyF;AACzF,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,iFAAiF;AACjF,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,SAAS,CAAC,QAAiC;IAClD,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3C,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9D,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,OAAmC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5E,CAAC,CAAC,CAAC;AACL,CAAC;AAED,oEAAoE;AACpE,SAAS,OAAO,CAAC,OAAgC,EAAE,QAA2B;IAC5E,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7E,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAY,EACZ,IAAY,EACZ,UAAkB;IAElB,IAAI,QAAiB,CAAC;IACtB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,OAAO,CAAC,iBAAiB,UAAU,0BAA0B,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC,iBAAiB,UAAU,qCAAqC,CAAC,CAAC;IACnF,CAAC;IACD,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,OAAO,CAAC,iBAAiB,UAAU,0BAA0B,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAChD,IAAI,QAAQ,GAAG,UAAU,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC,iBAAiB,UAAU,sDAAsD,CAAC,CAAC;IACpG,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,GAAG,UAAU,EAAE,EAAE,CAAC;AACrF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,UAAkB;IACjE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,OAAO,CAAC,gBAAgB,UAAU,8CAA8C,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,OAAO,CAAC,iBAAiB,UAAU,uBAAuB,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/mutation-ratchet/report.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spec-controller",
3
- "version": "0.1.0-alpha.1",
3
+ "version": "0.1.0-alpha.2",
4
4
  "description": "Reconcile the behaviour your scenarios name against the evidence that actually ran — the deterministic `balance` CLI.",
5
5
  "keywords": [
6
6
  "reconciliation",
@@ -10,6 +10,11 @@
10
10
  "double-entry",
11
11
  "cli"
12
12
  ],
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git+https://github.com/3f-consulting/spec-controller.git",
16
+ "directory": "packages/spec-controller"
17
+ },
13
18
  "license": "MIT",
14
19
  "type": "module",
15
20
  "engines": {
@@ -25,7 +30,7 @@
25
30
  "@cucumber/gherkin": "^41.0.0",
26
31
  "@cucumber/messages": "^34.0.1",
27
32
  "yaml": "^2.9.0",
28
- "@3f-consulting/spec-controller-core": "0.1.0-alpha.1"
33
+ "@3f-consulting/spec-controller-core": "0.1.0-alpha.2"
29
34
  },
30
35
  "publishConfig": {
31
36
  "access": "public"