@rsaglobaltech/specgate 0.17.0 → 0.17.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 (39) hide show
  1. package/CHANGELOG.md +70 -0
  2. package/dist/packages/core/src/application/ArchiveChangeUseCase.js +43 -4
  3. package/dist/packages/core/src/application/ArchiveChangeUseCase.js.map +1 -1
  4. package/dist/packages/core/src/application/GeneratePlanUseCase.js +6 -2
  5. package/dist/packages/core/src/application/GeneratePlanUseCase.js.map +1 -1
  6. package/dist/packages/core/src/domain/DeltaFeature.js +66 -4
  7. package/dist/packages/core/src/domain/DeltaFeature.js.map +1 -1
  8. package/dist/packages/core/src/domain/DraftChecklist.js +96 -6
  9. package/dist/packages/core/src/domain/DraftChecklist.js.map +1 -1
  10. package/dist/packages/core/src/domain/GherkinQuality.js +11 -3
  11. package/dist/packages/core/src/domain/GherkinQuality.js.map +1 -1
  12. package/dist/packages/core/src/domain/HarnessReport.js +2 -0
  13. package/dist/packages/core/src/domain/HarnessReport.js.map +1 -1
  14. package/dist/packages/core/src/domain/HarnessRun.js.map +1 -1
  15. package/dist/packages/core/src/domain/RequirementPlan.js +10 -1
  16. package/dist/packages/core/src/domain/RequirementPlan.js.map +1 -1
  17. package/dist/packages/core/src/domain/RetryPolicy.js +50 -0
  18. package/dist/packages/core/src/domain/RetryPolicy.js.map +1 -0
  19. package/dist/packages/core/test/unit/delta-feature.test.js +25 -0
  20. package/dist/packages/core/test/unit/delta-feature.test.js.map +1 -1
  21. package/dist/packages/core/test/unit/gherkin-quality.test.js +19 -1
  22. package/dist/packages/core/test/unit/gherkin-quality.test.js.map +1 -1
  23. package/dist/packages/core/test/unit/retry-policy.test.js +59 -0
  24. package/dist/packages/core/test/unit/retry-policy.test.js.map +1 -0
  25. package/dist/scripts/cli/commands/harness/RunCommand.js +37 -3
  26. package/dist/scripts/cli/commands/harness/RunCommand.js.map +1 -1
  27. package/dist/scripts/cli/commands/quality/CheckCommand.js +14 -2
  28. package/dist/scripts/cli/commands/quality/CheckCommand.js.map +1 -1
  29. package/dist/scripts/cli/commands/spec/DraftCommand.js +14 -1
  30. package/dist/scripts/cli/commands/spec/DraftCommand.js.map +1 -1
  31. package/dist/scripts/cli/commands/spec/PlanCommand.js +28 -2
  32. package/dist/scripts/cli/commands/spec/PlanCommand.js.map +1 -1
  33. package/dist/scripts/cli/commands/spec/StatusCommand.js +8 -1
  34. package/dist/scripts/cli/commands/spec/StatusCommand.js.map +1 -1
  35. package/dist/scripts/docs/nav.js +98 -88
  36. package/dist/scripts/docs/nav.js.map +1 -1
  37. package/dist/scripts/harness/init.js +72 -50
  38. package/dist/scripts/harness/init.js.map +1 -1
  39. package/package.json +1 -1
