@devflow-tools/benchmark 0.17.7 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2 -2
  3. package/dist/accuracy-command-options.d.ts +3 -0
  4. package/dist/accuracy-command-options.d.ts.map +1 -0
  5. package/dist/accuracy-command-options.js +17 -0
  6. package/dist/accuracy-command-options.js.map +1 -0
  7. package/dist/context-symbol-quality-command.d.ts +59 -0
  8. package/dist/context-symbol-quality-command.d.ts.map +1 -0
  9. package/dist/context-symbol-quality-command.js +482 -0
  10. package/dist/context-symbol-quality-command.js.map +1 -0
  11. package/dist/evaluation-bundle-builder.d.ts +48 -0
  12. package/dist/evaluation-bundle-builder.d.ts.map +1 -0
  13. package/dist/evaluation-bundle-builder.js +496 -0
  14. package/dist/evaluation-bundle-builder.js.map +1 -0
  15. package/dist/evaluation-bundle-command.d.ts +2 -0
  16. package/dist/evaluation-bundle-command.d.ts.map +1 -0
  17. package/dist/evaluation-bundle-command.js +15 -0
  18. package/dist/evaluation-bundle-command.js.map +1 -0
  19. package/dist/evaluation-bundle.d.ts +55 -0
  20. package/dist/evaluation-bundle.d.ts.map +1 -0
  21. package/dist/evaluation-bundle.js +272 -0
  22. package/dist/evaluation-bundle.js.map +1 -0
  23. package/dist/evaluation-run-state.d.ts +23 -0
  24. package/dist/evaluation-run-state.d.ts.map +1 -0
  25. package/dist/evaluation-run-state.js +115 -0
  26. package/dist/evaluation-run-state.js.map +1 -0
  27. package/dist/evidence-quality-metrics.d.ts +15 -0
  28. package/dist/evidence-quality-metrics.d.ts.map +1 -1
  29. package/dist/evidence-quality-metrics.js +51 -1
  30. package/dist/evidence-quality-metrics.js.map +1 -1
  31. package/dist/graders/deterministic.d.ts.map +1 -1
  32. package/dist/graders/deterministic.js +5 -3
  33. package/dist/graders/deterministic.js.map +1 -1
  34. package/dist/index.d.ts +15 -2
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +12 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/release-quality-bundle-command.d.ts +3 -0
  39. package/dist/release-quality-bundle-command.d.ts.map +1 -0
  40. package/dist/release-quality-bundle-command.js +72 -0
  41. package/dist/release-quality-bundle-command.js.map +1 -0
  42. package/dist/release-quality-bundle-evaluator.d.ts +61 -0
  43. package/dist/release-quality-bundle-evaluator.d.ts.map +1 -0
  44. package/dist/release-quality-bundle-evaluator.js +321 -0
  45. package/dist/release-quality-bundle-evaluator.js.map +1 -0
  46. package/dist/release-quality-bundle-materializer.d.ts +79 -0
  47. package/dist/release-quality-bundle-materializer.d.ts.map +1 -0
  48. package/dist/release-quality-bundle-materializer.js +395 -0
  49. package/dist/release-quality-bundle-materializer.js.map +1 -0
  50. package/dist/release-quality-comparison.d.ts +34 -0
  51. package/dist/release-quality-comparison.d.ts.map +1 -0
  52. package/dist/release-quality-comparison.js +60 -0
  53. package/dist/release-quality-comparison.js.map +1 -0
  54. package/dist/release-quality-evaluation-command.d.ts +42 -0
  55. package/dist/release-quality-evaluation-command.d.ts.map +1 -0
  56. package/dist/release-quality-evaluation-command.js +91 -0
  57. package/dist/release-quality-evaluation-command.js.map +1 -0
  58. package/dist/release-quality-host-proof.d.ts +30 -0
  59. package/dist/release-quality-host-proof.d.ts.map +1 -0
  60. package/dist/release-quality-host-proof.js +109 -0
  61. package/dist/release-quality-host-proof.js.map +1 -0
  62. package/dist/release-quality-output-cleanup.d.ts +2 -0
  63. package/dist/release-quality-output-cleanup.d.ts.map +1 -0
  64. package/dist/release-quality-output-cleanup.js +18 -0
  65. package/dist/release-quality-output-cleanup.js.map +1 -0
  66. package/dist/release-quality-policy.d.ts +87 -0
  67. package/dist/release-quality-policy.d.ts.map +1 -0
  68. package/dist/release-quality-policy.js +179 -0
  69. package/dist/release-quality-policy.js.map +1 -0
  70. package/dist/release-quality-query-sampling.d.ts +36 -0
  71. package/dist/release-quality-query-sampling.d.ts.map +1 -0
  72. package/dist/release-quality-query-sampling.js +87 -0
  73. package/dist/release-quality-query-sampling.js.map +1 -0
  74. package/dist/release-quality-source-snapshot.d.ts +18 -0
  75. package/dist/release-quality-source-snapshot.d.ts.map +1 -0
  76. package/dist/release-quality-source-snapshot.js +46 -0
  77. package/dist/release-quality-source-snapshot.js.map +1 -0
  78. package/dist/retrieval-quality-corpus.d.ts +0 -1
  79. package/dist/retrieval-quality-corpus.d.ts.map +1 -1
  80. package/dist/retrieval-quality-corpus.js +1 -1
  81. package/dist/retrieval-quality-corpus.js.map +1 -1
  82. package/dist/retrieval-quality.d.ts.map +1 -1
  83. package/dist/retrieval-quality.js +29 -26
  84. package/dist/retrieval-quality.js.map +1 -1
  85. package/dist/run-accuracy-tests.js +82 -2
  86. package/dist/run-accuracy-tests.js.map +1 -1
  87. package/dist/suite-runner.js +1 -1
  88. package/dist/suite-runner.js.map +1 -1
  89. package/dist/unified-runtime-corpus.d.ts +64 -0
  90. package/dist/unified-runtime-corpus.d.ts.map +1 -0
  91. package/dist/unified-runtime-corpus.js +161 -0
  92. package/dist/unified-runtime-corpus.js.map +1 -0
  93. package/dist/unified-runtime-evaluation.d.ts +133 -0
  94. package/dist/unified-runtime-evaluation.d.ts.map +1 -0
  95. package/dist/unified-runtime-evaluation.js +388 -0
  96. package/dist/unified-runtime-evaluation.js.map +1 -0
  97. package/dist/unified-runtime-observation.d.ts +101 -0
  98. package/dist/unified-runtime-observation.d.ts.map +1 -0
  99. package/dist/unified-runtime-observation.js +2 -0
  100. package/dist/unified-runtime-observation.js.map +1 -0
  101. package/dist/unified-runtime-runner.d.ts +73 -0
  102. package/dist/unified-runtime-runner.d.ts.map +1 -0
  103. package/dist/unified-runtime-runner.js +620 -0
  104. package/dist/unified-runtime-runner.js.map +1 -0
  105. package/fixtures/evidence-runtime-corpus.json +0 -100
  106. package/fixtures/release-quality/bundles.json +1 -0
  107. package/fixtures/release-quality/calibration.json +602 -0
  108. package/fixtures/release-quality/ecc/corpus.json +257 -0
  109. package/fixtures/release-quality/ecc/input.json +62 -0
  110. package/fixtures/release-quality/llm-wiki/corpus.json +263 -0
  111. package/fixtures/release-quality/llm-wiki/input.json +72 -0
  112. package/fixtures/release-quality/mem0/corpus.json +288 -0
  113. package/fixtures/release-quality/mem0/input.json +68 -0
  114. package/fixtures/release-quality/projects.json +29 -0
  115. package/fixtures/release-quality/release-quality-policy.json +232 -0
  116. package/fixtures/release-quality/rsbuild-react/corpus.json +263 -0
  117. package/fixtures/release-quality/rsbuild-react/input.json +62 -0
  118. package/fixtures/retrieval-quality-corpus.json +7 -7
  119. package/fixtures/semantic-regex-inventory.json +3 -10
  120. package/fixtures/unified-runtime/baselines/2026-08-08.json +37 -0
  121. package/fixtures/unified-runtime/context.json +206 -0
  122. package/fixtures/unified-runtime/knowledge.json +224 -0
  123. package/fixtures/unified-runtime/memory.json +224 -0
  124. package/fixtures/unified-runtime/real-projects/rsbuild-react-2026-08-07/context.json +32 -0
  125. package/fixtures/unified-runtime/real-projects/rsbuild-react-2026-08-07/knowledge.json +32 -0
  126. package/fixtures/unified-runtime/real-projects/rsbuild-react-2026-08-07/memory.json +32 -0
  127. package/fixtures/unified-runtime/real-projects/rsbuild-react-2026-08-07/semantic.json +409 -0
  128. package/fixtures/unified-runtime/runs/rsbuild-react-2026-08-05.json +54 -0
  129. package/fixtures/unified-runtime/semantic.json +409 -0
  130. package/package.json +24 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-quality-bundle-evaluator.js","sourceRoot":"","sources":["../src/release-quality-bundle-evaluator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ import { type EvaluationBundleManifestV1, type EvaluationChannel } from '@devflow-tools/sdk';
