@dsh-enhanced/assistant-verifier 0.1.48 → 0.1.53

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 (68) hide show
  1. package/README.md +92 -1
  2. package/lib/config.d.ts +8 -0
  3. package/lib/config.d.ts.map +1 -1
  4. package/lib/config.js +4 -0
  5. package/lib/config.js.map +1 -1
  6. package/lib/creation-review-native.d.ts +30 -0
  7. package/lib/creation-review-native.d.ts.map +1 -0
  8. package/lib/creation-review-native.js +130 -0
  9. package/lib/creation-review-native.js.map +1 -0
  10. package/lib/creation-review-store.d.ts +29 -0
  11. package/lib/creation-review-store.d.ts.map +1 -0
  12. package/lib/creation-review-store.js +206 -0
  13. package/lib/creation-review-store.js.map +1 -0
  14. package/lib/creation-review.d.ts +162 -0
  15. package/lib/creation-review.d.ts.map +1 -0
  16. package/lib/creation-review.js +526 -0
  17. package/lib/creation-review.js.map +1 -0
  18. package/lib/index.d.ts +11 -0
  19. package/lib/index.d.ts.map +1 -1
  20. package/lib/index.js +5 -0
  21. package/lib/index.js.map +1 -1
  22. package/lib/memory-review-native.d.ts +38 -0
  23. package/lib/memory-review-native.d.ts.map +1 -0
  24. package/lib/memory-review-native.js +149 -0
  25. package/lib/memory-review-native.js.map +1 -0
  26. package/lib/memory-review.d.ts +48 -0
  27. package/lib/memory-review.d.ts.map +1 -0
  28. package/lib/memory-review.js +260 -0
  29. package/lib/memory-review.js.map +1 -0
  30. package/lib/native-behavior-artifact.d.ts +9 -0
  31. package/lib/native-behavior-artifact.d.ts.map +1 -0
  32. package/lib/native-behavior-artifact.js +144 -0
  33. package/lib/native-behavior-artifact.js.map +1 -0
  34. package/lib/native-behavior-worker.d.ts +3 -0
  35. package/lib/native-behavior-worker.d.ts.map +1 -0
  36. package/lib/native-behavior-worker.js +110 -0
  37. package/lib/native-behavior-worker.js.map +1 -0
  38. package/lib/plugin-behavior-config.d.ts +10 -0
  39. package/lib/plugin-behavior-config.d.ts.map +1 -0
  40. package/lib/plugin-behavior-config.js +73 -0
  41. package/lib/plugin-behavior-config.js.map +1 -0
  42. package/lib/plugin-behavior-runner.d.ts +51 -0
  43. package/lib/plugin-behavior-runner.d.ts.map +1 -0
  44. package/lib/plugin-behavior-runner.js +516 -0
  45. package/lib/plugin-behavior-runner.js.map +1 -0
  46. package/lib/revision-regression-review.d.ts +38 -0
  47. package/lib/revision-regression-review.d.ts.map +1 -0
  48. package/lib/revision-regression-review.js +315 -0
  49. package/lib/revision-regression-review.js.map +1 -0
  50. package/lib/revision-review.d.ts +99 -0
  51. package/lib/revision-review.d.ts.map +1 -0
  52. package/lib/revision-review.js +275 -0
  53. package/lib/revision-review.js.map +1 -0
  54. package/lib/service.d.ts +30 -0
  55. package/lib/service.d.ts.map +1 -1
  56. package/lib/service.js +139 -1
  57. package/lib/service.js.map +1 -1
  58. package/lib/source-review-native.d.ts +9 -0
  59. package/lib/source-review-native.d.ts.map +1 -1
  60. package/lib/source-review-native.js +6 -5
  61. package/lib/source-review-native.js.map +1 -1
  62. package/lib/source-review-store.d.ts +4 -0
  63. package/lib/source-review-store.d.ts.map +1 -1
  64. package/lib/source-review-store.js +65 -12
  65. package/lib/source-review-store.js.map +1 -1
  66. package/lib/version.d.ts +1 -1
  67. package/lib/version.js +1 -1
  68. package/package.json +34 -29
