@bluewombat/runtime 0.9.0 → 0.10.0

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 (69) hide show
  1. package/README.md +122 -52
  2. package/SPECS.md +36 -14
  3. package/dist/cli.js +4 -4
  4. package/dist/config/agent-shorthand.d.ts +24 -3
  5. package/dist/config/agent-shorthand.d.ts.map +1 -1
  6. package/dist/config/agent-shorthand.js +64 -19
  7. package/dist/config/agent-shorthand.js.map +1 -1
  8. package/dist/config/home.d.ts +2 -0
  9. package/dist/config/home.d.ts.map +1 -1
  10. package/dist/config/home.js +2 -0
  11. package/dist/config/home.js.map +1 -1
  12. package/dist/config/load-config.d.ts.map +1 -1
  13. package/dist/config/load-config.js +298 -46
  14. package/dist/config/load-config.js.map +1 -1
  15. package/dist/config/parse-args.d.ts +1 -1
  16. package/dist/config/parse-args.d.ts.map +1 -1
  17. package/dist/config/parse-args.js +83 -56
  18. package/dist/config/parse-args.js.map +1 -1
  19. package/dist/config/types.d.ts +104 -16
  20. package/dist/config/types.d.ts.map +1 -1
  21. package/dist/config/types.js +13 -1
  22. package/dist/config/types.js.map +1 -1
  23. package/dist/loop/authority.d.ts +38 -1
  24. package/dist/loop/authority.d.ts.map +1 -1
  25. package/dist/loop/authority.js +41 -2
  26. package/dist/loop/authority.js.map +1 -1
  27. package/dist/loop/context.d.ts +16 -1
  28. package/dist/loop/context.d.ts.map +1 -1
  29. package/dist/loop/drive.d.ts +9 -3
  30. package/dist/loop/drive.d.ts.map +1 -1
  31. package/dist/loop/drive.js +17 -7
  32. package/dist/loop/drive.js.map +1 -1
  33. package/dist/loop/features.d.ts.map +1 -1
  34. package/dist/loop/features.js +322 -59
  35. package/dist/loop/features.js.map +1 -1
  36. package/dist/loop/open-host.d.ts.map +1 -1
  37. package/dist/loop/open-host.js +109 -7
  38. package/dist/loop/open-host.js.map +1 -1
  39. package/dist/loop/report.d.ts.map +1 -1
  40. package/dist/loop/report.js +21 -9
  41. package/dist/loop/report.js.map +1 -1
  42. package/dist/loop/trace.js +1 -1
  43. package/dist/loop/trace.js.map +1 -1
  44. package/dist/loop/transformers.d.ts +16 -2
  45. package/dist/loop/transformers.d.ts.map +1 -1
  46. package/dist/loop/transformers.js +137 -22
  47. package/dist/loop/transformers.js.map +1 -1
  48. package/dist/loop/warm.js +1 -1
  49. package/dist/loop/warm.js.map +1 -1
  50. package/dist/operator/agent-plugins.d.ts.map +1 -1
  51. package/dist/operator/agent-plugins.js +14 -8
  52. package/dist/operator/agent-plugins.js.map +1 -1
  53. package/dist/operator/doctor.d.ts +1 -1
  54. package/dist/operator/doctor.d.ts.map +1 -1
  55. package/dist/operator/doctor.js +79 -29
  56. package/dist/operator/doctor.js.map +1 -1
  57. package/dist/operator/explain.d.ts.map +1 -1
  58. package/dist/operator/explain.js +37 -8
  59. package/dist/operator/explain.js.map +1 -1
  60. package/dist/operator/film.js +0 -3
  61. package/dist/operator/film.js.map +1 -1
  62. package/dist/operator/init.js +13 -8
  63. package/dist/operator/init.js.map +1 -1
  64. package/dist/operator/log.js +9 -2
  65. package/dist/operator/log.js.map +1 -1
  66. package/dist/operator/setup.d.ts.map +1 -1
  67. package/dist/operator/setup.js +2 -0
  68. package/dist/operator/setup.js.map +1 -1
  69. package/package.json +14 -14
@@ -1,12 +1,40 @@
1
1
  import type { GateSpec } from "@bluewombat/implementer";
2
2
  import type { ManagerModule } from "@bluewombat/manager-kit";
