@momentiq/dark-factory-cli 1.1.0 → 2.0.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 (104) hide show
  1. package/README.md +86 -2
  2. package/dist/adapters/critic-result-schema.d.ts +14 -14
  3. package/dist/adapters/index.d.ts +1 -0
  4. package/dist/adapters/index.d.ts.map +1 -1
  5. package/dist/adapters/index.js +7 -0
  6. package/dist/adapters/index.js.map +1 -1
  7. package/dist/adapters/static-schema-lint.d.ts +68 -0
  8. package/dist/adapters/static-schema-lint.d.ts.map +1 -0
  9. package/dist/adapters/static-schema-lint.js +813 -0
  10. package/dist/adapters/static-schema-lint.js.map +1 -0
  11. package/dist/cli.d.ts +17 -1
  12. package/dist/cli.d.ts.map +1 -1
  13. package/dist/cli.js +296 -41
  14. package/dist/cli.js.map +1 -1
  15. package/dist/commands/findings.d.ts +6 -0
  16. package/dist/commands/findings.d.ts.map +1 -0
  17. package/dist/commands/findings.js +196 -0
  18. package/dist/commands/findings.js.map +1 -0
  19. package/dist/commands/skills.d.ts +6 -0
  20. package/dist/commands/skills.d.ts.map +1 -0
  21. package/dist/commands/skills.js +248 -0
  22. package/dist/commands/skills.js.map +1 -0
  23. package/dist/doctor.d.ts +17 -0
  24. package/dist/doctor.d.ts.map +1 -1
  25. package/dist/doctor.js +107 -0
  26. package/dist/doctor.js.map +1 -1
  27. package/dist/evidence/docker-build.d.ts +6 -0
  28. package/dist/evidence/docker-build.d.ts.map +1 -0
  29. package/dist/evidence/docker-build.js +199 -0
  30. package/dist/evidence/docker-build.js.map +1 -0
  31. package/dist/evidence/index.d.ts +1 -0
  32. package/dist/evidence/index.d.ts.map +1 -1
  33. package/dist/evidence/index.js +6 -0
  34. package/dist/evidence/index.js.map +1 -1
  35. package/dist/index.d.ts +1 -0
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +4 -0
  38. package/dist/index.js.map +1 -1
  39. package/dist/mcp/server.d.ts.map +1 -1
  40. package/dist/mcp/server.js +2 -0
  41. package/dist/mcp/server.js.map +1 -1
  42. package/dist/mcp/tools/doctor.d.ts.map +1 -1
  43. package/dist/mcp/tools/doctor.js +5 -0
  44. package/dist/mcp/tools/doctor.js.map +1 -1
  45. package/dist/mcp/tools/review-bypass.d.ts.map +1 -1
  46. package/dist/mcp/tools/review-bypass.js +21 -0
  47. package/dist/mcp/tools/review-bypass.js.map +1 -1
  48. package/dist/mcp/tools/skills-install.d.ts +6 -0
  49. package/dist/mcp/tools/skills-install.d.ts.map +1 -0
  50. package/dist/mcp/tools/skills-install.js +260 -0
  51. package/dist/mcp/tools/skills-install.js.map +1 -0
  52. package/dist/mcp/tools/stats-gate.d.ts.map +1 -1
  53. package/dist/mcp/tools/stats-gate.js +63 -15
  54. package/dist/mcp/tools/stats-gate.js.map +1 -1
  55. package/dist/policy/gate.d.ts +1 -1
  56. package/dist/policy/gate.d.ts.map +1 -1
  57. package/dist/policy/gate.js +96 -12
  58. package/dist/policy/gate.js.map +1 -1
  59. package/dist/prompt.d.ts +1 -0
  60. package/dist/prompt.d.ts.map +1 -1
  61. package/dist/prompt.js +105 -1
  62. package/dist/prompt.js.map +1 -1
  63. package/dist/report.d.ts +106 -3
  64. package/dist/report.d.ts.map +1 -1
  65. package/dist/report.js +282 -10
  66. package/dist/report.js.map +1 -1
  67. package/dist/runner.d.ts +2 -0
  68. package/dist/runner.d.ts.map +1 -1
  69. package/dist/runner.js +86 -2
  70. package/dist/runner.js.map +1 -1
  71. package/dist/self-consistency.d.ts +144 -0
  72. package/dist/self-consistency.d.ts.map +1 -0
  73. package/dist/self-consistency.js +368 -0
  74. package/dist/self-consistency.js.map +1 -0
  75. package/dist/skills/config.d.ts +176 -0
  76. package/dist/skills/config.d.ts.map +1 -0
  77. package/dist/skills/config.js +251 -0
  78. package/dist/skills/config.js.map +1 -0
  79. package/dist/skills/index.d.ts +4 -0
  80. package/dist/skills/index.d.ts.map +1 -0
  81. package/dist/skills/index.js +8 -0
  82. package/dist/skills/index.js.map +1 -0
  83. package/dist/skills/install.d.ts +62 -0
  84. package/dist/skills/install.d.ts.map +1 -0
  85. package/dist/skills/install.js +315 -0
  86. package/dist/skills/install.js.map +1 -0
  87. package/dist/skills/template.d.ts +42 -0
  88. package/dist/skills/template.d.ts.map +1 -0
  89. package/dist/skills/template.js +95 -0
  90. package/dist/skills/template.js.map +1 -0
  91. package/dist/trusted-surface/rebind.d.ts.map +1 -1
  92. package/dist/trusted-surface/rebind.js +14 -1
  93. package/dist/trusted-surface/rebind.js.map +1 -1
  94. package/package.json +32 -2
  95. package/skills/README.md +89 -0
  96. package/skills/chief-engineer-blitz/SKILL.md.tmpl +443 -0
  97. package/skills/chief-engineer-blitz/skill.json +53 -0
  98. package/skills/chief-engineer-review/SKILL.md.tmpl +184 -0
  99. package/skills/chief-engineer-review/references/review-examples.md.tmpl +130 -0
  100. package/skills/chief-engineer-review/skill.json +67 -0
  101. package/skills/chief-engineer-review/templates/code-review-prompt.md.tmpl +111 -0
  102. package/skills/chief-engineer-review/templates/escalation-prompt.md.tmpl +56 -0
  103. package/skills/chief-engineer-review/templates/plan-review-prompt.md.tmpl +74 -0
  104. package/skills/skill-schema.json +73 -0
package/dist/report.js CHANGED
@@ -1,6 +1,87 @@
1
1
  import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from "node:fs";
