@hongmaple0820/scale-engine 0.49.0 → 0.50.2

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 (183) 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 +52 -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 +31 -0
  23. package/dist/cli/cortexCommands.js +102 -17
  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 +31 -4
  66. package/dist/cortex/InstinctStore.js +120 -20
  67. package/dist/cortex/InstinctStore.js.map +1 -1
  68. package/dist/cortex/SessionInjector.d.ts +1 -0
  69. package/dist/cortex/SessionInjector.js +54 -4
  70. package/dist/cortex/SessionInjector.js.map +1 -1
  71. package/dist/dashboard/DashboardServer.d.ts +237 -0
  72. package/dist/dashboard/DashboardServer.js +1083 -19
  73. package/dist/dashboard/DashboardServer.js.map +1 -1
  74. package/dist/dashboard/spa/assets/index-VYBCLBje.js +11 -0
  75. package/dist/dashboard/spa/assets/index-VhwY_ac1.css +1 -0
  76. package/dist/dashboard/spa/assets/naive-ui-BQy2AJkt.js +3340 -0
  77. package/dist/dashboard/spa/assets/vendor-BPU6aOYA.js +3 -0
  78. package/dist/dashboard/spa/assets/vue-CQQMb5Wi.js +17 -0
  79. package/dist/dashboard/spa/index.html +16 -0
  80. package/dist/env/EnvironmentDoctor.js +12 -7
  81. package/dist/env/EnvironmentDoctor.js.map +1 -1
  82. package/dist/eval/WorkflowEval.d.ts +9 -0
  83. package/dist/eval/WorkflowEval.js +348 -2
  84. package/dist/eval/WorkflowEval.js.map +1 -1
  85. package/dist/memory/MemoryBrain.d.ts +13 -0
  86. package/dist/memory/MemoryBrain.js +47 -0
  87. package/dist/memory/MemoryBrain.js.map +1 -1
  88. package/dist/memory/MemoryFabric.d.ts +14 -1
  89. package/dist/memory/MemoryFabric.js +72 -8
  90. package/dist/memory/MemoryFabric.js.map +1 -1
  91. package/dist/memory/MemoryLearning.d.ts +1 -0
  92. package/dist/memory/MemoryLearning.js +6 -3
  93. package/dist/memory/MemoryLearning.js.map +1 -1
  94. package/dist/memory/MemoryProviders.d.ts +8 -1
  95. package/dist/memory/MemoryProviders.js +143 -29
  96. package/dist/memory/MemoryProviders.js.map +1 -1
  97. package/dist/runtime/AiOsRuntime.d.ts +14 -1
  98. package/dist/runtime/AiOsRuntime.js +59 -3
  99. package/dist/runtime/AiOsRuntime.js.map +1 -1
  100. package/dist/runtime/RuntimeDoctor.js +3 -1
  101. package/dist/runtime/RuntimeDoctor.js.map +1 -1
  102. package/dist/runtime/RuntimeEvidenceLedger.d.ts +6 -0
  103. package/dist/runtime/RuntimeEvidenceLedger.js +52 -1
  104. package/dist/runtime/RuntimeEvidenceLedger.js.map +1 -1
  105. package/dist/runtime/SessionLedger.d.ts +2 -0
  106. package/dist/runtime/SessionLedger.js +4 -0
  107. package/dist/runtime/SessionLedger.js.map +1 -1
  108. package/dist/setup/SetupVerification.js +53 -5
  109. package/dist/setup/SetupVerification.js.map +1 -1
  110. package/dist/shield/PolicyCompiler.js +73 -12
  111. package/dist/shield/PolicyCompiler.js.map +1 -1
  112. package/dist/shield/ProtectedPaths.js +4 -2
  113. package/dist/shield/ProtectedPaths.js.map +1 -1
  114. package/dist/skills/SkillCatalog.d.ts +2 -0
  115. package/dist/skills/SkillCatalog.js +8 -0
  116. package/dist/skills/SkillCatalog.js.map +1 -1
  117. package/dist/skills/SkillDoctor.d.ts +19 -2
  118. package/dist/skills/SkillDoctor.js +163 -13
  119. package/dist/skills/SkillDoctor.js.map +1 -1
  120. package/dist/tools/SafeCommandRunner.d.ts +1 -0
  121. package/dist/tools/SafeCommandRunner.js +1 -0
  122. package/dist/tools/SafeCommandRunner.js.map +1 -1
  123. package/dist/tools/ToolCapabilityRegistry.js +25 -3
  124. package/dist/tools/ToolCapabilityRegistry.js.map +1 -1
  125. package/dist/tools/ToolOrchestrator.js +21 -0
  126. package/dist/tools/ToolOrchestrator.js.map +1 -1
  127. package/dist/version.d.ts +1 -1
  128. package/dist/version.js +1 -1
  129. package/dist/workflow/AgentLoopReadiness.d.ts +103 -0
  130. package/dist/workflow/AgentLoopReadiness.js +371 -0
  131. package/dist/workflow/AgentLoopReadiness.js.map +1 -0
  132. package/dist/workflow/EcosystemReadinessGate.d.ts +46 -0
  133. package/dist/workflow/EcosystemReadinessGate.js +126 -0
  134. package/dist/workflow/EcosystemReadinessGate.js.map +1 -0
  135. package/dist/workflow/EngineeringStandards.js +48 -3
  136. package/dist/workflow/EngineeringStandards.js.map +1 -1
  137. package/dist/workflow/GateCatalog.js +9 -0
  138. package/dist/workflow/GateCatalog.js.map +1 -1
  139. package/dist/workflow/GovernanceTemplatePacks.js +2 -26
  140. package/dist/workflow/GovernanceTemplatePacks.js.map +1 -1
  141. package/dist/workflow/GovernanceTemplates.js +8 -1
  142. package/dist/workflow/GovernanceTemplates.js.map +1 -1
  143. package/dist/workflow/ReleaseDeploymentLedger.d.ts +63 -0
  144. package/dist/workflow/ReleaseDeploymentLedger.js +154 -0
  145. package/dist/workflow/ReleaseDeploymentLedger.js.map +1 -0
  146. package/dist/workflow/ReviewAnalyzer.js +50 -3
  147. package/dist/workflow/ReviewAnalyzer.js.map +1 -1
  148. package/dist/workflow/SessionPreamble.d.ts +7 -0
  149. package/dist/workflow/SessionPreamble.js +48 -9
  150. package/dist/workflow/SessionPreamble.js.map +1 -1
  151. package/dist/workflow/VerificationCommands.d.ts +1 -0
  152. package/dist/workflow/VerificationCommands.js.map +1 -1
  153. package/dist/workflow/VerificationProfile.d.ts +5 -0
  154. package/dist/workflow/VerificationProfile.js +26 -0
  155. package/dist/workflow/VerificationProfile.js.map +1 -1
  156. package/dist/workflow/VerificationSchema.d.ts +3 -0
  157. package/dist/workflow/VerificationSchema.js +6 -0
  158. package/dist/workflow/VerificationSchema.js.map +1 -1
  159. package/dist/workflow/WorkflowEffectiveness.d.ts +97 -0
  160. package/dist/workflow/WorkflowEffectiveness.js +302 -0
  161. package/dist/workflow/WorkflowEffectiveness.js.map +1 -0
  162. package/dist/workflow/WorkflowEffectivenessRenderer.d.ts +2 -0
  163. package/dist/workflow/WorkflowEffectivenessRenderer.js +67 -0
  164. package/dist/workflow/WorkflowEffectivenessRenderer.js.map +1 -0
  165. package/dist/workflow/WorkflowEffectivenessScoring.d.ts +6 -0
  166. package/dist/workflow/WorkflowEffectivenessScoring.js +243 -0
  167. package/dist/workflow/WorkflowEffectivenessScoring.js.map +1 -0
  168. package/dist/workflow/gates/GateSystem.d.ts +16 -0
  169. package/dist/workflow/gates/GateSystem.js +208 -41
  170. package/dist/workflow/gates/GateSystem.js.map +1 -1
  171. package/dist/workflow/gates/MetaGovernanceGates.js +269 -8
  172. package/dist/workflow/gates/MetaGovernanceGates.js.map +1 -1
  173. package/docs/reference/cli.md +2 -1
  174. package/docs/start/agent-governance-demo.md +1 -1
  175. package/docs/workflow/ASSESSMENT_INDEX.md +326 -0
  176. package/docs/workflow/COMPARATIVE_ANALYSIS.md +422 -0
  177. package/docs/workflow/EXECUTIVE_SUMMARY.md +310 -0
  178. package/docs/workflow/IMPROVEMENT_CHECKLIST.md +518 -0
  179. package/docs/workflow/IMPROVEMENT_ROADMAP.md +707 -0
  180. package/docs/workflow/README.md +9 -1
  181. package/docs/workflow/templates/github-actions-scale-preflight.yml +4 -1
  182. package/package.json +10 -3
  183. package/scripts/workflow/run-vitest.mjs +123 -0