3
+ /**
4
+ * What a Feature can say that makes Host leave a Gate out. Names are the ones a Gate's `skipWhen`
5
+ * is written with, whatever the tracker calls the label behind them.
6
+ */
7
+ export declare const SKIP_WHEN: readonly ["skip-test-e2e"];
8
+ export type SkipWhen = (typeof SKIP_WHEN)[number];
9
+ /**
10
+ * A Gate as the config writes it: Implementer's, and the condition under which Host does not run
11
+ * it. A Gate that is not run is not a Gate that passed: Host says so in its journal and trace, and
12
+ * the Gate itself knows nothing of it. Only a Feature's Gates take one.
13
+ */
14
+ export type HostGateSpec = GateSpec & {
15
+ skipWhen?: SkipWhen;
16
+ };
3
17
  /**
4
18
  * A command with its own Gate sequence. Every role is gated independently —
5
19
  * no sharing, no dispatch choosing between two buckets (see DECISIONS.md).
6
20
  */
7
21
  export type GatedPassSpec = PassSpec & {
8
- gates: GateSpec[];
22
+ gates: HostGateSpec[];
9
23
  };
24
+ /**
25
+ * A review: an agent and the Gates that follow it — or, with `agent: false`,
26
+ * the Gates alone. Writing `agent: false` is how a Project turns the agent off
27
+ * and keeps its checks; with no Gates either, the review is off altogether. A
28
+ * review is always written, so that turning it off is a choice that shows.
29
+ */
30
+ export type ReviewSpec = GatedPassSpec | {
31
+ agent: false;
32
+ gates: HostGateSpec[];
33
+ };
34
+ /** Whether a review does anything: an agent to run, or Gates to ask. */
35
+ export declare function isOn(review: ReviewSpec | undefined): boolean;
36
+ /** Whether a review has an agent to run before its Gates. */
37
+ export declare function hasAgent(review: ReviewSpec): review is GatedPassSpec;
10
38
  /**
11
39
  * One tracker integration: the package that talks to it and the options that
12
40
  * package reads. Host never reads `options`.
@@ -38,6 +66,13 @@ export type HostInvocation = {
38
66
  * reference work line, and Host keeps its own copy under `.mason/work-line`.
39
67
  */
40
68
  workLineStable?: string;
69
+ /**
70
+ * A second copy of the work line, kept on the branch a Feature is folded into.
71
+ * It is what the target is merged from when a Feature is brought up to date.
72
+ * Host keeps its own under `.mason/targetLine` when the reference allows;
73
+ * required with an Authority otherwise.
74
+ */
75
+ workLineTargetStable?: string;
41
76
  /**
42
77
  * The work line a fold lands on. Absent: what the manager's reference names,
43
78
  * or else whatever WorkLineStable has checked out, which is nobody's decision.
@@ -69,7 +104,13 @@ export type HostInvocation = {
69
104
  /** Making the unit of work, and judging what came out of it. */
70
105
  builder: StageSpec;
71
106
  /** Judging the assembled ticket, and fixing what a judgement refused. */
72
- assembly: AssemblySpec;
107
+ ticket: TicketSpec;
108
+ /**
109
+ * Judging the whole Feature before its line is folded, and fixing what that
110
+ * judgement refused. Required with an Authority, which is what folds a line;
111
+ * without one nothing here is read.
112
+ */
113
+ feature?: FeatureSpec;
73
114
  /**
74
115
  * The outside judge, when the Project declares one. Absent or disabled: the
75
116
  * assembled ticket is folded into WorkLineStable and that fold is final.
@@ -81,11 +122,6 @@ export type HostInvocation = {
81
122
  observability?: ObservabilitySpec;
82
123
  /** How long any one child outside a Task may run: manager, isolations. */
83
124
  timeoutMs: number;
84
- /**
85
- * Times the work may be sent back before it escalates, by an Authority, by
86
- * `assembly.validate`, or by both — one shared budget. Default 3.
87
- */
88
- maxRefusals?: number;
89
125
  pollIntervalMs?: number;
90
126
  };