2
2
  import { artifactJsonPath, artifactLockPath, artifactMarkdownPath, resolveArtifactDir, } from "./paths.js";
3
3
  import { parseReviewArtifact, REVIEW_SEVERITIES, } from "@momentiq/dark-factory-schemas";
4
+ // ---------------------------------------------------------------------------
5
+ // Issue dark-factory-platform#112 — flag-name → ReviewFinding-key mapping.
6
+ //
7
+ // The policy config (`AggregationConfig.unilateralVetoRules.requireCorroborationFor`)
8
+ // uses snake_case opaque identifiers so the wire surface is stable
9
+ // independent of the TypeScript field name. The aggregator translates
10
+ // each identifier to the corresponding `ReviewFinding` boolean property
11
+ // at evaluation time. Future flags (e.g. `requires_human_judgment`,
12
+ // `low_confidence`) land here when they need the same
13
+ // corroboration-or-disagreement-note treatment.
14
+ // ---------------------------------------------------------------------------
15
+ const FLAG_TO_FINDING_KEY = {
16
+ self_inconsistent: "selfInconsistent",
17
+ };
18
+ /**
19
+ * True when the finding carries any of the flags listed in
20
+ * `requireCorroborationFor`. Flags not present in `FLAG_TO_FINDING_KEY`
21
+ * are ignored — an unknown flag in config is a no-op rather than a
22
+ * runtime error so operators can pin policy without first deploying a
23
+ * CLI that knows the flag (forward-compat).
24
+ *
25
+ * Exported so `gate.ts` shares the canonical translation table and
26
+ * cannot drift.
27
+ */
28
+ export function findingCarriesCorroborationFlag(finding, flagNames) {
29
+ for (const name of flagNames) {
30
+ const key = FLAG_TO_FINDING_KEY[name];
31
+ if (key === undefined)
32
+ continue;
33
+ const v = finding[key];
34
+ if (v === true)
35
+ return true;
36
+ }
37
+ return false;
38
+ }
39
+ /**
40
+ * True when at least one OTHER completed critic has a blocking-severity
41
+ * finding on the SAME file within `radius` lines of `target`.
42
+ *
43
+ * Exported so `gate.ts` shares the canonical corroboration predicate
44
+ * and cannot drift.
45
+ *
46
+ * "Other" = different `criticId`. Critics never corroborate themselves.
47
+ * "Blocking-severity" = `blockingSeverities.includes(f.severity)`. The
48
+ * corroborator is checked WITHOUT recursing into the corroboration
49
+ * rule — a corroborator that itself carries `selfInconsistent: true`
50
+ * still corroborates (the spec's safety net is "another critic saw a
51
+ * blocker here too", not "another critic's blocker survived
52
+ * corroboration"). This intentional asymmetry prevents an N-way
53
+ * corroboration-cycle.
54
+ *
55
+ * `target.file === undefined` → returns false (corroboration is
56
+ * file-scoped; a finding without a file cannot be corroborated).
57
+ * `target.line === undefined` → treats the target line as `0` (matches
58
+ * any line in the same file within the radius window — the safety
59
+ * net errs toward "yes, this is corroborated" when the target's
60
+ * location is imprecise).
61
+ */
62
+ export function isCorroboratedByOtherCritic(target, targetCriticId, allResults, blockingSeverities, radius) {
63
+ if (!target.file)
64
+ return false;
65
+ const targetLine = target.line ?? 0;
66
+ for (const other of allResults) {
67
+ if (other.criticId === targetCriticId)
68
+ continue;
69
+ if (other.status !== "complete")
70
+ continue;
71
+ for (const f of other.findings) {
72
+ if (!blockingSeverities.includes(f.severity))
73
+ continue;
74
+ if (f.file !== target.file)
75
+ continue;
76
+ if (target.line === undefined || f.line === undefined)
77
+ return true;
78
+ const distance = Math.abs(f.line - targetLine);
79
+ if (distance <= radius)
80
+ return true;
81
+ }
82
+ }
83
+ return false;
84
+ }
4
85
  const SEVERITY_RANK = {
5
86
  blocker: 0,
6
87
  high: 1,
@@ -14,9 +95,18 @@ export function buildAggregate(inputs) {
14
95
  const aggregationPolicy = loaded.config.aggregation.policy;
15
96
  const blockingSeverities = loaded.config.aggregation.blockingSeverities;
16
97
  let gateVerdict;
98
+ let disagreements = [];
17
99
  if (status === "complete") {
18
- gateVerdict = aggregateVerdict(criticResults, blockingSeverities, loaded, quorumOverride);
100
+ const aggregate = aggregateOutcome(criticResults, blockingSeverities, loaded, quorumOverride);
101
+ gateVerdict = aggregate.verdict;
102
+ disagreements = aggregate.disagreements;
19
103
  }
104
+ // Cursor finding (report.ts:981) — persist the demoted findings on
105
+ // the artifact so operators auditing the on-disk JSON see the
106
+ // demotion without re-running the aggregator. Always emit `[]` on
107
+ // complete artifacts so consumers can branch on `.length` without
108
+ // an undefined check; omit on pending/error artifacts (no
109
+ // aggregation ran, no policy outcome to record).
20
110
  const artifact = {
21
111
  version: 2,
22
112
  status,
@@ -30,9 +120,21 @@ export function buildAggregate(inputs) {
30
120
  criticResults,
31
121
  createdAt,
32
122
  ...(gateVerdict !== undefined ? { gateVerdict } : {}),
123
+ ...(status === "complete" ? { disagreements } : {}),
33
124
  };
34
125
  return artifact;
35
126
  }
127
+ function aggregateOutcome(results, blockingSeverities, loaded, quorumOverride) {
128
+ if (loaded.config.aggregation.policy === "min-complete-quorum") {
129
+ const quorum = quorumOverride ?? loaded.config.aggregation.quorum;
130
+ const outcome = quorumAggregateVerdict(results, blockingSeverities, quorum ?? 2, loaded.config.aggregation.unilateralVetoRules);
131
+ return { verdict: outcome.verdict, disagreements: outcome.disagreements };
132
+ }
133
+ return {
134
+ verdict: aggregateVerdict(results, blockingSeverities, loaded, quorumOverride),
135
+ disagreements: [],
136
+ };
137
+ }
36
138
  function aggregateVerdict(results, blockingSeverities, loaded, quorumOverride) {
37
139
  // Cycle 322.3 — dispatch on policy. `min-complete-quorum` uses the
38
140
  // quorum aggregator below; everything else falls through to the
@@ -45,11 +147,14 @@ function aggregateVerdict(results, blockingSeverities, loaded, quorumOverride) {
45
147
  // report CHANGES_REQUESTED (uses root quorum=2). Codex P2 caught
46
148
  // this divergence on PR #1468.
47
149
  const quorum = quorumOverride ?? loaded.config.aggregation.quorum;
150
+ // Issue dark-factory-platform#112 — thread the optional
151
+ // `unilateralVetoRules` so the persisted artifact's verdict honors
152
+ // the same corroboration policy the runtime gate evaluator does.
48
153
  // Schema validation guarantees `quorum` is set when the policy
49
154
  // is `min-complete-quorum`; the defensive fallback to 2 is for
50
155
  // hand-constructed configs in tests (the parser would already
51
156
  // have rejected a real on-disk config without quorum).
52
- return quorumAggregateVerdict(results, blockingSeverities, quorum ?? 2).verdict;
157
+ return quorumAggregateVerdict(results, blockingSeverities, quorum ?? 2, loaded.config.aggregation.unilateralVetoRules).verdict;
53
158
  }
54
159
  // Cycle 322.2 Component 4 — `required` flag threading.
55
160
  //
@@ -121,16 +226,115 @@ export function isCriticCompleted(r) {
121
226
  * CHANGES_REQUESTED verdict) blocks the gate regardless of how many
122
227
  * other critics approved. Returns `false` for non-completed critics
123
228
  * — only a completed critic can veto.
229
+ *
230
+ * Issue dark-factory-platform#112 — when `corroborationCtx` is
231
+ * supplied AND the critic's only veto trigger is a blocking finding
232
+ * carrying one of the configured corroboration-required flags (e.g.
233
+ * `selfInconsistent: true`), the function checks whether ANOTHER
234
+ * critic raises a blocking finding on the same file within
235
+ * `rules.requireCorroborationOnHunkRadius` lines. If not, the
236
+ * finding is demoted to a `critic_disagreement` note (pushed to
237
+ * `disagreementSink`) and DOES NOT contribute to a veto. Findings
238
+ * without a flag still veto unconditionally — the safety net is
239
+ * intact for findings the critic can defend.
240
+ *
241
+ * Note: a critic that vetoes via `CHANGES_REQUESTED` verdict OR
242
+ * `requiresHumanJudgment` is NOT subject to corroboration — those
243
+ * are coarser-grained signals than per-finding flags and the spec
244
+ * narrows the rule to per-finding flag triggers only.
124
245
  */
125
- export function criticVetoesGate(r, blockingSeverities) {
246
+ export function criticVetoesGate(r, blockingSeverities, corroborationCtx) {
126
247
  if (!isCriticCompleted(r))
127
248
  return false;
128
- if (r.verdict === "CHANGES_REQUESTED")
129
- return true;
249
+ // requiresHumanJudgment is a coarser-grained signal than per-finding
250
+ // flags; the spec narrows corroboration to per-finding triggers
251
+ // only. A critic that flags requiresHumanJudgment vetoes
252
+ // unconditionally regardless of policy.
130
253
  if (r.requiresHumanJudgment)
131
254
  return true;
132
- if (hasBlockingFinding(r.findings, blockingSeverities))
255
+ // Back-compat path: no policy → check verdict OR any blocking
256
+ // finding (the pre-#112 §11 semantic).
257
+ if (corroborationCtx === undefined) {
258
+ if (r.verdict === "CHANGES_REQUESTED")
259
+ return true;
260
+ return hasBlockingFinding(r.findings, blockingSeverities);
261
+ }
262
+ // Issue dark-factory-platform#112 — policy-aware veto evaluation.
263
+ // Walk every blocking finding and partition into:
264
+ // - `anyUnflaggedBlocking`: the safety net — any finding the
265
+ // critic can defend stands as a veto.
266
+ // - `anyCorroboratedFlagged`: flagged AND another critic raised a
267
+ // same-file blocker within radius → veto stands.
268
+ // - `demotions`: flagged AND uncorroborated → recorded as
269
+ // `critic_disagreement` notes; do NOT contribute to veto.
270
+ //
271
+ // A critic with `verdict === "CHANGES_REQUESTED"` is itself subject
272
+ // to demotion under policy WHEN every blocking finding is demoted
273
+ // AND the verdict is downstream of those findings (heuristic: if no
274
+ // unflagged or corroborated blocker remains, the CR verdict is the
275
+ // critic's downstream summary of the now-demoted finding(s)). This
276
+ // is the spec's "verdict flips from CHANGES_REQUESTED to APPROVED"
277
+ // case from the DoD. A critic with CR and NO blocking findings at
278
+ // all retains its veto unconditionally — the verdict in that case
279
+ // is verdict-only with no per-finding flag to demote.
280
+ const { allResults, rules, disagreementSink } = corroborationCtx;
281
+ let anyUnflaggedBlocking = false;
282
+ let anyCorroboratedFlagged = false;
283
+ let anyBlockingFinding = false;
284
+ const demotions = [];
285
+ for (const f of r.findings) {
286
+ if (!blockingSeverities.includes(f.severity))
287
+ continue;
288
+ anyBlockingFinding = true;
289
+ const flagged = findingCarriesCorroborationFlag(f, rules.requireCorroborationFor);
290
+ if (!flagged) {
291
+ anyUnflaggedBlocking = true;
292
+ continue;
293
+ }
294
+ const corroborated = isCorroboratedByOtherCritic(f, r.criticId, allResults, blockingSeverities, rules.requireCorroborationOnHunkRadius);
295
+ if (corroborated) {
296
+ anyCorroboratedFlagged = true;
297
+ continue;
298
+ }
299
+ // Flagged AND uncorroborated → demote to a disagreement note.
300
+ if (f.file) {
301
+ demotions.push({
302
+ criticId: r.criticId,
303
+ file: f.file,
304
+ ...(f.line !== undefined ? { line: f.line } : {}),
305
+ severity: f.severity,
306
+ // The first flag the finding actually carries wins for note
307
+ // attribution; in practice today only `self_inconsistent` is
308
+ // a registered key so this is a single-element search.
309
+ flag: rules.requireCorroborationFor.find((name) => {
310
+ const key = FLAG_TO_FINDING_KEY[name];
311
+ return key !== undefined && f[key] === true;
312
+ }) ?? rules.requireCorroborationFor[0],
313
+ evidence: f.evidence,
314
+ });
315
+ }
316
+ }
317
+ // Veto sustained when any defendable signal remains:
318
+ // - An unflagged blocker (the safety net).
319
+ // - A corroborated flagged blocker (another critic agrees).
320
+ // - A CHANGES_REQUESTED verdict that's NOT downstream of the
321
+ // now-demoted findings — i.e. the critic returned CR without any
322
+ // blocking finding to attribute it to (verdict-only block, the
323
+ // coarser §11 signal). That CR survives policy because there's
324
+ // no per-finding flag to demote it through.
325
+ if (anyUnflaggedBlocking || anyCorroboratedFlagged) {
326
+ if (disagreementSink)
327
+ disagreementSink.push(...demotions);
328
+ return true;
329
+ }
330
+ if (r.verdict === "CHANGES_REQUESTED" && !anyBlockingFinding) {
331
+ // Verdict-only block, no blockers to demote → veto sustained.
133
332
  return true;
333
+ }
334
+ // All blockers demoted (and either APPROVED verdict OR
335
+ // CHANGES_REQUESTED-downstream-of-blockers) → no veto.
336
+ if (disagreementSink)
337
+ disagreementSink.push(...demotions);
134
338
  return false;
135
339
  }
136
340
  /**
@@ -154,15 +358,29 @@ export function criticVetoesGate(r, blockingSeverities) {
154
358
  * property: an outage that knocks out two critics doesn't paralyze
155
359
  * the third critic's BLOCKER finding.
156
360
  */
157
- export function quorumAggregateVerdict(results, blockingSeverities, quorum) {
361
+ export function quorumAggregateVerdict(results, blockingSeverities, quorum, unilateralVetoRules) {
158
362
  const completed = results.filter(isCriticCompleted);
159
- const vetoer = completed.find((r) => criticVetoesGate(r, blockingSeverities));
363
+ const disagreements = [];
364
+ // Issue dark-factory-platform#112 — when the policy is set, thread
365
+ // it through every `criticVetoesGate` call so a single uncorroborated
366
+ // flagged finding doesn't sweep a veto. The disagreement sink is
367
+ // shared across critics so the runner sees all demotions in one
368
+ // pass.
369
+ const ctx = unilateralVetoRules !== undefined
370
+ ? {
371
+ allResults: results,
372
+ rules: unilateralVetoRules,
373
+ disagreementSink: disagreements,
374
+ }
375
+ : undefined;
376
+ const vetoer = completed.find((r) => ctx ? criticVetoesGate(r, blockingSeverities, ctx) : criticVetoesGate(r, blockingSeverities));
160
377
  if (vetoer) {
161
378
  return {
162
379
  verdict: "CHANGES_REQUESTED",
163
380
  reason: "veto",
164
381
  completedCount: completed.length,
165
382
  totalCount: results.length,
383
+ disagreements,
166
384
  };
167
385
  }
168
386
  if (completed.length < quorum) {
@@ -171,12 +389,40 @@ export function quorumAggregateVerdict(results, blockingSeverities, quorum) {
171
389
  reason: "quorum_unmet",
172
390
  completedCount: completed.length,
173
391
  totalCount: results.length,
392
+ disagreements,
174
393
  };
175
394
  }
176
395
  // Quorum met and no veto — vote the majority of completed critics.
177
396
  // Without veto, every completed critic has APPROVED OR (no verdict
178
397
  // — schema impossible, but defensive). Count APPROVED vs other.
179
- const approveCount = completed.filter((r) => r.verdict === "APPROVED").length;
398
+ //
399
+ // Issue dark-factory-platform#112 — when a corroboration policy is
400
+ // active and a critic's CHANGES_REQUESTED verdict is downstream of
401
+ // a now-demoted blocker (every blocking finding the critic produced
402
+ // was demoted under the policy), treat that critic as effectively
403
+ // APPROVED for majority counting. Without this, the critic that
404
+ // produced the demoted blocker would still flip the majority to
405
+ // CHANGES_REQUESTED via its CR verdict, which would undo the
406
+ // demotion the policy just performed. This is the spec's DoD case:
407
+ // "verdict flips from CHANGES_REQUESTED to APPROVED after the
408
+ // probe-tagged blocker is demoted, no other critic finds a
409
+ // corroborating blocker on the same file within radius."
410
+ const effectivelyApproved = (r) => {
411
+ if (r.verdict === "APPROVED")
412
+ return true;
413
+ if (ctx === undefined)
414
+ return false;
415
+ // If the critic returned CR with at least one blocker and every
416
+ // blocker was demoted to a disagreement note attributed to this
417
+ // critic, the CR verdict is downstream of the now-demoted
418
+ // finding(s).
419
+ const blockers = r.findings.filter((f) => blockingSeverities.includes(f.severity));
420
+ if (blockers.length === 0)
421
+ return false;
422
+ const demotedForThisCritic = disagreements.filter((d) => d.criticId === r.criticId).length;
423
+ return demotedForThisCritic >= blockers.length;
424
+ };
425
+ const approveCount = completed.filter(effectivelyApproved).length;
180
426
  const changesCount = completed.length - approveCount;
181
427
  // Ties favor CHANGES_REQUESTED (conservative). With 0 changes, all
182
428
  // approved → APPROVED. With any changes >= approveCount → CHANGES_REQUESTED.
@@ -190,6 +436,7 @@ export function quorumAggregateVerdict(results, blockingSeverities, quorum) {
190
436
  reason: "majority",
191
437
  completedCount: completed.length,
192
438
  totalCount: results.length,
439
+ disagreements,
193
440
  };
194
441
  }
195
442
  /**
@@ -483,7 +730,14 @@ export function renderMarkdown(artifact) {
483
730
  for (const f of subset) {
484
731
  lines.push("");
485
732
  const tag = f.manifestoSection ? ` ${f.manifestoSection}` : "";
486
- lines.push(`- **${f.category}${tag}** \`${f.file ?? "(no file)"}\`${f.line !== undefined ? `:${f.line}` : ""}${f.symbol ? ` (\`${f.symbol}\`)` : ""}`);
733
+ // Cursor finding (report.ts:981) surface the
734
+ // self-consistency-probe verdict alongside the location so a
735
+ // reader scanning the markdown immediately sees which
736
+ // blockers were probe-flagged. The aggregator may have
737
+ // demoted these to disagreement notes — see the
738
+ // "Demoted findings" section at the end of the artifact.
739
+ const probeTag = f.selfInconsistent === true ? " [self-inconsistent]" : "";
740
+ lines.push(`- **${f.category}${tag}** — \`${f.file ?? "(no file)"}\`${f.line !== undefined ? `:${f.line}` : ""}${f.symbol ? ` (\`${f.symbol}\`)` : ""}${probeTag}`);
487
741
  lines.push(` - Evidence: ${f.evidence}`);
488
742
  lines.push(` - Impact: ${f.impact}`);
489
743
  lines.push(` - Required fix: ${f.requiredFix}`);
@@ -510,6 +764,24 @@ export function renderMarkdown(artifact) {
510
764
  }
511
765
  lines.push("");
512
766
  }
767
+ // Cursor finding (report.ts:981) — surface the aggregator's
768
+ // demoted findings so a reader of the per-SHA markdown sees the
769
+ // policy outcome (which blockers became disagreement notes and
770
+ // why). Omitted entirely when no demotions occurred (the common
771
+ // case for runs without `unilateralVetoRules` set or for runs
772
+ // where every flagged blocker corroborated).
773
+ if (artifact.disagreements && artifact.disagreements.length > 0) {
774
+ lines.push("## Demoted findings");
775
+ lines.push("");
776
+ lines.push("Findings the aggregator demoted from a unilateral veto to an informational `critic_disagreement` note under `unilateralVetoRules.requireCorroborationFor`.");
777
+ lines.push("");
778
+ for (const d of artifact.disagreements) {
779
+ const loc = d.line !== undefined ? `${d.file}:${d.line}` : d.file;
780
+ lines.push(`- **${d.criticId}** — \`${loc}\` (${d.severity}, flag: \`${d.flag}\`)`);
781
+ lines.push(` - Evidence: ${d.evidence}`);
782
+ }
783
+ lines.push("");
784
+ }
513
785
  return `${lines.join("\n")}\n`;
514
786
  }
515
787
  export async function writePending(loaded, inputs) {
@@ -1 +1 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGzF,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAMlB,MAAM,gCAAgC,CAAC;AAoBxC,MAAM,aAAa,GAAmC;IACpD,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,GAAG,EAAE,CAAC;IACN,IAAI,EAAE,CAAC;CACR,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,MAAuB;IACpD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC;IAC7G,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC;IACrE,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;IAC3D,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC;IAExE,IAAI,WAAsC,CAAC;IAC3C,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,WAAW,GAAG,gBAAgB,CAAC,aAAa,EAAE,kBAAkB,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IAC5F,CAAC;IAED,MAAM,QAAQ,GAAmB;QAC/B,OAAO,EAAE,CAAC;QACV,MAAM;QACN,IAAI,EAAE,QAAQ;QACd,MAAM;QACN,MAAM;QACN,KAAK;QACL,QAAQ;QACR,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa;QAC9C,iBAAiB;QACjB,aAAa;QACb,SAAS;QACT,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtD,CAAC;IACF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,gBAAgB,CACvB,OAAuB,EACvB,kBAAoC,EACpC,MAAoB,EACpB,cAAuB;IAEvB,mEAAmE;IACnE,gEAAgE;IAChE,+DAA+D;IAC/D,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,qBAAqB,EAAE,CAAC;QAC/D,8DAA8D;QAC9D,gEAAgE;QAChE,sEAAsE;QACtE,8DAA8D;QAC9D,iEAAiE;QACjE,+BAA+B;QAC/B,MAAM,MAAM,GAAG,cAAc,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;QAClE,+DAA+D;QAC/D,+DAA+D;QAC/D,8DAA8D;QAC9D,uDAAuD;QACvD,OAAO,sBAAsB,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;IAClF,CAAC;IAED,uDAAuD;IACvD,EAAE;IACF,uEAAuE;IACvE,uEAAuE;IACvE,qEAAqE;IACrE,sEAAsE;IACtE,sEAAsE;IACtE,qBAAqB;IACrB,EAAE;IACF,oEAAoE;IACpE,gEAAgE;IAChE,mEAAmE;IACnE,iBAAiB;IACjB,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9F,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,EAAE,CAAC;YAC9G,OAAO,mBAAmB,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU;YAAE,SAAS;QACtC,sEAAsE;QACtE,uDAAuD;QACvD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;YAAE,SAAS;QAC3C,IAAI,CAAC,CAAC,OAAO,KAAK,mBAAmB;YAAE,OAAO,mBAAmB,CAAC;QAClE,IAAI,CAAC,CAAC,qBAAqB;YAAE,OAAO,mBAAmB,CAAC;QACxD,IAAI,kBAAkB,CAAC,CAAC,CAAC,QAAQ,EAAE,kBAAkB,CAAC;YAAE,OAAO,mBAAmB,CAAC;IACrF,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAyB,EAAE,kBAAoC;IACzF,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,8EAA8E;AAC9E,mDAAmD;AACnD,EAAE;AACF,8DAA8D;AAC9D,+DAA+D;AAC/D,mEAAmE;AACnE,8CAA8C;AAC9C,EAAE;AACF,cAAc;AACd,+DAA+D;AAC/D,qEAAqE;AACrE,sEAAsE;AACtE,iEAAiE;AACjE,mEAAmE;AACnE,4DAA4D;AAC5D,kEAAkE;AAClE,iCAAiC;AAEjC;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,CAAe;IAC/C,OAAO,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC;AACjC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAC9B,CAAe,EACf,kBAAoC;IAEpC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,CAAC,CAAC,OAAO,KAAK,mBAAmB;QAAE,OAAO,IAAI,CAAC;IACnD,IAAI,CAAC,CAAC,qBAAqB;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,kBAAkB,CAAC,CAAC,CAAC,QAAQ,EAAE,kBAAkB,CAAC;QAAE,OAAO,IAAI,CAAC;IACpE,OAAO,KAAK,CAAC;AACf,CAAC;AA0BD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAAuB,EACvB,kBAAoC,EACpC,MAAc;IAEd,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC9E,IAAI,MAAM,EAAE,CAAC;QACX,OAAO;YACL,OAAO,EAAE,mBAAmB;YAC5B,MAAM,EAAE,MAAM;YACd,cAAc,EAAE,SAAS,CAAC,MAAM;YAChC,UAAU,EAAE,OAAO,CAAC,MAAM;SAC3B,CAAC;IACJ,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;QAC9B,OAAO;YACL,OAAO,EAAE,mBAAmB;YAC5B,MAAM,EAAE,cAAc;YACtB,cAAc,EAAE,SAAS,CAAC,MAAM;YAChC,UAAU,EAAE,OAAO,CAAC,MAAM;SAC3B,CAAC;IACJ,CAAC;IACD,mEAAmE;IACnE,mEAAmE;IACnE,gEAAgE;IAChE,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,MAAM,CAAC;IAC9E,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,GAAG,YAAY,CAAC;IACrD,mEAAmE;IACnE,6EAA6E;IAC7E,+DAA+D;IAC/D,mEAAmE;IACnE,yEAAyE;IACzE,2DAA2D;IAC3D,MAAM,OAAO,GAAkB,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC;IAC9F,OAAO;QACL,OAAO;QACP,MAAM,EAAE,UAAU;QAClB,cAAc,EAAE,SAAS,CAAC,MAAM;QAChC,UAAU,EAAE,OAAO,CAAC,MAAM;KAC3B,CAAC;AACJ,CAAC;AAyCD;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAwB,EACxB,QAAgB;IAEhB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC;IACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,IAAI,cAAc,CAAC;IACvD,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC;IACpC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5E,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,MAAM,CAAC;IAC7E,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAClC,MAAM,QAAQ,GAAG,cAAc,GAAG,UAAU,CAAC;IAE7C,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAChC,CAAC,CAAC,EAAE,EAAE,CACJ,OAAO,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,MAAM,EAAE;QAChC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACpC,eAAe,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CACrC,CAAC;IAEF,wEAAwE;IACxE,sEAAsE;IACtE,oEAAoE;IACpE,yEAAyE;IACzE,mEAAmE;IACnE,iEAAiE;IACjE,yBAAyB;IACzB,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO;YAAE,SAAS;QACnC,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,IAAI,6BAA6B,CAAC;QAClE,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,QAAQ,KAAK,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,oEAAoE;IACpE,wEAAwE;IACxE,sEAAsE;IACtE,yCAAyC;IACzC,MAAM,iBAAiB,GAAG,QAAQ;QAChC,CAAC,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,cAAc,IAAI,UAAU,4CAA4C,cAAc,UAAU,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE;QACzJ,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,WAAW,GAAa;QAC5B,kCAAkC,WAAW,EAAE;QAC/C,cAAc,OAAO,EAAE;QACvB,qBAAqB,YAAY,EAAE;QACnC,eAAe;QACf,GAAG,cAAc;QACjB,GAAG,UAAU;QACb,eAAe,QAAQ,EAAE;KAC1B,CAAC;IACF,IAAI,iBAAiB,EAAE,CAAC;QACtB,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACtC,CAAC;IACD,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAErB,mEAAmE;IACnE,uEAAuE;IACvE,yEAAyE;IACzE,MAAM,YAAY,GAAa;QAC7B,oCAAoC;QACpC,EAAE;QACF,oBAAoB,OAAO,IAAI;QAC/B,4BAA4B,cAAc,IAAI,UAAU,EAAE;QAC1D,yBAAyB,YAAY,EAAE;QACvC,EAAE;KACH,CAAC;IACF,IAAI,iBAAiB,EAAE,CAAC;QACtB,YAAY,CAAC,IAAI,CAAC,KAAK,iBAAiB,EAAE,EAAE,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,YAAY,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;QAChD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO;gBAAE,SAAS;YACnC,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,IAAI,6BAA6B,CAAC;YAClE,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,QAAQ,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IAED,OAAO;QACL,MAAM,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;QACrC,WAAW,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;QAC3C,cAAc;QACd,UAAU;QACV,QAAQ;KACT,CAAC;AACJ,CAAC;AAuED,MAAM,UAAU,2BAA2B,CACzC,QAAwB,EACxB,QAAgB,EAChB,UAA+B,EAAE;IAEjC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC;IACvC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAClC,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,MAAM,CAAC;IAC7E,MAAM,cAAc,GAAG,UAAU,GAAG,CAAC,IAAI,cAAc,KAAK,CAAC,CAAC;IAC9D,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACxC,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,MAAM,KAAK,GAAa;QACtB,+BAA+B,UAAU,6DAA6D;QACtG,iBAAiB;KAClB,CAAC;IAEF,oEAAoE;IACpE,6DAA6D;IAC7D,IAAI,OAAO,CAAC,iBAAiB,KAAK,KAAK,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,CACR,sHAAsH,CACvH,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,sEAAsE;IACtE,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QACvD,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QACrC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAC;IAEvC,OAAO;QACL,cAAc;QACd,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;KAChC,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,MAAoB;IAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC;IAEtC,kEAAkE;IAClE,mEAAmE;IACnE,4CAA4C;IAC5C,IAAI,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3C,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,cAAc,EAAE,wBAAwB;YACxC,WAAW,EACT,6BAA6B,MAAM,CAAC,QAAQ,4EAA4E;SAC3H,CAAC;IACJ,CAAC;IAED,qEAAqE;IACrE,0DAA0D;IAC1D,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACnG,IAAI,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,cAAc,EAAE,qBAAqB;YACrC,WAAW,EAAE,UAAU,OAAO,wCAAwC;SACvE,CAAC;IACJ,CAAC;IAED,iEAAiE;IACjE,2EAA2E;IAC3E,IACE,0FAA0F,CAAC,IAAI,CAC7F,IAAI,CACL;QACD,oDAAoD,CAAC,IAAI,CAAC,OAAO,CAAC,EAClE,CAAC;QACD,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,cAAc,EAAE,iBAAiB;YACjC,WAAW,EAAE,mFAAmF;SACjG,CAAC;IACJ,CAAC;IAED,mEAAmE;IACnE,yDAAyD;IACzD,IACE,2DAA2D,CAAC,IAAI,CAAC,IAAI,CAAC;QACtE,wDAAwD,CAAC,IAAI,CAAC,OAAO,CAAC,EACtE,CAAC;QACD,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,cAAc,EAAE,kBAAkB;YAClC,WAAW,EAAE,2EAA2E;SACzF,CAAC;IACJ,CAAC;IAED,mEAAmE;IACnE,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,cAAc,EAAE,SAAS;QACzB,WAAW,EAAE,+EAA+E;KAC7F,CAAC;AACJ,CAAC;AAQD,6EAA6E;AAC7E,4EAA4E;AAC5E,8EAA8E;AAC9E,8EAA8E;AAC9E,8EAA8E;AAC9E,2EAA2E;AAC3E,2EAA2E;AAC3E,6DAA6D;AAC7D,EAAE;AACF,sEAAsE;AACtE,yEAAyE;AACzE,uEAAuE;AACvE,2BAA2B;AAC3B,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAoB,EACpB,QAAwB;IAExB,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7C,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,oBAAoB,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChE,aAAa,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1E,IAAI,mBAAmB,GAAkB,IAAI,CAAC;IAC9C,IAAI,CAAC;QACH,aAAa,CAAC,YAAY,EAAE,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9D,mBAAmB,GAAG,YAAY,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,mEAAmE;QACnE,mEAAmE;QACnE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,kDAAkD,YAAY,KAAM,GAAa,CAAC,OAAO,uBAAuB,QAAQ,sBAAsB,CAC/I,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAoB,EACpB,MAAc;IAEd,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAwB;IACrD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,2BAA2B,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACtE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,iBAAiB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,KAAK,CAAC,IAAI,CAAC,kBAAkB,QAAQ,CAAC,WAAW,IAAI,WAAW,EAAE,CAAC,CAAC;IACpE,KAAK,CAAC,IAAI,CAAC,gBAAgB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7C,KAAK,CAAC,IAAI,CAAC,oBAAoB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IACpD,KAAK,CAAC,IAAI,CAAC,sBAAsB,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC/D,KAAK,CAAC,IAAI,CAAC,yBAAyB,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC9D,KAAK,CAAC,IAAI,CAAC,qBAAqB,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IACtD,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,iBAAiB,QAAQ,CAAC,MAAM,CAAC,MAAM,QAAQ,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;IACnF,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;QACtE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QACtF,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAChF,KAAK,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7C,IAAI,MAAM,CAAC,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACnE,KAAK,CAAC,IAAI,CAAC,qBAAqB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACrD,IAAI,MAAM,CAAC,qBAAqB;YAAE,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACnF,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,UAAU,KAAK,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAClG,8DAA8D;YAC9D,4DAA4D;YAC5D,kDAAkD;YAClD,iDAAiD;YACjD,0DAA0D;YAC1D,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACtB,KAAK,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;YAC3D,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;gBAC/E,KAAK,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;YAC/D,CAAC;YACD,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;gBAC/B,KAAK,CAAC,IAAI,CAAC,qBAAqB,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3B,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC1G,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;gBACpC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC;gBACxD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;oBAAE,SAAS;gBAClC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACf,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC3D,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;oBACvB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACf,MAAM,GAAG,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC/D,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,GAAG,GAAG,UAAU,CAAC,CAAC,IAAI,IAAI,WAAW,KAAK,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACzJ,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAC1C,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;oBACtC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;QACH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAC/C,IAAI,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAC5C,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAC5C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;gBACrD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,UAAU,OAAO,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,+BAA+B,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChG,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAoB,EACpB,MAAyD;IAEzD,MAAM,QAAQ,GAAG,cAAc,CAAC;QAC9B,GAAG,MAAM;QACT,aAAa,EAAE,EAAE;QACjB,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC;IACH,OAAO,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC1C,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAoB,EACpB,MAAc;IAEd,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7C,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC/C,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACvC,CAAC;IACD,IAAI,CAAC;QACH,aAAa,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,GAAG,KAAK,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACzF,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACvC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,IAAI,CAAC;QACH,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,UAAU,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,cAAc;IAChB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"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"}
package/dist/runner.d.ts CHANGED
@@ -2,6 +2,7 @@ import type { LoadedConfig } from "./policy/config.js";
2
2
  import type { AdapterRegistry } from "./adapters/critic.js";
3
3
  import { type PolicyNotice } from "./policy/baseline.js";
4
4
  import { type WriteResult } from "./report.js";
5
+ import { type SelfConsistencyProbeFn } from "./self-consistency.js";
5
6
  import type { TelemetrySink } from "./evidence/audit-trail.js";
6
7
  import type { GateResult, ReviewArtifact, ReviewPacket } from "@momentiq/dark-factory-schemas";
7
8
  export interface ReviewRunOptions {
@@ -14,6 +15,7 @@ export interface ReviewRunOptions {
14
15
  profileName?: string;
15
16
  injectedConfigAuthoritative?: boolean;
16
17
  onPolicyNotice?: (notice: PolicyNotice) => void;
18
+ selfConsistencyProbe?: SelfConsistencyProbeFn;
17
19
  }
18
20
  export interface ReviewRunOutcome {
19
21
  artifact: ReviewArtifact;
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAuB,MAAM,sBAAsB,CAAC;AAWjF,OAAO,EAAyB,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAOhF,OAAO,EAOL,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAIrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAGV,UAAU,EACV,cAAc,EACd,YAAY,EAEb,MAAM,gCAAgC,CAAC;AAExC,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,eAAe,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,MAAM,CAAC,EAAE,WAAW,CAAC;IAUrB,WAAW,CAAC,EAAE,MAAM,CAAC;IAQrB,2BAA2B,CAAC,EAAE,OAAO,CAAC;IAOtC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAiED,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAgWpF;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,aAAa,CAAC;IAkB1B,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,2BAA2B,CAAC,EAAE,OAAO,CAAC;IAGtC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;CACjD;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CAqLhF;AA6BD,MAAM,WAAW,eAAe;IAC9B,SAAS,IAAI,IAAI,CAAC;CACnB;AAKD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAoBxE"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAuB,MAAM,sBAAsB,CAAC;AAWjF,OAAO,EAAyB,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAOhF,OAAO,EAOL,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,uBAAuB,CAAC;AAK/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAGV,UAAU,EACV,cAAc,EACd,YAAY,EAEb,MAAM,gCAAgC,CAAC;AAExC,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,eAAe,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,MAAM,CAAC,EAAE,WAAW,CAAC;IAUrB,WAAW,CAAC,EAAE,MAAM,CAAC;IAQrB,2BAA2B,CAAC,EAAE,OAAO,CAAC;IAOtC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAahD,oBAAoB,CAAC,EAAE,sBAAsB,CAAC;CAC/C;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAiED,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA4YpF;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,aAAa,CAAC;IAkB1B,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,2BAA2B,CAAC,EAAE,OAAO,CAAC;IAGtC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;CACjD;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CAqLhF;AA4FD,MAAM,WAAW,eAAe;IAC9B,SAAS,IAAI,IAAI,CAAC;CACnB;AAKD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAoBxE"}
package/dist/runner.js CHANGED
@@ -8,6 +8,8 @@ import { resolvePolicyBaseline } from "./policy/baseline.js";
8
8
  import { applyProfileAuth, applyProfileParamOverrides, resolveProfileWithConfig, } from "./policy/profile.js";
9
9
  import { runQualityGates } from "./evidence/index.js";
10
10
  import { acquireCommitLock, buildAggregate, quorumAggregateVerdict, releaseCommitLock, writeArtifacts, writePending, } from "./report.js";
11
+ import { applySelfConsistencyResult, runSelfConsistencyProbe, } from "./self-consistency.js";
12
+ import { gitShowFile } from "./git.js";
11
13
  // Issue #29 — the EventTarget max-listener cap on the shared AbortSignal.
12
14
  //
13
15
  // `runReview` fans `reviewOptions.signal` out to N critic adapters via
@@ -231,7 +233,7 @@ export async function runReview(options) {
231
233
  // Both are pure and commute (no field overlap), so order is only a
232
234
  // convention; documenting it makes the pipeline reviewable.
233
235
  const requiredCritics = activeCritics.map((c) => applyProfileAuth(applyProfileParamOverrides(c, resolvedProfile?.profile), resolvedProfile?.profile));
234
- const results = await Promise.all(requiredCritics.map(async (critic) => {
236
+ const rawResults = await Promise.all(requiredCritics.map(async (critic) => {
235
237
  if (!registry.has(critic.adapter)) {
236
238
  return {
237
239
  criticId: critic.id,
@@ -253,6 +255,20 @@ export async function runReview(options) {
253
255
  const adapter = registry.resolve(critic.adapter);
254
256
  return adapter.review(packet, critic, reviewOptions);
255
257
  }));
258
+ // Issue dark-factory-platform#112 — self-consistency probe pass.
259
+ // Runs ONLY when both (a) the caller supplied a probe callable AND
260
+ // (b) the active aggregation policy declares a corroboration rule
261
+ // listing flag(s) the probe knows how to populate. Skipping when
262
+ // the policy is absent avoids spending tokens on a tag the
263
+ // aggregator wouldn't act on. The probe is bounded per critic +
264
+ // per finding by `runSelfConsistencyProbe`'s eligibility guards
265
+ // (non-blocking severity → skip; no file → skip; loadFileContent
266
+ // null → skip without an LLM call).
267
+ const probeApplies = options.selfConsistencyProbe !== undefined &&
268
+ loaded.config.aggregation.unilateralVetoRules?.requireCorroborationFor.includes("self_inconsistent") === true;
269
+ const results = probeApplies
270
+ ? await Promise.all(rawResults.map(async (r) => applyProbePassToCritic(r, sha, cwd, options.selfConsistencyProbe, loaded, sink)))
271
+ : rawResults;
256
272
  const finishedAt = new Date().toISOString();
257
273
  artifact = buildAggregate({
258
274
  loaded,
@@ -311,7 +327,27 @@ export async function runReview(options) {
311
327
  (loaded.config.aggregation.policy === "min-complete-quorum"
312
328
  ? (loaded.config.aggregation.quorum ?? 2)
313
329
  : 2);
314
- const aggregateReason = quorumAggregateVerdict(results, loaded.config.aggregation.blockingSeverities, quorum).reason;
330
+ // Issue dark-factory-platform#112 thread the optional
331
+ // `unilateralVetoRules` so the `aggregateReason` telemetry value
332
+ // matches the artifact verdict (both now honor corroboration).
333
+ const quorumOutcome = quorumAggregateVerdict(results, loaded.config.aggregation.blockingSeverities, quorum, loaded.config.aggregation.unilateralVetoRules);
334
+ const aggregateReason = quorumOutcome.reason;
335
+ // Cursor finding (runner.ts:465) — emit one `critic_disagreement`
336
+ // event per demotion so operators auditing `_runs.ndjson` can
337
+ // grep the demotion stream during the review run. Without this,
338
+ // demotion visibility depends on later gate evaluation and the
339
+ // per-decision audit pattern documented for #112 is broken.
340
+ for (const note of quorumOutcome.disagreements) {
341
+ const loc = note.line !== undefined ? `${note.file}:${note.line}` : note.file;
342
+ emit(sink, {
343
+ ts: finishedAt,
344
+ event: "critic_disagreement",
345
+ commit: sha,
346
+ criticId: note.criticId,
347
+ status: note.flag,
348
+ detail: `${loc} — ${note.evidence}`,
349
+ });
350
+ }
315
351
  emit(sink, {
316
352
  ts: finishedAt,
317
353
  event: "review_finished",
@@ -575,6 +611,54 @@ function emit(sink, event) {
575
611
  if (sink)
576
612
  sink.emit(event);
577
613
  }
614
+ /**
615
+ * Issue dark-factory-platform#112 — run the self-consistency probe
616
+ * across one critic's findings and return a (possibly-new) CriticResult
617
+ * with the `selfInconsistent` flag stamped on findings the probe
618
+ * judged inconsistent. Pure aside from the probe call + git read; the
619
+ * probe and gitShowFile are the only side-effect channels.
620
+ *
621
+ * Behavior per finding (see `runSelfConsistencyProbe` for the full
622
+ * matrix):
623
+ * - non-blocking severity OR no file → skip (probe not invoked).
624
+ * - blocking severity AND file present → load file content via
625
+ * `gitShowFile(sha, path)`; pass to probe; stamp if inconsistent.
626
+ * - probe error / timeout / malformed output → default-to-consistent.
627
+ *
628
+ * Emits one `self_consistency_probe` event per processed finding for
629
+ * audit-log visibility (matches the cycle 322.7 pattern of per-decision
630
+ * telemetry).
631
+ */
632
+ async function applyProbePassToCritic(critic, sha, cwd, probe, loaded, sink) {
633
+ const blockingSeverities = loaded.config.aggregation.blockingSeverities;
634
+ if (critic.status !== "complete" || critic.findings.length === 0) {
635
+ return critic;
636
+ }
637
+ let mutated = false;
638
+ const newFindings = await Promise.all(critic.findings.map(async (f) => {
639
+ const result = await runSelfConsistencyProbe(f, critic.criticId, sha, blockingSeverities, async (path) => gitShowFile(sha, path, cwd), probe);
640
+ // Skip telemetry for trivial skips (non-blocking severity / no
641
+ // file) to avoid `_runs.ndjson` noise — those are the common
642
+ // case for any low-severity finding.
643
+ if (result.reason !== "probe_skipped") {
644
+ emit(sink, {
645
+ ts: new Date().toISOString(),
646
+ event: "self_consistency_probe",
647
+ commit: sha,
648
+ criticId: critic.criticId,
649
+ status: result.reason,
650
+ ...(result.detail !== undefined ? { detail: result.detail } : {}),
651
+ });
652
+ }
653
+ const tagged = applySelfConsistencyResult(f, result);
654
+ if (tagged !== f)
655
+ mutated = true;
656
+ return tagged;
657
+ }));
658
+ if (!mutated)
659
+ return critic;
660
+ return { ...critic, findings: newFindings };
661
+ }
578
662
  const SIGNAL_EXIT_CODES = { SIGINT: 130, SIGTERM: 143 };
579
663
  export function installSignalLockGuard(lockPath) {
580
664
  const handlers = {};