@sun-asterisk/sungen 3.3.0-alpha.6 → 3.3.0-alpha.7

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 (130) hide show
  1. package/dist/cli/commands/contract-derive-command.d.ts.map +1 -1
  2. package/dist/cli/commands/contract-derive-command.js +2 -0
  3. package/dist/cli/commands/contract-derive-command.js.map +1 -1
  4. package/dist/cli/commands/delivery.d.ts.map +1 -1
  5. package/dist/cli/commands/delivery.js +21 -3
  6. package/dist/cli/commands/delivery.js.map +1 -1
  7. package/dist/cli/commands/generate.d.ts.map +1 -1
  8. package/dist/cli/commands/generate.js +3 -1
  9. package/dist/cli/commands/generate.js.map +1 -1
  10. package/dist/cli/commands/next.d.ts +4 -2
  11. package/dist/cli/commands/next.d.ts.map +1 -1
  12. package/dist/cli/commands/next.js +7 -0
  13. package/dist/cli/commands/next.js.map +1 -1
  14. package/dist/cli/commands/update.d.ts.map +1 -1
  15. package/dist/cli/commands/update.js +6 -2
  16. package/dist/cli/commands/update.js.map +1 -1
  17. package/dist/cli/index.js +4 -0
  18. package/dist/cli/index.js.map +1 -1
  19. package/dist/cli/json-error-on-exit.d.ts +34 -0
  20. package/dist/cli/json-error-on-exit.d.ts.map +1 -0
  21. package/dist/cli/json-error-on-exit.js +63 -0
  22. package/dist/cli/json-error-on-exit.js.map +1 -0
  23. package/dist/cli/waiting-for-you-block.d.ts +15 -0
  24. package/dist/cli/waiting-for-you-block.d.ts.map +1 -0
  25. package/dist/cli/waiting-for-you-block.js +19 -0
  26. package/dist/cli/waiting-for-you-block.js.map +1 -0
  27. package/dist/contract/derive-free-feature.d.ts +2 -0
  28. package/dist/contract/derive-free-feature.d.ts.map +1 -1
  29. package/dist/contract/derive-free-feature.js +22 -0
  30. package/dist/contract/derive-free-feature.js.map +1 -1
  31. package/dist/decisions/legacy-waiver-migration.d.ts +2 -0
  32. package/dist/decisions/legacy-waiver-migration.d.ts.map +1 -1
  33. package/dist/decisions/legacy-waiver-migration.js +5 -2
  34. package/dist/decisions/legacy-waiver-migration.js.map +1 -1
  35. package/dist/graph/board-human-actions.d.ts +5 -0
  36. package/dist/graph/board-human-actions.d.ts.map +1 -0
  37. package/dist/graph/board-human-actions.js +83 -0
  38. package/dist/graph/board-human-actions.js.map +1 -0
  39. package/dist/graph/evaluate-graph.d.ts +16 -0
  40. package/dist/graph/evaluate-graph.d.ts.map +1 -1
  41. package/dist/graph/evaluate-graph.js +29 -6
  42. package/dist/graph/evaluate-graph.js.map +1 -1
  43. package/dist/graph/human-action.d.ts +21 -0
  44. package/dist/graph/human-action.d.ts.map +1 -0
  45. package/dist/graph/human-action.js +3 -0
  46. package/dist/graph/human-action.js.map +1 -0
  47. package/dist/graph/node-decl.d.ts +9 -0
  48. package/dist/graph/node-decl.d.ts.map +1 -1
  49. package/dist/graph/node-decl.js +4 -1
  50. package/dist/graph/node-decl.js.map +1 -1
  51. package/dist/graph/nodes/test-case-contract-nodes.d.ts.map +1 -1
  52. package/dist/graph/nodes/test-case-contract-nodes.js +16 -3
  53. package/dist/graph/nodes/test-case-contract-nodes.js.map +1 -1
  54. package/dist/graph/nodes/test-case-nodes.d.ts.map +1 -1
  55. package/dist/graph/nodes/test-case-nodes.js +16 -4
  56. package/dist/graph/nodes/test-case-nodes.js.map +1 -1
  57. package/dist/graph/nodes/unit-audit-nodes.d.ts.map +1 -1
  58. package/dist/graph/nodes/unit-audit-nodes.js +1 -0
  59. package/dist/graph/nodes/unit-audit-nodes.js.map +1 -1
  60. package/dist/graph/nodes/unit-contract-node.d.ts.map +1 -1
  61. package/dist/graph/nodes/unit-contract-node.js +8 -0
  62. package/dist/graph/nodes/unit-contract-node.js.map +1 -1
  63. package/dist/harness/catalog/gate-rules.yaml +1 -1
  64. package/dist/harness/gates/delivery-checklist.d.ts.map +1 -1
  65. package/dist/harness/gates/delivery-checklist.js +9 -1
  66. package/dist/harness/gates/delivery-checklist.js.map +1 -1
  67. package/dist/harness/gates/in-run-decision-check.d.ts.map +1 -1
  68. package/dist/harness/gates/in-run-decision-check.js +10 -3
  69. package/dist/harness/gates/in-run-decision-check.js.map +1 -1
  70. package/dist/harness/journey.d.ts +21 -0
  71. package/dist/harness/journey.d.ts.map +1 -1
  72. package/dist/harness/journey.js +61 -11
  73. package/dist/harness/journey.js.map +1 -1
  74. package/dist/harness/next-step.d.ts +14 -0
  75. package/dist/harness/next-step.d.ts.map +1 -1
  76. package/dist/harness/next-step.js +12 -0
  77. package/dist/harness/next-step.js.map +1 -1
  78. package/dist/hooks/guard-tty-spoof-rule.d.ts +3 -2
  79. package/dist/hooks/guard-tty-spoof-rule.d.ts.map +1 -1
  80. package/dist/hooks/guard-tty-spoof-rule.js +2 -2
  81. package/dist/hooks/guard-tty-spoof-rule.js.map +1 -1
  82. package/dist/hooks/hand-back-core.d.ts +1 -1
  83. package/dist/hooks/hand-back-core.d.ts.map +1 -1
  84. package/dist/hooks/hand-back-core.js +4 -2
  85. package/dist/hooks/hand-back-core.js.map +1 -1
  86. package/dist/hooks/session-start-unit-state-hook.d.ts +2 -1
  87. package/dist/hooks/session-start-unit-state-hook.d.ts.map +1 -1
  88. package/dist/hooks/session-start-unit-state-hook.js +4 -1
  89. package/dist/hooks/session-start-unit-state-hook.js.map +1 -1
  90. package/dist/hooks/stop-next-step-hook.d.ts.map +1 -1
  91. package/dist/hooks/stop-next-step-hook.js +1 -0
  92. package/dist/hooks/stop-next-step-hook.js.map +1 -1
  93. package/dist/orchestrator/templates/ai-src/commands/delivery.md +2 -0
  94. package/dist/orchestrator/templates/ai-src/commands/review.md +2 -0
  95. package/dist/orchestrator/templates/ai-src/partials/waiting-for-you.claude.md +11 -0
  96. package/dist/orchestrator/templates/ai-src/partials/waiting-for-you.codex.md +11 -0
  97. package/dist/orchestrator/templates/ai-src/partials/waiting-for-you.copilot.md +11 -0
  98. package/package.json +3 -3
  99. package/src/cli/commands/contract-derive-command.ts +1 -0
  100. package/src/cli/commands/delivery.ts +20 -3
  101. package/src/cli/commands/generate.ts +3 -1
  102. package/src/cli/commands/next.ts +7 -2
  103. package/src/cli/commands/update.ts +6 -2
  104. package/src/cli/index.ts +4 -0
  105. package/src/cli/json-error-on-exit.ts +72 -0
  106. package/src/cli/waiting-for-you-block.ts +23 -0
  107. package/src/contract/derive-free-feature.ts +21 -0
  108. package/src/decisions/legacy-waiver-migration.ts +5 -1
  109. package/src/graph/board-human-actions.ts +80 -0
  110. package/src/graph/evaluate-graph.ts +37 -8
  111. package/src/graph/human-action.ts +33 -0
  112. package/src/graph/node-decl.ts +11 -0
  113. package/src/graph/nodes/test-case-contract-nodes.ts +20 -4
  114. package/src/graph/nodes/test-case-nodes.ts +19 -5
  115. package/src/graph/nodes/unit-audit-nodes.ts +2 -1
  116. package/src/graph/nodes/unit-contract-node.ts +12 -1
  117. package/src/harness/catalog/gate-rules.yaml +1 -1
  118. package/src/harness/gates/delivery-checklist.ts +11 -1
  119. package/src/harness/gates/in-run-decision-check.ts +11 -4
  120. package/src/harness/journey.ts +79 -8
  121. package/src/harness/next-step.ts +24 -1
  122. package/src/hooks/guard-tty-spoof-rule.ts +5 -4
  123. package/src/hooks/hand-back-core.ts +4 -2
  124. package/src/hooks/session-start-unit-state-hook.ts +4 -1
  125. package/src/hooks/stop-next-step-hook.ts +1 -0
  126. package/src/orchestrator/templates/ai-src/commands/delivery.md +2 -0
  127. package/src/orchestrator/templates/ai-src/commands/review.md +2 -0
  128. package/src/orchestrator/templates/ai-src/partials/waiting-for-you.claude.md +11 -0
  129. package/src/orchestrator/templates/ai-src/partials/waiting-for-you.codex.md +11 -0
  130. package/src/orchestrator/templates/ai-src/partials/waiting-for-you.copilot.md +11 -0
