@revisium/orchestrator 0.1.0-alpha.2 → 0.1.0-alpha.4

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 (154) hide show
  1. package/control-plane/bootstrap.config.json +103 -2
  2. package/control-plane/default-playbook/catalog/pipelines.json +360 -0
  3. package/control-plane/default-playbook/catalog/roles.json +56 -0
  4. package/control-plane/default-playbook/package.json +5 -0
  5. package/control-plane/default-playbook/playbook.json +13 -0
  6. package/control-plane/default-playbook/prompts/analyst.md +27 -0
  7. package/control-plane/default-playbook/prompts/developer.md +26 -0
  8. package/control-plane/default-playbook/prompts/integrator.md +20 -0
  9. package/control-plane/default-playbook/prompts/orchestrator.md +23 -0
  10. package/control-plane/default-playbook/prompts/reviewer.md +28 -0
  11. package/control-plane/default-playbook/prompts/watcher.md +24 -0
  12. package/dist/cli/commands/bootstrap.js +68 -7
  13. package/dist/cli/commands/bootstrap.js.map +1 -1
  14. package/dist/cli/commands/inbox.js +0 -21
  15. package/dist/cli/commands/inbox.js.map +1 -1
  16. package/dist/cli/commands/run.js +76 -49
  17. package/dist/cli/commands/run.js.map +1 -1
  18. package/dist/cli/needs-host.js +7 -8
  19. package/dist/cli/needs-host.js.map +1 -1
  20. package/dist/cli/program.js +0 -2
  21. package/dist/cli/program.js.map +1 -1
  22. package/dist/config.js +18 -1
  23. package/dist/config.js.map +1 -1
  24. package/dist/control-plane/client-transport.js +73 -40
  25. package/dist/control-plane/client-transport.js.map +1 -1
  26. package/dist/control-plane/data-access.js +3 -2
  27. package/dist/control-plane/data-access.js.map +1 -1
  28. package/dist/control-plane/definitions.js +1 -1
  29. package/dist/control-plane/definitions.js.map +1 -1
  30. package/dist/control-plane/json-fields.js +2 -0
  31. package/dist/control-plane/json-fields.js.map +1 -1
  32. package/dist/control-plane/schema-migration.js +86 -0
  33. package/dist/control-plane/schema-migration.js.map +1 -0
  34. package/dist/control-plane/seed-default-playbook.js +71 -0
  35. package/dist/control-plane/seed-default-playbook.js.map +1 -0
  36. package/dist/control-plane/tables.js +1 -0
  37. package/dist/control-plane/tables.js.map +1 -1
  38. package/dist/e2e/kit/agents.js +113 -0
  39. package/dist/e2e/kit/agents.js.map +1 -0
  40. package/dist/e2e/kit/assertions.js +119 -0
  41. package/dist/e2e/kit/assertions.js.map +1 -0
  42. package/dist/e2e/kit/crash.js +44 -0
  43. package/dist/e2e/kit/crash.js.map +1 -0
  44. package/dist/e2e/kit/drive.js +49 -0
  45. package/dist/e2e/kit/drive.js.map +1 -0
  46. package/dist/e2e/kit/env.js +16 -0
  47. package/dist/e2e/kit/env.js.map +1 -0
  48. package/dist/e2e/kit/fake-integrator.js +42 -0
  49. package/dist/e2e/kit/fake-integrator.js.map +1 -0
  50. package/dist/e2e/kit/gh-emulator.js +49 -0
  51. package/dist/e2e/kit/gh-emulator.js.map +1 -0
  52. package/dist/e2e/kit/git-target-repo.js +83 -0
  53. package/dist/e2e/kit/git-target-repo.js.map +1 -0
  54. package/dist/e2e/kit/harness.js +59 -0
  55. package/dist/e2e/kit/harness.js.map +1 -0
  56. package/dist/e2e/kit/index.js +14 -0
  57. package/dist/e2e/kit/index.js.map +1 -0
  58. package/dist/e2e/kit/mcp.js +32 -0
  59. package/dist/e2e/kit/mcp.js.map +1 -0
  60. package/dist/e2e/kit/scenarios.js +196 -0
  61. package/dist/e2e/kit/scenarios.js.map +1 -0
  62. package/dist/e2e/recovery-crash-child.js +29 -0
  63. package/dist/e2e/recovery-crash-child.js.map +1 -0
  64. package/dist/e2e/recovery-dd-crash-child.js +42 -0
  65. package/dist/e2e/recovery-dd-crash-child.js.map +1 -0
  66. package/dist/engine/ensure-postgres.js +13 -1
  67. package/dist/engine/ensure-postgres.js.map +1 -1
  68. package/dist/mcp/mcp-capabilities.js +1 -0
  69. package/dist/mcp/mcp-capabilities.js.map +1 -1
  70. package/dist/mcp/mcp-facade.service.js +24 -3
  71. package/dist/mcp/mcp-facade.service.js.map +1 -1
  72. package/dist/mcp/mcp-tools.js +16 -7
  73. package/dist/mcp/mcp-tools.js.map +1 -1
  74. package/dist/pipeline/data-driven-task.workflow.js +493 -0
  75. package/dist/pipeline/data-driven-task.workflow.js.map +1 -0
  76. package/dist/pipeline/data-driven-template.js +57 -0
  77. package/dist/pipeline/data-driven-template.js.map +1 -0
  78. package/dist/pipeline/develop-task.workflow.js +151 -316
  79. package/dist/pipeline/develop-task.workflow.js.map +1 -1
  80. package/dist/pipeline/pipeline.module.js +1 -1
  81. package/dist/pipeline/route-contract.js +82 -0
  82. package/dist/pipeline/route-contract.js.map +1 -0
  83. package/dist/pipeline-core/index.js +16 -0
  84. package/dist/pipeline-core/index.js.map +1 -0
  85. package/dist/pipeline-core/interpret.js +351 -0
  86. package/dist/pipeline-core/interpret.js.map +1 -0
  87. package/dist/pipeline-core/kit/assertions.js +61 -0
  88. package/dist/pipeline-core/kit/assertions.js.map +1 -0
  89. package/dist/pipeline-core/kit/builders.js +136 -0
  90. package/dist/pipeline-core/kit/builders.js.map +1 -0
  91. package/dist/pipeline-core/kit/drive.js +96 -0
  92. package/dist/pipeline-core/kit/drive.js.map +1 -0
  93. package/dist/pipeline-core/kit/fixtures.js +248 -0
  94. package/dist/pipeline-core/kit/fixtures.js.map +1 -0
  95. package/dist/pipeline-core/kit/index.js +13 -0
  96. package/dist/pipeline-core/kit/index.js.map +1 -0
  97. package/dist/pipeline-core/types.js +132 -0
  98. package/dist/pipeline-core/types.js.map +1 -0
  99. package/dist/pipeline-core/validate.js +1192 -0
  100. package/dist/pipeline-core/validate.js.map +1 -0
  101. package/dist/playbook/catalog-loader.js +14 -1
  102. package/dist/playbook/catalog-loader.js.map +1 -1
  103. package/dist/playbook/import-mapper.js +14 -38
  104. package/dist/playbook/import-mapper.js.map +1 -1
  105. package/dist/playbook/manifest.js +1 -1
  106. package/dist/revisium/playbooks.service.js +95 -17
  107. package/dist/revisium/playbooks.service.js.map +1 -1
  108. package/dist/revisium/roles.service.js +1 -1
  109. package/dist/revisium/roles.service.js.map +1 -1
  110. package/dist/revisium/run.service.js +16 -0
  111. package/dist/revisium/run.service.js.map +1 -1
  112. package/dist/run/append-event.js +24 -1
  113. package/dist/run/append-event.js.map +1 -1
  114. package/dist/run/block-run.js +17 -0
  115. package/dist/run/block-run.js.map +1 -0
  116. package/dist/run/create-run.js +28 -5
  117. package/dist/run/create-run.js.map +1 -1
  118. package/dist/run/inspect-run.js +9 -0
  119. package/dist/run/inspect-run.js.map +1 -1
  120. package/dist/run/run-outputs.js +88 -0
  121. package/dist/run/run-outputs.js.map +1 -0
  122. package/dist/run/terminal-run-status.js +89 -7
  123. package/dist/run/terminal-run-status.js.map +1 -1
  124. package/dist/runners/claude-code.service.js +4 -0
  125. package/dist/runners/claude-code.service.js.map +1 -1
  126. package/dist/runners/integrator.js +25 -9
  127. package/dist/runners/integrator.js.map +1 -1
  128. package/dist/task-control-plane/task-control-plane-api.service.js +247 -28
  129. package/dist/task-control-plane/task-control-plane-api.service.js.map +1 -1
  130. package/dist/worker/artifact-store.js +111 -0
  131. package/dist/worker/artifact-store.js.map +1 -0
  132. package/dist/worker/build-context.js +17 -0
  133. package/dist/worker/build-context.js.map +1 -1
  134. package/dist/worker/claude-code-runner.js +44 -5
  135. package/dist/worker/claude-code-runner.js.map +1 -1
  136. package/dist/worker/process-executor.js +23 -2
  137. package/dist/worker/process-executor.js.map +1 -1
  138. package/dist/worker/runner-dispatch.js +1 -0
  139. package/dist/worker/runner-dispatch.js.map +1 -1
  140. package/dist/worker/runner.js +11 -1
  141. package/dist/worker/runner.js.map +1 -1
  142. package/dist/worker/stub-runner.js +7 -45
  143. package/dist/worker/stub-runner.js.map +1 -1
  144. package/package.json +3 -1
  145. package/dist/cli/commands/work.js +0 -149
  146. package/dist/cli/commands/work.js.map +0 -1
  147. package/dist/worker/git-worktree-manager.js +0 -84
  148. package/dist/worker/git-worktree-manager.js.map +0 -1
  149. package/dist/worker/loop.js +0 -122
  150. package/dist/worker/loop.js.map +0 -1
  151. package/dist/worker/script-runner.js +0 -28
  152. package/dist/worker/script-runner.js.map +0 -1
  153. package/dist/worker/worker-id.js +0 -18
  154. package/dist/worker/worker-id.js.map +0 -1
