@captain_z/zsk 1.8.7 → 1.8.9
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 +34 -16
- package/dist/bin.js +6 -0
- package/dist/bin.js.map +1 -1
- package/dist/commands/prepare.js +3 -0
- package/dist/commands/prepare.js.map +1 -1
- package/dist/core/anchor-drift.d.ts +79 -0
- package/dist/core/anchor-drift.js +198 -0
- package/dist/core/anchor-drift.js.map +1 -0
- package/dist/core/decoupling-eval.d.ts +53 -0
- package/dist/core/decoupling-eval.js +260 -0
- package/dist/core/decoupling-eval.js.map +1 -0
- package/dist/core/installer.js +2 -2
- package/dist/core/installer.js.map +1 -1
- package/dist/core/issue-publish-adapter.d.ts +50 -0
- package/dist/core/issue-publish-adapter.js +371 -0
- package/dist/core/issue-publish-adapter.js.map +1 -0
- package/dist/core/prepare-artifacts.d.ts +2 -0
- package/dist/core/prepare-artifacts.js +2 -0
- package/dist/core/prepare-artifacts.js.map +1 -1
- package/dist/core/prepare-readiness.d.ts +40 -0
- package/dist/core/prepare-readiness.js +268 -0
- package/dist/core/prepare-readiness.js.map +1 -0
- package/dist/core/prepare-sync.d.ts +2 -0
- package/dist/core/prepare-sync.js +8 -16
- package/dist/core/prepare-sync.js.map +1 -1
- package/dist/core/review-skill-policy.d.ts +74 -0
- package/dist/core/review-skill-policy.js +278 -0
- package/dist/core/review-skill-policy.js.map +1 -0
- package/dist/core/skills.js +38 -14
- package/dist/core/skills.js.map +1 -1
- package/dist/core/source-snapshot-adapters.d.ts +3 -0
- package/dist/core/source-snapshot-adapters.js.map +1 -1
- package/dist/core/stage-clarity-verification.js +30 -16
- package/dist/core/stage-clarity-verification.js.map +1 -1
- package/dist/core/task-decomposition.d.ts +64 -0
- package/dist/core/task-decomposition.js +325 -0
- package/dist/core/task-decomposition.js.map +1 -0
- package/dist/core/task-plan-adapter.d.ts +57 -0
- package/dist/core/task-plan-adapter.js +298 -0
- package/dist/core/task-plan-adapter.js.map +1 -0
- package/dist/core/validation-packet.d.ts +86 -0
- package/dist/core/validation-packet.js +313 -0
- package/dist/core/validation-packet.js.map +1 -0
- package/dist/core/workflow-orchestration-policy.d.ts +92 -0
- package/dist/core/workflow-orchestration-policy.js +215 -0
- package/dist/core/workflow-orchestration-policy.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
const REAL_WIRING_EVIDENCE = new Set(["integration", "smoke", "manual", "review"]);
|
|
2
|
+
const TARGET_SCORE = 100;
|
|
3
|
+
export function evaluateValidationPacket(packet) {
|
|
4
|
+
const diagnostics = [
|
|
5
|
+
...diagnoseAcceptanceMapping(packet),
|
|
6
|
+
...diagnoseImplementationLoop(packet),
|
|
7
|
+
...diagnoseContractTiers(packet),
|
|
8
|
+
...diagnoseBugfixRedEvidence(packet),
|
|
9
|
+
...diagnoseMockOnlyCriticalPaths(packet),
|
|
10
|
+
...diagnoseImplementationAssertions(packet),
|
|
11
|
+
...diagnoseMissingNegativeEvidence(packet),
|
|
12
|
+
...diagnoseQualitySignals(packet),
|
|
13
|
+
];
|
|
14
|
+
const status = assessmentStatus(diagnostics);
|
|
15
|
+
const score = scoreDiagnostics(diagnostics);
|
|
16
|
+
return {
|
|
17
|
+
status,
|
|
18
|
+
targetScore: TARGET_SCORE,
|
|
19
|
+
score,
|
|
20
|
+
confidence: confidenceFor(status, score),
|
|
21
|
+
nextActions: nextActionsFor(diagnostics),
|
|
22
|
+
diagnostics,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export function formatValidationPacketForPullRequest(packet) {
|
|
26
|
+
const assessment = evaluateValidationPacket(packet);
|
|
27
|
+
const lines = [
|
|
28
|
+
"### Validation packet",
|
|
29
|
+
`Validation: ${assessment.status}`,
|
|
30
|
+
`Score: ${assessment.score}/${assessment.targetScore}`,
|
|
31
|
+
`Confidence: ${assessment.confidence}`,
|
|
32
|
+
"",
|
|
33
|
+
"Acceptance criteria",
|
|
34
|
+
];
|
|
35
|
+
for (const criterion of packet.acceptanceCriteria) {
|
|
36
|
+
lines.push(`- ${criterion.id}: ${criterion.description}`);
|
|
37
|
+
for (const evidenceId of criterion.evidence) {
|
|
38
|
+
const evidence = packet.evidence.find((candidate) => candidate.id === evidenceId);
|
|
39
|
+
if (!evidence) {
|
|
40
|
+
lines.push(` - ${evidenceId} [missing]`);
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
lines.push(` - ${evidence.id} [${evidence.kind}/${evidence.status}]: ${evidence.behavior}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (packet.implementationLoop) {
|
|
47
|
+
lines.push("", "Implementation loop");
|
|
48
|
+
lines.push(`- strategy: ${packet.implementationLoop.strategy}`);
|
|
49
|
+
for (const cycle of packet.implementationLoop.cycles) {
|
|
50
|
+
lines.push(`- ${cycle.behavior}${cycle.sourceId ? ` (${cycle.sourceId})` : ""}`);
|
|
51
|
+
lines.push(` - RED: ${cycle.redEvidence ?? cycle.noRedReason ?? "missing"}`);
|
|
52
|
+
lines.push(` - GREEN: ${cycle.greenEvidence || "missing"}`);
|
|
53
|
+
if (cycle.refactorEvidence) {
|
|
54
|
+
lines.push(` - REFACTOR: ${cycle.refactorEvidence}`);
|
|
55
|
+
}
|
|
56
|
+
if (cycle.changedFiles && cycle.changedFiles.length > 0) {
|
|
57
|
+
lines.push(` - changed files: ${joinList(cycle.changedFiles)}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (packet.contractTiers) {
|
|
62
|
+
lines.push("", "Contract tiers");
|
|
63
|
+
lines.push(`- intrinsic engineering: ${joinList(packet.contractTiers.intrinsicEngineering)}`);
|
|
64
|
+
lines.push(`- contextual spec/design/task: ${joinList(packet.contractTiers.contextualSpecDesignTask)}`);
|
|
65
|
+
lines.push(`- workflow governance: ${joinList(packet.contractTiers.workflowGovernance)}`);
|
|
66
|
+
}
|
|
67
|
+
if (packet.mockBoundary) {
|
|
68
|
+
lines.push("", "Mock boundary");
|
|
69
|
+
lines.push(`- mocked: ${joinList(packet.mockBoundary.mocked)}`);
|
|
70
|
+
lines.push(`- real: ${joinList(packet.mockBoundary.real)}`);
|
|
71
|
+
lines.push(`- integration required: ${joinList(packet.mockBoundary.integrationRequired)}`);
|
|
72
|
+
}
|
|
73
|
+
if (assessment.diagnostics.length > 0) {
|
|
74
|
+
lines.push("", "Gaps");
|
|
75
|
+
for (const item of assessment.diagnostics) {
|
|
76
|
+
lines.push(`- ${item.code} [${item.severity}/${item.tier}]: ${item.message}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return lines.join("\n");
|
|
80
|
+
}
|
|
81
|
+
function diagnoseAcceptanceMapping(packet) {
|
|
82
|
+
return packet.acceptanceCriteria.flatMap((criterion) => {
|
|
83
|
+
const referenced = criterion.evidence
|
|
84
|
+
.map((id) => packet.evidence.find((evidence) => evidence.id === id))
|
|
85
|
+
.filter((evidence) => Boolean(evidence));
|
|
86
|
+
const passing = referenced.filter((evidence) => evidence.status === "pass");
|
|
87
|
+
if (passing.length === 0) {
|
|
88
|
+
return [
|
|
89
|
+
diagnostic({
|
|
90
|
+
code: "acceptance-criteria-unmapped",
|
|
91
|
+
severity: "failure",
|
|
92
|
+
tier: "contextual-spec-design-task",
|
|
93
|
+
message: `Acceptance criterion ${criterion.id} has no passing evidence.`,
|
|
94
|
+
evidence: criterion.evidence,
|
|
95
|
+
}),
|
|
96
|
+
];
|
|
97
|
+
}
|
|
98
|
+
const covering = passing.filter((evidence) => evidence.covers?.includes(criterion.id));
|
|
99
|
+
if (covering.length > 0)
|
|
100
|
+
return [];
|
|
101
|
+
return [
|
|
102
|
+
diagnostic({
|
|
103
|
+
code: "evidence-does-not-cover-criterion",
|
|
104
|
+
severity: "failure",
|
|
105
|
+
tier: "contextual-spec-design-task",
|
|
106
|
+
message: `Acceptance criterion ${criterion.id} references passing evidence that does not explicitly cover it.`,
|
|
107
|
+
evidence: passing.map((evidence) => evidence.id),
|
|
108
|
+
}),
|
|
109
|
+
];
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
function diagnoseImplementationLoop(packet) {
|
|
113
|
+
if (!isMeaningfulBehaviorChange(packet))
|
|
114
|
+
return [];
|
|
115
|
+
const loop = packet.implementationLoop;
|
|
116
|
+
if (!loop || loop.cycles.length === 0) {
|
|
117
|
+
return [
|
|
118
|
+
diagnostic({
|
|
119
|
+
code: "missing-implementation-loop",
|
|
120
|
+
severity: "warning",
|
|
121
|
+
tier: "intrinsic-engineering",
|
|
122
|
+
message: "Meaningful coding changes should record a per-behavior TDD, tracer-bullet, or focused-validation loop.",
|
|
123
|
+
evidence: [],
|
|
124
|
+
}),
|
|
125
|
+
];
|
|
126
|
+
}
|
|
127
|
+
const diagnostics = [];
|
|
128
|
+
for (const cycle of loop.cycles) {
|
|
129
|
+
if (!cycle.greenEvidence?.trim()) {
|
|
130
|
+
diagnostics.push(diagnostic({
|
|
131
|
+
code: "missing-cycle-green-evidence",
|
|
132
|
+
severity: "failure",
|
|
133
|
+
tier: "intrinsic-engineering",
|
|
134
|
+
message: `Implementation cycle ${cycle.behavior} has no GREEN evidence.`,
|
|
135
|
+
evidence: [cycle.behavior],
|
|
136
|
+
}));
|
|
137
|
+
}
|
|
138
|
+
if (loop.strategy === "tdd" && !cycle.redEvidence?.trim() && !cycle.noRedReason?.trim()) {
|
|
139
|
+
diagnostics.push(diagnostic({
|
|
140
|
+
code: "missing-cycle-red-evidence",
|
|
141
|
+
severity: "warning",
|
|
142
|
+
tier: "intrinsic-engineering",
|
|
143
|
+
message: `TDD cycle ${cycle.behavior} has no RED evidence or explicit no-red reason.`,
|
|
144
|
+
evidence: [cycle.behavior],
|
|
145
|
+
}));
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return diagnostics;
|
|
149
|
+
}
|
|
150
|
+
function diagnoseContractTiers(packet) {
|
|
151
|
+
if (!isMeaningfulBehaviorChange(packet))
|
|
152
|
+
return [];
|
|
153
|
+
if (packet.contractTiers)
|
|
154
|
+
return [];
|
|
155
|
+
return [
|
|
156
|
+
diagnostic({
|
|
157
|
+
code: "missing-contract-tiers",
|
|
158
|
+
severity: "warning",
|
|
159
|
+
tier: "intrinsic-engineering",
|
|
160
|
+
message: "Coding validation packets should mark intrinsic, contextual, and workflow-governance contract tiers.",
|
|
161
|
+
evidence: [],
|
|
162
|
+
}),
|
|
163
|
+
];
|
|
164
|
+
}
|
|
165
|
+
function diagnoseBugfixRedEvidence(packet) {
|
|
166
|
+
if (packet.change?.kind !== "bugfix")
|
|
167
|
+
return [];
|
|
168
|
+
if (packet.change.noRedReason)
|
|
169
|
+
return [];
|
|
170
|
+
if (packet.evidence.some((evidence) => evidence.red))
|
|
171
|
+
return [];
|
|
172
|
+
return [
|
|
173
|
+
diagnostic({
|
|
174
|
+
code: "missing-red-evidence",
|
|
175
|
+
severity: "warning",
|
|
176
|
+
tier: "intrinsic-engineering",
|
|
177
|
+
message: "Bug fix packet has no red evidence or explicit reason why red-first was not possible.",
|
|
178
|
+
evidence: [],
|
|
179
|
+
}),
|
|
180
|
+
];
|
|
181
|
+
}
|
|
182
|
+
function diagnoseMockOnlyCriticalPaths(packet) {
|
|
183
|
+
const boundary = packet.mockBoundary;
|
|
184
|
+
if (!boundary || boundary.integrationRequired.length === 0)
|
|
185
|
+
return [];
|
|
186
|
+
const missing = boundary.integrationRequired.filter((requiredPath) => !hasRealWiringEvidenceFor(packet.evidence, requiredPath));
|
|
187
|
+
if (missing.length === 0)
|
|
188
|
+
return [];
|
|
189
|
+
return [
|
|
190
|
+
diagnostic({
|
|
191
|
+
code: "mock-only-critical-path",
|
|
192
|
+
severity: "failure",
|
|
193
|
+
tier: "intrinsic-engineering",
|
|
194
|
+
message: "Critical integration path is represented only by mocked or unit evidence.",
|
|
195
|
+
evidence: missing,
|
|
196
|
+
}),
|
|
197
|
+
];
|
|
198
|
+
}
|
|
199
|
+
function hasRealWiringEvidenceFor(evidenceList, requiredPath) {
|
|
200
|
+
return evidenceList.some((evidence) => evidence.status === "pass" &&
|
|
201
|
+
REAL_WIRING_EVIDENCE.has(evidence.kind) &&
|
|
202
|
+
evidenceMatchesRequiredPath(evidence, requiredPath));
|
|
203
|
+
}
|
|
204
|
+
function evidenceMatchesRequiredPath(evidence, requiredPath) {
|
|
205
|
+
const required = normalizeEvidenceText(requiredPath);
|
|
206
|
+
const candidates = [
|
|
207
|
+
evidence.id,
|
|
208
|
+
evidence.behavior,
|
|
209
|
+
...(evidence.covers ?? []),
|
|
210
|
+
...(evidence.exercises ?? []),
|
|
211
|
+
].map(normalizeEvidenceText).filter(Boolean);
|
|
212
|
+
return candidates.some((candidate) => candidate === required || candidate.includes(required));
|
|
213
|
+
}
|
|
214
|
+
function diagnoseImplementationAssertions(packet) {
|
|
215
|
+
return packet.evidence
|
|
216
|
+
.filter((evidence) => evidence.assertion === "implementation")
|
|
217
|
+
.map((evidence) => diagnostic({
|
|
218
|
+
code: "implementation-detail-assertion",
|
|
219
|
+
severity: "warning",
|
|
220
|
+
tier: "intrinsic-engineering",
|
|
221
|
+
message: `Evidence ${evidence.id} asserts implementation details instead of observable behavior.`,
|
|
222
|
+
evidence: [evidence.id],
|
|
223
|
+
}));
|
|
224
|
+
}
|
|
225
|
+
function diagnoseMissingNegativeEvidence(packet) {
|
|
226
|
+
if (packet.change?.kind !== "feature" && packet.change?.kind !== "bugfix")
|
|
227
|
+
return [];
|
|
228
|
+
if (packet.evidence.some((evidence) => evidence.negative))
|
|
229
|
+
return [];
|
|
230
|
+
return [
|
|
231
|
+
diagnostic({
|
|
232
|
+
code: "missing-negative-evidence",
|
|
233
|
+
severity: "warning",
|
|
234
|
+
tier: "intrinsic-engineering",
|
|
235
|
+
message: "Feature or bugfix packet has no negative evidence for invalid, failing, or guarded behavior.",
|
|
236
|
+
evidence: [],
|
|
237
|
+
}),
|
|
238
|
+
];
|
|
239
|
+
}
|
|
240
|
+
function diagnoseQualitySignals(packet) {
|
|
241
|
+
const signals = packet.qualitySignals;
|
|
242
|
+
if (!signals)
|
|
243
|
+
return [];
|
|
244
|
+
return [
|
|
245
|
+
...qualityListDiagnostic("placeholder-left-in-code", "failure", signals.placeholders),
|
|
246
|
+
...qualityListDiagnostic("hack-left-in-code", "failure", signals.hacks),
|
|
247
|
+
...qualityListDiagnostic("style-issue", "warning", signals.styleIssues),
|
|
248
|
+
...qualityListDiagnostic("type-issue", "warning", signals.typeIssues),
|
|
249
|
+
...qualityListDiagnostic("error-handling-gap", "warning", signals.errorHandlingGaps),
|
|
250
|
+
...qualityListDiagnostic("scope-violation", "failure", signals.scopeViolations),
|
|
251
|
+
...qualityListDiagnostic("contract-violation", "failure", signals.contractViolations),
|
|
252
|
+
...(signals.broadRefactor
|
|
253
|
+
? [
|
|
254
|
+
diagnostic({
|
|
255
|
+
code: "broad-refactor-without-validation",
|
|
256
|
+
severity: "warning",
|
|
257
|
+
tier: "intrinsic-engineering",
|
|
258
|
+
message: "Packet reports broad refactor risk; require focused validation evidence before trusting green tests.",
|
|
259
|
+
evidence: [],
|
|
260
|
+
}),
|
|
261
|
+
]
|
|
262
|
+
: []),
|
|
263
|
+
];
|
|
264
|
+
}
|
|
265
|
+
function qualityListDiagnostic(code, severity, values) {
|
|
266
|
+
if (!values || values.length === 0)
|
|
267
|
+
return [];
|
|
268
|
+
return [
|
|
269
|
+
diagnostic({
|
|
270
|
+
code,
|
|
271
|
+
severity,
|
|
272
|
+
tier: "intrinsic-engineering",
|
|
273
|
+
message: `${code} detected in validation packet.`,
|
|
274
|
+
evidence: values,
|
|
275
|
+
}),
|
|
276
|
+
];
|
|
277
|
+
}
|
|
278
|
+
function diagnostic(d) {
|
|
279
|
+
return d;
|
|
280
|
+
}
|
|
281
|
+
function assessmentStatus(diagnostics) {
|
|
282
|
+
if (diagnostics.some((diagnostic) => diagnostic.severity === "failure"))
|
|
283
|
+
return "untrusted";
|
|
284
|
+
if (diagnostics.length > 0)
|
|
285
|
+
return "warning";
|
|
286
|
+
return "trusted";
|
|
287
|
+
}
|
|
288
|
+
function scoreDiagnostics(diagnostics) {
|
|
289
|
+
const penalty = diagnostics.reduce((total, diagnostic) => {
|
|
290
|
+
return total + (diagnostic.severity === "failure" ? 35 : 15);
|
|
291
|
+
}, 0);
|
|
292
|
+
return Math.max(0, TARGET_SCORE - penalty);
|
|
293
|
+
}
|
|
294
|
+
function confidenceFor(status, score) {
|
|
295
|
+
if (status === "untrusted" || score < 70)
|
|
296
|
+
return "low";
|
|
297
|
+
if (status === "warning" || score < 90)
|
|
298
|
+
return "medium";
|
|
299
|
+
return "high";
|
|
300
|
+
}
|
|
301
|
+
function nextActionsFor(diagnostics) {
|
|
302
|
+
return Array.from(new Set(diagnostics.map((diagnostic) => `${diagnostic.code}: ${diagnostic.message}`)));
|
|
303
|
+
}
|
|
304
|
+
function isMeaningfulBehaviorChange(packet) {
|
|
305
|
+
return packet.change?.kind === "feature" || packet.change?.kind === "bugfix";
|
|
306
|
+
}
|
|
307
|
+
function normalizeEvidenceText(value) {
|
|
308
|
+
return value.trim().toLowerCase().replace(/[^a-z0-9]+/g, " ").replace(/\s+/g, " ").trim();
|
|
309
|
+
}
|
|
310
|
+
function joinList(values) {
|
|
311
|
+
return values.length > 0 ? values.join(", ") : "none";
|
|
312
|
+
}
|
|
313
|
+
//# sourceMappingURL=validation-packet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation-packet.js","sourceRoot":"","sources":["../../src/core/validation-packet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { type AnchorDriftPacket, type DriftCheckpoint } from "./anchor-drift.js";
|
|
2
|
+
import { type ValidationPacket } from "./validation-packet.js";
|
|
3
|
+
export type WorkflowOrchestrationMode = "direct" | "governed" | "strict";
|
|
4
|
+
export type WorkflowOrchestrationStatus = "proceed" | "reroute" | "blocked" | "not-managed";
|
|
5
|
+
export type WorkflowSkillResultStatus = "succeeded" | "needs-context" | "blocked" | "failed";
|
|
6
|
+
export type WorkflowResourceStatus = "ready" | "missing" | "stale" | "failed";
|
|
7
|
+
export type WorkflowResourceKind = "spec" | "design" | "task" | "source" | "gate" | "validation" | "anchor" | "other";
|
|
8
|
+
export type WorkflowActionType = "next-skill" | "prepare-selector" | "degrade" | "block" | "gate" | "dispatch" | "issue" | "clarify-hitl" | "reroute" | "record-assumption";
|
|
9
|
+
export type WorkflowOrchestrationPacket = {
|
|
10
|
+
version: 1;
|
|
11
|
+
mode: WorkflowOrchestrationMode;
|
|
12
|
+
profile: string;
|
|
13
|
+
stage: string;
|
|
14
|
+
selectedSkill: string;
|
|
15
|
+
requiredResources: WorkflowRequiredResource[];
|
|
16
|
+
gatePolicy: WorkflowGatePolicy;
|
|
17
|
+
staffingPolicy: WorkflowStaffingPolicy;
|
|
18
|
+
issuePolicy: WorkflowIssuePolicy;
|
|
19
|
+
validationPolicy: WorkflowValidationPolicy;
|
|
20
|
+
anchorPacket?: AnchorDriftPacket;
|
|
21
|
+
stageSequence?: WorkflowStageRoute[];
|
|
22
|
+
};
|
|
23
|
+
export type WorkflowRequiredResource = {
|
|
24
|
+
id: string;
|
|
25
|
+
kind: WorkflowResourceKind;
|
|
26
|
+
required: boolean;
|
|
27
|
+
status: WorkflowResourceStatus;
|
|
28
|
+
version?: string;
|
|
29
|
+
};
|
|
30
|
+
export type WorkflowGatePolicy = {
|
|
31
|
+
required: boolean;
|
|
32
|
+
evidence?: string;
|
|
33
|
+
allowWaiver?: boolean;
|
|
34
|
+
};
|
|
35
|
+
export type WorkflowStaffingPolicy = {
|
|
36
|
+
mode: "solo" | "lanes" | "subagents";
|
|
37
|
+
requiredRoles?: string[];
|
|
38
|
+
allowSequentialFallback?: boolean;
|
|
39
|
+
};
|
|
40
|
+
export type WorkflowIssuePolicy = {
|
|
41
|
+
createIssues: "never" | "workflow-only" | "strict-blockers";
|
|
42
|
+
publishTasks: boolean;
|
|
43
|
+
};
|
|
44
|
+
export type WorkflowValidationPolicy = {
|
|
45
|
+
requireValidationPacket: boolean;
|
|
46
|
+
requirePrMrEvidenceBlock: boolean;
|
|
47
|
+
requireRealEvidenceForCriticalPaths?: boolean;
|
|
48
|
+
};
|
|
49
|
+
export type WorkflowStageRoute = {
|
|
50
|
+
stage: string;
|
|
51
|
+
skill: string;
|
|
52
|
+
};
|
|
53
|
+
export type WorkflowSkillResult = {
|
|
54
|
+
skill: string;
|
|
55
|
+
status: WorkflowSkillResultStatus;
|
|
56
|
+
confidence: "high" | "medium" | "low";
|
|
57
|
+
validationPacket?: ValidationPacket;
|
|
58
|
+
reviewLanes?: WorkflowReviewLaneResult[];
|
|
59
|
+
localDriftSignals?: DriftCheckpoint[];
|
|
60
|
+
workflowSideEffects?: string[];
|
|
61
|
+
suggestedNextSkill?: string;
|
|
62
|
+
};
|
|
63
|
+
export type WorkflowReviewLaneResult = {
|
|
64
|
+
id: string;
|
|
65
|
+
status: "checked" | "risk" | "not-applicable";
|
|
66
|
+
};
|
|
67
|
+
export type WorkflowOrchestrationInput = {
|
|
68
|
+
version: 1;
|
|
69
|
+
packet?: WorkflowOrchestrationPacket;
|
|
70
|
+
skillResult: WorkflowSkillResult;
|
|
71
|
+
};
|
|
72
|
+
export type WorkflowOrchestrationDiagnostic = {
|
|
73
|
+
code: string;
|
|
74
|
+
severity: "warning" | "failure";
|
|
75
|
+
message: string;
|
|
76
|
+
evidence: string[];
|
|
77
|
+
};
|
|
78
|
+
export type WorkflowOrchestrationAction = {
|
|
79
|
+
owner: "workflow";
|
|
80
|
+
type: WorkflowActionType;
|
|
81
|
+
reason: string;
|
|
82
|
+
target?: string;
|
|
83
|
+
};
|
|
84
|
+
export type WorkflowOrchestrationAssessment = {
|
|
85
|
+
status: WorkflowOrchestrationStatus;
|
|
86
|
+
confidence: "high" | "medium" | "low";
|
|
87
|
+
nextSkill?: string;
|
|
88
|
+
missingResources: WorkflowRequiredResource[];
|
|
89
|
+
diagnostics: WorkflowOrchestrationDiagnostic[];
|
|
90
|
+
actions: WorkflowOrchestrationAction[];
|
|
91
|
+
};
|
|
92
|
+
export declare function evaluateWorkflowOrchestration(input: WorkflowOrchestrationInput): WorkflowOrchestrationAssessment;
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import { evaluateAnchorDrift, } from "./anchor-drift.js";
|
|
2
|
+
import { evaluateValidationPacket, } from "./validation-packet.js";
|
|
3
|
+
const WORKFLOW_SIDE_EFFECT_PATTERNS = [
|
|
4
|
+
/\broute\b/i,
|
|
5
|
+
/\breroute\b/i,
|
|
6
|
+
/\bcreate-?issue\b/i,
|
|
7
|
+
/\bpublish-?issue\b/i,
|
|
8
|
+
/\bgate\b/i,
|
|
9
|
+
/\bdispatch\b/i,
|
|
10
|
+
/\bstaff(?:ing)?\b/i,
|
|
11
|
+
/\bnext-?skill\b/i,
|
|
12
|
+
];
|
|
13
|
+
export function evaluateWorkflowOrchestration(input) {
|
|
14
|
+
const packet = input.packet;
|
|
15
|
+
if (!packet) {
|
|
16
|
+
return {
|
|
17
|
+
status: "not-managed",
|
|
18
|
+
confidence: input.skillResult.confidence,
|
|
19
|
+
missingResources: [],
|
|
20
|
+
diagnostics: [
|
|
21
|
+
diagnostic("missing-workflow-packet", "warning", "No workflow packet was supplied; direct skill execution remains outside workflow orchestration.", []),
|
|
22
|
+
...diagnoseSkillSideEffects(input.skillResult),
|
|
23
|
+
],
|
|
24
|
+
actions: [],
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
const missingResources = packet.requiredResources.filter((resource) => resource.required && resource.status !== "ready");
|
|
28
|
+
const diagnostics = [
|
|
29
|
+
...diagnosePacket(packet),
|
|
30
|
+
...diagnoseResources(packet, missingResources),
|
|
31
|
+
...diagnoseGate(packet),
|
|
32
|
+
...diagnoseValidation(packet, input.skillResult),
|
|
33
|
+
...diagnoseRouting(packet, input.skillResult),
|
|
34
|
+
...diagnoseSkillSideEffects(input.skillResult),
|
|
35
|
+
...diagnoseDrift(packet, input.skillResult),
|
|
36
|
+
];
|
|
37
|
+
const actions = [
|
|
38
|
+
...resourceActions(packet, missingResources),
|
|
39
|
+
...gateActions(packet),
|
|
40
|
+
...validationActions(packet, diagnostics),
|
|
41
|
+
...driftActions(input.skillResult.localDriftSignals ?? []),
|
|
42
|
+
];
|
|
43
|
+
const nextSkill = nextSkillFor(packet, input.skillResult);
|
|
44
|
+
const hasFailure = diagnostics.some((item) => item.severity === "failure");
|
|
45
|
+
const hasReroute = actions.some((action) => action.type === "prepare-selector" || action.type === "reroute");
|
|
46
|
+
if (!hasFailure && nextSkill) {
|
|
47
|
+
actions.push(action("next-skill", `Workflow routes ${packet.stage} to ${nextSkill}.`, nextSkill));
|
|
48
|
+
}
|
|
49
|
+
if (!hasFailure && shouldDispatch(packet)) {
|
|
50
|
+
actions.push(action("dispatch", "Workflow staffing policy requests role or lane dispatch.", packet.stage));
|
|
51
|
+
}
|
|
52
|
+
if (hasFailure && packet.issuePolicy.createIssues === "strict-blockers") {
|
|
53
|
+
actions.push(action("issue", "Workflow issue policy records strict blockers as workflow-owned issues.", packet.stage));
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
status: hasFailure ? "blocked" : hasReroute ? "reroute" : "proceed",
|
|
57
|
+
confidence: confidenceFor(input.skillResult.confidence, diagnostics),
|
|
58
|
+
...(hasFailure ? {} : nextSkill ? { nextSkill } : {}),
|
|
59
|
+
missingResources,
|
|
60
|
+
diagnostics,
|
|
61
|
+
actions,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function diagnosePacket(packet) {
|
|
65
|
+
const diagnostics = [];
|
|
66
|
+
if (packet.version !== 1) {
|
|
67
|
+
diagnostics.push(diagnostic("unsupported-workflow-packet-version", "failure", "Workflow packet must use version 1.", [String(packet.version)]));
|
|
68
|
+
}
|
|
69
|
+
for (const [field, value] of [
|
|
70
|
+
["mode", packet.mode],
|
|
71
|
+
["profile", packet.profile],
|
|
72
|
+
["stage", packet.stage],
|
|
73
|
+
["selectedSkill", packet.selectedSkill],
|
|
74
|
+
]) {
|
|
75
|
+
if (!String(value ?? "").trim()) {
|
|
76
|
+
diagnostics.push(diagnostic("missing-workflow-packet-field", "failure", `Workflow packet is missing ${field}.`, [field]));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (!packet.gatePolicy || !packet.staffingPolicy || !packet.issuePolicy || !packet.validationPolicy) {
|
|
80
|
+
diagnostics.push(diagnostic("missing-workflow-policy", "failure", "Workflow packet must include gate, staffing, issue, and validation policy.", []));
|
|
81
|
+
}
|
|
82
|
+
return diagnostics;
|
|
83
|
+
}
|
|
84
|
+
function diagnoseResources(packet, missingResources) {
|
|
85
|
+
return missingResources.map((resource) => diagnostic("missing-required-resource", packet.mode === "strict" ? "failure" : "warning", `Required ${resource.kind} resource ${resource.id} is ${resource.status}.`, [resource.id, resource.status]));
|
|
86
|
+
}
|
|
87
|
+
function diagnoseGate(packet) {
|
|
88
|
+
if (!packet.gatePolicy.required || packet.gatePolicy.evidence || packet.gatePolicy.allowWaiver)
|
|
89
|
+
return [];
|
|
90
|
+
return [
|
|
91
|
+
diagnostic("missing-gate-evidence", packet.mode === "strict" ? "failure" : "warning", "Workflow gate policy requires gate evidence or an explicit waiver.", [packet.stage]),
|
|
92
|
+
];
|
|
93
|
+
}
|
|
94
|
+
function diagnoseValidation(packet, skillResult) {
|
|
95
|
+
const diagnostics = [];
|
|
96
|
+
const validationPacket = skillResult.validationPacket;
|
|
97
|
+
if (packet.validationPolicy.requireValidationPacket && !validationPacket) {
|
|
98
|
+
diagnostics.push(diagnostic("missing-validation-packet", packet.mode === "strict" ? "failure" : "warning", "Workflow validation policy requires a validation packet.", [packet.stage]));
|
|
99
|
+
}
|
|
100
|
+
if (validationPacket) {
|
|
101
|
+
const assessment = evaluateValidationPacket(validationPacket);
|
|
102
|
+
if (assessment.status === "untrusted") {
|
|
103
|
+
diagnostics.push(diagnostic("untrusted-validation-packet", packet.mode === "strict" || packet.validationPolicy.requirePrMrEvidenceBlock ? "failure" : "warning", "Validation packet is untrusted and cannot support workflow progression.", assessment.diagnostics.map((item) => item.code)));
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (packet.validationPolicy.requirePrMrEvidenceBlock && !hasRequiredReviewLaneEvidence(skillResult.reviewLanes)) {
|
|
107
|
+
diagnostics.push(diagnostic("missing-review-lane-evidence", packet.mode === "strict" ? "failure" : "warning", "PR/MR evidence block requires review lane evidence that links review findings to validation.", ["tests-evidence"]));
|
|
108
|
+
}
|
|
109
|
+
return diagnostics;
|
|
110
|
+
}
|
|
111
|
+
function diagnoseRouting(packet, skillResult) {
|
|
112
|
+
if (!skillResult.suggestedNextSkill)
|
|
113
|
+
return [];
|
|
114
|
+
const workflowNext = nextSkillFor(packet, skillResult);
|
|
115
|
+
if (!workflowNext || workflowNext === skillResult.suggestedNextSkill)
|
|
116
|
+
return [];
|
|
117
|
+
return [
|
|
118
|
+
diagnostic("skill-suggested-next-ignored", "warning", "Workflow, not the skill result, chooses the next skill.", [skillResult.suggestedNextSkill, workflowNext]),
|
|
119
|
+
];
|
|
120
|
+
}
|
|
121
|
+
function diagnoseSkillSideEffects(skillResult) {
|
|
122
|
+
const effects = (skillResult.workflowSideEffects ?? []).filter((effect) => WORKFLOW_SIDE_EFFECT_PATTERNS.some((pattern) => pattern.test(effect)));
|
|
123
|
+
if (effects.length === 0)
|
|
124
|
+
return [];
|
|
125
|
+
return [
|
|
126
|
+
diagnostic("skill-workflow-side-effect", "failure", "Capability skill result attempted workflow-owned side effects.", effects),
|
|
127
|
+
];
|
|
128
|
+
}
|
|
129
|
+
function diagnoseDrift(packet, skillResult) {
|
|
130
|
+
const checkpoints = skillResult.localDriftSignals ?? [];
|
|
131
|
+
if (checkpoints.length === 0)
|
|
132
|
+
return [];
|
|
133
|
+
const assessment = evaluateAnchorDrift({
|
|
134
|
+
version: 1,
|
|
135
|
+
mode: packet.mode,
|
|
136
|
+
producer: "workflow",
|
|
137
|
+
anchor: packet.anchorPacket,
|
|
138
|
+
checkpoints,
|
|
139
|
+
});
|
|
140
|
+
return assessment.diagnostics
|
|
141
|
+
.filter((item) => item.code !== "missing-anchor-packet" || packet.mode !== "direct")
|
|
142
|
+
.map((item) => diagnostic(item.code, item.severity, item.message, item.evidence));
|
|
143
|
+
}
|
|
144
|
+
function resourceActions(packet, missingResources) {
|
|
145
|
+
if (missingResources.length === 0)
|
|
146
|
+
return [];
|
|
147
|
+
if (packet.mode === "direct") {
|
|
148
|
+
return missingResources.map((resource) => action("degrade", `Continue with missing ${resource.kind} resource at lower confidence.`, resource.id));
|
|
149
|
+
}
|
|
150
|
+
if (packet.mode === "governed") {
|
|
151
|
+
return missingResources.map((resource) => action("prepare-selector", `Run prepare selector for missing ${resource.kind} resource.`, resource.id));
|
|
152
|
+
}
|
|
153
|
+
return missingResources.map((resource) => action("block", `Strict workflow blocks until ${resource.kind} resource is ready.`, resource.id));
|
|
154
|
+
}
|
|
155
|
+
function gateActions(packet) {
|
|
156
|
+
if (!packet.gatePolicy.required || packet.gatePolicy.evidence || packet.gatePolicy.allowWaiver)
|
|
157
|
+
return [];
|
|
158
|
+
return [action("gate", "Workflow gate policy must collect or waive gate evidence.", packet.stage)];
|
|
159
|
+
}
|
|
160
|
+
function validationActions(packet, diagnostics) {
|
|
161
|
+
if (!diagnostics.some((item) => item.code === "untrusted-validation-packet" || item.code === "missing-validation-packet" || item.code === "missing-review-lane-evidence")) {
|
|
162
|
+
return [];
|
|
163
|
+
}
|
|
164
|
+
if (packet.validationPolicy.requirePrMrEvidenceBlock) {
|
|
165
|
+
return [action("block", "PR/MR evidence block is incomplete or untrusted.", "PR/MR")];
|
|
166
|
+
}
|
|
167
|
+
return [];
|
|
168
|
+
}
|
|
169
|
+
function driftActions(checkpoints) {
|
|
170
|
+
return checkpoints.map((checkpoint) => {
|
|
171
|
+
if (checkpoint.severity === "P0") {
|
|
172
|
+
return action("clarify-hitl", `P0 ${checkpoint.driftClass} drift requires precise clarification or HITL.`, checkpoint.checkpointName);
|
|
173
|
+
}
|
|
174
|
+
if (checkpoint.severity === "P1") {
|
|
175
|
+
return action("reroute", `P1 ${checkpoint.driftClass} drift requires workflow reroute or source update.`, checkpoint.checkpointName);
|
|
176
|
+
}
|
|
177
|
+
return action("record-assumption", `P2 ${checkpoint.driftClass} drift can continue after recording an assumption.`, checkpoint.checkpointName);
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
function nextSkillFor(packet, skillResult) {
|
|
181
|
+
if (skillResult.status !== "succeeded")
|
|
182
|
+
return undefined;
|
|
183
|
+
const sequence = packet.stageSequence ?? [];
|
|
184
|
+
const currentIndex = sequence.findIndex((item) => item.stage === packet.stage || item.skill === packet.selectedSkill);
|
|
185
|
+
if (currentIndex === -1)
|
|
186
|
+
return undefined;
|
|
187
|
+
return sequence[currentIndex + 1]?.skill;
|
|
188
|
+
}
|
|
189
|
+
function shouldDispatch(packet) {
|
|
190
|
+
return packet.staffingPolicy.mode !== "solo" && (packet.staffingPolicy.requiredRoles?.length ?? 0) > 0;
|
|
191
|
+
}
|
|
192
|
+
function hasRequiredReviewLaneEvidence(lanes) {
|
|
193
|
+
if (!lanes || lanes.length === 0)
|
|
194
|
+
return false;
|
|
195
|
+
return lanes.some((lane) => lane.id === "tests-evidence" && lane.status === "checked");
|
|
196
|
+
}
|
|
197
|
+
function confidenceFor(skillConfidence, diagnostics) {
|
|
198
|
+
if (diagnostics.some((item) => item.severity === "failure"))
|
|
199
|
+
return "low";
|
|
200
|
+
if (diagnostics.some((item) => item.severity === "warning") || skillConfidence === "medium")
|
|
201
|
+
return "medium";
|
|
202
|
+
return skillConfidence;
|
|
203
|
+
}
|
|
204
|
+
function diagnostic(code, severity, message, evidence) {
|
|
205
|
+
return { code, severity, message, evidence };
|
|
206
|
+
}
|
|
207
|
+
function action(type, reason, target) {
|
|
208
|
+
return {
|
|
209
|
+
owner: "workflow",
|
|
210
|
+
type,
|
|
211
|
+
reason,
|
|
212
|
+
...(target ? { target } : {}),
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=workflow-orchestration-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-orchestration-policy.js","sourceRoot":"","sources":["../../src/core/workflow-orchestration-policy.ts"],"names":[],"mappings":"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"}
|