@hongmaple0820/scale-engine 0.49.0 → 0.50.1

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 (190) hide show
  1. package/README.en.md +2 -2
  2. package/README.md +2 -2
  3. package/dist/api/DashboardHttpConfig.d.ts +28 -0
  4. package/dist/api/DashboardHttpConfig.js +110 -0
  5. package/dist/api/DashboardHttpConfig.js.map +1 -0
  6. package/dist/api/cli.js +102 -11
  7. package/dist/api/cli.js.map +1 -1
  8. package/dist/api/http.d.ts +1 -0
  9. package/dist/api/http.js +50 -0
  10. package/dist/api/http.js.map +1 -0
  11. package/dist/artifact/types.d.ts +5 -0
  12. package/dist/artifact/types.js.map +1 -1
  13. package/dist/bootstrap/DependencyBootstrap.d.ts +1 -0
  14. package/dist/bootstrap/DependencyBootstrap.js +14 -3
  15. package/dist/bootstrap/DependencyBootstrap.js.map +1 -1
  16. package/dist/cli/cortexApplyCommand.d.ts +26 -0
  17. package/dist/cli/cortexApplyCommand.js +74 -0
  18. package/dist/cli/cortexApplyCommand.js.map +1 -0
  19. package/dist/cli/cortexCandidateCommands.d.ts +42 -0
  20. package/dist/cli/cortexCandidateCommands.js +119 -0
  21. package/dist/cli/cortexCandidateCommands.js.map +1 -0
  22. package/dist/cli/cortexCommands.d.ts +15 -0
  23. package/dist/cli/cortexCommands.js +57 -15
  24. package/dist/cli/cortexCommands.js.map +1 -1
  25. package/dist/cli/engineBootstrap.d.ts +1 -1
  26. package/dist/cli/engineBootstrap.js +2 -0
  27. package/dist/cli/engineBootstrap.js.map +1 -1
  28. package/dist/cli/evalCommands.js +1 -0
  29. package/dist/cli/evalCommands.js.map +1 -1
  30. package/dist/cli/phaseCommands.d.ts +28 -0
  31. package/dist/cli/phaseCommands.js +148 -9
  32. package/dist/cli/phaseCommands.js.map +1 -1
  33. package/dist/cli/runtimeSkillCommands.js +12 -2
  34. package/dist/cli/runtimeSkillCommands.js.map +1 -1
  35. package/dist/cli/shieldCommands.d.ts +1 -0
  36. package/dist/cli/shieldCommands.js +20 -7
  37. package/dist/cli/shieldCommands.js.map +1 -1
  38. package/dist/cli/workflowEvidenceCommands.d.ts +120 -0
  39. package/dist/cli/workflowEvidenceCommands.js +228 -2
  40. package/dist/cli/workflowEvidenceCommands.js.map +1 -1
  41. package/dist/cortex/AutoFixEventObservations.d.ts +11 -0
  42. package/dist/cortex/AutoFixEventObservations.js +72 -0
  43. package/dist/cortex/AutoFixEventObservations.js.map +1 -0
  44. package/dist/cortex/GateEvidenceObservations.d.ts +22 -0
  45. package/dist/cortex/GateEvidenceObservations.js +179 -0
  46. package/dist/cortex/GateEvidenceObservations.js.map +1 -0
  47. package/dist/cortex/GovernanceMetrics.d.ts +2 -0
  48. package/dist/cortex/GovernanceMetrics.js +112 -22
  49. package/dist/cortex/GovernanceMetrics.js.map +1 -1
  50. package/dist/cortex/InstinctApplicationRecorder.d.ts +28 -0
  51. package/dist/cortex/InstinctApplicationRecorder.js +145 -0
  52. package/dist/cortex/InstinctApplicationRecorder.js.map +1 -0
  53. package/dist/cortex/InstinctCandidateAudit.d.ts +3 -0
  54. package/dist/cortex/InstinctCandidateAudit.js +39 -0
  55. package/dist/cortex/InstinctCandidateAudit.js.map +1 -0
  56. package/dist/cortex/InstinctCandidateReview.d.ts +32 -0
  57. package/dist/cortex/InstinctCandidateReview.js +125 -0
  58. package/dist/cortex/InstinctCandidateReview.js.map +1 -0
  59. package/dist/cortex/InstinctExtractor.d.ts +1 -0
  60. package/dist/cortex/InstinctExtractor.js +24 -17
  61. package/dist/cortex/InstinctExtractor.js.map +1 -1
  62. package/dist/cortex/InstinctRuntimeEvidence.d.ts +14 -0
  63. package/dist/cortex/InstinctRuntimeEvidence.js +120 -0
  64. package/dist/cortex/InstinctRuntimeEvidence.js.map +1 -0
  65. package/dist/cortex/InstinctStore.d.ts +18 -3
  66. package/dist/cortex/InstinctStore.js +30 -9
  67. package/dist/cortex/InstinctStore.js.map +1 -1
  68. package/dist/cortex/SessionInjector.d.ts +1 -0
  69. package/dist/cortex/SessionInjector.js +15 -2
  70. package/dist/cortex/SessionInjector.js.map +1 -1
  71. package/dist/dashboard/DashboardServer.d.ts +79 -0
  72. package/dist/dashboard/DashboardServer.js +330 -6
  73. package/dist/dashboard/DashboardServer.js.map +1 -1
  74. package/dist/dashboard/spa/app.js +515 -0
  75. package/dist/dashboard/spa/components/DataTable.js +53 -0
  76. package/dist/dashboard/spa/components/EventStream.js +66 -0
  77. package/dist/dashboard/spa/components/LoadingState.js +39 -0
  78. package/dist/dashboard/spa/components/MetricCard.js +30 -0
  79. package/dist/dashboard/spa/components/Panel.js +27 -0
  80. package/dist/dashboard/spa/components/StatusBadge.js +51 -0
  81. package/dist/dashboard/spa/i18n.js +767 -0
  82. package/dist/dashboard/spa/index.html +463 -0
  83. package/dist/dashboard/spa/pages/costs.js +522 -0
  84. package/dist/dashboard/spa/pages/documents.js +540 -0
  85. package/dist/dashboard/spa/pages/knowledge.js +457 -0
  86. package/dist/dashboard/spa/pages/monitoring.js +361 -0
  87. package/dist/dashboard/spa/pages/overview.js +301 -0
  88. package/dist/dashboard/spa/pages/topology-renderers.js +251 -0
  89. package/dist/dashboard/spa/pages/topology.js +370 -0
  90. package/dist/dashboard/spa/pages/workflow-renderers.js +239 -0
  91. package/dist/dashboard/spa/pages/workflow.js +217 -0
  92. package/dist/env/EnvironmentDoctor.js +12 -7
  93. package/dist/env/EnvironmentDoctor.js.map +1 -1
  94. package/dist/eval/WorkflowEval.d.ts +9 -0
  95. package/dist/eval/WorkflowEval.js +348 -2
  96. package/dist/eval/WorkflowEval.js.map +1 -1
  97. package/dist/memory/MemoryBrain.d.ts +13 -0
  98. package/dist/memory/MemoryBrain.js +47 -0
  99. package/dist/memory/MemoryBrain.js.map +1 -1
  100. package/dist/memory/MemoryFabric.d.ts +1 -0
  101. package/dist/memory/MemoryFabric.js +12 -8
  102. package/dist/memory/MemoryFabric.js.map +1 -1
  103. package/dist/memory/MemoryLearning.d.ts +1 -0
  104. package/dist/memory/MemoryLearning.js +6 -3
  105. package/dist/memory/MemoryLearning.js.map +1 -1
  106. package/dist/memory/MemoryProviders.d.ts +8 -1
  107. package/dist/memory/MemoryProviders.js +143 -29
  108. package/dist/memory/MemoryProviders.js.map +1 -1
  109. package/dist/runtime/AiOsRuntime.d.ts +14 -1
  110. package/dist/runtime/AiOsRuntime.js +59 -3
  111. package/dist/runtime/AiOsRuntime.js.map +1 -1
  112. package/dist/runtime/RuntimeDoctor.js +3 -1
  113. package/dist/runtime/RuntimeDoctor.js.map +1 -1
  114. package/dist/runtime/RuntimeEvidenceLedger.d.ts +6 -0
  115. package/dist/runtime/RuntimeEvidenceLedger.js +52 -1
  116. package/dist/runtime/RuntimeEvidenceLedger.js.map +1 -1
  117. package/dist/runtime/SessionLedger.d.ts +2 -0
  118. package/dist/runtime/SessionLedger.js +4 -0
  119. package/dist/runtime/SessionLedger.js.map +1 -1
  120. package/dist/setup/SetupVerification.js +53 -5
  121. package/dist/setup/SetupVerification.js.map +1 -1
  122. package/dist/shield/PolicyCompiler.js +73 -12
  123. package/dist/shield/PolicyCompiler.js.map +1 -1
  124. package/dist/shield/ProtectedPaths.js +4 -2
  125. package/dist/shield/ProtectedPaths.js.map +1 -1
  126. package/dist/skills/SkillCatalog.d.ts +2 -0
  127. package/dist/skills/SkillCatalog.js +8 -0
  128. package/dist/skills/SkillCatalog.js.map +1 -1
  129. package/dist/skills/SkillDoctor.d.ts +19 -2
  130. package/dist/skills/SkillDoctor.js +163 -13
  131. package/dist/skills/SkillDoctor.js.map +1 -1
  132. package/dist/tools/SafeCommandRunner.d.ts +1 -0
  133. package/dist/tools/SafeCommandRunner.js +1 -0
  134. package/dist/tools/SafeCommandRunner.js.map +1 -1
  135. package/dist/tools/ToolCapabilityRegistry.js +25 -3
  136. package/dist/tools/ToolCapabilityRegistry.js.map +1 -1
  137. package/dist/tools/ToolOrchestrator.js +21 -0
  138. package/dist/tools/ToolOrchestrator.js.map +1 -1
  139. package/dist/version.d.ts +1 -1
  140. package/dist/version.js +1 -1
  141. package/dist/workflow/AgentLoopReadiness.d.ts +103 -0
  142. package/dist/workflow/AgentLoopReadiness.js +371 -0
  143. package/dist/workflow/AgentLoopReadiness.js.map +1 -0
  144. package/dist/workflow/EcosystemReadinessGate.d.ts +46 -0
  145. package/dist/workflow/EcosystemReadinessGate.js +126 -0
  146. package/dist/workflow/EcosystemReadinessGate.js.map +1 -0
  147. package/dist/workflow/EngineeringStandards.js +48 -3
  148. package/dist/workflow/EngineeringStandards.js.map +1 -1
  149. package/dist/workflow/GateCatalog.js +9 -0
  150. package/dist/workflow/GateCatalog.js.map +1 -1
  151. package/dist/workflow/GovernanceTemplatePacks.js +2 -26
  152. package/dist/workflow/GovernanceTemplatePacks.js.map +1 -1
  153. package/dist/workflow/GovernanceTemplates.js +8 -1
  154. package/dist/workflow/GovernanceTemplates.js.map +1 -1
  155. package/dist/workflow/ReleaseDeploymentLedger.d.ts +63 -0
  156. package/dist/workflow/ReleaseDeploymentLedger.js +154 -0
  157. package/dist/workflow/ReleaseDeploymentLedger.js.map +1 -0
  158. package/dist/workflow/ReviewAnalyzer.js +50 -3
  159. package/dist/workflow/ReviewAnalyzer.js.map +1 -1
  160. package/dist/workflow/SessionPreamble.d.ts +7 -0
  161. package/dist/workflow/SessionPreamble.js +48 -9
  162. package/dist/workflow/SessionPreamble.js.map +1 -1
  163. package/dist/workflow/VerificationCommands.d.ts +1 -0
  164. package/dist/workflow/VerificationCommands.js.map +1 -1
  165. package/dist/workflow/VerificationProfile.d.ts +5 -0
  166. package/dist/workflow/VerificationProfile.js +26 -0
  167. package/dist/workflow/VerificationProfile.js.map +1 -1
  168. package/dist/workflow/VerificationSchema.d.ts +3 -0
  169. package/dist/workflow/VerificationSchema.js +6 -0
  170. package/dist/workflow/VerificationSchema.js.map +1 -1
  171. package/dist/workflow/WorkflowEffectiveness.d.ts +97 -0
  172. package/dist/workflow/WorkflowEffectiveness.js +302 -0
  173. package/dist/workflow/WorkflowEffectiveness.js.map +1 -0
  174. package/dist/workflow/WorkflowEffectivenessRenderer.d.ts +2 -0
  175. package/dist/workflow/WorkflowEffectivenessRenderer.js +67 -0
  176. package/dist/workflow/WorkflowEffectivenessRenderer.js.map +1 -0
  177. package/dist/workflow/WorkflowEffectivenessScoring.d.ts +6 -0
  178. package/dist/workflow/WorkflowEffectivenessScoring.js +243 -0
  179. package/dist/workflow/WorkflowEffectivenessScoring.js.map +1 -0
  180. package/dist/workflow/gates/GateSystem.d.ts +16 -0
  181. package/dist/workflow/gates/GateSystem.js +208 -41
  182. package/dist/workflow/gates/GateSystem.js.map +1 -1
  183. package/dist/workflow/gates/MetaGovernanceGates.js +269 -8
  184. package/dist/workflow/gates/MetaGovernanceGates.js.map +1 -1
  185. package/docs/reference/cli.md +2 -1
  186. package/docs/start/agent-governance-demo.md +1 -1
  187. package/docs/workflow/README.md +1 -1
  188. package/docs/workflow/templates/github-actions-scale-preflight.yml +4 -1
  189. package/package.json +6 -3
  190. package/scripts/workflow/run-vitest.mjs +123 -0
