@sun-asterisk/sungen 3.2.24-beta.1 → 3.2.24-beta.3

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 (90) hide show
  1. package/dist/cli/commands/audit.d.ts.map +1 -1
  2. package/dist/cli/commands/audit.js +22 -16
  3. package/dist/cli/commands/audit.js.map +1 -1
  4. package/dist/cli/commands/capability.d.ts.map +1 -1
  5. package/dist/cli/commands/capability.js +11 -12
  6. package/dist/cli/commands/capability.js.map +1 -1
  7. package/dist/cli/commands/challenge.d.ts.map +1 -1
  8. package/dist/cli/commands/challenge.js +2 -10
  9. package/dist/cli/commands/challenge.js.map +1 -1
  10. package/dist/cli/commands/depth-lint.d.ts.map +1 -1
  11. package/dist/cli/commands/depth-lint.js +2 -12
  12. package/dist/cli/commands/depth-lint.js.map +1 -1
  13. package/dist/cli/commands/gate.d.ts.map +1 -1
  14. package/dist/cli/commands/gate.js +2 -47
  15. package/dist/cli/commands/gate.js.map +1 -1
  16. package/dist/cli/commands/journey.d.ts.map +1 -1
  17. package/dist/cli/commands/journey.js +2 -12
  18. package/dist/cli/commands/journey.js.map +1 -1
  19. package/dist/cli/commands/manifest.d.ts.map +1 -1
  20. package/dist/cli/commands/manifest.js +2 -10
  21. package/dist/cli/commands/manifest.js.map +1 -1
  22. package/dist/cli/commands/next.d.ts +14 -0
  23. package/dist/cli/commands/next.d.ts.map +1 -0
  24. package/dist/cli/commands/next.js +130 -0
  25. package/dist/cli/commands/next.js.map +1 -0
  26. package/dist/cli/index.js +34 -0
  27. package/dist/cli/index.js.map +1 -1
  28. package/dist/cli/resolve-unit.d.ts +22 -0
  29. package/dist/cli/resolve-unit.d.ts.map +1 -0
  30. package/dist/cli/resolve-unit.js +101 -0
  31. package/dist/cli/resolve-unit.js.map +1 -0
  32. package/dist/exporters/feature-parser.d.ts +4 -3
  33. package/dist/exporters/feature-parser.d.ts.map +1 -1
  34. package/dist/exporters/feature-parser.js +10 -4
  35. package/dist/exporters/feature-parser.js.map +1 -1
  36. package/dist/harness/audit.d.ts +9 -1
  37. package/dist/harness/audit.d.ts.map +1 -1
  38. package/dist/harness/audit.js +92 -6
  39. package/dist/harness/audit.js.map +1 -1
  40. package/dist/harness/capability-plan.d.ts +12 -1
  41. package/dist/harness/capability-plan.d.ts.map +1 -1
  42. package/dist/harness/capability-plan.js +16 -2
  43. package/dist/harness/capability-plan.js.map +1 -1
  44. package/dist/harness/capability.d.ts +12 -0
  45. package/dist/harness/capability.d.ts.map +1 -1
  46. package/dist/harness/capability.js +16 -0
  47. package/dist/harness/capability.js.map +1 -1
  48. package/dist/harness/catalog/drivers.yaml +5 -0
  49. package/dist/harness/flow-contract.d.ts +75 -0
  50. package/dist/harness/flow-contract.d.ts.map +1 -1
  51. package/dist/harness/flow-contract.js +122 -1
  52. package/dist/harness/flow-contract.js.map +1 -1
  53. package/dist/harness/next-step.d.ts +40 -0
  54. package/dist/harness/next-step.d.ts.map +1 -0
  55. package/dist/harness/next-step.js +242 -0
  56. package/dist/harness/next-step.js.map +1 -0
  57. package/dist/harness/spec-coverage.d.ts +20 -0
  58. package/dist/harness/spec-coverage.d.ts.map +1 -1
  59. package/dist/harness/spec-coverage.js +35 -0
  60. package/dist/harness/spec-coverage.js.map +1 -1
  61. package/dist/harness/viewpoint-ledger.d.ts +4 -0
  62. package/dist/harness/viewpoint-ledger.d.ts.map +1 -1
  63. package/dist/harness/viewpoint-ledger.js +42 -0
  64. package/dist/harness/viewpoint-ledger.js.map +1 -1
  65. package/dist/orchestrator/templates/ai-src/commands/create-test.md +27 -8
  66. package/dist/orchestrator/templates/ai-src/commands/run-test.md +6 -0
  67. package/dist/orchestrator/templates/ai-src/skills/sungen-tc-generation/SKILL.md +36 -0
  68. package/package.json +3 -3
  69. package/src/cli/commands/audit.ts +22 -14
  70. package/src/cli/commands/capability.ts +11 -10
  71. package/src/cli/commands/challenge.ts +2 -8
  72. package/src/cli/commands/depth-lint.ts +2 -10
  73. package/src/cli/commands/gate.ts +2 -10
  74. package/src/cli/commands/journey.ts +2 -10
  75. package/src/cli/commands/manifest.ts +2 -8
  76. package/src/cli/commands/next.ts +96 -0
  77. package/src/cli/index.ts +31 -0
  78. package/src/cli/resolve-unit.ts +72 -0
  79. package/src/exporters/feature-parser.ts +10 -4
  80. package/src/harness/audit.ts +95 -11
  81. package/src/harness/capability-plan.ts +23 -3
  82. package/src/harness/capability.ts +22 -0
  83. package/src/harness/catalog/drivers.yaml +5 -0
  84. package/src/harness/flow-contract.ts +158 -1
  85. package/src/harness/next-step.ts +237 -0
  86. package/src/harness/spec-coverage.ts +38 -0
  87. package/src/harness/viewpoint-ledger.ts +42 -0
  88. package/src/orchestrator/templates/ai-src/commands/create-test.md +27 -8
  89. package/src/orchestrator/templates/ai-src/commands/run-test.md +6 -0
  90. package/src/orchestrator/templates/ai-src/skills/sungen-tc-generation/SKILL.md +36 -0