91
127
  /**
@@ -141,17 +177,33 @@ export type PassSpec = {
141
177
  timeoutMs: number;
142
178
  };
143
179
  /**
144
- * Making the unit of work: first pass, then repair when a Gate refused, each judged
145
- * by its own Gate sequence — a repair Attempt with no gates of its own runs
146
- * ungated, even when the producer's list is not empty.
180
+ * Making the unit of work: first pass, then repair when a Gate refused. The
181
+ * config writes one `builder.gates` list; the loader puts it on both passes, so
182
+ * a repair is judged by exactly what judged the producer (Implementer still takes
183
+ * two sequences, one per command).
147
184
  */
148
185
  export type StageSpec = {
149
- /** Produces from a specification. Judged by its own `gates`. */
186
+ /** Produces from a specification. Judged by `builder.gates`. */
150
187
  producer: GatedPassSpec;
151
- /** Produces again, with the report of what refused the last pass. Judged by its own `gates`. */
188
+ /** Produces again, with the report of what refused the last pass. Judged by `builder.gates`. */
152
189
  repair: GatedPassSpec;
153
190
  /** Attempts one Task may start. Default 3. */
154
191
  maxAttempts?: number;
192
+ /**
193
+ * The tests of the Task, written before its code by an agent that is not the
194
+ * producer, and committed as a checkpoint the producer's work builds on. Its
195
+ * `gates` are what makes them worth having (they must fail, for the right
196
+ * reason) and what the producer's own Gates then keep intact. With
197
+ * `agent: false` no tests are written first.
198
+ */
199
+ tests?: ReviewSpec;
200
+ /**
201
+ * The Ticket that holds a Feature's e2e acceptance suite (the tracker's e2e label) is made by
202
+ * this pass instead of the producer and the repair: its own command, its own Gates, nothing
203
+ * borrowed from them. Declaring it declares the e2e check: a Feature needs an e2e Ticket or the
204
+ * skip label, and a Feature Gate with `skipWhen: skip-test-e2e` runs the suite.
205
+ */
206
+ e2e?: GatedPassSpec;
155
207
  };
156
208
  /**
157
209
  * Judging the assembled ticket as a whole.
@@ -167,7 +219,19 @@ export type StageSpec = {
167
219
  * producer of its own (nothing new made, the existing assembled state
168
220
  * re-checked; e.g. `ci-green`), and was never shared with `fix` or `validate`.
169
221
  */
