@dsh-enhanced/task-acceptance-contract 0.1.30

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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 dsh-enhanced contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,49 @@
1
+ # @dsh-enhanced/task-acceptance-contract
2
+
3
+ An inert shared wire library for immutable task acceptance contracts and
4
+ independently produced verification receipts. It declares no DSH bundle and
5
+ does not activate services, tools, jobs, network access, filesystem access, or
6
+ subprocesses. It only validates plain JSON-compatible values, normalizes scope
7
+ paths with Node `path`, and calculates canonical SHA-256 digests with Node
8
+ `crypto`.
9
+
10
+ The exported canonical JSON helper has a finite 1MiB serialization budget.
11
+ Contract canonical payloads are separately capped at 256KiB. Target-readback
12
+ JSON values collectively consume at most 64KiB, and receipt evidence must fit
13
+ the accepted contract's `maxEvidenceBytes` as well as a 1MiB receipt payload
14
+ cap.
15
+
16
+ The package does not make a receipt trusted. A Host-owned producer must bind an
17
+ accepted contract to its durable authority and independently obtain evidence.
18
+
19
+ `task-acceptance/v1` and `task-verification/v1` retain their original task
20
+ identity (`automation-run` or `foreground-turn`) and canonical digest form.
21
+ `v2` is reserved for durable native-goal execution: it only accepts a
22
+ `goal-step` task with its immutable goal definition digest and version, step,
23
+ run, session, native goal ID, and native revision. A verification receipt must
24
+ use the matching protocol version and reproduce the complete task identity.
25
+ `v3` is reserved for whole-goal assessment: it only accepts a `goal-outcome`
26
+ task whose `ref` is its assessment ID and whose binding contains the immutable
27
+ goal definition ID, version and digest, assessment ID, session ID, and native
28
+ goal ID. It deliberately has no step, run, or native revision fields. The
29
+ immutable contract itself freezes the acceptance criteria, profile, and bounds;
30
+ an assessment must not substitute a separate criteria digest. A v3 receipt
31
+ must use `task-verification/v3` and reproduce that complete binding. Existing
32
+ v1 and v2 canonical payloads and digests remain unchanged.
33
+ The wire library validates and binds these values; a Host producer remains
34
+ responsible for obtaining them from an authoritative goal lifecycle.
35
+
36
+ `task-acceptance/v4` and `task-verification/v4` are reserved for isolated
37
+ process behavior assessment of a `goal-step` or `goal-outcome`. Every v4
38
+ criterion must be `isolated-process-behavior`, which binds only a sealed
39
+ authority reference, a normalized relative artifact path, and a test-set ID.
40
+ It cannot carry stdin, expected output, expected values, or test vectors. v1,
41
+ v2, and v3 reject that criterion kind and retain their canonical payloads and
42
+ digests. `acceptanceProtocolForTask(task, criteria)` selects the matching
43
+ protocol from a complete task identity and criterion set.
44
+
45
+ `validateGoalArtifactAdmission` accepts and deeply freezes the narrow
46
+ `goal-artifact-admission/v1` linkage `{ contractId, contractDigest, runId,
47
+ turn }`. It validates the exact shape and requires a positive turn. The
48
+ linkage is data binding for durable goal and isolation records; it is not an
49
+ authority grant or a substitute for independent verification.
package/lib/index.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export * from './types.js';
2
+ export * from './wire.js';
3
+ export { version } from './version.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA"}
package/lib/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export * from './types.js';
2
+ export * from './wire.js';
3
+ export { version } from './version.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA"}
package/lib/types.d.ts ADDED
@@ -0,0 +1,223 @@
1
+ export interface AcceptanceJsonObject {
2
+ readonly [key: string]: AcceptanceJsonValue;
3
+ }
4
+ export type AcceptanceJsonValue = null | boolean | number | string | readonly AcceptanceJsonValue[] | AcceptanceJsonObject;
5
+ export interface AuthorityRef {
6
+ readonly id: string;
7
+ readonly digest: string;
8
+ }
9
+ export interface ProcessBehaviorCriterion {
10
+ readonly id: string;
11
+ readonly kind: 'process-behavior';
12
+ readonly authority: AuthorityRef;
13
+ readonly artifactPath: string;
14
+ readonly stdin: string;
15
+ readonly expectedStdout: string;
16
+ readonly expectedExitCode: number;
17
+ }
18
+ export interface IsolatedProcessBehaviorCriterion {
19
+ readonly id: string;
20
+ readonly kind: 'isolated-process-behavior';
21
+ readonly authority: AuthorityRef;
22
+ readonly artifactPath: string;
23
+ readonly testSetId: string;
24
+ }
25
+ export interface DocumentCitationsCriterion {
26
+ readonly id: string;
27
+ readonly kind: 'document-citations';
28
+ readonly authority: AuthorityRef;
29
+ readonly artifactPath: string;
30
+ readonly requiredText: readonly string[];
31
+ readonly quotes: readonly Readonly<{
32
+ quote: string;
33
+ sourceId: string;
34
+ sourceSha256: string;
35
+ }>[];
36
+ }
37
+ export interface TargetReadbackCriterion {
38
+ readonly id: string;
39
+ readonly kind: 'target-readback';
40
+ readonly authority: AuthorityRef;
41
+ readonly objectId: string;
42
+ readonly expected: readonly Readonly<{
43
+ pointer: string;
44
+ value: AcceptanceJsonValue;
45
+ }>[];
46
+ readonly expectedRevision?: string;
47
+ }
48
+ export type AcceptanceCriterion = ProcessBehaviorCriterion | IsolatedProcessBehaviorCriterion | DocumentCitationsCriterion | TargetReadbackCriterion;
49
+ export interface GoalStepBinding {
50
+ readonly id: string;
51
+ readonly definitionVersion: number;
52
+ readonly definitionDigest: string;
53
+ readonly stepId: string;
54
+ readonly runId: string;
55
+ readonly sessionId: string;
56
+ readonly nativeGoalId: string;
57
+ readonly nativeRevision: number;
58
+ }
59
+ export interface GoalOutcomeBinding {
60
+ readonly id: string;
61
+ readonly definitionVersion: number;
62
+ readonly definitionDigest: string;
63
+ readonly assessmentId: string;
64
+ readonly sessionId: string;
65
+ readonly nativeGoalId: string;
66
+ }
67
+ export type AcceptanceTaskIdentity = Readonly<{
68
+ kind: 'automation-run' | 'foreground-turn';
69
+ ref: string;
70
+ }> | Readonly<{
71
+ kind: 'goal-step';
72
+ ref: string;
73
+ goal: GoalStepBinding;
74
+ }> | Readonly<{
75
+ kind: 'goal-outcome';
76
+ ref: string;
77
+ goal: GoalOutcomeBinding;
78
+ }>;
79
+ interface TaskAcceptanceContractBase {
80
+ readonly id: string;
81
+ readonly scope: Readonly<{
82
+ workspace: string;
83
+ preset: string;
84
+ }>;
85
+ readonly owner: Readonly<{
86
+ principalRecordId: string;
87
+ principalVersion: number;
88
+ }>;
89
+ readonly objective: string;
90
+ readonly profile: Readonly<{
91
+ id: string;
92
+ version: number;
93
+ digest: string;
94
+ }>;
95
+ readonly issuedAt: number;
96
+ readonly expiresAt: number;
97
+ readonly criteria: readonly AcceptanceCriterion[];
98
+ readonly bounds: Readonly<{
99
+ maxDurationMs: number;
100
+ maxEvidenceBytes: number;
101
+ }>;
102
+ }
103
+ export interface TaskAcceptanceContractV1Input extends TaskAcceptanceContractBase {
104
+ readonly protocol: 'task-acceptance/v1';
105
+ readonly id: string;
106
+ readonly task: Readonly<{
107
+ kind: 'automation-run' | 'foreground-turn';
108
+ ref: string;
109
+ }>;
110
+ }
111
+ export interface TaskAcceptanceContractV2Input extends TaskAcceptanceContractBase {
112
+ readonly protocol: 'task-acceptance/v2';
113
+ readonly task: Readonly<{
114
+ kind: 'goal-step';
115
+ ref: string;
116
+ goal: GoalStepBinding;
117
+ }>;
118
+ }
119
+ export interface TaskAcceptanceContractV3Input extends TaskAcceptanceContractBase {
120
+ readonly protocol: 'task-acceptance/v3';
121
+ readonly task: Readonly<{
122
+ kind: 'goal-outcome';
123
+ ref: string;
124
+ goal: GoalOutcomeBinding;
125
+ }>;
126
+ }
127
+ export interface TaskAcceptanceContractV4Input extends TaskAcceptanceContractBase {
128
+ readonly protocol: 'task-acceptance/v4';
129
+ readonly task: Readonly<{
130
+ kind: 'goal-step';
131
+ ref: string;
132
+ goal: GoalStepBinding;
133
+ }> | Readonly<{
134
+ kind: 'goal-outcome';
135
+ ref: string;
136
+ goal: GoalOutcomeBinding;
137
+ }>;
138
+ readonly criteria: readonly IsolatedProcessBehaviorCriterion[];
139
+ }
140
+ export type TaskAcceptanceContractInput = TaskAcceptanceContractV1Input | TaskAcceptanceContractV2Input | TaskAcceptanceContractV3Input | TaskAcceptanceContractV4Input;
141
+ export type TaskAcceptanceContract = TaskAcceptanceContractInput & Readonly<{
142
+ digest: string;
143
+ }>;
144
+ export interface CriterionResult {
145
+ readonly criterionId: string;
146
+ readonly status: 'passed' | 'failed' | 'unknown';
147
+ readonly reason: string;
148
+ readonly evidence: readonly Readonly<{
149
+ kind: string;
150
+ ref: string;
151
+ digest: string;
152
+ }>[];
153
+ readonly artifactDigest?: string;
154
+ }
155
+ interface TaskVerificationReceiptBase {
156
+ readonly id: string;
157
+ readonly contractId: string;
158
+ readonly contractDigest: string;
159
+ readonly scope: Readonly<{
160
+ workspace: string;
161
+ preset: string;
162
+ }>;
163
+ readonly owner: Readonly<{
164
+ principalRecordId: string;
165
+ principalVersion: number;
166
+ }>;
167
+ readonly results: readonly CriterionResult[];
168
+ readonly startedAt: number;
169
+ readonly completedAt: number;
170
+ readonly validUntil: number;
171
+ }
172
+ export interface TaskVerificationReceiptV1Input extends TaskVerificationReceiptBase {
173
+ readonly protocol: 'task-verification/v1';
174
+ readonly id: string;
175
+ readonly contractId: string;
176
+ readonly contractDigest: string;
177
+ readonly task: Readonly<{
178
+ kind: 'automation-run' | 'foreground-turn';
179
+ ref: string;
180
+ }>;
181
+ }
182
+ export interface TaskVerificationReceiptV2Input extends TaskVerificationReceiptBase {
183
+ readonly protocol: 'task-verification/v2';
184
+ readonly task: Readonly<{
185
+ kind: 'goal-step';
186
+ ref: string;
187
+ goal: GoalStepBinding;
188
+ }>;
189
+ }
190
+ export interface TaskVerificationReceiptV3Input extends TaskVerificationReceiptBase {
191
+ readonly protocol: 'task-verification/v3';
192
+ readonly task: Readonly<{
193
+ kind: 'goal-outcome';
194
+ ref: string;
195
+ goal: GoalOutcomeBinding;
196
+ }>;
197
+ }
198
+ export interface TaskVerificationReceiptV4Input extends TaskVerificationReceiptBase {
199
+ readonly protocol: 'task-verification/v4';
200
+ readonly task: Readonly<{
201
+ kind: 'goal-step';
202
+ ref: string;
203
+ goal: GoalStepBinding;
204
+ }> | Readonly<{
205
+ kind: 'goal-outcome';
206
+ ref: string;
207
+ goal: GoalOutcomeBinding;
208
+ }>;
209
+ }
210
+ export type TaskVerificationReceiptInput = TaskVerificationReceiptV1Input | TaskVerificationReceiptV2Input | TaskVerificationReceiptV3Input | TaskVerificationReceiptV4Input;
211
+ export type TaskVerificationReceipt = TaskVerificationReceiptInput & Readonly<{
212
+ objectiveStatus: 'achieved' | 'not-achieved' | 'unknown';
213
+ digest: string;
214
+ }>;
215
+ export interface GoalArtifactAdmission {
216
+ readonly protocol: 'goal-artifact-admission/v1';
217
+ readonly contractId: string;
218
+ readonly contractDigest: string;
219
+ readonly runId: string;
220
+ readonly turn: number;
221
+ }
222
+ export {};
223
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/lib/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare const version = "0.1.30";
2
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,WAAW,CAAA"}
package/lib/version.js ADDED
@@ -0,0 +1,2 @@
1
+ export const version = '0.1.30';
2
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAA"}
package/lib/wire.d.ts ADDED
@@ -0,0 +1,17 @@
1
+ import type { AcceptanceCriterion, AcceptanceTaskIdentity, GoalArtifactAdmission, TaskAcceptanceContract, TaskVerificationReceipt } from './types.js';
2
+ export type AcceptanceContractErrorCode = 'invalid-contract' | 'invalid-receipt';
3
+ export declare class AcceptanceContractError extends Error {
4
+ readonly code: AcceptanceContractErrorCode;
5
+ constructor(code: AcceptanceContractErrorCode, message: string);
6
+ }
7
+ /** Deterministic JSON for bounded plain JSON data. */
8
+ export declare function acceptanceCanonicalJson(value: unknown): string;
9
+ export declare function acceptanceDigest(value: unknown): string;
10
+ /** Selects v4 only for goal-bound contracts whose complete criteria set is isolated. */
11
+ export declare function acceptanceProtocolForTask(taskIdentity: AcceptanceTaskIdentity, criteria: readonly AcceptanceCriterion[]): 'task-acceptance/v1' | 'task-acceptance/v2' | 'task-acceptance/v3' | 'task-acceptance/v4';
12
+ export declare function validateGoalArtifactAdmission(value: unknown): GoalArtifactAdmission;
13
+ export declare function createTaskAcceptanceContract(input: unknown): TaskAcceptanceContract;
14
+ export declare function validateTaskAcceptanceContract(value: unknown): TaskAcceptanceContract;
15
+ export declare function createTaskVerificationReceipt(contract: TaskAcceptanceContract, input: unknown): TaskVerificationReceipt;
16
+ export declare function validateTaskVerificationReceipt(contract: TaskAcceptanceContract, value: unknown): TaskVerificationReceipt;
17
+ //# sourceMappingURL=wire.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../src/wire.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,mBAAmB,EAAuB,sBAAsB,EAAiC,qBAAqB,EACtH,sBAAsB,EAA+B,uBAAuB,EAE7E,MAAM,YAAY,CAAA;AAEnB,MAAM,MAAM,2BAA2B,GAAG,kBAAkB,GAAG,iBAAiB,CAAA;AAEhF,qBAAa,uBAAwB,SAAQ,KAAK;IACpC,QAAQ,CAAC,IAAI,EAAE,2BAA2B;gBAAjC,IAAI,EAAE,2BAA2B,EAAE,OAAO,EAAE,MAAM;CAIxE;AA+ED,sDAAsD;AACtD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CA+B9D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEvD;AAED,wFAAwF;AACxF,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,sBAAsB,EAAE,QAAQ,EAAE,SAAS,mBAAmB,EAAE,GAAG,oBAAoB,GAAG,oBAAoB,GAAG,oBAAoB,GAAG,oBAAoB,CAQnN;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO,GAAG,qBAAqB,CAKnF;AA8ID,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,CAMnF;AACD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,CAOrF;AAwCD,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,sBAAsB,EAAE,KAAK,EAAE,OAAO,GAAG,uBAAuB,CASvH;AACD,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,sBAAsB,EAAE,KAAK,EAAE,OAAO,GAAG,uBAAuB,CAUzH"}
package/lib/wire.js ADDED
@@ -0,0 +1,431 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { isAbsolute, normalize, resolve, sep } from 'node:path';
3
+ export class AcceptanceContractError extends Error {
4
+ code;
5
+ constructor(code, message) {
6
+ super(message);
7
+ this.code = code;
8
+ this.name = 'AcceptanceContractError';
9
+ }
10
+ }
11
+ const DIGEST = /^[a-f0-9]{64}$/u;
12
+ const ID = /^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$/u;
13
+ const PRESET = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$/u;
14
+ const REASON = /^[a-z0-9]+(?:-[a-z0-9]+)*$/u;
15
+ const UNSAFE = new Set(['__proto__', 'prototype', 'constructor']);
16
+ const MAX_TEXT_BYTES = 65_536;
17
+ const MAX_CONTRACT_BYTES = 262_144;
18
+ const MAX_RECEIPT_BYTES = 1_048_576;
19
+ const MAX_CANONICAL_BYTES = 1_048_576;
20
+ function fail(code, message) {
21
+ throw new AcceptanceContractError(code, message);
22
+ }
23
+ function record(value, code, label) {
24
+ if (value === null || typeof value !== 'object' || Array.isArray(value)
25
+ || (Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null)) {
26
+ fail(code, `${label} must be a plain object`);
27
+ }
28
+ for (const key of Reflect.ownKeys(value)) {
29
+ if (typeof key !== 'string')
30
+ fail(code, `${label} contains a symbol property`);
31
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
32
+ if (UNSAFE.has(key) || !Object.hasOwn(descriptor, 'value'))
33
+ fail(code, `${label} contains an unsafe property`);
34
+ }
35
+ return value;
36
+ }
37
+ function exactKeys(value, keys, code, label) {
38
+ const actual = Reflect.ownKeys(value);
39
+ if (actual.some(key => typeof key !== 'string'))
40
+ fail(code, `${label} has an invalid shape`);
41
+ const actualStrings = actual;
42
+ const actualSorted = [...actualStrings].sort();
43
+ const expected = [...keys].sort();
44
+ if (actualSorted.length !== expected.length || actualSorted.some((key, index) => key !== expected[index])) {
45
+ fail(code, `${label} has an invalid shape`);
46
+ }
47
+ }
48
+ function text(value, code, label, max = 4_096, exact = false, allowEmpty = false) {
49
+ if (typeof value !== 'string' || (!allowEmpty && value === '') || Buffer.byteLength(value, 'utf8') > max)
50
+ fail(code, `${label} is invalid`);
51
+ if (value.includes('\0') || (!exact && (value !== value.normalize('NFC').trim())))
52
+ fail(code, `${label} is not canonical text`);
53
+ return value;
54
+ }
55
+ function id(value, code, label) {
56
+ const parsed = text(value, code, label, 256);
57
+ if (!ID.test(parsed))
58
+ fail(code, `${label} is not an identifier`);
59
+ return parsed;
60
+ }
61
+ function digest(value, code, label) {
62
+ if (typeof value !== 'string' || !DIGEST.test(value))
63
+ fail(code, `${label} must be a lowercase SHA-256 digest`);
64
+ return value;
65
+ }
66
+ function positiveInteger(value, code, label, max = Number.MAX_SAFE_INTEGER) {
67
+ if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < 1 || value > max)
68
+ fail(code, `${label} is invalid`);
69
+ return value;
70
+ }
71
+ function timestamp(value, code, label) {
72
+ if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < 0)
73
+ fail(code, `${label} is invalid`);
74
+ return value;
75
+ }
76
+ function array(value, code, label, min, max) {
77
+ if (!Array.isArray(value) || Object.getPrototypeOf(value) !== Array.prototype || value.length < min || value.length > max) {
78
+ fail(code, `${label} has an invalid length`);
79
+ }
80
+ if (Object.getOwnPropertySymbols(value).length > 0)
81
+ fail(code, `${label} has an unsafe shape`);
82
+ const keys = Object.getOwnPropertyNames(value).filter(key => key !== 'length');
83
+ if (keys.length !== value.length || keys.some((key, index) => key !== String(index)
84
+ || !Object.hasOwn(Object.getOwnPropertyDescriptor(value, key), 'value'))) {
85
+ fail(code, `${label} has an unsafe shape`);
86
+ }
87
+ return value;
88
+ }
89
+ function freeze(value) {
90
+ if (value !== null && typeof value === 'object' && !Object.isFrozen(value)) {
91
+ for (const key of Reflect.ownKeys(value))
92
+ freeze(value[key]);
93
+ Object.freeze(value);
94
+ }
95
+ return value;
96
+ }
97
+ /** Deterministic JSON for bounded plain JSON data. */
98
+ export function acceptanceCanonicalJson(value) {
99
+ const active = new Set();
100
+ let nodes = 0;
101
+ const visit = (current, depth) => {
102
+ nodes += 1;
103
+ if (nodes > 4_096 || depth > 16)
104
+ fail('invalid-contract', 'canonical JSON is too complex');
105
+ if (current === null || typeof current === 'boolean' || typeof current === 'string')
106
+ return JSON.stringify(current);
107
+ if (typeof current === 'number') {
108
+ if (!Number.isFinite(current) || (Number.isInteger(current) && !Number.isSafeInteger(current))) {
109
+ fail('invalid-contract', 'canonical JSON number is invalid');
110
+ }
111
+ return JSON.stringify(current);
112
+ }
113
+ if (typeof current !== 'object' || active.has(current))
114
+ fail('invalid-contract', 'canonical JSON contains an unsafe cycle or value');
115
+ active.add(current);
116
+ try {
117
+ if (Array.isArray(current)) {
118
+ array(current, 'invalid-contract', 'canonical JSON array', 0, 4_096);
119
+ return `[${current.map(item => visit(item, depth + 1)).join(',')}]`;
120
+ }
121
+ const object = record(current, 'invalid-contract', 'canonical JSON');
122
+ const keys = Object.keys(object).sort();
123
+ if (keys.some(key => UNSAFE.has(key)))
124
+ fail('invalid-contract', 'canonical JSON contains an unsafe key');
125
+ return `{${keys.map(key => `${JSON.stringify(key)}:${visit(object[key], depth + 1)}`).join(',')}}`;
126
+ }
127
+ finally {
128
+ active.delete(current);
129
+ }
130
+ };
131
+ const output = visit(value, 0);
132
+ if (Buffer.byteLength(output, 'utf8') > MAX_CANONICAL_BYTES) {
133
+ fail('invalid-contract', 'canonical JSON exceeds 1MiB serialization budget');
134
+ }
135
+ return output;
136
+ }
137
+ export function acceptanceDigest(value) {
138
+ return createHash('sha256').update(acceptanceCanonicalJson(value)).digest('hex');
139
+ }
140
+ /** Selects v4 only for goal-bound contracts whose complete criteria set is isolated. */
141
+ export function acceptanceProtocolForTask(taskIdentity, criteria) {
142
+ const isolated = criteria.length > 0 && criteria.every(criterion => criterion.kind === 'isolated-process-behavior');
143
+ if (isolated) {
144
+ if (taskIdentity.kind !== 'goal-step' && taskIdentity.kind !== 'goal-outcome')
145
+ fail('invalid-contract', 'isolated criteria require a goal task');
146
+ return 'task-acceptance/v4';
147
+ }
148
+ if (taskIdentity.kind === 'automation-run' || taskIdentity.kind === 'foreground-turn')
149
+ return 'task-acceptance/v1';
150
+ return taskIdentity.kind === 'goal-step' ? 'task-acceptance/v2' : 'task-acceptance/v3';
151
+ }
152
+ export function validateGoalArtifactAdmission(value) {
153
+ const item = record(value, 'invalid-contract', 'goal artifact admission');
154
+ exactKeys(item, ['protocol', 'contractId', 'contractDigest', 'runId', 'turn'], 'invalid-contract', 'goal artifact admission');
155
+ if (item.protocol !== 'goal-artifact-admission/v1')
156
+ fail('invalid-contract', 'goal artifact admission protocol is invalid');
157
+ return freeze({ protocol: 'goal-artifact-admission/v1', contractId: id(item.contractId, 'invalid-contract', 'contractId'), contractDigest: digest(item.contractDigest, 'invalid-contract', 'contractDigest'), runId: id(item.runId, 'invalid-contract', 'runId'), turn: positiveInteger(item.turn, 'invalid-contract', 'turn') });
158
+ }
159
+ function scope(value, code) {
160
+ const item = record(value, code, 'scope');
161
+ exactKeys(item, ['workspace', 'preset'], code, 'scope');
162
+ const workspace = text(item.workspace, code, 'scope workspace');
163
+ if (!isAbsolute(workspace) || normalize(workspace) !== workspace || resolve(workspace) !== workspace)
164
+ fail(code, 'scope workspace must be an absolute normalized path');
165
+ const preset = text(item.preset, code, 'scope preset', 256);
166
+ if (!PRESET.test(preset))
167
+ fail(code, 'scope preset is invalid');
168
+ return freeze({ workspace, preset });
169
+ }
170
+ function owner(value, code) {
171
+ const item = record(value, code, 'owner');
172
+ exactKeys(item, ['principalRecordId', 'principalVersion'], code, 'owner');
173
+ return freeze({ principalRecordId: id(item.principalRecordId, code, 'principalRecordId'), principalVersion: positiveInteger(item.principalVersion, code, 'principalVersion') });
174
+ }
175
+ function task(value, code, protocol) {
176
+ const item = record(value, code, 'task');
177
+ if (protocol === 'v1') {
178
+ exactKeys(item, ['kind', 'ref'], code, 'task');
179
+ if (item.kind !== 'automation-run' && item.kind !== 'foreground-turn')
180
+ fail(code, 'task kind is invalid');
181
+ return freeze({ kind: item.kind, ref: id(item.ref, code, 'task ref') });
182
+ }
183
+ exactKeys(item, ['kind', 'ref', 'goal'], code, 'task');
184
+ if (protocol === 'v3' || (protocol === 'v4' && item.kind === 'goal-outcome')) {
185
+ if (item.kind !== 'goal-outcome')
186
+ fail(code, 'task kind is invalid');
187
+ const goal = record(item.goal, code, 'task goal');
188
+ exactKeys(goal, ['id', 'definitionVersion', 'definitionDigest', 'assessmentId', 'sessionId', 'nativeGoalId'], code, 'task goal');
189
+ if (goal.assessmentId !== item.ref)
190
+ fail(code, 'goal assessment identity must equal task ref');
191
+ return freeze({ kind: 'goal-outcome', ref: id(item.ref, code, 'task ref'), goal: freeze({
192
+ id: id(goal.id, code, 'goal id'), definitionVersion: positiveInteger(goal.definitionVersion, code, 'goal definitionVersion'),
193
+ definitionDigest: digest(goal.definitionDigest, code, 'goal definitionDigest'), assessmentId: id(goal.assessmentId, code, 'goal assessmentId'),
194
+ sessionId: id(goal.sessionId, code, 'goal sessionId'), nativeGoalId: id(goal.nativeGoalId, code, 'goal nativeGoalId'),
195
+ }) });
196
+ }
197
+ if (item.kind !== 'goal-step' || (protocol !== 'v2' && protocol !== 'v4'))
198
+ fail(code, 'task kind is invalid');
199
+ const goal = record(item.goal, code, 'task goal');
200
+ exactKeys(goal, ['id', 'definitionVersion', 'definitionDigest', 'stepId', 'runId', 'sessionId', 'nativeGoalId', 'nativeRevision'], code, 'task goal');
201
+ if (goal.runId !== item.ref)
202
+ fail(code, 'goal run identity must equal task ref');
203
+ return freeze({ kind: 'goal-step', ref: id(item.ref, code, 'task ref'), goal: freeze({
204
+ id: id(goal.id, code, 'goal id'), definitionVersion: positiveInteger(goal.definitionVersion, code, 'goal definitionVersion'),
205
+ definitionDigest: digest(goal.definitionDigest, code, 'goal definitionDigest'), stepId: id(goal.stepId, code, 'goal stepId'),
206
+ runId: id(goal.runId, code, 'goal runId'), sessionId: id(goal.sessionId, code, 'goal sessionId'),
207
+ nativeGoalId: id(goal.nativeGoalId, code, 'goal nativeGoalId'), nativeRevision: positiveInteger(goal.nativeRevision, code, 'goal nativeRevision'),
208
+ }) });
209
+ }
210
+ function authority(value, code) {
211
+ const item = record(value, code, 'authority');
212
+ exactKeys(item, ['id', 'digest'], code, 'authority');
213
+ return freeze({ id: id(item.id, code, 'authority id'), digest: digest(item.digest, code, 'authority digest') });
214
+ }
215
+ function artifactPath(value, code) {
216
+ const path = text(value, code, 'artifactPath', 4_096);
217
+ if (isAbsolute(path) || normalize(path) !== path || path === '.' || path.startsWith(`..${sep}`) || path === '..')
218
+ fail(code, 'artifactPath must be a normalized relative path');
219
+ return path;
220
+ }
221
+ function json(value, code, depth = 0, state = { nodes: 0, active: new Set() }) {
222
+ state.nodes += 1;
223
+ if (state.nodes > 4_096 || depth > 16)
224
+ fail(code, 'JSON value is too complex');
225
+ if (value === null || typeof value === 'string' || typeof value === 'boolean')
226
+ return value;
227
+ if (typeof value === 'number') {
228
+ if (!Number.isFinite(value) || (Number.isInteger(value) && !Number.isSafeInteger(value))) {
229
+ fail(code, 'JSON number is invalid');
230
+ }
231
+ return value;
232
+ }
233
+ if (typeof value !== 'object' || state.active.has(value))
234
+ fail(code, 'JSON value is unsafe');
235
+ state.active.add(value);
236
+ try {
237
+ if (Array.isArray(value)) {
238
+ const entries = array(value, code, 'JSON array', 0, 4_096);
239
+ return freeze(entries.map(item => json(item, code, depth + 1, state)));
240
+ }
241
+ const item = record(value, code, 'JSON object');
242
+ const keys = Object.keys(item);
243
+ if (keys.some(key => UNSAFE.has(key)))
244
+ fail(code, 'JSON object contains an unsafe key');
245
+ return freeze(Object.fromEntries(keys.sort().map(key => [key, json(item[key], code, depth + 1, state)])));
246
+ }
247
+ finally {
248
+ state.active.delete(value);
249
+ }
250
+ }
251
+ function criterion(value, code, budget) {
252
+ const item = record(value, code, 'criterion');
253
+ const addText = (input, label, maximum = MAX_TEXT_BYTES, exact = false, allowEmpty = false) => {
254
+ const output = text(input, code, label, maximum, exact, allowEmpty);
255
+ budget.used += Buffer.byteLength(output, 'utf8');
256
+ if (budget.used > MAX_TEXT_BYTES)
257
+ fail(code, 'criterion text exceeds 64KiB total budget');
258
+ return output;
259
+ };
260
+ if (item.kind === 'process-behavior') {
261
+ exactKeys(item, ['id', 'kind', 'authority', 'artifactPath', 'stdin', 'expectedStdout', 'expectedExitCode'], code, 'process criterion');
262
+ const exit = item.expectedExitCode;
263
+ if (typeof exit !== 'number' || !Number.isSafeInteger(exit) || exit < 0 || exit > 255)
264
+ fail(code, 'expectedExitCode is invalid');
265
+ return freeze({ id: id(item.id, code, 'criterion id'), kind: 'process-behavior', authority: authority(item.authority, code), artifactPath: artifactPath(item.artifactPath, code), stdin: addText(item.stdin, 'stdin', MAX_TEXT_BYTES, true, true), expectedStdout: addText(item.expectedStdout, 'expectedStdout', MAX_TEXT_BYTES, true, true), expectedExitCode: exit });
266
+ }
267
+ if (item.kind === 'isolated-process-behavior') {
268
+ exactKeys(item, ['id', 'kind', 'authority', 'artifactPath', 'testSetId'], code, 'isolated process criterion');
269
+ return freeze({ id: id(item.id, code, 'criterion id'), kind: 'isolated-process-behavior', authority: authority(item.authority, code), artifactPath: artifactPath(item.artifactPath, code), testSetId: id(item.testSetId, code, 'testSetId') });
270
+ }
271
+ if (item.kind === 'document-citations') {
272
+ exactKeys(item, ['id', 'kind', 'authority', 'artifactPath', 'requiredText', 'quotes'], code, 'document criterion');
273
+ const requiredText = array(item.requiredText, code, 'requiredText', 0, 128).map((entry, index) => addText(entry, `requiredText[${index}]`, MAX_TEXT_BYTES, true));
274
+ const quotes = array(item.quotes, code, 'quotes', 0, 128).map((entry, index) => {
275
+ const quote = record(entry, code, 'quote');
276
+ exactKeys(quote, ['quote', 'sourceId', 'sourceSha256'], code, 'quote');
277
+ return freeze({ quote: addText(quote.quote, `quotes[${index}].quote`, MAX_TEXT_BYTES, true), sourceId: id(quote.sourceId, code, 'quote sourceId'), sourceSha256: digest(quote.sourceSha256, code, 'quote sourceSha256') });
278
+ });
279
+ if (requiredText.length === 0 && quotes.length === 0)
280
+ fail(code, 'document criterion needs a measurable clause');
281
+ return freeze({ id: id(item.id, code, 'criterion id'), kind: 'document-citations', authority: authority(item.authority, code), artifactPath: artifactPath(item.artifactPath, code), requiredText: freeze(requiredText), quotes: freeze(quotes) });
282
+ }
283
+ if (item.kind === 'target-readback') {
284
+ exactKeys(item, Object.hasOwn(item, 'expectedRevision') ? ['id', 'kind', 'authority', 'objectId', 'expected', 'expectedRevision'] : ['id', 'kind', 'authority', 'objectId', 'expected'], code, 'target criterion');
285
+ const expected = array(item.expected, code, 'expected', 1, 128).map(entry => {
286
+ const expectation = record(entry, code, 'readback expectation');
287
+ exactKeys(expectation, ['pointer', 'value'], code, 'readback expectation');
288
+ const pointer = text(expectation.pointer, code, 'JSON pointer', 4_096, true, true);
289
+ if (pointer !== '' && (!pointer.startsWith('/') || /~(?:[^01]|$)/u.test(pointer) || pointer.split('/').slice(1).some(part => ['__proto__', 'prototype', 'constructor'].includes(part.replace(/~1/g, '/').replace(/~0/g, '~')))))
290
+ fail(code, 'JSON pointer is invalid');
291
+ const value = json(expectation.value, code);
292
+ const valueBytes = Buffer.byteLength(acceptanceCanonicalJson(value), 'utf8');
293
+ if (valueBytes > MAX_TEXT_BYTES)
294
+ fail(code, 'JSON value is too large');
295
+ budget.jsonUsed += valueBytes;
296
+ if (budget.jsonUsed > MAX_TEXT_BYTES)
297
+ fail(code, 'JSON expectations exceed 64KiB total budget');
298
+ return freeze({ pointer, value });
299
+ });
300
+ const base = { id: id(item.id, code, 'criterion id'), kind: 'target-readback', authority: authority(item.authority, code), objectId: id(item.objectId, code, 'objectId'), expected: freeze(expected) };
301
+ return freeze(Object.hasOwn(item, 'expectedRevision') ? { ...base, expectedRevision: id(item.expectedRevision, code, 'expectedRevision') } : base);
302
+ }
303
+ fail(code, 'criterion kind is invalid');
304
+ }
305
+ function contractPayload(value, code) {
306
+ const item = record(value, code, 'contract');
307
+ exactKeys(item, ['protocol', 'id', 'scope', 'owner', 'task', 'objective', 'profile', 'issuedAt', 'expiresAt', 'criteria', 'bounds'], code, 'contract');
308
+ if (item.protocol !== 'task-acceptance/v1' && item.protocol !== 'task-acceptance/v2' && item.protocol !== 'task-acceptance/v3' && item.protocol !== 'task-acceptance/v4')
309
+ fail(code, 'contract protocol is invalid');
310
+ const issuedAt = timestamp(item.issuedAt, code, 'issuedAt');
311
+ const expiresAt = timestamp(item.expiresAt, code, 'expiresAt');
312
+ if (expiresAt <= issuedAt || expiresAt - issuedAt > 7 * 24 * 60 * 60 * 1_000)
313
+ fail(code, 'contract validity is invalid');
314
+ const profile = record(item.profile, code, 'profile');
315
+ exactKeys(profile, ['id', 'version', 'digest'], code, 'profile');
316
+ const bounds = record(item.bounds, code, 'bounds');
317
+ exactKeys(bounds, ['maxDurationMs', 'maxEvidenceBytes'], code, 'bounds');
318
+ const criteria = array(item.criteria, code, 'criteria', 1, 32);
319
+ const budget = { used: 0, jsonUsed: 0 };
320
+ const parsedCriteria = criteria.map(entry => criterion(entry, code, budget));
321
+ const ids = new Set(parsedCriteria.map(entry => entry.id));
322
+ if (ids.size !== parsedCriteria.length)
323
+ fail(code, 'criterion ids must be unique');
324
+ const isolated = parsedCriteria.every(entry => entry.kind === 'isolated-process-behavior');
325
+ if (item.protocol === 'task-acceptance/v4' ? !isolated : parsedCriteria.some(entry => entry.kind === 'isolated-process-behavior'))
326
+ fail(code, 'contract protocol and criterion kinds are incompatible');
327
+ const objective = text(item.objective, code, 'objective', 8_192, true);
328
+ const taskProtocol = item.protocol === 'task-acceptance/v1' ? 'v1' : item.protocol === 'task-acceptance/v2' ? 'v2' : item.protocol === 'task-acceptance/v3' ? 'v3' : 'v4';
329
+ const base = { id: id(item.id, code, 'contract id'), scope: scope(item.scope, code), owner: owner(item.owner, code), task: task(item.task, code, taskProtocol), objective, profile: freeze({ id: id(profile.id, code, 'profile id'), version: positiveInteger(profile.version, code, 'profile version'), digest: digest(profile.digest, code, 'profile digest') }), issuedAt, expiresAt, criteria: freeze(parsedCriteria), bounds: freeze({ maxDurationMs: positiveInteger(bounds.maxDurationMs, code, 'maxDurationMs', 300_000), maxEvidenceBytes: positiveInteger(bounds.maxEvidenceBytes, code, 'maxEvidenceBytes', 1_048_576) }) };
330
+ if (item.protocol === 'task-acceptance/v1')
331
+ return freeze({ protocol: 'task-acceptance/v1', ...base, task: task(item.task, code, 'v1') });
332
+ if (item.protocol === 'task-acceptance/v2')
333
+ return freeze({ protocol: 'task-acceptance/v2', ...base, task: task(item.task, code, 'v2') });
334
+ if (item.protocol === 'task-acceptance/v3')
335
+ return freeze({ protocol: 'task-acceptance/v3', ...base, task: task(item.task, code, 'v3') });
336
+ return freeze({ protocol: 'task-acceptance/v4', ...base, task: task(item.task, code, 'v4') });
337
+ }
338
+ export function createTaskAcceptanceContract(input) {
339
+ const payload = contractPayload(input, 'invalid-contract');
340
+ if (Buffer.byteLength(acceptanceCanonicalJson(payload), 'utf8') > MAX_CONTRACT_BYTES) {
341
+ fail('invalid-contract', 'contract exceeds 256KiB overall bound');
342
+ }
343
+ return freeze({ ...payload, digest: acceptanceDigest(payload) });
344
+ }
345
+ export function validateTaskAcceptanceContract(value) {
346
+ const item = record(value, 'invalid-contract', 'contract');
347
+ exactKeys(item, ['protocol', 'id', 'scope', 'owner', 'task', 'objective', 'profile', 'issuedAt', 'expiresAt', 'criteria', 'bounds', 'digest'], 'invalid-contract', 'contract');
348
+ const { digest: supplied, ...payload } = item;
349
+ const result = createTaskAcceptanceContract(payload);
350
+ if (digest(supplied, 'invalid-contract', 'contract digest') !== result.digest)
351
+ fail('invalid-contract', 'contract digest is stale');
352
+ return result;
353
+ }
354
+ function result(value, code) {
355
+ const item = record(value, code, 'criterion result');
356
+ exactKeys(item, Object.hasOwn(item, 'artifactDigest') ? ['criterionId', 'status', 'reason', 'evidence', 'artifactDigest'] : ['criterionId', 'status', 'reason', 'evidence'], code, 'criterion result');
357
+ if (item.status !== 'passed' && item.status !== 'failed' && item.status !== 'unknown')
358
+ fail(code, 'criterion result status is invalid');
359
+ const reason = text(item.reason, code, 'criterion result reason', 128);
360
+ if (!REASON.test(reason))
361
+ fail(code, 'criterion result reason must be kebab-case');
362
+ const evidence = array(item.evidence, code, 'evidence', 0, 32).map(entry => {
363
+ const evidenceItem = record(entry, code, 'evidence');
364
+ exactKeys(evidenceItem, ['kind', 'ref', 'digest'], code, 'evidence');
365
+ return freeze({ kind: id(evidenceItem.kind, code, 'evidence kind'), ref: text(evidenceItem.ref, code, 'evidence ref', 4_096), digest: digest(evidenceItem.digest, code, 'evidence digest') });
366
+ });
367
+ const base = { criterionId: id(item.criterionId, code, 'criterionId'), status: item.status, reason, evidence: freeze(evidence) };
368
+ return freeze(Object.hasOwn(item, 'artifactDigest') ? { ...base, artifactDigest: digest(item.artifactDigest, code, 'artifactDigest') } : base);
369
+ }
370
+ function equalJson(left, right) { return acceptanceCanonicalJson(left) === acceptanceCanonicalJson(right); }
371
+ function derive(results) {
372
+ if (results.some(entry => entry.status === 'failed'))
373
+ return 'not-achieved';
374
+ return results.every(entry => entry.status === 'passed') ? 'achieved' : 'unknown';
375
+ }
376
+ function receiptPayload(contract, value, code) {
377
+ const item = record(value, code, 'receipt');
378
+ exactKeys(item, ['protocol', 'id', 'contractId', 'contractDigest', 'scope', 'owner', 'task', 'results', 'startedAt', 'completedAt', 'validUntil'], code, 'receipt');
379
+ const taskProtocol = contract.protocol === 'task-acceptance/v1' ? 'v1' : contract.protocol === 'task-acceptance/v2' ? 'v2' : contract.protocol === 'task-acceptance/v3' ? 'v3' : 'v4';
380
+ const receiptProtocol = contract.protocol === 'task-acceptance/v1' ? 'task-verification/v1' : contract.protocol === 'task-acceptance/v2' ? 'task-verification/v2' : contract.protocol === 'task-acceptance/v3' ? 'task-verification/v3' : 'task-verification/v4';
381
+ if (item.protocol !== receiptProtocol)
382
+ fail(code, 'receipt protocol is invalid');
383
+ if (id(item.contractId, code, 'contractId') !== contract.id || digest(item.contractDigest, code, 'contractDigest') !== contract.digest || !equalJson(scope(item.scope, code), contract.scope) || !equalJson(owner(item.owner, code), contract.owner) || !equalJson(task(item.task, code, taskProtocol), contract.task))
384
+ fail(code, 'receipt identity does not bind the contract');
385
+ const startedAt = timestamp(item.startedAt, code, 'startedAt');
386
+ const completedAt = timestamp(item.completedAt, code, 'completedAt');
387
+ const validUntil = timestamp(item.validUntil, code, 'validUntil');
388
+ if (startedAt < contract.issuedAt || completedAt < startedAt || completedAt > contract.expiresAt || validUntil < completedAt || validUntil > contract.expiresAt)
389
+ fail(code, 'receipt time is outside contract validity');
390
+ const results = array(item.results, code, 'results', contract.criteria.length, contract.criteria.length).map(entry => result(entry, code));
391
+ const allowed = new Set(contract.criteria.map(entry => entry.id));
392
+ const ids = new Set(results.map(entry => entry.criterionId));
393
+ if (ids.size !== results.length || results.some(entry => !allowed.has(entry.criterionId)))
394
+ fail(code, 'receipt criterion set does not bind the contract');
395
+ const evidenceBytes = Buffer.byteLength(acceptanceCanonicalJson(results.map(entry => entry.evidence)), 'utf8');
396
+ if (evidenceBytes > contract.bounds.maxEvidenceBytes)
397
+ fail(code, 'receipt evidence exceeds contract maxEvidenceBytes');
398
+ const base = { id: id(item.id, code, 'receipt id'), contractId: contract.id, contractDigest: contract.digest, scope: contract.scope, owner: contract.owner, task: contract.task, results: freeze(results), startedAt, completedAt, validUntil };
399
+ if (contract.protocol === 'task-acceptance/v1')
400
+ return freeze({ protocol: 'task-verification/v1', ...base });
401
+ if (contract.protocol === 'task-acceptance/v2')
402
+ return freeze({ protocol: 'task-verification/v2', ...base });
403
+ if (contract.protocol === 'task-acceptance/v3')
404
+ return freeze({ protocol: 'task-verification/v3', ...base });
405
+ return freeze({ protocol: 'task-verification/v4', ...base });
406
+ }
407
+ export function createTaskVerificationReceipt(contract, input) {
408
+ const validContract = validateTaskAcceptanceContract(contract);
409
+ const payload = receiptPayload(validContract, input, 'invalid-receipt');
410
+ const objectiveStatus = derive(payload.results);
411
+ const digestPayload = { ...payload, objectiveStatus };
412
+ if (Buffer.byteLength(acceptanceCanonicalJson(digestPayload), 'utf8') > MAX_RECEIPT_BYTES) {
413
+ fail('invalid-receipt', 'receipt exceeds 1MiB overall bound');
414
+ }
415
+ return freeze({ ...payload, objectiveStatus, digest: acceptanceDigest(digestPayload) });
416
+ }
417
+ export function validateTaskVerificationReceipt(contract, value) {
418
+ const item = record(value, 'invalid-receipt', 'receipt');
419
+ exactKeys(item, ['protocol', 'id', 'contractId', 'contractDigest', 'scope', 'owner', 'task', 'results', 'startedAt', 'completedAt', 'validUntil', 'objectiveStatus', 'digest'], 'invalid-receipt', 'receipt');
420
+ const objectiveStatus = item.objectiveStatus;
421
+ if (objectiveStatus !== 'achieved' && objectiveStatus !== 'not-achieved' && objectiveStatus !== 'unknown')
422
+ fail('invalid-receipt', 'receipt objectiveStatus is invalid');
423
+ const { objectiveStatus: _ignored, digest: supplied, ...payload } = item;
424
+ const output = createTaskVerificationReceipt(contract, payload);
425
+ if (objectiveStatus !== output.objectiveStatus)
426
+ fail('invalid-receipt', 'receipt objectiveStatus is not derived from results');
427
+ if (digest(supplied, 'invalid-receipt', 'receipt digest') !== output.digest)
428
+ fail('invalid-receipt', 'receipt digest is stale');
429
+ return output;
430
+ }
431
+ //# sourceMappingURL=wire.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire.js","sourceRoot":"","sources":["../src/wire.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@dsh-enhanced/task-acceptance-contract",
3
+ "version": "0.1.30",
4
+ "description": "Strict immutable acceptance and verification wire contracts for DSH assistant plugins.",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "main": "./lib/index.js",
8
+ "types": "./lib/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./lib/index.d.ts",
12
+ "default": "./lib/index.js"
13
+ },
14
+ "./package.json": "./package.json"
15
+ },
16
+ "files": [
17
+ "lib",
18
+ "README.md",
19
+ "LICENSE"
20
+ ],
21
+ "engines": {
22
+ "node": "^22.19.0 || >=24.0.0"
23
+ },
24
+ "publishConfig": {
25
+ "access": "public"
26
+ },
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "git+https://github.com/22-ai-00/dsh-enhanced.git",
30
+ "directory": "packages/task-acceptance-contract"
31
+ },
32
+ "keywords": [
33
+ "deepseek",
34
+ "deepseek-harness",
35
+ "acceptance",
36
+ "verification"
37
+ ],
38
+ "devDependencies": {
39
+ "@types/node": "22.20.0",
40
+ "typescript": "6.0.3",
41
+ "vitest": "4.1.8"
42
+ },
43
+ "scripts": {
44
+ "build": "tsc -p tsconfig.build.json",
45
+ "test": "vitest run",
46
+ "typecheck": "tsc -p tsconfig.json --noEmit"
47
+ }
48
+ }