@manehorizons/cadence-core 1.6.1 → 1.8.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 (103) hide show
  1. package/dist/cli/commands/build.d.ts.map +1 -1
  2. package/dist/cli/commands/build.js +10 -77
  3. package/dist/cli/commands/build.js.map +1 -1
  4. package/dist/cli/commands/doctor.d.ts +3 -0
  5. package/dist/cli/commands/doctor.d.ts.map +1 -0
  6. package/dist/cli/commands/doctor.js +44 -0
  7. package/dist/cli/commands/doctor.js.map +1 -0
  8. package/dist/cli/commands/draft-new.d.ts.map +1 -1
  9. package/dist/cli/commands/draft-new.js +11 -97
  10. package/dist/cli/commands/draft-new.js.map +1 -1
  11. package/dist/cli/commands/draft.d.ts.map +1 -1
  12. package/dist/cli/commands/draft.js +15 -104
  13. package/dist/cli/commands/draft.js.map +1 -1
  14. package/dist/cli/commands/mcp.d.ts +3 -0
  15. package/dist/cli/commands/mcp.d.ts.map +1 -0
  16. package/dist/cli/commands/mcp.js +35 -0
  17. package/dist/cli/commands/mcp.js.map +1 -0
  18. package/dist/cli/commands/progress.d.ts.map +1 -1
  19. package/dist/cli/commands/progress.js +5 -13
  20. package/dist/cli/commands/progress.js.map +1 -1
  21. package/dist/cli/commands/recommend.d.ts.map +1 -1
  22. package/dist/cli/commands/recommend.js +5 -15
  23. package/dist/cli/commands/recommend.js.map +1 -1
  24. package/dist/cli/commands/recommendation.d.ts.map +1 -1
  25. package/dist/cli/commands/recommendation.js +52 -1
  26. package/dist/cli/commands/recommendation.js.map +1 -1
  27. package/dist/cli/commands/settle.d.ts.map +1 -1
  28. package/dist/cli/commands/settle.js +5 -442
  29. package/dist/cli/commands/settle.js.map +1 -1
  30. package/dist/cli/commands/spec.d.ts.map +1 -1
  31. package/dist/cli/commands/spec.js +19 -197
  32. package/dist/cli/commands/spec.js.map +1 -1
  33. package/dist/cli/commands/status.d.ts.map +1 -1
  34. package/dist/cli/commands/status.js +5 -14
  35. package/dist/cli/commands/status.js.map +1 -1
  36. package/dist/cli/register.d.ts.map +1 -1
  37. package/dist/cli/register.js +4 -0
  38. package/dist/cli/register.js.map +1 -1
  39. package/dist/doctor/model.d.ts +27 -0
  40. package/dist/doctor/model.d.ts.map +1 -0
  41. package/dist/doctor/model.js +10 -0
  42. package/dist/doctor/model.js.map +1 -0
  43. package/dist/doctor/run.d.ts +3 -0
  44. package/dist/doctor/run.d.ts.map +1 -0
  45. package/dist/doctor/run.js +141 -0
  46. package/dist/doctor/run.js.map +1 -0
  47. package/dist/intelligence/store/recommendations.d.ts +7 -1
  48. package/dist/intelligence/store/recommendations.d.ts.map +1 -1
  49. package/dist/intelligence/store/recommendations.js +53 -0
  50. package/dist/intelligence/store/recommendations.js.map +1 -1
  51. package/dist/mcp/server.d.ts +12 -0
  52. package/dist/mcp/server.d.ts.map +1 -0
  53. package/dist/mcp/server.js +42 -0
  54. package/dist/mcp/server.js.map +1 -0
  55. package/dist/mcp/tools.d.ts +20 -0
  56. package/dist/mcp/tools.d.ts.map +1 -0
  57. package/dist/mcp/tools.js +189 -0
  58. package/dist/mcp/tools.js.map +1 -0
  59. package/dist/services/build-task.d.ts +12 -0
  60. package/dist/services/build-task.d.ts.map +1 -0
  61. package/dist/services/build-task.js +78 -0
  62. package/dist/services/build-task.js.map +1 -0
  63. package/dist/services/draft-approve.d.ts +14 -0
  64. package/dist/services/draft-approve.d.ts.map +1 -0
  65. package/dist/services/draft-approve.js +74 -0
  66. package/dist/services/draft-approve.js.map +1 -0
  67. package/dist/services/draft-check.d.ts +10 -0
  68. package/dist/services/draft-check.d.ts.map +1 -0
  69. package/dist/services/draft-check.js +47 -0
  70. package/dist/services/draft-check.js.map +1 -0
  71. package/dist/services/draft-new.d.ts +14 -0
  72. package/dist/services/draft-new.d.ts.map +1 -0
  73. package/dist/services/draft-new.js +98 -0
  74. package/dist/services/draft-new.js.map +1 -0
  75. package/dist/services/io.d.ts +39 -0
  76. package/dist/services/io.d.ts.map +1 -0
  77. package/dist/services/io.js +36 -0
  78. package/dist/services/io.js.map +1 -0
  79. package/dist/services/progress.d.ts +7 -0
  80. package/dist/services/progress.d.ts.map +1 -0
  81. package/dist/services/progress.js +21 -0
  82. package/dist/services/progress.js.map +1 -0
  83. package/dist/services/recommend.d.ts +9 -0
  84. package/dist/services/recommend.d.ts.map +1 -0
  85. package/dist/services/recommend.js +23 -0
  86. package/dist/services/recommend.js.map +1 -0
  87. package/dist/services/settle.d.ts +24 -0
  88. package/dist/services/settle.d.ts.map +1 -0
  89. package/dist/services/settle.js +366 -0
  90. package/dist/services/settle.js.map +1 -0
  91. package/dist/services/spec-approve.d.ts +11 -0
  92. package/dist/services/spec-approve.d.ts.map +1 -0
  93. package/dist/services/spec-approve.js +133 -0
  94. package/dist/services/spec-approve.js.map +1 -0
  95. package/dist/services/spec-new.d.ts +9 -0
  96. package/dist/services/spec-new.d.ts.map +1 -0
  97. package/dist/services/spec-new.js +62 -0
  98. package/dist/services/spec-new.js.map +1 -0
  99. package/dist/services/status.d.ts +9 -0
  100. package/dist/services/status.d.ts.map +1 -0
  101. package/dist/services/status.js +22 -0
  102. package/dist/services/status.js.map +1 -0
  103. package/package.json +3 -2
