@allocator-one/rcl 4.5.6 → 4.5.8
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/dist/converge/guarded-input-retention.d.ts +23 -0
- package/dist/converge/guarded-input-retention.js +179 -0
- package/dist/converge/guarded-input-retention.js.map +1 -0
- package/dist/converge/ordinary-pending-export.js +74 -40
- package/dist/converge/ordinary-pending-export.js.map +1 -1
- package/dist/converge/ordinary-pending-package.d.ts +16 -2
- package/dist/converge/ordinary-pending-package.js +77 -4
- package/dist/converge/ordinary-pending-package.js.map +1 -1
- package/dist/dispatch/anthropic.js +2 -1
- package/dist/dispatch/anthropic.js.map +1 -1
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
declare const ENCODING: "json-string-table-v1";
|
|
2
|
+
type Scalar = null | boolean | number;
|
|
3
|
+
type EncodedNode = ['s', number] | ['v', Scalar] | ['a', EncodedNode[]] | [
|
|
4
|
+
'o',
|
|
5
|
+
Array<[number, EncodedNode]>
|
|
6
|
+
];
|
|
7
|
+
export interface RetainedGuardedInput {
|
|
8
|
+
version: 1;
|
|
9
|
+
encoding: typeof ENCODING;
|
|
10
|
+
strings: string[];
|
|
11
|
+
root: EncodedNode;
|
|
12
|
+
}
|
|
13
|
+
export type StoredGuardedInput = Record<string, unknown> | RetainedGuardedInput;
|
|
14
|
+
/**
|
|
15
|
+
* Retain exact JSON while storing repeated prompt and context strings once.
|
|
16
|
+
* Canonical JSON size is counted during traversal so an admitted archive is
|
|
17
|
+
* always within the decoder's recovery bound without materializing repeated
|
|
18
|
+
* prompt strings first.
|
|
19
|
+
*/
|
|
20
|
+
export declare function retainGuardedInput(value: Record<string, unknown>): RetainedGuardedInput;
|
|
21
|
+
/** Restore and authenticate the canonical retained representation. */
|
|
22
|
+
export declare function restoreGuardedInput(value: StoredGuardedInput): Record<string, unknown>;
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
const ENCODING = 'json-string-table-v1';
|
|
2
|
+
const MAX_DECODED_GUARDED_INPUT_BYTES = 128 * 1024 * 1024;
|
|
3
|
+
const MAX_GUARDED_INPUT_NODES = 1_000_000;
|
|
4
|
+
// Recursive codec frames and the archive's tuple wrappers both consume V8 stack.
|
|
5
|
+
// 256 leaves ample headroom for callers and JSON serialization while exceeding
|
|
6
|
+
// any expected prompt, roster, or recovery-package structure.
|
|
7
|
+
const MAX_GUARDED_INPUT_DEPTH = 256;
|
|
8
|
+
function plainRecord(value) {
|
|
9
|
+
return !!value && typeof value === 'object' && !Array.isArray(value);
|
|
10
|
+
}
|
|
11
|
+
function interned(strings, encodedStringBytes, indices, value) {
|
|
12
|
+
const existing = indices.get(value);
|
|
13
|
+
if (existing !== undefined)
|
|
14
|
+
return existing;
|
|
15
|
+
const index = strings.length;
|
|
16
|
+
strings.push(value);
|
|
17
|
+
encodedStringBytes.push(Buffer.byteLength(JSON.stringify(value), 'utf8'));
|
|
18
|
+
indices.set(value, index);
|
|
19
|
+
return index;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Retain exact JSON while storing repeated prompt and context strings once.
|
|
23
|
+
* Canonical JSON size is counted during traversal so an admitted archive is
|
|
24
|
+
* always within the decoder's recovery bound without materializing repeated
|
|
25
|
+
* prompt strings first.
|
|
26
|
+
*/
|
|
27
|
+
export function retainGuardedInput(value) {
|
|
28
|
+
if (!plainRecord(value))
|
|
29
|
+
throw new Error('guarded_input_invalid');
|
|
30
|
+
const strings = [];
|
|
31
|
+
const encodedStringBytes = [];
|
|
32
|
+
const indices = new Map();
|
|
33
|
+
let nodes = 0;
|
|
34
|
+
let expandedBytes = 0;
|
|
35
|
+
const addExpandedBytes = (bytes) => {
|
|
36
|
+
expandedBytes += bytes;
|
|
37
|
+
if (!Number.isSafeInteger(expandedBytes) || expandedBytes > MAX_DECODED_GUARDED_INPUT_BYTES) {
|
|
38
|
+
throw new Error('guarded_input_archive_expands_too_large');
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
const encode = (item, depth) => {
|
|
42
|
+
if (depth > MAX_GUARDED_INPUT_DEPTH)
|
|
43
|
+
throw new Error('guarded_input_too_deep');
|
|
44
|
+
nodes++;
|
|
45
|
+
if (nodes > MAX_GUARDED_INPUT_NODES)
|
|
46
|
+
throw new Error('guarded_input_too_complex');
|
|
47
|
+
if (typeof item === 'string') {
|
|
48
|
+
const index = interned(strings, encodedStringBytes, indices, item);
|
|
49
|
+
addExpandedBytes(encodedStringBytes[index]);
|
|
50
|
+
return ['s', index];
|
|
51
|
+
}
|
|
52
|
+
if (item === null || typeof item === 'boolean') {
|
|
53
|
+
addExpandedBytes(Buffer.byteLength(JSON.stringify(item), 'utf8'));
|
|
54
|
+
return ['v', item];
|
|
55
|
+
}
|
|
56
|
+
if (typeof item === 'number') {
|
|
57
|
+
const canonical = Number.isFinite(item) ? (Object.is(item, -0) ? 0 : item) : null;
|
|
58
|
+
addExpandedBytes(Buffer.byteLength(JSON.stringify(canonical), 'utf8'));
|
|
59
|
+
return ['v', canonical];
|
|
60
|
+
}
|
|
61
|
+
if (item === undefined || typeof item === 'function' || typeof item === 'symbol') {
|
|
62
|
+
addExpandedBytes(4);
|
|
63
|
+
return ['v', null];
|
|
64
|
+
}
|
|
65
|
+
if (Array.isArray(item)) {
|
|
66
|
+
addExpandedBytes(2 + Math.max(0, item.length - 1));
|
|
67
|
+
return ['a', Array.from({ length: item.length }, (_, index) => encode(item[index], depth + 1))];
|
|
68
|
+
}
|
|
69
|
+
if (plainRecord(item)) {
|
|
70
|
+
const entries = Object.entries(item).filter(([, child]) => child !== undefined)
|
|
71
|
+
.sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0);
|
|
72
|
+
addExpandedBytes(2 + Math.max(0, entries.length - 1));
|
|
73
|
+
return ['o', entries.map(([key, child]) => {
|
|
74
|
+
const index = interned(strings, encodedStringBytes, indices, key);
|
|
75
|
+
addExpandedBytes(encodedStringBytes[index] + 1);
|
|
76
|
+
return [index, encode(child, depth + 1)];
|
|
77
|
+
})];
|
|
78
|
+
}
|
|
79
|
+
throw new Error('guarded_input_invalid');
|
|
80
|
+
};
|
|
81
|
+
return { version: 1, encoding: ENCODING, strings, root: encode(value, 0) };
|
|
82
|
+
}
|
|
83
|
+
function isRetained(value) {
|
|
84
|
+
return plainRecord(value) && value.encoding === ENCODING;
|
|
85
|
+
}
|
|
86
|
+
/** Restore and authenticate the canonical retained representation. */
|
|
87
|
+
export function restoreGuardedInput(value) {
|
|
88
|
+
if (!isRetained(value)) {
|
|
89
|
+
if (!plainRecord(value))
|
|
90
|
+
throw new Error('guarded_input_invalid');
|
|
91
|
+
// Legacy pending packages retain raw JSON. Traverse it with the same
|
|
92
|
+
// recovery bounds before callers authenticate it with recursive hashing.
|
|
93
|
+
retainGuardedInput(value);
|
|
94
|
+
return value;
|
|
95
|
+
}
|
|
96
|
+
if (Object.keys(value).sort().join(',') !== 'encoding,root,strings,version' ||
|
|
97
|
+
value.version !== 1 || !Array.isArray(value.strings) ||
|
|
98
|
+
value.strings.some(item => typeof item !== 'string') ||
|
|
99
|
+
new Set(value.strings).size !== value.strings.length) {
|
|
100
|
+
throw new Error('guarded_input_archive_invalid');
|
|
101
|
+
}
|
|
102
|
+
let nodes = 0;
|
|
103
|
+
let expandedBytes = 0;
|
|
104
|
+
let nextFirstStringIndex = 0;
|
|
105
|
+
const seenStringIndices = new Set();
|
|
106
|
+
const encodedStringBytes = value.strings.map(string => Buffer.byteLength(JSON.stringify(string), 'utf8'));
|
|
107
|
+
const addExpandedBytes = (bytes) => {
|
|
108
|
+
expandedBytes += bytes;
|
|
109
|
+
if (!Number.isSafeInteger(expandedBytes) || expandedBytes > MAX_DECODED_GUARDED_INPUT_BYTES) {
|
|
110
|
+
throw new Error('guarded_input_archive_expands_too_large');
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
const stringAt = (index) => {
|
|
114
|
+
if (!Number.isSafeInteger(index) || index < 0 ||
|
|
115
|
+
index >= value.strings.length)
|
|
116
|
+
throw new Error('guarded_input_archive_invalid');
|
|
117
|
+
const resolved = index;
|
|
118
|
+
if (!seenStringIndices.has(resolved)) {
|
|
119
|
+
if (resolved !== nextFirstStringIndex)
|
|
120
|
+
throw new Error('guarded_input_archive_invalid');
|
|
121
|
+
seenStringIndices.add(resolved);
|
|
122
|
+
nextFirstStringIndex++;
|
|
123
|
+
}
|
|
124
|
+
return value.strings[resolved];
|
|
125
|
+
};
|
|
126
|
+
const decode = (node, depth) => {
|
|
127
|
+
if (depth > MAX_GUARDED_INPUT_DEPTH)
|
|
128
|
+
throw new Error('guarded_input_too_deep');
|
|
129
|
+
nodes++;
|
|
130
|
+
if (nodes > MAX_GUARDED_INPUT_NODES)
|
|
131
|
+
throw new Error('guarded_input_too_complex');
|
|
132
|
+
if (!Array.isArray(node) || typeof node[0] !== 'string') {
|
|
133
|
+
throw new Error('guarded_input_archive_invalid');
|
|
134
|
+
}
|
|
135
|
+
if (node[0] === 's' && node.length === 2) {
|
|
136
|
+
const string = stringAt(node[1]);
|
|
137
|
+
addExpandedBytes(encodedStringBytes[node[1]]);
|
|
138
|
+
return string;
|
|
139
|
+
}
|
|
140
|
+
if (node[0] === 'v' && node.length === 2 &&
|
|
141
|
+
(node[1] === null || typeof node[1] === 'boolean' ||
|
|
142
|
+
(typeof node[1] === 'number' && Number.isFinite(node[1]) && !Object.is(node[1], -0)))) {
|
|
143
|
+
addExpandedBytes(Buffer.byteLength(JSON.stringify(node[1]), 'utf8'));
|
|
144
|
+
return node[1];
|
|
145
|
+
}
|
|
146
|
+
if (node[0] === 'a' && node.length === 2 && Array.isArray(node[1])) {
|
|
147
|
+
addExpandedBytes(2 + Math.max(0, node[1].length - 1));
|
|
148
|
+
return node[1].map(child => decode(child, depth + 1));
|
|
149
|
+
}
|
|
150
|
+
if (node[0] === 'o' && node.length === 2 && Array.isArray(node[1])) {
|
|
151
|
+
const result = {};
|
|
152
|
+
let previousKey;
|
|
153
|
+
addExpandedBytes(2 + Math.max(0, node[1].length - 1));
|
|
154
|
+
for (const entry of node[1]) {
|
|
155
|
+
if (!Array.isArray(entry) || entry.length !== 2)
|
|
156
|
+
throw new Error('guarded_input_archive_invalid');
|
|
157
|
+
const key = stringAt(entry[0]);
|
|
158
|
+
if (previousKey !== undefined && previousKey >= key)
|
|
159
|
+
throw new Error('guarded_input_archive_invalid');
|
|
160
|
+
previousKey = key;
|
|
161
|
+
addExpandedBytes(encodedStringBytes[entry[0]] + 1);
|
|
162
|
+
Object.defineProperty(result, key, {
|
|
163
|
+
value: decode(entry[1], depth + 1),
|
|
164
|
+
enumerable: true,
|
|
165
|
+
configurable: true,
|
|
166
|
+
writable: true,
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
return result;
|
|
170
|
+
}
|
|
171
|
+
throw new Error('guarded_input_archive_invalid');
|
|
172
|
+
};
|
|
173
|
+
const restored = decode(value.root, 0);
|
|
174
|
+
if (!plainRecord(restored) || nextFirstStringIndex !== value.strings.length) {
|
|
175
|
+
throw new Error('guarded_input_archive_invalid');
|
|
176
|
+
}
|
|
177
|
+
return restored;
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=guarded-input-retention.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guarded-input-retention.js","sourceRoot":"","sources":["../../src/converge/guarded-input-retention.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
2
|
import { link, lstat, mkdir, realpath, unlink } from 'node:fs/promises';
|
|
3
3
|
import { dirname, join, relative, resolve, sep } from 'node:path';
|
|
4
|
+
import { isDeepStrictEqual } from 'node:util';
|
|
4
5
|
import { convergeAttemptStatePath, loadConvergeAttemptState } from './attempt-budget.js';
|
|
5
6
|
import { convergeRunStatePath, loadConvergeRunState } from './run-state.js';
|
|
6
7
|
import { launchSchema } from './launch-record.js';
|
|
7
|
-
import { validateOrdinaryPendingPackage } from './ordinary-pending-package.js';
|
|
8
|
+
import { prepareOrdinaryPendingGuardedInput, validateOrdinaryPendingPackage } from './ordinary-pending-package.js';
|
|
8
9
|
import { MAX_ASYNC_CALLS_PER_ROUND, snapshotAsyncHistory, snapshotAsyncResults } from '../dispatch/async-lane.js';
|
|
9
|
-
import {
|
|
10
|
+
import { sha256Hex } from '../report/run-header.js';
|
|
10
11
|
import { MAX_REPORT_BYTES, readStable } from '../telemetry/recovery/files.js';
|
|
11
|
-
import { serializeRecoveryDocument,
|
|
12
|
+
import { serializeRecoveryDocument, writeExclusiveBytes } from '../evidence/original-run/journal.js';
|
|
12
13
|
import { syncNativeDirectory, writeNativeStateExclusive } from './native-lock.js';
|
|
13
14
|
import { assertReviewCyclePair } from './fresh-review.js';
|
|
14
15
|
// Leave room for the recovery package's retained-async descriptors beneath
|
|
@@ -18,29 +19,46 @@ function retainedInputsPath(options) {
|
|
|
18
19
|
const namespace = sha256Hex(JSON.stringify([options.target, options.cycleId ?? null]));
|
|
19
20
|
return join(options.gitCommonDir, 'rcl-ordinary-inputs', `${namespace}-attempt-${options.attempt}-${options.packetSha256}.json`);
|
|
20
21
|
}
|
|
21
|
-
function retainedInputs(options) {
|
|
22
|
-
|
|
22
|
+
function retainedInputs(options, representation = 'retained', prepared = prepareOrdinaryPendingGuardedInput(options.guardedInput)) {
|
|
23
|
+
// Validate recursive bounds before guardedInputSha256 reaches stableStringify.
|
|
24
|
+
// Version 1 keeps its historical raw wire representation; only version 2
|
|
25
|
+
// stores the validated compact archive.
|
|
26
|
+
return { version: representation === 'raw' ? 1 : 2,
|
|
27
|
+
target: options.target, headSha: options.headSha, baseSha: options.baseSha,
|
|
23
28
|
attempt: options.attempt, round: options.round, ...(options.cycleId ? { cycleId: options.cycleId } : {}),
|
|
24
|
-
inputSha256:
|
|
29
|
+
inputSha256: prepared.inputSha256(),
|
|
30
|
+
guardedInput: representation === 'raw' ? prepared.wireInput : prepared.retained };
|
|
25
31
|
}
|
|
26
32
|
/** Called under native target ownership before spending the claim or dispatching. */
|
|
27
33
|
export async function retainOrdinaryLaunchInputs(options) {
|
|
28
34
|
const common = await realpath(options.gitCommonDir);
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
35
|
+
let packet;
|
|
36
|
+
let bytes;
|
|
37
|
+
try {
|
|
38
|
+
packet = retainedInputs(options);
|
|
39
|
+
bytes = serializeRecoveryDocument(packet, MAX_RETAINED_INPUT_BYTES);
|
|
40
|
+
const descriptors = options.asyncDescriptors ?? [];
|
|
41
|
+
// Recovery repeats the async reviewer identifiers alongside the guarded
|
|
42
|
+
// roster. Bound that actual envelope before claim, including its future
|
|
43
|
+
// fixed-length hashes and the largest permitted PID representation.
|
|
44
|
+
const projectedRecovery = {
|
|
45
|
+
guardedInputRepresentation: { version: 1, encoding: 'json-string-table-v1' },
|
|
46
|
+
target: options.target, headSha: options.headSha, baseSha: options.baseSha ?? 'f'.repeat(40),
|
|
47
|
+
attempt: options.attempt, round: options.round, pid: Number.MAX_SAFE_INTEGER,
|
|
48
|
+
retainedAsyncSha256: descriptors.map(() => 'f'.repeat(64)),
|
|
49
|
+
retainedAsync: descriptors.map(descriptor => ({ model: descriptor.model, role: descriptor.role,
|
|
50
|
+
provider: descriptor.provider, lane: 'async', sha256: 'f'.repeat(64) })),
|
|
51
|
+
guardedInput: packet.guardedInput,
|
|
52
|
+
};
|
|
53
|
+
serializeRecoveryDocument(projectedRecovery, MAX_REPORT_BYTES);
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
if (error instanceof Error && (error.message === 'recovery_document_too_large' ||
|
|
57
|
+
error.message === 'guarded_input_archive_expands_too_large')) {
|
|
58
|
+
throw new Error('retained_review_work_too_large: retained prompts exceed the recovery limit; split the diff or reduce prompt context or the reviewer roster before retrying');
|
|
59
|
+
}
|
|
60
|
+
throw error;
|
|
61
|
+
}
|
|
44
62
|
const packetSha256 = sha256Hex(bytes);
|
|
45
63
|
// A preclaim crash leaves the ordinal unspent. Include the full packet so
|
|
46
64
|
// a changed base (which the guarded-input digest omits) gets its own file.
|
|
@@ -98,14 +116,25 @@ function retainedHistoricalInput(text, options, packetSha256) {
|
|
|
98
116
|
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
99
117
|
refuse('retained_input_mismatch');
|
|
100
118
|
const packet = value;
|
|
101
|
-
|
|
102
|
-
|
|
119
|
+
if (packet.version !== 1 && packet.version !== 2)
|
|
120
|
+
refuse('retained_input_mismatch');
|
|
121
|
+
const compact = packet.guardedInput && typeof packet.guardedInput === 'object' &&
|
|
122
|
+
!Array.isArray(packet.guardedInput) &&
|
|
123
|
+
packet.guardedInput.encoding === 'json-string-table-v1';
|
|
124
|
+
if (compact !== (packet.version === 2))
|
|
125
|
+
refuse('retained_input_mismatch');
|
|
126
|
+
let prepared;
|
|
127
|
+
try {
|
|
128
|
+
prepared = prepareOrdinaryPendingGuardedInput(packet.guardedInput);
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
103
131
|
refuse('retained_input_mismatch');
|
|
104
|
-
|
|
132
|
+
}
|
|
133
|
+
const expected = retainedInputs({ ...options, guardedInput: prepared.input }, packet.version === 1 ? 'raw' : 'retained', prepared);
|
|
105
134
|
if (sha256Hex(text) !== packetSha256 || text !== serializeRecoveryDocument(expected, MAX_RETAINED_INPUT_BYTES)) {
|
|
106
135
|
refuse('retained_input_mismatch');
|
|
107
136
|
}
|
|
108
|
-
return
|
|
137
|
+
return prepared;
|
|
109
138
|
}
|
|
110
139
|
/**
|
|
111
140
|
* Authenticate reconstructed ordinary inputs without locks, claims or native writes.
|
|
@@ -116,6 +145,9 @@ function retainedHistoricalInput(text, options, packetSha256) {
|
|
|
116
145
|
export async function exportOrdinaryPendingPackage(options) {
|
|
117
146
|
if (!/^[a-f0-9]{40}$/.test(options.baseSha) || options.baseSha !== options.expectedBaseSha)
|
|
118
147
|
refuse('base_mismatch');
|
|
148
|
+
// Current caller input participates in hashes and canonical comparisons
|
|
149
|
+
// below, so bound its recursion before either operation.
|
|
150
|
+
const currentInput = prepareOrdinaryPendingGuardedInput(options.guardedInput);
|
|
119
151
|
const common = await realpath(options.gitCommonDir);
|
|
120
152
|
const outputPath = resolve(options.path);
|
|
121
153
|
const outputParent = await realpath(dirname(outputPath));
|
|
@@ -138,7 +170,7 @@ export async function exportOrdinaryPendingPackage(options) {
|
|
|
138
170
|
launch.pendingRecovery || !record || record.pid !== launch.pid || record.retrySource ||
|
|
139
171
|
record.boundFixRecoverySource || record.pendingRecoverySource ||
|
|
140
172
|
launch.attempt !== attempts.attemptsUsed || launch.headSha !== options.headSha ||
|
|
141
|
-
(!cycleBacked && launch.inputSha256 !==
|
|
173
|
+
(!cycleBacked && launch.inputSha256 !== currentInput.inputSha256()) ||
|
|
142
174
|
(options.expectedRound !== undefined && launch.round !== options.expectedRound))
|
|
143
175
|
refuse('input_mismatch');
|
|
144
176
|
if (ownerAlive(launch.pid))
|
|
@@ -155,24 +187,23 @@ export async function exportOrdinaryPendingPackage(options) {
|
|
|
155
187
|
const retainedBefore = retainedPath ? await readStable(retainedPath, MAX_RETAINED_INPUT_BYTES) : undefined;
|
|
156
188
|
if (binding && (!retainedBefore || retainedBefore.sha256 !== binding.packetSha256))
|
|
157
189
|
refuse('retained_input_mismatch');
|
|
158
|
-
|
|
159
|
-
gitCommonDir: common, target: options.target, headSha: launch.headSha, baseSha: options.baseSha,
|
|
160
|
-
attempt: launch.attempt, round: launch.round, guardedInput: options.guardedInput,
|
|
161
|
-
}), MAX_RETAINED_INPUT_BYTES))
|
|
162
|
-
refuse('retained_input_mismatch');
|
|
163
|
-
const historicalInput = binding && cycleBacked ? retainedHistoricalInput(retainedBefore.text, {
|
|
190
|
+
const historicalInput = binding ? retainedHistoricalInput(retainedBefore.text, {
|
|
164
191
|
gitCommonDir: common, target: options.target, headSha: launch.headSha, baseSha: options.baseSha,
|
|
165
192
|
attempt: launch.attempt, round: launch.round, ...(state.cycle ? { cycleId: state.cycle.id } : {}),
|
|
166
193
|
guardedInput: options.guardedInput,
|
|
167
|
-
}, binding.packetSha256) :
|
|
168
|
-
if (
|
|
194
|
+
}, binding.packetSha256) : currentInput;
|
|
195
|
+
if (binding && !cycleBacked &&
|
|
196
|
+
!isDeepStrictEqual(historicalInput.retained, currentInput.retained)) {
|
|
197
|
+
refuse('retained_input_mismatch');
|
|
198
|
+
}
|
|
199
|
+
if (launch.inputSha256 !== historicalInput.inputSha256())
|
|
169
200
|
refuse('input_mismatch');
|
|
170
201
|
const snapshot = cycleBacked
|
|
171
202
|
? await snapshotAsyncHistory(options.asyncStoreDir, options.asyncTargetKey, Math.max(MAX_ASYNC_CALLS_PER_ROUND, (attempts.attemptsUsed + 1) * MAX_ASYNC_CALLS_PER_ROUND))
|
|
172
203
|
: await snapshotAsyncResults(options.asyncStoreDir, options.asyncTargetKey);
|
|
173
204
|
const identity = (item) => JSON.stringify([item.model, item.role, item.provider]);
|
|
174
|
-
const historicalRoster = Array.isArray(historicalInput.roster)
|
|
175
|
-
? historicalInput.roster.filter(item => item && typeof item === 'object' &&
|
|
205
|
+
const historicalRoster = Array.isArray(historicalInput.input.roster)
|
|
206
|
+
? historicalInput.input.roster.filter(item => item && typeof item === 'object' &&
|
|
176
207
|
item.lane === 'async')
|
|
177
208
|
: [];
|
|
178
209
|
const expected = (cycleBacked ? historicalRoster : options.asyncDescriptors).map(identity).sort();
|
|
@@ -187,15 +218,18 @@ export async function exportOrdinaryPendingPackage(options) {
|
|
|
187
218
|
provider: review.provider, lane: 'async',
|
|
188
219
|
}));
|
|
189
220
|
const retainedAsyncSha256 = retainedAsync.map(item => item.sha256).sort();
|
|
190
|
-
const candidate = {
|
|
221
|
+
const candidate = {
|
|
222
|
+
guardedInputRepresentation: { version: 1, encoding: 'json-string-table-v1' },
|
|
223
|
+
...(cycleBacked ? { version: 2, cycle: state.cycle,
|
|
191
224
|
attemptCap: attempts.cap, roundCap: state.roundCap, attemptsUsed: attempts.attemptsUsed,
|
|
192
225
|
asyncAttribution: 'cycle-history-unattributed' } : {}),
|
|
193
226
|
target: options.target, headSha: launch.headSha,
|
|
194
227
|
baseSha: options.baseSha, attempt: launch.attempt, round: launch.round, pid: launch.pid,
|
|
195
|
-
retainedAsyncSha256, retainedAsync, guardedInput: historicalInput
|
|
228
|
+
retainedAsyncSha256, retainedAsync, guardedInput: historicalInput.retained
|
|
229
|
+
};
|
|
196
230
|
// Canonical JSON drops undefined optional properties exactly as the original
|
|
197
231
|
// guarded-input hash did; it never adds an artificial null spec binding.
|
|
198
|
-
const packet = validateOrdinaryPendingPackage(
|
|
232
|
+
const packet = validateOrdinaryPendingPackage(candidate, { ...candidate, inputSha256: launch.inputSha256 }, historicalInput);
|
|
199
233
|
const [nativeAfter, attemptsAfter, asyncAfter] = await Promise.all([
|
|
200
234
|
readStable(nativePath), readStable(attemptPath),
|
|
201
235
|
cycleBacked
|
|
@@ -209,7 +243,7 @@ export async function exportOrdinaryPendingPackage(options) {
|
|
|
209
243
|
refuse('state_changed');
|
|
210
244
|
const bytes = serializeRecoveryDocument(packet, MAX_REPORT_BYTES);
|
|
211
245
|
if (!options.preview)
|
|
212
|
-
await
|
|
246
|
+
await writeExclusiveBytes(outputPath, bytes);
|
|
213
247
|
return { mode: options.preview ? 'pending-package-preview' : 'pending-package-export', path: outputPath,
|
|
214
248
|
packageSha256: sha256Hex(bytes), target: options.target, headSha: launch.headSha, baseSha: options.baseSha,
|
|
215
249
|
baseBinding: retainedBefore ? 'retained-launch-inputs' : 'current-review-target', blockingOutcome: 'unknown',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ordinary-pending-export.js","sourceRoot":"","sources":["../../src/converge/ordinary-pending-export.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ordinary-pending-export.js","sourceRoot":"","sources":["../../src/converge/ordinary-pending-export.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import type { NativeReviewCycle } from './review-cycle.js';
|
|
2
|
+
import { type RetainedGuardedInput, type StoredGuardedInput } from './guarded-input-retention.js';
|
|
2
3
|
export interface OrdinaryPendingPackage {
|
|
3
4
|
version?: 2;
|
|
5
|
+
guardedInputRepresentation?: {
|
|
6
|
+
version: 1;
|
|
7
|
+
encoding: 'json-string-table-v1';
|
|
8
|
+
};
|
|
4
9
|
target: string;
|
|
5
10
|
headSha: string;
|
|
6
11
|
baseSha: string;
|
|
@@ -20,7 +25,7 @@ export interface OrdinaryPendingPackage {
|
|
|
20
25
|
provider: string;
|
|
21
26
|
lane: 'async';
|
|
22
27
|
}[];
|
|
23
|
-
guardedInput:
|
|
28
|
+
guardedInput: StoredGuardedInput;
|
|
24
29
|
}
|
|
25
30
|
export interface PendingLaunchIdentity {
|
|
26
31
|
target: string;
|
|
@@ -36,4 +41,13 @@ export interface PendingLaunchIdentity {
|
|
|
36
41
|
roundCap?: number;
|
|
37
42
|
attemptsUsed?: number;
|
|
38
43
|
}
|
|
39
|
-
export
|
|
44
|
+
export interface PreparedOrdinaryPendingGuardedInput {
|
|
45
|
+
readonly wireInput: Record<string, unknown>;
|
|
46
|
+
readonly input: Record<string, unknown>;
|
|
47
|
+
readonly retained: RetainedGuardedInput;
|
|
48
|
+
inputSha256(): string;
|
|
49
|
+
}
|
|
50
|
+
/** Prepare one bounded canonical archive and lazily memoized digest for trusted internal reuse. */
|
|
51
|
+
export declare function prepareOrdinaryPendingGuardedInput(stored: StoredGuardedInput): PreparedOrdinaryPendingGuardedInput;
|
|
52
|
+
export declare function ordinaryPendingGuardedInput(value: OrdinaryPendingPackage): Record<string, unknown>;
|
|
53
|
+
export declare function validateOrdinaryPendingPackage(value: OrdinaryPendingPackage, expected: PendingLaunchIdentity, prepared?: PreparedOrdinaryPendingGuardedInput): OrdinaryPendingPackage;
|
|
@@ -1,7 +1,77 @@
|
|
|
1
1
|
import { guardedInputSha256, stableStringify } from '../report/run-header.js';
|
|
2
2
|
import { isDeepStrictEqual } from 'node:util';
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
import { retainGuardedInput, restoreGuardedInput } from './guarded-input-retention.js';
|
|
4
|
+
const preparedInputs = new WeakSet();
|
|
5
|
+
const deeplyFrozen = new WeakSet();
|
|
6
|
+
function deepFreezeJson(value) {
|
|
7
|
+
if (!value || typeof value !== 'object' || deeplyFrozen.has(value))
|
|
8
|
+
return value;
|
|
9
|
+
for (const child of Object.values(value))
|
|
10
|
+
deepFreezeJson(child);
|
|
11
|
+
Object.freeze(value);
|
|
12
|
+
deeplyFrozen.add(value);
|
|
13
|
+
return value;
|
|
14
|
+
}
|
|
15
|
+
/** Prepare one bounded canonical archive and lazily memoized digest for trusted internal reuse. */
|
|
16
|
+
export function prepareOrdinaryPendingGuardedInput(stored) {
|
|
17
|
+
const compact = !!stored && typeof stored === 'object' && !Array.isArray(stored) &&
|
|
18
|
+
stored.encoding === 'json-string-table-v1';
|
|
19
|
+
let input;
|
|
20
|
+
let wireInput;
|
|
21
|
+
let retained;
|
|
22
|
+
if (compact) {
|
|
23
|
+
input = deepFreezeJson(restoreGuardedInput(stored));
|
|
24
|
+
wireInput = input;
|
|
25
|
+
retained = deepFreezeJson({ version: 1, encoding: 'json-string-table-v1',
|
|
26
|
+
strings: stored.strings,
|
|
27
|
+
root: stored.root });
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
wireInput = stored;
|
|
31
|
+
// This single encoder pass both validates raw recursive bounds and creates
|
|
32
|
+
// the immutable wire archive. Canonical expansion stays lazy for retention
|
|
33
|
+
// paths that only need the archive, exact raw bytes and digest.
|
|
34
|
+
retained = deepFreezeJson(retainGuardedInput(wireInput));
|
|
35
|
+
}
|
|
36
|
+
const digest = guardedInputSha256(input ?? wireInput);
|
|
37
|
+
const prepared = Object.freeze({ wireInput, retained,
|
|
38
|
+
get input() {
|
|
39
|
+
return input ??= deepFreezeJson(restoreGuardedInput(retained));
|
|
40
|
+
},
|
|
41
|
+
inputSha256: () => digest });
|
|
42
|
+
preparedInputs.add(prepared);
|
|
43
|
+
return prepared;
|
|
44
|
+
}
|
|
45
|
+
function validateGuardedInputRepresentation(value) {
|
|
46
|
+
const representation = value?.guardedInputRepresentation;
|
|
47
|
+
const compact = !!value?.guardedInput &&
|
|
48
|
+
value.guardedInput.encoding === 'json-string-table-v1';
|
|
49
|
+
const representationValid = representation === undefined
|
|
50
|
+
? !compact
|
|
51
|
+
: !!representation && typeof representation === 'object' && !Array.isArray(representation) &&
|
|
52
|
+
representation.version === 1 && representation.encoding === 'json-string-table-v1' &&
|
|
53
|
+
Object.keys(representation).sort().join(',') === 'encoding,version' && compact;
|
|
54
|
+
if (!representationValid)
|
|
55
|
+
throw new Error('ordinary_pending_package_mismatch');
|
|
56
|
+
}
|
|
57
|
+
export function ordinaryPendingGuardedInput(value) {
|
|
58
|
+
validateGuardedInputRepresentation(value);
|
|
59
|
+
return restoreGuardedInput(value.guardedInput);
|
|
60
|
+
}
|
|
61
|
+
export function validateOrdinaryPendingPackage(value, expected, prepared) {
|
|
62
|
+
let input;
|
|
63
|
+
try {
|
|
64
|
+
if (value)
|
|
65
|
+
validateGuardedInputRepresentation(value);
|
|
66
|
+
if (prepared !== undefined &&
|
|
67
|
+
(!preparedInputs.has(prepared) || value?.guardedInput !== prepared.retained)) {
|
|
68
|
+
throw new Error('ordinary_pending_package_mismatch');
|
|
69
|
+
}
|
|
70
|
+
input = value ? prepared?.input ?? restoreGuardedInput(value.guardedInput) : undefined;
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
throw new Error('ordinary_pending_package_mismatch');
|
|
74
|
+
}
|
|
5
75
|
const specPresent = !!input && Object.hasOwn(input, 'spec');
|
|
6
76
|
const keys = ['asyncRoles', 'config', 'diff', 'head', 'kind', 'pr', 'prompts', 'repo', 'roster',
|
|
7
77
|
...(specPresent ? ['spec'] : [])];
|
|
@@ -27,7 +97,8 @@ export function validateOrdinaryPendingPackage(value, expected) {
|
|
|
27
97
|
if (!value || !cycleFieldsValid || value.target !== expected.target || value.headSha !== expected.headSha || value.baseSha !== expected.baseSha || value.attempt !== expected.attempt || value.round !== expected.round || value.pid !== expected.pid || !/^[a-f0-9]{40}$/.test(value.baseSha) ||
|
|
28
98
|
!Number.isSafeInteger(value.attempt) || value.attempt < 1 || !Number.isSafeInteger(value.round) || value.round < 1 ||
|
|
29
99
|
!Number.isSafeInteger(value.pid) || value.pid < 1 || !input || Object.keys(input).sort().join(',') !== keys.join(',') ||
|
|
30
|
-
!Array.isArray(value.retainedAsyncSha256) || [...value.retainedAsyncSha256].sort().join(',') !== [...expected.retainedAsyncSha256].sort().join(',') || input.head !== value.headSha ||
|
|
100
|
+
!Array.isArray(value.retainedAsyncSha256) || [...value.retainedAsyncSha256].sort().join(',') !== [...expected.retainedAsyncSha256].sort().join(',') || input.head !== value.headSha ||
|
|
101
|
+
(prepared ? prepared.inputSha256() : guardedInputSha256(input)) !== expected.inputSha256)
|
|
31
102
|
throw new Error('ordinary_pending_package_mismatch');
|
|
32
103
|
const cycleHistory = value.version === 2;
|
|
33
104
|
const descriptorHashes = Array.isArray(value.retainedAsync)
|
|
@@ -45,6 +116,8 @@ export function validateOrdinaryPendingPackage(value, expected) {
|
|
|
45
116
|
!input.roster.some(seat => seat?.model === item.model &&
|
|
46
117
|
seat.role === item.role && seat.provider === item.provider && seat.lane === 'async')))
|
|
47
118
|
throw new Error('ordinary_pending_package_mismatch');
|
|
48
|
-
return
|
|
119
|
+
return prepared
|
|
120
|
+
? deepFreezeJson(value)
|
|
121
|
+
: Object.freeze(JSON.parse(stableStringify(value)));
|
|
49
122
|
}
|
|
50
123
|
//# sourceMappingURL=ordinary-pending-package.js.map
|