@@ -0,0 +1,243 @@
1
+ const SCORE_WEIGHTS = {
2
+ delivery: 25,
3
+ stability: 25,
4
+ memory: 15,
5
+ skills: 15,
6
+ hallucination: 10,
7
+ orchestration: 10,
8
+ };
9
+ export function scoreWorkflowEffectivenessReport(report) {
10
+ const sections = [
11
+ scoreAverage([
12
+ report.delivery.firstPassVerificationRate,
13
+ report.delivery.evalPassAt1Rate,
14
+ doraDeploymentFrequencyMetric(report.delivery.deploymentFrequency),
15
+ doraLeadTimeMetric(report.delivery.leadTimeForChanges),
16
+ invertMetric(report.delivery.averageFixIterations, 3),
17
+ ], SCORE_WEIGHTS.delivery),
18
+ scoreAverage([
19
+ report.stability.gatePassRate,
20
+ invertMetric(report.stability.changeFailureProxy, 1),
21
+ doraRestoreTimeMetric(report.stability.restoreTime),
22
+ invertMetric(report.stability.openFailureReplays, 5),
23
+ ], SCORE_WEIGHTS.stability),
24
+ scoreAverage([
25
+ report.memory.providerReadinessRate,
26
+ booleanMetric(report.memory.defaultExternalProviderAvailable),
27
+ invertBooleanMetric(report.memory.fallbackRisk),
28
+ report.memory.providerRecallHitRate,
29
+ ], SCORE_WEIGHTS.memory),
30
+ scoreAverage([
31
+ report.skills.installedWorkflowSkills,
32
+ emptyListMetric(report.skills.requiredMissingSkills),
33
+ emptyListMetric(report.skills.recommendedMissingSkills),
34
+ ], SCORE_WEIGHTS.skills),
35
+ scoreAverage([
36
+ invertMetric(report.hallucination.evalHallucinatedFactFailures, 3),
37
+ invertMetric(report.hallucination.humanCorrectionRate, 1),
38
+ ], SCORE_WEIGHTS.hallucination),
39
+ scoreAverage([
40
+ report.orchestration.instinctHitRate,
41
+ report.orchestration.autoFixSuccessRate,
42
+ invertMetric(report.orchestration.gateEscapeProxy, 1),
43
+ ], SCORE_WEIGHTS.orchestration),
44
+ ].filter((value) => value !== null);
45
+ if (sections.length === 0)
46
+ return { score: null, grade: 'unknown' };
47
+ const score = Math.round(sections.reduce((sum, value) => sum + value, 0));
48
+ return { score, grade: gradeForScore(score) };
49
+ }
50
+ export function buildWorkflowEffectivenessSummary(report) {
51
+ const metrics = collectMetrics(report);
52
+ const measuredSignals = metrics.filter(metric => metric.evidence !== 'missing').length;
53
+ const missingSignals = metrics.filter(metric => metric.evidence === 'missing').length;
54
+ const strengths = [];
55
+ const gaps = [];
56
+ const recommendations = [];
57
+ if ((report.stability.gatePassRate.value ?? 0) >= 0.8)
58
+ strengths.push('Gate evidence shows a strong pass rate.');
59
+ if ((report.memory.availableProviders.value ?? 0) >= 2)
60
+ strengths.push('Multiple memory providers are available.');
61
+ if ((report.memory.providerRecallItems.value ?? 0) > 0)
62
+ strengths.push('Memory recall returned provider-backed context.');
63
+ if ((report.skills.requiredMissingSkills.value ?? []).length === 0)
64
+ strengths.push('Required workflow skills are installed.');
65
+ if ((report.delivery.evalPassAt1Rate.value ?? 0) >= 0.8)
66
+ strengths.push('Workflow eval Pass@1 is strong.');
67
+ if (report.agentLoop.status === 'ready')
68
+ strengths.push('Agent Loop readiness has evidence for execution, recovery, guardrails, budget, delegation, and termination.');
69
+ if (report.delivery.deploymentFrequency.evidence === 'missing') {
70
+ gaps.push('DORA deployment frequency is not measured.');
71
+ recommendations.push('Record release/deploy events so deployment frequency and lead time become measured signals.');
72
+ }
73
+ if (report.delivery.leadTimeForChanges.evidence === 'missing') {
74
+ gaps.push('DORA lead time for changes is not measured.');
75
+ recommendations.push('Record commit timestamp and deploy completion timestamp for release events.');
76
+ }
77
+ if (report.stability.restoreTime.evidence === 'missing') {
78
+ gaps.push('DORA recovery time is not measured.');
79
+ recommendations.push('Add failed-release recovery timestamps or incident close evidence.');
80
+ }
81
+ if (report.stability.restoreTime.evidence === 'partial') {
82
+ gaps.push('DORA recovery time has failed deployments without restoredAt evidence.');
83
+ recommendations.push('Close failed deployment records with restoredAt once recovery is verified.');
84
+ }
85
+ if ((report.memory.defaultExternalProviderAvailable.value ?? false) === false) {
86
+ gaps.push('Default external memory provider is not available.');
87
+ recommendations.push('Keep gbrain project-local health checked in setup and preflight.');
88
+ }
89
+ if (report.memory.providerRecallHitRate.evidence === 'missing') {
90
+ gaps.push('Memory recall quality is not measured.');
91
+ recommendations.push('Run workflow effectiveness with provider recall enabled so memory availability is checked against real retrieved context.');
92
+ }
93
+ else if ((report.memory.availableProviders.value ?? 0) > 0 && (report.memory.providerRecallItems.value ?? 0) === 0) {
94
+ gaps.push('Memory providers are available, but recall probe returned no provider-backed items.');
95
+ recommendations.push('Seed or rehearse gbrain with reviewed workflow lessons, then keep provider rehearsal in the verification path.');
96
+ }
97
+ const recommendedMissing = report.skills.recommendedMissingSkills.value ?? [];
98
+ if (recommendedMissing.length > 0) {
99
+ gaps.push(`Recommended workflow skills missing: ${recommendedMissing.join(', ')}.`);
100
+ recommendations.push('Install or explicitly waive recommended workflow skills for the repo profile.');
101
+ }
102
+ if (report.orchestration.instinctHitRate.evidence === 'missing') {
103
+ gaps.push('Instinct hit rate is not yet measured from applied runtime evidence.');
104
+ recommendations.push('Record applied instinct evidence during verify/ship so Cortex learning has an outcome metric.');
105
+ }
106
+ if (report.orchestration.instinctHitRate.evidence === 'partial') {
107
+ gaps.push('Instinct hit rate only has legacy counters, not runtime session evidence.');
108
+ recommendations.push('Start runtime sessions with Cortex metadata and record applied instinct outcomes to prove learning effectiveness.');
109
+ }
110
+ if (report.agentLoop.status !== 'ready') {
111
+ gaps.push(`Agent Loop readiness is ${report.agentLoop.status}.`);
112
+ recommendations.push(...agentLoopRecommendations(report));
113
+ }
114
+ return {
115
+ measuredSignals,
116
+ missingSignals,
117
+ strengths,
118
+ gaps,
119
+ recommendations: [...new Set(recommendations)],
120
+ };
121
+ }
122
+ function scoreAverage(metrics, weight) {
123
+ const values = metrics
124
+ .filter(metric => metric.evidence !== 'missing' && metric.value !== null)
125
+ .map(metric => clamp(Number(metric.value), 0, 1));
126
+ if (values.length === 0)
127
+ return null;
128
+ return (values.reduce((sum, value) => sum + value, 0) / values.length) * weight;
129
+ }
130
+ function collectMetrics(report) {
131
+ return [
132
+ ...Object.values(report.delivery),
133
+ ...Object.values(report.stability),
134
+ ...Object.values(report.hallucination),
135
+ ...Object.values(report.longTask),
136
+ ...Object.values(report.memory),
137
+ ...Object.values(report.skills),
138
+ ...Object.values(report.orchestration),
139
+ report.agentLoop.toolExecutionEvidence,
140
+ report.agentLoop.loopRecoveryRate,
141
+ report.agentLoop.guardrailCoverage,
142
+ report.agentLoop.budgetControlEvidence,
143
+ report.agentLoop.handoffOrDelegationEvidence,
144
+ report.agentLoop.terminationEvidence,
145
+ ];
146
+ }
147
+ function agentLoopRecommendations(report) {
148
+ const recommendations = [];
149
+ if (report.agentLoop.toolExecutionEvidence.evidence === 'missing') {
150
+ recommendations.push('Record command/tool/skill runtime evidence before claiming agent-loop execution ability.');
151
+ }
152
+ if (report.agentLoop.loopRecoveryRate.evidence === 'missing') {
153
+ recommendations.push('Run at least one guarded AI OS or runtime-evidence task so loop recovery can be measured.');
154
+ }
155
+ if (report.agentLoop.guardrailCoverage.evidence === 'missing') {
156
+ recommendations.push('Record G7/G11 or AI OS evaluator guardrail evidence for boundary and security checks.');
157
+ }
158
+ else if ((report.agentLoop.guardrailCoverage.value ?? 1) < 1) {
159
+ recommendations.push('Inspect failed or blocked G7/G11 guardrail evidence and close boundary/security findings before release promotion.');
160
+ }
161
+ if (report.agentLoop.budgetControlEvidence.evidence === 'missing') {
162
+ recommendations.push('Use AI OS tool strategy evidence to prove bounded steps, cost, and fallback coverage.');
163
+ }
164
+ if (report.agentLoop.handoffOrDelegationEvidence.evidence === 'missing') {
165
+ recommendations.push('Record fresh-subagent, hybrid review, or delegated skill evidence for handoff/delegation coverage.');
166
+ }
167
+ if (report.agentLoop.terminationEvidence.evidence === 'missing') {
168
+ recommendations.push('Record verify/ship/status completion evidence so loops have a visible stop condition.');
169
+ }
170
+ return recommendations;
171
+ }
172
+ function invertMetric(metric, max) {
173
+ if (metric.evidence === 'missing' || metric.value === null)
174
+ return metric;
175
+ return { ...metric, value: 1 - clamp(Number(metric.value) / max, 0, 1) };
176
+ }
177
+ function booleanMetric(metric) {
178
+ if (metric.evidence === 'missing' || metric.value === null) {
179
+ return { ...metric, value: null };
180
+ }
181
+ return { ...metric, value: metric.value ? 1 : 0 };
182
+ }
183
+ function invertBooleanMetric(metric) {
184
+ if (metric.evidence === 'missing' || metric.value === null) {
185
+ return { ...metric, value: null };
186
+ }
187
+ return { ...metric, value: metric.value ? 0 : 1 };
188
+ }
189
+ function emptyListMetric(metric) {
190
+ if (metric.evidence === 'missing' || metric.value === null) {
191
+ return { ...metric, value: null };
192
+ }
193
+ return { ...metric, value: metric.value.length === 0 ? 1 : 0 };
194
+ }
195
+ function doraDeploymentFrequencyMetric(metric) {
196
+ if (metric.evidence === 'missing' || metric.value === null)
197
+ return metric;
198
+ const value = Number(metric.value);
199
+ if (value >= 1)
200
+ return { ...metric, value: 1 };
201
+ if (value >= 1 / 7)
202
+ return { ...metric, value: 0.8 };
203
+ if (value >= 1 / 30)
204
+ return { ...metric, value: 0.6 };
205
+ if (value > 0)
206
+ return { ...metric, value: 0.35 };
207
+ return { ...metric, value: 0 };
208
+ }
209
+ function doraLeadTimeMetric(metric) {
210
+ return doraDurationMetric(metric, 'lead');
211
+ }
212
+ function doraRestoreTimeMetric(metric) {
213
+ return doraDurationMetric(metric, 'restore');
214
+ }
215
+ function doraDurationMetric(metric, kind) {
216
+ if (metric.evidence === 'missing' || metric.value === null)
217
+ return metric;
218
+ const hours = Number(metric.value);
219
+ if (hours <= 1)
220
+ return { ...metric, value: 1 };
221
+ if (hours <= 24)
222
+ return { ...metric, value: 0.8 };
223
+ if (hours <= 168)
224
+ return { ...metric, value: 0.6 };
225
+ if (hours <= 720)
226
+ return { ...metric, value: 0.35 };
227
+ return { ...metric, value: kind === 'restore' ? 0 : 0.15 };
228
+ }
229
+ function clamp(value, min, max) {
230
+ if (!Number.isFinite(value))
231
+ return min;
232
+ return Math.max(min, Math.min(max, value));
233
+ }
234
+ function gradeForScore(score) {
235
+ if (score >= 85)
236
+ return 'A';
237
+ if (score >= 70)
238
+ return 'B';
239
+ if (score >= 55)
240
+ return 'C';
241
+ return 'D';
242
+ }
243
+ //# sourceMappingURL=WorkflowEffectivenessScoring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowEffectivenessScoring.js","sourceRoot":"","sources":["../../src/workflow/WorkflowEffectivenessScoring.ts"],"names":[],"mappings":"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"}
@@ -29,8 +29,10 @@ export interface RunShellCommandOptions {
29
29
  compressOutput?: boolean;
30
30
  compressionMaxChars?: number;
31
31
  compressionMaxLines?: number;
32
+ env?: NodeJS.ProcessEnv;
32
33
  commandRunEvidence?: CommandRunEvidenceOptions;
33
34
  }