@@ -0,0 +1,34 @@
1
+ /**
2
+ * `--json` failures speak JSON too (#939 item 7). A command that supports `--json` and fails used to
3
+ * print its error on stderr and NOTHING on stdout, so a caller parsing stdout got an empty string. Now,
4
+ * when such a command exits non-zero without having written stdout, the exit prints one object:
5
+ *
6
+ * {"error":{"code":"command-failed" | "usage-error","message":"<the error it printed>"}}
7
+ *
8
+ * command-failed the action ran and failed (`next nope --json`)
9
+ * usage-error commander refused the arguments before any action ran (`audit --json --bogus`)
10
+ * The human error stays on stderr, unchanged. A command that printed its own JSON keeps it, whatever
11
+ * its exit code (`contract check --json` exits 2 with the verdict); a command without `--json` is never
12
+ * touched — commander's own "unknown option '--json'" is its usage error, not a JSON caller's.
13
+ * Like the hand-back, it hangs off process exit: commands exit from inside their actions.
14
+ */
15
+ import type { Command } from 'commander';
16
+ export type JsonErrorCode = 'command-failed' | 'usage-error';
17
+ export interface JsonError {
18
+ error: {
19
+ code: JsonErrorCode;
20
+ message: string;
21
+ };
22
+ }
23
+ /** The error object for what the command printed on stderr: from its first error line on, the hand-back dropped. */
24
+ export declare function jsonErrorPayload(stderr: string, actionRan: boolean, exitCode: number): JsonError;
25
+ /** The (sub)command `args` name, walked down from `program`, defines `--json`. */
26
+ export declare function commandSupportsJson(program: Command, args: string[]): boolean;
27
+ /**
28
+ * Wire it to process exit for `argv` (a no-op without `--json`). `supportsJson` is asked at exit, once
29
+ * every command is registered; `onAction` marks that an action ran (a failure then is not a usage error).
30
+ */
31
+ export declare function attachJsonErrorOnExit(argv: string[], supportsJson: (args: string[]) => boolean): {
32
+ onAction: () => void;
33
+ };
34
+ //# sourceMappingURL=json-error-on-exit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-error-on-exit.d.ts","sourceRoot":"","sources":["../../src/cli/json-error-on-exit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,aAAa,CAAC;AAC7D,MAAM,WAAW,SAAS;IAAG,KAAK,EAAE;QAAE,IAAI,EAAE,aAAa,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE;AAM9E,oHAAoH;AACpH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAMhG;AAED,kFAAkF;AAClF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAS7E;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,GAAG;IAAE,QAAQ,EAAE,MAAM,IAAI,CAAA;CAAE,CAuBzH"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.jsonErrorPayload = jsonErrorPayload;
4
+ exports.commandSupportsJson = commandSupportsJson;
5
+ exports.attachJsonErrorOnExit = attachJsonErrorOnExit;
6
+ const ANSI = /\u001b\[[0-9;]*m/g;
7
+ const ERROR_LINE = /^(?:Error|error|Fatal error|❌[^:]*):\s*/;
8
+ const MAX_CAPTURE = 64 * 1024;
9
+ /** The error object for what the command printed on stderr: from its first error line on, the hand-back dropped. */
10
+ function jsonErrorPayload(stderr, actionRan, exitCode) {
11
+ const lines = stderr.replace(ANSI, '').split('\n').map((l) => l.trimEnd()).filter((l) => l && !/^Next: /.test(l));
12
+ const at = lines.findIndex((l) => ERROR_LINE.test(l));
13
+ const picked = at >= 0 ? lines.slice(at) : lines.slice(-1);
14
+ const message = picked.join('\n').replace(ERROR_LINE, '').trim() || `exited with code ${exitCode}`;
15
+ return { error: { code: actionRan ? 'command-failed' : 'usage-error', message } };
16
+ }
17
+ /** The (sub)command `args` name, walked down from `program`, defines `--json`. */
18
+ function commandSupportsJson(program, args) {
19
+ let cmd = program;
20
+ for (const a of args) {
21
+ if (a.startsWith('-'))
22
+ continue;
23
+ const sub = cmd.commands.find((c) => c.name() === a || c.aliases().includes(a));
24
+ if (!sub)
25
+ break;
26
+ cmd = sub;
27
+ }
28
+ return cmd !== program && cmd.options.some((o) => o.long === '--json');
29
+ }
30
+ /**
31
+ * Wire it to process exit for `argv` (a no-op without `--json`). `supportsJson` is asked at exit, once
32
+ * every command is registered; `onAction` marks that an action ran (a failure then is not a usage error).
33
+ */
34
+ function attachJsonErrorOnExit(argv, supportsJson) {
35
+ const args = argv.slice(2);
36
+ if (!args.includes('--json'))
37
+ return { onAction: () => undefined };
38
+ let wroteStdout = false;
39
+ let stderr = '';
40
+ let actionRan = false;
41
+ const writeOut = process.stdout.write.bind(process.stdout);
42
+ const writeErr = process.stderr.write.bind(process.stderr);
43
+ process.stdout.write = ((chunk, ...rest) => {
44
+ if (String(chunk).length)
45
+ wroteStdout = true;
46
+ return writeOut(chunk, ...rest);
47
+ });
48
+ process.stderr.write = ((chunk, ...rest) => {
49
+ if (stderr.length < MAX_CAPTURE)
50
+ stderr += String(chunk);
51
+ return writeErr(chunk, ...rest);
52
+ });
53
+ process.on('exit', (code) => {
54
+ try {
55
+ if (code === 0 || wroteStdout || !supportsJson(args))
56
+ return;
57
+ writeOut(`${JSON.stringify(jsonErrorPayload(stderr, actionRan, code))}\n`);
58
+ }
59
+ catch { /* the exit code is the contract; this object is a courtesy */ }
60
+ });
61
+ return { onAction: () => { actionRan = true; } };
62
+ }
63
+ //# sourceMappingURL=json-error-on-exit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-error-on-exit.js","sourceRoot":"","sources":["../../src/cli/json-error-on-exit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The "Waiting for you" block (#954) — every pending human-only action of a unit, as ready-to-copy
3
+ * commands with the reason under each. One renderer for the three places that show it: `sungen next`
4
+ * (text) and the Stop / SessionStart hook context. Commands as the project runs sungen (`npx sungen`
5
+ * with a local install, #939); `--json` keeps them canonical in `humanActions`. An instruction (a commit
6
+ * through review, a `git checkout --`) is marked `✎ … (by hand, not a command)`, never shown as one to copy.
7
+ */
8
+ import type { HumanAction } from '../graph/human-action';
9
+ export declare const WAITING_FOR_YOU_HEAD = "\u23F3 Waiting for you \u2014 a human runs these in their own terminal (in Claude Code: ! <command>); an agent never runs them:";
10
+ /**
11
+ * The block's lines (indented two spaces), or none when nothing waits for a human. `heldBy`: the title
12
+ * of the blocking step that cut the frontier — the block is not exhaustive then, and says what holds the rest.
13
+ */
14
+ export declare function waitingForYouLines(actions: readonly HumanAction[] | undefined, projectRoot: string, heldBy?: string): string[];
15
+ //# sourceMappingURL=waiting-for-you-block.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"waiting-for-you-block.d.ts","sourceRoot":"","sources":["../../src/cli/waiting-for-you-block.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGzD,eAAO,MAAM,oBAAoB,oIAA0H,CAAC;AAE5J;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,GAAG,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAM9H"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WAITING_FOR_YOU_HEAD = void 0;
4
+ exports.waitingForYouLines = waitingForYouLines;
5
+ const project_sungen_invocation_1 = require("./project-sungen-invocation");
6
+ exports.WAITING_FOR_YOU_HEAD = '⏳ Waiting for you — a human runs these in their own terminal (in Claude Code: ! <command>); an agent never runs them:';
7
+ /**
8
+ * The block's lines (indented two spaces), or none when nothing waits for a human. `heldBy`: the title
9
+ * of the blocking step that cut the frontier — the block is not exhaustive then, and says what holds the rest.
10
+ */
11
+ function waitingForYouLines(actions, projectRoot, heldBy) {
12
+ if (!actions?.length)
13
+ return [];
14
+ return [` ${exports.WAITING_FOR_YOU_HEAD}`, ...actions.flatMap((a) => [
15
+ a.instruction ? ` ✎ ${a.command} (by hand, not a command)` : ` ${(0, project_sungen_invocation_1.withProjectInvocation)(a.command, projectRoot)}`,
16
+ ` ${a.reason}`,
17
+ ]), ...(heldBy ? [` More appear once "${heldBy}" clears.`] : [])];
18
+ }
19
+ //# sourceMappingURL=waiting-for-you-block.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"waiting-for-you-block.js","sourceRoot":"","sources":["../../src/cli/waiting-for-you-block.ts"],"names":[],"mappings":";;;AAgBA,gDAMC;AAdD,2EAAoE;AAEvD,QAAA,oBAAoB,GAAG,uHAAuH,CAAC;AAE5J;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,OAA2C,EAAE,WAAmB,EAAE,MAAe;IAClH,IAAI,CAAC,OAAO,EAAE,MAAM;QAAE,OAAO,EAAE,CAAC;IAChC,OAAO,CAAC,KAAK,4BAAoB,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC7D,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,6BAA6B,CAAC,CAAC,CAAC,QAAQ,IAAA,iDAAqB,EAAC,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE;YAC1H,UAAU,CAAC,CAAC,MAAM,EAAE;SACrB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,0BAA0B,MAAM,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxE,CAAC"}
@@ -27,6 +27,8 @@ export interface DeriveResult {
27
27
  }>;
28
28
  refused?: SecretHit[];
29
29
  note?: string;
30
+ /** A derived id another `.feature` of the unit already uses (#939) — `contract check` and approve would trip on it later. */
31
+ warnings?: string[];
30
32
  }
