@hongmaple0820/scale-engine 0.48.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 (242) hide show
  1. package/README.en.md +2 -2
  2. package/README.md +2 -2
  3. package/dist/agents/evidenceDiscipline.d.ts +7 -0
  4. package/dist/agents/evidenceDiscipline.js +21 -0
  5. package/dist/agents/evidenceDiscipline.js.map +1 -0
  6. package/dist/agents/profiles.js +8 -1
  7. package/dist/agents/profiles.js.map +1 -1
  8. package/dist/agents/types.d.ts +1 -0
  9. package/dist/api/DashboardHttpConfig.d.ts +28 -0
  10. package/dist/api/DashboardHttpConfig.js +110 -0
  11. package/dist/api/DashboardHttpConfig.js.map +1 -0
  12. package/dist/api/cli.js +102 -11
  13. package/dist/api/cli.js.map +1 -1
  14. package/dist/api/http.d.ts +1 -0
  15. package/dist/api/http.js +50 -0
  16. package/dist/api/http.js.map +1 -0
  17. package/dist/artifact/types.d.ts +64 -0
  18. package/dist/artifact/types.js.map +1 -1
  19. package/dist/bootstrap/DependencyBootstrap.d.ts +1 -0
  20. package/dist/bootstrap/DependencyBootstrap.js +14 -3
  21. package/dist/bootstrap/DependencyBootstrap.js.map +1 -1
  22. package/dist/cli/cortexApplyCommand.d.ts +26 -0
  23. package/dist/cli/cortexApplyCommand.js +74 -0
  24. package/dist/cli/cortexApplyCommand.js.map +1 -0
  25. package/dist/cli/cortexCandidateCommands.d.ts +42 -0
  26. package/dist/cli/cortexCandidateCommands.js +119 -0
  27. package/dist/cli/cortexCandidateCommands.js.map +1 -0
  28. package/dist/cli/cortexCommands.d.ts +51 -0
  29. package/dist/cli/cortexCommands.js +127 -13
  30. package/dist/cli/cortexCommands.js.map +1 -1
  31. package/dist/cli/engineBootstrap.d.ts +1 -1
  32. package/dist/cli/engineBootstrap.js +2 -0
  33. package/dist/cli/engineBootstrap.js.map +1 -1
  34. package/dist/cli/evalCommands.js +13 -1
  35. package/dist/cli/evalCommands.js.map +1 -1
  36. package/dist/cli/phaseCommands.d.ts +81 -1
  37. package/dist/cli/phaseCommands.js +465 -31
  38. package/dist/cli/phaseCommands.js.map +1 -1
  39. package/dist/cli/runtimeSkillCommands.js +12 -2
  40. package/dist/cli/runtimeSkillCommands.js.map +1 -1
  41. package/dist/cli/shieldCommands.d.ts +1 -0
  42. package/dist/cli/shieldCommands.js +20 -7
  43. package/dist/cli/shieldCommands.js.map +1 -1
  44. package/dist/cli/workflowEvidenceCommands.d.ts +120 -0
  45. package/dist/cli/workflowEvidenceCommands.js +228 -2
  46. package/dist/cli/workflowEvidenceCommands.js.map +1 -1
  47. package/dist/cortex/AutoFixEventObservations.d.ts +11 -0
  48. package/dist/cortex/AutoFixEventObservations.js +72 -0
  49. package/dist/cortex/AutoFixEventObservations.js.map +1 -0
  50. package/dist/cortex/GateEvidenceObservations.d.ts +22 -0
  51. package/dist/cortex/GateEvidenceObservations.js +179 -0
  52. package/dist/cortex/GateEvidenceObservations.js.map +1 -0
  53. package/dist/cortex/GovernanceMetrics.d.ts +2 -0
  54. package/dist/cortex/GovernanceMetrics.js +112 -22
  55. package/dist/cortex/GovernanceMetrics.js.map +1 -1
  56. package/dist/cortex/InstinctApplicationRecorder.d.ts +28 -0
  57. package/dist/cortex/InstinctApplicationRecorder.js +145 -0
  58. package/dist/cortex/InstinctApplicationRecorder.js.map +1 -0
  59. package/dist/cortex/InstinctCandidateAudit.d.ts +3 -0
  60. package/dist/cortex/InstinctCandidateAudit.js +39 -0
  61. package/dist/cortex/InstinctCandidateAudit.js.map +1 -0
  62. package/dist/cortex/InstinctCandidateReview.d.ts +32 -0
  63. package/dist/cortex/InstinctCandidateReview.js +125 -0
  64. package/dist/cortex/InstinctCandidateReview.js.map +1 -0
  65. package/dist/cortex/InstinctExtractor.d.ts +1 -0
  66. package/dist/cortex/InstinctExtractor.js +24 -17
  67. package/dist/cortex/InstinctExtractor.js.map +1 -1
  68. package/dist/cortex/InstinctRuntimeEvidence.d.ts +14 -0
  69. package/dist/cortex/InstinctRuntimeEvidence.js +120 -0
  70. package/dist/cortex/InstinctRuntimeEvidence.js.map +1 -0
  71. package/dist/cortex/InstinctStore.d.ts +50 -4
  72. package/dist/cortex/InstinctStore.js +262 -48
  73. package/dist/cortex/InstinctStore.js.map +1 -1
  74. package/dist/cortex/InstinctValidation.d.ts +9 -0
  75. package/dist/cortex/InstinctValidation.js +55 -0
  76. package/dist/cortex/InstinctValidation.js.map +1 -0
  77. package/dist/cortex/SessionInjector.d.ts +1 -0
  78. package/dist/cortex/SessionInjector.js +28 -8
  79. package/dist/cortex/SessionInjector.js.map +1 -1
  80. package/dist/dashboard/DashboardServer.d.ts +79 -0
  81. package/dist/dashboard/DashboardServer.js +330 -6
  82. package/dist/dashboard/DashboardServer.js.map +1 -1
  83. package/dist/dashboard/spa/app.js +515 -0
  84. package/dist/dashboard/spa/components/DataTable.js +53 -0
  85. package/dist/dashboard/spa/components/EventStream.js +66 -0
  86. package/dist/dashboard/spa/components/LoadingState.js +39 -0
  87. package/dist/dashboard/spa/components/MetricCard.js +30 -0
  88. package/dist/dashboard/spa/components/Panel.js +27 -0
  89. package/dist/dashboard/spa/components/StatusBadge.js +51 -0
  90. package/dist/dashboard/spa/i18n.js +767 -0
  91. package/dist/dashboard/spa/index.html +463 -0
  92. package/dist/dashboard/spa/pages/costs.js +522 -0
  93. package/dist/dashboard/spa/pages/documents.js +540 -0
  94. package/dist/dashboard/spa/pages/knowledge.js +457 -0
  95. package/dist/dashboard/spa/pages/monitoring.js +361 -0
  96. package/dist/dashboard/spa/pages/overview.js +301 -0
  97. package/dist/dashboard/spa/pages/topology-renderers.js +251 -0
  98. package/dist/dashboard/spa/pages/topology.js +370 -0
  99. package/dist/dashboard/spa/pages/workflow-renderers.js +239 -0
  100. package/dist/dashboard/spa/pages/workflow.js +217 -0
  101. package/dist/env/EnvironmentDoctor.js +12 -7
  102. package/dist/env/EnvironmentDoctor.js.map +1 -1
  103. package/dist/eval/BenchmarkPublisher.d.ts +2 -0
  104. package/dist/eval/BenchmarkPublisher.js +43 -0
  105. package/dist/eval/BenchmarkPublisher.js.map +1 -1
  106. package/dist/eval/WorkflowEval.d.ts +9 -0
  107. package/dist/eval/WorkflowEval.js +348 -2
  108. package/dist/eval/WorkflowEval.js.map +1 -1
  109. package/dist/guardrails/ast/confirmers.d.ts +18 -0
  110. package/dist/guardrails/ast/confirmers.js +69 -0
  111. package/dist/guardrails/ast/confirmers.js.map +1 -0
  112. package/dist/guardrails/ast/parse.d.ts +20 -0
  113. package/dist/guardrails/ast/parse.js +51 -0
  114. package/dist/guardrails/ast/parse.js.map +1 -0
  115. package/dist/memory/MemoryBrain.d.ts +13 -0
  116. package/dist/memory/MemoryBrain.js +47 -0
  117. package/dist/memory/MemoryBrain.js.map +1 -1
  118. package/dist/memory/MemoryFabric.d.ts +1 -0
  119. package/dist/memory/MemoryFabric.js +12 -8
  120. package/dist/memory/MemoryFabric.js.map +1 -1
  121. package/dist/memory/MemoryLearning.d.ts +1 -0
  122. package/dist/memory/MemoryLearning.js +6 -3
  123. package/dist/memory/MemoryLearning.js.map +1 -1
  124. package/dist/memory/MemoryProviders.d.ts +8 -1
  125. package/dist/memory/MemoryProviders.js +143 -29
  126. package/dist/memory/MemoryProviders.js.map +1 -1
  127. package/dist/output/HTMLDocumentRenderer.d.ts +9 -0
  128. package/dist/output/HTMLDocumentRenderer.js +19 -0
  129. package/dist/output/HTMLDocumentRenderer.js.map +1 -1
  130. package/dist/review/FreshContextVerifier.d.ts +35 -0
  131. package/dist/review/FreshContextVerifier.js +120 -0
  132. package/dist/review/FreshContextVerifier.js.map +1 -0
  133. package/dist/review/JsonLlmClient.d.ts +37 -0
  134. package/dist/review/JsonLlmClient.js +94 -0
  135. package/dist/review/JsonLlmClient.js.map +1 -0
  136. package/dist/review/LlmJudge.d.ts +61 -0
  137. package/dist/review/LlmJudge.js +167 -0
  138. package/dist/review/LlmJudge.js.map +1 -0
  139. package/dist/runtime/AiOsRuntime.d.ts +14 -1
  140. package/dist/runtime/AiOsRuntime.js +59 -3
  141. package/dist/runtime/AiOsRuntime.js.map +1 -1
  142. package/dist/runtime/RuntimeDoctor.js +3 -1
  143. package/dist/runtime/RuntimeDoctor.js.map +1 -1
  144. package/dist/runtime/RuntimeEvidenceLedger.d.ts +6 -0
  145. package/dist/runtime/RuntimeEvidenceLedger.js +52 -1
  146. package/dist/runtime/RuntimeEvidenceLedger.js.map +1 -1
  147. package/dist/runtime/SessionLedger.d.ts +2 -0
  148. package/dist/runtime/SessionLedger.js +4 -0
  149. package/dist/runtime/SessionLedger.js.map +1 -1
  150. package/dist/setup/SetupVerification.js +53 -5
  151. package/dist/setup/SetupVerification.js.map +1 -1
  152. package/dist/shield/PolicyCompiler.js +73 -12
  153. package/dist/shield/PolicyCompiler.js.map +1 -1
  154. package/dist/shield/ProtectedPaths.js +4 -2
  155. package/dist/shield/ProtectedPaths.js.map +1 -1
  156. package/dist/skills/SkillCatalog.d.ts +2 -0
  157. package/dist/skills/SkillCatalog.js +8 -0
  158. package/dist/skills/SkillCatalog.js.map +1 -1
  159. package/dist/skills/SkillDoctor.d.ts +19 -2
  160. package/dist/skills/SkillDoctor.js +163 -13
  161. package/dist/skills/SkillDoctor.js.map +1 -1
  162. package/dist/tools/SafeCommandRunner.d.ts +1 -0
  163. package/dist/tools/SafeCommandRunner.js +1 -0
  164. package/dist/tools/SafeCommandRunner.js.map +1 -1
  165. package/dist/tools/ToolCapabilityRegistry.js +25 -3
  166. package/dist/tools/ToolCapabilityRegistry.js.map +1 -1
  167. package/dist/tools/ToolOrchestrator.js +21 -0
  168. package/dist/tools/ToolOrchestrator.js.map +1 -1
  169. package/dist/version.d.ts +1 -1
  170. package/dist/version.js +1 -1
  171. package/dist/workflow/AgentLoopReadiness.d.ts +103 -0
  172. package/dist/workflow/AgentLoopReadiness.js +371 -0
  173. package/dist/workflow/AgentLoopReadiness.js.map +1 -0
  174. package/dist/workflow/BoundaryEnforcement.d.ts +60 -0
  175. package/dist/workflow/BoundaryEnforcement.js +182 -0
  176. package/dist/workflow/BoundaryEnforcement.js.map +1 -0
  177. package/dist/workflow/EcosystemReadinessGate.d.ts +46 -0
  178. package/dist/workflow/EcosystemReadinessGate.js +126 -0
  179. package/dist/workflow/EcosystemReadinessGate.js.map +1 -0
  180. package/dist/workflow/EngineeringStandards.js +67 -12
  181. package/dist/workflow/EngineeringStandards.js.map +1 -1
  182. package/dist/workflow/GateCatalog.js +21 -2
  183. package/dist/workflow/GateCatalog.js.map +1 -1
  184. package/dist/workflow/GovernanceTemplatePacks.js +2 -26
  185. package/dist/workflow/GovernanceTemplatePacks.js.map +1 -1
  186. package/dist/workflow/GovernanceTemplates.js +8 -1
  187. package/dist/workflow/GovernanceTemplates.js.map +1 -1
  188. package/dist/workflow/ProfileEnforcement.d.ts +7 -0
  189. package/dist/workflow/ProfileEnforcement.js +12 -0
  190. package/dist/workflow/ProfileEnforcement.js.map +1 -0
  191. package/dist/workflow/ReleaseDeploymentLedger.d.ts +63 -0
  192. package/dist/workflow/ReleaseDeploymentLedger.js +154 -0
  193. package/dist/workflow/ReleaseDeploymentLedger.js.map +1 -0
  194. package/dist/workflow/ReviewAnalyzer.js +50 -3
  195. package/dist/workflow/ReviewAnalyzer.js.map +1 -1
  196. package/dist/workflow/ReviewStore.d.ts +10 -0
  197. package/dist/workflow/ReviewStore.js.map +1 -1
  198. package/dist/workflow/SessionPreamble.d.ts +7 -0
  199. package/dist/workflow/SessionPreamble.js +48 -9
  200. package/dist/workflow/SessionPreamble.js.map +1 -1
  201. package/dist/workflow/SurfaceCoverage.d.ts +19 -0
  202. package/dist/workflow/SurfaceCoverage.js +57 -0
  203. package/dist/workflow/SurfaceCoverage.js.map +1 -0
  204. package/dist/workflow/VerificationCommands.d.ts +1 -0
  205. package/dist/workflow/VerificationCommands.js.map +1 -1
  206. package/dist/workflow/VerificationProfile.d.ts +5 -0
  207. package/dist/workflow/VerificationProfile.js +26 -0
  208. package/dist/workflow/VerificationProfile.js.map +1 -1
  209. package/dist/workflow/VerificationSchema.d.ts +3 -0
  210. package/dist/workflow/VerificationSchema.js +6 -0
  211. package/dist/workflow/VerificationSchema.js.map +1 -1
  212. package/dist/workflow/WorkflowEffectiveness.d.ts +97 -0
  213. package/dist/workflow/WorkflowEffectiveness.js +302 -0
  214. package/dist/workflow/WorkflowEffectiveness.js.map +1 -0
  215. package/dist/workflow/WorkflowEffectivenessRenderer.d.ts +2 -0
  216. package/dist/workflow/WorkflowEffectivenessRenderer.js +67 -0
  217. package/dist/workflow/WorkflowEffectivenessRenderer.js.map +1 -0
  218. package/dist/workflow/WorkflowEffectivenessScoring.d.ts +6 -0
  219. package/dist/workflow/WorkflowEffectivenessScoring.js +243 -0
  220. package/dist/workflow/WorkflowEffectivenessScoring.js.map +1 -0
  221. package/dist/workflow/gates/EnhancedGates.js +2 -0
  222. package/dist/workflow/gates/EnhancedGates.js.map +1 -1
  223. package/dist/workflow/gates/GateSystem.d.ts +16 -0
  224. package/dist/workflow/gates/GateSystem.js +208 -41
  225. package/dist/workflow/gates/GateSystem.js.map +1 -1
  226. package/dist/workflow/gates/MetaGovernanceGates.js +269 -8
  227. package/dist/workflow/gates/MetaGovernanceGates.js.map +1 -1
  228. package/dist/workflow/gates/TestIntegrityGate.d.ts +51 -0
  229. package/dist/workflow/gates/TestIntegrityGate.js +175 -0
  230. package/dist/workflow/gates/TestIntegrityGate.js.map +1 -0
  231. package/dist/workflow/types.d.ts +1 -1
  232. package/docs/guides/DEVELOPMENT_WORKFLOW.md +28 -0
  233. package/docs/reference/cli.md +2 -1
  234. package/docs/start/agent-governance-demo.md +1 -1
  235. package/docs/workflow/E2E_EXAMPLE.md +133 -0
  236. package/docs/workflow/README.md +7 -1
  237. package/docs/workflow/TEMPLATE_GUIDE.md +162 -0
  238. package/docs/workflow/templates/github-actions-scale-preflight.yml +4 -1
  239. package/docs/workflow/templates/plan.md +26 -0
  240. package/docs/workflow/templates/spec.md +28 -0
  241. package/package.json +7 -3
  242. package/scripts/workflow/run-vitest.mjs +123 -0