@@ -11,26 +11,26 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
11
  return function (target, key) { decorator(target, key, paramIndex); }
12
12
  };
13
13
  /**
14
- * PipelineService — the architect→developer→reviewer→integrator DBOS workflow.
14
+ * PipelineService — DBOS registration hub for the data-driven pipeline engine (plan 0015).
15
15
  *
16
16
  * INVARIANT: `src/pipeline/*` imports NO `@dbos-inc/dbos-sdk` (M1 — DBOS sealed).
17
17
  * All DBOS interaction goes through the generic DbosService verbs.
18
18
  *
19
19
  * Registration happens in the constructor, BEFORE DBOS.launch() (mirroring dev:ping).
20
20
  *
21
- * 0005 changes:
22
- * - runnerMode (REQUIRED, durable): 'script' | 'live'. Replaces runnerOverride.
23
- * Default/missing/invalid 'script' (fail-safe). --live is the only path to real claude/git/gh.
24
- * - ClaudeCodeService injected via RUN_AGENT token (replaces throwing stub dep).
25
- * - IntegratorService injected: runIntegrate (live) + runStub (script) + runPreflight (live).
26
- * - loadRunTaskContext called once in the workflow body (B6).
27
- * - Live preflight as a memoized DBOS step (B5/B7): clean + base invariant.
28
- * - Integrator dispatched on mode: live integrateFn (DBOS step); script → runStub (pure).
29
- * - integrate_succeeded event emitted on integrator success (observability MINOR).
30
- * - Merge gate receives the real prUrl from the integrator result.
21
+ * CUTOVER (plan 0015 slice 3): the old hardcoded `developTask` workflow + its role→phase classifiers
22
+ * (`planRouteExecution`, `isDeveloperRole`/…, `validatePostIntegratorBindings`, `beforeDeveloperPhase`)
23
+ * have been REMOVED. The data-driven engine (`makeDataDrivenTask`, executing a `pipeline-core` graph) is
24
+ * the SOLE pipeline engine; selection routes EVERY pipeline to it (TaskControlPlaneApiService.startRun),
25
+ * and a pipeline lacking a valid data-driven template FAILS LOUD there (PIPELINE_NOT_DATA_DRIVEN).
26
+ *
27
+ * KEPT here (the shared seams the data-driven adapter reuses):
28
+ * - `makeRunStep` the generic per-step runner (role→runner dispatch, attempt/cost/event bookkeeping).
29
+ * - the run lifecycle verbs (complete/fail/block) + `awaitHuman` (gate park/resume) + the integrator
30
+ * (real + stub) + the live preflight, wired as DataDrivenTaskDeps.
31
31
  *
32
32
  * C1 architecture: the step and workflow bodies are extracted as DBOS-free builder functions
33
- * (`makeRunStep` / `makeDevelopTask`). PipelineService registers exactly those builders via
33
+ * (`makeRunStep` / `makeDataDrivenTask`). PipelineService registers exactly those builders via
34
34
  * the engine seam, so tests can import and exercise the SAME production logic directly.
35
35
  */