31
33
  /**
32
34
  * Nothing was derived and nothing explains it away: no test of the unit left an admissible trace
@@ -1 +1 @@
1
- {"version":3,"file":"derive-free-feature.d.ts","sourceRoot":"","sources":["../../src/contract/derive-free-feature.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAwD,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAO7G,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAKrE,MAAM,WAAW,WAAW;IAAG,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAA;CAAE;AACjJ,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5F,sHAAsH;IACtH,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;IAChE,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAoBD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,YAAY,GAAG,OAAO,CAEvD;AAED,wBAAsB,iBAAiB,CAAC,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAiD7E"}
1
+ {"version":3,"file":"derive-free-feature.d.ts","sourceRoot":"","sources":["../../src/contract/derive-free-feature.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAwD,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAQ7G,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAKrE,MAAM,WAAW,WAAW;IAAG,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAA;CAAE;AACjJ,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5F,sHAAsH;IACtH,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;IAChE,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6HAA6H;IAC7H,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAoCD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,YAAY,GAAG,OAAO,CAEvD;AAED,wBAAsB,iBAAiB,CAAC,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAmD7E"}
@@ -59,6 +59,7 @@ const field_semantic_redaction_1 = require("./field-semantic-redaction");
59
59
  const free_feature_blocks_1 = require("./free-feature-blocks");
60
60
  const lock_secret_guard_1 = require("./lock-secret-guard");
61
61
  const normalize_feature_steps_1 = require("./normalize-feature-steps");
62
+ const unit_paths_1 = require("../harness/unit-paths");
62
63
  const render_free_gherkin_1 = require("./render-free-gherkin");
63
64
  const collect_trace_evidence_1 = require("./trace/collect-trace-evidence");
64
65
  const identity_cache_1 = require("./trace/identity-cache");
@@ -83,6 +84,24 @@ function semanticHits(text, label) {
83
84
  fs.rmSync(dir, { recursive: true, force: true });
84
85
  }
85
86
  }
87
+ /**
88
+ * The derived ids another `.feature` of the unit already carries (#939): `contract check` reports an id
89
+ * used twice and approve refuses it, so say it now — when it is still one rename away — not at check.
90
+ */
91
+ function reusedIdWarnings(unit, freeFile, ids) {
92
+ const owners = new Map();
93
+ for (const f of (0, unit_paths_1.featureFilesFor)(unit.dir, unit.name)) {
94
+ if (path.resolve(f) === path.resolve(freeFile) || !fs.existsSync(f))
95
+ continue;
96
+ try {
97
+ for (const sc of (0, normalize_feature_steps_1.scenariosOfFeatureFile)(f))
98
+ if (!owners.has(sc.id))
99
+ owners.set(sc.id, path.basename(f));
100
+ }
101
+ catch { /* an unparseable sibling is `contract check`'s to report */ }
102
+ }
103
+ return ids.filter((id) => owners.has(id)).map((id) => `${id} is already the ID of a scenario in ${owners.get(id)} — the derived scenario reuses it; give the free test (its title's leading ID) or that scenario its own ID, or \`sungen contract check\` reports it twice and approval refuses it`);
104
+ }
86
105
  /**
87
106
  * Nothing was derived and nothing explains it away: no test of the unit left an admissible trace
88
107
  * (#932). Not when the scenarios are approved (derive leaves those alone by design), up to date,
@@ -140,6 +159,9 @@ async function deriveFreeFeature(i) {
140
159
  }
141
160
  if (!result.scenarios.length)
142
161
  return result;
162
+ const reused = reusedIdWarnings(i.unit, file, result.scenarios.map((x) => x.id));
163
+ if (reused.length)
164
+ result.warnings = reused;
143
165
  const text = (0, render_free_gherkin_1.freeFeatureText)(unitBase, [...blocks.values()]);
144
166
  const label = path.basename(file);
145
167
  const hits = [...(MACHINE_PATH.test(text) ? [{ where: label, reason: 'a machine path survived scrubbing' }] : []), ...(0, field_semantic_redaction_1.secretScanHits)(text, label), ...semanticHits(text, label)];
@@ -1 +1 @@
1
- {"version":3,"file":"derive-free-feature.js","sourceRoot":"","sources":["../../src/contract/derive-free-feature.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"derive-free-feature.js","sourceRoot":"","sources":["../../src/contract/derive-free-feature.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,8 @@ export interface WaiverSyncPlan {
18
18
  }
19
19
  export declare const importMarkerPath: (projectRoot: string, slug: string) => string;
20
20
  export declare function planWaiverSync(projectRoot: string, unit: string, slug: string, statePath: string, legacy: unknown): WaiverSyncPlan;
21
+ /** The command a human types to give (or confirm) a waiver — the board's line and `sungen next`'s "Waiting for you" (#954). */
22
+ export declare const waiveCommand: (unit: string, obligation: string, reason: string) => string;
21
23
  /** The needs-you line for a waiver that is not in git HEAD: not counted, and how a human confirms it. */