@@ -78,16 +78,24 @@ exports.QUALITY_CODES = Object.freeze({
78
78
  */
79
79
  const PLACEHOLDER_RE = /<[^<>]+>/;
80
80
  /**
81
- * A title that names nothing: `Test`, `Scenario 1`, or fewer than three words.
81
+ * A title that names nothing: `Test`, `Scenario 1`, `Escenario 2`, or a
82
+ * single word.
83
+ *
84
+ * Two words are enough to name a behaviour: "Franja cerrada" and
85
+ * "Identificador repetido" do, and requiring three failed the harness on both
86
+ * in the reservas_app pilot (defect #49) — a scenario the agent may not edit,
87
+ * so three attempts were spent on a gate nobody could pass. The placeholder
88
+ * words below catch "Scenario A" and "Test 1" whatever their length.
82
89
  *
83
90
  * Exported because `pack lint` has always exposed it and its tests pin it.
84
91
  */
85
92
  function isGenericTitle(title) {
86
93
  if (!title)
87
94
  return true;
88
- if (/^(test|scenario|example|untitled)\b/i.test(title))
95
+ if (/^(test|scenario|example|untitled|prueba|escenario|ejemplo|caso|sin t[ií]tulo)\b/i.test(title)) {
89
96
  return true;
90
- return title.split(/\s+/).filter(Boolean).length < 3;
97
+ }
98
+ return title.split(/\s+/).filter(Boolean).length < 2;
91
99
  }
92
100
  /**
93
101
  * The nine rules, applied to one scenario.
@@ -1 +1 @@
1
- {"version":3,"file":"GherkinQuality.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/GherkinQuality.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GherkinQuality.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/GherkinQuality.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,8 @@ exports.STAGE_LABELS = Object.freeze({
40
40
  "agent-timeout": "agent timed out",
41
41
  "agent-error": "agent exited non-zero",
42
42
  "write-scope": "agent edited protected files",
43
+ "agent-unavailable": "agent out of quota or rate-limited",
44
+ spec: "the specification fails the gate",
43
45
  gate: "gate rejected the work",
44
46
  artifacts: "diff missed the declared artifacts",
45
47
  done: "`specgate done` failed",
@@ -1 +1 @@
1
- {"version":3,"file":"HarnessReport.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/HarnessReport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HarnessReport.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/HarnessReport.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"HarnessRun.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/HarnessRun.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HarnessRun.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/HarnessRun.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;AASH,wDAQC;AA6BD,0CAKC;AAED,sDASC;AAgED,gCAkBC;AAcD,wCAgBC;AA4CD,kCAUC;AAlOD,yDAAsD;AAEtD;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,QAAQ,EAAE,UAAU;IACzD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CACb,qEAAqE;YACnE,qCAAqC,CACxC,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC1D,CAAC;AAED,4EAA4E;AAC5E;;;;;;;;;;;;GAYG;AACH;;;;;;;;;;;;GAYG;AACH,SAAgB,eAAe,CAAC,GAAG;IACjC,OAAO,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;SACrD,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACb,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,SAAgB,qBAAqB,CAAC,QAAQ,EAAE,GAAG;IACjD,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACzC,OAAO,QAAQ;SACZ,KAAK,CAAC,OAAO,CAAC;SACd,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;SAC3B,KAAK,CAAC,YAAY,CAAC;SACnB,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;SAC7C,KAAK,CAAC,gBAAgB,CAAC;SACvB,IAAI,CAAC,WAAW,CAAC,CAAC;AACvB,CAAC;AAmDD;;;;;;;;;;;;GAYG;AACH,SAAgB,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM;IAC9C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAAE,OAAO,EAAE,CAAC;IAC5D,MAAM,WAAW,GAAG,qBAAqB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IACjE,IAAI,CAAC,WAAW;QAAE,OAAO,EAAE,CAAC;IAE5B,gEAAgE;IAChE,8EAA8E;IAC9E,4EAA4E;IAC5E,oEAAoE;IACpE,MAAM,OAAO,GAAG,iDAAiD,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/E,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAEnD,OAAO,CACL,mCAAmC,WAAW,yBAAyB;QACvE,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,qCAAqC;QAC9E,2EAA2E;QAC3E,mDAAmD,CACpD,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,cAAc,CAAC,OAAO;IACpC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAEpC,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,yEAAyE;QACzE,uEAAuE;QACvE,2EAA2E;QAC3E,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAChF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CACf,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,mCAAgB,CAAC,gBAAgB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACvE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC1E,CAAC;AAiCD;;;;;;;;;;GAUG;AACH,SAAgB,WAAW,CAAC,OAAe,EAAE,OAA2B,EAAE;IACxE,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAExF,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,IAAI,OAAO,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1D,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -21,7 +21,14 @@ class RequirementPlan {
21
21
  .filter(Boolean);
22
22
  return parts.length > 0 && parts.every((p) => !/\s/.test(p) && /[/.]/.test(p));
23
23
  }
24
- static classifyRow(row, fileChecker) {
24
+ /**
25
+ * `scenarioGap` says whether a scenario of the row's feature has no test
26
+ * naming it while its siblings do — what `validate --strict` reports as
27
+ * "Nothing proves". Without it, a requirement that gained two scenarios was
28
+ * "Ready to close — its test is in place" in `status` and NEEDS_STATUS_UPDATE
29
+ * to the harness, while `validate` refused it (reservas_app, #54).
30
+ */
31
+ static classifyRow(row, fileChecker, scenarioGap) {
25
32
  const reqId = row.requirement || "";
26
33
  if (!/^REQ-\d+/.test(reqId))
27
34
  return null;
@@ -50,6 +57,8 @@ class RequirementPlan {
50
57
  // it is how a scenario added after delivery shows up (golden_app #32).
51
58
  else if (!testDeclared)
52
59
  category = "NEEDS_TEST";
60
+ else if (scenarioGap && scenarioGap(row))
61
+ category = "NEEDS_TEST";
53
62
  else if (techDeclared && !techExists)
54
63
  category = "NEEDS_IMPLEMENTATION";
55
64
  else if (!isDone)
@@ -1 +1 @@
1
- {"version":3,"file":"RequirementPlan.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/RequirementPlan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RequirementPlan.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/RequirementPlan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ /**
3
+ * Whether another harness attempt can change the outcome.
4
+ *
5
+ * The harness retries a failed requirement, feeding the failure back to the
6
+ * agent. That is only worth paying for when the agent can act on it. Two
7
+ * failures in the reservas_app pilot could not be acted on, and each cost three
8
+ * attempts (defect #50):
9
+ *
10
+ * - the gate failed on a scenario title in a `.feature` file — a file the agent
11
+ * is forbidden to edit, so every retry met the same gate;
12
+ * - the agent exited with "You've hit your session limit", and the harness
13
+ * retried it three times in 22 seconds.
14
+ *
15
+ * Both now stop the requirement at once, with a message that names who has to
16
+ * act: a person fixing the specification, or the quota resetting.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.agentUnavailable = agentUnavailable;
20
+ exports.specSideFailure = specSideFailure;
21
+ /** Messages an agent CLI prints when it cannot run at all for now. */
22
+ const UNAVAILABLE = /(session limit|usage limit|rate[- ]limit(ed)?|quota (exceeded|exhausted)|insufficient_quota|credit balance is too low|too many requests|\b429\b|overloaded_error)/i;
23
+ /** The line, if any, saying the agent is out of quota or rate-limited. */
24
+ function agentUnavailable(output) {
25
+ const line = output.split(/\r?\n/).find((l) => UNAVAILABLE.test(l));
26
+ return line ? line.trim() : null;
27
+ }
28
+ /** ` ✖ features/x.feature:4 …` / ` ▲ features/x.feature:17 …` — a finding with a location. */
29
+ const LOCATED = /^\s*[✖▲⚠]\s+(\S+?\.[A-Za-z]+)(?::\d+)?\s/;
30
+ /**
31
+ * The specification files a failed gate blames, when it blames nothing else.
32
+ *
33
+ * Returns the files when every located finding is in a path the agent may not
34
+ * edit (`isProtected`), and at least one finding is located. Any finding in
35
+ * code, or none located at all, returns null: the agent may still fix it.
36
+ */
37
+ function specSideFailure(gateOutput, isProtected) {
38
+ const files = [];
39
+ for (const line of gateOutput.split(/\r?\n/)) {
40
+ const m = LOCATED.exec(line);
41
+ if (!m)
42
+ continue;
43
+ if (!isProtected(m[1]))
44
+ return null;
45
+ if (!files.includes(m[1]))
46
+ files.push(m[1]);
47
+ }
48
+ return files.length > 0 ? files : null;
49
+ }
50
+ //# sourceMappingURL=RetryPolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RetryPolicy.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/RetryPolicy.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;AAOH,4CAGC;AAYD,0CAYC;AAhCD,sEAAsE;AACtE,MAAM,WAAW,GACf,oKAAoK,CAAC;AAEvK,0EAA0E;AAC1E,SAAgB,gBAAgB,CAAC,MAAc;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,CAAC;AAED,kGAAkG;AAClG,MAAM,OAAO,GAAG,0CAA0C,CAAC;AAE3D;;;;;;GAMG;AACH,SAAgB,eAAe,CAC7B,UAAkB,EAClB,WAAsC;IAEtC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC"}
@@ -71,4 +71,29 @@ const req = {
71
71
  const out = (0, DeltaFeature_1.renderDeltaFeature)({ ...req, scenarios: [{ ...req.scenarios[0], id: null }] }, "billing");
72
72
  assert.deepEqual((0, GherkinTags_1.csdaTagsIn)(out), ["@REQ-002"]);
73
73
  });
74
+ (0, node_test_1.test)("#47: a delta written in Spanish becomes valid Spanish Gherkin", () => {
75
+ const out = (0, DeltaFeature_1.renderDeltaFeature)({
76
+ id: "REQ-113",
77
+ name: "Sin puestos no hay reserva",
78
+ scenarios: [
79
+ {
80
+ id: "SCN-115",
81
+ name: "Una franja sin puestos no se ofrece",
82
+ heading: "SCN-115 Una franja sin puestos no se ofrece",
83
+ line: 1,
84
+ steps: [
85
+ 'DADO el calendario "Peluquería" sin puestos el domingo',
86
+ "CUANDO un cliente consulta GET /api/comercios/pelu1/huecos",
87
+ "ENTONCES la respuesta no contiene ninguna franja",
88
+ "Y no se puede reservar",
89
+ ],
90
+ },
91
+ ],
92
+ }, "calendario");
93
+ assert.match(out, /^# language: es\nCaracterística: Sin puestos no hay reserva\n/);
94
+ assert.match(out, /\n {2}Escenario: Una franja sin puestos no se ofrece\n {4}Dado el calendario/);
95
+ assert.match(out, /\n {4}Cuando un cliente.*\n {4}Entonces la respuesta.*\n {4}Y no se puede reservar\n/);
96
+ assert.deepEqual((0, GherkinTags_1.csdaTagsIn)(out), ["@REQ-113", "@SCN-115"]);
97
+ assert.deepEqual((0, GherkinQuality_1.analyseGherkinSource)(out, "f.feature"), [], "and passes every scenario rule");
98
+ });
74
99
  //# sourceMappingURL=delta-feature.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"delta-feature.test.js","sourceRoot":"","sources":["../../../../../packages/core/test/unit/delta-feature.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;GAIG;AACH,yCAAiC;AACjC,2DAA6C;AAC7C,gEAAmE;AACnE,oEAAuE;AACvE,8DAA0D;AAE1D,MAAM,GAAG,GAAG;IACV,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,gCAAgC;IACtC,SAAS,EAAE;QACT;YACE,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,8BAA8B;YACvC,IAAI,EAAE,CAAC;YACP,KAAK,EAAE;gBACL,iCAAiC;gBACjC,8BAA8B;gBAC9B,0BAA0B;aAC3B;SACF;KACF;CACF,CAAC;AAEF,IAAA,gBAAI,EAAC,oDAAoD,EAAE,GAAG,EAAE;IAC9D,MAAM,GAAG,GAAG,IAAA,iCAAkB,EAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC/C,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,0CAA0C,CAAC,CAAC;IAC9D,MAAM,CAAC,KAAK,CACV,GAAG,EACH,yGAAyG,CAC1G,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,IAAA,wBAAU,EAAC,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAC5D,MAAM,CAAC,SAAS,CAAC,IAAA,qCAAoB,EAAC,GAAG,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,gCAAgC,CAAC,CAAC;AACjG,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,+DAA+D,EAAE,GAAG,EAAE;IACzE,MAAM,GAAG,GAAG,IAAA,iCAAkB,EAC5B,EAAE,GAAG,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAC1D,SAAS,CACV,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,IAAA,wBAAU,EAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"delta-feature.test.js","sourceRoot":"","sources":["../../../../../packages/core/test/unit/delta-feature.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;GAIG;AACH,yCAAiC;AACjC,2DAA6C;AAC7C,gEAAmE;AACnE,oEAAuE;AACvE,8DAA0D;AAE1D,MAAM,GAAG,GAAG;IACV,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,gCAAgC;IACtC,SAAS,EAAE;QACT;YACE,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,8BAA8B;YACvC,IAAI,EAAE,CAAC;YACP,KAAK,EAAE;gBACL,iCAAiC;gBACjC,8BAA8B;gBAC9B,0BAA0B;aAC3B;SACF;KACF;CACF,CAAC;AAEF,IAAA,gBAAI,EAAC,oDAAoD,EAAE,GAAG,EAAE;IAC9D,MAAM,GAAG,GAAG,IAAA,iCAAkB,EAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC/C,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,0CAA0C,CAAC,CAAC;IAC9D,MAAM,CAAC,KAAK,CACV,GAAG,EACH,yGAAyG,CAC1G,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,IAAA,wBAAU,EAAC,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAC5D,MAAM,CAAC,SAAS,CAAC,IAAA,qCAAoB,EAAC,GAAG,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,gCAAgC,CAAC,CAAC;AACjG,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,+DAA+D,EAAE,GAAG,EAAE;IACzE,MAAM,GAAG,GAAG,IAAA,iCAAkB,EAC5B,EAAE,GAAG,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAC1D,SAAS,CACV,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,IAAA,wBAAU,EAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,+DAA+D,EAAE,GAAG,EAAE;IACzE,MAAM,GAAG,GAAG,IAAA,iCAAkB,EAC5B;QACE,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,4BAA4B;QAClC,SAAS,EAAE;YACT;gBACE,EAAE,EAAE,SAAS;gBACb,IAAI,EAAE,qCAAqC;gBAC3C,OAAO,EAAE,6CAA6C;gBACtD,IAAI,EAAE,CAAC;gBACP,KAAK,EAAE;oBACL,wDAAwD;oBACxD,4DAA4D;oBAC5D,kDAAkD;oBAClD,wBAAwB;iBACzB;aACF;SACF;KACF,EACD,YAAY,CACb,CAAC;IACF,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,+DAA+D,CAAC,CAAC;IACnF,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,8EAA8E,CAAC,CAAC;IAClG,MAAM,CAAC,KAAK,CACV,GAAG,EACH,sFAAsF,CACvF,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,IAAA,wBAAU,EAAC,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAC5D,MAAM,CAAC,SAAS,CAAC,IAAA,qCAAoB,EAAC,GAAG,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,gCAAgC,CAAC,CAAC;AACjG,CAAC,CAAC,CAAC"}
@@ -98,10 +98,28 @@ const GOOD = {
98
98
  assert.equal(found[0].file, "features/x.feature");
99
99
  });
100
100
  (0, node_test_1.test)("isGenericTitle knows a name from a placeholder", () => {
101
- for (const bad of ["", "Test", "Scenario 1", "Example", "Untitled", "two words"]) {
101
+ for (const bad of [
102
+ "",
103
+ "Test",
104
+ "Scenario 1",
105
+ "Example",
106
+ "Untitled",
107
+ "works",
108
+ "Escenario 2",
109
+ "Prueba",
110
+ ]) {
102
111
  assert.equal((0, GherkinQuality_1.isGenericTitle)(bad), true, `${JSON.stringify(bad)} should be generic`);
103
112
  }
104
113
  assert.equal((0, GherkinQuality_1.isGenericTitle)("Defining a flag emits FlagDefined"), false);
114
+ // #49: two words name a behaviour — the reservas_app titles that failed the harness.
115
+ for (const good of [
116
+ "Franja cerrada",
117
+ "Identificador repetido",
118
+ "Último puesto",
119
+ "Refund rejected",
120
+ ]) {
121
+ assert.equal((0, GherkinQuality_1.isGenericTitle)(good), false, `${JSON.stringify(good)} names a behaviour`);
122
+ }
105
123
  });
106
124
  (0, node_test_1.test)("keyword case is judged on the raw text, with the line and the fix", () => {
107
125
  const source = [
@@ -1 +1 @@
1
- {"version":3,"file":"gherkin-quality.test.js","sourceRoot":"","sources":["../../../../../packages/core/test/unit/gherkin-quality.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gherkin-quality.test.js","sourceRoot":"","sources":["../../../../../packages/core/test/unit/gherkin-quality.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ /** When another harness attempt cannot help (reservas_app, defect #50). */
37
+ const node_test_1 = require("node:test");
38
+ const assert = __importStar(require("node:assert/strict"));
39
+ const RetryPolicy_1 = require("../../src/domain/RetryPolicy");
40
+ const isFeature = (f) => f.startsWith("features/");
41
+ (0, node_test_1.test)("a quota or rate-limit exit is recognised", () => {
42
+ assert.match((0, RetryPolicy_1.agentUnavailable)("Agent exited 1.\nYou've hit your session limit · resets 11:20am (Europe/Berlin)") || "", /session limit/);
43
+ assert.ok((0, RetryPolicy_1.agentUnavailable)("Error: 429 Too Many Requests"));
44
+ assert.equal((0, RetryPolicy_1.agentUnavailable)("TypeError: x is not a function"), null);
45
+ });
46
+ (0, node_test_1.test)("a gate that blames only a feature file is the specification's to fix", () => {
47
+ const out = [
48
+ "Gate failed at: validate --strict",
49
+ "❌ [ERROR] --strict-scenarios violations detected: 1",
50
+ " ▲ features/comercio/REQ-101.feature:17 scenario title is generic — name the behaviour under test. [scenario_title_generic]",
51
+ ].join("\n");
52
+ assert.deepEqual((0, RetryPolicy_1.specSideFailure)(out, isFeature), ["features/comercio/REQ-101.feature"]);
53
+ });
54
+ (0, node_test_1.test)("a gate that blames code, or nothing located, is the agent's to fix", () => {
55
+ const mixed = " ▲ features/a.feature:3 vague step\n ✖ apps/web/app/api/x/route.ts:12 missing test";
56
+ assert.equal((0, RetryPolicy_1.specSideFailure)(mixed, isFeature), null);
57
+ assert.equal((0, RetryPolicy_1.specSideFailure)("FAIL tests/x.test.ts > REQ-101 expected 201", isFeature), null);
58
+ });
59
+ //# sourceMappingURL=retry-policy.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry-policy.test.js","sourceRoot":"","sources":["../../../../../packages/core/test/unit/retry-policy.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2EAA2E;AAC3E,yCAAiC;AACjC,2DAA6C;AAC7C,8DAAiF;AAEjF,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAE3D,IAAA,gBAAI,EAAC,0CAA0C,EAAE,GAAG,EAAE;IACpD,MAAM,CAAC,KAAK,CACV,IAAA,8BAAgB,EACd,iFAAiF,CAClF,IAAI,EAAE,EACP,eAAe,CAChB,CAAC;IACF,MAAM,CAAC,EAAE,CAAC,IAAA,8BAAgB,EAAC,8BAA8B,CAAC,CAAC,CAAC;IAC5D,MAAM,CAAC,KAAK,CAAC,IAAA,8BAAgB,EAAC,gCAAgC,CAAC,EAAE,IAAI,CAAC,CAAC;AACzE,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,sEAAsE,EAAE,GAAG,EAAE;IAChF,MAAM,GAAG,GAAG;QACV,mCAAmC;QACnC,qDAAqD;QACrD,+HAA+H;KAChI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,MAAM,CAAC,SAAS,CAAC,IAAA,6BAAe,EAAC,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,mCAAmC,CAAC,CAAC,CAAC;AAC3F,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,oEAAoE,EAAE,GAAG,EAAE;IAC9E,MAAM,KAAK,GACT,wFAAwF,CAAC;IAC3F,MAAM,CAAC,KAAK,CAAC,IAAA,6BAAe,EAAC,KAAK,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;IACtD,MAAM,CAAC,KAAK,CAAC,IAAA,6BAAe,EAAC,6CAA6C,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;AAChG,CAAC,CAAC,CAAC"}
@@ -77,6 +77,7 @@ const GherkinQuality_1 = require("../../../../packages/core/src/domain/GherkinQu
77
77
  const HarnessConfigFile_1 = require("../../../../packages/core/src/infrastructure/HarnessConfigFile");
78
78
  const agent_1 = require("../../../lib/agent");
79
79
  const WriteScope_1 = require("../../../../packages/core/src/domain/WriteScope");
80
+ const RetryPolicy_1 = require("../../../../packages/core/src/domain/RetryPolicy");
80
81
  const GateCommandIntegrity_1 = require("../../../../packages/core/src/domain/GateCommandIntegrity");
81
82
  const EmptyAttempt_1 = require("../../../../packages/core/src/domain/EmptyAttempt");
82
83
  const DeclaredArtifacts_1 = require("../../../../packages/core/src/domain/DeclaredArtifacts");
@@ -796,6 +797,8 @@ function attemptRequirement(req, ctx) {
796
797
  // cost of the one step in the loop that is pure insurance.
797
798
  let probe = AdversarialProbe_1.NO_PROBE;
798
799
  const firstAttempt = Math.max(1, (ctx.resumeAt && ctx.resumeAt.attempt) || 1);
800
+ /** Set when another attempt cannot change the outcome (#50). */
801
+ let stopRetrying = false;
799
802
  for (let attempt = firstAttempt; attempt <= settings.maxAttempts; attempt += 1) {
800
803
  info(`${req.requirement}: attempt ${attempt}/${settings.maxAttempts}`);
801
804
  const attemptStart = Date.now();
@@ -891,9 +894,20 @@ function attemptRequirement(req, ctx) {
891
894
  continue;
892
895
  }
893
896
  if (agent.status !== 0) {
894
- previousFailure = `Agent exited ${agent.status}.\n${agent.stdout || ""}${agent.stderr || ""}`;
897
+ const output = `${agent.stdout || ""}${agent.stderr || ""}`;
898
+ previousFailure = `Agent exited ${agent.status}.\n${output}`;
895
899
  warn(`${req.requirement}: agent exited ${agent.status}`);
896
- record("agent-error");
900
+ // Out of quota: another attempt seconds later meets the same wall (#50).
901
+ const unavailable = (0, RetryPolicy_1.agentUnavailable)(output);
902
+ if (unavailable) {
903
+ warn(`${req.requirement}: the agent cannot run now — ${unavailable}`);
904
+ warn(` not retrying; run it again once the agent is available`);
905
+ record("agent-unavailable");
906
+ stopRetrying = true;
907
+ }
908
+ else {
909
+ record("agent-error");
910
+ }
897
911
  stepFailed = true;
898
912
  break;
899
913
  }
@@ -902,6 +916,8 @@ function attemptRequirement(req, ctx) {
902
916
  finally {
903
917
  /* each step removes its own prompt file */
904
918
  }
919
+ if (stopRetrying)
920
+ break;
905
921
  if (stepFailed)
906
922
  continue;
907
923
  // Before the gate: an agent that wrote nothing cannot have implemented
@@ -951,6 +967,24 @@ function attemptRequirement(req, ctx) {
951
967
  warn(`${req.requirement}: gate failed at ${gate.stage}`);
952
968
  if (gate.hint)
953
969
  warn(gate.hint);
970
+ // Every finding is in a file the agent may not edit: no attempt can pass (#50).
971
+ const rules = {
972
+ protectedPaths: settings.protectedPaths.length ? settings.protectedPaths : undefined,
973
+ allowPaths: settings.allowPaths,
974
+ };
975
+ const specFiles = (0, RetryPolicy_1.specSideFailure)(gate.output, (f) => (0, WriteScope_1.protectingPattern)(f, rules) !== null);
976
+ if (specFiles) {
977
+ previousFailure =
978
+ `The gate fails on the specification, which the agent may not edit:\n` +
979
+ specFiles.map((f) => ` ${f}`).join("\n") +
980
+ `\n\nFix the scenario (a person, or \`specgate change\`), then run the harness again.\n\n` +
981
+ previousFailure;
982
+ warn(`${req.requirement}: the failure is in ${specFiles.join(", ")}, which the agent may not edit`);
983
+ warn(` not retrying; fix the specification and run it again`);
984
+ record("spec");
985
+ stopRetrying = true;
986
+ break;
987
+ }
954
988
  record("gate");
955
989
  continue;
956
990
  }
@@ -1043,7 +1077,7 @@ function attemptRequirement(req, ctx) {
1043
1077
  result: "fail",
1044
1078
  // Attempts *this* run spent. On a resume that starts at 3 of 3, one attempt
1045
1079
  // was spent here, and reporting 3 would double-count the earlier run's.
1046
- attempts: settings.maxAttempts - firstAttempt + 1,
1080
+ attempts: stopRetrying ? attemptLog.length : settings.maxAttempts - firstAttempt + 1,
1047
1081
  error: previousFailure,
1048
1082
  workPreserved: preserved,
1049
1083
  attemptLog,