@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.
- package/README.md +86 -2
- package/dist/adapters/critic-result-schema.d.ts +14 -14
- package/dist/adapters/index.d.ts +1 -0
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +7 -0
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/static-schema-lint.d.ts +68 -0
- package/dist/adapters/static-schema-lint.d.ts.map +1 -0
- package/dist/adapters/static-schema-lint.js +813 -0
- package/dist/adapters/static-schema-lint.js.map +1 -0
- package/dist/cli.d.ts +17 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +296 -41
- package/dist/cli.js.map +1 -1
- package/dist/commands/findings.d.ts +6 -0
- package/dist/commands/findings.d.ts.map +1 -0
- package/dist/commands/findings.js +196 -0
- package/dist/commands/findings.js.map +1 -0
- package/dist/commands/skills.d.ts +6 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +248 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/doctor.d.ts +17 -0
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +107 -0
- package/dist/doctor.js.map +1 -1
- package/dist/evidence/docker-build.d.ts +6 -0
- package/dist/evidence/docker-build.d.ts.map +1 -0
- package/dist/evidence/docker-build.js +199 -0
- package/dist/evidence/docker-build.js.map +1 -0
- package/dist/evidence/index.d.ts +1 -0
- package/dist/evidence/index.d.ts.map +1 -1
- package/dist/evidence/index.js +6 -0
- package/dist/evidence/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +2 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/doctor.d.ts.map +1 -1
- package/dist/mcp/tools/doctor.js +5 -0
- package/dist/mcp/tools/doctor.js.map +1 -1
- package/dist/mcp/tools/review-bypass.d.ts.map +1 -1
- package/dist/mcp/tools/review-bypass.js +21 -0
- package/dist/mcp/tools/review-bypass.js.map +1 -1
- package/dist/mcp/tools/skills-install.d.ts +6 -0
- package/dist/mcp/tools/skills-install.d.ts.map +1 -0
- package/dist/mcp/tools/skills-install.js +260 -0
- package/dist/mcp/tools/skills-install.js.map +1 -0
- package/dist/mcp/tools/stats-gate.d.ts.map +1 -1
- package/dist/mcp/tools/stats-gate.js +63 -15
- package/dist/mcp/tools/stats-gate.js.map +1 -1
- package/dist/policy/gate.d.ts +1 -1
- package/dist/policy/gate.d.ts.map +1 -1
- package/dist/policy/gate.js +96 -12
- package/dist/policy/gate.js.map +1 -1
- package/dist/prompt.d.ts +1 -0
- package/dist/prompt.d.ts.map +1 -1
- package/dist/prompt.js +105 -1
- package/dist/prompt.js.map +1 -1
- package/dist/report.d.ts +106 -3
- package/dist/report.d.ts.map +1 -1
- package/dist/report.js +282 -10
- package/dist/report.js.map +1 -1
- package/dist/runner.d.ts +2 -0
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +86 -2
- package/dist/runner.js.map +1 -1
- package/dist/self-consistency.d.ts +144 -0
- package/dist/self-consistency.d.ts.map +1 -0
- package/dist/self-consistency.js +368 -0
- package/dist/self-consistency.js.map +1 -0
- package/dist/skills/config.d.ts +176 -0
- package/dist/skills/config.d.ts.map +1 -0
- package/dist/skills/config.js +251 -0
- package/dist/skills/config.js.map +1 -0
- package/dist/skills/index.d.ts +4 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +8 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/install.d.ts +62 -0
- package/dist/skills/install.d.ts.map +1 -0
- package/dist/skills/install.js +315 -0
- package/dist/skills/install.js.map +1 -0
- package/dist/skills/template.d.ts +42 -0
- package/dist/skills/template.d.ts.map +1 -0
- package/dist/skills/template.js +95 -0
- package/dist/skills/template.js.map +1 -0
- package/dist/trusted-surface/rebind.d.ts.map +1 -1
- package/dist/trusted-surface/rebind.js +14 -1
- package/dist/trusted-surface/rebind.js.map +1 -1
- package/package.json +32 -2
- package/skills/README.md +89 -0
- package/skills/chief-engineer-blitz/SKILL.md.tmpl +443 -0
- package/skills/chief-engineer-blitz/skill.json +53 -0
- package/skills/chief-engineer-review/SKILL.md.tmpl +184 -0
- package/skills/chief-engineer-review/references/review-examples.md.tmpl +130 -0
- package/skills/chief-engineer-review/skill.json +67 -0
- package/skills/chief-engineer-review/templates/code-review-prompt.md.tmpl +111 -0
- package/skills/chief-engineer-review/templates/escalation-prompt.md.tmpl +56 -0
- package/skills/chief-engineer-review/templates/plan-review-prompt.md.tmpl +74 -0
- 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
|
-
|
|
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
|
-
|
|
129
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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) {
|
package/dist/report.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.js","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"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"}
|
|
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;
|
package/dist/runner.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
|
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
|
-
|
|
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 = {};
|