@@ -1 +1 @@
1
- {"version":3,"file":"recommendation.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/recommendation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4GzC,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2VpE"}
1
+ {"version":3,"file":"recommendation.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/recommendation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmHzC,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+ZpE"}
@@ -1,7 +1,9 @@
1
1
  import { RecommendationDecayStateZ, RecommendationPriorityZ, RecommendationReadinessZ, RecommendationStatusZ, } from '@manehorizons/cadence-types';
2
2
  import { readAssumptionLedger, readEvidenceLedger, readIntelligenceDecisionLedger, readRecommendationLedger, } from '../../intelligence/store/io.js';
3
- import { addRecommendation, runRecommendationTransition, } from '../../intelligence/store/recommendations.js';
3
+ import { addRecommendation, runRecommendationTransition, runRecommendationPromotion, } from '../../intelligence/store/recommendations.js';
4
4
  import { renderRecommendationDetail } from '../../intelligence/render-recommendation-detail.js';
5
+ // Statuses settable via `promote`. `converted` is excluded — owned by `convert`.
6
+ const PROMOTE_STATUSES = RecommendationStatusZ.options.filter((s) => s !== 'converted');
5
7
  function csv(value) {
6
8
  if (!value)
7
9
  return [];
@@ -357,5 +359,54 @@ export function registerRecommendationCommand(program) {
357
359
  process.exitCode = 1;
358
360
  }
359
361
  });
