spec-controller 0.1.0-alpha.3 → 0.1.0-alpha.4

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.
@@ -5,8 +5,8 @@
5
5
  * established Cucumber deferral conventions.
6
6
  *
7
7
  * This is **product policy, not a core-domain invariant** — an evolvable list of tag
8
- * strings, so it lives in the application layer, NOT on the frozen v1 core barrel
9
- * (@SCN-API-001). The core `parseScenarios` recognises only the deferral set it is
8
+ * strings, so it lives in the application layer, NOT on the v1 core barrel.
9
+ * The core `parseScenarios` recognises only the deferral set it is
10
10
  * handed (its default is `[]`, a policy-free pure core); the app is the single source
11
11
  * of the starter policy and always passes the resolved set (starter ∪ configured) into
12
12
  * the parser at the ingest edge. Both `resolveDeferralTags` (the `@SCN-PND-021` config
@@ -5,8 +5,8 @@
5
5
  * established Cucumber deferral conventions.
6
6
  *
7
7
  * This is **product policy, not a core-domain invariant** — an evolvable list of tag
8
- * strings, so it lives in the application layer, NOT on the frozen v1 core barrel
9
- * (@SCN-API-001). The core `parseScenarios` recognises only the deferral set it is
8
+ * strings, so it lives in the application layer, NOT on the v1 core barrel.
9
+ * The core `parseScenarios` recognises only the deferral set it is
10
10
  * handed (its default is `[]`, a policy-free pure core); the app is the single source
11
11
  * of the starter policy and always passes the resolved set (starter ∪ configured) into
12
12
  * the parser at the ingest edge. Both `resolveDeferralTags` (the `@SCN-PND-021` config
@@ -23,11 +23,12 @@
23
23
  * PURE: `string → parse errors`. No fs, no process — the file READ lives beside it at the ingest
24
24
  * edge, as it does for every other input.
25
25
  *
26
- * WHY IT LIVES IN THE APP, NOT CORE. Core's barrel is the FROZEN v1 contract surface, guarded
27
- * both directions by @SCN-API-001 — a symbol added there reds CI. This validator is an INGEST
28
- * concern (it decides whether an input can be read at all), not part of the reconciliation
29
- * contract downstream consumers build on, so it belongs with the other readers at the app edge
30
- * and the frozen surface stays untouched.
26
+ * WHY IT LIVES IN THE APP, NOT CORE. Core's barrel is the v1 contract surface downstream consumers
27
+ * build on. Since 3F-3449 nothing reds when a symbol is added there — the guard that reconciled it
28
+ * both directions is gone — so keeping it narrow is a discipline rather than a gate. This validator
29
+ * is an INGEST concern (it decides whether an input can be read at all), not part of the
30
+ * reconciliation contract, so it belongs with the other readers at the app edge and the v1 surface
31
+ * stays untouched.
31
32
  */
32
33
  /** A Gherkin parse failure: the file could not be read as Gherkin at all. */
33
34
  export interface GherkinParseError {
@@ -1 +1 @@
1
- {"version":3,"file":"gherkinValidation.d.ts","sourceRoot":"","sources":["../../src/ingest/gherkinValidation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAKH,6EAA6E;AAC7E,MAAM,WAAW,iBAAiB;IAChC,qFAAqF;IACrF,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAa/E;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;gBAElC,MAAM,EAAE,SAAS,iBAAiB,EAAE;CAUjD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,8FAA8F;IAC9F,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,SAAS,EAAE,MAAM;CAK9B"}
1
+ {"version":3,"file":"gherkinValidation.d.ts","sourceRoot":"","sources":["../../src/ingest/gherkinValidation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAKH,6EAA6E;AAC7E,MAAM,WAAW,iBAAiB;IAChC,qFAAqF;IACrF,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAa/E;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;gBAElC,MAAM,EAAE,SAAS,iBAAiB,EAAE;CAUjD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,8FAA8F;IAC9F,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,SAAS,EAAE,MAAM;CAK9B"}
@@ -23,11 +23,12 @@
23
23
  * PURE: `string → parse errors`. No fs, no process — the file READ lives beside it at the ingest
24
24
  * edge, as it does for every other input.
25
25
  *
26
- * WHY IT LIVES IN THE APP, NOT CORE. Core's barrel is the FROZEN v1 contract surface, guarded
27
- * both directions by @SCN-API-001 — a symbol added there reds CI. This validator is an INGEST
28
- * concern (it decides whether an input can be read at all), not part of the reconciliation
29
- * contract downstream consumers build on, so it belongs with the other readers at the app edge
30
- * and the frozen surface stays untouched.
26
+ * WHY IT LIVES IN THE APP, NOT CORE. Core's barrel is the v1 contract surface downstream consumers
27
+ * build on. Since 3F-3449 nothing reds when a symbol is added there — the guard that reconciled it
28
+ * both directions is gone — so keeping it narrow is a discipline rather than a gate. This validator
29
+ * is an INGEST concern (it decides whether an input can be read at all), not part of the
30
+ * reconciliation contract, so it belongs with the other readers at the app edge and the v1 surface
31
+ * stays untouched.
31
32
  */
32
33
  import { AstBuilder, GherkinClassicTokenMatcher, Parser } from "@cucumber/gherkin";
33
34
  import { IdGenerator } from "@cucumber/messages";
@@ -1 +1 @@
1
- {"version":3,"file":"gherkinValidation.js","sourceRoot":"","sources":["../../src/ingest/gherkinValidation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAUjD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,MAAc;IACxD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,0BAA0B,EAAE,CAAC,CAAC;IAEhG,IAAI,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrB,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,0FAA0F;QAC1F,sFAAsF;QACtF,0FAA0F;QAC1F,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,4BAA6B,SAAQ,KAAK;IAC5C,MAAM,CAA+B;IAE9C,YAAY,MAAoC;QAC9C,KAAK,CACH;YACE,yEAAyE;YACzE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,KAAK,OAAO,EAAE,CAAC;SAC5D,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAClD,8FAA8F;IACrF,SAAS,CAAS;IAE3B,YAAY,SAAiB;QAC3B,KAAK,CAAC,gDAAgD,SAAS,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF"}
1
+ {"version":3,"file":"gherkinValidation.js","sourceRoot":"","sources":["../../src/ingest/gherkinValidation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAUjD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,MAAc;IACxD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,0BAA0B,EAAE,CAAC,CAAC;IAEhG,IAAI,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrB,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,0FAA0F;QAC1F,sFAAsF;QACtF,0FAA0F;QAC1F,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,4BAA6B,SAAQ,KAAK;IAC5C,MAAM,CAA+B;IAE9C,YAAY,MAAoC;QAC9C,KAAK,CACH;YACE,yEAAyE;YACzE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,KAAK,OAAO,EAAE,CAAC;SAC5D,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAClD,8FAA8F;IACrF,SAAS,CAAS;IAE3B,YAAY,SAAiB;QAC3B,KAAK,CAAC,gDAAgD,SAAS,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF"}
@@ -34,12 +34,17 @@
34
34
  * several kinds it is not, so it crosses this line under the fuller name. The aliasing is
35
35
  * deliberate and one-directional: the internal spelling stays internal.
36
36
  *
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.
37
+ * AND NO DRIFT GUARD STANDS OVER IT, WHICH IS A DECISION RATHER THAN AN OPEN QUESTION. 3F-2859
38
+ * stopped publishing this barrel: no manifest key resolves here, and no caller outside this
39
+ * repository can spell the specifier at all. Freezing the list would make every refactor behind it
40
+ * a change to a contract nobody holds.
41
+ *
42
+ * THE COMPARISON THIS PARAGRAPH USED TO DRAW IS GONE, AND SAYING SO IS THE POINT. It read: the
43
+ * sibling core package's barrel IS reflected and compared against a frozen list in both directions,
44
+ * so a symbol quietly added or dropped reds — that being what a PUBLISHED surface is owed, and this
45
+ * one is not published. At 3F-3449 that arm was deleted with the rest of the packaging checks this
46
+ * repository wrote for itself, so NEITHER barrel is guarded now and the contrast no longer carries
47
+ * the argument. What still carries it is the second sentence above, which never depended on it.
43
48
  */
44
49
  export { floorOf, gateRecordFor, killFloorOf, MalformedRecordError, parseGateRecords, RECORD_FILE, type GateRecord as MutationGateRecord, } from "./record.js";
45
50
  export { measurementFromReport, readMutationReport, type MutationMeasurement, type MutationReportRead, } from "./report.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","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,EACX,KAAK,UAAU,IAAI,kBAAkB,GACtC,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mutation-ratchet/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,OAAO,EACL,OAAO,EACP,aAAa,EACb,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,EACX,KAAK,UAAU,IAAI,kBAAkB,GACtC,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,aAAa,CAAC"}
@@ -34,12 +34,17 @@
34
34
  * several kinds it is not, so it crosses this line under the fuller name. The aliasing is
35
35
  * deliberate and one-directional: the internal spelling stays internal.
36
36
  *
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.
37
+ * AND NO DRIFT GUARD STANDS OVER IT, WHICH IS A DECISION RATHER THAN AN OPEN QUESTION. 3F-2859
38
+ * stopped publishing this barrel: no manifest key resolves here, and no caller outside this
39
+ * repository can spell the specifier at all. Freezing the list would make every refactor behind it
40
+ * a change to a contract nobody holds.
41
+ *
42
+ * THE COMPARISON THIS PARAGRAPH USED TO DRAW IS GONE, AND SAYING SO IS THE POINT. It read: the
43
+ * sibling core package's barrel IS reflected and compared against a frozen list in both directions,
44
+ * so a symbol quietly added or dropped reds — that being what a PUBLISHED surface is owed, and this
45
+ * one is not published. At 3F-3449 that arm was deleted with the rest of the packaging checks this
46
+ * repository wrote for itself, so NEITHER barrel is guarded now and the contrast no longer carries
47
+ * the argument. What still carries it is the second sentence above, which never depended on it.
43
48
  */
44
49
  export { floorOf, gateRecordFor, killFloorOf, MalformedRecordError, parseGateRecords, RECORD_FILE, } from "./record.js";
45
50
  export { measurementFromReport, readMutationReport, } from "./report.js";
@@ -1 +1 @@
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
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mutation-ratchet/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spec-controller",
3
- "version": "0.1.0-alpha.3",
3
+ "version": "0.1.0-alpha.4",
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,11 +10,6 @@
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
- },
18
13
  "license": "MIT",
19
14
  "type": "module",
20
15
  "engines": {
@@ -30,7 +25,7 @@
30
25
  "@cucumber/gherkin": "^41.0.0",
31
26
  "@cucumber/messages": "^34.0.1",
32
27
  "yaml": "^2.9.0",
33
- "@3f-consulting/spec-controller-core": "0.1.0-alpha.3"
28
+ "@3f-consulting/spec-controller-core": "0.1.0-alpha.4"
34
29
  },
35
30
  "publishConfig": {
36
31
  "access": "public"