2
+ export interface ReleaseQualityProjectInput {
3
+ schemaVersion: 'devflow.release-quality-project-input.v1';
4
+ project: {
5
+ projectId: string;
6
+ repository: string;
7
+ commit: string;
8
+ tree: string;
9
+ checkoutDirectory: string;
10
+ sourceSnapshot?: {
11
+ manifestSha256: string;
12
+ };
13
+ };
14
+ context: {
15
+ evidence: Array<{
16
+ path: string;
17
+ sha256: string;
18
+ symbol: string;
19
+ startLine: number;
20
+ }>;
21
+ };
22
+ memory: {
23
+ actorId: string;
24
+ sessionId: string;
25
+ prompt: string;
26
+ explicitContent: string;
27
+ temporal: {
28
+ olderContent: string;
29
+ currentContent: string;
30
+ query: string;
31
+ };
32
+ sourceEvidence: Array<{
33
+ path: string;
34
+ sha256: string;
35
+ }>;
36
+ };
37
+ knowledge: {
38
+ sourceId: string;
39
+ version: string;
40
+ pluginName: string;
41
+ goldText: string;
42
+ provenance: {
43
+ repository: string;
44
+ commit: string;
45
+ };
46
+ documents: Array<{
47
+ path: string;
48
+ title: string;
49
+ sourceUri: string;
50
+ sha256: string;
51
+ }>;
52
+ };
53
+ requiredSlices: Array<{
54
+ channel: 'context' | 'memory' | 'knowledge';
55
+ caseClass: 'positive' | 'lifecycle';
56
+ caseIds: string[];
57
+ }>;
58
+ }
59
+ export interface ReleaseQualityMaterializationTarget {
60
+ input: ReleaseQualityProjectInput;
61
+ inputPath: string;
62
+ corpusPath: string;
63
+ checkoutPath: string;
64
+ outputPath: string;
65
+ }
66
+ export interface ReleaseQualityBundleMaterializationResult {
67
+ path: string;
68
+ manifest: EvaluationBundleManifestV1;
69
+ inventories: Record<EvaluationChannel, string[]>;
70
+ labelRefs: Record<EvaluationChannel, string[]>;
71
+ }
72
+ export declare function loadReleaseQualityMaterializationTargets(input: {
73
+ manifestPath: string;
74
+ sourcesRoot: string;
75
+ outputRoot: string;
76
+ }): ReleaseQualityMaterializationTarget[];
77
+ export declare function materializeReleaseQualityBundle(target: ReleaseQualityMaterializationTarget, builderIdentity: string): Promise<ReleaseQualityBundleMaterializationResult>;
78
+ export declare function normalizedKnowledgeGoldText(value: string): string;
79
+ //# sourceMappingURL=release-quality-bundle-materializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-quality-bundle-materializer.d.ts","sourceRoot":"","sources":["../src/release-quality-bundle-materializer.ts"],"names":[],"mappings":"AAiBA,OAAO,EAML,KAAK,0BAA0B,EAC/B,KAAK,iBAAiB,EACvB,MAAM,oBAAoB,CAAC;AAY5B,MAAM,WAAW,0BAA0B;IACzC,aAAa,EAAE,0CAA0C,CAAC;IAC1D,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,iBAAiB,EAAE,MAAM,CAAC;QAC1B,cAAc,CAAC,EAAE;YAAE,cAAc,EAAE,MAAM,CAAA;SAAE,CAAC;KAC7C,CAAC;IACF,OAAO,EAAE;QACP,QAAQ,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACtF,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,eAAe,EAAE,MAAM,CAAC;QACxB,QAAQ,EAAE;YAAE,YAAY,EAAE,MAAM,CAAC;YAAC,cAAc,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;QAC1E,cAAc,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACzD,CAAC;IACF,SAAS,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QACnD,SAAS,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACtF,CAAC;IACF,cAAc,EAAE,KAAK,CAAC;QACpB,OAAO,EAAE,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;QAC5C,SAAS,EAAE,UAAU,GAAG,WAAW,CAAC;QACpC,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC,CAAC;CACJ;AAYD,MAAM,WAAW,mCAAmC;IAClD,KAAK,EAAE,0BAA0B,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,yCAAyC;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,0BAA0B,CAAC;IACrC,WAAW,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAAC,CAAC;IACjD,SAAS,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAAC,CAAC;CAChD;AAED,wBAAgB,wCAAwC,CAAC,KAAK,EAAE;IAC9D,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,mCAAmC,EAAE,CA2BxC;AAED,wBAAsB,+BAA+B,CACnD,MAAM,EAAE,mCAAmC,EAC3C,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,yCAAyC,CAAC,CA6KpD;AA4HD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjE"}
@@ -0,0 +1,395 @@
1
+ import { execFileSync } from 'node:child_process';
2
+ import { createHash } from 'node:crypto';
3
+ import { cpSync, mkdirSync, mkdtempSync, readdirSync, readFileSync, rmSync, writeFileSync, } from 'node:fs';
4
+ import { tmpdir } from 'node:os';
5
+ import { dirname, isAbsolute, join, resolve } from 'node:path';
6
+ import CGModule from '@colbymchenry/codegraph';
7
+ import Database from 'better-sqlite3';
8
+ import { createEngines } from '@devflow-tools/mcp-server/composition';
9
+ import { evaluationContextStableRef, evaluationKnowledgeStableRef, evaluationMemoryStableRef, stableRuntimeJson, } from '@devflow-tools/sdk';
10
+ import { finalizeEvaluationBundle, prepareEvaluationBundle, } from './evaluation-bundle-builder.js';
11
+ import { removeReleaseQualityOutput } from './release-quality-output-cleanup.js';
12
+ import { buildSourceSnapshot, snapshotIdentity } from './release-quality-source-snapshot.js';
13
+ const CodeGraph = CGModule.default ?? CGModule;
14
+ const MATERIALIZATION_TIME_FLOOR = 1_700_000_000_000;
15
+ export function loadReleaseQualityMaterializationTargets(input) {
16
+ const manifestPath = resolve(input.manifestPath);
17
+ const fixtureRoot = dirname(manifestPath);
18
+ const manifest = readJson(manifestPath);
19
+ if (manifest.schemaVersion !== 'devflow.release-quality-projects.v1') {
20
+ throw new Error('RELEASE_QUALITY_PROJECTS_MANIFEST_INVALID');
21
+ }
22
+ return manifest.projects.map(entry => {
23
+ relativePath(entry.datasetDirectory);
24
+ relativePath(entry.input);
25
+ relativePath(entry.corpus);
26
+ const datasetRoot = join(fixtureRoot, entry.datasetDirectory);
27
+ const inputPath = join(datasetRoot, entry.input);
28
+ const projectInput = readJson(inputPath);
29
+ if (projectInput.schemaVersion !== 'devflow.release-quality-project-input.v1'
30
+ || projectInput.project.projectId !== entry.projectId) {
31
+ throw new Error('RELEASE_QUALITY_PROJECT_INPUT_INVALID');
32
+ }
33
+ relativePath(projectInput.project.checkoutDirectory);
34
+ return {
35
+ input: projectInput,
36
+ inputPath,
37
+ corpusPath: join(datasetRoot, entry.corpus),
38
+ checkoutPath: join(resolve(input.sourcesRoot), projectInput.project.checkoutDirectory),
39
+ outputPath: join(resolve(input.outputRoot), entry.datasetDirectory),
40
+ };
41
+ });
42
+ }
43
+ export async function materializeReleaseQualityBundle(target, builderIdentity) {
44
+ if (!/^devflow:[0-9a-f]{40}$/u.test(builderIdentity)) {
45
+ throw new Error('RELEASE_QUALITY_BUILDER_IDENTITY_INVALID');
46
+ }
47
+ assertPinnedCheckout(target);
48
+ const runtimeContainer = mkdtempSync(join(tmpdir(), 'devflow-release-materialize-'));
49
+ const runtimeRoot = join(runtimeContainer, 'project');
50
+ let engines;
51
+ let contextEmbeddingProfile;
52
+ try {
53
+ mkdirSync(runtimeRoot, { recursive: true });
54
+ for (const entry of readdirSync(target.checkoutPath)) {
55
+ cpSync(join(target.checkoutPath, entry), join(runtimeRoot, entry), { recursive: true, dereference: false });
56
+ }
57
+ rmSync(join(runtimeRoot, '.git'), { recursive: true, force: true });
58
+ rmSync(join(runtimeRoot, '.devflow'), { recursive: true, force: true });
59
+ rmSync(join(runtimeRoot, '.codegraph'), { recursive: true, force: true });
60
+ const sourceSnapshot = buildSourceSnapshot(target.checkoutPath);
61
+ if (target.input.project.sourceSnapshot && sourceSnapshot.manifestSha256 !== target.input.project.sourceSnapshot.manifestSha256)
62
+ throw new Error('RELEASE_SOURCE_SNAPSHOT_MISMATCH');
63
+ mkdirSync(join(runtimeRoot, '.devflow'), { recursive: true });
64
+ writeJson(join(runtimeRoot, '.devflow/source-snapshot.json'), snapshotIdentity(sourceSnapshot));
65
+ writeJson(join(runtimeRoot, '.devflow/config.json'), {
66
+ projectId: target.input.project.projectId,
67
+ memoryNamespace: `memory:${target.input.project.projectId}`,
68
+ });
69
+ const graph = await CodeGraph.init(runtimeRoot);
70
+ try {
71
+ const indexResult = await graph.indexAll();
72
+ if (!indexResult.success || graph.getIndexState() !== 'complete') {
73
+ const reason = indexResult.errors[0]?.message ?? 'unknown index failure';
74
+ throw new Error(`RELEASE_QUALITY_CONTEXT_INDEX_FAILED:${indexResult.filesErrored}:${reason}`);
75
+ }
76
+ }
77
+ finally {
78
+ graph.close();
79
+ }
80
+ const dataSources = initializeRuntimeDataSources(runtimeRoot, runtimeContainer);
81
+ engines = await createEngines(runtimeRoot, { warmSymbolVectors: false, dataSources });
82
+ if (!engines.symbolEmbedder || !engines.symbolStore) {
83
+ throw new Error('RELEASE_QUALITY_CONTEXT_VECTOR_RUNTIME_UNAVAILABLE');
84
+ }
85
+ await engines.symbolEmbedder.buildAll();
86
+ if (!engines.symbolEmbedder.isBuilt()) {
87
+ throw new Error('RELEASE_QUALITY_CONTEXT_VECTOR_BUILD_INCOMPLETE');
88
+ }
89
+ contextEmbeddingProfile = engines.symbolStore.getProfile();
90
+ const contextNodes = target.input.context.evidence.flatMap(evidence => {
91
+ const nodes = engines.codegraph.getNodesInFile(evidence.path);
92
+ return nodes.filter(node => node.name === evidence.symbol && node.startLine === evidence.startLine);
93
+ });
94
+ if (contextNodes.length === 0)
95
+ throw new Error('RELEASE_QUALITY_CONTEXT_EVIDENCE_MISSING');
96
+ const eventId = `event:release-quality:${stableId(target.input.project.projectId)}`;
97
+ const createdAt = Math.max(MATERIALIZATION_TIME_FLOOR, MATERIALIZATION_TIME_FLOOR);
98
+ const temporalOlderEventId = `${eventId}:older`;
99
+ const temporalCurrentEventId = `${eventId}:current`;
100
+ await engines.memory.recordEvent({
101
+ id: temporalOlderEventId,
102
+ sessionId: target.input.memory.sessionId,
103
+ tool: 'UserPromptSubmit',
104
+ kind: 'user_message',
105
+ payload: { turnId: `turn:release-quality:${stableId(target.input.project.projectId)}` },
106
+ createdAt,
107
+ });
108
+ const olderMemory = await engines.memory.saveExplicitMemoryIntent(target.input.memory.temporal.olderContent, { actorId: target.input.memory.actorId, sessionId: target.input.memory.sessionId }, temporalOlderEventId);
109
+ await engines.memory.recordEvent({
110
+ id: temporalCurrentEventId,
111
+ sessionId: target.input.memory.sessionId,
112
+ tool: 'UserPromptSubmit',
113
+ kind: 'user_message',
114
+ payload: { turnId: `turn:release-quality:${stableId(target.input.project.projectId)}:current` },
115
+ createdAt: createdAt + 1_000,
116
+ });
117
+ const savedMemory = await engines.memory.saveExplicitMemoryIntent(target.input.memory.temporal.currentContent, {
118
+ actorId: target.input.memory.actorId,
119
+ sessionId: target.input.memory.sessionId,
120
+ supersedesEpisodeId: olderMemory.id,
121
+ }, temporalCurrentEventId);
122
+ if (olderMemory.type !== 'cold_episode' || savedMemory.type !== 'cold_episode') {
123
+ throw new Error('RELEASE_QUALITY_TEMPORAL_EPISODE_NOT_COLD');
124
+ }
125
+ await engines.knowledge.registerSource({
126
+ name: target.input.knowledge.sourceId,
127
+ pluginName: target.input.knowledge.pluginName,
128
+ urls: target.input.knowledge.documents.map(document => document.sourceUri),
129
+ version: target.input.knowledge.version,
130
+ }, createdAt);
131
+ const markdown = target.input.knowledge.documents.map(document => [
132
+ `# ${document.title}`,
133
+ `Source: ${document.sourceUri}`,
134
+ readFileSync(join(target.checkoutPath, document.path), 'utf8'),
135
+ ].join('\n\n')).join('\n\n');
136
+ await engines.knowledge.ingestSourceMarkdown({
137
+ source: target.input.knowledge.sourceId,
138
+ title: target.input.knowledge.documents.map(document => document.title).join(' / '),
139
+ markdown,
140
+ sourceUri: target.input.knowledge.documents[0].sourceUri,
141
+ version: target.input.knowledge.version,
142
+ operationTimestamp: createdAt,
143
+ });
144
+ await engines.knowledge.backfillVectors({
145
+ source: target.input.knowledge.sourceId,
146
+ operationTimestamp: createdAt,
147
+ });
148
+ closeEngines(engines);
149
+ engines = undefined;
150
+ const preparation = await prepareEvaluationBundle({
151
+ projectId: target.input.project.projectId,
152
+ projectRoot: runtimeRoot,
153
+ outputPath: target.outputPath,
154
+ channels: {
155
+ context: {
156
+ databasePath: join(runtimeRoot, '.codegraph/codegraph.db'),
157
+ vectorDatabasePath: join(runtimeRoot, '.devflow/symbols-vec.db'),
158
+ },
159
+ memory: { databasePath: join(runtimeRoot, '.devflow/memory/memories.db') },
160
+ knowledge: {
161
+ databasePath: join(runtimeRoot, '.devflow/knowledge/knowledge.db'),
162
+ vectorPath: join(runtimeRoot, '.devflow/knowledge/assets'),
163
+ },
164
+ },
165
+ corpusPath: target.corpusPath,
166
+ });
167
+ const labelRefs = evidenceLabelRefs({
168
+ target,
169
+ runtimeRoot,
170
+ preparation,
171
+ contextNodes,
172
+ savedMemoryId: savedMemory.id,
173
+ olderMemoryId: olderMemory.id,
174
+ });
175
+ const labelPaths = writeLabelSets({
176
+ target,
177
+ preparation,
178
+ labelRefs: labelRefs.refs,
179
+ temporalRefs: labelRefs.temporalRefs,
180
+ runtimeContainer,
181
+ });
182
+ if (!contextEmbeddingProfile)
183
+ throw new Error('RELEASE_QUALITY_CONTEXT_PROFILE_MISSING');
184
+ const result = finalizeEvaluationBundle({
185
+ preparationPath: preparation.path,
186
+ labelPaths,
187
+ builderIdentity,
188
+ profiles: {
189
+ context: 'codegraph:1.1.1',
190
+ memory: 'explicit-episode:v1',
191
+ knowledge: 'compiled-hybrid:v1',
192
+ embeddingProfiles: { code_retrieval: contextEmbeddingProfile },
193
+ },
194
+ });
195
+ return { ...result, inventories: preparation.inventories, labelRefs: labelRefs.refs };
196
+ }
197
+ catch (error) {
198
+ if (engines)
199
+ closeEngines(engines);
200
+ removeReleaseQualityOutput(target.outputPath);
201
+ throw error;
202
+ }
203
+ finally {
204
+ rmSync(runtimeContainer, { recursive: true, force: true });
205
+ }
206
+ }
207
+ function initializeRuntimeDataSources(runtimeRoot, runtimeContainer) {
208
+ const sources = {
209
+ sourceRoot: runtimeRoot,
210
+ codegraphDatabasePath: join(runtimeRoot, '.codegraph/codegraph.db'),
211
+ contextVectorDatabasePath: join(runtimeRoot, '.devflow/symbols-vec.db'),
212
+ memoryDatabasePath: join(runtimeRoot, '.devflow/memory/memories.db'),
213
+ knowledgeDatabasePath: join(runtimeRoot, '.devflow/knowledge/knowledge.db'),
214
+ knowledgeVectorPath: join(runtimeRoot, '.devflow/knowledge/assets'),
215
+ operationalDatabasePath: join(runtimeContainer, 'operational/devflow.db'),
216
+ };
217
+ for (const path of [
218
+ sources.contextVectorDatabasePath,
219
+ sources.memoryDatabasePath,
220
+ sources.knowledgeDatabasePath,
221
+ ]) {
222
+ mkdirSync(dirname(path), { recursive: true });
223
+ new Database(path).close();
224
+ }
225
+ mkdirSync(sources.knowledgeVectorPath, { recursive: true });
226
+ return sources;
227
+ }
228
+ function evidenceLabelRefs(input) {
229
+ const context = input.contextNodes.map(node => evaluationContextStableRef({
230
+ projectSnapshotId: input.preparation.projectSnapshotId,
231
+ normalizedPath: node.filePath,
232
+ symbolId: node.id,
233
+ range: [node.startLine, node.endLine],
234
+ }));
235
+ const memoryDatabase = new Database(join(input.runtimeRoot, '.devflow/memory/memories.db'), {
236
+ readonly: true,
237
+ fileMustExist: true,
238
+ });
239
+ let memory;
240
+ let olderMemory;
241
+ try {
242
+ const fact = memoryDatabase.prepare('SELECT version FROM memories WHERE id = ?').get(input.savedMemoryId);
243
+ if (fact) {
244
+ memory = evaluationMemoryStableRef({
245
+ channelSnapshotHash: input.preparation.channelSnapshotHashes.memory,
246
+ kind: 'fact',
247
+ immutableId: input.savedMemoryId,
248
+ version: fact.version,
249
+ });
250
+ }
251
+ else {
252
+ const episode = memoryDatabase.prepare(`SELECT episode_hash FROM memory_episodes_v1
253
+ WHERE episode_id = ?`).get(input.savedMemoryId);
254
+ if (!episode)
255
+ throw new Error('RELEASE_QUALITY_MEMORY_EVIDENCE_MISSING');
256
+ memory = evaluationMemoryStableRef({
257
+ channelSnapshotHash: input.preparation.channelSnapshotHashes.memory,
258
+ kind: 'episode',
259
+ immutableId: input.savedMemoryId,
260
+ version: episode.episode_hash,
261
+ });
262
+ }
263
+ const olderEpisode = memoryDatabase.prepare(`SELECT episode_hash FROM memory_episodes_v1
264
+ WHERE episode_id = ?`).get(input.olderMemoryId);
265
+ if (!olderEpisode)
266
+ throw new Error('RELEASE_QUALITY_TEMPORAL_OLDER_EPISODE_MISSING');
267
+ olderMemory = evaluationMemoryStableRef({
268
+ channelSnapshotHash: input.preparation.channelSnapshotHashes.memory,
269
+ kind: 'episode', immutableId: input.olderMemoryId, version: olderEpisode.episode_hash,
270
+ });
271
+ }
272
+ finally {
273
+ memoryDatabase.close();
274
+ }
275
+ const knowledgeDatabase = new Database(join(input.runtimeRoot, '.devflow/knowledge/knowledge.db'), {
276
+ readonly: true,
277
+ fileMustExist: true,
278
+ });
279
+ let knowledge;
280
+ try {
281
+ const rows = knowledgeDatabase.prepare(`SELECT c.id, c.content_hash, d.source, d.version
282
+ FROM knowledge_chunks c JOIN knowledge_docs d ON d.id = c.doc_id
283
+ WHERE d.status = 'active' AND d.source = ? AND d.version = ? AND instr(c.content, ?) > 0
284
+ ORDER BY c.id`).all(input.target.input.knowledge.sourceId, input.target.input.knowledge.version, normalizedKnowledgeGoldText(input.target.input.knowledge.goldText));
285
+ if (rows.length === 0)
286
+ throw new Error('RELEASE_QUALITY_KNOWLEDGE_EVIDENCE_MISSING');
287
+ knowledge = rows.map(row => evaluationKnowledgeStableRef({
288
+ sourceId: row.source,
289
+ sourceVersion: row.version,
290
+ contentHash: row.content_hash,
291
+ chunkId: row.id,
292
+ }));
293
+ }
294
+ finally {
295
+ knowledgeDatabase.close();
296
+ }
297
+ const refs = { context: unique(context), memory: [memory], knowledge: unique(knowledge) };
298
+ for (const channel of ['context', 'memory', 'knowledge']) {
299
+ const inventory = new Set(input.preparation.inventories[channel]);
300
+ if (!refs[channel].every(ref => inventory.has(ref))) {
301
+ throw new Error(`RELEASE_QUALITY_LABEL_REF_MISSING:${channel}`);
302
+ }
303
+ }
304
+ if (!input.preparation.inventories.memory.includes(olderMemory)) {
305
+ throw new Error('RELEASE_QUALITY_LABEL_REF_MISSING:memory:older');
306
+ }
307
+ return { refs, temporalRefs: { current: memory, older: olderMemory } };
308
+ }
309
+ export function normalizedKnowledgeGoldText(value) {
310
+ return value.normalize('NFKC');
311
+ }
312
+ function writeLabelSets(input) {
313
+ const corpus = readJson(input.target.corpusPath);
314
+ const paths = {};
315
+ const labelledAt = new Date(MATERIALIZATION_TIME_FLOOR).toISOString();
316
+ for (const channel of ['context', 'memory', 'knowledge']) {
317
+ const labels = {
318
+ schemaVersion: 'devflow.evaluation-labels.v1',
319
+ projectSnapshotId: input.preparation.projectSnapshotId,
320
+ channel,
321
+ channelSnapshotHash: input.preparation.channelSnapshotHashes[channel],
322
+ datasetHash: input.preparation.corpusHash,
323
+ labels: corpus.cases.filter(item => item.channel === channel).map(item => ({
324
+ caseId: item.caseId,
325
+ goldSets: [input.labelRefs[channel]],
326
+ forbiddenRefs: channel === 'memory' && item.caseClass === 'lifecycle'
327
+ ? [input.temporalRefs.older] : [],
328
+ reviewer: 'devflow-release-quality-source-review',
329
+ labelledAt,
330
+ sourceEvidence: channel === 'context'
331
+ ? input.target.input.context.evidence.map(evidence => `${evidence.path}#L${evidence.startLine}:${evidence.symbol}`)
332
+ : channel === 'memory'
333
+ ? input.target.input.memory.sourceEvidence.map(evidence => evidence.path)
334
+ : input.target.input.knowledge.documents.map(document => document.sourceUri),
335
+ })),
336
+ };
337
+ paths[channel] = join(input.runtimeContainer, `${channel}-labels.json`);
338
+ writeJson(paths[channel], labels);
339
+ }
340
+ return paths;
341
+ }
342
+ function assertPinnedCheckout(target) {
343
+ if (target.input.project.sourceSnapshot) {
344
+ if (buildSourceSnapshot(target.checkoutPath).manifestSha256 !== target.input.project.sourceSnapshot.manifestSha256)
345
+ throw new Error('RELEASE_SOURCE_SNAPSHOT_MISMATCH');
346
+ }
347
+ else if (git(target.checkoutPath, ['rev-parse', 'HEAD']) !== target.input.project.commit
348
+ || git(target.checkoutPath, ['rev-parse', 'HEAD^{tree}']) !== target.input.project.tree
349
+ || git(target.checkoutPath, ['status', '--porcelain', '--untracked-files=all']) !== '') {
350
+ throw new Error('RELEASE_QUALITY_CHECKOUT_IDENTITY_MISMATCH');
351
+ }
352
+ for (const evidence of [
353
+ ...target.input.context.evidence,
354
+ ...target.input.memory.sourceEvidence,
355
+ ...target.input.knowledge.documents,
356
+ ]) {
357
+ if (sha256(join(target.checkoutPath, evidence.path)) !== evidence.sha256) {
358
+ throw new Error(`RELEASE_QUALITY_EVIDENCE_HASH_MISMATCH:${evidence.path}`);
359
+ }
360
+ }
361
+ }
362
+ function closeEngines(engines) {
363
+ engines.context.close();
364
+ engines.memory.close();
365
+ engines.knowledge.close();
366
+ engines.telemetry.close();
367
+ engines.codegraph.close();
368
+ engines.data.close?.();
369
+ }
370
+ function git(root, args) {
371
+ return execFileSync('git', ['-C', root, ...args], { encoding: 'utf8' }).trim();
372
+ }
373
+ function sha256(path) {
374
+ return createHash('sha256').update(readFileSync(path)).digest('hex');
375
+ }
376
+ function stableId(value) {
377
+ return createHash('sha256').update(value).digest('hex').slice(0, 16);
378
+ }
379
+ function unique(values) {
380
+ return [...new Set(values)].sort();
381
+ }
382
+ function relativePath(value) {
383
+ if (!value || isAbsolute(value) || value === '..' || value.startsWith('../')) {
384
+ throw new Error('RELEASE_QUALITY_PATH_INVALID');
385
+ }
386
+ return value;
387
+ }
388
+ function readJson(path) {
389
+ return JSON.parse(readFileSync(path, 'utf8'));
390
+ }
391
+ function writeJson(path, value) {
392
+ mkdirSync(dirname(path), { recursive: true });
393
+ writeFileSync(path, `${stableRuntimeJson(value)}\n`);
394
+ }
395
+ //# sourceMappingURL=release-quality-bundle-materializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-quality-bundle-materializer.js","sourceRoot":"","sources":["../src/release-quality-bundle-materializer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { EvidenceQualityMetric } from './evidence-quality-metrics.js';
2
+ import type { UnifiedChannel } from './unified-runtime-corpus.js';
3
+ export interface ReleaseQualityComparisonIdentityV1 {
4
+ schemaVersion: 'devflow.release-quality-comparison-identity.v1';
5
+ bundleId: string;
6
+ corpusHash: string;
7
+ labelHashes: Record<UnifiedChannel, string>;
8
+ channelSnapshotHashes: Record<UnifiedChannel, string>;
9
+ indexGenerationHash: string;
10
+ providerModel: {
11
+ provider: string;
12
+ model: string;
13
+ };
14
+ readerProfileHash: string;
15
+ budgetHash: string;
16
+ candidateTopK: 20;
17
+ selectedTopK: 5;
18
+ }
19
+ export type MetricComparisonStatus = 'improved' | 'regressed' | 'unchanged' | 'newly_measurable' | 'not_comparable';
20
+ export interface QualityMetricSet {
21
+ identity: ReleaseQualityComparisonIdentityV1;
22
+ metrics: Record<string, EvidenceQualityMetric>;
23
+ }
24
+ export declare function compareMetric(baseline: EvidenceQualityMetric, candidate: EvidenceQualityMetric): {
25
+ status: MetricComparisonStatus;
26
+ };
27
+ export declare function compareQualityMetrics(baseline: QualityMetricSet, candidate: QualityMetricSet): {
28
+ status: MetricComparisonStatus;
29
+ reasonCodes?: string[];
30
+ metrics?: Record<string, {
31
+ status: MetricComparisonStatus;
32
+ }>;
33
+ };
34
+ //# sourceMappingURL=release-quality-comparison.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-quality-comparison.d.ts","sourceRoot":"","sources":["../src/release-quality-comparison.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,MAAM,WAAW,kCAAkC;IACjD,aAAa,EAAE,gDAAgD,CAAC;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC5C,qBAAqB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IACtD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,EAAE,CAAC;IAClB,YAAY,EAAE,CAAC,CAAC;CACjB;AAED,MAAM,MAAM,sBAAsB,GAC9B,UAAU,GACV,WAAW,GACX,WAAW,GACX,kBAAkB,GAClB,gBAAgB,CAAC;AAErB,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,kCAAkC,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;CAChD;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,qBAAqB,EAC/B,SAAS,EAAE,qBAAqB,GAC/B;IAAE,MAAM,EAAE,sBAAsB,CAAA;CAAE,CAQpC;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,gBAAgB,GAC1B;IACD,MAAM,EAAE,sBAAsB,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,sBAAsB,CAAA;KAAE,CAAC,CAAC;CAC9D,CAmBA"}
@@ -0,0 +1,60 @@
1
+ import { stableRuntimeHash } from '@devflow-tools/sdk';
2
+ export function compareMetric(baseline, candidate) {
3
+ if (baseline.denominator === 0 && candidate.denominator === 0)
4
+ return { status: 'not_comparable' };
5
+ if (baseline.denominator === 0)
6
+ return { status: 'newly_measurable' };
7
+ if (candidate.denominator === 0)
8
+ return { status: 'regressed' };
9
+ const candidateScaled = BigInt(candidate.numerator) * BigInt(baseline.denominator);
10
+ const baselineScaled = BigInt(baseline.numerator) * BigInt(candidate.denominator);
11
+ if (candidateScaled === baselineScaled)
12
+ return { status: 'unchanged' };
13
+ return { status: candidateScaled > baselineScaled ? 'improved' : 'regressed' };
14
+ }
15
+ export function compareQualityMetrics(baseline, candidate) {
16
+ const reasonCodes = comparisonIdentityMismatches(baseline.identity, candidate.identity);
17
+ if (reasonCodes.length > 0)
18
+ return { status: 'not_comparable', reasonCodes };
19
+ const names = Object.keys(baseline.metrics).sort();
20
+ if (names.length !== Object.keys(candidate.metrics).length
21
+ || names.some(name => candidate.metrics[name] === undefined)) {
22
+ return { status: 'not_comparable', reasonCodes: ['metric_set_mismatch'] };
23
+ }
24
+ const metrics = Object.fromEntries(names.map(name => [
25
+ name,
26
+ compareMetric(baseline.metrics[name], candidate.metrics[name]),
27
+ ]));
28
+ const statuses = Object.values(metrics).map(metric => metric.status);
29
+ const status = statuses.includes('not_comparable') ? 'not_comparable'
30
+ : statuses.includes('regressed') ? 'regressed'
31
+ : statuses.includes('newly_measurable') ? 'newly_measurable'
32
+ : statuses.includes('improved') ? 'improved'
33
+ : statuses.every(item => item === 'unchanged') ? 'unchanged' : 'not_comparable';
34
+ return { status, metrics };
35
+ }
36
+ function comparisonIdentityMismatches(baseline, candidate) {
37
+ const mismatches = [];
38
+ if (baseline.schemaVersion !== candidate.schemaVersion)
39
+ mismatches.push('comparison_schema_mismatch');
40
+ if (baseline.bundleId !== candidate.bundleId)
41
+ mismatches.push('bundle_mismatch');
42
+ if (baseline.corpusHash !== candidate.corpusHash)
43
+ mismatches.push('corpus_mismatch');
44
+ if (stableRuntimeHash(baseline.labelHashes) !== stableRuntimeHash(candidate.labelHashes))
45
+ mismatches.push('label_hash_mismatch');
46
+ if (stableRuntimeHash(baseline.channelSnapshotHashes) !== stableRuntimeHash(candidate.channelSnapshotHashes))
47
+ mismatches.push('channel_snapshot_mismatch');
48
+ if (baseline.indexGenerationHash !== candidate.indexGenerationHash)
49
+ mismatches.push('index_generation_mismatch');
50
+ if (stableRuntimeHash(baseline.providerModel) !== stableRuntimeHash(candidate.providerModel))
51
+ mismatches.push('provider_model_mismatch');
52
+ if (baseline.readerProfileHash !== candidate.readerProfileHash)
53
+ mismatches.push('reader_profile_mismatch');
54
+ if (baseline.budgetHash !== candidate.budgetHash)
55
+ mismatches.push('budget_mismatch');
56
+ if (baseline.candidateTopK !== candidate.candidateTopK || baseline.selectedTopK !== candidate.selectedTopK)
57
+ mismatches.push('top_k_mismatch');
58
+ return mismatches;
59
+ }
60
+ //# sourceMappingURL=release-quality-comparison.js.map