@@ -0,0 +1,315 @@
1
+ import { createHash, sign } from 'node:crypto';
2
+ import { canonicalGrowthJson, growthObjectDigest, pluginRevisionRegressionSigningPayload, sourceGrowthEvidenceDigest, sourceGrowthRunDigest, validatePluginCreationVerificationCertificate, validatePluginRevisionParentBinding, validatePluginRevisionRegressionRequest, validatePluginRevisionVerificationCertificate, validateRevisionRegressionAcceptanceAuthorityRef, validateSourceGrowthRunBinding, verifyPluginRevisionRegressionCertificate } from '@dsh-enhanced/assistant-growth-contract';
3
+ import { CreationReviewStore } from './creation-review-store.js';
4
+ import { COMPARISON_RULES, SCHEMA_RULES, RULES_VERSION, compareCase, compileCreationReviewConfig, parseCases, projectCreationSchemas } from './creation-review.js';
5
+ const PURPOSE = 'assistant-growth/revision-regression-review/v1';
6
+ const RULES = 'retained-creation-cases-v1:private-certificate-and-case-proof;fresh-parent-and-candidate-isolated-observations;both-compare-expected;exact-sanitized-schema-and-environment;no-model';
7
+ const SHA = /^[a-f0-9]{64}$/u;
8
+ function legacyConfig(input) {
9
+ if (!input || typeof input !== 'object' || Array.isArray(input)
10
+ || Object.getPrototypeOf(input) !== Object.prototype
11
+ || Reflect.ownKeys(input).some(key => typeof key !== 'string')
12
+ || Object.keys(input).sort().join(',') !== ['authorityId', 'owner', 'namePrefix', 'keyId', 'keyPath',
13
+ 'expiresAt', 'maxVerifications', 'runner', 'maxDurationMs', 'maxCases', 'receiptTtlMs'].sort().join(',')
14
+ || Object.values(Object.getOwnPropertyDescriptors(input)).some(field => !field.enumerable || !('value' in field))) {
15
+ throw new Error('revision regression review invalid config');
16
+ }
17
+ return { ...input, policy: RULES, maxInputBytes: 4096, maxOutputTokens: 2 };
18
+ }
19
+ export function validateRevisionRegressionReviewConfig(input) {
20
+ const checked = compileCreationReviewConfig(legacyConfig(input)).config;
21
+ if (checked.runner.maxRuns < checked.maxVerifications * (2 + 2 * checked.maxCases)) {
22
+ throw new Error('revision regression runner cannot cover paired observations');
23
+ }
24
+ const { policy: _policy, maxInputBytes: _maxInputBytes, maxOutputTokens: _maxOutputTokens, ...config } = checked;
25
+ return config;
26
+ }
27
+ export function compileRevisionRegressionReviewConfig(input) {
28
+ const config = validateRevisionRegressionReviewConfig(input);
29
+ const checked = compileCreationReviewConfig(legacyConfig(config));
30
+ const authority = {
31
+ protocol: 'assistant-growth/revision-regression-acceptance-authority/v1', authorityId: config.authorityId,
32
+ keyId: config.keyId, namePrefix: config.namePrefix, expiresAt: config.expiresAt,
33
+ authorityDigest: growthObjectDigest({ purpose: PURPOSE, rules: RULES, baseRules: RULES_VERSION,
34
+ comparisonRules: COMPARISON_RULES, schemaRules: SCHEMA_RULES,
35
+ configurationDigest: checked.authority.authorityDigest }),
36
+ };
37
+ validateRevisionRegressionAcceptanceAuthorityRef(authority);
38
+ return { config, authority: Object.freeze(authority), publicKey: checked.publicKey, privateKey: checked.privateKey };
39
+ }
40
+ function retainedCases(value, parent, maxCases) {
41
+ if (!value || canonicalGrowthJson(value.certificate) !== canonicalGrowthJson(parent))
42
+ throw new Error('retained parent cases unavailable');
43
+ const contract = value.contract;
44
+ const discovery = value.discovery;
45
+ if (!contract || typeof contract !== 'object' || Array.isArray(contract)
46
+ || Object.keys(contract).sort().join(',') !== 'cases,outputDigest,sessionId'
47
+ || contract.sessionId !== parent.sessions.contract || typeof contract.outputDigest !== 'string' || !SHA.test(contract.outputDigest)
48
+ || !discovery || typeof discovery !== 'object' || Array.isArray(discovery)
49
+ || Object.keys(discovery).sort().join(',') !== 'environment,jobId,schemaDigest,schemas'
50
+ || discovery.schemaDigest !== parent.schemaDigest
51
+ || canonicalGrowthJson(discovery.environment) !== canonicalGrowthJson(parent.environment)
52
+ || typeof discovery.jobId !== 'string' || !Array.isArray(discovery.schemas))
53
+ throw new Error('retained parent contract changed');
54
+ const schemas = projectCreationSchemas(discovery.schemas);
55
+ const parsed = parseCases({ status: 'cases', cases: contract.cases }, maxCases, schemas);
56
+ if (parsed.status !== 'cases' || growthObjectDigest(parsed.cases) !== parent.contractDigest
57
+ || Object.keys(value.cases).length !== parsed.cases.length || parsed.cases.length !== parent.observations.length) {
58
+ throw new Error('retained parent contract digest changed');
59
+ }
60
+ for (const item of parsed.cases) {
61
+ const old = parent.observations.find(entry => entry.caseId === item.id);
62
+ const saved = value.cases[item.id];
63
+ const operation = { kind: 'invoke', schemaDigest: parent.schemaDigest,
64
+ calls: [{ id: item.id, toolName: item.toolName, arguments: item.arguments }] };
65
+ if (!old || !saved || canonicalGrowthJson(saved) !== canonicalGrowthJson(old)
66
+ || old.operationDigest !== growthObjectDigest(operation))
67
+ throw new Error('retained parent observation changed');
68
+ }
69
+ return { cases: parsed.cases, schemas };
70
+ }
71
+ /** Independent paired Docker regression; this runtime has no LLM service and cannot switch a tool. */
72
+ export class RevisionRegressionReviewRuntime {
73
+ ctx;
74
+ readParentCases;
75
+ #compiled;
76
+ #store;
77
+ #runner;
78
+ #runnerLoading;
79
+ #abort = new AbortController();
80
+ #flights = new Map();
81
+ #closing;
82
+ constructor(ctx, input, databasePath, readParentCases) {
83
+ this.ctx = ctx;
84
+ this.readParentCases = readParentCases;
85
+ this.#compiled = compileRevisionRegressionReviewConfig(input);
86
+ this.#store = new CreationReviewStore(databasePath + '.revision-regressions');
87
+ }
88
+ #loadRunner() {
89
+ if (this.#runner)
90
+ return Promise.resolve(this.#runner);
91
+ return this.#runnerLoading ??= import('./plugin-behavior-runner.js').then(({ PluginBehaviorRunner }) => {
92
+ this.#abort.signal.throwIfAborted();
93
+ const { config, authority } = this.#compiled;
94
+ if (Date.now() >= Math.min(config.expiresAt, config.runner.expiresAt))
95
+ throw new Error('regression runner authority expired');
96
+ return this.#runner = new PluginBehaviorRunner({ ...config.runner, authorityDigest: authority.authorityDigest });
97
+ });
98
+ }
99
+ inspect(input) {
100
+ const { config, authority, publicKey } = this.#compiled;
101
+ if (this.#abort.signal.aborted || Date.now() >= config.expiresAt
102
+ || canonicalGrowthJson(input.owner) !== canonicalGrowthJson(config.owner))
103
+ return undefined;
104
+ const remainingVerifications = this.#store.remaining(config.authorityId, authority.authorityDigest, config.maxVerifications);
105
+ return Object.freeze({ authority, publicKey, remainingVerifications, available: remainingVerifications > 0 });
106
+ }
107
+ run(request, external) {
108
+ try {
109
+ validatePluginRevisionRegressionRequest(request);
110
+ }
111
+ catch {
112
+ return Promise.resolve({ status: 'rejected', reason: 'request-invalid' });
113
+ }
114
+ if (this.#abort.signal.aborted)
115
+ return Promise.resolve({ status: 'unknown', reason: 'interrupted' });
116
+ const existing = this.#flights.get(request.planId);
117
+ if (existing)
118
+ return existing;
119
+ const flight = this.#run(request, external);
120
+ this.#flights.set(request.planId, flight);
121
+ void flight.finally(() => this.#flights.delete(request.planId)).catch(() => { });
122
+ return flight;
123
+ }
124
+ async #run(request, external) {
125
+ const { config, authority, privateKey, publicKey } = this.#compiled;
126
+ const signal = AbortSignal.any([this.#abort.signal, AbortSignal.timeout(config.maxDurationMs), ...(external ? [external] : [])]);
127
+ let admitted;
128
+ try {
129
+ signal.throwIfAborted();
130
+ const port = this.ctx.get('pluginControlPlane');
131
+ if (!port || typeof port.inspectPreparedRevisionRegression !== 'function'
132
+ || typeof port.withPreparedRevisionRegressionFence !== 'function'
133
+ || typeof port.inspectPreparedRevisionReviewContext !== 'function')
134
+ throw new Error('regression Host port unavailable');
135
+ const snapshot = port.inspectPreparedRevisionRegression(request.planId);
136
+ if (snapshot.protocol !== 'dsh-prepared-revision-regression/v1')
137
+ throw new Error('regression Host protocol changed');
138
+ const { plan, job, reference, candidate, parent } = snapshot;
139
+ validateSourceGrowthRunBinding(plan.sourceRevision?.growthRun);
140
+ const frozen = plan.sourceRevision.growthRun;
141
+ validateRevisionRegressionAcceptanceAuthorityRef(frozen.revisionRegressionAcceptance);
142
+ validatePluginRevisionVerificationCertificate(candidate.certificate);
143
+ validatePluginCreationVerificationCertificate(parent.certificate);
144
+ validatePluginRevisionParentBinding(parent.binding);
145
+ const now = Date.now();
146
+ const sourceBinding = { referenceDigest: sourceGrowthEvidenceDigest(reference),
147
+ ownerDigest: sourceGrowthEvidenceDigest(reference.owner), growthRunDigest: sourceGrowthRunDigest(frozen) };
148
+ const parentDigest = sourceGrowthEvidenceDigest(parent.binding);
149
+ const candidateVerificationDigest = sourceGrowthEvidenceDigest(candidate.certificate);
150
+ const authorityDigest = sourceGrowthEvidenceDigest(authority);
151
+ if (plan.mode !== 'prepared-revise' || plan.status !== 'pending-approval' || plan.id !== request.planId
152
+ || canonicalGrowthJson(frozen.revisionRegressionAcceptance) !== canonicalGrowthJson(authority)
153
+ || canonicalGrowthJson(frozen) !== canonicalGrowthJson(job.intent.revision?.growthRun)
154
+ || canonicalGrowthJson(parent.binding) !== canonicalGrowthJson(job.intent.revision?.parent)
155
+ || canonicalGrowthJson(parent.binding) !== canonicalGrowthJson(plan.sourceRevision.parent)
156
+ || canonicalGrowthJson(parent.binding) !== canonicalGrowthJson(candidate.certificate.parent)
157
+ || parent.binding.planId !== parent.certificate.plan.id
158
+ || parent.binding.certificateDigest !== sourceGrowthEvidenceDigest(parent.certificate)
159
+ || parent.binding.artifactSha256 !== parent.certificate.plan.artifactSha256
160
+ || candidate.certificate.plan.id !== plan.id || candidate.certificate.plan.digest !== plan.digest
161
+ || candidate.certificate.plan.name !== plan.name || candidate.certificate.source.referenceDigest !== sourceBinding.referenceDigest
162
+ || candidate.certificate.source.ownerDigest !== sourceBinding.ownerDigest
163
+ || candidate.certificate.source.growthRunDigest !== sourceBinding.growthRunDigest
164
+ || canonicalGrowthJson(candidate.certificate.model) !== canonicalGrowthJson(frozen.model)
165
+ || candidate.certificate.plan.artifactSha256 !== createHash('sha256').update(candidate.artifact).digest('hex')
166
+ || candidate.certificate.plan.artifactBytes !== candidate.artifact.length
167
+ || parent.certificate.plan.artifactSha256 !== createHash('sha256').update(parent.artifact).digest('hex')
168
+ || parent.certificate.plan.artifactBytes !== parent.artifact.length
169
+ || typeof candidate.sourceDigest !== 'string' || !SHA.test(candidate.sourceDigest)
170
+ || now >= Math.min(config.expiresAt, config.runner.expiresAt, plan.expiresAt, plan.sourceRevision.grant.expiresAt, frozen.expiresAt, authority.expiresAt, candidate.certificate.expiresAt)) {
171
+ throw new Error('regression source or authority changed');
172
+ }
173
+ for (const key of ['authorityId', 'authorityHash', 'principalId', 'principalRecordId', 'principalVersion', 'workspace', 'agentPreset']) {
174
+ if (reference.owner[key] !== config.owner[key])
175
+ throw new Error('regression owner changed');
176
+ }
177
+ const fenceInput = { planId: plan.id, planDigest: plan.digest, artifactSha256: candidate.certificate.plan.artifactSha256,
178
+ growthRunDigest: sourceBinding.growthRunDigest, referenceDigest: sourceBinding.referenceDigest,
179
+ parentDigest, candidateVerificationDigest, sourceDigest: candidate.sourceDigest,
180
+ regressionAuthorityDigest: authorityDigest };
181
+ const fence = (callback) => port.withPreparedRevisionRegressionFence(fenceInput, callback);
182
+ fence(() => { });
183
+ const binding = growthObjectDigest({ purpose: PURPOSE, request, authority, fenceInput,
184
+ parentCertificateDigest: parent.binding.certificateDigest, candidateVerificationDigest,
185
+ budget: { maxCases: config.maxCases, maxDurationMs: config.maxDurationMs, maxRuns: 2 + 2 * config.maxCases } });
186
+ const claim = fence(() => this.#store.claim(plan.id, binding, config.authorityId, authority.authorityDigest, config.maxVerifications));
187
+ if (claim.state === 'certificate')
188
+ return claim.certificate
189
+ && verifyPluginRevisionRegressionCertificate(claim.certificate, authority, publicKey)
190
+ ? { status: 'verified', certificate: claim.certificate } : { status: 'unknown', reason: 'stale-source' };
191
+ if (claim.state === 'rejected')
192
+ return { status: 'rejected', reason: claim.reason };
193
+ if (claim.state !== 'new')
194
+ return { status: 'unknown', reason: claim.reason ?? 'previous-unknown' };
195
+ admitted = { planId: plan.id, binding };
196
+ const retained = retainedCases(this.readParentCases(parent.certificate), parent.certificate, config.maxCases);
197
+ fence(() => { });
198
+ const observer = await this.#loadRunner();
199
+ const jobs = new Set();
200
+ const discover = async (side, artifact, expectedSha) => {
201
+ signal.throwIfAborted();
202
+ fence(() => { });
203
+ const result = await observer.run({ key: growthObjectDigest([binding, side, 'discover']),
204
+ artifact, operation: { kind: 'discover' }, signal });
205
+ if (result.status !== 'observed' || !result.quiescent || !result.jobId || jobs.has(result.jobId)
206
+ || result.artifactSha256 !== expectedSha || !result.schemaDigest || !result.schemas || !result.environment) {
207
+ throw new Error(`${side} schema observation unknown`);
208
+ }
209
+ jobs.add(result.jobId);
210
+ fence(() => { });
211
+ return result;
212
+ };
213
+ const parentDiscovery = await discover('parent', parent.artifact, parent.binding.artifactSha256);
214
+ const candidateDiscovery = await discover('candidate', candidate.artifact, candidate.certificate.plan.artifactSha256);
215
+ const parentSchemas = projectCreationSchemas(parentDiscovery.schemas);
216
+ const candidateSchemas = projectCreationSchemas(candidateDiscovery.schemas);
217
+ if (parentDiscovery.schemaDigest !== parent.certificate.schemaDigest
218
+ || candidateDiscovery.schemaDigest !== candidate.certificate.schemaDigest
219
+ || canonicalGrowthJson(parentSchemas) !== canonicalGrowthJson(retained.schemas)
220
+ || canonicalGrowthJson(parentSchemas) !== canonicalGrowthJson(candidateSchemas)
221
+ || canonicalGrowthJson(parentDiscovery.environment) !== canonicalGrowthJson(parent.certificate.environment)
222
+ || canonicalGrowthJson(candidateDiscovery.environment) !== canonicalGrowthJson(candidate.certificate.environment)
223
+ || canonicalGrowthJson(parentDiscovery.environment) !== canonicalGrowthJson(candidateDiscovery.environment)) {
224
+ fence(() => this.#store.reject(plan.id, binding, 'schema-or-environment-mismatch'));
225
+ admitted = undefined;
226
+ return { status: 'rejected', reason: 'schema-or-environment-mismatch' };
227
+ }
228
+ fence(() => this.#store.discovered(plan.id, binding, { parent: parentDiscovery.jobId, candidate: candidateDiscovery.jobId }));
229
+ fence(() => this.#store.contract(plan.id, binding, { cases: retained.cases }));
230
+ const observations = [];
231
+ for (const item of retained.cases) {
232
+ signal.throwIfAborted();
233
+ fence(() => { });
234
+ const operations = {
235
+ parent: { kind: 'invoke', schemaDigest: parentDiscovery.schemaDigest,
236
+ calls: [{ id: item.id, toolName: item.toolName, arguments: item.arguments }] },
237
+ candidate: { kind: 'invoke', schemaDigest: candidateDiscovery.schemaDigest,
238
+ calls: [{ id: item.id, toolName: item.toolName, arguments: item.arguments }] },
239
+ };
240
+ fence(() => this.#store.claimCase(plan.id, binding, item.id, growthObjectDigest(operations)));
241
+ const pair = {};
242
+ for (const side of ['parent', 'candidate']) {
243
+ const operation = operations[side];
244
+ const observed = await observer.run({ key: growthObjectDigest([binding, side, item.id, growthObjectDigest(operation)]),
245
+ artifact: side === 'parent' ? parent.artifact : candidate.artifact, operation, signal });
246
+ if (observed.status !== 'observed' || !observed.quiescent || !observed.jobId || jobs.has(observed.jobId)
247
+ || observed.artifactSha256 !== (side === 'parent' ? parent.binding.artifactSha256 : candidate.certificate.plan.artifactSha256)
248
+ || observed.schemaDigest !== operation.schemaDigest
249
+ || canonicalGrowthJson(observed.environment) !== canonicalGrowthJson(parentDiscovery.environment)
250
+ || observed.calls?.length !== 1 || observed.calls[0]?.id !== item.id
251
+ || observed.calls[0]?.toolName !== item.toolName)
252
+ throw new Error(`${side} case observation unknown`);
253
+ jobs.add(observed.jobId);
254
+ const raw = observed.calls[0].result;
255
+ if (!compareCase(item.expected, raw)) {
256
+ const reason = side === 'parent' ? 'parent-baseline-mismatch' : 'candidate-regression';
257
+ fence(() => this.#store.reject(plan.id, binding, reason));
258
+ admitted = undefined;
259
+ return { status: 'rejected', reason };
260
+ }
261
+ pair[side] = { jobId: observed.jobId, operationDigest: growthObjectDigest(operation),
262
+ observationDigest: growthObjectDigest(raw) };
263
+ fence(() => { });
264
+ }
265
+ const complete = { caseId: item.id, parent: pair.parent, candidate: pair.candidate };
266
+ fence(() => this.#store.observation(plan.id, binding, item.id, complete));
267
+ observations.push(complete);
268
+ }
269
+ await port.inspectPreparedRevisionReviewContext(plan.id, signal);
270
+ fence(() => this.#store.claimReview(plan.id, binding));
271
+ const verifiedAt = Date.now();
272
+ const expiresAt = Math.min(verifiedAt + config.receiptTtlMs, config.expiresAt, config.runner.expiresAt, plan.expiresAt, plan.sourceRevision.grant.expiresAt, frozen.expiresAt, candidate.certificate.expiresAt);
273
+ if (expiresAt <= verifiedAt)
274
+ throw new Error('regression verification windows closed');
275
+ const body = {
276
+ protocol: 'assistant-growth/revision-regression/v1', verificationId: `regression-${binding.slice(0, 40)}`,
277
+ authority, plan: candidate.certificate.plan, parent: parent.binding, source: sourceBinding,
278
+ contractDigest: parent.certificate.contractDigest, schemaDigest: candidateDiscovery.schemaDigest,
279
+ environment: candidateDiscovery.environment, model: frozen.model,
280
+ candidateVerificationDigest, sourceDigest: candidate.sourceDigest,
281
+ schemaCompatibilityDigest: growthObjectDigest(parentSchemas),
282
+ budget: { maxCases: config.maxCases, maxDurationMs: config.maxDurationMs, maxRuns: 2 + 2 * config.maxCases },
283
+ observations, verifiedAt, expiresAt,
284
+ };
285
+ const certificate = { ...body, signature: sign(null, Buffer.from(pluginRevisionRegressionSigningPayload(body)), privateKey).toString('base64url') };
286
+ fence(() => this.#store.certificate(plan.id, binding, certificate));
287
+ admitted = undefined;
288
+ return { status: 'verified', certificate };
289
+ }
290
+ catch {
291
+ const reason = signal.aborted ? 'interrupted' : admitted ? 'regression-unknown' : 'stale-source';
292
+ if (admitted) {
293
+ try {
294
+ this.#store.unknown(admitted.planId, admitted.binding, reason);
295
+ }
296
+ catch { /* retained claim remains no-replay */ }
297
+ }
298
+ return { status: 'unknown', reason };
299
+ }
300
+ }
301
+ close() {
302
+ return this.#closing ??= (async () => {
303
+ this.#abort.abort(new Error('regression review disposed'));
304
+ try {
305
+ await Promise.allSettled(this.#flights.values());
306
+ await this.#runnerLoading?.catch(() => undefined);
307
+ await this.#runner?.close();
308
+ }
309
+ finally {
310
+ this.#store.close();
311
+ }
312
+ })();
313
+ }
314
+ }
315
+ //# sourceMappingURL=revision-regression-review.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revision-regression-review.js","sourceRoot":"","sources":["../src/revision-regression-review.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ import { type KeyObject } from 'node:crypto';
2
+ import type { Context } from '@deepseek-ai/cordis';
3
+ import { type PluginRevisionParentBinding, type PluginRevisionVerificationRequest, type PluginRevisionVerificationResult, type RevisionAcceptanceAuthorityRef } from '@dsh-enhanced/assistant-growth-contract';
4
+ import { type CreationReviewConfig } from './creation-review.js';
5
+ /** Same bounded configuration shape as creation, with a separate policy digest and ledger. */
6
+ export type RevisionReviewConfig = CreationReviewConfig;
7
+ export interface RevisionReviewAuthorityInspection {
8
+ authority: RevisionAcceptanceAuthorityRef;
9
+ publicKey: string;
10
+ remainingVerifications: number;
11
+ available: boolean;
12
+ }
13
+ export declare function validateRevisionReviewConfig(input: RevisionReviewConfig): RevisionReviewConfig;
14
+ export declare function compileRevisionReviewConfig(input: RevisionReviewConfig): {
15
+ config: RevisionReviewConfig;
16
+ authority: RevisionAcceptanceAuthorityRef;
17
+ publicKey: string;
18
+ privateKey: KeyObject;
19
+ };
20
+ export interface PreparedRevisionPort {
21
+ inspectPreparedRevision(planId: string): {
22
+ protocol: 'dsh-prepared-revision/v1';
23
+ plan: {
24
+ id: string;
25
+ digest: string;
26
+ name: string;
27
+ mode: string;
28
+ status: string;
29
+ expiresAt: number;
30
+ generatorDigest: string;
31
+ sourceCheck?: {
32
+ treeDigest: string;
33
+ patchDigest: string;
34
+ };
35
+ preparedEvidence?: {
36
+ pack: {
37
+ sha256: string;
38
+ sizeBytes: number;
39
+ };
40
+ };
41
+ sourceRevision?: {
42
+ grant: {
43
+ namePrefix: string;
44
+ expiresAt: number;
45
+ };
46
+ growthRun: unknown;
47
+ parent: PluginRevisionParentBinding;
48
+ };
49
+ };
50
+ job: {
51
+ intent: {
52
+ revision?: unknown;
53
+ };
54
+ };
55
+ reference: {
56
+ owner: Record<string, unknown>;
57
+ sourceDigest: string;
58
+ outcomeId: string;
59
+ };
60
+ source: {
61
+ owner: Record<string, unknown>;
62
+ judgement: string;
63
+ source: {
64
+ objective: string;
65
+ truncated: boolean;
66
+ quiescent: boolean;
67
+ };
68
+ feedback?: {
69
+ text: string;
70
+ truncated: boolean;
71
+ };
72
+ };
73
+ artifact: Buffer;
74
+ };
75
+ withPreparedRevisionFence<T>(input: {
76
+ planId: string;
77
+ planDigest: string;
78
+ artifactSha256: string;
79
+ growthRunDigest: string;
80
+ referenceDigest: string;
81
+ parentDigest: string;
82
+ }, callback: () => T): T;
83
+ inspectPreparedRevisionReviewContext(planId: string, signal: AbortSignal): Promise<{
84
+ patch: string;
85
+ changedPaths: string[];
86
+ }>;
87
+ }
88
+ /** Independent Host review of a new task's candidate revision. It does not grant execution or replacement. */
89
+ export declare class RevisionReviewRuntime {
90
+ #private;
91
+ private readonly ctx;
92
+ constructor(ctx: Context, input: RevisionReviewConfig, databasePath: string);
93
+ inspect(input: {
94
+ owner: RevisionReviewConfig['owner'];
95
+ }): RevisionReviewAuthorityInspection | undefined;
96
+ run(request: PluginRevisionVerificationRequest, external?: AbortSignal): Promise<PluginRevisionVerificationResult>;
97
+ close(): Promise<void>;
98
+ }
99
+ //# sourceMappingURL=revision-review.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revision-review.d.ts","sourceRoot":"","sources":["../src/revision-review.ts"],"names":[],"mappings":"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"}