35
+ export declare function resolveGateTimeoutMs(stage: GateStage, fallbackMs: number): number;
34
36
  export interface SecurityGateOptions {
35
37
  rootDir?: string;
36
38
  scanDirs?: string[];
@@ -41,6 +43,8 @@ export interface SecurityGateOptions {
41
43
  dependencyAudit?: boolean;
42
44
  dependencyAuditMode?: DependencyAuditMode;
43
45
  dependencyAuditChangedPackages?: string[];
46
+ changedFiles?: string[];
47
+ changedFilesProvider?: () => Promise<string[]> | string[];
44
48
  }
45
49
  export declare function runShellCommand(command: string, timeout: number, cwd?: string, options?: RunShellCommandOptions): Promise<CommandResult>;
46
50
  export declare class GateSystem {
@@ -50,6 +54,8 @@ export declare class GateSystem {
50
54
  private evidenceStore;
51
55
  private commands;
52
56
  private artifactWriter;
57
+ private rootDir;
58
+ private scaleDir;
53
59
  constructor(eventBus: IEventBus, commandConfig?: VerificationCommandConfig, artifactWriter?: WorkflowArtifactWriter);
54
60
  registerGate(gate: IGate): void;
55
61
  executeGate(stage: GateStage): Promise<GateResult>;
@@ -63,6 +69,7 @@ export declare class GateSystem {
63
69
  getResult(stage: GateStage): GateResult | undefined;
64
70
  getAllResults(): Map<GateStage, GateResult>;
65
71
  private getChangedFiles;
72
+ private cacheContextForGate;
66
73
  private registerDefaultGates;
67
74
  }
68
75
  export declare class ExplorationGate implements IGate {
@@ -153,9 +160,15 @@ export declare class SecurityGate implements IGate {
153
160
  private dependencyAudit;
154
161
  private dependencyAuditMode?;
155
162
  private dependencyAuditChangedPackages?;
163
+ private changedFiles?;
164
+ private changedFilesProvider?;
156
165
  constructor(options?: SecurityGateOptions);
157
166
  execute(): Promise<GateResult>;
158
167
  private scan;
168
+ private resolveChangedFiles;
169
+ private normalizeChangedFile;
170
+ private blocksFinding;
171
+ private isChangedFinding;
159
172
  private scanFile;
160
173
  private walkDir;
161
174
  private rulesForFile;
@@ -164,6 +177,9 @@ export declare class SecurityGate implements IGate {
164
177
  private dependencyEvidence;
165
178
  private isTestPath;
166
179
  private isRuleDefinition;
180
+ private isSecurityRuleSource;
181
+ private isGeneratedShieldHook;
182
+ private isSecurityRuleDefinitionLine;
167
183
  private isSecurityTestFixture;
168
184
  }
169
185
  export declare class ProductSmokeGate implements IGate {