@@ -5,6 +5,7 @@ export interface WorkflowEvalAttempt {
5
5
  command: string;
6
6
  expectedExitCode?: number;
7
7
  outputContains?: string;
8
+ outputEquals?: string;
8
9
  timeoutMs?: number;
9
10
  }
10
11
  export interface WorkflowEvalCase {
@@ -89,6 +90,8 @@ export interface FailureReplayRecord {
89
90
  prevention: string;
90
91
  replayCommand?: string;
91
92
  status: 'open' | 'promoted' | 'accepted-risk' | 'closed';
93
+ closedAt?: string;
94
+ closedByEvalRunId?: string;
92
95
  redactionApplied: boolean;
93
96
  }
94
97
  export interface FailureImprovementCandidate {
@@ -136,6 +139,11 @@ export declare class WorkflowEvalStore {
136
139
  loadSuite(suiteIdOrPath?: string): WorkflowEvalSuite;
137
140
  saveRun(run: WorkflowEvalRun): string;
138
141
  saveFailure(record: FailureReplayRecord): string;
142
+ closeOpenFailuresForCase(options: {
143
+ suiteId: string;
144
+ caseId: string;
145
+ closedByEvalRunId?: string;
146
+ }): string[];
139
147
  listFailures(query?: {
140
148
  taskId?: string;
141
149
  sinceDays?: number;
@@ -153,6 +161,7 @@ export declare function runWorkflowEvalSuite(options?: WorkflowEvalStoreOptions
153
161
  run: WorkflowEvalRun;
154
162
  runPath: string;
155
163
  failurePaths: string[];
164
+ closedFailureIds: string[];
156
165
  }>;
157
166
  export declare function compareWorkflowEvalRuns(options: WorkflowEvalStoreOptions & {
158
167
  baseline: string;
@@ -26,6 +26,322 @@ export function defaultWorkflowEvalSuite() {
26
26
  },
27
27
  ],
28
28
  },
29
+ {
30
+ id: 'bugfix-null-safety',
31
+ type: 'bugfix',
32
+ title: 'Null safety fix in artifact store',
33
+ task: 'Fix a null reference error when accessing artifact payload that is undefined.',
34
+ phase: 'build',
35
+ successCriteria: [
36
+ 'code handles undefined payload without throwing',
37
+ 'test covers null/undefined payload case',
38
+ ],
39
+ attempts: [{
40
+ id: 'attempt-1',
41
+ command: 'node -e "const p = undefined; console.log(p?.name ?? \'default\')"',
42
+ expectedExitCode: 0,
43
+ outputContains: 'default',
44
+ }],
45
+ },
46
+ {
47
+ id: 'bugfix-regex-escape',
48
+ type: 'bugfix',
49
+ title: 'Regex special characters in user input',
50
+ task: 'Fix a bug where user-provided strings with regex special characters break pattern matching.',
51
+ phase: 'build',
52
+ successCriteria: [
53
+ 'special characters are escaped before use in regex',
54
+ 'test covers strings with (, ), [, ], +, *, ?',
55
+ ],
56
+ attempts: [{
57
+ id: 'attempt-1',
58
+ command: 'node -e "const s=\'test(1)\'; const escaped=[...s].map(c=>\'.*+?^${}()|[]\'.includes(c)?String.fromCharCode(92)+c:c).join(\'\'); const r=new RegExp(escaped); console.log(r.test(s))"',
59
+ expectedExitCode: 0,
60
+ outputContains: 'true',
61
+ }],
62
+ },
63
+ {
64
+ id: 'bugfix-json-parse-error',
65
+ type: 'bugfix',
66
+ title: 'Malformed JSON handling in settings loader',
67
+ task: 'Fix crash when .scale/settings.json contains invalid JSON.',
68
+ phase: 'build',
69
+ successCriteria: [
70
+ 'invalid JSON returns default config instead of crashing',
71
+ 'error is logged but does not propagate',
72
+ ],
73
+ attempts: [{
74
+ id: 'attempt-1',
75
+ command: 'node -e "try{JSON.parse(\'{bad}\')}catch(e){console.log(\'handled:\'+e.message)}"',
76
+ expectedExitCode: 0,
77
+ outputContains: 'handled:',
78
+ }],
79
+ },
80
+ {
81
+ id: 'bugfix-event-leak',
82
+ type: 'bugfix',
83
+ title: 'Event listener memory leak in EventBus',
84
+ task: 'Fix memory leak caused by not removing event listeners on unsubscribe.',
85
+ phase: 'build',
86
+ successCriteria: [
87
+ 'unsubscribe removes handler from handler set',
88
+ 'handler count decreases after unsubscribe',
89
+ ],
90
+ attempts: [{
91
+ id: 'attempt-1',
92
+ command: 'node -e "const s=new Set(); s.add(()=>{}); const h=[...s][0]; s.delete(h); console.log(s.size)"',
93
+ expectedExitCode: 0,
94
+ outputContains: '0',
95
+ }],
96
+ },
97
+ {
98
+ id: 'bugfix-path-traversal',
99
+ type: 'bugfix',
100
+ title: 'Path traversal in file read operation',
101
+ task: 'Fix path traversal vulnerability where ../../../etc/passwd can be read.',
102
+ phase: 'build',
103
+ successCriteria: [
104
+ 'paths with .. segments are rejected or normalized',
105
+ 'test covers traversal attempts',
106
+ ],
107
+ attempts: [{
108
+ id: 'attempt-1',
109
+ command: 'node -e "const p=require(\'path\'); const base=p.resolve(\'project-root\'); const target=p.resolve(base,\'..\',\'..\',\'etc\',\'passwd\'); console.log(target.startsWith(base))"',
110
+ expectedExitCode: 0,
111
+ outputContains: 'false',
112
+ }],
113
+ },
114
+ {
115
+ id: 'bugfix-async-timeout',
116
+ type: 'bugfix',
117
+ title: 'Async operation hangs without timeout',
118
+ task: 'Fix hanging async operation by adding proper timeout mechanism.',
119
+ phase: 'build',
120
+ successCriteria: [
121
+ 'operation times out after configured duration',
122
+ 'timeout error is properly propagated',
123
+ ],
124
+ attempts: [{
125
+ id: 'attempt-1',
126
+ command: 'node -e "const p=new Promise((_,rej)=>setTimeout(()=>rej(new Error(\'timeout\')),100)); p.catch(e=>console.log(e.message))"',
127
+ expectedExitCode: 0,
128
+ outputContains: 'timeout',
129
+ }],
130
+ },
131
+ {
132
+ id: 'bugfix-concurrent-write',
133
+ type: 'bugfix',
134
+ title: 'Concurrent file write corruption',
135
+ task: 'Fix data corruption when multiple processes write to the same JSONL file simultaneously.',
136
+ phase: 'build',
137
+ successCriteria: [
138
+ 'writes are serialized via lock or atomic operation',
139
+ 'file integrity is maintained after concurrent writes',
140
+ ],
141
+ attempts: [{
142
+ id: 'attempt-1',
143
+ command: 'node -e "const fs=require(\'fs\'),os=require(\'os\'),path=require(\'path\'); const f=path.join(os.tmpdir(),\'scale-eval-test-atomic.jsonl\'); fs.writeFileSync(f,\'\'); for(let i=0;i<5;i++){fs.appendFileSync(f,JSON.stringify({i})+String.fromCharCode(10))} console.log(fs.readFileSync(f,\'utf-8\').trim().split(String.fromCharCode(10)).length)"',
144
+ expectedExitCode: 0,
145
+ outputContains: '5',
146
+ }],
147
+ },
148
+ {
149
+ id: 'bugfix-empty-array-guard',
150
+ type: 'bugfix',
151
+ title: 'Empty array causes division by zero',
152
+ task: 'Fix division by zero when calculating average on empty results array.',
153
+ phase: 'build',
154
+ successCriteria: [
155
+ 'empty array returns 0 or NaN guard instead of Infinity',
156
+ 'test covers empty and single-element arrays',
157
+ ],
158
+ attempts: [{
159
+ id: 'attempt-1',
160
+ command: 'node -e "const a=[]; const avg=a.length?a.reduce((s,v)=>s+v,0)/a.length:0; console.log(avg)"',
161
+ expectedExitCode: 0,
162
+ outputContains: '0',
163
+ }],
164
+ },
165
+ {
166
+ id: 'bugfix-encoding-utf8',
167
+ type: 'bugfix',
168
+ title: 'UTF-8 BOM in settings file breaks parser',
169
+ task: 'Fix JSON parse failure when settings.json has UTF-8 BOM prefix.',
170
+ phase: 'build',
171
+ successCriteria: [
172
+ 'BOM is stripped before JSON.parse',
173
+ 'test covers file with and without BOM',
174
+ ],
175
+ attempts: [{
176
+ id: 'attempt-1',
177
+ command: 'node -e "const bom=String.fromCharCode(65279); const s=bom+JSON.stringify({ok:true}); console.log(JSON.parse(s.replace(bom,\'\')).ok)"',
178
+ expectedExitCode: 0,
179
+ outputContains: 'true',
180
+ }],
181
+ },
182
+ {
183
+ id: 'feature-api-endpoint',
184
+ type: 'feature',
185
+ title: 'Add GET /api/artifacts/:id endpoint',
186
+ task: 'Implement a new API endpoint to retrieve a single artifact by ID with proper error handling.',
187
+ phase: 'build',
188
+ successCriteria: [
189
+ 'returns artifact JSON for valid ID',
190
+ 'returns 404 for non-existent ID',
191
+ 'returns 400 for invalid ID format',
192
+ ],
193
+ attempts: [{
194
+ id: 'attempt-1',
195
+ command: 'node -e "const id=\'spec-001\'; console.log(/^[a-z]+-[0-9]+$/.test(id)?\'valid-id\':\'bad-id\')"',
196
+ expectedExitCode: 0,
197
+ outputEquals: 'valid-id',
198
+ }],
199
+ },
200
+ {
201
+ id: 'feature-cli-flag',
202
+ type: 'feature',
203
+ title: 'Add --json flag to scale status command',
204
+ task: 'Add JSON output format to the status command for programmatic consumption.',
205
+ phase: 'build',
206
+ successCriteria: [
207
+ '--json flag produces valid JSON output',
208
+ 'default output remains human-readable',
209
+ 'JSON includes all status fields',
210
+ ],
211
+ attempts: [{
212
+ id: 'attempt-1',
213
+ command: 'node -e "console.log(JSON.stringify({status:\'ok\',version:\'1.0\'}))"',
214
+ expectedExitCode: 0,
215
+ outputContains: 'status',
216
+ }],
217
+ },
218
+ {
219
+ id: 'feature-webhook-config',
220
+ type: 'feature',
221
+ title: 'Configurable webhook for event notifications',
222
+ task: 'Implement webhook configuration that POSTs events to a user-specified URL.',
223
+ phase: 'build',
224
+ successCriteria: [
225
+ 'webhook URL is read from config',
226
+ 'events are POSTed as JSON',
227
+ 'failed webhooks are retried with backoff',
228
+ ],
229
+ attempts: [{
230
+ id: 'attempt-1',
231
+ command: 'node -e "const url=\'https://example.com/hook\'; console.log(url.startsWith(\'https://\')?\'valid\':\'invalid\')"',
232
+ expectedExitCode: 0,
233
+ outputContains: 'valid',
234
+ }],
235
+ },
236
+ {
237
+ id: 'feature-filter-query',
238
+ type: 'feature',
239
+ title: 'Add filtering to artifact list command',
240
+ task: 'Implement --type and --status filters for the artifact list command.',
241
+ phase: 'build',
242
+ successCriteria: [
243
+ '--type filter returns only matching artifact types',
244
+ '--status filter returns only matching statuses',
245
+ 'filters can be combined',
246
+ ],
247
+ attempts: [{
248
+ id: 'attempt-1',
249
+ command: 'node -e "const items=[{type:\'Spec\',status:\'DRAFT\'},{type:\'Task\',status:\'DONE\'}]; const f=items.filter(i=>i.type===\'Spec\'); console.log(f.length)"',
250
+ expectedExitCode: 0,
251
+ outputContains: '1',
252
+ }],
253
+ },
254
+ {
255
+ id: 'feature-diff-view',
256
+ type: 'feature',
257
+ title: 'Show diff between artifact versions',
258
+ task: 'Implement a diff view that shows changes between two artifact versions.',
259
+ phase: 'build',
260
+ successCriteria: [
261
+ 'added lines are marked with +',
262
+ 'removed lines are marked with -',
263
+ 'unchanged lines are shown as context',
264
+ ],
265
+ attempts: [{
266
+ id: 'attempt-1',
267
+ command: 'node -e "const a=[\'line1\',\'line2\']; const b=[\'line1\',\'line3\']; const d=a.map((l,i)=>b[i]===l?\' \'+l:\'-\'+l); console.log(d.join(String.fromCharCode(10)))"',
268
+ expectedExitCode: 0,
269
+ outputContains: '-line2',
270
+ }],
271
+ },
272
+ {
273
+ id: 'refactor-extract-module',
274
+ type: 'refactor',
275
+ title: 'Extract detector logic into separate module',
276
+ task: 'Refactor monolithic guardrails file by extracting detector classes into their own module.',
277
+ phase: 'build',
278
+ successCriteria: [
279
+ 'detectors are in separate file',
280
+ 'imports are updated',
281
+ 'all existing tests still pass',
282
+ ],
283
+ attempts: [{
284
+ id: 'attempt-1',
285
+ command: 'node -e "const path=require(\'path\'); console.log(path.posix.join(\'src/guardrails\',\'detectors.ts\'))"',
286
+ expectedExitCode: 0,
287
+ outputContains: 'guardrails/detectors',
288
+ }],
289
+ },
290
+ {
291
+ id: 'refactor-reduce-complexity',
292
+ type: 'refactor',
293
+ title: 'Reduce cyclomatic complexity in Gateway.preTool',
294
+ task: 'Refactor deeply nested if-else chains in Gateway.preTool into early returns.',
295
+ phase: 'build',
296
+ successCriteria: [
297
+ 'max nesting depth is reduced',
298
+ 'behavior is unchanged',
299
+ 'all existing tests pass',
300
+ ],
301
+ attempts: [{
302
+ id: 'attempt-1',
303
+ command: 'node -e "function f(x){if(!x)return null;if(typeof x!==\'number\')return null;return x*2} console.log(f(5))"',
304
+ expectedExitCode: 0,
305
+ outputContains: '10',
306
+ }],
307
+ },
308
+ {
309
+ id: 'refactor-consolidate-types',
310
+ type: 'refactor',
311
+ title: 'Consolidate duplicate type definitions',
312
+ task: 'Merge duplicate interface definitions across artifact/types.ts and guardrails/Gateway.ts.',
313
+ phase: 'build',
314
+ successCriteria: [
315
+ 'single source of truth for shared types',
316
+ 'no duplicate interfaces',
317
+ 'type compatibility maintained',
318
+ ],
319
+ attempts: [{
320
+ id: 'attempt-1',
321
+ command: 'node -e "const t={sessionId:\'s1\',tool:\'Bash\',args:{}}; console.log(typeof t.sessionId===\'string\'?\'ok\':\'fail\')"',
322
+ expectedExitCode: 0,
323
+ outputContains: 'ok',
324
+ }],
325
+ },
326
+ {
327
+ id: 'security-secret-detection',
328
+ type: 'security',
329
+ title: 'Detect hardcoded secrets in code changes',
330
+ task: 'Verify that the OWASP detector catches hardcoded API keys, passwords, and tokens.',
331
+ phase: 'verify',
332
+ successCriteria: [
333
+ 'API key pattern is detected',
334
+ 'password assignment is detected',
335
+ 'token in URL is detected',
336
+ ],
337
+ expectedFailureCategory: 'failed-security-or-resource-gate',
338
+ attempts: [{
339
+ id: 'attempt-1',
340
+ command: 'node -e "const code=\'const key=sk-abc123\'; const r=/sk-[a-zA-Z0-9]{6,}/; console.log(r.test(code)?\'detected\':\'missed\')"',
341
+ expectedExitCode: 0,
342
+ outputContains: 'detected',
343
+ }],
344
+ },
29
345
  ],
30
346
  };
31
347
  }
@@ -68,6 +384,22 @@ export class WorkflowEvalStore {
68
384
  writeFileSync(path, JSON.stringify(record, null, 2), 'utf-8');
69
385
  return path;
70
386
  }
387
+ closeOpenFailuresForCase(options) {
388
+ const closedAt = new Date().toISOString();
389
+ const closed = [];
390
+ for (const failure of this.listFailures({ taskId: options.caseId })) {
391
+ if (failure.suiteId !== options.suiteId || failure.caseId !== options.caseId || failure.status !== 'open')
392
+ continue;
393
+ this.saveFailure({
394
+ ...failure,
395
+ status: 'closed',
396
+ closedAt,
397
+ closedByEvalRunId: options.closedByEvalRunId,
398
+ });
399
+ closed.push(failure.id);
400
+ }
401
+ return closed;
402
+ }
71
403
  listFailures(query = {}) {
72
404
  if (!existsSync(this.failuresDir))
73
405
  return [];
@@ -128,11 +460,19 @@ export async function runWorkflowEvalSuite(options = {}) {
128
460
  const suite = store.loadSuite(options.suite ?? 'workflow-baseline');
129
461
  const caseResults = [];
130
462
  const failurePaths = [];
463
+ const closedFailureIds = [];
131
464
  const runId = `EVAL-${Date.now()}-${randomUUID().slice(0, 8)}`;
132
465
  for (const item of suite.cases) {
133
466
  const result = await runEvalCase(store, suite.id, item);
134
467
  caseResults.push(result.caseResult);
135
468
  failurePaths.push(...result.failurePaths);
469
+ if (result.caseResult.passed) {
470
+ closedFailureIds.push(...store.closeOpenFailuresForCase({
471
+ suiteId: suite.id,
472
+ caseId: item.id,
473
+ closedByEvalRunId: runId,
474
+ }));
475
+ }
136
476
  }
137
477
  const failureReplayIds = caseResults.flatMap(result => result.failureReplayIds);
138
478
  const run = {
@@ -146,7 +486,7 @@ export async function runWorkflowEvalSuite(options = {}) {
146
486
  failureReplayIds,
147
487
  };
148
488
  const runPath = store.saveRun(run);
149
- return { run, runPath, failurePaths };
489
+ return { run, runPath, failurePaths, closedFailureIds };
150
490
  }
151
491
  export function compareWorkflowEvalRuns(options) {
152
492
  const store = new WorkflowEvalStore(options);
@@ -255,12 +595,15 @@ async function runAttempt(attempt, cwd) {
255
595
  const outputContains = attempt.outputContains
256
596
  ? output.includes(attempt.outputContains)
257
597
  : true;
598
+ const outputEquals = attempt.outputEquals
599
+ ? normalizeEvalOutput(output) === attempt.outputEquals
600
+ : true;
258
601
  return {
259
602
  id: attempt.id ?? `attempt-${randomUUID().slice(0, 8)}`,
260
603
  command: commandRedaction.value,
261
604
  expectedExitCode,
262
605
  exitCode: result.exitCode,
263
- passed: result.exitCode === expectedExitCode && outputContains,
606
+ passed: result.exitCode === expectedExitCode && outputContains && outputEquals,
264
607
  durationMs: Date.now() - started,
265
608
  outputSummary: outputRedaction.value || '(no output)',
266
609
  redactionApplied: commandRedaction.redacted || outputRedaction.redacted,
@@ -365,6 +708,9 @@ function readJson(path) {
365
708
  function stripBom(text) {
366
709
  return text.charCodeAt(0) === 0xFEFF ? text.slice(1) : text;
367
710
  }
711
+ function normalizeEvalOutput(output) {
712
+ return output.replace(/\r?\n$/, '');
713
+ }
368
714
  function ratio(part, total) {
369
715
  return total === 0 ? 0 : Math.round((part / total) * 1000) / 1000;
370
716
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WorkflowEval.js","sourceRoot":"","sources":["../../src/eval/WorkflowEval.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WorkflowEval.js","sourceRoot":"","sources":["../../src/eval/WorkflowEval.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface AstConfirmer {
2
+ /** A real `eval(...)` call or `Function(...)` / `new Function(...)` construction starts on this line. */
3
+ hasUnsafeCodeExecution(line: number): boolean;
4
+ /** A `@ts-ignore` / `@ts-nocheck` directive appears in an actual comment on this line. */
5
+ hasTsIgnore(line: number): boolean;
6
+ /** A real `any` type annotation (TSAnyKeyword) appears on this line. */
7
+ hasAnyType(line: number): boolean;
8
+ /** An empty (or comment-only) catch block starts on this line. */
9
+ hasEmptyCatch(line: number): boolean;
10
+ }
11
+ /**
12
+ * Build a confirmer for one source file. Parses once and pre-collects, per line,
13
+ * the set of lines carrying each construct. Returns null when parsing fails so
14
+ * the caller can fall back to the regex result.
15
+ */
16
+ export declare function createAstConfirmer(code: string, options?: {
17
+ jsx?: boolean;
18
+ }): AstConfirmer | null;
@@ -0,0 +1,69 @@
1
+ // SCALE Engine — AST confirmers (P1.1)
2
+ // Each confirmer turns a regex pre-filter hit (a 1-based line number) into a
3
+ // precise yes/no by matching the real AST node, so occurrences inside string
4
+ // literals or comments no longer produce false positives.
5
+ //
6
+ // Architecture (decision B1): AST only *narrows* regex results — it never adds
7
+ // findings the regex did not already flag. When the file cannot be parsed the
8
+ // caller falls back to the raw regex result (fail open).
9
+ import { parseSource, walk } from './parse.js';
10
+ function identifierName(node) {
11
+ return node && node.type === 'Identifier' ? node.name : undefined;
12
+ }
13
+ /**
14
+ * Build a confirmer for one source file. Parses once and pre-collects, per line,
15
+ * the set of lines carrying each construct. Returns null when parsing fails so
16
+ * the caller can fall back to the regex result.
17
+ */
18
+ export function createAstConfirmer(code, options = {}) {
19
+ const parsed = parseSource(code, options);
20
+ if (!parsed)
21
+ return null;
22
+ const index = {
23
+ unsafeExec: new Set(),
24
+ anyType: new Set(),
25
+ emptyCatch: new Set(),
26
+ tsIgnore: new Set(),
27
+ };
28
+ walk(parsed.program, node => {
29
+ switch (node.type) {
30
+ // Mirror the regex pre-filter exactly (`eval(` | `new Function(`): the
31
+ // confirmer must not be broader than the regex, otherwise it carries
32
+ // dead branches that can never fire (AST is only consulted on a regex
33
+ // hit). Bare `Function(...)` calls are intentionally a follow-up — adding
34
+ // them requires widening the regex too, which is a detection-scope change.
35
+ case 'CallExpression':
36
+ if (identifierName(node.callee) === 'eval') {
37
+ index.unsafeExec.add(node.callee.loc.start.line);
38
+ }
39
+ break;
40
+ case 'NewExpression':
41
+ if (identifierName(node.callee) === 'Function') {
42
+ index.unsafeExec.add(node.callee.loc.start.line);
43
+ }
44
+ break;
45
+ case 'TSAnyKeyword':
46
+ index.anyType.add(node.loc.start.line);
47
+ break;
48
+ case 'CatchClause':
49
+ // body is a BlockStatement; comment-only blocks have zero statements.
50
+ if (node.body.body.length === 0)
51
+ index.emptyCatch.add(node.loc.start.line);
52
+ break;
53
+ default:
54
+ break;
55
+ }
56
+ });
57
+ for (const comment of parsed.comments) {
58
+ if (/@ts-(?:ignore|nocheck|expect-error)\b/.test(comment.value)) {
59
+ index.tsIgnore.add(comment.loc.start.line);
60
+ }
61
+ }
62
+ return {
63
+ hasUnsafeCodeExecution: line => index.unsafeExec.has(line),
64
+ hasTsIgnore: line => index.tsIgnore.has(line),
65
+ hasAnyType: line => index.anyType.has(line),
66
+ hasEmptyCatch: line => index.emptyCatch.has(line),
67
+ };
68
+ }
69
+ //# sourceMappingURL=confirmers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confirmers.js","sourceRoot":"","sources":["../../../src/guardrails/ast/confirmers.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,6EAA6E;AAC7E,6EAA6E;AAC7E,0DAA0D;AAC1D,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,yDAAyD;AAEzD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAqB9C,SAAS,cAAc,CAAC,IAAsC;IAC5D,OAAO,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;AACnE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,UAA6B,EAAE;IAC9E,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACzC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAExB,MAAM,KAAK,GAAc;QACvB,UAAU,EAAE,IAAI,GAAG,EAAE;QACrB,OAAO,EAAE,IAAI,GAAG,EAAE;QAClB,UAAU,EAAE,IAAI,GAAG,EAAE;QACrB,QAAQ,EAAE,IAAI,GAAG,EAAE;KACpB,CAAA;IAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;QAC1B,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,uEAAuE;YACvE,qEAAqE;YACrE,sEAAsE;YACtE,0EAA0E;YAC1E,2EAA2E;YAC3E,KAAK,gBAAgB;gBACnB,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE,CAAC;oBAC3C,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBAClD,CAAC;gBACD,MAAK;YACP,KAAK,eAAe;gBAClB,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC;oBAC/C,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBAClD,CAAC;gBACD,MAAK;YACP,KAAK,cAAc;gBACjB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBACtC,MAAK;YACP,KAAK,aAAa;gBAChB,sEAAsE;gBACtE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;oBAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBAC1E,MAAK;YACP;gBACE,MAAK;QACT,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,uCAAuC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC5C,CAAC;IACH,CAAC;IAED,OAAO;QACL,sBAAsB,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1D,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QAC7C,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QAC3C,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;KAClD,CAAA;AACH,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { type TSESTree } from '@typescript-eslint/typescript-estree';
2
+ export interface ParsedSource {
3
+ program: TSESTree.Program;
4
+ comments: TSESTree.Comment[];
5
+ }
6
+ /**
7
+ * Parse TypeScript/JavaScript source into an ESTree AST. Returns null when the
8
+ * source cannot be parsed (non-TS content, syntax errors, unsupported syntax).
9
+ *
10
+ * `jsx` should be enabled only for .tsx/.jsx files: enabling it for plain .ts
11
+ * misparses old-style `<Type>value` type assertions as JSX.
12
+ */
13
+ export declare function parseSource(code: string, options?: {
14
+ jsx?: boolean;
15
+ }): ParsedSource | null;
16
+ /**
17
+ * Depth-first walk over every AST node. The `parent` back-reference (when
18
+ * present) is skipped to avoid infinite recursion.
19
+ */
20
+ export declare function walk(node: TSESTree.Node, visit: (node: TSESTree.Node) => void): void;