@@ -1,4 +1,16 @@
1
1
  import { ScenarioInfo } from './parse';
2
+ /** One declared flow of the use case: a branch point, its own steps, its own outcome. */
3
+ export interface FlowDecl {
4
+ /** The flow id as the use-case document numbers it — `BF`, `AF01`, `EF03`. */
5
+ id: string;
6
+ /** Where it leaves the basic flow (`BF step 2`). Omitted for the basic flow itself. */
7
+ branchFrom?: string;
8
+ /** Its OWN outcome/postcondition — what is different about where this flow ends. */
9
+ outcome?: string;
10
+ status: 'covered' | 'deferred' | 'pending-clarification' | 'out-of-scope';
11
+ /** Why, for anything other than `covered` — a deferral with no reason is a silent gap. */
12
+ reason?: string;
13
+ }
2
14
  export interface FlowContract {
3
15
  goal: string;
4
16
  actor?: string;
@@ -18,6 +30,18 @@ export interface FlowContract {
18
30
  /** Journey phases this flow declares. Default [HP, ER, EH]; UI is allowed but
19
31
  * never demanded (presentation is the balance axis's business, not coverage's). */
20
32
  phases: string[];
33
+ /**
34
+ * The use case's declared flow inventory — the answer to "how many flows does this use
35
+ * case HAVE?". `phases:` alone cannot answer it: a phase is present as soon as ONE
36
+ * scenario carries it, so a fifteen-flow use case with three scenarios reported full
37
+ * phase coverage. With an inventory, coverage is measured per DECLARED FLOW and a flow
38
+ * nobody wrote is a named gap instead of a silent absence (#595).
39
+ *
40
+ * `status` is what keeps a gap honest: every flow ends up `covered`, `deferred`,
41
+ * `pending-clarification` (an open question for the BA — the behaviour is not agreed yet,
42
+ * so no scenario can be right) or `out-of-scope`. Absent → `covered` is expected.
43
+ */
44
+ flows?: FlowDecl[];
21
45
  /** The mutated collection (cart, order, application …) — enables regression dims. */
22
46
  stateful?: string;
23
47
  budgets?: Record<string, number>;
@@ -74,6 +98,57 @@ export declare function loadFlowContract(unitDir: string): {
74
98
  /** Phase of a scenario: its declared phase token (FL-HP-001 / VP-FLOW-ER-02 / MS-EH-005)
75
99
  * when present, else vocabulary detection. */
76
100
  export declare function phaseOf(s: ScenarioInfo, declared: string[]): string | null;
101
+ /** The flow id a scenario claims: the `AF02`/`EF11`/`BF` segment of its viewpoint id. */
102
+ export declare function flowIdOf(s: ScenarioInfo, declaredPhases: string[]): string | null;
103
+ export interface InventoryResult {
104
+ /** Declared → the scenarios claiming it. A declared flow with none is a NAMED gap. */
105
+ covered: Array<{
106
+ id: string;
107
+ scenarios: string[];
108
+ }>;
109
+ /** Declared `covered` but nothing written — the silent-absence case, now named. */
110
+ uncovered: FlowDecl[];
111
+ /** Declared with a non-covered status, carried into the report so it stays visible. */
112
+ accounted: FlowDecl[];
113
+ /** A scenario's flow id that the inventory never declares — an id invented for one
114
+ * assertion (an "EF" that is really a success postcondition, an "AF" that is really a
115
+ * content check on the basic path). */
116
+ undeclared: Array<{
117
+ id: string;
118
+ scenario: string;
119
+ }>;
120
+ /** Covered declared flows / declared flows that OUGHT to be covered. */
121
+ ratio: number;
122
+ }
123
+ /**
124
+ * Coverage per DECLARED FLOW, which is not the same question as coverage per phase.
125
+ *
126
+ * A phase is "covered" the moment one scenario carries it, so a use case decomposed into
127
+ * fifteen flows reported `BF=✓ AF=✓ EF=✓ → 100%` on three scenarios. Reviewers reading the
128
+ * suite counted the flows instead and got a very different number (#595). When the contract
129
+ * declares its inventory, this measures the thing the reviewer measures — and every gap is
130
+ * named, which is what makes "no silent missing flow" checkable rather than aspirational.
131
+ */
132
+ export declare function flowInventory(contract: FlowContract, scenarios: ScenarioInfo[]): InventoryResult | null;
133
+ /**
134
+ * A phase id used for something that is not that kind of flow.
135
+ *
136
+ * Two shapes, both seen on a real suite that the phase check scored 100%:
137
+ * - an `EF` scenario that REACHES the contract outcome. An exception flow is blocked by
138
+ * definition; one that completes the journey is a success-path postcondition wearing an
139
+ * exception's id ("the buffer does not survive a finalized registration").
140
+ * - an `AF` scenario with no branch: it walks the basic path and asserts extra content on
141
+ * it. An alternate flow needs a point where the actor does something else; without one it
142
+ * is an assertion belonging to the basic flow ("the shared component renders the new-email
143
+ * copy").
144
+ * Both inflate the flow count while adding no branch coverage, which is exactly what makes a
145
+ * suite look complete to the harness and thin to a reviewer.
146
+ */
147
+ export declare function misfiledPhases(contract: FlowContract, scenarios: ScenarioInfo[], basicPhase: string): Array<{
148
+ scenario: string;
149
+ id: string;
150
+ why: string;
151
+ }>;
77
152
  /**
78
153
  * Verify the suite against the contract. Deterministic; a flow without a contract
79
154
  * returns hasContract:false and neutral values (the audit reports the checklist).
@@ -1 +1 @@
1
- {"version":3,"file":"flow-contract.d.ts","sourceRoot":"","sources":["../../src/harness/flow-contract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flow-contract.d.ts","sourceRoot":"","sources":["../../src/harness/flow-contract.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.flowContractPath = flowContractPath;
37
37
  exports.loadFlowContract = loadFlowContract;
38
38
  exports.phaseOf = phaseOf;
39
+ exports.flowIdOf = flowIdOf;
40
+ exports.flowInventory = flowInventory;
41
+ exports.misfiledPhases = misfiledPhases;
39
42
  exports.flowQuality = flowQuality;
40
43
  exports.continuityGaps = continuityGaps;
41
44
  exports.statefulDepthFor = statefulDepthFor;
@@ -66,6 +69,7 @@ const fs = __importStar(require("fs"));
66
69
  const path = __importStar(require("path"));
67
70
  const yaml_1 = require("yaml");
68
71
  const read_text_1 = require("./read-text");
72
+ const FLOW_STATUSES = new Set(['covered', 'deferred', 'pending-clarification', 'out-of-scope']);
69
73
  const DEFAULT_PHASES = ['HP', 'ER', 'EH'];
70
74
  /** The phase token of a flow id segment, branch number removed: `EF01` → `EF`, `HP` → `HP`. */
71
75
  const phaseToken = (seg) => seg.replace(/\d+$/, '').toUpperCase();
@@ -109,6 +113,23 @@ function loadFlowContract(unitDir) {
109
113
  successGuarantee: raw.successGuarantee !== undefined ? String(raw.successGuarantee) : (raw.success_guarantee !== undefined ? String(raw.success_guarantee) : undefined),
110
114
  minimalGuarantee: raw.minimalGuarantee !== undefined ? String(raw.minimalGuarantee) : (raw.minimal_guarantee !== undefined ? String(raw.minimal_guarantee) : undefined),
111
115
  phases,
116
+ flows: Array.isArray(raw.flows)
117
+ ? raw.flows
118
+ .filter((f) => f && typeof f === 'object' && f.id)
119
+ .map((f) => {
120
+ const status = String(f.status ?? 'covered').toLowerCase();
121
+ if (!FLOW_STATUSES.has(status)) {
122
+ errors.push(`flows[${String(f.id)}].status "${status}" is not one of covered|deferred|pending-clarification|out-of-scope`);
123
+ }
124
+ return {
125
+ id: String(f.id).toUpperCase(),
126
+ branchFrom: f.branchFrom !== undefined ? String(f.branchFrom) : (f.branch_from !== undefined ? String(f.branch_from) : undefined),
127
+ outcome: f.outcome !== undefined ? String(f.outcome) : undefined,
128
+ status: (FLOW_STATUSES.has(status) ? status : 'covered'),
129
+ reason: f.reason !== undefined ? String(f.reason) : undefined,
130
+ };
131
+ })
132
+ : undefined,
112
133
  stateful: raw.stateful !== undefined ? String(raw.stateful).toLowerCase() : undefined,
113
134
  budgets: (raw.budgets && typeof raw.budgets === 'object') ? raw.budgets : undefined,
114
135
  external: Array.isArray(raw.external)
@@ -122,7 +143,9 @@ function loadFlowContract(unitDir) {
122
143
  : undefined,
123
144
  golden: raw.golden === true,
124
145
  },
125
- errors: [],
146
+ // Shape errors found while reading the inventory (a bad `status:`) are REPORTED with the
147
+ // contract, not swallowed — the contract is still usable, the typo is not silently ignored.
148
+ errors,
126
149
  };
127
150
  }
128
151
  /** `[screen:element]` namespaces referenced by a scenario's steps, in step order. */
@@ -135,6 +158,22 @@ function namespacesInOrder(s) {
135
158
  function touchesOutcome(s, outcomeScreen) {
136
159
  return namespacesInOrder(s).includes(outcomeScreen);
137
160
  }
161
+ /**
162
+ * Does the scenario ARRIVE at the outcome, as opposed to merely naming it?
163
+ *
164
+ * A guard scenario asserts the outcome screen is *absent* (`[Complete:Title] header is hidden`)
165
+ * — the strongest thing it can say — so "the outcome namespace appears somewhere in the steps"
166
+ * counts it as reaching a screen it exists to prove unreachable.
167
+ */
168
+ function reachesOutcome(s, outcomeScreen) {
169
+ // Per STEP, from the structured list — `stepsText` is one space-joined blob, so any negation
170
+ // anywhere in the scenario would suppress every positive assertion in it.
171
+ const steps = (s.steps ?? []).map((st) => st.text.toLowerCase());
172
+ if (steps.length === 0)
173
+ return touchesOutcome(s, outcomeScreen);
174
+ return steps.some((t) => t.includes(`[${outcomeScreen}`)
175
+ && !/\b(is hidden|is not visible|does not exist|is absent|no longer)\b/.test(t));
176
+ }
138
177
  /** Phase of a scenario: its declared phase token (FL-HP-001 / VP-FLOW-ER-02 / MS-EH-005)
139
178
  * when present, else vocabulary detection. */
140
179
  function phaseOf(s, declared) {
@@ -156,6 +195,88 @@ function phaseOf(s, declared) {
156
195
  return 'HP';
157
196
  return null;
158
197
  }
198
+ /** The flow id a scenario claims: the `AF02`/`EF11`/`BF` segment of its viewpoint id. */
199
+ function flowIdOf(s, declaredPhases) {
200
+ const tokens = new Set(declaredPhases.map(phaseToken));
201
+ for (const seg of (s.vpId ?? '').toUpperCase().split('-')) {
202
+ if (tokens.has(phaseToken(seg)))
203
+ return seg;
204
+ }
205
+ return null;
206
+ }
207
+ /**
208
+ * Coverage per DECLARED FLOW, which is not the same question as coverage per phase.
209
+ *
210
+ * A phase is "covered" the moment one scenario carries it, so a use case decomposed into
211
+ * fifteen flows reported `BF=✓ AF=✓ EF=✓ → 100%` on three scenarios. Reviewers reading the
212
+ * suite counted the flows instead and got a very different number (#595). When the contract
213
+ * declares its inventory, this measures the thing the reviewer measures — and every gap is
214
+ * named, which is what makes "no silent missing flow" checkable rather than aspirational.
215
+ */
216
+ function flowInventory(contract, scenarios) {
217
+ if (!contract.flows || contract.flows.length === 0)
218
+ return null;
219
+ const byId = new Map();
220
+ const undeclared = [];
221
+ const declaredIds = new Set(contract.flows.map((f) => f.id));
222
+ for (const s of scenarios) {
223
+ const id = flowIdOf(s, contract.phases);
224
+ if (!id)
225
+ continue;
226
+ if (!declaredIds.has(id)) {
227
+ undeclared.push({ id, scenario: s.name });
228
+ continue;
229
+ }
230
+ byId.set(id, [...(byId.get(id) ?? []), s.name]);
231
+ }
232
+ const expected = contract.flows.filter((f) => f.status === 'covered');
233
+ const covered = expected.filter((f) => (byId.get(f.id) ?? []).length > 0)
234
+ .map((f) => ({ id: f.id, scenarios: byId.get(f.id) }));
235
+ return {
236
+ covered,
237
+ uncovered: expected.filter((f) => (byId.get(f.id) ?? []).length === 0),
238
+ accounted: contract.flows.filter((f) => f.status !== 'covered'),
239
+ undeclared,
240
+ ratio: expected.length ? covered.length / expected.length : 1,
241
+ };
242
+ }
243
+ /**
244
+ * A phase id used for something that is not that kind of flow.
245
+ *
246
+ * Two shapes, both seen on a real suite that the phase check scored 100%:
247
+ * - an `EF` scenario that REACHES the contract outcome. An exception flow is blocked by
248
+ * definition; one that completes the journey is a success-path postcondition wearing an
249
+ * exception's id ("the buffer does not survive a finalized registration").
250
+ * - an `AF` scenario with no branch: it walks the basic path and asserts extra content on
251
+ * it. An alternate flow needs a point where the actor does something else; without one it
252
+ * is an assertion belonging to the basic flow ("the shared component renders the new-email
253
+ * copy").
254
+ * Both inflate the flow count while adding no branch coverage, which is exactly what makes a
255
+ * suite look complete to the harness and thin to a reviewer.
256
+ */
257
+ function misfiledPhases(contract, scenarios, basicPhase) {
258
+ const out = [];
259
+ const outcome = contract.outcome.screen;
260
+ for (const s of scenarios) {
261
+ const id = flowIdOf(s, contract.phases);
262
+ if (!id || phaseToken(id) === phaseToken(basicPhase))
263
+ continue;
264
+ const ph = phaseToken(id);
265
+ if (ph === 'EF' && reachesOutcome(s, outcome)) {
266
+ // An error-then-recover flow legitimately ends at the outcome — it is the recovery that
267
+ // is being proven, and a guard flow is blocked rather than "failed". Only a scenario with
268
+ // no failure and no block at all is misfiled.
269
+ const failed = /\b(error|invalid|duplicate|reject|fail|denied|blocked|expired|refuse|unauthenticat|unauthoriz|redirect|guard|without (?:a |an |the )?\w+|not skippable|forces? \w+ to restart)\w*/i.test(s.haystack);
270
+ if (!failed) {
271
+ out.push({ scenario: s.name, id, why: `reaches the outcome screen [${outcome}] and nothing in it fails — this is a success-path postcondition, not an exception flow` });
272
+ }
273
+ }
274
+ if (ph === 'AF' && !/\b(back|cancel|return|instead|abandon|second tab|another tab|skip|leave|exit|retry|edit)\w*/i.test(s.haystack)) {
275
+ out.push({ scenario: s.name, id, why: 'no branch point — it walks the basic path and asserts extra content on it, so the assertion belongs to the basic flow' });
276
+ }
277
+ }
278
+ return out;
279
+ }
159
280
  /**
160
281
  * Verify the suite against the contract. Deterministic; a flow without a contract
161
282
  * returns hasContract:false and neutral values (the audit reports the checklist).
@@ -1 +1 @@
1
- {"version":3,"file":"flow-contract.js","sourceRoot":"","sources":["../../src/harness/flow-contract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flow-contract.js","sourceRoot":"","sources":["../../src/harness/flow-contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ export interface NextStep {
2
+ /** The command to run, as the operator would type it. */
3
+ command: string;
4
+ /** Why it is next — stated so an agent can weigh it, not just obey it. */
5
+ because: string;
6
+ /** `blocked` steps are not runnable yet; they name what to resolve first. */
7
+ kind: 'do' | 'blocked' | 'optional';
8
+ }
9
+ export interface UnitState {
10
+ unit: string;
11
+ kind: 'screen' | 'flow' | 'api';
12
+ hasSpec: boolean;
13
+ hasViewpoint: boolean;
14
+ hasContract: boolean;
15
+ hasFlowInventory: boolean;
16
+ scenarioCount: number;
17
+ hasSelectors: boolean;
18
+ selectorsArePlaceholder: boolean;
19
+ compiled: boolean;
20
+ hasResults: boolean;
21
+ hasDeliverable: boolean;
22
+ audit?: {
23
+ overall: number;
24
+ gateStatus: string;
25
+ findings: string[];
26
+ viewpointBaselineStatus?: string;
27
+ };
28
+ steps: NextStep[];
29
+ }
30
+ /**
31
+ * Everything the resolver needs, read from disk. `unitId` is the catalog id
32
+ * (`<screen>` · `flows/<f>` · `api/<a>`); `unitDir` is its directory.
33
+ */
34
+ export declare function readUnitState(projectRoot: string, unitDir: string, unit: string, kind: UnitState['kind']): UnitState;
35
+ /**
36
+ * The ordered answer. Earliest unmet precondition first, so the list reads as a path rather than
37
+ * a menu — and a `blocked` step names what to resolve instead of pretending it can run.
38
+ */
39
+ export declare function deriveSteps(s: UnitState): NextStep[];
40
+ //# sourceMappingURL=next-step.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next-step.d.ts","sourceRoot":"","sources":["../../src/harness/next-step.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,QAAQ;IACvB,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,UAAU,CAAC;CACrC;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,uBAAuB,EAAE,OAAO,CAAC;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,uBAAuB,CAAC,EAAE,MAAM,CAAC;KAClC,CAAC;IACF,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAqBD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,GAC1E,SAAS,CA8DX;AAUD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,SAAS,GAAG,QAAQ,EAAE,CAmFpD"}
@@ -0,0 +1,242 @@
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
+ exports.readUnitState = readUnitState;
37
+ exports.deriveSteps = deriveSteps;
38
+ /**
39
+ * "What now?" — one deterministic resolver over the project's own state.
40
+ *
41
+ * The next step used to be hardcoded per command, and only two of twenty-nine printed one at
42
+ * all. So a run that ended anywhere else ended in silence: `sungen capability add mock`
43
+ * finished with a blank line, the operator's agent had nothing telling it what remained, and the
44
+ * whole session stopped mid-workflow (#597).
45
+ *
46
+ * Hardcoding it in the other twenty-seven would repeat the mistake in bulk. What decides the
47
+ * next step is not which command just ran — it is what the project now HOLDS: the artifacts on
48
+ * disk, the audit report in `.sungen/reports/`, the accepted viewpoint baseline, the compiled
49
+ * spec, the run results. So this reads that state and derives the answer, and every command ends
50
+ * by pointing here. One place to be right, one place to test.
51
+ *
52
+ * Deterministic and read-only: same project state → same answer, no network, no writes.
53
+ */
54
+ const fs = __importStar(require("fs"));
55
+ const path = __importStar(require("path"));
56
+ const unit_paths_1 = require("./unit-paths");
57
+ const read_text_1 = require("./read-text");
58
+ const exists = (p) => fs.existsSync(p);
59
+ function readJson(p) {
60
+ try {
61
+ return JSON.parse((0, read_text_1.readTextFile)(p));
62
+ }
63
+ catch {
64
+ return null; // absent or unreadable — treated as "not run"
65
+ }
66
+ }
67
+ function countScenarios(unitDir, unit) {
68
+ let n = 0;
69
+ for (const f of (0, unit_paths_1.featureFilesFor)(unitDir, unit)) {
70
+ const text = (0, read_text_1.readTextFile)(f) ?? '';
71
+ n += (text.match(/^\s*Scenario(?: Outline)?:/gm) ?? []).length;
72
+ }
73
+ return n;
74
+ }
75
+ /**
76
+ * Everything the resolver needs, read from disk. `unitId` is the catalog id
77
+ * (`<screen>` · `flows/<f>` · `api/<a>`); `unitDir` is its directory.
78
+ */
79
+ function readUnitState(projectRoot, unitDir, unit, kind) {
80
+ const req = path.join(unitDir, 'requirements');
81
+ const slug = (0, unit_paths_1.reportSlug)(unit);
82
+ const audit = readJson(path.join(projectRoot, '.sungen', 'reports', `${slug}-audit.json`));
83
+ const selectorsDir = path.join(unitDir, 'selectors');
84
+ let selectorFiles = [];
85
+ try {
86
+ selectorFiles = fs.readdirSync(selectorsDir).filter((f) => f.endsWith('.yaml'));
87
+ }
88
+ catch { /* api units carry no selectors */ }
89
+ const selectorText = selectorFiles.map((f) => (0, read_text_1.readTextFile)(path.join(selectorsDir, f)) ?? '').join('\n');
90
+ const contractPath = path.join(req, 'flow-contract.yaml');
91
+ const contractText = (0, read_text_1.readTextFile)(contractPath) ?? '';
92
+ const specDirs = [
93
+ path.join(projectRoot, 'specs', 'generated', 'flows', unit),
94
+ path.join(projectRoot, 'specs', 'generated', unit),
95
+ ];
96
+ const compiled = specDirs.some((d) => {
97
+ try {
98
+ return fs.readdirSync(d).some((f) => f.endsWith('.spec.ts'));
99
+ }
100
+ catch {
101
+ return false;
102
+ }
103
+ });
104
+ const hasResults = specDirs.some((d) => {
105
+ try {
106
+ return fs.readdirSync(d).some((f) => f.endsWith('-test-result.json'));
107
+ }
108
+ catch {
109
+ return false;
110
+ }
111
+ });
112
+ let hasDeliverable = false;
113
+ try {
114
+ hasDeliverable = fs.readdirSync(path.join(projectRoot, 'qa', 'deliverables'))
115
+ .some((f) => f.startsWith(`${slug}-`));
116
+ }
117
+ catch { /* nothing exported yet */ }
118
+ const score = (audit?.score ?? {});
119
+ const baseline = (audit?.viewpointBaseline ?? {});
120
+ const state = {
121
+ unit, kind,
122
+ hasSpec: exists(path.join(req, 'spec.md')),
123
+ hasViewpoint: exists(path.join(req, 'test-viewpoint.md')),
124
+ hasContract: exists(contractPath),
125
+ // A contract WITHOUT `flows:` can only be scored per phase, which is a materially weaker
126
+ // claim — so it is part of the state, not a detail.
127
+ hasFlowInventory: /^\s*flows:\s*$/m.test(contractText),
128
+ scenarioCount: countScenarios(unitDir, unit),
129
+ hasSelectors: selectorFiles.length > 0,
130
+ // A scaffolded selector file exists but resolves nothing; treating it as "done" is what
131
+ // makes a run look further along than it is.
132
+ selectorsArePlaceholder: selectorFiles.length > 0
133
+ && (/TODO|PLACEHOLDER|REPLACE ME/i.test(selectorText) || selectorText.trim().length < 40),
134
+ compiled, hasResults, hasDeliverable,
135
+ audit: audit
136
+ ? {
137
+ overall: typeof score.overall === 'number' ? score.overall : 0,
138
+ gateStatus: String(audit.gateStatus ?? 'UNKNOWN'),
139
+ findings: Array.isArray(audit.findings) ? audit.findings : [],
140
+ viewpointBaselineStatus: baseline.status,
141
+ }
142
+ : undefined,
143
+ steps: [],
144
+ };
145
+ state.steps = deriveSteps(state);
146
+ return state;
147
+ }
148
+ /** The finding codes worth naming in a next step — each maps to a specific repair. */
149
+ const REPAIRABLE = [
150
+ 'FLOW-CONTRACT-MISSING', 'FLOW-INVENTORY-MISSING', 'FLOW-UNCOVERED', 'FLOW-UNDECLARED',
151
+ 'FLOW-PHASE-MISFILED', 'FLOW-GUARANTEE-MISSING', 'FLOW-OUTCOME-UNPROVEN', 'CONTINUITY-ONE-SIDED',
152
+ 'SPEC-RESTATED-UNVERIFIED', 'VIEWPOINT-GESTURE-SUBSTITUTED', 'SPEC-UNCOVERED', 'TRIGGER-UNCOVERED',
153
+ 'VIEWPOINT-ITEM-MISSING', 'MANUAL-CODE-MISSING', 'MANUAL-AUTOMATABLE', 'DEPTH-DEFERRED',
154
+ ];
155
+ /**
156
+ * The ordered answer. Earliest unmet precondition first, so the list reads as a path rather than
157
+ * a menu — and a `blocked` step names what to resolve instead of pretending it can run.
158
+ */
159
+ function deriveSteps(s) {
160
+ const out = [];
161
+ const design = s.kind === 'api' ? `/sungen:create-test ${s.unit}` : `/sungen:create-test ${s.unit}`;
162
+ if (!s.hasSpec && !s.hasViewpoint) {
163
+ out.push({
164
+ kind: 'blocked',
165
+ command: `write qa/${s.kind === 'screen' ? 'screens' : s.kind === 'flow' ? 'flows' : 'api'}/${s.unit}/requirements/spec.md`,
166
+ because: 'the unit has neither a spec nor a test-viewpoint, so there is nothing to generate FROM — generation without a source invents behaviour',
167
+ });
168
+ return out;
169
+ }
170
+ if (s.kind === 'flow' && !s.hasContract) {
171
+ out.push({
172
+ kind: 'blocked',
173
+ command: `author requirements/flow-contract.yaml, then ${design}`,
174
+ because: 'a flow with no contract is scored as a generic screen against page-type themes a journey cannot have (FLOW-CONTRACT-MISSING)',
175
+ });
176
+ return out;
177
+ }
178
+ if (s.scenarioCount === 0) {
179
+ out.push({ kind: 'do', command: design, because: 'no scenarios exist yet' });
180
+ return out;
181
+ }
182
+ if (s.kind === 'flow' && !s.hasFlowInventory) {
183
+ out.push({
184
+ kind: 'do',
185
+ command: `add \`flows:\` to requirements/flow-contract.yaml, then sungen audit --screen ${s.unit}`,
186
+ because: 'without the inventory, coverage is measured per PHASE — and a phase counts as covered as soon as one scenario carries it, so the number cannot tell you a flow is missing',
187
+ });
188
+ }
189
+ if (!s.audit) {
190
+ out.push({ kind: 'do', command: `sungen audit --screen ${s.unit}`, because: 'the suite has never been measured' });
191
+ return out;
192
+ }
193
+ if (s.audit.viewpointBaselineStatus === 'changed') {
194
+ out.push({
195
+ kind: 'do',
196
+ command: `sungen audit --screen ${s.unit} --accept-viewpoint`,
197
+ because: 'test-viewpoint.md changed since the accepted baseline, so the ledger and traceability axes are not evidence until you confirm the new declaration',
198
+ });
199
+ }
200
+ const repair = s.audit.findings
201
+ .map((f) => f.split(':')[0].trim())
202
+ .filter((code) => REPAIRABLE.includes(code));
203
+ if (repair.length > 0) {
204
+ out.push({
205
+ kind: 'do',
206
+ command: `repair, then sungen audit --screen ${s.unit}`,
207
+ because: `${repair.length} finding(s) name a specific repair: ${[...new Set(repair)].slice(0, 4).join(', ')}`,
208
+ });
209
+ }
210
+ if (s.audit.gateStatus === 'FAIL') {
211
+ out.push({
212
+ kind: 'blocked',
213
+ command: `repair the gate, then sungen audit --screen ${s.unit}`,
214
+ because: `the viewpoint gate is FAIL at ${s.audit.overall}/10 — running tests against a design that fails its own gate measures the wrong thing`,
215
+ });
216
+ return out;
217
+ }
218
+ if (s.kind !== 'api' && (!s.hasSelectors || s.selectorsArePlaceholder)) {
219
+ out.push({
220
+ kind: 'do',
221
+ command: `/sungen:run-test ${s.unit}`,
222
+ because: s.hasSelectors
223
+ ? 'the selector file is still a placeholder, so nothing resolves against a live page'
224
+ : 'no selectors exist yet — run-test generates them from the live page, compiles and auto-fixes',
225
+ });
226
+ return out;
227
+ }
228
+ if (!s.compiled) {
229
+ out.push({ kind: 'do', command: `sungen generate --${s.kind === 'flow' ? 'flow' : 'screen'} ${s.unit}`, because: 'the suite has not been compiled to a spec yet' });
230
+ return out;
231
+ }
232
+ if (!s.hasResults) {
233
+ out.push({ kind: 'do', command: `/sungen:run-test ${s.unit}`, because: 'the compiled spec has never been run, so every case is Pending' });
234
+ return out;
235
+ }
236
+ if (!s.hasDeliverable) {
237
+ out.push({ kind: 'do', command: `/sungen:delivery ${s.unit}`, because: 'results exist but have not been exported to the Test Case & Coverage Matrix' });
238
+ }
239
+ out.push({ kind: 'optional', command: `/sungen:create-test ${s.unit}`, because: 'extend coverage — the next tier, or the flows the inventory still lists as pending' });
240
+ return out;
241
+ }
242
+ //# sourceMappingURL=next-step.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next-step.js","sourceRoot":"","sources":["../../src/harness/next-step.ts"],"names":[],"mappings":"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"}