22
24
  export declare function untrustedWaiverText(unit: string, slug: string, title: string, u: UntrustedWaiver): string;
23
25
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"legacy-waiver-migration.d.ts","sourceRoot":"","sources":["../../src/decisions/legacy-waiver-migration.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAkB,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKlD,OAAO,EAA0D,YAAY,EAA2B,MAAM,oBAAoB,CAAC;AAEnI,MAAM,WAAW,eAAe;IAAG,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE;AAE7E,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACtC,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,yGAAyG;IACzG,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,8EAA8E;IAC9E,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,gBAAgB,GAAI,aAAa,MAAM,EAAE,MAAM,MAAM,KAAG,MACa,CAAC;AAQnF,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,cAAc,CA0BlI;AAED,yGAAyG;AACzG,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,eAAe,GAAG,MAAM,CAIzG;AASD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAwBrJ;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,GAAG,YAAY,CAQjH"}
1
+ {"version":3,"file":"legacy-waiver-migration.d.ts","sourceRoot":"","sources":["../../src/decisions/legacy-waiver-migration.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAkB,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKlD,OAAO,EAA0D,YAAY,EAA2B,MAAM,oBAAoB,CAAC;AAEnI,MAAM,WAAW,eAAe;IAAG,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE;AAE7E,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACtC,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,yGAAyG;IACzG,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,8EAA8E;IAC9E,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,gBAAgB,GAAI,aAAa,MAAM,EAAE,MAAM,MAAM,KAAG,MACa,CAAC;AAQnF,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,cAAc,CA0BlI;AAED,+HAA+H;AAC/H,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,EAAE,YAAY,MAAM,EAAE,QAAQ,MAAM,KAAG,MACmB,CAAC;AAEpG,yGAAyG;AACzG,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,eAAe,GAAG,MAAM,CAIzG;AASD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAwBrJ;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,GAAG,YAAY,CAQjH"}
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.importMarkerPath = void 0;
36
+ exports.waiveCommand = exports.importMarkerPath = void 0;
37
37
  exports.planWaiverSync = planWaiverSync;
38
38
  exports.untrustedWaiverText = untrustedWaiverText;
39
39
  exports.commitWaiverSync = commitWaiverSync;
@@ -113,9 +113,12 @@ function planWaiverSync(projectRoot, unit, slug, statePath, legacy) {
113
113
  stateWaivers[ob] = waivers[ob] = (0, waiver_decisions_1.asLegacyWaiver)(d);
114
114
  return { scope, waivers, untrusted, stateWaivers, imports, markDone: !!scope && untrusted.length === 0 };
115
115
  }
116
+ /** The command a human types to give (or confirm) a waiver — the board's line and `sungen next`'s "Waiting for you" (#954). */
117
+ const waiveCommand = (unit, obligation, reason) => (0, human_confirmation_1.formatCommand)(['sungen', 'journey', '--screen', unit, '--waive', obligation, '--reason', reason]);
118
+ exports.waiveCommand = waiveCommand;
116
119
  /** The needs-you line for a waiver that is not in git HEAD: not counted, and how a human confirms it. */
117
120
  function untrustedWaiverText(unit, slug, title, u) {
118
- const confirm = (0, human_confirmation_1.formatCommand)(['sungen', 'journey', '--screen', unit, '--waive', u.obligation, '--reason', u.waiver.reason]);
121
+ const confirm = (0, exports.waiveCommand)(unit, u.obligation, u.waiver.reason);
119
122
  return `⚠️ Waiver on "${title}" is UNTRUSTED — not counted (decision.in-run: it is in .sungen/journey/${slug}.state.json `
120
123
  + `but not in git HEAD). If it is yours, confirm it on a terminal: ${confirm}`;
121
124
  }
@@ -1 +1 @@
1
- {"version":3,"file":"legacy-waiver-migration.js","sourceRoot":"","sources":["../../src/decisions/legacy-waiver-migration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"legacy-waiver-migration.js","sourceRoot":"","sources":["../../src/decisions/legacy-waiver-migration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { UnitState } from '../harness/next-step';
2
+ import type { HumanAction } from './human-action';
3
+ /** The board's and the delivery's asks of a human for this unit. `cut`: the frontier stopped at a blocking node. */
4
+ export declare function boardHumanActions(projectRoot: string, unitDir: string, s: UnitState, cut: boolean): HumanAction[];
5
+ //# sourceMappingURL=board-human-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"board-human-actions.d.ts","sourceRoot":"","sources":["../../src/graph/board-human-actions.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAiDlD,oHAAoH;AACpH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,WAAW,EAAE,CASjH"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.boardHumanActions = boardHumanActions;
4
+ /**
5
+ * The human-only actions the graph does not hold ("Waiting for you", #954) — asked by the journey
6
+ * board and the delivery's decision check, read through THEIR functions (never restated here):
7
+ *
8
+ * waive a waiver the board re-surfaces: stale (the audit changed since) or untrusted (not
9
+ * in git HEAD) — readJourneyHumanAsks, the reconcile `runJourney` commits
10
+ * decide a gate-override that relaxes nothing because no human confirmed it (ineffective) —
11
+ * re-recorded with `journey --decide`, superseding it (loadUnitGateOverrides)
12
+ * signoff every other obligation holds — assertCanSignOff, as `journey --signoff` checks it
13
+ * accept-in-run a decision recorded during the run — evaluateDeliveryDecisions, as `delivery` runs it
14
+ * The sign-off and accept-in-run only once the frontier was not cut (the unit has run and nothing
15
+ * blocks before it). Read-only and advisory: whatever cannot be read adds nothing.
16
+ */
17
+ const human_confirmation_1 = require("../decisions/human-confirmation");
18
+ const legacy_waiver_migration_1 = require("../decisions/legacy-waiver-migration");
19
+ const delivery_decision_gate_1 = require("../harness/gates/delivery-decision-gate");
20
+ const in_run_decision_check_1 = require("../harness/gates/in-run-decision-check");
21
+ const unit_gate_overrides_1 = require("../harness/gates/unit-gate-overrides");
22
+ const journey_1 = require("../harness/journey");
23
+ const unit_artifact_probes_1 = require("./unit-artifact-probes");
24
+ function journeyActions(projectRoot, s, cut) {
25
+ const asks = (0, journey_1.readJourneyHumanAsks)(projectRoot, s.unit);
26
+ const out = asks.redecide.map((w) => ({
27
+ kind: 'waive',
28
+ command: (0, legacy_waiver_migration_1.waiveCommand)(s.unit, w.obligation, w.reason),
29
+ reason: w.why === 'stale'
30
+ ? `the waiver on "${w.title}" is stale — the evidence changed since it was given, so it no longer counts; if it still holds, a human gives it again on a terminal (or repair the obligation)`
31
+ : `the waiver on "${w.title}" is not in git HEAD (decision.in-run), so it is not counted — if it is yours, confirm it on a terminal`,
32
+ }));
33
+ if (!cut && asks.canSignOff && asks.signoff.status !== 'given') {
34
+ out.push({
35
+ kind: 'signoff',
36
+ command: (0, journey_1.signoffCommand)(s.unit),
37
+ reason: asks.signoff.status === 'stale'
38
+ ? `the sign-off of ${asks.signoff.at} is stale — the suite changed since; review the queue (\`sungen journey --screen ${s.unit}\`) and sign off again`
39
+ : `every other obligation is satisfied or waived — the human sign-off is the one gate \`sungen gate --phase deliver\` still waits on; review the queue (\`sungen journey --screen ${s.unit}\`, ${asks.report.needsYou.length} item(s)), then sign`,
40
+ });
41
+ }
42
+ return out;
43
+ }
44
+ function unconfirmedOverrides(projectRoot, unitDir, s) {
45
+ return (0, unit_gate_overrides_1.loadUnitGateOverrides)(projectRoot, (0, unit_gate_overrides_1.unitScopeOfDir)(projectRoot, unitDir)).ineffective.map((o) => {
46
+ const { humanAccepted: _ignored, ...payload } = o.entry.payload ?? {};
47
+ return {
48
+ kind: 'decide',
49
+ command: (0, human_confirmation_1.formatCommand)(['sungen', 'journey', '--screen', s.unit, '--decide', 'gate-override', '--text', o.entry.text, '--reason', o.entry.reason,
50
+ '--payload', JSON.stringify(payload), '--supersedes', o.decisionId]),
51
+ reason: `the gate-override ${o.decisionId}${o.rule ? ` (${o.rule})` : ''} relaxes nothing: ${o.reason} — if it is meant, a human records it again on a terminal, superseding it`,
52
+ };
53
+ });
54
+ }
55
+ function inRunActions(projectRoot, unitDir, s) {
56
+ const files = (0, unit_artifact_probes_1.unitResultFiles)(projectRoot, s.unit);
57
+ const refs = (files.length ? files : [null]).map((resultsPath) => ({ label: s.unit, unitName: s.unit, unitDir, resultsPath }));
58
+ const inRun = (0, delivery_decision_gate_1.evaluateDeliveryDecisions)(projectRoot, refs).inRun;
59
+ if (!inRun.length)
60
+ return [];
61
+ const which = inRun.slice(0, 3).map((d) => `${d.kind} ${d.id}`).join(', ');
62
+ return [{
63
+ kind: 'accept-in-run',
64
+ command: (0, human_confirmation_1.formatCommand)(['sungen', 'delivery', s.unit, '--accept-in-run']),
65
+ reason: `${inRun.length} decision(s) recorded during the run (${in_run_decision_check_1.IN_RUN_RULE}): ${which}${inRun.length > 3 ? ', …' : ''} — \`sungen delivery\` refuses them until they are committed through review and the tests re-run, or a human accepts them on a terminal`,
66
+ }];
67
+ }
68
+ /** The board's and the delivery's asks of a human for this unit. `cut`: the frontier stopped at a blocking node. */
69
+ function boardHumanActions(projectRoot, unitDir, s, cut) {
70
+ const out = [];
71
+ const add = (read) => {
72
+ try {
73
+ out.push(...read());
74
+ }
75
+ catch { /* advisory: an unreadable board or decision adds nothing */ }
76
+ };
77
+ add(() => journeyActions(projectRoot, s, cut));
78
+ add(() => unconfirmedOverrides(projectRoot, unitDir, s));
79
+ if (!cut)
80
+ add(() => inRunActions(projectRoot, unitDir, s));
81
+ return out;
82
+ }
83
+ //# sourceMappingURL=board-human-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"board-human-actions.js","sourceRoot":"","sources":["../../src/graph/board-human-actions.ts"],"names":[],"mappings":"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"}
@@ -11,8 +11,12 @@
11
11
  * `--case <id>` (`testCase` option): the frontier is that case's test-case nodes plus the blocking
12
12
  * unit nodes before them; non-blocking unit advice is left to the unit view. A `caseOnly` test-case
13
13
  * node speaks only there (its unit-level decision is in the unit view already).
14
+ *
15
+ * evaluateHumanActions reads the SAME walk for "Waiting for you" (#954): the human-only actions behind
16
+ * the offered steps, and whether the walk was cut.
14
17
  */
15
18
  import type { NextStep, UnitState } from '../harness/next-step';
19
+ import type { HumanAction } from './human-action';
16
20
  import type { NodeDecl } from './node-decl';
17
21
  import type { TestCaseState } from './test-case-state-shape';
18
22
  export interface EvaluateOptions {
@@ -20,4 +24,16 @@ export interface EvaluateOptions {
20
24
  testCase?: string;
21
25
  }
22
26
  export declare function evaluateGraph(nodes: readonly NodeDecl[], s: UnitState, tcStates?: TestCaseState[], opts?: EvaluateOptions): NextStep[];
27
+ /**
28
+ * The HUMAN-ONLY actions of the same frontier ("Waiting for you", #954) — never a second walk with
29
+ * rules of its own: each offered step's node says what a person runs (its `human` hook), and a decide
30
+ * step without one is its own command. `cut`: an open blocking node ended the walk, so only what does
31
+ * not depend on it is offered (a hard verdict that surfaces past the cut), and the board's asks that
32
+ * need the unit past it (sign-off, accept-in-run) wait; `heldBy` is that node's title.
33
+ */
34
+ export declare function evaluateHumanActions(nodes: readonly NodeDecl[], s: UnitState, tcStates?: TestCaseState[]): {
35
+ actions: HumanAction[];
36
+ cut: boolean;
37
+ heldBy?: string;
38
+ };
23
39
  //# sourceMappingURL=evaluate-graph.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"evaluate-graph.d.ts","sourceRoot":"","sources":["../../src/graph/evaluate-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAY,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,WAAW,eAAe;IAC9B,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAkBD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,QAAQ,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,aAAa,EAAE,EAAE,IAAI,GAAE,eAAoB,GAC/F,QAAQ,EAAE,CAwBZ"}
1
+ {"version":3,"file":"evaluate-graph.d.ts","sourceRoot":"","sources":["../../src/graph/evaluate-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAY,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,WAAW,eAAe;IAC9B,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAkDD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,QAAQ,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,aAAa,EAAE,EAAE,IAAI,GAAE,eAAoB,GAC/F,QAAQ,EAAE,CAEZ;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,aAAa,EAAE,GAAG;IAAE,OAAO,EAAE,WAAW,EAAE,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAMpK"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.evaluateGraph = evaluateGraph;
4
+ exports.evaluateHumanActions = evaluateHumanActions;
4
5
  function withMeta(node, core, testCase) {
5
6
  return {
6
7
  ...core,
@@ -16,17 +17,20 @@ function openCases(node, s, tcStates, only) {
16
17
  return [];
17
18
  return tcStates.filter((tc) => (!only || tc.id === only) && node.active(s, tc) && !node.satisfied(s, tc));
18
19
  }
19
- function evaluateGraph(nodes, s, tcStates, opts = {}) {
20
+ /** The walk both answers share: the offered steps in rank order, and whether an open blocking node cut it. */
21
+ function walkFrontier(nodes, s, tcStates, opts) {
20
22
  const ordered = [...nodes].sort((a, b) => a.rank - b.rank);
21
23
  const open = new Set();
22
- const out = [];
24
+ const offered = [];
23
25
  let cut = false;
26
+ let cutBy;
24
27
  for (const node of ordered) {
25
28
  if (!node.appliesTo.includes(s.kind) || (node.granularity === 'test-case' && node.caseOnly && !opts.testCase))
26
29
  continue;
27
30
  if (cut && !node.surfacesPastCut)
28
31
  continue;
29
32
  let step = null;
33
+ let cases = [];
30
34
  if (node.granularity === 'unit') {
31
35
  if (!node.active(s) || node.satisfied(s) || (cut && !node.surfacesPastCut(s)))
32
36
  continue;
@@ -34,7 +38,7 @@ function evaluateGraph(nodes, s, tcStates, opts = {}) {
34
38
  step = withMeta(node, node.step(s));
35
39
  }
36
40
  else {
37
- const cases = openCases(node, s, tcStates, opts.testCase).filter((tc) => !cut || node.surfacesPastCut(s, tc));
41
+ cases = openCases(node, s, tcStates, opts.testCase).filter((tc) => !cut || node.surfacesPastCut(s, tc));
38
42
  if (!cases.length)
39
43
  continue;
40
44
  const single = Boolean(opts.testCase);
@@ -43,10 +47,29 @@ function evaluateGraph(nodes, s, tcStates, opts = {}) {
43
47
  open.add(node.id);
44
48
  const ready = node.requires.every((r) => !open.has(r));
45
49
  if (step && (cut || ready || !node.blocking))
46
- out.push(step);
47
- if (node.blocking && !cut)
50
+ offered.push({ node, step, cases });
51
+ if (node.blocking && !cut) {
48
52
  cut = true;
53
+ cutBy = node;
54
+ }
49
55
  }
50
- return out;
56
+ return { offered, cut, ...(cutBy ? { cutBy } : {}) };
57
+ }
58
+ function evaluateGraph(nodes, s, tcStates, opts = {}) {
59
+ return walkFrontier(nodes, s, tcStates, opts).offered.map((o) => o.step);
60
+ }
61
+ /**
62
+ * The HUMAN-ONLY actions of the same frontier ("Waiting for you", #954) — never a second walk with
63
+ * rules of its own: each offered step's node says what a person runs (its `human` hook), and a decide
64
+ * step without one is its own command. `cut`: an open blocking node ended the walk, so only what does
65
+ * not depend on it is offered (a hard verdict that surfaces past the cut), and the board's asks that
66
+ * need the unit past it (sign-off, accept-in-run) wait; `heldBy` is that node's title.
67
+ */
68
+ function evaluateHumanActions(nodes, s, tcStates) {
69
+ const { offered, cut, cutBy } = walkFrontier(nodes, s, tcStates, {});
70
+ const actions = offered.flatMap(({ node, step, cases }) => (node.human
71
+ ? node.human(s, step, cases)
72
+ : step.kind === 'decide' ? [{ command: step.command, reason: step.because, kind: 'decide' }] : []));
73
+ return { actions, cut, ...(cutBy ? { heldBy: cutBy.title } : {}) };
51
74
  }
52
75
  //# sourceMappingURL=evaluate-graph.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"evaluate-graph.js","sourceRoot":"","sources":["../../src/graph/evaluate-graph.ts"],"names":[],"mappings":";;AAuCA,sCA0BC;AA1CD,SAAS,QAAQ,CAAC,IAAc,EAAE,IAAc,EAAE,QAAiB;IACjE,OAAO;QACL,GAAG,IAAI;QACP,MAAM,EAAE,IAAI,CAAC,EAAE;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzD,CAAC;AACJ,CAAC;AAED,+FAA+F;AAC/F,SAAS,SAAS,CAAC,IAAc,EAAE,CAAY,EAAE,QAAqC,EAAE,IAAa;IACnG,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IAC7D,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5G,CAAC;AAED,SAAgB,aAAa,CAC3B,KAA0B,EAAE,CAAY,EAAE,QAA0B,EAAE,OAAwB,EAAE;IAEhG,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAe,EAAE,CAAC;IAC3B,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,WAAW,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,SAAS;QACxH,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,SAAS;QAC3C,IAAI,IAAI,GAAoB,IAAI,CAAC;QACjC,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,eAAgB,CAAC,CAAC,CAAC,CAAC;gBAAE,SAAS;YACzF,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;gBAAE,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,eAAgB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC/G,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE,SAAS;YAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG;YAAE,GAAG,GAAG,IAAI,CAAC;IACxC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"evaluate-graph.js","sourceRoot":"","sources":["../../src/graph/evaluate-graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * A HUMAN-ONLY action of a unit — what `sungen next` lists under "Waiting for you" (#954) and `--json`
3
+ * carries as `humanActions`. An agent presents these and never runs them: they approve, sign, waive,
4
+ * classify or accept something on a person's behalf, and most refuse without a typed confirmation.
5
+ *
6
+ * `command` is canonical (`sungen …`, or a slash command); the text renders it as the project runs
7
+ * sungen (`npx sungen` with a local install). Placeholders a human fills are quoted (`"<name>"`, `"…"`)
8
+ * so a copied command never turns into a shell redirection.
9
+ */
10
+ export type HumanActionKind = 'contract-approve' | 'accept-opaque' | 'contract-commit' | 'contract-review' | 'accept-viewpoint' | 'defect-draft' | 'rerun-environment' | 'triage-classify' | 'signoff' | 'waive' | 'decide' | 'accept-in-run';
11
+ export interface HumanAction {
12
+ command: string;
13
+ reason: string;
14
+ kind: HumanActionKind;
15
+ /**
16
+ * `command` is an instruction a person carries out by hand (commit through review, restore from git),
17
+ * not a command line to copy — the block marks it so, and never renders it as one.
18
+ */
19
+ instruction?: true;
20
+ }
21
+ //# sourceMappingURL=human-action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"human-action.d.ts","sourceRoot":"","sources":["../../src/graph/human-action.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GACvB,kBAAkB,GAClB,eAAe,GACf,iBAAiB,GACjB,iBAAiB,GACjB,kBAAkB,GAClB,cAAc,GACd,mBAAmB,GACnB,iBAAiB,GACjB,SAAS,GACT,OAAO,GACP,QAAQ,GACR,eAAe,CAAC;AAEpB,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,eAAe,CAAC;IACtB;;;OAGG;IACH,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=human-action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"human-action.js","sourceRoot":"","sources":["../../src/graph/human-action.ts"],"names":[],"mappings":""}