362
+ cmd
363
+ .command('promote <recId>')
364
+ .description('Advance a recommendation’s status and/or readiness (makes `milestone propose` reachable)')
365
+ .option('--status <status>', `New status. One of: ${PROMOTE_STATUSES.join(' | ')}`)
366
+ .option('--readiness <readiness>', `New readiness. One of: ${RecommendationReadinessZ.options.join(' | ')}`)
367
+ .action(async (recId, opts) => {
368
+ try {
369
+ const changes = {};
370
+ if (opts.status !== undefined) {
371
+ if (!PROMOTE_STATUSES.includes(opts.status)) {
372
+ process.stderr.write(`recommendation promote: invalid --status "${opts.status}". Allowed: ${PROMOTE_STATUSES.join(' | ')}\n`);
373
+ process.exitCode = 1;
374
+ return;
375
+ }
376
+ changes.status = opts.status;
377
+ }
378
+ if (opts.readiness !== undefined) {
379
+ const parsed = RecommendationReadinessZ.safeParse(opts.readiness);
380
+ if (!parsed.success) {
381
+ process.stderr.write(`recommendation promote: invalid --readiness "${opts.readiness}". Allowed: ${RecommendationReadinessZ.options.join(' | ')}\n`);
382
+ process.exitCode = 1;
383
+ return;
384
+ }
385
+ changes.readiness = parsed.data;
386
+ }
387
+ if (changes.status === undefined && changes.readiness === undefined) {
388
+ process.stderr.write('recommendation promote: provide --status and/or --readiness\n');
389
+ process.exitCode = 1;
390
+ return;
391
+ }
392
+ const res = await runRecommendationPromotion(process.cwd(), recId, changes);
393
+ if (!res.ok) {
394
+ process.stderr.write(`recommendation promote refused: ${res.error}\n`);
395
+ process.exitCode = 1;
396
+ return;
397
+ }
398
+ const parts = [
399
+ changes.status ? `status=${changes.status}` : null,
400
+ changes.readiness ? `readiness=${changes.readiness}` : null,
401
+ ]
402
+ .filter(Boolean)
403
+ .join(', ');
404
+ process.stdout.write(`recommendation ${recId} promoted (${parts})\n`);
405
+ }
406
+ catch (err) {
407
+ process.stderr.write(`recommendation promote failed: ${err instanceof Error ? err.message : String(err)}\n`);
408
+ process.exitCode = 1;
409
+ }
410
+ });
360
411
  }
361
412
  //# sourceMappingURL=recommendation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"recommendation.js","sourceRoot":"","sources":["../../../src/cli/commands/recommendation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recommendation.js","sourceRoot":"","sources":["../../../src/cli/commands/recommendation.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"settle.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/settle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiDzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwe5D"}
