instar 1.3.866 → 1.3.867
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/core/AutonomousRunStore.d.ts +7 -1
- package/dist/core/AutonomousRunStore.d.ts.map +1 -1
- package/dist/core/AutonomousRunStore.js +70 -7
- package/dist/core/AutonomousRunStore.js.map +1 -1
- package/dist/core/StandingDriveSchema.d.ts +104 -0
- package/dist/core/StandingDriveSchema.d.ts.map +1 -0
- package/dist/core/StandingDriveSchema.js +170 -0
- package/dist/core/StandingDriveSchema.js.map +1 -0
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +2 -2
- package/upgrades/1.3.867.md +23 -0
- package/upgrades/side-effects/standing-drive-slice1.md +99 -0
- package/upgrades/standing-drive-slice1.eli16.md +11 -0
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
* re-register for a topic is refused while the existing record is non-terminal
|
|
21
21
|
* AND unexpired; otherwise the old record is lazily archived.
|
|
22
22
|
*/
|
|
23
|
+
import { type StandingDriveExtensionV1 } from './StandingDriveSchema.js';
|
|
23
24
|
/** Snapshot of the scopeAccretion config sub-object taken at registration (R13). */
|
|
24
25
|
export interface ScopeAccretionSnapshot {
|
|
25
26
|
enabled: boolean;
|
|
@@ -133,6 +134,8 @@ export interface AutonomousRunRecord {
|
|
|
133
134
|
lastStopRationaleCorrelationId?: string;
|
|
134
135
|
/** ISO timestamp of the `lastStopRationaleCorrelationId` write. */
|
|
135
136
|
lastStopRationaleCorrelationAt?: string;
|
|
137
|
+
/** Optional StandingDrive composition extension. Absent preserves plain-run behavior. */
|
|
138
|
+
standingDrive?: StandingDriveExtensionV1;
|
|
136
139
|
}
|
|
137
140
|
/** Which enrolled completion decision point a correlation id belongs to (§5.3).
|
|
138
141
|
* Structurally identical to CompletionEvaluator's CompletionDecisionKind —
|
|
@@ -169,6 +172,7 @@ export declare class AutonomousRunStore {
|
|
|
169
172
|
get storeDir(): string;
|
|
170
173
|
private recordPath;
|
|
171
174
|
private writeRecord;
|
|
175
|
+
private withRunLock;
|
|
172
176
|
private readRecordFile;
|
|
173
177
|
/** All records for a topic (non-archived files). */
|
|
174
178
|
private recordFilesForTopic;
|
|
@@ -181,8 +185,10 @@ export declare class AutonomousRunStore {
|
|
|
181
185
|
/** Every currently-active registered run on this server (R35 arming). */
|
|
182
186
|
listActive(now?: number): AutonomousRunRecord[];
|
|
183
187
|
register(input: RegisterRunInput, now?: number): RegisterRunResult;
|
|
184
|
-
/** Load-modify-save
|
|
188
|
+
/** Load-modify-save serialized with StandingDrive writers; generic updates may not mutate the extension. */
|
|
185
189
|
update(topicId: string, runId: string, mutate: (rec: AutonomousRunRecord) => void): AutonomousRunRecord | null;
|
|
190
|
+
enrollStandingDrive(topicId: string, runId: string, extension: StandingDriveExtensionV1): AutonomousRunRecord;
|
|
191
|
+
mutateStandingDrive(topicId: string, runId: string, expectedRevision: number, mutate: (extension: StandingDriveExtensionV1) => StandingDriveExtensionV1): AutonomousRunRecord;
|
|
186
192
|
markTerminal(topicId: string, runId: string, status: 'met' | 'ended' | 'expired', reason?: string): AutonomousRunRecord | null;
|
|
187
193
|
private archive;
|
|
188
194
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutonomousRunStore.d.ts","sourceRoot":"","sources":["../../src/core/AutonomousRunStore.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"AutonomousRunStore.d.ts","sourceRoot":"","sources":["../../src/core/AutonomousRunStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,8 @@
|
|
|
23
23
|
import * as fs from 'fs';
|
|
24
24
|
import * as path from 'path';
|
|
25
25
|
import { createHash, randomBytes } from 'crypto';
|
|
26
|
+
import lockfile from 'proper-lockfile';
|
|
27
|
+
import { validateStandingDriveExtensionV1 } from './StandingDriveSchema.js';
|
|
26
28
|
/** Correlation ids are seam-minted (`d-`/`b-` prefix + uuid, optionally a
|
|
27
29
|
* machineId8 segment) — anything outside this shape is refused at the write
|
|
28
30
|
* (ids arrive via callback plumbing, so jail them like the filename ids). */
|
|
@@ -63,6 +65,28 @@ export class AutonomousRunStore {
|
|
|
63
65
|
fs.writeFileSync(tmp, JSON.stringify(rec, null, 2));
|
|
64
66
|
fs.renameSync(tmp, file);
|
|
65
67
|
}
|
|
68
|
+
withRunLock(topicId, runId, fn) {
|
|
69
|
+
const target = this.recordPath(topicId, runId);
|
|
70
|
+
if (!fs.existsSync(target))
|
|
71
|
+
return fn();
|
|
72
|
+
let release;
|
|
73
|
+
try {
|
|
74
|
+
release = lockfile.lockSync(target, { stale: 10_000, realpath: false });
|
|
75
|
+
return fn();
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
if (error instanceof Error && (error.code === 'ELOCKED' || error.message.includes('ELOCKED'))) {
|
|
79
|
+
throw new Error('standing-drive-mutation-busy');
|
|
80
|
+
}
|
|
81
|
+
throw error;
|
|
82
|
+
}
|
|
83
|
+
finally {
|
|
84
|
+
try {
|
|
85
|
+
release?.();
|
|
86
|
+
}
|
|
87
|
+
catch { /* stale detection recovers a crash-left lock */ }
|
|
88
|
+
}
|
|
89
|
+
}
|
|
66
90
|
readRecordFile(file) {
|
|
67
91
|
try {
|
|
68
92
|
const parsed = JSON.parse(fs.readFileSync(file, 'utf8'));
|
|
@@ -204,14 +228,53 @@ export class AutonomousRunStore {
|
|
|
204
228
|
this.mapSession(input.sessionId, rec.topicId, runId);
|
|
205
229
|
return { ok: true, runId, endAt, clamped };
|
|
206
230
|
}
|
|
207
|
-
/** Load-modify-save
|
|
231
|
+
/** Load-modify-save serialized with StandingDrive writers; generic updates may not mutate the extension. */
|
|
208
232
|
update(topicId, runId, mutate) {
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
233
|
+
return this.withRunLock(topicId, runId, () => {
|
|
234
|
+
const rec = this.getByPair(topicId, runId);
|
|
235
|
+
if (!rec)
|
|
236
|
+
return null;
|
|
237
|
+
const standingDriveBefore = rec.standingDrive === undefined ? undefined : JSON.stringify(rec.standingDrive);
|
|
238
|
+
mutate(rec);
|
|
239
|
+
const standingDriveAfter = rec.standingDrive === undefined ? undefined : JSON.stringify(rec.standingDrive);
|
|
240
|
+
if (standingDriveAfter !== standingDriveBefore)
|
|
241
|
+
throw new Error('standing-drive-mutation-requires-cas');
|
|
242
|
+
this.writeRecord(rec);
|
|
243
|
+
return rec;
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
enrollStandingDrive(topicId, runId, extension) {
|
|
247
|
+
return this.withRunLock(topicId, runId, () => {
|
|
248
|
+
const rec = this.getByPair(topicId, runId);
|
|
249
|
+
if (!rec)
|
|
250
|
+
throw new Error('standing-drive-run-not-found');
|
|
251
|
+
if (rec.standingDrive)
|
|
252
|
+
throw new Error('standing-drive-already-enrolled');
|
|
253
|
+
if (!validateStandingDriveExtensionV1(extension, String(topicId)))
|
|
254
|
+
throw new Error('standing-drive-invalid-extension');
|
|
255
|
+
rec.standingDrive = structuredClone(extension);
|
|
256
|
+
this.writeRecord(rec);
|
|
257
|
+
return rec;
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
mutateStandingDrive(topicId, runId, expectedRevision, mutate) {
|
|
261
|
+
return this.withRunLock(topicId, runId, () => {
|
|
262
|
+
const rec = this.getByPair(topicId, runId);
|
|
263
|
+
if (!rec?.standingDrive)
|
|
264
|
+
throw new Error('standing-drive-not-enrolled');
|
|
265
|
+
if (!validateStandingDriveExtensionV1(rec.standingDrive, String(topicId)))
|
|
266
|
+
throw new Error('standing-drive-corrupt');
|
|
267
|
+
if (rec.standingDrive.revision !== expectedRevision)
|
|
268
|
+
throw new Error('standing-drive-revision-conflict');
|
|
269
|
+
const next = mutate(structuredClone(rec.standingDrive));
|
|
270
|
+
if (next.revision !== expectedRevision + 1)
|
|
271
|
+
throw new Error('standing-drive-revision-not-bumped');
|
|
272
|
+
if (!validateStandingDriveExtensionV1(next, String(topicId)))
|
|
273
|
+
throw new Error('standing-drive-invalid-extension');
|
|
274
|
+
rec.standingDrive = next;
|
|
275
|
+
this.writeRecord(rec);
|
|
276
|
+
return rec;
|
|
277
|
+
});
|
|
215
278
|
}
|
|
216
279
|
markTerminal(topicId, runId, status, reason) {
|
|
217
280
|
return this.update(topicId, runId, (rec) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutonomousRunStore.js","sourceRoot":"","sources":["../../src/core/AutonomousRunStore.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AutonomousRunStore.js","sourceRoot":"","sources":["../../src/core/AutonomousRunStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
export declare const STANDING_DRIVE_SCHEMA_VERSION: 1;
|
|
2
|
+
export type StandingDriveSource = 'telegram' | 'local-operator';
|
|
3
|
+
export type StandingDriveDisposition = 'active' | 'stopped' | 'abandoned' | 'superseded';
|
|
4
|
+
export type StandingDriveActionDomain = 'git' | 'external-operation' | 'message-review' | 'local-read-test' | 'operator-transition';
|
|
5
|
+
export interface StandingDriveAuthorityV1 {
|
|
6
|
+
source: StandingDriveSource;
|
|
7
|
+
verifiedEventId: string;
|
|
8
|
+
operatorPrincipalHash: string;
|
|
9
|
+
topicBindingDigest: string;
|
|
10
|
+
projectBindingDigest: string;
|
|
11
|
+
authorizedAt: string;
|
|
12
|
+
}
|
|
13
|
+
export interface FrozenActionRuleV1 {
|
|
14
|
+
id: string;
|
|
15
|
+
domain: StandingDriveActionDomain;
|
|
16
|
+
operation: string;
|
|
17
|
+
targets: string[];
|
|
18
|
+
constraints?: Record<string, string | string[] | boolean>;
|
|
19
|
+
}
|
|
20
|
+
export interface FrozenPhaseV1 {
|
|
21
|
+
id: string;
|
|
22
|
+
domain: StandingDriveActionDomain;
|
|
23
|
+
criterionIds: string[];
|
|
24
|
+
actionRuleIds: string[];
|
|
25
|
+
}
|
|
26
|
+
export interface FrozenCriterionV1 {
|
|
27
|
+
id: string;
|
|
28
|
+
kind: string;
|
|
29
|
+
}
|
|
30
|
+
export interface StandingDriveEnvelopeV1 {
|
|
31
|
+
digest: string;
|
|
32
|
+
phases: FrozenPhaseV1[];
|
|
33
|
+
acceptanceCriteria: FrozenCriterionV1[];
|
|
34
|
+
allowedActions: FrozenActionRuleV1[];
|
|
35
|
+
}
|
|
36
|
+
export interface StandingDriveExtensionV1 {
|
|
37
|
+
schemaVersion: typeof STANDING_DRIVE_SCHEMA_VERSION;
|
|
38
|
+
requestDigest: string;
|
|
39
|
+
creationKey: string;
|
|
40
|
+
authority: StandingDriveAuthorityV1;
|
|
41
|
+
envelope: StandingDriveEnvelopeV1;
|
|
42
|
+
cursor: {
|
|
43
|
+
phaseId: string;
|
|
44
|
+
state: 'pending' | 'active' | 'completed';
|
|
45
|
+
};
|
|
46
|
+
disposition: {
|
|
47
|
+
state: StandingDriveDisposition;
|
|
48
|
+
at?: string;
|
|
49
|
+
reasonCode?: string;
|
|
50
|
+
supersededByRunId?: string;
|
|
51
|
+
};
|
|
52
|
+
commitmentRef?: string;
|
|
53
|
+
semanticProgress: {
|
|
54
|
+
fingerprint: string;
|
|
55
|
+
lastProgressAt: string;
|
|
56
|
+
version: number;
|
|
57
|
+
};
|
|
58
|
+
breaker: {
|
|
59
|
+
state: 'closed' | 'tripped';
|
|
60
|
+
consecutiveNoProgress: number;
|
|
61
|
+
trippedAt?: string;
|
|
62
|
+
rearmBasis?: 'operator-transition' | 'semantic-progress';
|
|
63
|
+
};
|
|
64
|
+
revision: number;
|
|
65
|
+
}
|
|
66
|
+
export type StandingDriveActionRequest = {
|
|
67
|
+
domain: StandingDriveActionDomain;
|
|
68
|
+
operation: string;
|
|
69
|
+
target: string;
|
|
70
|
+
constraints?: Record<string, string | string[] | boolean>;
|
|
71
|
+
};
|
|
72
|
+
export type StandingDriveActionDecision = 'allow' | 'hold:not-enumerated' | 'hold:phase-mismatch' | 'hold:constraint-mismatch' | 'hold:ineligible-extension' | 'hold:corrupt';
|
|
73
|
+
export declare function canonicalizeCreationKey(topicId: string, source: StandingDriveSource, verifiedEventId: string, requestDigest: string): string;
|
|
74
|
+
export declare function computeCreationKey(topicId: string, authority: Pick<StandingDriveAuthorityV1, 'source' | 'verifiedEventId'>, requestDigest: string): string;
|
|
75
|
+
export declare function canonicalizeEnvelope(input: Omit<StandingDriveEnvelopeV1, 'digest'>): string;
|
|
76
|
+
export declare function computeEnvelopeDigest(input: Omit<StandingDriveEnvelopeV1, 'digest'>): string;
|
|
77
|
+
export declare function computeSemanticFingerprint(input: {
|
|
78
|
+
phaseStates: Array<{
|
|
79
|
+
id: string;
|
|
80
|
+
state: string;
|
|
81
|
+
}>;
|
|
82
|
+
evidenceIds: string[];
|
|
83
|
+
closedDefectIds: string[];
|
|
84
|
+
blockState: string;
|
|
85
|
+
}): string;
|
|
86
|
+
export declare function validateStandingDriveExtensionV1(value: unknown, topicId?: string): value is StandingDriveExtensionV1;
|
|
87
|
+
/** Scope membership only; effects must also compose aliveness, breaker eligibility, and authority rebind. */
|
|
88
|
+
export declare function deriveActionDecision(extension: unknown, phaseId: string, request: StandingDriveActionRequest): StandingDriveActionDecision;
|
|
89
|
+
export declare function checkAuthorityRebind(extension: unknown, current: {
|
|
90
|
+
operatorPrincipalHash: string;
|
|
91
|
+
topicBindingDigest: string;
|
|
92
|
+
projectBindingDigest: string;
|
|
93
|
+
}): boolean;
|
|
94
|
+
export declare function readBreakerEligibility(extension: unknown): {
|
|
95
|
+
eligible: boolean;
|
|
96
|
+
reason: string;
|
|
97
|
+
};
|
|
98
|
+
export declare function isStandingDriveAlive(extension: unknown): boolean;
|
|
99
|
+
export declare function applyDispositionTransition(extension: StandingDriveExtensionV1, next: StandingDriveDisposition, verifiedAuthority: boolean, at: string): StandingDriveExtensionV1;
|
|
100
|
+
export declare function composeStopDecision(sources: Array<boolean | 'unreadable'>): {
|
|
101
|
+
stopped: boolean;
|
|
102
|
+
reason: string;
|
|
103
|
+
};
|
|
104
|
+
//# sourceMappingURL=StandingDriveSchema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StandingDriveSchema.d.ts","sourceRoot":"","sources":["../../src/core/StandingDriveSchema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
export const STANDING_DRIVE_SCHEMA_VERSION = 1;
|
|
3
|
+
const HEX_64 = /^[a-f0-9]{64}$/;
|
|
4
|
+
const ID = /^[A-Za-z0-9._:-]{1,160}$/;
|
|
5
|
+
const MAX_PHASES = 64;
|
|
6
|
+
const MAX_RULES = 256;
|
|
7
|
+
const MAX_CRITERIA = 256;
|
|
8
|
+
const ACTION_DOMAINS = ['git', 'external-operation', 'message-review', 'local-read-test', 'operator-transition'];
|
|
9
|
+
const boundedText = (value, max = 500) => typeof value === 'string' && value.length > 0 && value.length <= max && !/[\r\n\0]/.test(value);
|
|
10
|
+
const canonicalIso = (value) => {
|
|
11
|
+
if (typeof value !== 'string')
|
|
12
|
+
return false;
|
|
13
|
+
const timestamp = Date.parse(value);
|
|
14
|
+
return Number.isFinite(timestamp) && new Date(timestamp).toISOString() === value;
|
|
15
|
+
};
|
|
16
|
+
const uniqueStrings = (values, max) => values.length <= max && values.every((value) => typeof value === 'string' && ID.test(value)) && new Set(values).size === values.length;
|
|
17
|
+
const validConstraints = (value) => {
|
|
18
|
+
if (value === undefined)
|
|
19
|
+
return true;
|
|
20
|
+
if (!value || typeof value !== 'object' || Array.isArray(value) || Object.keys(value).length > 64)
|
|
21
|
+
return false;
|
|
22
|
+
return Object.entries(value).every(([key, v]) => ID.test(key) && (typeof v === 'boolean' || boundedText(v) || (Array.isArray(v) && v.length <= 64 && v.every((item) => boundedText(item)))));
|
|
23
|
+
};
|
|
24
|
+
const hash = (input) => createHash('sha256').update(input).digest('hex');
|
|
25
|
+
const codeUnitCompare = (a, b) => a < b ? -1 : a > b ? 1 : 0;
|
|
26
|
+
const orderedObject = (value) => Object.entries(value ?? {}).sort(([a], [b]) => codeUnitCompare(a, b)).map(([k, v]) => [k, Array.isArray(v) ? [...v].sort(codeUnitCompare) : v]);
|
|
27
|
+
export function canonicalizeCreationKey(topicId, source, verifiedEventId, requestDigest) {
|
|
28
|
+
return JSON.stringify(['standing-drive-creation-v1', topicId, source, verifiedEventId, requestDigest]);
|
|
29
|
+
}
|
|
30
|
+
export function computeCreationKey(topicId, authority, requestDigest) {
|
|
31
|
+
return hash(canonicalizeCreationKey(topicId, authority.source, authority.verifiedEventId, requestDigest));
|
|
32
|
+
}
|
|
33
|
+
export function canonicalizeEnvelope(input) {
|
|
34
|
+
const phases = [...input.phases].sort((a, b) => codeUnitCompare(a.id, b.id)).map((p) => [p.id, p.domain, [...p.criterionIds].sort(codeUnitCompare), [...p.actionRuleIds].sort(codeUnitCompare)]);
|
|
35
|
+
const criteria = [...input.acceptanceCriteria].sort((a, b) => codeUnitCompare(a.id, b.id)).map((c) => [c.id, c.kind]);
|
|
36
|
+
const rules = [...input.allowedActions].sort((a, b) => codeUnitCompare(a.id, b.id)).map((r) => [r.id, r.domain, r.operation, [...r.targets].sort(codeUnitCompare), orderedObject(r.constraints)]);
|
|
37
|
+
return JSON.stringify(['standing-drive-envelope-v1', phases, criteria, rules]);
|
|
38
|
+
}
|
|
39
|
+
export function computeEnvelopeDigest(input) {
|
|
40
|
+
return hash(canonicalizeEnvelope(input));
|
|
41
|
+
}
|
|
42
|
+
export function computeSemanticFingerprint(input) {
|
|
43
|
+
return hash(JSON.stringify(['standing-drive-progress-v1',
|
|
44
|
+
[...input.phaseStates].sort((a, b) => codeUnitCompare(a.id, b.id)).map((p) => [p.id, p.state]),
|
|
45
|
+
[...input.evidenceIds].sort(codeUnitCompare), [...input.closedDefectIds].sort(codeUnitCompare), input.blockState,
|
|
46
|
+
]));
|
|
47
|
+
}
|
|
48
|
+
export function validateStandingDriveExtensionV1(value, topicId) {
|
|
49
|
+
try {
|
|
50
|
+
if (!value || typeof value !== 'object')
|
|
51
|
+
return false;
|
|
52
|
+
const v = value;
|
|
53
|
+
if (v.schemaVersion !== 1 || !HEX_64.test(v.requestDigest) || !HEX_64.test(v.creationKey))
|
|
54
|
+
return false;
|
|
55
|
+
if (!v.authority || !['telegram', 'local-operator'].includes(v.authority.source) || !ID.test(v.authority.verifiedEventId))
|
|
56
|
+
return false;
|
|
57
|
+
if (![v.authority.operatorPrincipalHash, v.authority.topicBindingDigest, v.authority.projectBindingDigest].every((x) => HEX_64.test(x)))
|
|
58
|
+
return false;
|
|
59
|
+
if (!canonicalIso(v.authority.authorizedAt))
|
|
60
|
+
return false;
|
|
61
|
+
const e = v.envelope;
|
|
62
|
+
if (!e || !Array.isArray(e.phases) || !Array.isArray(e.allowedActions) || !Array.isArray(e.acceptanceCriteria))
|
|
63
|
+
return false;
|
|
64
|
+
if (!HEX_64.test(e.digest) || e.phases.length > MAX_PHASES || e.allowedActions.length > MAX_RULES || e.acceptanceCriteria.length > MAX_CRITERIA)
|
|
65
|
+
return false;
|
|
66
|
+
if (e.digest !== computeEnvelopeDigest(e))
|
|
67
|
+
return false;
|
|
68
|
+
if (topicId && v.creationKey !== computeCreationKey(topicId, v.authority, v.requestDigest))
|
|
69
|
+
return false;
|
|
70
|
+
if (new Set(e.phases.map((p) => p.id)).size !== e.phases.length)
|
|
71
|
+
return false;
|
|
72
|
+
if (new Set(e.allowedActions.map((r) => r.id)).size !== e.allowedActions.length)
|
|
73
|
+
return false;
|
|
74
|
+
if (new Set(e.acceptanceCriteria.map((c) => c.id)).size !== e.acceptanceCriteria.length)
|
|
75
|
+
return false;
|
|
76
|
+
if (!e.phases.every((p) => ID.test(p.id) && ACTION_DOMAINS.includes(p.domain)
|
|
77
|
+
&& Array.isArray(p.criterionIds) && uniqueStrings(p.criterionIds, MAX_CRITERIA)
|
|
78
|
+
&& Array.isArray(p.actionRuleIds) && uniqueStrings(p.actionRuleIds, MAX_RULES)))
|
|
79
|
+
return false;
|
|
80
|
+
if (!e.allowedActions.every((r) => ID.test(r.id) && ACTION_DOMAINS.includes(r.domain) && ID.test(r.operation) && Array.isArray(r.targets) && r.targets.length > 0 && r.targets.length <= 64 && r.targets.every((t) => boundedText(t)) && validConstraints(r.constraints)))
|
|
81
|
+
return false;
|
|
82
|
+
if (!e.acceptanceCriteria.every((c) => ID.test(c.id) && ID.test(c.kind)))
|
|
83
|
+
return false;
|
|
84
|
+
const criterionIds = new Set(e.acceptanceCriteria.map((c) => c.id));
|
|
85
|
+
const rulesById = new Map(e.allowedActions.map((r) => [r.id, r]));
|
|
86
|
+
if (!e.phases.every((p) => p.criterionIds.every((id) => criterionIds.has(id))
|
|
87
|
+
&& p.actionRuleIds.every((id) => rulesById.get(id)?.domain === p.domain)))
|
|
88
|
+
return false;
|
|
89
|
+
if (!e.phases.some((p) => p.id === v.cursor?.phaseId) || !['pending', 'active', 'completed'].includes(v.cursor?.state))
|
|
90
|
+
return false;
|
|
91
|
+
if (!['active', 'stopped', 'abandoned', 'superseded'].includes(v.disposition?.state))
|
|
92
|
+
return false;
|
|
93
|
+
if (v.disposition.at !== undefined && !canonicalIso(v.disposition.at))
|
|
94
|
+
return false;
|
|
95
|
+
if (v.disposition.reasonCode !== undefined && !boundedText(v.disposition.reasonCode, 160))
|
|
96
|
+
return false;
|
|
97
|
+
if (v.disposition.supersededByRunId !== undefined && !ID.test(v.disposition.supersededByRunId))
|
|
98
|
+
return false;
|
|
99
|
+
if (v.commitmentRef !== undefined && !ID.test(v.commitmentRef))
|
|
100
|
+
return false;
|
|
101
|
+
if (!Number.isSafeInteger(v.revision) || v.revision < 1 || !Number.isSafeInteger(v.semanticProgress?.version) || v.semanticProgress.version < 0)
|
|
102
|
+
return false;
|
|
103
|
+
if (!HEX_64.test(v.semanticProgress?.fingerprint) || !canonicalIso(v.semanticProgress?.lastProgressAt))
|
|
104
|
+
return false;
|
|
105
|
+
if (!['closed', 'tripped'].includes(v.breaker?.state) || !Number.isSafeInteger(v.breaker.consecutiveNoProgress) || v.breaker.consecutiveNoProgress < 0)
|
|
106
|
+
return false;
|
|
107
|
+
if (v.breaker.trippedAt !== undefined && !canonicalIso(v.breaker.trippedAt))
|
|
108
|
+
return false;
|
|
109
|
+
if (v.breaker.rearmBasis !== undefined && !['operator-transition', 'semantic-progress'].includes(v.breaker.rearmBasis))
|
|
110
|
+
return false;
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
/* @silent-fallback-ok — boundary validator converts malformed nested input to false;
|
|
115
|
+
callers receive the explicit fail-closed corrupt/hold decision. */
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/** Scope membership only; effects must also compose aliveness, breaker eligibility, and authority rebind. */
|
|
120
|
+
export function deriveActionDecision(extension, phaseId, request) {
|
|
121
|
+
if (!extension || typeof extension !== 'object')
|
|
122
|
+
return 'hold:corrupt';
|
|
123
|
+
if (extension.schemaVersion !== 1)
|
|
124
|
+
return 'hold:ineligible-extension';
|
|
125
|
+
if (!validateStandingDriveExtensionV1(extension))
|
|
126
|
+
return 'hold:corrupt';
|
|
127
|
+
const ext = extension;
|
|
128
|
+
const phase = ext.envelope.phases.find((p) => p.id === phaseId);
|
|
129
|
+
if (!phase || ext.cursor.phaseId !== phaseId || phase.domain !== request.domain)
|
|
130
|
+
return 'hold:phase-mismatch';
|
|
131
|
+
const candidates = ext.envelope.allowedActions.filter((r) => phase.actionRuleIds.includes(r.id) && r.domain === request.domain && r.operation === request.operation);
|
|
132
|
+
if (candidates.length === 0)
|
|
133
|
+
return 'hold:not-enumerated';
|
|
134
|
+
const matched = candidates.some((r) => r.targets.includes(request.target) && JSON.stringify(orderedObject(r.constraints)) === JSON.stringify(orderedObject(request.constraints)));
|
|
135
|
+
return matched ? 'allow' : 'hold:constraint-mismatch';
|
|
136
|
+
}
|
|
137
|
+
export function checkAuthorityRebind(extension, current) {
|
|
138
|
+
if (!validateStandingDriveExtensionV1(extension))
|
|
139
|
+
return false;
|
|
140
|
+
const a = extension.authority;
|
|
141
|
+
return a.operatorPrincipalHash === current.operatorPrincipalHash && a.topicBindingDigest === current.topicBindingDigest && a.projectBindingDigest === current.projectBindingDigest;
|
|
142
|
+
}
|
|
143
|
+
export function readBreakerEligibility(extension) {
|
|
144
|
+
if (!validateStandingDriveExtensionV1(extension))
|
|
145
|
+
return { eligible: false, reason: 'breaker-unreadable' };
|
|
146
|
+
return extension.breaker.state === 'tripped' ? { eligible: false, reason: 'breaker-tripped' } : { eligible: true, reason: 'closed' };
|
|
147
|
+
}
|
|
148
|
+
export function isStandingDriveAlive(extension) {
|
|
149
|
+
return validateStandingDriveExtensionV1(extension) && extension.disposition.state === 'active';
|
|
150
|
+
}
|
|
151
|
+
export function applyDispositionTransition(extension, next, verifiedAuthority, at) {
|
|
152
|
+
if (!verifiedAuthority)
|
|
153
|
+
throw new Error('standing-drive-authority-required');
|
|
154
|
+
if (['abandoned', 'superseded'].includes(extension.disposition.state))
|
|
155
|
+
throw new Error('standing-drive-terminal');
|
|
156
|
+
const allowed = extension.disposition.state === 'active'
|
|
157
|
+
? ['stopped', 'abandoned', 'superseded'].includes(next)
|
|
158
|
+
: extension.disposition.state === 'stopped' && ['active', 'abandoned', 'superseded'].includes(next);
|
|
159
|
+
if (!allowed)
|
|
160
|
+
throw new Error('standing-drive-invalid-transition');
|
|
161
|
+
return { ...extension, disposition: { ...extension.disposition, state: next, at }, revision: extension.revision + 1 };
|
|
162
|
+
}
|
|
163
|
+
export function composeStopDecision(sources) {
|
|
164
|
+
if (sources.includes(true))
|
|
165
|
+
return { stopped: true, reason: 'operator-stop' };
|
|
166
|
+
if (sources.includes('unreadable'))
|
|
167
|
+
return { stopped: true, reason: 'stop-evidence-unreadable' };
|
|
168
|
+
return { stopped: false, reason: 'clear' };
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=StandingDriveSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StandingDriveSchema.js","sourceRoot":"","sources":["../../src/core/StandingDriveSchema.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./builtin-manifest.schema.json",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
|
-
"generatedAt": "2026-07-
|
|
5
|
-
"instarVersion": "1.3.
|
|
4
|
+
"generatedAt": "2026-07-18T06:10:29.028Z",
|
|
5
|
+
"instarVersion": "1.3.867",
|
|
6
6
|
"entryCount": 202,
|
|
7
7
|
"entries": {
|
|
8
8
|
"hook:session-start": {
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: patch -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
Adds the first backward-compatible StandingDrive schema slice: an optional extension on server-owned autonomous run records, deterministic scope/action validators, exact local-authority checks, fail-closed breaker reads, ANY-source operator-stop folding, and revision-guarded extension mutations.
|
|
9
|
+
|
|
10
|
+
## What to Tell Your User
|
|
11
|
+
|
|
12
|
+
No user-facing StandingDrive execution is enabled yet. This release establishes the reviewed durable schema and safety validators that later slices will compose with existing continuation, revival, lease, and operation gates.
|
|
13
|
+
|
|
14
|
+
## Summary of New Capabilities
|
|
15
|
+
|
|
16
|
+
- Represent a StandingDrive without creating a parallel lifecycle store.
|
|
17
|
+
- Validate frozen action scope deterministically without a model call.
|
|
18
|
+
- Preserve plain autonomous-run behavior when no StandingDrive extension exists.
|
|
19
|
+
|
|
20
|
+
## Evidence
|
|
21
|
+
|
|
22
|
+
- 23 StandingDrive schema/validator/store tests and 15 existing AutonomousRunStore tests pass.
|
|
23
|
+
- TypeScript build and full repository lint pass locally.
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Side-Effects Review — StandingDrive Slice 1 schema
|
|
2
|
+
|
|
3
|
+
**Version / slug:** `standing-drive-slice1`
|
|
4
|
+
**Date:** `2026-07-17`
|
|
5
|
+
**Author:** `Instar Agent (instar-codey)`
|
|
6
|
+
**Second-pass reviewer:** Hegel (`continuation_side_effects_review`)
|
|
7
|
+
|
|
8
|
+
## Summary of the change
|
|
9
|
+
|
|
10
|
+
This slice adds the optional `StandingDriveExtensionV1` to `AutonomousRunRecord`, pure deterministic canonicalizers and validators in `src/core/StandingDriveSchema.ts`, and revision-guarded enrollment and mutation methods in `src/core/AutonomousRunStore.ts`. It deliberately adds no runtime wake, replay, effect, messaging, continuation, route, or scheduler integration.
|
|
11
|
+
|
|
12
|
+
## Decision-point inventory
|
|
13
|
+
|
|
14
|
+
- `validateStandingDriveExtensionV1` — add — structurally validates the closed v1 envelope and rejects unknown versions and sources.
|
|
15
|
+
- `deriveActionDecision` — add — permits only an action explicitly enumerated by the current phase and constraints.
|
|
16
|
+
- `checkAuthorityRebind` — add — requires exact principal, topic, and project-digest equality.
|
|
17
|
+
- `readBreakerEligibility` — add — corrupt or unreadable breaker state holds execution.
|
|
18
|
+
- `composeStopDecision` — add — any stop evidence source, or any unreadable required source, halts continuation.
|
|
19
|
+
- `AutonomousRunStore.enrollStandingDrive` and `mutateStandingDrive` — add — serialize writes and enforce one shared revision CAS.
|
|
20
|
+
|
|
21
|
+
## 1. Over-block
|
|
22
|
+
|
|
23
|
+
Malformed or future schema versions, rotated authority receipts, non-enumerated actions, unreadable breaker state, and unreadable stop evidence hold. These are intentional hard-invariant boundaries: each case lacks the structural evidence needed to authorize execution. A legitimate future enrollment surface is rejected until its source enum and truth table receive review. Plain runs without the extension are not classified as corrupt and retain legacy behavior.
|
|
24
|
+
|
|
25
|
+
## 2. Under-block
|
|
26
|
+
|
|
27
|
+
This slice does not determine whether prose is semantically related and therefore cannot catch a misleading description whose structured action fields remain valid. That is intentional: actions are authorized only by exact phase, domain, operation, target, and constraint fields. This slice also has no actuator, so its validators cannot independently prevent later code from bypassing them; later runtime slices must route every action through the derived decision and existing operation authorities.
|
|
28
|
+
|
|
29
|
+
## 3. Level-of-abstraction fit
|
|
30
|
+
|
|
31
|
+
The schema and structural validation live beside the server-owned autonomous-run record, avoiding a parallel lifecycle store. The decision functions are deterministic policy authorities over closed, enumerable domains—not semantic detectors. They reuse the run store's atomic persistence and add a run-scoped lock for extension revision CAS. Existing CommitmentTracker, operation gates, and continuation machinery remain authoritative for their respective domains.
|
|
32
|
+
|
|
33
|
+
## 4. Signal vs authority compliance
|
|
34
|
+
|
|
35
|
+
**Required reference:** [docs/signal-vs-authority.md](../../docs/signal-vs-authority.md)
|
|
36
|
+
|
|
37
|
+
- [ ] No — this change produces a signal consumed by an existing smart gate.
|
|
38
|
+
- [ ] No — this change has no block/allow surface.
|
|
39
|
+
- [ ] Yes — but the logic is a smart gate with full conversational context (LLM-backed with recent history or equivalent).
|
|
40
|
+
- [x] No brittle semantic judgment is introduced; these are hard-invariant and closed deterministic policy checks.
|
|
41
|
+
|
|
42
|
+
The change does hold blocking authority, but only for mechanically enumerable invariants: version and field validity, exact identity equality, explicit action membership, revision equality, and ANY-source stop evidence. It never interprets message meaning, intent, or competing semantic signals. This is the hard-invariant exception described in the principle document.
|
|
43
|
+
|
|
44
|
+
## 4b. Judgment-point check (Judgment Within Floors standard)
|
|
45
|
+
|
|
46
|
+
No static heuristic is added at a competing-signals judgment point. Action eligibility is a closed membership predicate over the operator-frozen envelope. Stop composition is a safety precedence rule: every named stop source is independently authoritative, so no consensus or weighting judgment exists. Unreadable authority evidence fails closed rather than being guessed.
|
|
47
|
+
|
|
48
|
+
## 5. Interactions
|
|
49
|
+
|
|
50
|
+
- **Shadowing:** nested `disposition.state` is the sole drive-aliveness authority; base run `status` remains run-completion state. Tests pin `status=expired` with `disposition=active` as legal.
|
|
51
|
+
- **Double-fire:** no spawn, wake, notice, or external effect exists in this slice.
|
|
52
|
+
- **Races:** all record writers serialize with the repository-standard crash-recoverable file lock. Generic updates refuse any extension change; extension writers compare the shared revision before an atomic record write. Stale writers refuse instead of overwriting, and stale crash-left locks are reclaimed.
|
|
53
|
+
- **Feedback loops:** none; the new helpers are inert until called by later reviewed slices.
|
|
54
|
+
- **Compatibility:** absent extension leaves current readers, writers, and status enums unchanged. `commitmentRef` remains advisory; CommitmentTracker remains promise authority.
|
|
55
|
+
- **Tracked lifecycle binding:** existing R28a registration-time archive and R28b daily archive do not yet inspect active drive disposition. The continuation/lease integration slice must exempt or resurrect `status=expired × disposition=active` before any runtime consumer ships; this remains bound to the StandingDrive continuation integration slice and cannot be declared complete without its archive-boundary canary. <!-- tracked: topic-458-standing-drive-continuation-integration -->
|
|
56
|
+
|
|
57
|
+
## 6. External surfaces
|
|
58
|
+
|
|
59
|
+
No routes, messages, URLs, external-service calls, automatic jobs, or operator-facing actions are added. The only persistent change is an optional JSON field written after explicit enrollment. Unknown fields remain readable by older JSON consumers.
|
|
60
|
+
|
|
61
|
+
## 6b. Operator-surface quality (Operator-Surface Quality standard)
|
|
62
|
+
|
|
63
|
+
No operator surface — not applicable.
|
|
64
|
+
|
|
65
|
+
## 7. Multi-machine posture (Cross-Machine Coherence)
|
|
66
|
+
|
|
67
|
+
**Replicated-ready inert state:** this slice defines the envelope that later cross-surface replay/replication work may carry, but it does not add a replication path itself. A carried record is structurally inert on another machine until exact locally verified operator-principal, topic, and project-digest rebinding succeeds. The stored receipt is evidence, never portable authority; it deliberately stores no machine identity.
|
|
68
|
+
|
|
69
|
+
It emits no user-facing notices, so one-voice gating is not needed here. It holds optional durable state in the existing run record; topic-transfer behavior remains with the existing run owner and later replication slice. It generates no URLs. A future enrollment surface requires a reviewed enum and truth-table extension; existing creation keys are never eagerly recomputed.
|
|
70
|
+
|
|
71
|
+
## 8. Rollback cost
|
|
72
|
+
|
|
73
|
+
- **Hot-fix release:** revert the module, optional type field, and store methods, then ship a patch.
|
|
74
|
+
- **Data migration:** none required; older readers ignore the optional JSON field.
|
|
75
|
+
- **Agent state repair:** none; no runtime controller consumes the field yet.
|
|
76
|
+
- **User visibility:** none during rollback because execution behavior is not enabled in this slice.
|
|
77
|
+
|
|
78
|
+
## Conclusion
|
|
79
|
+
|
|
80
|
+
The review found the design belongs at the autonomous-run persistence boundary and that its blocking decisions are closed hard invariants rather than brittle semantic judgments. The implementation preserves plain-run compatibility, fails closed on corrupt authority evidence, and introduces no runtime actuator. It is ready for independent second-pass review and normal ship gates.
|
|
81
|
+
|
|
82
|
+
## Second-pass review (if required)
|
|
83
|
+
|
|
84
|
+
**Reviewer:** Hegel (`continuation_side_effects_review`)
|
|
85
|
+
**Independent read of the artifact:** concur
|
|
86
|
+
|
|
87
|
+
Concur: Slice 1 enforces unambiguous frozen-envelope references and shared revision CAS, preserves generic-update immutability, and handles both crash-stale and live-lock contention with stable tested behavior. The signal-vs-authority boundary and side-effects artifact are complete and accurate.
|
|
88
|
+
|
|
89
|
+
## Evidence pointers
|
|
90
|
+
|
|
91
|
+
- `tests/unit/standing-drive-schema.test.ts`: 23 schema, truth-table, authority, stop, compatibility, and CAS tests.
|
|
92
|
+
- `tests/unit/autonomous-run-store.test.ts`: 15 existing store regression tests.
|
|
93
|
+
- Focused Vitest run: 38/38 passing.
|
|
94
|
+
- `npm run build`, `npm run lint`, and `git diff --check`: passing.
|
|
95
|
+
- `tests/unit/no-silent-fallbacks.test.ts`: passing; the boundary-validator catch is explicitly documented as fail-closed.
|
|
96
|
+
|
|
97
|
+
## Class-Closure Declaration (display-only mirror)
|
|
98
|
+
|
|
99
|
+
No agent-authored-artifact defect and no self-triggered controller is added — not applicable.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# ELI16 — StandingDrive Slice 1
|
|
2
|
+
|
|
3
|
+
A long-running drive needs durable structure, but adding a brand-new lifecycle database would duplicate rules that Instar already has and eventually let those rule sets disagree. This slice instead adds one optional, versioned section to the server-owned autonomous-run record. Ordinary autonomous runs do not have that section and behave exactly as before.
|
|
4
|
+
|
|
5
|
+
The section freezes the operator-authorized phases and allowed actions. Code compares a proposed action against enumerated fields; it never asks a model whether the action feels related. Enrollment keys include the source surface, so identical raw ids from different sources cannot collide. Rebinding requires the stored principal and current locally verified operator to match exactly. Corrupt breaker state holds instead of reopening a wake loop. Every extension mutation checks and advances one shared revision, preventing concurrent last-write-wins changes.
|
|
6
|
+
|
|
7
|
+
Canonical digests use fixed code-unit ordering rather than the machine's locale, so moving between machines, shell environments, or Node versions cannot falsely turn a valid drive into corrupt state. Every timestamp must also use one canonical ISO form, and every optional reference is bounded and validated when present.
|
|
8
|
+
|
|
9
|
+
Malformed nested input is intentionally converted into an explicit invalid result, which later composition turns into a corrupt/hold decision; it never becomes an implicit allow.
|
|
10
|
+
|
|
11
|
+
This does not wake sessions, replay messages, dispatch external effects, or grant new authority. Those behaviors remain in later reviewed slices and must compose with their existing owners.
|