@@ -1,8 +1,14 @@
1
1
  // SCALE Engine — Workflow and Evidence Commands
2
2
  import { defineCommand } from 'citty';
3
+ import { execFileSync } from 'node:child_process';
4
+ import { isAbsolute, resolve } from 'node:path';
3
5
  import { SCALE_DIR } from './engineBootstrap.js';
6
+ import { recallMemoryProviders } from '../memory/MemoryProviders.js';
4
7
  import { listWorkflowPresets, getPresetsByScenario } from '../workflows/presets.js';
5
8
  import { EvidenceStore } from '../workflow/EvidenceStore.js';
9
+ import { ReleaseDeploymentLedger } from '../workflow/ReleaseDeploymentLedger.js';
10
+ import { createWorkflowEffectivenessReport, renderWorkflowEffectivenessReport } from '../workflow/WorkflowEffectiveness.js';
11
+ const DEFAULT_WORKFLOW_MEMORY_QUERY = 'workflow effectiveness memory recall';
6
12
  export const workflowListCommand = defineCommand({
7
13
  meta: { name: 'list', description: 'List all workflow presets' },
8
14
  args: {
@@ -56,10 +62,230 @@ export const workflowListCommand = defineCommand({
56
62
  console.log('\nUsage: scale workflow show <preset-id>');
57
63
  },
58
64
  });
65
+ export const workflowEffectivenessCommand = defineCommand({
66
+ meta: { name: 'effectiveness', description: 'Measure workflow effectiveness across gates, evals, memory, skills, and delivery signals' },
67
+ args: {
68
+ dir: { type: 'string', default: process.cwd(), description: 'Project directory' },
69
+ days: { type: 'string', default: '30', description: 'Lookback period in days' },
70
+ 'memory-query': { type: 'string', description: 'Read-only provider recall query used to measure memory quality' },
71
+ 'skip-memory-recall': { type: 'boolean', default: false, description: 'Skip read-only provider recall probe' },
72
+ json: { type: 'boolean', default: false },
73
+ },
74
+ async run({ args }) {
75
+ const projectDir = String(args.dir ?? process.cwd());
76
+ const days = Number.parseInt(String(args.days ?? '30'), 10);
77
+ const memoryRecall = args['skip-memory-recall']
78
+ ? null
79
+ : await recallWorkflowEffectivenessMemory(projectDir, optionalArg(args['memory-query']) ?? DEFAULT_WORKFLOW_MEMORY_QUERY);
80
+ const report = createWorkflowEffectivenessReport({
81
+ projectDir,
82
+ scaleDir: SCALE_DIR,
83
+ lookbackDays: Number.isFinite(days) ? days : 30,
84
+ deps: {
85
+ memoryRecall,
86
+ },
87
+ });
88
+ if (args.json) {
89
+ process.stdout.write(`${JSON.stringify(report, null, 2)}\n`);
90
+ return;
91
+ }
92
+ process.stdout.write(`${renderWorkflowEffectivenessReport(report)}\n`);
93
+ },
94
+ });
95
+ async function recallWorkflowEffectivenessMemory(projectDir, query) {
96
+ try {
97
+ return await recallMemoryProviders({
98
+ projectDir,
99
+ scaleDir: SCALE_DIR,
100
+ query,
101
+ task: 'workflow effectiveness',
102
+ limit: 5,
103
+ });
104
+ }
105
+ catch {
106
+ return null;
107
+ }
108
+ }
109
+ export const workflowDeployRecordCommand = defineCommand({
110
+ meta: { name: 'record', description: 'Record a release/deployment event for DORA workflow metrics' },
111
+ args: {
112
+ dir: { type: 'string', default: process.cwd(), description: 'Project directory' },
113
+ service: { type: 'string', default: 'scale-engine', description: 'Service name' },
114
+ environment: { type: 'string', default: 'production', description: 'Deployment environment' },
115
+ status: { type: 'string', default: 'succeeded', description: 'succeeded, failed, or rolled-back' },
116
+ version: { type: 'string', description: 'Released version' },
117
+ 'git-tag': { type: 'string', description: 'Infer version, commit, commit timestamp, and release timestamp from a local Git tag' },
118
+ commit: { type: 'string', description: 'Git commit SHA' },
119
+ 'commit-time': { type: 'string', description: 'Commit timestamp' },
120
+ 'started-at': { type: 'string', description: 'Deployment start timestamp' },
121
+ 'completed-at': { type: 'string', description: 'Deployment completion timestamp' },
122
+ 'failed-at': { type: 'string', description: 'Failure timestamp for failed/rolled-back deployments' },
123
+ 'restored-at': { type: 'string', description: 'Recovery completion timestamp' },
124
+ source: { type: 'string', description: 'manual, ci, release, or ship' },
125
+ evidence: { type: 'string', description: 'Comma-separated evidence paths or URLs' },
126
+ notes: { type: 'string', description: 'Short notes for this deployment event' },
127
+ json: { type: 'boolean', default: false },
128
+ },
129
+ async run({ args }) {
130
+ const projectDir = String(args.dir ?? process.cwd());
131
+ const ledger = new ReleaseDeploymentLedger(resolveCliScaleDir(projectDir));
132
+ const gitTag = optionalArg(args['git-tag']);
133
+ const gitTagDefaults = gitTag ? inferDeploymentFromGitTag(projectDir, gitTag) : undefined;
134
+ const explicitCommit = optionalArg(args.commit);
135
+ if (gitTagDefaults && explicitCommit && explicitCommit !== gitTagDefaults.commitSha) {
136
+ throw new Error(`Explicit --commit ${explicitCommit} does not match --git-tag ${gitTag} (${gitTagDefaults.commitSha})`);
137
+ }
138
+ const record = ledger.record({
139
+ service: optionalArg(args.service),
140
+ environment: optionalArg(args.environment),
141
+ status: parseDeploymentStatus(args.status),
142
+ version: optionalArg(args.version) ?? gitTagDefaults?.version,
143
+ commitSha: explicitCommit ?? gitTagDefaults?.commitSha,
144
+ commitTimestamp: optionalArg(args['commit-time']) ?? gitTagDefaults?.commitTimestamp,
145
+ startedAt: optionalArg(args['started-at']),
146
+ completedAt: optionalArg(args['completed-at']) ?? gitTagDefaults?.completedAt,
147
+ failedAt: optionalArg(args['failed-at']),
148
+ restoredAt: optionalArg(args['restored-at']),
149
+ source: parseDeploymentSource(args.source, gitTagDefaults ? 'release' : 'manual'),
150
+ evidencePaths: [
151
+ ...(gitTagDefaults?.evidencePaths ?? []),
152
+ ...parseDeployEvidencePaths(args.evidence),
153
+ ],
154
+ notes: combineNotes(optionalArg(args.notes), gitTagDefaults?.notes),
155
+ });
156
+ if (args.json) {
157
+ process.stdout.write(`${JSON.stringify({ ok: true, record }, null, 2)}\n`);
158
+ return;
159
+ }
160
+ process.stdout.write(`Recorded deployment ${record.id} (${record.status}) at ${record.completedAt}\n`);
161
+ },
162
+ });
163
+ export const workflowDeployListCommand = defineCommand({
164
+ meta: { name: 'list', description: 'List deployment events and summarize DORA workflow metrics' },
165
+ args: {
166
+ dir: { type: 'string', default: process.cwd(), description: 'Project directory' },
167
+ days: { type: 'string', default: '30', description: 'Lookback period in days' },
168
+ service: { type: 'string', description: 'Filter by service' },
169
+ environment: { type: 'string', description: 'Filter by environment' },
170
+ json: { type: 'boolean', default: false },
171
+ },
172
+ async run({ args }) {
173
+ const projectDir = String(args.dir ?? process.cwd());
174
+ const days = Number.parseInt(String(args.days ?? '30'), 10);
175
+ const lookbackDays = Number.isFinite(days) ? days : 30;
176
+ const query = {
177
+ lookbackDays,
178
+ service: optionalArg(args.service),
179
+ environment: optionalArg(args.environment),
180
+ };
181
+ const ledger = new ReleaseDeploymentLedger(resolveCliScaleDir(projectDir));
182
+ const records = ledger.list(query);
183
+ const metrics = ledger.summarize(query);
184
+ if (args.json) {
185
+ process.stdout.write(`${JSON.stringify({ ok: true, metrics, records }, null, 2)}\n`);
186
+ return;
187
+ }
188
+ process.stdout.write([
189
+ 'SCALE Deployment Ledger',
190
+ `Period: last ${lookbackDays} day(s)`,
191
+ `Records: ${metrics.totalRecords}`,
192
+ `Deployment frequency: ${metrics.deploymentFrequencyPerDay} successful deploys/day`,
193
+ `Lead time: ${metrics.leadTimeHours === null ? 'missing' : `${metrics.leadTimeHours}h`}`,
194
+ `Change failure rate: ${metrics.changeFailureRate === null ? 'missing' : `${(metrics.changeFailureRate * 100).toFixed(1)}%`}`,
195
+ `Restore time: ${metrics.restoreTimeHours === null ? 'missing' : `${metrics.restoreTimeHours}h`}`,
196
+ '',
197
+ ...records.map(record => ` ${record.id} ${record.service}/${record.environment} ${record.status} ${record.version ?? '-'} ${record.completedAt}`),
198
+ ].join('\n') + '\n');
199
+ },
200
+ });
201
+ export const workflowDeployCommand = defineCommand({
202
+ meta: { name: 'deploy', description: 'Deployment evidence ledger for workflow effectiveness metrics' },
203
+ subCommands: { record: workflowDeployRecordCommand, list: workflowDeployListCommand },
204
+ });
59
205
  export const workflowCommand = defineCommand({
60
- meta: { name: 'workflow', description: 'Workflow preset management' },
61
- subCommands: { list: workflowListCommand },
206
+ meta: { name: 'workflow', description: 'Workflow preset management and effectiveness reporting' },
207
+ subCommands: { list: workflowListCommand, effectiveness: workflowEffectivenessCommand, deploy: workflowDeployCommand },
62
208
  });
209
+ function resolveCliScaleDir(projectDir) {
210
+ return isAbsolute(SCALE_DIR) ? SCALE_DIR : resolve(projectDir, SCALE_DIR);
211
+ }
212
+ function optionalArg(value) {
213
+ const normalized = typeof value === 'string' ? value.trim() : '';
214
+ return normalized ? normalized : undefined;
215
+ }
216
+ function parseDeploymentStatus(value) {
217
+ const normalized = optionalArg(value) ?? 'succeeded';
218
+ if (normalized === 'succeeded' || normalized === 'failed' || normalized === 'rolled-back')
219
+ return normalized;
220
+ throw new Error(`Invalid deployment status: ${normalized}`);
221
+ }
222
+ function parseDeploymentSource(value, fallback) {
223
+ const normalized = optionalArg(value) ?? fallback;
224
+ if (normalized === 'manual' || normalized === 'ci' || normalized === 'release' || normalized === 'ship')
225
+ return normalized;
226
+ throw new Error(`Invalid deployment source: ${normalized}`);
227
+ }
228
+ function parseDeployEvidencePaths(value) {
229
+ return optionalArg(value)
230
+ ?.split(',')
231
+ .map(item => item.trim())
232
+ .filter(Boolean) ?? [];
233
+ }
234
+ function inferDeploymentFromGitTag(projectDir, tag) {
235
+ validateGitTagName(projectDir, tag);
236
+ const commitSha = gitOutput(projectDir, ['rev-parse', '--verify', `refs/tags/${tag}^{commit}`]);
237
+ const commitTimestamp = optionalArg(gitOutput(projectDir, ['show', '-s', '--format=%cI', commitSha]));
238
+ const tagTimestamp = optionalArg(tryGitOutput(projectDir, ['for-each-ref', `refs/tags/${tag}`, '--format=%(creatordate:iso-strict)']));
239
+ return {
240
+ version: tag,
241
+ commitSha,
242
+ commitTimestamp,
243
+ completedAt: tagTimestamp ?? commitTimestamp,
244
+ evidencePaths: [`git:tag:${tag}`],
245
+ notes: `gitTag=${tag}`,
246
+ };
247
+ }
248
+ function validateGitTagName(projectDir, tag) {
249
+ try {
250
+ execFileSync('git', ['check-ref-format', `refs/tags/${tag}`], {
251
+ cwd: projectDir,
252
+ encoding: 'utf-8',
253
+ stdio: ['ignore', 'ignore', 'pipe'],
254
+ timeout: 10000,
255
+ });
256
+ }
257
+ catch {
258
+ throw new Error(`Invalid Git tag name: ${tag}`);
259
+ }
260
+ }
261
+ function gitOutput(projectDir, args) {
262
+ try {
263
+ return execFileSync('git', args, {
264
+ cwd: projectDir,
265
+ encoding: 'utf-8',
266
+ stdio: ['ignore', 'pipe', 'pipe'],
267
+ timeout: 10000,
268
+ }).trim();
269
+ }
270
+ catch (error) {
271
+ const stderr = error && typeof error === 'object' && 'stderr' in error
272
+ ? String(error.stderr ?? '').trim()
273
+ : '';
274
+ throw new Error(`Git command failed: git ${args.join(' ')}${stderr ? `: ${stderr}` : ''}`);
275
+ }
276
+ }
277
+ function tryGitOutput(projectDir, args) {
278
+ try {
279
+ return gitOutput(projectDir, args);
280
+ }
281
+ catch {
282
+ return undefined;
283
+ }
284
+ }
285
+ function combineNotes(...notes) {
286
+ const combined = notes.filter((note) => Boolean(note)).join('; ');
287
+ return combined || undefined;
288
+ }
63
289
  export const evidenceListCommand = defineCommand({
64
290
  meta: { name: 'list', description: 'List persisted gate evidence records' },
65
291
  args: {
@@ -1 +1 @@
1
- {"version":3,"file":"workflowEvidenceCommands.js","sourceRoot":"","sources":["../../src/cli/workflowEvidenceCommands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflowEvidenceCommands.js","sourceRoot":"","sources":["../../src/cli/workflowEvidenceCommands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export interface CortexAutoFixObservation {
2
+ timestamp: string;
3
+ sessionId: string;
4
+ gateName: string;
5
+ gateStatus: 'PASS' | 'FAIL';
6
+ durationMs?: number;
7
+ tokensUsed: number;
8
+ estimatedCostUsd: number;
9
+ }
10
+ export declare function loadAutoFixEventObservations(scaleDir: string): CortexAutoFixObservation[];
11
+ export declare function parseAutoFixEventObservation(value: unknown): CortexAutoFixObservation | null;
@@ -0,0 +1,72 @@
1
+ import { existsSync, readdirSync, readFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { logger } from '../core/logger.js';
4
+ export function loadAutoFixEventObservations(scaleDir) {
5
+ const eventsDir = join(scaleDir, 'events');
6
+ if (!existsSync(eventsDir))
7
+ return [];
8
+ const observations = [];
9
+ try {
10
+ for (const file of readdirSync(eventsDir)) {
11
+ if (!file.endsWith('.jsonl'))
12
+ continue;
13
+ const lines = readFileSync(join(eventsDir, file), 'utf-8').split('\n').filter(Boolean);
14
+ for (const [index, line] of lines.entries()) {
15
+ try {
16
+ const observation = parseAutoFixEventObservation(JSON.parse(line));
17
+ if (observation)
18
+ observations.push(observation);
19
+ }
20
+ catch (err) {
21
+ logger.debug({ err, file, lineNumber: index + 1 }, 'Skipped malformed auto-fix event line');
22
+ }
23
+ }
24
+ }
25
+ }
26
+ catch (err) {
27
+ logger.warn({ err }, 'Failed to load auto-fix event observations');
28
+ }
29
+ return observations;
30
+ }
31
+ export function parseAutoFixEventObservation(value) {
32
+ if (!isRecord(value) || value.type !== 'autofix.attempt')
33
+ return null;
34
+ const payload = isRecord(value.payload) ? value.payload : null;
35
+ if (!payload)
36
+ return null;
37
+ const timestamp = timestampValue(value.timestamp);
38
+ const category = stringValue(payload.category) ?? 'unknown';
39
+ if (!timestamp)
40
+ return null;
41
+ return {
42
+ timestamp,
43
+ sessionId: stringValue(value.sessionId) ?? stringValue(value.id) ?? `auto-fix-${timestamp}`,
44
+ gateName: `auto-fix:${category}`,
45
+ gateStatus: payload.success === true ? 'PASS' : 'FAIL',
46
+ durationMs: finiteNumber(payload.durationMs),
47
+ tokensUsed: 0,
48
+ estimatedCostUsd: 0,
49
+ };
50
+ }
51
+ function timestampValue(value) {
52
+ if (typeof value === 'string') {
53
+ const ts = new Date(value).getTime();
54
+ return Number.isFinite(ts) ? new Date(ts).toISOString() : undefined;
55
+ }
56
+ const numeric = finiteNumber(value);
57
+ if (numeric === undefined)
58
+ return undefined;
59
+ const ms = numeric < 10_000_000_000 ? numeric * 1000 : numeric;
60
+ const ts = new Date(ms).getTime();
61
+ return Number.isFinite(ts) ? new Date(ms).toISOString() : undefined;
62
+ }
63
+ function stringValue(value) {
64
+ return typeof value === 'string' && value.trim().length > 0 ? value : undefined;
65
+ }
66
+ function finiteNumber(value) {
67
+ return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
68
+ }
69
+ function isRecord(value) {
70
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
71
+ }
72
+ //# sourceMappingURL=AutoFixEventObservations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoFixEventObservations.js","sourceRoot":"","sources":["../../src/cortex/AutoFixEventObservations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export interface CortexGateObservation {
2
+ timestamp: string;
3
+ sessionId: string;
4
+ gateName: string;
5
+ gateStatus: 'PASS' | 'FAIL' | 'WARN';
6
+ errorPattern?: string;
7
+ filePaths: string[];
8
+ rootCause?: string;
9
+ resolution?: string;
10
+ tokensUsed: number;
11
+ modelUsed: string;
12
+ durationMs?: number;
13
+ estimatedCostUsd?: number;
14
+ }
15
+ export declare function loadGateEvidenceObservations(scaleDir: string): CortexGateObservation[];
16
+ export declare function parseGateEvidenceObservation(value: unknown, fileName?: string): CortexGateObservation | null;
17
+ export declare function dedupeCortexObservations<T extends {
18
+ timestamp: string;
19
+ sessionId?: string;
20
+ gateName?: string;
21
+ gateStatus?: string;
22
+ }>(observations: T[]): T[];
@@ -0,0 +1,179 @@
1
+ import { existsSync, readdirSync, readFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { logger } from '../core/logger.js';
4
+ export function loadGateEvidenceObservations(scaleDir) {
5
+ const evidenceDir = join(scaleDir, 'evidence');
6
+ if (!existsSync(evidenceDir))
7
+ return [];
8
+ const observations = [];
9
+ try {
10
+ for (const file of readdirSync(evidenceDir)) {
11
+ if (!/^GATE-.+\.json$/u.test(file))
12
+ continue;
13
+ try {
14
+ const parsed = JSON.parse(readFileSync(join(evidenceDir, file), 'utf-8'));
15
+ const observation = parseGateEvidenceObservation(parsed, file);
16
+ if (observation)
17
+ observations.push(observation);
18
+ }
19
+ catch (err) {
20
+ logger.debug({ err, file }, 'Skipped malformed gate evidence file');
21
+ }
22
+ }
23
+ }
24
+ catch (err) {
25
+ logger.warn({ err }, 'Failed to load gate evidence observations');
26
+ }
27
+ return observations;
28
+ }
29
+ export function parseGateEvidenceObservation(value, fileName = '') {
30
+ if (!isRecord(value))
31
+ return null;
32
+ const gateName = stringValue(value.gate) ?? gateNameFromId(stringValue(value.id) ?? fileName);
33
+ const timestamp = timestampValue(value.createdAt) ?? timestampFromId(stringValue(value.id) ?? fileName);
34
+ if (!gateName || !timestamp)
35
+ return null;
36
+ const items = Array.isArray(value.evidenceItems)
37
+ ? value.evidenceItems.filter(isRecord)
38
+ : [];
39
+ const gateStatus = statusFromEvidence(value);
40
+ const failureItems = items.filter(isFailedEvidenceItem);
41
+ const blockers = stringArray(value.blockers);
42
+ const failureSummary = gateStatus === 'FAIL'
43
+ ? summarize(firstNonEmpty([
44
+ blockers[0],
45
+ evidenceItemSummary(failureItems[0]),
46
+ stringValue(value.evidence),
47
+ stringValue(value.status),
48
+ ]))
49
+ : undefined;
50
+ return {
51
+ timestamp,
52
+ sessionId: stringValue(value.id) ?? `${gateName}-${timestamp}`,
53
+ gateName,
54
+ gateStatus,
55
+ errorPattern: failureSummary ? `${gateName}: ${failureSummary}` : undefined,
56
+ filePaths: uniqueStrings(items.map(item => stringValue(item.path)).filter(Boolean)),
57
+ rootCause: failureSummary,
58
+ resolution: failureSummary
59
+ ? `Inspect .scale/evidence/${stringValue(value.id) ?? fileName} and rerun gate ${gateName}.`
60
+ : undefined,
61
+ tokensUsed: tokenCount(value, items),
62
+ modelUsed: 'gate-evidence',
63
+ durationMs: finiteNumber(value.durationMs) ?? sumNumbers(items.map(item => finiteNumber(item.durationMs))),
64
+ estimatedCostUsd: finiteNumber(value.estimatedCostUsd) ?? sumNumbers(items.map(item => finiteNumber(item.estimatedCostUsd))),
65
+ };
66
+ }
67
+ export function dedupeCortexObservations(observations) {
68
+ const seen = new Set();
69
+ const deduped = [];
70
+ for (const observation of observations) {
71
+ const key = [
72
+ observation.sessionId ?? '',
73
+ observation.gateName ?? '',
74
+ observation.gateStatus ?? '',
75
+ observation.timestamp,
76
+ ].join('\u0000');
77
+ if (seen.has(key))
78
+ continue;
79
+ seen.add(key);
80
+ deduped.push(observation);
81
+ }
82
+ return deduped;
83
+ }
84
+ function statusFromEvidence(value) {
85
+ if (value.passed === true || stringValue(value.status)?.toUpperCase() === 'PASSED')
86
+ return 'PASS';
87
+ if (value.passed === false)
88
+ return 'FAIL';
89
+ const status = stringValue(value.status)?.toUpperCase();
90
+ if (!status)
91
+ return 'WARN';
92
+ if (status.includes('FAIL') || status.includes('BLOCK'))
93
+ return 'FAIL';
94
+ if (status.includes('WARN'))
95
+ return 'WARN';
96
+ return 'WARN';
97
+ }
98
+ function isFailedEvidenceItem(item) {
99
+ if (item.passed === false)
100
+ return true;
101
+ const exitCode = finiteNumber(item.exitCode);
102
+ return exitCode !== undefined && exitCode !== 0;
103
+ }
104
+ function evidenceItemSummary(item) {
105
+ if (!item)
106
+ return undefined;
107
+ const label = stringValue(item.label);
108
+ const detail = stringValue(item.detail);
109
+ if (label && detail)
110
+ return `${label}: ${detail}`;
111
+ return label ?? detail;
112
+ }
113
+ function tokenCount(record, items) {
114
+ const itemTotal = sumNumbers(items.map(item => finiteNumber(item.rawEstimatedTokens)
115
+ ?? finiteNumber(item.compressedEstimatedTokens)
116
+ ?? finiteNumber(item.tokensUsed)));
117
+ if (itemTotal !== undefined && itemTotal > 0)
118
+ return itemTotal;
119
+ return finiteNumber(record.rawEstimatedTokens)
120
+ ?? finiteNumber(record.compressedEstimatedTokens)
121
+ ?? finiteNumber(record.tokensUsed)
122
+ ?? 0;
123
+ }
124
+ function sumNumbers(values) {
125
+ let total = 0;
126
+ for (const value of values) {
127
+ total += value ?? 0;
128
+ }
129
+ return total > 0 ? total : undefined;
130
+ }
131
+ function timestampValue(value) {
132
+ if (typeof value === 'string') {
133
+ const ts = new Date(value).getTime();
134
+ return Number.isFinite(ts) ? new Date(ts).toISOString() : undefined;
135
+ }
136
+ const numeric = finiteNumber(value);
137
+ if (numeric === undefined)
138
+ return undefined;
139
+ const ms = numeric < 10_000_000_000 ? numeric * 1000 : numeric;
140
+ const ts = new Date(ms).getTime();
141
+ return Number.isFinite(ts) ? new Date(ts).toISOString() : undefined;
142
+ }
143
+ function timestampFromId(id) {
144
+ const match = id?.match(/GATE-[A-Z0-9]+-(\d{10,})/u);
145
+ if (!match)
146
+ return undefined;
147
+ return timestampValue(Number(match[1]));
148
+ }
149
+ function gateNameFromId(id) {
150
+ const match = id?.match(/GATE-([A-Z0-9]+)-/u);
151
+ return match?.[1];
152
+ }
153
+ function stringArray(value) {
154
+ if (!Array.isArray(value))
155
+ return [];
156
+ return value.filter((entry) => typeof entry === 'string' && entry.trim().length > 0);
157
+ }
158
+ function uniqueStrings(values) {
159
+ return Array.from(new Set(values.filter((value) => Boolean(value))));
160
+ }
161
+ function firstNonEmpty(values) {
162
+ return values.find(value => value !== undefined && value.trim().length > 0);
163
+ }
164
+ function summarize(value) {
165
+ if (!value)
166
+ return undefined;
167
+ const normalized = value.replace(/\s+/gu, ' ').trim();
168
+ return normalized.length > 180 ? `${normalized.slice(0, 177)}...` : normalized;
169
+ }
170
+ function stringValue(value) {
171
+ return typeof value === 'string' && value.trim().length > 0 ? value : undefined;
172
+ }
173
+ function finiteNumber(value) {
174
+ return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
175
+ }
176
+ function isRecord(value) {
177
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
178
+ }
179
+ //# sourceMappingURL=GateEvidenceObservations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GateEvidenceObservations.js","sourceRoot":"","sources":["../../src/cortex/GateEvidenceObservations.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { Instinct } from './InstinctExtractor.js';
2
+ import { type InstinctRuntimeEvidenceSummary } from './InstinctRuntimeEvidence.js';
2
3
  export interface GovernanceMetrics {
3
4
  gates: {
4
5
  totalRuns: number;
@@ -20,6 +21,7 @@ export interface GovernanceMetrics {
20
21
  count: number;
21
22
  hitRate: number;
22
23
  }>;
24
+ runtimeEvidence?: InstinctRuntimeEvidenceSummary;
23
25
  };
24
26
  cost: {
25
27
  totalTokens: number;