36
36
  import { Injectable, Inject } from '@nestjs/common';
@@ -39,78 +39,48 @@ import { RolesService } from '../revisium/roles.service.js';
39
39
  import { RunService } from '../revisium/run.service.js';
40
40
  import { InboxService } from '../revisium/inbox.service.js';
41
41
  import { IntegratorService } from '../runners/integrator.js';
42
+ import { redactTokens } from '../runners/gh-identity.js';
42
43
  import { RUN_AGENT } from '../runners/tokens.js';
43
44
  import { buildContext } from '../worker/build-context.js';
45
+ import { artifactsFromRunAgentError } from '../worker/runner.js';
44
46
  import { fnv1a64Hex } from '../control-plane/steps.js';
45
47
  import { makeAwaitHuman } from './await-human.js';
48
+ import { makeDataDrivenTask, } from './data-driven-task.workflow.js';
49
+ import { dispatchRunnerId, } from './route-contract.js';
46
50
  /** Queue name for the dev-tasks WorkflowQueue. */
47
51
  const DEV_TASKS_QUEUE = 'dev-tasks';
48
- /** Concurrency limit for the dev-tasks queue. */
49
- const DEV_TASKS_CONCURRENCY = 2;
50
52
  /**
51
- * verdictOf extract the reviewer verdict from an AttemptResult.
52
- *
53
- * M2 (COMMITTED): fail-closedmissing/unknown verdict returns 'BLOCKER'.
54
- * Maps the seeded reviewer prompt vocabulary: APPROVE→PASS, REQUEST_CHANGES→MAJOR.
55
- * Explicit BLOCKER passes through. PASS and MINOR proceed.
56
- *
57
- * 0008 dogfood fix: a real claude reviewer emits its verdict as a FREE-TEXT string that BEGINS
58
- * with the verdict word (e.g. `"APPROVE — all gates pass…"`, `"REQUEST_CHANGES: …"`), not as a
59
- * structured `{ verdict: … }` object. The original parser only read `output.verdict` and
60
- * fail-closed every string output to BLOCKER — so genuine APPROVEs looped to the cap and the
61
- * pipeline never reached the integrator. We now also recognize the leading token of a string
62
- * output. Fail-closed is preserved: an object with no known verdict, or a string with no
63
- * recognized LEADING token, still returns BLOCKER (don't integrate ambiguously-reviewed code).
53
+ * Concurrency limit for the dev-tasks queue. Default 2; overridable via `REVO_DEV_TASKS_CONCURRENCY`
54
+ * (a deployment throughput knob, and what lets the e2e crash-recovery suite hold several PENDING
55
+ * runs at onceeach parked run occupies a slot until recovered).
64
56
  */