170
- export type AssemblySpec = {
222
+ export type TicketSpec = {
223
+ /**
224
+ * How many Tickets of a Project may be worked on at once. Default 1: one
225
+ * after the other. Above 1 needs `authority.enabled`.
226
+ */
227
+ maxParallel?: number;
228
+ /** How many Attempts one fix may take. */
229
+ maxAttempts?: number;
230
+ /**
231
+ * Times the work may be sent back before it escalates, by an Authority, by
232
+ * `validate`, or by both — one shared budget. Default 3.
233
+ */
234
+ maxRefusals?: number;
171
235
  /** Fixes what a judgement of the whole refused. Needs `--report`. Judged by its own `gates`. */
172
236
  fix?: GatedPassSpec;
173
237
  /**
@@ -177,10 +241,34 @@ export type AssemblySpec = {
177
241
  * parked on the aggregate and repaired by `fix`, the same as an Authority's.
178
242
  * Judged by its own `gates`.
179
243
  */
180
- validate?: GatedPassSpec;
181
- maxAttempts?: number;
244
+ validate?: ReviewSpec;
182
245
  /** The judgement-only pass's own sequence — see above. */
183
- gates: GateSpec[];
246
+ gates: HostGateSpec[];
247
+ };
248
+ /**
249
+ * What happens to a Feature's line before it is folded: its own judgement, its
250
+ * own fix and its own budget, apart from a Ticket's ticket.
251
+ */
252
+ export type FeatureSpec = {
253
+ /** Repairs the line when a judgement of it refused. Needs `--report`. Judged by its own `gates`. */
254
+ fix: GatedPassSpec;
255
+ /** How many Attempts one fix may take. */
256
+ maxAttempts?: number;
257
+ /**
258
+ * Times the line may be sent back before the Feature escalates. One shared
259
+ * budget, like a Ticket's. Default 3.
260
+ */
261
+ maxRefusals?: number;
262
+ /**
263
+ * A local, read-only review of the whole line against the Feature's request,
264
+ * once the target has been merged into it, before the line is published. Its
265
+ * `gates` are where the project's own checks on the whole line run (typecheck,
266
+ * tests) beside the guards that it wrote nothing. Judged by its own gates, not
267
+ * by `gates` below, which read the published branch.
268
+ */
269
+ validate: ReviewSpec;
270
+ /** Judges the published line, with nothing produced (the CI). At least one. */
271
+ gates: HostGateSpec[];
184
272
  };
185
273
  /**
186
274
  * An invocation still being assembled from the config file and the flags: a
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,14 @@
1
- export {};
1
+ /**
2
+ * What a Feature can say that makes Host leave a Gate out. Names are the ones a Gate's `skipWhen`
3
+ * is written with, whatever the tracker calls the label behind them.
4
+ */
5
+ export const SKIP_WHEN = ["skip-test-e2e"];
6
+ /** Whether a review does anything: an agent to run, or Gates to ask. */
7
+ export function isOn(review) {
8
+ return review !== undefined && (hasAgent(review) || review.gates.length > 0);
9
+ }
10
+ /** Whether a review has an agent to run before its Gates. */
11
+ export function hasAgent(review) {
12
+ return "cmd" in review;
13
+ }
2
14
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,eAAe,CAAU,CAAC;AAwBpD,wEAAwE;AACxE,MAAM,UAAU,IAAI,CAAC,MAA8B;IACjD,OAAO,MAAM,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,QAAQ,CAAC,MAAkB;IACzC,OAAO,KAAK,IAAI,MAAM,CAAC;AACzB,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { AuthorityPort } from "@bluewombat/conductor";
1
+ import type { AuthorityPort, LinePort } from "@bluewombat/conductor";
2
2
  import type { TicketTrackerPort } from "@bluewombat/manager-kit";
3
3
  import type { PassSpec } from "../config/types.js";
4
4
  import type { Journal } from "./journal.js";
@@ -28,6 +28,41 @@ export declare function openAuthority(input: {
28
28
  describe?: PassSpec | undefined;
29
29
  journal?: Journal | undefined;
30
30
  }): AuthorityPort | undefined;
31
+ export type Published = {
32
+ ok: true;
33
+ ref: string;
34
+ } | {
35
+ ok: false;
36
+ reason: string;
37
+ };
38
+ /**
39
+ * Run the Publisher slot in the work line and read the one line it answers.
40
+ *
41
+ * Same contract as every other slot: argv in, one JSON object on stdout. A slot
42
+ * that cannot run at all is a refusal like any other here — the Submission does
43
+ * not happen, the reason reaches the tracker, and the next pass tries again.
44
+ */
45
+ export declare function publish(input: {
46
+ argv: string[];
47
+ cwd: string;
48
+ id: string;
49
+ ref: string;
50
+ target: string;
51
+ timeoutMs: number;
52
+ env?: Record<string, string> | undefined;
53
+ }): Promise<Published>;
54
+ /**
55
+ * The shared work line copy, kept current for Conductor. Each refresh says in
56
+ * the journal how it went, since a copy that cannot move stops a Ticket cold.
57
+ */
58
+ export declare function openLine(input: {
59
+ workLineStable: string;
60
+ refreshArgv: string[];
61
+ timeoutMs: number;
62
+ env?: Record<string, string> | undefined;
63
+ journal?: Journal | undefined;
64
+ trace?: ((line: string) => void) | undefined;
65
+ }): LinePort;
31
66
  /**
32
67
  * Bring the work line copy up to what the Authority holds, through the slot the
33
68
  * Project named.
@@ -39,6 +74,8 @@ export declare function openAuthority(input: {
39
74
  export declare function refreshWorkLine(input: {
40
75
  workLineStable: string;
41
76
  workLineTarget: string;
77
+ /** The line `workLineTarget` was cut from, when it is a Feature's line. */
78
+ workLineBase?: string | undefined;
42
79
  refreshArgv: string[];
43
80
  timeoutMs: number;
44
81
  env?: Record<string, string> | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"authority.d.ts","sourceRoot":"","sources":["../../src/loop/authority.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAqB,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE;IACnC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9B,kFAAkF;IAClF,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IACzC,yEAAyE;IACzE,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B,GAAG,aAAa,GAAG,SAAS,CAgF5B;AAwED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE;IAC3C,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CAC1C,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAyB5C"}
1
+ {"version":3,"file":"authority.d.ts","sourceRoot":"","sources":["../../src/loop/authority.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,KAAK,EAAqB,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE;IACnC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9B,kFAAkF;IAClF,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IACzC,yEAAyE;IACzE,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B,GAAG,aAAa,GAAG,SAAS,CAmF5B;AAED,MAAM,MAAM,SAAS,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElF;;;;;;GAMG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE;IACnC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CAC1C,GAAG,OAAO,CAAC,SAAS,CAAC,CA+BrB;AAsBD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IACzC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAC9C,GAAG,QAAQ,CA4BX;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE;IAC3C,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CAC1C,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA8B5C"}
@@ -20,6 +20,7 @@ export function openAuthority(input) {
20
20
  }
21
21
  const submit = manager.submit.bind(manager);
22
22
  const fold = manager.fold.bind(manager);
23
+ const behind = manager.behind?.bind(manager);
23
24
  return {
24
25
  async submit(offer) {
25
26
  // A Feature's line is already with the Authority: the cut and every
@@ -90,6 +91,8 @@ export function openAuthority(input) {
90
91
  }
91
92
  return submitted;
92
93
  },
94
+ // Only a manager that can say whether the line moved on gets the question.
95
+ ...(behind === undefined ? {} : { behind }),
93
96
  async fold(asked) {
94
97
  return await fold(asked);
95
98
  },
@@ -102,7 +105,7 @@ export function openAuthority(input) {
102
105
  * that cannot run at all is a refusal like any other here — the Submission does
103
106
  * not happen, the reason reaches the tracker, and the next pass tries again.
104
107
  */
105
- async function publish(input) {
108
+ export async function publish(input) {
106
109
  const [command, ...rest] = input.argv;
107
110
  if (command === undefined) {
108
111
  return { ok: false, reason: "No Publisher is configured, so nothing can be submitted." };
@@ -154,6 +157,37 @@ function lastJsonLine(stdout) {
154
157
  }
155
158
  return undefined;
156
159
  }
160
+ /**
161
+ * The shared work line copy, kept current for Conductor. Each refresh says in
162
+ * the journal how it went, since a copy that cannot move stops a Ticket cold.
163
+ */
164
+ export function openLine(input) {
165
+ return {
166
+ async refresh(target) {
167
+ const refreshed = await refreshWorkLine({
168
+ workLineStable: input.workLineStable,
169
+ workLineTarget: target,
170
+ refreshArgv: input.refreshArgv,
171
+ timeoutMs: input.timeoutMs,
172
+ env: input.env,
173
+ });
174
+ if (!refreshed.ok) {
175
+ input.journal?.append({
176
+ event: "refresh",
177
+ outcome: "failed",
178
+ target,
179
+ ...(refreshed.detail === undefined ? {} : { detail: refreshed.detail }),
180
+ });
181
+ input.trace?.(`work line cannot fast-forward onto ${target}, so nothing started. ${refreshed.detail ?? ""}`);
182
+ return {
183
+ ok: false,
184
+ ...(refreshed.detail === undefined ? {} : { detail: refreshed.detail }),
185
+ };
186
+ }
187
+ return { ok: true };
188
+ },
189
+ };
190
+ }
157
191
  /**
158
192
  * Bring the work line copy up to what the Authority holds, through the slot the
159
193
  * Project named.
@@ -169,7 +203,12 @@ export async function refreshWorkLine(input) {
169
203
  }
170
204
  const run = await runSlot({
171
205
  command,
172
- args: [...rest, "--target", input.workLineTarget],
206
+ args: [
207
+ ...rest,
208
+ "--target",
209
+ input.workLineTarget,
210
+ ...(input.workLineBase === undefined ? [] : ["--base", input.workLineBase]),
211
+ ],
173
212
  cwd: input.workLineStable,
174
213
  timeoutMs: input.timeoutMs,
175
214
  env: { ...process.env, ...input.env },
@@ -1 +1 @@
1
- {"version":3,"file":"authority.js","sourceRoot":"","sources":["../../src/loop/authority.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAAC,KAY7B;IACC,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACzE,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAExC,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,KAAK;YAChB,oEAAoE;YACpE,uEAAuE;YACvE,yEAAyE;YACzE,sEAAsE;YACtE,uEAAuE;YACvE,IAAI,SAAoB,CAAC;YACzB,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC/B,SAAS,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACN,SAAS,GAAG,MAAM,OAAO,CAAC;oBACxB,IAAI,EAAE,WAAW;oBACjB,GAAG,EAAE,cAAc;oBACnB,EAAE,EAAE,KAAK,CAAC,GAAG;oBACb,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;oBACrB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,SAAS;oBACT,GAAG,EAAE,KAAK,CAAC,GAAG;iBACf,CAAC,CAAC;YACL,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;gBAClB,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC;oBACpB,KAAK,EAAE,gBAAgB;oBACvB,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,EAAE,EAAE,WAAW;oBACf,MAAM,EAAE,SAAS,CAAC,MAAM;iBACzB,CAAC,CAAC;gBACH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;YAC1D,CAAC;YACD,sEAAsE;YACtE,sEAAsE;YACtE,4DAA4D;YAC5D,IAAI,WAA6C,CAAC;YAClD,yEAAyE;YACzE,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC/D,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE;oBAC3C,EAAE,EAAE,KAAK,CAAC,GAAG;oBACb,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG;oBAC/B,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,EAAE;oBAChC,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,GAAG,EAAE,KAAK,CAAC,SAAS;iBACrB,CAAC,CAAC;gBACH,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;oBACb,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;gBAClC,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC5F,CAAC;YACH,CAAC;YACD,oEAAoE;YACpE,mEAAmE;YACnE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC;YAChD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC;gBAC7B,GAAG,OAAO;gBACV,GAAG,EAAE,SAAS,CAAC,GAAG;gBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;aACtD,CAAC,CAAC;YACH,IAAI,SAAS,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACpC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC;oBACpB,KAAK,EAAE,gBAAgB;oBACvB,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,EAAE,EAAE,WAAW;oBACf,MAAM,EAAE,SAAS,CAAC,MAAM;iBACzB,CAAC,CAAC;YACL,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,KAAK;YACd,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;KACF,CAAC;AACJ,CAAC;AAID;;;;;;GAMG;AACH,KAAK,UAAU,OAAO,CAAC,KAQtB;IACC,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;IACtC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,0DAA0D,EAAE,CAAC;IAC3F,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC;QACxB,OAAO;QACP,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC;QAC/E,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE;KACtC,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,4BAA4B,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;IAChF,CAAC;IACD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9C,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,yCAAyC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;SACzF,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5D,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;IACvC,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC;QACrF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,uDAAuD,EAAE,CAAC;AACxF,CAAC;AAED,SAAS,YAAY,CAAC,MAAc;IAClC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QAC9B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5C,SAAS;QACX,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5E,OAAO,MAAiC,CAAC;YAC3C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uEAAuE;YACvE,qEAAqE;QACvE,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAMrC;IACC,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC;IAC7C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC;IAC9D,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC;QACxB,OAAO;QACP,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC;QACjD,GAAG,EAAE,KAAK,CAAC,cAAc;QACzB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE;KACtC,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,4BAA4B,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;IAChF,CAAC;IACD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,0CAA0C,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;IAC1F,CAAC;IACD,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;QACvB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC;IACrF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"authority.js","sourceRoot":"","sources":["../../src/loop/authority.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { AuthorityPort, Conductor, ConductorMoment, TransformerPort } from "@bluewombat/conductor";
1
+ import type { AuthorityPort, Conductor, ConductorMoment, Delivery, TransformerPort, WarmPort } from "@bluewombat/conductor";
2
2
  import type { EventName, FeatureTrackerPort, TicketTrackerPort } from "@bluewombat/manager-kit";
3
3
  import type { WorkLedger } from "@bluewombat/work-ledger";
4
4
  import type { HostOptions } from "../config/types.js";
@@ -31,6 +31,21 @@ export type HostRunInput = {
31
31
  trace: Trace;
32
32
  /** Present when the Project declared an Authority and the manager can submit. */
33
33
  authority?: AuthorityPort;
34
+ /**
35
+ * How a Feature's line is delivered to the line it is folded into. Present
36
+ * with an Authority, and absent without one: nothing folds a line then.
37
+ */
38
+ featureDelivery?: {
39
+ delivery: Delivery;
40
+ /** The copy of the line the Feature is folded into, merged into the Feature's work. */
41
+ targetStable: string;
42
+ /** Where the Feature's work is done, outside the Tickets' workspaces. */
43
+ workspaces: string;
44
+ /** Prepares that workspace the way a Ticket's is prepared, when the Project asked for it. */
45
+ warm?: WarmPort & {
46
+ durationMs: number;
47
+ };
48
+ };
34
49
  /**
35
50
  * Where Conductor's moments land during a pass. A tick points it at its own
36
51
  * report function before driving, so what is said mid-pass counts as that
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/loop/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,eAAe,EACf,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAChG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,WAAW,CAAC;IACrB,yFAAyF;IACzF,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;KAAE,CAAC;IACxF,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,yDAAyD;IACzD,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,sEAAsE;IACtE,OAAO,EAAE,iBAAiB,CAAC;IAC3B,kGAAkG;IAClG,YAAY,EAAE,eAAe,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;IACb,iFAAiF;IACjF,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B;;;;OAIG;IACH,OAAO,EAAE;QAAE,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAA;KAAE,CAAC;IAChF;;;OAGG;IACH,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACnB,CAAC;AAEF,yFAAyF;AACzF,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG;IAC7C,QAAQ,EAAE,SAAS,EAAE,CAAC;CACvB,CAAC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/loop/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,eAAe,EACf,QAAQ,EACR,eAAe,EACf,QAAQ,EACT,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAChG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,WAAW,CAAC;IACrB,yFAAyF;IACzF,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;KAAE,CAAC;IACxF,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,yDAAyD;IACzD,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,sEAAsE;IACtE,OAAO,EAAE,iBAAiB,CAAC;IAC3B,kGAAkG;IAClG,YAAY,EAAE,eAAe,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;IACb,iFAAiF;IACjF,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B;;;OAGG;IACH,eAAe,CAAC,EAAE;QAChB,QAAQ,EAAE,QAAQ,CAAC;QACnB,uFAAuF;QACvF,YAAY,EAAE,MAAM,CAAC;QACrB,yEAAyE;QACzE,UAAU,EAAE,MAAM,CAAC;QACnB,6FAA6F;QAC7F,IAAI,CAAC,EAAE,QAAQ,GAAG;YAAE,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC;KAC1C,CAAC;IACF;;;;OAIG;IACH,OAAO,EAAE;QAAE,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAA;KAAE,CAAC;IAChF;;;OAGG;IACH,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACnB,CAAC;AAEF,yFAAyF;AACzF,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG;IAC7C,QAAQ,EAAE,SAAS,EAAE,CAAC;CACvB,CAAC"}
@@ -9,7 +9,13 @@ import type { HostDeliveryInput } from "./context.js";
9
9
  *
10
10
  * A Project with an `escalated` Ticket is not driven: the caller checks first.
11
11
  */
12
- export declare function driveProject(input: HostDeliveryInput, project: string, fallbackKey: string): Promise<ProjectRunResult>;
12
+ export declare function driveProject(input: HostDeliveryInput, project: string, fallbackKey: string,
13
+ /**
14
+ * Drive exactly `fallbackKey`, which the Project already holds, instead of
15
+ * whoever is active: several Tickets are then driven at once, and the
16
+ * reconciling that would disturb the others is the caller's, once, before.
17
+ */
18
+ exactly?: boolean): Promise<ProjectRunResult>;
13
19
  /**
14
20
  * Drive, then keep driving while a refusal is waiting for repair.
15
21
  *
@@ -19,10 +25,10 @@ export declare function driveProject(input: HostDeliveryInput, project: string,
19
25
  * next pass. Waiting a poll interval for that next pass is empty time: the
20
26
  * work is local. Re-drive in the same Host tick until that case is gone — a
21
27
  * new `submitted`, an escalation, or any non-`paused` outcome (e.g.
22
- * align-conflict).
28
+ * interrupted).
23
29
  *
24
30
  * Do not continue from `submitted`: judging the Authority waits on the outside
25
31
  * and must leave room for listen / probe between ticks.
26
32
  */
27
- export declare function driveUntilBlocked(input: HostDeliveryInput, project: string, fallbackKey: string): Promise<ProjectRunResult>;
33
+ export declare function driveUntilBlocked(input: HostDeliveryInput, project: string, fallbackKey: string, exactly?: boolean): Promise<ProjectRunResult>;
28
34
  //# sourceMappingURL=drive.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"drive.d.ts","sourceRoot":"","sources":["../../src/loop/drive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAItD;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,gBAAgB,CAAC,CAiC3B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,gBAAgB,CAAC,CAiB3B"}
1
+ {"version":3,"file":"drive.d.ts","sourceRoot":"","sources":["../../src/loop/drive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAItD;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM;AACnB;;;;GAIG;AACH,OAAO,UAAQ,GACd,OAAO,CAAC,gBAAgB,CAAC,CAqC3B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,OAAO,UAAQ,GACd,OAAO,CAAC,gBAAgB,CAAC,CAiB3B"}
@@ -9,9 +9,19 @@ import { describeTicket } from "./trace.js";
9
9
  *
10
10
  * A Project with an `escalated` Ticket is not driven: the caller checks first.
11
11
  */
12
- export async function driveProject(input, project, fallbackKey) {
13
- await input.conductor.reconcile(project);
14
- const run = await input.conductor.runProject(project);
12
+ export async function driveProject(input, project, fallbackKey,
13
+ /**
14
+ * Drive exactly `fallbackKey`, which the Project already holds, instead of
15
+ * whoever is active: several Tickets are then driven at once, and the
16
+ * reconciling that would disturb the others is the caller's, once, before.
17
+ */
18
+ exactly = false) {
19
+ if (!exactly) {
20
+ await input.conductor.reconcile(project);
21
+ }
22
+ const run = exactly
23
+ ? await input.conductor.runTicket(fallbackKey)
24
+ : await input.conductor.runProject(project);
15
25
  // idle / refused name no Ticket; the delivered key is the only one we have.
16
26
  const key = "key" in run && run.key !== undefined ? run.key : fallbackKey;
17
27
  const got = await input.ledger.get(key);
@@ -52,13 +62,13 @@ export async function driveProject(input, project, fallbackKey) {
52
62
  * next pass. Waiting a poll interval for that next pass is empty time: the
53
63
  * work is local. Re-drive in the same Host tick until that case is gone — a
54
64
  * new `submitted`, an escalation, or any non-`paused` outcome (e.g.
55
- * align-conflict).
65
+ * interrupted).
56
66
  *
57
67
  * Do not continue from `submitted`: judging the Authority waits on the outside
58
68
  * and must leave room for listen / probe between ticks.
59
69
  */
60
- export async function driveUntilBlocked(input, project, fallbackKey) {
61
- let last = await driveProject(input, project, fallbackKey);
70
+ export async function driveUntilBlocked(input, project, fallbackKey, exactly = false) {
71
+ let last = await driveProject(input, project, fallbackKey, exactly);
62
72
  const interruptFlag = input.options.interruptFlag ?? { interrupted: false };
63
73
  while (!interruptFlag.interrupted && last.outcome === "paused") {
64
74
  const key = "key" in last && last.key !== undefined ? last.key : fallbackKey;
@@ -69,7 +79,7 @@ export async function driveUntilBlocked(input, project, fallbackKey) {
69
79
  got.aggregate.parked_refusal === undefined)) {
70
80
  break;
71
81
  }
72
- last = await driveProject(input, project, key);
82
+ last = await driveProject(input, project, key, exactly);
73
83
  }
74
84
  return last;
75
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"drive.js","sourceRoot":"","sources":["../../src/loop/drive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"drive.js","sourceRoot":"","sources":["../../src/loop/drive.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../src/loop/features.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAe9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EACL,KAAK,YAAY,EAIlB,MAAM,iBAAiB,CAAC;AAiBzB;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CA+C/B;AAyDD;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqC5F;AAUD;;;GAGG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAsBvC;AAwdD,wEAAwE;AACxE,wBAAsB,SAAS,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAavF"}
1
+ {"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../src/loop/features.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAA+B,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAgB3F,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EACL,KAAK,YAAY,EAIlB,MAAM,iBAAiB,CAAC;AAiBzB;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CA+C/B;AAyED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC5F;AAUD;;;GAGG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAsBvC;AAkwBD,wEAAwE;AACxE,wBAAsB,SAAS,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAavF"}