@cat-factory/orchestration 0.12.0 → 0.14.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.
@@ -1 +1 @@
1
- {"version":3,"file":"board.logic.js","sourceRoot":"","sources":["../../../src/modules/board/board.logic.ts"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E,+EAA+E;AAC/E,gDAAgD;AAEhD,+DAA+D;AAC/D,MAAM,UAAU,QAAQ,CAAC,CAAS,EAAE,IAAI,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE;IAChF,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAA;AACvE,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,OAAO,CAAC,MAAe,EAAE,WAAmB;IAC1D,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,WAAW,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAA;AAC/E,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,SAAS,CAAC,MAAe,EAAE,SAAiB;IAC1D,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAA;AAC/E,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,SAAS,CAAC,MAAe,EAAE,KAAY;IACrD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAClD,IAAI,GAAG,GAAsB,KAAK,CAAA;IAClC,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;QACpC,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACzD,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,MAAe,EAAE,MAAc;IAC3D,MAAM,MAAM,GAAG,IAAI,GAAG,CAAS,CAAC,MAAM,CAAC,CAAC,CAAA;IACxC,IAAI,IAAI,GAAG,IAAI,CAAA;IACf,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,GAAG,KAAK,CAAA;QACZ,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC9D,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;gBAChB,IAAI,GAAG,IAAI,CAAA;YACb,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,WAAW,CAAC,UAAsB,EAAE,MAAa;IAC/D,IAAI,UAAU,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC,KAAK,KAAK,OAAO,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAA;IACvF,IAAI,UAAU,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,KAAK,KAAK,OAAO,CAAA;IAC5D,OAAO,KAAK,CAAA,CAAC,wBAAwB;AACvC,CAAC"}
1
+ {"version":3,"file":"board.logic.js","sourceRoot":"","sources":["../../../src/modules/board/board.logic.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,8 @@ import type { DocumentRepository } from '@cat-factory/kernel';
17
17
  import type { TaskRepository } from '@cat-factory/kernel';
18
18
  import type { RequirementReviewRepository } from '@cat-factory/kernel';
19
19
  import type { ClarityReviewRepository } from '@cat-factory/kernel';
20
- import type { EnvironmentProvisioningService } from '@cat-factory/integrations';
20
+ import type { EnvironmentProvisioningService, EnvironmentTeardownService } from '@cat-factory/integrations';
21
+ import type { BranchUpdater } from '@cat-factory/kernel';
21
22
  import type { BoardService } from '../board/BoardService.js';
22
23
  import type { SpendService } from '@cat-factory/spend';
23
24
  import type { AdvanceOptions, AdvanceResult } from './advance.js';
@@ -105,6 +106,19 @@ export interface ExecutionServiceDependencies {
105
106
  * (no LLM), and downstream steps discover the resulting env via it.
106
107
  */
107
108
  environmentProvisioning?: EnvironmentProvisioningService;
109
+ /**
110
+ * Optional: tears down ephemeral environments. Wired alongside
111
+ * {@link environmentProvisioning}; the `human-test` gate uses it to destroy an env on
112
+ * confirm / recreate / on-demand. Absent → the gate's destroy/recreate is a no-op.
113
+ */
114
+ environmentTeardown?: EnvironmentTeardownService;
115
+ /**
116
+ * Optional: merges the repo default branch into a block's PR branch server-side. Wired
117
+ * when GitHub is configured; the `human-test` gate's "pull latest main" action uses it
118
+ * (a clean merge rebuilds the env; a conflict escalates to the conflict-resolver). Absent
119
+ * → pulling main is unavailable on the gate.
120
+ */
121
+ branchUpdater?: BranchUpdater;
108
122
  /**
109
123
  * Optional: when the board-scan module is configured, a `blueprints` step's
110
124
  * decomposition tree is reconciled onto the board through this (BoardScanService).
@@ -235,6 +249,8 @@ export declare class ExecutionService {
235
249
  private readonly requirementReviewService?;
236
250
  private readonly clarityReviewService?;
237
251
  private readonly environmentProvisioning?;
252
+ private readonly environmentTeardown?;
253
+ private readonly branchUpdater?;
238
254
  /** Assembles the per-step agent context (requirements, docs, env, service frame, fragments). */
239
255
  private readonly contextBuilder;
240
256
  /** Resolves a `merger` step's assessment into an auto-merge or a `merge_review` notification. */
@@ -243,6 +259,8 @@ export declare class ExecutionService {
243
259
  private readonly companionController;
244
260
  /** Drives the Tester gate's fix loop: report → greenlight / dispatch fixer / fail. */
245
261
  private readonly testerController;
262
+ /** Drives the human-testing gate: provision env → park → confirm / fix / pull-main / recreate. */
263
+ private readonly humanTestController;
246
264
  /** Drives both iterative review gates (requirements + clarity); kind-parameterised. */
247
265
  private readonly reviewGate;
248
266
  /** The requirements subject for {@link reviewGate}. */
@@ -279,7 +297,7 @@ export declare class ExecutionService {
279
297
  * {@link stepResolverFor} and {@link StepCompletionResolver}.
280
298
  */
281
299
  private stepResolverCache?;
282
- constructor({ workspaceRepository, blockRepository, pipelineRepository, executionRepository, accountRepository, idGenerator, clock, agentExecutor, workRunner, executionEventPublisher, boardService, spendService, documentRepository, taskRepository, requirementReviewRepository, requirementReviewService, clarityReviewRepository, clarityReviewService, environmentProvisioning, blueprintReconciler, notificationService, workspaceSettingsService, llmObservability, ciStatusProvider, mergeabilityProvider, releaseHealthProvider, incidentEnrichment, pullRequestMerger, mergePresetRepository, ticketTrackerProvider, issueWriteback, subscriptionActivationRepository, resolveWorkspaceModelDefault, resolveProviderCapabilities, localTestInfraSupported, resolveRunRepoContext, runInitiatorScope, }: ExecutionServiceDependencies);
300
+ constructor({ workspaceRepository, blockRepository, pipelineRepository, executionRepository, accountRepository, idGenerator, clock, agentExecutor, workRunner, executionEventPublisher, boardService, spendService, documentRepository, taskRepository, requirementReviewRepository, requirementReviewService, clarityReviewRepository, clarityReviewService, environmentProvisioning, environmentTeardown, branchUpdater, blueprintReconciler, notificationService, workspaceSettingsService, llmObservability, ciStatusProvider, mergeabilityProvider, releaseHealthProvider, incidentEnrichment, pullRequestMerger, mergePresetRepository, ticketTrackerProvider, issueWriteback, subscriptionActivationRepository, resolveWorkspaceModelDefault, resolveProviderCapabilities, localTestInfraSupported, resolveRunRepoContext, runInitiatorScope, }: ExecutionServiceDependencies);
283
301
  private requireWorkspace;
284
302
  private requireBlock;
285
303
  /**
@@ -347,6 +365,22 @@ export declare class ExecutionService {
347
365
  * shown as a toast) when the cap is reached. The starting block is excluded from the
348
366
  * count (its prior run is about to be replaced).
349
367
  */
368
+ /**
369
+ * Refuse a task start while any of its dependencies is unfinished. A task may only run
370
+ * once every block it `dependsOn` has reached `done` (its PR merged). No-ops for
371
+ * non-task blocks and for tasks with no dependencies. Throws a {@link ConflictError}
372
+ * (→ 409, shown as a toast) naming the unfinished blockers so the human knows why.
373
+ */
374
+ private assertDependenciesMet;
375
+ /**
376
+ * Augment a workspace's block list (in place) with any dependency blocks referenced by
377
+ * `depIds` that aren't already present — a `dependsOn` edge can point at a task homed in a
378
+ * DIFFERENT workspace (a shared/mounted service). Resolved via the cross-workspace
379
+ * {@link BlockRepository.findById}, so a shared-service blocker is evaluated by its real
380
+ * status instead of being silently treated as satisfied (missing ⇒ done). Returns the same
381
+ * (now-augmented) array for chaining.
382
+ */
383
+ private augmentWithCrossWorkspaceDeps;
350
384
  private assertWithinTaskLimit;
351
385
  /**
352
386
  * Advance a single run by exactly one step and report what happened. This is
@@ -780,6 +814,16 @@ export declare class ExecutionService {
780
814
  proceedClarity(workspaceId: string, blockId: string): Promise<ClarityReview>;
781
815
  /** Resolve a clarity review that hit its iteration cap (extra-round / proceed / stop-reset). */
782
816
  resolveClarityExceeded(workspaceId: string, blockId: string, choice: ResolveRequirementsExceededChoice): Promise<ClarityReview>;
817
+ /** Confirm the change works: tear the ephemeral env down and advance the run. */
818
+ confirmHumanTest(workspaceId: string, blockId: string): Promise<ExecutionInstance>;
819
+ /** Submit findings and request a fix: dispatch the Tester's `fixer`, then rebuild the env. */
820
+ requestHumanTestFix(workspaceId: string, blockId: string, findings: string): Promise<ExecutionInstance>;
821
+ /** Pull the repo default branch into the PR branch + redeploy (conflict → conflict-resolver). */
822
+ pullMainHumanTest(workspaceId: string, blockId: string): Promise<ExecutionInstance>;
823
+ /** Rebuild the ephemeral environment on demand. */
824
+ recreateHumanTestEnv(workspaceId: string, blockId: string): Promise<ExecutionInstance>;
825
+ /** Destroy the ephemeral environment on demand (the run stays parked). */
826
+ destroyHumanTestEnv(workspaceId: string, blockId: string): Promise<ExecutionInstance>;
783
827
  /**
784
828
  * Push the run's latest state to subscribed clients, alongside its rolled-up
785
829
  * block so the board updates without a refetch. Best-effort: the publisher
@@ -822,6 +866,21 @@ export declare class ExecutionService {
822
866
  * merge / review notification.
823
867
  */
824
868
  private finalizeMerge;
869
+ /**
870
+ * After a task with `autoStartDependents` merges, start every task that `dependsOn` it
871
+ * and whose remaining dependencies are all now `done`. System-initiated (no human
872
+ * present), so a dependent on an individual-usage model — which needs its owner to
873
+ * unlock a personal credential per run — is SKIPPED rather than started (it would fault
874
+ * at dispatch); the human starts it manually. Each dependent is started independently so
875
+ * one failure (already running, no provider, …) never blocks the rest.
876
+ */
877
+ private autoStartDependents;
878
+ /**
879
+ * The pipeline id a dependent task should auto-start with: its pinned `pipelineId` when
880
+ * set, else the workspace's first pipeline (mirrors the board's "Run" default). Null
881
+ * when no pipeline exists at all.
882
+ */
883
+ private resolveDefaultPipelineId;
825
884
  /**
826
885
  * Resolve the merge threshold preset that governs a task: its explicitly-picked
827
886
  * preset, else the workspace default, else the built-in {@link DEFAULT_MERGE_PRESET}.
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutionService.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/ExecutionService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExecutionService.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/ExecutionService.ts"],"names":[],"mappings":"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"}
@@ -7,17 +7,18 @@ import { reviewableArtifactOutput } from './artifact-review.logic.js';
7
7
  import { resolveIndividualVendors, } from './individualVendors.logic.js';
8
8
  import { assertFound, ConflictError, getErrorMessage, isModelUsable, NotFoundError, sameSubtasks, ValidationError, } from '@cat-factory/kernel';
9
9
  import { DEFAULT_MERGE_PRESET } from '@cat-factory/kernel';
10
- import { aggregateCi, CI_AGENT_KIND, CI_FIXER_AGENT_KIND, CONFLICTS_AGENT_KIND, CONFLICT_RESOLVER_AGENT_KIND, describeFailingChecks, listFailingChecks, isCiGreen, MERGER_AGENT_KIND, REQUIREMENTS_REVIEW_AGENT_KIND, CLARITY_REVIEW_AGENT_KIND, BUG_INVESTIGATOR_AGENT_KIND, TRACKER_AGENT_KIND, ANALYSIS_AGENT_KIND, TESTER_AGENT_KIND, BLUEPRINTS_AGENT_KIND, SPEC_WRITER_AGENT_KIND, } from './ci.logic.js';
10
+ import { aggregateCi, CI_AGENT_KIND, CI_FIXER_AGENT_KIND, CONFLICTS_AGENT_KIND, CONFLICT_RESOLVER_AGENT_KIND, describeFailingChecks, listFailingChecks, isCiGreen, MERGER_AGENT_KIND, REQUIREMENTS_REVIEW_AGENT_KIND, CLARITY_REVIEW_AGENT_KIND, BUG_INVESTIGATOR_AGENT_KIND, TRACKER_AGENT_KIND, ANALYSIS_AGENT_KIND, TESTER_AGENT_KIND, HUMAN_TEST_AGENT_KIND, BLUEPRINTS_AGENT_KIND, SPEC_WRITER_AGENT_KIND, } from './ci.logic.js';
11
11
  import { POST_RELEASE_HEALTH_AGENT_KIND, ON_CALL_AGENT_KIND, classifyReleaseHealth, describeRegressedSignals, } from './release.logic.js';
12
12
  import { AgentContextBuilder } from './AgentContextBuilder.js';
13
13
  import { CompanionController } from './CompanionController.js';
14
14
  import { MergeResolver } from './MergeResolver.js';
15
15
  import { ReviewGateController } from './ReviewGateController.js';
16
16
  import { TesterController } from './TesterController.js';
17
+ import { HumanTestController } from './HumanTestController.js';
17
18
  import { recordGateAttempt } from './gates.js';
18
19
  import { isAsyncAgentExecutor } from '@cat-factory/kernel';
19
20
  import { isDeployStep } from '@cat-factory/integrations';
20
- import { descendantIds, serviceOf } from '../board/board.logic.js';
21
+ import { dependenciesMet, descendantIds, serviceOf, unmetDependencies, } from '../board/board.logic.js';
21
22
  import { requireWorkspace } from '@cat-factory/kernel';
22
23
  import { planResumedSteps, planRestartFromStep } from './retry.logic.js';
23
24
  import { isContainerEvictionError, isTransientEviction, MAX_EVICTION_RECOVERIES, MAX_TRANSIENT_EVICTION_RECOVERIES, } from './job.logic.js';
@@ -115,6 +116,8 @@ export class ExecutionService {
115
116
  requirementReviewService;
116
117
  clarityReviewService;
117
118
  environmentProvisioning;
119
+ environmentTeardown;
120
+ branchUpdater;
118
121
  /** Assembles the per-step agent context (requirements, docs, env, service frame, fragments). */
119
122
  contextBuilder;
120
123
  /** Resolves a `merger` step's assessment into an auto-merge or a `merge_review` notification. */
@@ -123,6 +126,8 @@ export class ExecutionService {
123
126
  companionController;
124
127
  /** Drives the Tester gate's fix loop: report → greenlight / dispatch fixer / fail. */
125
128
  testerController;
129
+ /** Drives the human-testing gate: provision env → park → confirm / fix / pull-main / recreate. */
130
+ humanTestController;
126
131
  /** Drives both iterative review gates (requirements + clarity); kind-parameterised. */
127
132
  reviewGate;
128
133
  /** The requirements subject for {@link reviewGate}. */
@@ -159,7 +164,7 @@ export class ExecutionService {
159
164
  * {@link stepResolverFor} and {@link StepCompletionResolver}.
160
165
  */
161
166
  stepResolverCache;
162
- constructor({ workspaceRepository, blockRepository, pipelineRepository, executionRepository, accountRepository, idGenerator, clock, agentExecutor, workRunner, executionEventPublisher, boardService, spendService, documentRepository, taskRepository, requirementReviewRepository, requirementReviewService, clarityReviewRepository, clarityReviewService, environmentProvisioning, blueprintReconciler, notificationService, workspaceSettingsService, llmObservability, ciStatusProvider, mergeabilityProvider, releaseHealthProvider, incidentEnrichment, pullRequestMerger, mergePresetRepository, ticketTrackerProvider, issueWriteback, subscriptionActivationRepository, resolveWorkspaceModelDefault, resolveProviderCapabilities, localTestInfraSupported, resolveRunRepoContext, runInitiatorScope, }) {
167
+ constructor({ workspaceRepository, blockRepository, pipelineRepository, executionRepository, accountRepository, idGenerator, clock, agentExecutor, workRunner, executionEventPublisher, boardService, spendService, documentRepository, taskRepository, requirementReviewRepository, requirementReviewService, clarityReviewRepository, clarityReviewService, environmentProvisioning, environmentTeardown, branchUpdater, blueprintReconciler, notificationService, workspaceSettingsService, llmObservability, ciStatusProvider, mergeabilityProvider, releaseHealthProvider, incidentEnrichment, pullRequestMerger, mergePresetRepository, ticketTrackerProvider, issueWriteback, subscriptionActivationRepository, resolveWorkspaceModelDefault, resolveProviderCapabilities, localTestInfraSupported, resolveRunRepoContext, runInitiatorScope, }) {
163
168
  this.runInitiatorScope = runInitiatorScope ?? ((_initiatedBy, fn) => fn());
164
169
  this.workspaceRepository = workspaceRepository;
165
170
  this.blockRepository = blockRepository;
@@ -176,6 +181,8 @@ export class ExecutionService {
176
181
  this.requirementReviewService = requirementReviewService;
177
182
  this.clarityReviewService = clarityReviewService;
178
183
  this.environmentProvisioning = environmentProvisioning;
184
+ this.environmentTeardown = environmentTeardown;
185
+ this.branchUpdater = branchUpdater;
179
186
  this.contextBuilder = new AgentContextBuilder({
180
187
  workspaceRepository,
181
188
  blockRepository,
@@ -220,6 +227,47 @@ export class ExecutionService {
220
227
  persistInstance: (ws, i) => this.executionRepository.upsert(ws, i),
221
228
  emitInstance: (ws, i) => this.emitInstance(ws, i),
222
229
  });
230
+ this.humanTestController = new HumanTestController({
231
+ blockRepository,
232
+ executionRepository,
233
+ workRunner,
234
+ agentExecutor,
235
+ contextBuilder: this.contextBuilder,
236
+ notificationService,
237
+ // Wrap the env services with the deployer's input/context derivation so the gate's
238
+ // provisioning matches a `deployer` step's. Left undefined when no provider is wired
239
+ // (the gate degrades to manual mode).
240
+ ...(environmentProvisioning
241
+ ? {
242
+ provisionEnvironment: (ws, block, executionId) => environmentProvisioning.provision({
243
+ workspaceId: ws,
244
+ blockId: block.id,
245
+ executionId,
246
+ inputs: this.deployInputs(block),
247
+ context: this.deployContext(block),
248
+ }),
249
+ refreshEnvironment: (ws, id) => environmentProvisioning.refreshStatus(ws, id),
250
+ }
251
+ : {}),
252
+ ...(environmentTeardown
253
+ ? {
254
+ teardownEnvironment: async (ws, id) => {
255
+ await environmentTeardown.teardown(ws, id);
256
+ },
257
+ }
258
+ : {}),
259
+ ...(branchUpdater ? { branchUpdater } : {}),
260
+ resolveMergePreset: (ws, block) => this.resolveMergePreset(ws, block),
261
+ parkStepOnDecision: (ws, i, s, p) => this.parkStepOnDecision(ws, i, s, p),
262
+ finishStep: (s) => this.finishStep(s),
263
+ startStep: (s) => this.startStep(s),
264
+ updateBlockProgress: (ws, i, st) => this.updateBlockProgress(ws, i, st),
265
+ finalizeBlock: (ws, i, c) => this.finalizeBlock(ws, i, c),
266
+ stopRunContainer: (ws, i) => this.stopRunContainer(ws, i),
267
+ persistInstance: (ws, i) => this.executionRepository.upsert(ws, i),
268
+ emitInstance: (ws, i) => this.emitInstance(ws, i),
269
+ clockNow: () => this.clock.now(),
270
+ });
223
271
  this.reviewGate = new ReviewGateController({
224
272
  blockRepository,
225
273
  executionRepository,
@@ -394,6 +442,11 @@ export class ExecutionService {
394
442
  // Enforce the workspace's per-service running-task limit (off by default) — a clear,
395
443
  // actionable error before any side effects, so the human knows why the start was refused.
396
444
  await this.assertWithinTaskLimit(workspaceId, block);
445
+ // Hard dependency gate: a task cannot start while any block it `dependsOn` is unfinished
446
+ // (not yet `done`/merged). Enforced server-side so it holds for manual starts, recurring
447
+ // fires, auto-start propagation and direct API calls alike — the frontend's runnable
448
+ // check is only a hint. Before any side effects so nothing is torn down on a refusal.
449
+ await this.assertDependenciesMet(workspaceId, block);
397
450
  // Mint the activation next: if the credential can't be unlocked, fail before
398
451
  // tearing down the block's prior run or creating a new one.
399
452
  const executionId = this.idGenerator.next('exec');
@@ -483,6 +536,42 @@ export class ExecutionService {
483
536
  * shown as a toast) when the cap is reached. The starting block is excluded from the
484
537
  * count (its prior run is about to be replaced).
485
538
  */
539
+ /**
540
+ * Refuse a task start while any of its dependencies is unfinished. A task may only run
541
+ * once every block it `dependsOn` has reached `done` (its PR merged). No-ops for
542
+ * non-task blocks and for tasks with no dependencies. Throws a {@link ConflictError}
543
+ * (→ 409, shown as a toast) naming the unfinished blockers so the human knows why.
544
+ */
545
+ async assertDependenciesMet(workspaceId, block) {
546
+ if (block.level !== 'task' || block.dependsOn.length === 0)
547
+ return;
548
+ const blocks = await this.augmentWithCrossWorkspaceDeps(await this.blockRepository.listByWorkspace(workspaceId), block.dependsOn);
549
+ if (dependenciesMet(blocks, block.id))
550
+ return;
551
+ const blockers = unmetDependencies(blocks, block.id);
552
+ const names = blockers.map((b) => `"${b.title}"`).join(', ');
553
+ throw new ConflictError(`This task is blocked by ${blockers.length} unfinished dependenc${blockers.length === 1 ? 'y' : 'ies'}${names ? ` (${names})` : ''}. Finish them before starting this task.`);
554
+ }
555
+ /**
556
+ * Augment a workspace's block list (in place) with any dependency blocks referenced by
557
+ * `depIds` that aren't already present — a `dependsOn` edge can point at a task homed in a
558
+ * DIFFERENT workspace (a shared/mounted service). Resolved via the cross-workspace
559
+ * {@link BlockRepository.findById}, so a shared-service blocker is evaluated by its real
560
+ * status instead of being silently treated as satisfied (missing ⇒ done). Returns the same
561
+ * (now-augmented) array for chaining.
562
+ */
563
+ async augmentWithCrossWorkspaceDeps(blocks, depIds) {
564
+ const have = new Set(blocks.map((b) => b.id));
565
+ for (const id of depIds) {
566
+ if (have.has(id))
567
+ continue;
568
+ have.add(id);
569
+ const found = await this.blockRepository.findById(id);
570
+ if (found)
571
+ blocks.push(found.block);
572
+ }
573
+ return blocks;
574
+ }
486
575
  async assertWithinTaskLimit(workspaceId, block) {
487
576
  const settingsService = this.workspaceSettingsService;
488
577
  if (!settingsService || block.level !== 'task')
@@ -598,7 +687,12 @@ export class ExecutionService {
598
687
  const reentrantRequirements = (step.agentKind === REQUIREMENTS_REVIEW_AGENT_KIND ||
599
688
  step.agentKind === CLARITY_REVIEW_AGENT_KIND) &&
600
689
  !!step.pendingIncorporation;
601
- if (!reentrantRequirements) {
690
+ // The human-testing gate is likewise re-entrant: a human action (confirm / request a
691
+ // fix / pull main / recreate) records a `pendingAction` on the parked step and wakes
692
+ // the driver. Fall through so the gate re-evaluates and acts on it (dispatch a helper,
693
+ // rebuild the env, or advance) instead of immediately re-parking.
694
+ const reentrantHumanTest = step.agentKind === HUMAN_TEST_AGENT_KIND && !!step.humanTest?.pendingAction;
695
+ if (!reentrantRequirements && !reentrantHumanTest) {
602
696
  // Parked on either an agent-raised decision or a human approval gate; both
603
697
  // are addressed by the same durable event id.
604
698
  const pendingId = step.decision?.id ?? step.approval?.id;
@@ -653,6 +747,15 @@ export class ExecutionService {
653
747
  if (step.agentKind === CLARITY_REVIEW_AGENT_KIND) {
654
748
  return this.reviewGate.evaluate(this.clarityKind, workspaceId, instance, step, block, isFinalStep);
655
749
  }
750
+ // A `human-test` gate spins up an ephemeral environment and PARKS for a human to
751
+ // validate the change in a live URL before the run continues — NOT a container/prose
752
+ // agent and NOT a programmatic polling gate (the human is the verdict). It also drives
753
+ // the same helpers the other gates use on demand: the Tester's `fixer` (from findings)
754
+ // and the `conflict-resolver` (after a conflicting pull-main). Degrades to a manual
755
+ // (no-env) mode when no ephemeral-environment provider is wired. See {@link HumanTestController}.
756
+ if (step.agentKind === HUMAN_TEST_AGENT_KIND) {
757
+ return this.humanTestController.evaluate(workspaceId, instance, step, block, isFinalStep);
758
+ }
656
759
  // A polling gate step (`ci` / `conflicts`) runs a programmatic precheck and only
657
760
  // escalates to a helper container agent (`ci-fixer` / `conflict-resolver`) on a
658
761
  // negative verdict — no LLM of its own. Pass-through when the gate's provider is
@@ -893,6 +996,17 @@ export class ExecutionService {
893
996
  await this.stopRunContainer(workspaceId, instance);
894
997
  return this.testerController.dispatchTester(workspaceId, instance, step, block);
895
998
  }
999
+ // A `human-test` gate in its `fixing` / `resolving_conflicts` phase has a helper job
1000
+ // (fixer / conflict-resolver) in flight, NOT the step's own work: when it settles —
1001
+ // done OR failed — record the round's outcome, rebuild the environment against the
1002
+ // (now-updated) branch and re-park the human. We never fail the run here; the human is
1003
+ // in control. Mirrors the Tester→Fixer loop.
1004
+ if (step.agentKind === HUMAN_TEST_AGENT_KIND &&
1005
+ (step.humanTest?.phase === 'fixing' || step.humanTest?.phase === 'resolving_conflicts')) {
1006
+ return this.humanTestController.onHelperComplete(workspaceId, instance, step, {
1007
+ state: update.state === 'failed' ? 'failed' : 'done',
1008
+ });
1009
+ }
896
1010
  if (update.state === 'failed') {
897
1011
  // A container eviction (the per-run container vanished, its in-memory job is
898
1012
  // gone) is usually transient. Recover it by dropping the dead handle and
@@ -956,6 +1070,12 @@ export class ExecutionService {
956
1070
  return { kind: 'noop' };
957
1071
  }
958
1072
  const step = instance.steps[instance.currentStep];
1073
+ // The human-testing gate rides the same `awaiting_gate` poll loop while its ephemeral
1074
+ // environment provisions — re-poll the env status (ready → park the human; still
1075
+ // provisioning → keep polling; failed → degrade to manual mode).
1076
+ if (step?.agentKind === HUMAN_TEST_AGENT_KIND) {
1077
+ return this.humanTestController.pollEnvironment(workspaceId, instance);
1078
+ }
959
1079
  const gate = step ? this.gateFor(step.agentKind) : undefined;
960
1080
  if (!step || !gate)
961
1081
  return { kind: 'continue' };
@@ -986,6 +1106,11 @@ export class ExecutionService {
986
1106
  return { kind: 'noop' };
987
1107
  }
988
1108
  const step = instance.steps[instance.currentStep];
1109
+ // The human-testing gate never times the RUN out while provisioning: instead of failing,
1110
+ // park the human in degraded mode so they can wait, recreate, or test by hand.
1111
+ if (step?.agentKind === HUMAN_TEST_AGENT_KIND) {
1112
+ return this.humanTestController.onProvisionTimeout(workspaceId, instance);
1113
+ }
989
1114
  const gate = step ? this.gateFor(step.agentKind) : undefined;
990
1115
  const timeoutError = 'Gate precheck did not settle within its polling budget';
991
1116
  if (!step || !gate || gate.pollExhaustion !== 'pass') {
@@ -2137,6 +2262,9 @@ export class ExecutionService {
2137
2262
  if (step.agentKind === CLARITY_REVIEW_AGENT_KIND) {
2138
2263
  throw new ConflictError('Resolve the clarity review through its review window, not the approval gate');
2139
2264
  }
2265
+ if (step.agentKind === HUMAN_TEST_AGENT_KIND) {
2266
+ throw new ConflictError('Resolve the human-testing gate through its window (confirm / request a fix), not the approval gate');
2267
+ }
2140
2268
  if (step.companion?.exceeded) {
2141
2269
  throw new ConflictError('Resolve this companion review through its iteration-cap prompt, not the approval gate');
2142
2270
  }
@@ -2394,6 +2522,29 @@ export class ExecutionService {
2394
2522
  resolveClarityExceeded(workspaceId, blockId, choice) {
2395
2523
  return this.reviewGate.resolveExceeded(this.clarityKind, workspaceId, blockId, choice);
2396
2524
  }
2525
+ // ---- human-testing gate actions (driven from the dedicated window) -------
2526
+ // Each mutates the parked gate step and wakes the durable driver, which re-enters the gate
2527
+ // and performs the (env / helper) work; see {@link HumanTestController}.
2528
+ /** Confirm the change works: tear the ephemeral env down and advance the run. */
2529
+ confirmHumanTest(workspaceId, blockId) {
2530
+ return this.humanTestController.confirm(workspaceId, blockId);
2531
+ }
2532
+ /** Submit findings and request a fix: dispatch the Tester's `fixer`, then rebuild the env. */
2533
+ requestHumanTestFix(workspaceId, blockId, findings) {
2534
+ return this.humanTestController.requestFix(workspaceId, blockId, findings);
2535
+ }
2536
+ /** Pull the repo default branch into the PR branch + redeploy (conflict → conflict-resolver). */
2537
+ pullMainHumanTest(workspaceId, blockId) {
2538
+ return this.humanTestController.pullMain(workspaceId, blockId);
2539
+ }
2540
+ /** Rebuild the ephemeral environment on demand. */
2541
+ recreateHumanTestEnv(workspaceId, blockId) {
2542
+ return this.humanTestController.recreateEnvironment(workspaceId, blockId);
2543
+ }
2544
+ /** Destroy the ephemeral environment on demand (the run stays parked). */
2545
+ destroyHumanTestEnv(workspaceId, blockId) {
2546
+ return this.humanTestController.destroyEnvironment(workspaceId, blockId);
2547
+ }
2397
2548
  /**
2398
2549
  * Push the run's latest state to subscribed clients, alongside its rolled-up
2399
2550
  * block so the board updates without a refetch. Best-effort: the publisher
@@ -2561,8 +2712,62 @@ export class ExecutionService {
2561
2712
  }
2562
2713
  if ((block.level ?? 'frame') === 'task') {
2563
2714
  await this.applyModuleAssignment(workspaceId, blockId);
2715
+ // Propagate to dependents: if this task opted into auto-start, launch every task
2716
+ // that depends on it whose other dependencies are now also done. Best-effort — the
2717
+ // merge already happened, so a dependent that fails to start must never roll it back.
2718
+ if (block.autoStartDependents) {
2719
+ await this.autoStartDependents(workspaceId, blockId).catch(() => { });
2720
+ }
2721
+ }
2722
+ }
2723
+ /**
2724
+ * After a task with `autoStartDependents` merges, start every task that `dependsOn` it
2725
+ * and whose remaining dependencies are all now `done`. System-initiated (no human
2726
+ * present), so a dependent on an individual-usage model — which needs its owner to
2727
+ * unlock a personal credential per run — is SKIPPED rather than started (it would fault
2728
+ * at dispatch); the human starts it manually. Each dependent is started independently so
2729
+ * one failure (already running, no provider, …) never blocks the rest.
2730
+ */
2731
+ async autoStartDependents(workspaceId, mergedBlockId) {
2732
+ const blocks = await this.blockRepository.listByWorkspace(workspaceId);
2733
+ const dependents = blocks.filter((b) => b.level === 'task' && b.dependsOn.includes(mergedBlockId));
2734
+ // A dependent's OTHER blockers may live in another workspace (a shared service); resolve
2735
+ // them so `dependenciesMet` doesn't treat a cross-workspace blocker as missing-⇒-satisfied.
2736
+ await this.augmentWithCrossWorkspaceDeps(blocks, dependents.flatMap((d) => d.dependsOn));
2737
+ for (const dependent of dependents) {
2738
+ // All of the dependent's blockers must now be satisfied (not just the one that merged).
2739
+ if (!dependenciesMet(blocks, dependent.id))
2740
+ continue;
2741
+ // Only auto-start a fresh task — never replace a run already in flight or a finished one.
2742
+ if (dependent.status !== 'planned' && dependent.status !== 'ready')
2743
+ continue;
2744
+ const pipelineId = await this.resolveDefaultPipelineId(workspaceId, dependent);
2745
+ if (!pipelineId)
2746
+ continue;
2747
+ // Skip dependents that would lease an individual-usage credential (can't unlock unattended).
2748
+ const individual = await this.individualVendorsForBlock(workspaceId, dependent.id, pipelineId);
2749
+ if (individual.length > 0)
2750
+ continue;
2751
+ try {
2752
+ await this.start(workspaceId, dependent.id, pipelineId, null);
2753
+ }
2754
+ catch {
2755
+ // Already running, no usable provider, still-unmet dep racing, etc. — leave this
2756
+ // dependent for a manual start; the others still get their chance.
2757
+ }
2564
2758
  }
2565
2759
  }
2760
+ /**
2761
+ * The pipeline id a dependent task should auto-start with: its pinned `pipelineId` when
2762
+ * set, else the workspace's first pipeline (mirrors the board's "Run" default). Null
2763
+ * when no pipeline exists at all.
2764
+ */
2765
+ async resolveDefaultPipelineId(workspaceId, block) {
2766
+ if (block.pipelineId)
2767
+ return block.pipelineId;
2768
+ const pipelines = await this.pipelineRepository.listByWorkspace(workspaceId);
2769
+ return pipelines[0]?.id ?? null;
2770
+ }
2566
2771
  /**
2567
2772
  * Resolve the merge threshold preset that governs a task: its explicitly-picked
2568
2773
  * preset, else the workspace default, else the built-in {@link DEFAULT_MERGE_PRESET}.