65
- function mapVerdictToken(raw) {
66
- switch (raw) {
67
- case 'PASS':
68
- case 'APPROVE': // seeded reviewer prompt vocabulary mapping
69
- return 'PASS';
70
- case 'MINOR':
71
- return 'MINOR';
72
- case 'MAJOR':
73
- case 'REQUEST_CHANGES': // seeded reviewer prompt vocabulary mapping
74
- return 'MAJOR';
75
- case 'BLOCKER':
76
- return 'BLOCKER';
77
- default:
78
- return null; // unrecognized
79
- }
57
+ const DEV_TASKS_CONCURRENCY = (() => {
58
+ const raw = Number.parseInt(process.env['REVO_DEV_TASKS_CONCURRENCY'] ?? '', 10);
59
+ return Number.isFinite(raw) && raw > 0 ? raw : 2;
60
+ })();
61
+ const RUNNER_FAILURE_REASON_MAX = 2_000;
62
+ function isRecord(value) {
63
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
80
64
  }
81
65
  /**
82
- * Extract a verdict from the LEADING token of a free-text reviewer string.
83
- * Anchored at the start (after trimming) so a verdict word merely *mentioned* mid-sentence
84
- * (e.g. "REQUEST_CHANGES the APPROVE criteria are unmet") resolves by the real leading verdict,
85
- * not an incidental match. Returns null when the string does not start with a known verdict.
66
+ * verdictForAttemptRow best-effort verdict label for the observability attempts row.
67
+ *
68
+ * The data-driven engine routes on a node's DOMAIN verdict (resolved in the adapter, §8) and never
69
+ * consults this. This is purely the human-readable verdict surfaced on the per-attempt log row: read
70
+ * an explicit `output.verdict` (string) or the leading token of a free-text string output, else mark
71
+ * it `unknown`. No engine semantics are derived from it.
86
72
  */
87
- function verdictFromText(text) {
88
- const m = /^(APPROVE|REQUEST_CHANGES|BLOCKER|MAJOR|MINOR|PASS)\b/.exec(text.trimStart().toUpperCase());
89
- return m ? mapVerdictToken(m[1]) : null;
90
- }
91
- export function verdictOf(result) {
73
+ function verdictForAttemptRow(result) {
92
74
  const output = result.output;
93
- // Structured form: { verdict: "…" }.
94
- if (output !== null && typeof output === 'object') {
95
- return mapVerdictToken(output.verdict) ?? 'BLOCKER';
96
- }
97
- // Free-text form: reviewer emitted a string whose leading token is the verdict.
75
+ if (isRecord(output) && typeof output.verdict === 'string')
76
+ return output.verdict;
98
77
  if (typeof output === 'string') {
99
- return verdictFromText(output) ?? 'BLOCKER';
78
+ const token = output.trim().split(/\s+/)[0];
79
+ if (token)
80
+ return token.toUpperCase();
100
81
  }
101
- // Missing/non-parseable output → fail-closed.
102
- return 'BLOCKER';
82
+ return 'unknown';
103
83
  }
104
- function isBlocking(verdict) {
105
- return verdict === 'MAJOR' || verdict === 'BLOCKER';
106
- }
107
- /**
108
- * makeRunStep — DBOS-free factory for the runStep async function.
109
- *
110
- * Returns a plain async function with the same signature as the DBOS step.
111
- * PipelineService passes this to `dbos.registerStep(...)` so tests can import
112
- * and call it directly — exercising the SAME code path as production (C1).
113
- */
114
84
  /** Parse the rework iteration from a stepKey (`developer#2` → 2; `developer` → 0). */
115
85
  function iterationOf(stepKey) {
116
86
  const hashIdx = stepKey.lastIndexOf('#');
@@ -119,10 +89,34 @@ function iterationOf(stepKey) {
119
89
  const n = Number.parseInt(stepKey.slice(hashIdx + 1), 10);
120
90
  return Number.isFinite(n) && n > 0 ? n : 0;
121
91
  }
92
+ function runnerFailureReason(err) {
93
+ const message = err instanceof Error ? err.message : String(err);
94
+ return redactTokens(message).slice(0, RUNNER_FAILURE_REASON_MAX);
95
+ }
96
+ function processArtifactFields(artifacts) {
97
+ const processArtifact = isRecord(artifacts) && isRecord(artifacts.process) ? artifacts.process : artifacts;
98
+ if (!isRecord(processArtifact))
99
+ return {};
100
+ const ref = processArtifact.ref;
101
+ const stdoutTail = processArtifact.stdoutTail;
102
+ const stderrTail = processArtifact.stderrTail;
103
+ return {
104
+ artifactRef: typeof ref === 'string' ? ref : undefined,
105
+ stdoutTail: typeof stdoutTail === 'string' ? stdoutTail : undefined,
106
+ stderrTail: typeof stderrTail === 'string' ? stderrTail : undefined,
107
+ };
108
+ }
109
+ /**
110
+ * makeRunStep — DBOS-free factory for the runStep async function.
111
+ *
112
+ * Returns a plain async function with the same signature as the DBOS step.
113
+ * PipelineService passes this to `dbos.registerStep(...)` so tests can import
114
+ * and call it directly — exercising the SAME code path as production (C1).
115
+ */
122
116
  export function makeRunStep(deps) {
123
117
  const { loadRole, loadModelProfile, loadPipelineContext, appendEvent, appendCost, appendAttempt, runAgent } = deps;
124
118
  const clock = deps.now ?? (() => Date.now());
125
- return async function runStepImpl(runId, role, stepKey, stepInput, runnerMode) {
119
+ return async function runStepImpl(runId, role, stepKey, stepInput, resolvedRunnerId, executionProfile) {
126
120
  // 1. Load the canonical role (B1: role is NEVER mutated with #k).
127
121
  const loadedRole = await loadRole(role);
128
122
  // 2. Load the model profile from the role's modelLevel (B7: not hardcoded 'standard').
@@ -133,14 +127,65 @@ export function makeRunStep(deps) {
133
127
  const context = await buildContext(da, step, loadedRole);
134
128
  // 5. Deterministic, bounded attemptId (B2).
135
129
  const attemptId = `attempt_${fnv1a64Hex(`${runId}|${stepKey}`)}`;
136
- // 6. Apply durable runner mode (M1): live use role.runner; script force stub.
137
- // Missing/invalid mode coerces to 'script' (NEVER live) fail-safe.
138
- const effectiveRunner = runnerMode === 'live' ? loadedRole.runner : 'script';
130
+ // 6. Dispatch through the resolved per-role runner binding. Legacy direct callers may still
131
+ // pass runnerMode ('script'|'live') without a route; that fallback is intentionally private.
132
+ const effectiveRunner = dispatchRunnerId(resolveStepRunner(loadedRole.runner, resolvedRunnerId, executionProfile));
139
133
  const dispatchRole = { ...loadedRole, runner: effectiveRunner };
140
- // 7. Run the agent (timed for the attempt-row duration).
134
+ // 7. Run the agent (timed for the attempt-row duration). Runner-process failures are domain
135
+ // failures, not DBOS step failures: convert them to a blocking attempt so the workflow can
136
+ // park/fail the run row instead of leaving DBOS=ERROR with task_runs.status='ready'.
141
137
  const startedAt = clock();
142
- const result = await runAgent({ role: dispatchRole, profile, context, attemptId, step });
138
+ let result;
139
+ try {
140
+ result = await runAgent({ role: dispatchRole, profile, context, attemptId, step });
141
+ }
142
+ catch (err) {
143
+ const durationMs = Math.max(0, clock() - startedAt);
144
+ const reason = runnerFailureReason(err);
145
+ const artifactFields = processArtifactFields(artifactsFromRunAgentError(err));
146
+ const output = {
147
+ verdict: 'BLOCKER',
148
+ error: 'runner_failed',
149
+ role,
150
+ stepKey,
151
+ reason,
152
+ };
153
+ await appendEvent({
154
+ runId,
155
+ taskId: step.taskId,
156
+ stepId: step.id,
157
+ stepKey,
158
+ type: 'step_failed',
159
+ payload: { output, role, stepKey, attemptId },
160
+ });
161
+ try {
162
+ await appendAttempt({
163
+ runId,
164
+ stepId: step.id,
165
+ attemptId,
166
+ attemptNo: iterationOf(stepKey) + 1,
167
+ iteration: iterationOf(stepKey),
168
+ status: 'failed',
169
+ modelProfile: step.modelProfile,
170
+ verdict: 'BLOCKER',
171
+ inputTokens: 0,
172
+ outputTokens: 0,
173
+ costAmount: 0,
174
+ durationMs,
175
+ output,
176
+ lesson: reason,
177
+ error: reason,
178
+ ...artifactFields,
179
+ });
180
+ }
181
+ catch (attemptErr) {
182
+ console.warn(`[pipeline] failed-attempt row write failed for ${stepKey} (${attemptId}) — observability only. ` +
183
+ `${String(attemptErr)}`);
184
+ }
185
+ return { output, nextSteps: [], costs: [], needsHuman: true, lesson: reason };
186
+ }
143
187
  const durationMs = Math.max(0, clock() - startedAt);
188
+ const artifactFields = processArtifactFields(result.artifacts);
144
189
  // 8. Persist event to Revisium draft (idempotent — ROW_CONFLICT = no-op on replay).
145
190
  await appendEvent({
146
191
  runId,
@@ -165,7 +210,7 @@ export function makeRunStep(deps) {
165
210
  });
166
211
  }
167
212
  // 10. Persist the per-attempt observability row (0008 #4). Aggregate tokens/cost from the
168
- // cost records; extract the verdict; redact secrets on store. Idempotent by attemptId.
213
+ // cost records; surface the verdict; redact secrets on store. Idempotent by attemptId.
169
214
  // NON-FATAL: the attempts row is pure observability — a write failure (e.g. a control-plane
170
215
  // whose attempts schema predates 0008's fields, additionalProperties:false → VALIDATION_FAILURE)
171
216
  // must NEVER fail an otherwise-successful agent step. Log and continue.
@@ -181,13 +226,14 @@ export function makeRunStep(deps) {
181
226
  iteration: iterationOf(stepKey),
182
227
  status: result.needsHuman ? 'awaiting_approval' : 'succeeded',
183
228
  modelProfile: step.modelProfile,
184
- verdict: verdictOf(result),
229
+ verdict: verdictForAttemptRow(result),
185
230
  inputTokens,
186
231
  outputTokens,
187
232
  costAmount,
188
233
  durationMs,
189
234
  output: result.output,
190
235
  lesson: result.lesson,
236
+ ...artifactFields,
191
237
  });
192
238
  }
193
239
  catch (err) {
@@ -197,228 +243,13 @@ export function makeRunStep(deps) {
197
243
  return result;
198
244
  };
199
245
  }
200
- /**
201
- * makeDevelopTask DBOS-free factory for the developTask async function.
202
- *
203
- * Returns a plain async function with the same signature as the DBOS workflow.
204
- * Receives the (potentially DBOS-wrapped) `runStepFn` so tests pass the plain builder
205
- * while production passes the DBOS-registered step — the workflow body is IDENTICAL.
206
- * PipelineService passes this to `dbos.registerWorkflow(...)` (C1).
207
- */
208
- export function makeDevelopTask(runStepFn, deps) {
209
- const { appendEvent, awaitHuman, cancelRun, failRun, completeRun, loadRunTaskContext, loadPipelinePolicy, integrateFn, runStub, preflightFn } = deps;
210
- return async function developTaskImpl(runId, opts) {
211
- try {
212
- return await runDevelopTaskBody(runId, opts);
213
- }
214
- catch (err) {
215
- // TERMINAL step failure (0008 #2): a step threw and propagated to the workflow body. Before
216
- // re-throwing (so DBOS still records the workflow as ERROR — progress truth is preserved),
217
- // mark the Revisium run-row `failed` + write a run_failed event so the run-row stops lying.
218
- // failRun is idempotent (event-first, deterministic id) so DBOS recovery replays are no-ops.
219
- const reason = err instanceof Error ? err.message : String(err);
220
- try {
221
- await failRun(runId, reason);
222
- }
223
- catch (failErr) {
224
- // Never let bookkeeping mask the original failure — log and re-throw the ORIGINAL error.
225
- console.error(`[pipeline] failRun(${runId}) itself failed: ${String(failErr)}`);
226
- }
227
- throw err;
228
- }
229
- };
230
- async function runDevelopTaskBody(runId, opts) {
231
- // Coerce mode: missing/invalid → 'script' (NEVER 'live' — fail-safe, M1).
232
- const mode = opts?.runnerMode === 'live' ? 'live' : 'script';
233
- // B6: resolve task context once at workflow start (deterministic pure read).
234
- const { taskId, title, base } = await loadRunTaskContext(runId);
235
- // 0008 #5: pipeline limits are DATA (routing_policy), not hardcoded consts. Loaded once.
236
- const policy = await loadPipelinePolicy();
237
- // Run-level cost/token BUDGET (0008 #5): accrue each step's cost; a hard-stop blocks the run
238
- // (pipeline_blocked, reason 'budget') rather than letting an unbounded loop burn the budget.
239
- let spentUsd = 0;
240
- let spentTokens = 0;
241
- let iteration = 0;
242
- const accrue = (r) => {
243
- for (const c of r.costs) {
244
- if (!c)
245
- continue;
246
- spentUsd += c.costAmount ?? 0;
247
- spentTokens += (c.inputTokens ?? 0) + (c.outputTokens ?? 0);
248
- }
249
- };
250
- const overBudget = () => (policy.budgetUsd > 0 && spentUsd > policy.budgetUsd) ||
251
- (policy.budgetTokens > 0 && spentTokens > policy.budgetTokens);
252
- const blockBudget = async () => {
253
- await appendEvent({
254
- runId,
255
- taskId,
256
- stepId: '',
257
- stepKey: 'pipeline',
258
- type: 'pipeline_blocked',
259
- payload: {
260
- reason: 'budget',
261
- spentUsd,
262
- spentTokens,
263
- budgetUsd: policy.budgetUsd,
264
- budgetTokens: policy.budgetTokens,
265
- },
266
- });
267
- return { runId, blocked: true, iterations: iteration, verdict: 'BLOCKED', cancelled: false };
268
- };
269
- // runStep — wraps runStepFn to accrue cost so the budget guard sees every step's spend.
270
- const runStep = async (role, stepKey, input) => {
271
- const r = await runStepFn(runId, role, stepKey, input, mode);
272
- accrue(r);
273
- return r;
274
- };
275
- // B5/B7: live preflight — one memoized DBOS step, evaluated exactly once.
276
- // Skipped entirely on script/stub runs (no git, no cost, no mutation beyond fetch).
277
- if (mode === 'live') {
278
- const pf = await preflightFn(taskId, base);
279
- if ('needsHuman' in pf) {
280
- await appendEvent({
281
- runId,
282
- taskId,
283
- stepId: '',
284
- stepKey: 'pipeline',
285
- type: 'pipeline_blocked',
286
- payload: { reason: 'preflight', lesson: pf.lesson },
287
- });
288
- return { runId, blocked: true, iterations: 0, verdict: 'BLOCKED', cancelled: false };
289
- }
290
- }
291
- // architect step
292
- const architectResult = await runStep('architect', 'architect', { phase: 'plan' });
293
- if (overBudget())
294
- return await blockBudget();
295
- // ── PLAN GATE (after architect, before developer) ──────────────────────────
296
- const planDecision = await awaitHuman(runId, 'plan', 'Plan approval', architectResult.output);
297
- if (planDecision.decision === 'reject') {
298
- await appendEvent({
299
- runId,
300
- taskId: '',
301
- stepId: '',
302
- stepKey: 'gate:plan',
303
- type: 'gate_rejected',
304
- payload: { topic: 'plan' },
305
- });
306
- await cancelRun(runId, { actor: 'pipeline', source: 'plan-gate-reject' });
307
- return { runId, blocked: false, iterations: 0, verdict: 'CANCELLED', cancelled: true };
308
- }
309
- // ── end PLAN GATE ──────────────────────────────────────────────────────────
310
- // developer step (first pass)
311
- let developerResult = await runStep('developer', 'developer', {
312
- phase: 'implement',
313
- from: architectResult.output,
314
- });
315
- if (overBudget())
316
- return await blockBudget();
317
- // reviewer step (first pass)
318
- let reviewResult = await runStep('reviewer', 'reviewer', {
319
- phase: 'review',
320
- from: developerResult.output,
321
- });
322
- if (overBudget())
323
- return await blockBudget();
324
- // bounded reviewer→developer loop (E5, E6); iteration cap is DATA (0008 #5).
325
- // Budget is checked after EVERY step so a hard-stop fires before the NEXT agent call burns spend.
326
- while (isBlocking(verdictOf(reviewResult)) && iteration < policy.maxReviewIterations) {
327
- iteration++;
328
- developerResult = await runStep('developer', `developer#${iteration}`, {
329
- phase: 'rework',
330
- feedback: reviewResult.output,
331
- });
332
- if (overBudget())
333
- return await blockBudget();
334
- reviewResult = await runStep('reviewer', `reviewer#${iteration}`, {
335
- phase: 'review',
336
- from: developerResult.output,
337
- });
338
- if (overBudget())
339
- return await blockBudget();
340
- }
341
- // Cap exhausted — still blocking: write pipeline_blocked and stop (E6).
342
- if (isBlocking(verdictOf(reviewResult))) {
343
- await appendEvent({
344
- runId,
345
- taskId: '',
346
- stepId: '',
347
- stepKey: 'pipeline',
348
- type: 'pipeline_blocked',
349
- payload: { lastVerdict: verdictOf(reviewResult), iterations: iteration },
350
- });
351
- return {
352
- runId,
353
- blocked: true,
354
- iterations: iteration,
355
- verdict: verdictOf(reviewResult),
356
- cancelled: false,
357
- };
358
- }
359
- // B3 — mode-gated integrator step (core Round-4 fix).
360
- // live → DBOS-registered integrateFn (real git/gh, resumable).
361
- // script → runStub (pure, zero external effects — no git, no gh, no fs).
362
- const integratorInput = { runId, taskId, title, base };
363
- const integratorResult = mode === 'live'
364
- ? await integrateFn(integratorInput)
365
- : runStub(integratorInput);
366
- // On integrator blocked (live only — nothing to integrate / ambiguous PR / missing remote)
367
- if ('needsHuman' in integratorResult) {
368
- await appendEvent({
369
- runId,
370
- taskId,
371
- stepId: '',
372
- stepKey: 'pipeline',
373
- type: 'pipeline_blocked',
374
- payload: { reason: 'integrate', lesson: integratorResult.lesson },
375
- });
376
- return { runId, blocked: true, iterations: iteration, verdict: 'BLOCKED', cancelled: false };
377
- }
378
- // Observability MINOR: integrate_succeeded event (mirrors step_succeeded at makeRunStep).
379
- await appendEvent({
380
- runId,
381
- taskId,
382
- stepId: '',
383
- stepKey: 'integrator',
384
- type: 'integrate_succeeded',
385
- payload: {
386
- prUrl: integratorResult.prUrl,
387
- branch: integratorResult.branch,
388
- prNumber: integratorResult.prNumber,
389
- },
390
- });
391
- // ── MERGE GATE (after integrator) ──────────────────────────────────────────
392
- // Real prUrl from the integrator (live) or 'stub://pr/placeholder' (script).
393
- const prUrl = integratorResult.prUrl ?? 'stub://pr/placeholder';
394
- const mergeDecision = await awaitHuman(runId, 'merge', 'Merge approval', { prUrl });
395
- if (mergeDecision.decision === 'reject') {
396
- await appendEvent({
397
- runId,
398
- taskId: '',
399
- stepId: '',
400
- stepKey: 'gate:merge',
401
- type: 'gate_rejected',
402
- payload: { topic: 'merge' },
403
- });
404
- }
405
- // ── end MERGE GATE ─────────────────────────────────────────────────────────
406
- const finalVerdict = verdictOf(reviewResult);
407
- await completeRun(runId, {
408
- actor: 'pipeline',
409
- source: mergeDecision.decision === 'reject' ? 'merge-gate-reject' : 'merge-gate-approve',
410
- verdict: finalVerdict,
411
- iterations: iteration,
412
- });
413
- return {
414
- runId,
415
- blocked: false,
416
- iterations: iteration,
417
- verdict: finalVerdict,
418
- cancelled: false,
419
- };
420
- }
421
- ;
246
+ function resolveStepRunner(roleRunner, resolvedRunnerId, executionProfile) {
247
+ if (resolvedRunnerId && resolvedRunnerId !== 'live')
248
+ return resolvedRunnerId;
249
+ if (resolvedRunnerId === 'script')
250
+ return 'script';
251
+ const profileResolved = executionProfile?.runnerOverrides[roleRunner];
252
+ return profileResolved || roleRunner;
422
253
  }
423
254
  let PipelineService = class PipelineService {
424
255
  dbos;
@@ -428,7 +259,12 @@ let PipelineService = class PipelineService {
428
259
  integratorService;
429
260
  /** Registered DBOS-wrapped function types. */
430
261
  runStepFn;
431
- developTaskFn;
262
+ /**
263
+ * The DATA-DRIVEN workflow (plan 0015) — the SOLE pipeline engine. Selection routes EVERY pipeline
264
+ * here (TaskControlPlaneApiService); the engine executes the pinned `pipeline-core` graph on real
265
+ * DBOS, reusing the SAME runStep DBOS step + awaitHuman + integrator + live preflight.
266
+ */
267
+ dataDrivenTaskFn;
432
268
  /** The single run-agent used by all steps. */
433
269
  runAgent;
434
270
  constructor(dbos, rolesService, runService, inboxService, integratorService, runAgentToken) {
@@ -460,36 +296,35 @@ let PipelineService = class PipelineService {
460
296
  awaitDecision: (topic) => this.dbos.awaitDecision(topic),
461
297
  appendEvent: stepDeps.appendEvent,
462
298
  });
463
- const workflowDeps = {
299
+ // Register the DATA-DRIVEN workflow (plan 0015) using the production builder with the DBOS-wrapped
300
+ // step. Reuses the SAME runStep + awaitHuman + integrator + preflight so capabilities resolve
301
+ // through the existing runner machinery (no duplicate dispatch logic, no role-ids in the engine).
302
+ const dataDrivenDeps = {
464
303
  appendEvent: stepDeps.appendEvent,
304
+ appendRunOutput: this.runService.appendRunOutput.bind(this.runService),
465
305
  awaitHuman,
466
- cancelRun: (runId, cancelOpts) => this.runService.cancelRun(runId, cancelOpts),
467
- failRun: (runId, reason) => this.runService.failRun(runId, reason),
468
306
  completeRun: (runId, completeOpts) => this.runService.completeRun(runId, completeOpts),
307
+ failRun: (runId, reason) => this.runService.failRun(runId, reason),
308
+ blockRun: (runId, blockOpts) => this.runService.blockRun(runId, blockOpts),
469
309
  loadRunTaskContext: this.runService.loadRunTaskContext.bind(this.runService),
470
- loadPipelinePolicy: this.rolesService.loadPipelinePolicy.bind(this.rolesService),
471
310
  integrateFn,
472
311
  runStub: this.integratorService.runStub,
473
312
  preflightFn,
474
313
  };
475
- // Register the workflow using the production builder with the DBOS-wrapped step.
476
- this.developTaskFn = this.dbos.registerWorkflow('PipelineService.developTask', makeDevelopTask(this.runStepFn, workflowDeps));
314
+ this.dataDrivenTaskFn = this.dbos.registerWorkflow('PipelineService.dataDrivenTask', makeDataDrivenTask(this.runStepFn, dataDrivenDeps));
477
315
  // Register the WorkflowQueue (idempotent — Map-guarded in DbosService).
478
316
  this.dbos.registerQueue(DEV_TASKS_QUEUE, { concurrency: DEV_TASKS_CONCURRENCY });
479
317
  }
480
318
  /**
481
- * Enqueue the developTask workflow for the given runId.
482
- *
483
- * Idempotent by workflowID=runId: re-starting the same runId returns the existing handle.
484
- * opts.runnerMode is required and forwarded as a durable workflow argument (M1/B11) —
485
- * persisted in the DBOS workflow input row, re-supplied verbatim on crash recovery.
319
+ * Enqueue the DATA-DRIVEN workflow for the given runId (plan 0015).
486
320
  *
487
- * B10: mode only takes effect on the FIRST start (idempotent-by-runId);
488
- * a second `run start` on an already-started run returns the existing handle
489
- * and does NOT switch the runner. To switch, create a NEW run.
321
+ * Idempotent by workflowID=runId: re-starting the same runId returns the existing handle. The pinned,
322
+ * validated template is passed as a DBOS workflow ARGUMENT, so it is durable and replayed verbatim on
323
+ * recovery (the MVP pin a Revisium-revision pin is a later upgrade per §11/§14 Q4). Route role
324
+ * bindings are persisted in the DBOS workflow input row and are authoritative for runner dispatch.
490
325
  */
491
- startDevelopTask(runId, opts) {
492
- return this.dbos.startWorkflowOn(this.developTaskFn, runId, DEV_TASKS_QUEUE, runId, opts);
326
+ startDataDrivenTask(runId, opts) {
327
+ return this.dbos.startWorkflowOn(this.dataDrivenTaskFn, runId, DEV_TASKS_QUEUE, runId, opts);
493
328
  }
494
329
  };
495
330
  PipelineService = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"develop-task.workflow.js","sourceRoot":"","sources":["../../src/pipeline/develop-task.workflow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"develop-task.workflow.js","sourceRoot":"","sources":["../../src/pipeline/develop-task.workflow.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ import { RevisiumModule } from '../revisium/revisium.module.js';
10
10
  import { RunnerModule } from '../runners/runner.module.js';
11
11
  import { PipelineService } from './develop-task.workflow.js';
12
12
  /**
13
- * PipelineModule — registers PipelineService, which registers the developTask
13
+ * PipelineModule — registers PipelineService, which registers the data-driven pipeline
14
14
  * workflow + runStep step + dev-tasks queue with DBOS in its constructor.
15
15
  *
16
16
  * Imports RunnerModule so RUN_AGENT + IntegratorService are injectable.