1
+ {"version":3,"file":"settle.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/settle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6D5D"}
@@ -1,40 +1,5 @@
1
- import { execSync } from 'node:child_process';
2
- import { join } from 'node:path';
3
- import { readFile, stat } from 'node:fs/promises';
4
- import { existsSync } from 'node:fs';
5
- import { TaskStatusZ } from '@manehorizons/cadence-types';
6
- import { parseDraftMd } from '../../parse/draft-parser.js';
7
- import { renderSummaryMd } from '../../parse/summary-writer.js';
8
- import { SimpleStateBackend } from '../../state/simple.js';
9
- import { atomicWriteJSON, atomicWriteText } from '../../state/atomic-write.js';
10
- import { LoopViolationError } from '../../errors.js';
11
- import { deriveAcResults } from '../../status.js';
12
- import { loadConfig } from '../../config/loader.js';
13
- import { effectiveGateSet } from '../../gates/engine.js';
14
- import { scanTestCoverage } from '../../verify/coverage.js';
15
- import { selectVerifier } from '../../verify/factory.js';
16
- import { resolveEffectiveProvider, MOCK_FALLBACK_BANNER, } from '../../verify/verifier-factory.js';
17
- import { runSettleGates } from '../../gates/registry.js';
18
- import { runSkillAuditCheck } from '../../checks/skill-audit.js';
19
- import { ScriptedPrompter, StdinPrompter } from '../../verify/prompter.js';
20
- import { selectNotifier } from '../../notify/factory.js';
21
- import { collectAnomalies } from '../../notify/collect.js';
22
- import { emitLoopViolation } from '../../notify/loop-violation.js';
23
- import { selectCodeReviewVerifier } from '../../verify/code-review-factory.js';
24
- import { emitCodeReviewHigh, emitCodeReviewUnconverged } from '../../notify/code-review.js';
25
- import { emitSkillAuditMiss } from '../../notify/skill-audit.js';
26
- import { selectSecurityAuditVerifier } from '../../verify/security-audit-factory.js';
27
- function parseAcArg(arg) {
28
- const eqIdx = arg.indexOf('=');
29
- if (eqIdx === -1)
30
- throw new Error(`bad --ac syntax: ${arg}`);
31
- const id = arg.slice(0, eqIdx);
32
- const rest = arg.slice(eqIdx + 1);
33
- const colonIdx = rest.indexOf(':');
34
- const verdict = colonIdx === -1 ? rest : rest.slice(0, colonIdx);
35
- const note = colonIdx === -1 ? undefined : rest.slice(colonIdx + 1).trim();
36
- return { id, pass: verdict === 'pass', ...(note ? { note } : {}) };
37
- }
1
+ import { settleService } from '../../services/settle.js';
2
+ import { processIO } from '../../services/io.js';
38
3
  export function registerSettleCommand(program) {
39
4
  const cmd = program.command('settle').description('Close the loop');
40
5
  cmd
@@ -56,411 +21,9 @@ export function registerSettleCommand(program) {
56
21
  .option('--allow-security-audit-failure', 'do not refuse on CRITICAL security-audit findings; record them in SUMMARY and settle anyway (Phase 25.2)')
57
22
  .option('--allow-skill-audit-miss', 'do not refuse when required skills were not invoked; emit a warn anomaly (bypassed:true) and settle anyway (Phase 34.1)')
58
23
  .action(async (opts) => {
59
- try {
60
- const cwd = process.cwd();
61
- const backend = new SimpleStateBackend(cwd);
62
- const state = await backend.readState();
63
- if (state.loopPosition !== 'BUILD' || !state.activeDraft || !state.activePhase) {
64
- throw new LoopViolationError('settle run requires loopPosition=BUILD with an active draft', { expected: 'BUILD', actual: state.loopPosition });
65
- }
66
- const draftPath = join(cwd, '.cadence/phases', state.activePhase, `${state.activeDraft}-DRAFT.md`);
67
- const draft = parseDraftMd(await readFile(draftPath, 'utf8'));
68
- const progPath = join(cwd, '.cadence/phases', state.activePhase, `${state.activeDraft}-PROGRESS.json`);
69
- const progress = existsSync(progPath)
70
- ? JSON.parse(await readFile(progPath, 'utf8'))
71
- : { draftId: state.activeDraft, tasks: {} };
72
- const explicit = (opts.ac ?? []).map(parseAcArg);
73
- const explicitIds = new Set(explicit.map((a) => a.id));
74
- // Test-coverage gate: fires when the effective gate set includes
75
- // 'test-coverage'. Skipped for explicitly-overridden ACs. The flag
76
- // --allow-missing-coverage is a per-invocation bypass.
77
- let cadenceConfig = null;
78
- try {
79
- cadenceConfig = await loadConfig(cwd);
80
- }
81
- catch {
82
- cadenceConfig = null;
83
- }
84
- const gateSet = effectiveGateSet(state, cadenceConfig, draft);
85
- // Onboarding hardening (phase 48): --deep asks for real verification.
86
- // If the effective verifier provider is `mock` (the shipped default —
87
- // `cadence init` writes verifier.provider='mock'), the verdicts are
88
- // deterministic fakes. Warn loudly so the operator isn't handed false
89
- // confidence. A configured real provider that downgrades to mock for a
90
- // missing key already prints the factory's own "falling back to mock"
91
- // warning, so that path is left to the factory.
92
- if (opts.deep &&
93
- resolveEffectiveProvider(cadenceConfig?.verifier).provider === 'mock') {
94
- process.stderr.write(MOCK_FALLBACK_BANNER + '\n');
95
- }
96
- // DESIGN.md §4 M2 — soft cap on auto × complex. Refuse here, before
97
- // any coverage / interactive / deep work, so wasted effort is avoided.
98
- // Phase 21.1 wires the locked decision into a live check.
99
- if (gateSet.softCap && !opts.allowAutoComplex) {
100
- process.stderr.write('settle run refused: auto × complex is soft-capped (DESIGN.md §4 M2). Pass --allow-auto-complex to override.\n');
101
- process.exitCode = 1;
102
- return;
103
- }
104
- if (gateSet.softCap && opts.allowAutoComplex) {
105
- process.stderr.write('settle: --allow-auto-complex set; proceeding past soft cap (auto × complex).\n');
106
- }
107
- const touchedFiles = Array.from(new Set(draft.tasks.flatMap((t) => t.files)));
108
- let coverageMemo;
109
- let draftMtimeMemo;
110
- // Lazily select the deep verifier on first use. selectVerifier emits a
111
- // stderr fallback warning when a non-mock provider lacks credentials;
112
- // the pre-extraction code only ran it inside the deep-verify block, so
113
- // selecting eagerly here would surface that warning on runs where
114
- // deep-verify never fires. Defer it to keep settle bit-identical.
115
- let deepVerifierMemo;
116
- let codeReviewVerifierMemo;
117
- let securityAuditVerifierMemo;
118
- let diffMemo;
119
- const codeReviewSidecarPath = join(cwd, '.cadence/phases', state.activePhase, `${state.activeDraft}-CODE-REVIEW.json`);
120
- const ctx = {
121
- cwd,
122
- state,
123
- draft,
124
- progress,
125
- config: cadenceConfig,
126
- gateSet,
127
- opts: {
128
- ...(opts.force !== undefined ? { force: opts.force } : {}),
129
- ...(opts.auto !== undefined ? { auto: opts.auto } : {}),
130
- ...(opts.deep !== undefined ? { deep: opts.deep } : {}),
131
- ...(opts.allowMissingCoverage !== undefined
132
- ? { allowMissingCoverage: opts.allowMissingCoverage }
133
- : {}),
134
- ...(opts.allowVerifierFailure !== undefined
135
- ? { allowVerifierFailure: opts.allowVerifierFailure }
136
- : {}),
137
- ...(opts.allowStaleDraft !== undefined
138
- ? { allowStaleDraft: opts.allowStaleDraft }
139
- : {}),
140
- ...(opts.allowOpenTasks !== undefined
141
- ? { allowOpenTasks: opts.allowOpenTasks }
142
- : {}),
143
- ...(opts.allowFailingBuild !== undefined
144
- ? { allowFailingBuild: opts.allowFailingBuild }
145
- : {}),
146
- ...(opts.interactive !== undefined
147
- ? { interactive: opts.interactive }
148
- : {}),
149
- ...(opts.allowCodeReviewFailure !== undefined
150
- ? { allowCodeReviewFailure: opts.allowCodeReviewFailure }
151
- : {}),
152
- ...(opts.allowSecurityAuditFailure !== undefined
153
- ? { allowSecurityAuditFailure: opts.allowSecurityAuditFailure }
154
- : {}),
155
- ...(opts.allowSkillAuditMiss !== undefined
156
- ? { allowSkillAuditMiss: opts.allowSkillAuditMiss }
157
- : {}),
158
- },
159
- explicitIds,
160
- touchedFiles,
161
- coverage: () => {
162
- if (!coverageMemo) {
163
- const globs = cadenceConfig?.verification?.testGlobs;
164
- coverageMemo = scanTestCoverage(cwd, globs ? { globs } : {});
165
- }
166
- return coverageMemo;
167
- },
168
- draftMtimeMs: () => {
169
- if (!draftMtimeMemo) {
170
- draftMtimeMemo = stat(draftPath)
171
- .then((s) => s.mtime.getTime())
172
- .catch(() => null);
173
- }
174
- return draftMtimeMemo;
175
- },
176
- diff: () => {
177
- if (diffMemo === undefined) {
178
- diffMemo = collectDiffForCodeReview(cwd, touchedFiles);
179
- }
180
- return diffMemo;
181
- },
182
- verifiers: {
183
- deep: {
184
- verify: (input) => {
185
- if (!deepVerifierMemo) {
186
- deepVerifierMemo = selectVerifier(cadenceConfig);
187
- }
188
- return deepVerifierMemo.verify(input);
189
- },
190
- },
191
- codeReview: {
192
- verify: (input) => {
193
- if (!codeReviewVerifierMemo) {
194
- codeReviewVerifierMemo = selectCodeReviewVerifier(cadenceConfig);
195
- }
196
- return codeReviewVerifierMemo.verify(input);
197
- },
198
- },
199
- securityAudit: {
200
- verify: (input) => {
201
- if (!securityAuditVerifierMemo) {
202
- securityAuditVerifierMemo = selectSecurityAuditVerifier(cadenceConfig);
203
- }
204
- return securityAuditVerifierMemo.verify(input);
205
- },
206
- },
207
- },
208
- emit: {
209
- anomalies: async (events) => {
210
- void events;
211
- },
212
- codeReviewHigh: (findings, info) => emitCodeReviewHigh(selectNotifier(cadenceConfig), findings, info),
213
- codeReviewUnconverged: (info) => emitCodeReviewUnconverged(selectNotifier(cadenceConfig), info),
214
- skillAuditMiss: (payload) => emitSkillAuditMiss(selectNotifier(cadenceConfig), payload),
215
- },
216
- runner: {
217
- test: async () => {
218
- const command = cadenceConfig?.verification?.testCommand;
219
- if (!command)
220
- return { ran: false, ok: true };
221
- try {
222
- execSync(command, { cwd, stdio: 'ignore' });
223
- return { ran: true, ok: true, exitCode: 0, command };
224
- }
225
- catch (e) {
226
- const status = e.status;
227
- const exitCode = typeof status === 'number' ? status : 1;
228
- return { ran: true, ok: false, exitCode, command };
229
- }
230
- },
231
- },
232
- prompter: {
233
- create: () => {
234
- // Test seam: CADENCE_PROMPTER_SCRIPT (newline-separated answers)
235
- // drives the walker without a real TTY. Else StdinPrompter, which
236
- // throws on a non-TTY (the gate turns that into a refusal).
237
- const scripted = process.env.CADENCE_PROMPTER_SCRIPT;
238
- if (scripted !== undefined) {
239
- const answers = scripted.split('\n').filter((s) => s.length > 0 || s === '');
240
- return new ScriptedPrompter(answers);
241
- }
242
- return new StdinPrompter();
243
- },
244
- },
245
- codeReviewSidecar: {
246
- read: async () => {
247
- // Absent / corrupt / legacy-without-`attempts` → {0, []}.
248
- if (!existsSync(codeReviewSidecarPath)) {
249
- return { attemptsSoFar: 0, history: [] };
250
- }
251
- try {
252
- const prior = JSON.parse(await readFile(codeReviewSidecarPath, 'utf8'));
253
- return {
254
- attemptsSoFar: typeof prior.attempts === 'number' ? prior.attempts : 0,
255
- history: Array.isArray(prior.history) ? prior.history : [],
256
- };
257
- }
258
- catch {
259
- return { attemptsSoFar: 0, history: [] };
260
- }
261
- },
262
- write: (text) => atomicWriteText(codeReviewSidecarPath, text),
263
- },
264
- io: { err: (s) => process.stderr.write(s) },
265
- };
266
- // Phase 44.1 — the settle gate sequence is now engine-driven: the
267
- // registry's GATE_ORDER (≠ matrix order) drives dispatch, each gate
268
- // membership-guarded (or self-guarded for deep-verify/interactive-verdict),
269
- // first-refuse halts. Replaces the former hand-wired if-includes ladder;
270
- // bit-identical. checks/ modules (skill-audit, boundary) + anomaly-notify
271
- // stay explicitly dispatched below, outside the registry.
272
- const { acc, refused } = await runSettleGates(ctx);
273
- if (refused) {
274
- process.exitCode = 1;
275
- return;
276
- }
277
- const coverageBypassed = acc.flags.coverageBypassed === true;
278
- // `interactiveRequested` is read by the AC-merge finalizer below (not by
279
- // gate dispatch), so it stays a settle local — the documented seam
280
- // between the interactive gate and the finalizer. Mirrors the gate's own
281
- // --interactive OR membership('interactive-verdict') trigger.
282
- const interactiveRequested = opts.interactive === true ||
283
- (opts.interactive !== false &&
284
- gateSet.gates.includes('interactive-verdict'));
285
- const interactiveVerify = acc.interactiveVerify;
286
- const deepVerify = acc.deepVerify;
287
- const verifierFailure = acc.flags.verifierFailure;
288
- const codeReviewFindings = acc.codeReview;
289
- const securityAuditFindings = acc.securityAudit;
290
- // ACs covered by an explicit `--ac` OR an interactive verdict are
291
- // excluded from auto-derivation refusal (the user verdicted them).
292
- const interactiveIds = new Set(interactiveVerify ? Object.keys(interactiveVerify) : []);
293
- const userVerdictedIds = new Set([...explicitIds, ...interactiveIds]);
294
- let acResults = [...explicit];
295
- // Merge interactive verdicts into acResults (override structural derivation).
296
- if (interactiveVerify) {
297
- for (const [id, v] of Object.entries(interactiveVerify)) {
298
- if (explicitIds.has(id))
299
- continue; // explicit --ac wins over interactive
300
- acResults.push({
301
- id,
302
- pass: v.verdict === 'pass',
303
- ...(v.note ? { note: v.note } : {}),
304
- });
305
- }
306
- }
307
- // Phase 29.8 T4 — when the interactive walker ran, ACs the user
308
- // skipped or never verdicted must still fall through to structural
309
- // derivation (the walker promises "Skip falls through to other
310
- // gates"). Previously this only happened under `--auto`, so
311
- // `settle run --interactive` alone silently settled incomplete ACs.
312
- if (opts.auto || interactiveRequested) {
313
- const derived = deriveAcResults(draft, progress);
314
- const offenders = derived.filter((d) => d.verdict !== 'pass' && !userVerdictedIds.has(d.id));
315
- if (offenders.length > 0 && !opts.force) {
316
- for (const o of offenders) {
317
- const tasks = o.blockers.length > 0 ? ` (tasks: ${o.blockers.join(', ')})` : '';
318
- process.stderr.write(`auto: ${o.id} ${o.verdict}${tasks}\n`);
319
- }
320
- process.stderr.write('settle run --auto refused: complete the blocking tasks or rerun with --force.\n');
321
- process.exitCode = 1;
322
- return;
323
- }
324
- const merged = [...acResults];
325
- for (const d of derived) {
326
- if (userVerdictedIds.has(d.id))
327
- continue;
328
- if (d.verdict === 'pass') {
329
- merged.push({ id: d.id, pass: true });
330
- }
331
- else if (d.verdict === 'blocked') {
332
- merged.push({
333
- id: d.id,
334
- pass: false,
335
- note: `auto: ${d.blockers.join(', ')} blocked`,
336
- });
337
- }
338
- else if (d.verdict === 'needs-context') {
339
- merged.push({
340
- id: d.id,
341
- pass: false,
342
- note: `auto: ${d.blockers.join(', ')} needs context`,
343
- });
344
- }
345
- else {
346
- merged.push({
347
- id: d.id,
348
- pass: false,
349
- note: d.blockers.length > 0
350
- ? `auto: ${d.blockers.join(', ')} incomplete`
351
- : 'auto: no linked tasks',
352
- });
353
- }
354
- }
355
- acResults = merged;
356
- }
357
- // Anomaly notify (Phase 17) — fires only when 'anomaly-notify' is in
358
- // the gate set. Notifier failures degrade to a stderr warning; they
359
- // never block settle.
360
- if (gateSet.gates.includes('anomaly-notify')) {
361
- const anomalies = collectAnomalies({
362
- draft,
363
- progress,
364
- coverageBypassed,
365
- force: opts.force === true,
366
- root: cwd,
367
- ...(deepVerify ? { deepVerify } : {}),
368
- ...(interactiveVerify ? { interactiveVerify } : {}),
369
- ...(verifierFailure ? { verifierFailure } : {}),
370
- });
371
- if (anomalies.length > 0) {
372
- const notifier = selectNotifier(cadenceConfig);
373
- try {
374
- await notifier.notify(anomalies);
375
- }
376
- catch (err) {
377
- const msg = err instanceof Error ? err.message : String(err);
378
- process.stderr.write(`notify: ${notifier.name} transport failed — ${msg} (continuing)\n`);
379
- }
380
- }
381
- }
382
- // Required-skill enforcement (Phase 34.1 — ROADMAP 23.4). A checks/
383
- // anomaly check, NOT a gates/engine.ts matrix cell (declaring skills IS
384
- // the opt-in) — dispatched explicitly here, OUTSIDE the Phase 44.1
385
- // registry. The check returns the effective required set; settle records
386
- // it on state.skillAudit.required (truthful SUMMARY) on every non-refuse
387
- // path — including the null-config / empty / telemetry-off skips. A
388
- // refuse halts settle before SUMMARY, unchanged.
389
- {
390
- const res = await runSkillAuditCheck(ctx);
391
- if (res.outcome === 'refuse') {
392
- process.exitCode = 1;
393
- return;
394
- }
395
- state.skillAudit.required = res.effectiveRequired;
396
- }
397
- const summary = {
398
- schemaVersion: 1,
399
- draftId: state.activeDraft,
400
- completedAt: new Date().toISOString(),
401
- acResults,
402
- taskResults: draft.tasks.map((t) => ({
403
- id: t.id,
404
- status: (TaskStatusZ.safeParse(progress.tasks[t.id]?.status).success
405
- ? progress.tasks[t.id].status
406
- : 'BLOCKED'),
407
- notes: progress.tasks[t.id]?.notes ?? '',
408
- })),
409
- decisions: [],
410
- deferred: [],
411
- skillAudit: state.skillAudit,
412
- ...(deepVerify ? { deepVerify } : {}),
413
- ...(interactiveVerify ? { interactiveVerify } : {}),
414
- ...(codeReviewFindings ? { codeReview: codeReviewFindings } : {}),
415
- ...(securityAuditFindings
416
- ? { securityAudit: securityAuditFindings }
417
- : {}),
418
- };
419
- const summaryBase = join(cwd, '.cadence/phases', state.activePhase, `${state.activeDraft}-SUMMARY`);
420
- await atomicWriteJSON(`${summaryBase}.json`, summary);
421
- await atomicWriteText(`${summaryBase}.md`, renderSummaryMd(summary));
422
- const draftId = state.activeDraft;
423
- state.openDrafts = state.openDrafts.filter((d) => d.id !== draftId);
424
- state.activeDraft = null;
425
- state.activeTask = null;
426
- state.loopPosition = 'IDLE';
427
- state.tier = null;
428
- await backend.commit(state);
429
- console.log(`Settled ${draftId}`);
430
- }
431
- catch (err) {
432
- process.stderr.write(`settle run failed: ${err instanceof Error ? err.message : String(err)}\n`);
433
- if (err instanceof LoopViolationError) {
434
- await emitLoopViolation(process.cwd(), err, 'settle.run');
435
- }
436
- process.exitCode = 1;
437
- }
24
+ const { exitCode } = await settleService(process.cwd(), opts, processIO());
25
+ if (exitCode)
26
+ process.exitCode = exitCode;
438
27
  });
439
28
  }
440
- /**
441
- * `git diff --no-color HEAD -- <files>` via execSync. Returns empty
442
- * string on any error (non-git workdir, no diff, exec failure).
443
- * Mirrors the Phase 24.2 build.ts diff collector.
444
- */
445
- function collectDiffForCodeReview(cwd, files) {
446
- if (files.length === 0)
447
- return '';
448
- try {
449
- const args = ['diff', '--no-color', 'HEAD', '--', ...files];
450
- return execSync(`git ${args.map(shellQuote).join(' ')}`, {
451
- cwd,
452
- encoding: 'utf8',
453
- stdio: ['ignore', 'pipe', 'ignore'],
454
- maxBuffer: 16 * 1024 * 1024,
455
- });
456
- }
457
- catch {
458
- return '';
459
- }
460
- }
461
- function shellQuote(arg) {
462
- if (/^[A-Za-z0-9._/=:@+-]+$/.test(arg))
463
- return arg;
464
- return `"${arg.replace(/(["\\$`])/g, '\\$1')}"`;
465
- }
466
29
  //# sourceMappingURL=settle.js.map