instar 1.3.866 → 1.3.868
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 +112 -0
- package/dist/core/StandingDriveSchema.d.ts.map +1 -0
- package/dist/core/StandingDriveSchema.js +239 -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/1.3.868.md +23 -0
- package/upgrades/side-effects/standing-drive-slice1.md +99 -0
- package/upgrades/side-effects/standing-drive-slice2.md +91 -0
- package/upgrades/standing-drive-slice1.eli16.md +11 -0
- package/upgrades/standing-drive-slice2.eli16.md +9 -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,112 @@
|
|
|
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 interface StandingDriveActionDerivationV1 {
|
|
74
|
+
decision: StandingDriveActionDecision;
|
|
75
|
+
matchedRuleId: string | null;
|
|
76
|
+
envelopeDigest: string | null;
|
|
77
|
+
decisionDigest: string;
|
|
78
|
+
}
|
|
79
|
+
export declare function canonicalizeCreationKey(topicId: string, source: StandingDriveSource, verifiedEventId: string, requestDigest: string): string;
|
|
80
|
+
export declare function computeCreationKey(topicId: string, authority: Pick<StandingDriveAuthorityV1, 'source' | 'verifiedEventId'>, requestDigest: string): string;
|
|
81
|
+
export declare function canonicalizeEnvelope(input: Omit<StandingDriveEnvelopeV1, 'digest'>): string;
|
|
82
|
+
export declare function computeEnvelopeDigest(input: Omit<StandingDriveEnvelopeV1, 'digest'>): string;
|
|
83
|
+
export declare function computeSemanticFingerprint(input: {
|
|
84
|
+
phaseStates: Array<{
|
|
85
|
+
id: string;
|
|
86
|
+
state: string;
|
|
87
|
+
}>;
|
|
88
|
+
evidenceIds: string[];
|
|
89
|
+
closedDefectIds: string[];
|
|
90
|
+
blockState: string;
|
|
91
|
+
}): string;
|
|
92
|
+
export declare function validateStandingDriveExtensionV1(value: unknown, topicId?: string): value is StandingDriveExtensionV1;
|
|
93
|
+
/** Scope membership only; effects must also compose aliveness, breaker eligibility, and authority rebind. */
|
|
94
|
+
export declare function deriveActionDecisionDetailed(extension: unknown, phaseId: unknown, request: unknown): StandingDriveActionDerivationV1;
|
|
95
|
+
/** Compatibility projection for callers that only need the closed decision enum. */
|
|
96
|
+
export declare function deriveActionDecision(extension: unknown, phaseId: string, request: StandingDriveActionRequest): StandingDriveActionDecision;
|
|
97
|
+
export declare function checkAuthorityRebind(extension: unknown, current: {
|
|
98
|
+
operatorPrincipalHash: string;
|
|
99
|
+
topicBindingDigest: string;
|
|
100
|
+
projectBindingDigest: string;
|
|
101
|
+
}): boolean;
|
|
102
|
+
export declare function readBreakerEligibility(extension: unknown): {
|
|
103
|
+
eligible: boolean;
|
|
104
|
+
reason: string;
|
|
105
|
+
};
|
|
106
|
+
export declare function isStandingDriveAlive(extension: unknown): boolean;
|
|
107
|
+
export declare function applyDispositionTransition(extension: StandingDriveExtensionV1, next: StandingDriveDisposition, verifiedAuthority: boolean, at: string): StandingDriveExtensionV1;
|
|
108
|
+
export declare function composeStopDecision(sources: Array<boolean | 'unreadable'>): {
|
|
109
|
+
stopped: boolean;
|
|
110
|
+
reason: string;
|
|
111
|
+
};
|
|
112
|
+
//# 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,239 @@
|
|
|
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
|
+
const canonicalScopedPath = (value) => {
|
|
28
|
+
if (value === '.')
|
|
29
|
+
return '.';
|
|
30
|
+
if (value.startsWith('/') || /^[A-Za-z]:/.test(value) || value.includes('\\') || value.includes('//'))
|
|
31
|
+
return null;
|
|
32
|
+
const withoutTrailingSlash = value.endsWith('/') ? value.slice(0, -1) : value;
|
|
33
|
+
const segments = withoutTrailingSlash.split('/');
|
|
34
|
+
if (segments.length === 0 || segments.some((segment) => segment === '.' || segment === '..'))
|
|
35
|
+
return null;
|
|
36
|
+
return segments.join('/');
|
|
37
|
+
};
|
|
38
|
+
const targetMatches = (domain, frozenTarget, requestedTarget) => {
|
|
39
|
+
if (domain !== 'git' && domain !== 'local-read-test')
|
|
40
|
+
return frozenTarget === requestedTarget;
|
|
41
|
+
const frozen = canonicalScopedPath(frozenTarget);
|
|
42
|
+
const requested = canonicalScopedPath(requestedTarget);
|
|
43
|
+
if (!frozen || !requested)
|
|
44
|
+
return false;
|
|
45
|
+
return frozen === '.' || requested === frozen || requested.startsWith(`${frozen}/`);
|
|
46
|
+
};
|
|
47
|
+
const validActionRequest = (value) => {
|
|
48
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
49
|
+
return false;
|
|
50
|
+
if (Object.keys(value).some((key) => !['domain', 'operation', 'target', 'constraints'].includes(key)))
|
|
51
|
+
return false;
|
|
52
|
+
const request = value;
|
|
53
|
+
return ACTION_DOMAINS.includes(request.domain)
|
|
54
|
+
&& typeof request.operation === 'string' && ID.test(request.operation)
|
|
55
|
+
&& boundedText(request.target)
|
|
56
|
+
&& validConstraints(request.constraints);
|
|
57
|
+
};
|
|
58
|
+
export function canonicalizeCreationKey(topicId, source, verifiedEventId, requestDigest) {
|
|
59
|
+
return JSON.stringify(['standing-drive-creation-v1', topicId, source, verifiedEventId, requestDigest]);
|
|
60
|
+
}
|
|
61
|
+
export function computeCreationKey(topicId, authority, requestDigest) {
|
|
62
|
+
return hash(canonicalizeCreationKey(topicId, authority.source, authority.verifiedEventId, requestDigest));
|
|
63
|
+
}
|
|
64
|
+
export function canonicalizeEnvelope(input) {
|
|
65
|
+
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)]);
|
|
66
|
+
const criteria = [...input.acceptanceCriteria].sort((a, b) => codeUnitCompare(a.id, b.id)).map((c) => [c.id, c.kind]);
|
|
67
|
+
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)]);
|
|
68
|
+
return JSON.stringify(['standing-drive-envelope-v1', phases, criteria, rules]);
|
|
69
|
+
}
|
|
70
|
+
export function computeEnvelopeDigest(input) {
|
|
71
|
+
return hash(canonicalizeEnvelope(input));
|
|
72
|
+
}
|
|
73
|
+
export function computeSemanticFingerprint(input) {
|
|
74
|
+
return hash(JSON.stringify(['standing-drive-progress-v1',
|
|
75
|
+
[...input.phaseStates].sort((a, b) => codeUnitCompare(a.id, b.id)).map((p) => [p.id, p.state]),
|
|
76
|
+
[...input.evidenceIds].sort(codeUnitCompare), [...input.closedDefectIds].sort(codeUnitCompare), input.blockState,
|
|
77
|
+
]));
|
|
78
|
+
}
|
|
79
|
+
export function validateStandingDriveExtensionV1(value, topicId) {
|
|
80
|
+
try {
|
|
81
|
+
if (!value || typeof value !== 'object')
|
|
82
|
+
return false;
|
|
83
|
+
const v = value;
|
|
84
|
+
if (v.schemaVersion !== 1 || !HEX_64.test(v.requestDigest) || !HEX_64.test(v.creationKey))
|
|
85
|
+
return false;
|
|
86
|
+
if (!v.authority || !['telegram', 'local-operator'].includes(v.authority.source) || !ID.test(v.authority.verifiedEventId))
|
|
87
|
+
return false;
|
|
88
|
+
if (![v.authority.operatorPrincipalHash, v.authority.topicBindingDigest, v.authority.projectBindingDigest].every((x) => HEX_64.test(x)))
|
|
89
|
+
return false;
|
|
90
|
+
if (!canonicalIso(v.authority.authorizedAt))
|
|
91
|
+
return false;
|
|
92
|
+
const e = v.envelope;
|
|
93
|
+
if (!e || !Array.isArray(e.phases) || !Array.isArray(e.allowedActions) || !Array.isArray(e.acceptanceCriteria))
|
|
94
|
+
return false;
|
|
95
|
+
if (!HEX_64.test(e.digest) || e.phases.length > MAX_PHASES || e.allowedActions.length > MAX_RULES || e.acceptanceCriteria.length > MAX_CRITERIA)
|
|
96
|
+
return false;
|
|
97
|
+
if (e.digest !== computeEnvelopeDigest(e))
|
|
98
|
+
return false;
|
|
99
|
+
if (topicId && v.creationKey !== computeCreationKey(topicId, v.authority, v.requestDigest))
|
|
100
|
+
return false;
|
|
101
|
+
if (new Set(e.phases.map((p) => p.id)).size !== e.phases.length)
|
|
102
|
+
return false;
|
|
103
|
+
if (new Set(e.allowedActions.map((r) => r.id)).size !== e.allowedActions.length)
|
|
104
|
+
return false;
|
|
105
|
+
if (new Set(e.acceptanceCriteria.map((c) => c.id)).size !== e.acceptanceCriteria.length)
|
|
106
|
+
return false;
|
|
107
|
+
if (!e.phases.every((p) => ID.test(p.id) && ACTION_DOMAINS.includes(p.domain)
|
|
108
|
+
&& Array.isArray(p.criterionIds) && uniqueStrings(p.criterionIds, MAX_CRITERIA)
|
|
109
|
+
&& Array.isArray(p.actionRuleIds) && uniqueStrings(p.actionRuleIds, MAX_RULES)))
|
|
110
|
+
return false;
|
|
111
|
+
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
|
|
112
|
+
&& r.targets.every((t) => boundedText(t) && (!['git', 'local-read-test'].includes(r.domain) || canonicalScopedPath(t) !== null))
|
|
113
|
+
&& validConstraints(r.constraints)))
|
|
114
|
+
return false;
|
|
115
|
+
if (!e.acceptanceCriteria.every((c) => ID.test(c.id) && ID.test(c.kind)))
|
|
116
|
+
return false;
|
|
117
|
+
const criterionIds = new Set(e.acceptanceCriteria.map((c) => c.id));
|
|
118
|
+
const rulesById = new Map(e.allowedActions.map((r) => [r.id, r]));
|
|
119
|
+
if (!e.phases.every((p) => p.criterionIds.every((id) => criterionIds.has(id))
|
|
120
|
+
&& p.actionRuleIds.every((id) => rulesById.get(id)?.domain === p.domain)))
|
|
121
|
+
return false;
|
|
122
|
+
if (!e.phases.some((p) => p.id === v.cursor?.phaseId) || !['pending', 'active', 'completed'].includes(v.cursor?.state))
|
|
123
|
+
return false;
|
|
124
|
+
if (!['active', 'stopped', 'abandoned', 'superseded'].includes(v.disposition?.state))
|
|
125
|
+
return false;
|
|
126
|
+
if (v.disposition.at !== undefined && !canonicalIso(v.disposition.at))
|
|
127
|
+
return false;
|
|
128
|
+
if (v.disposition.reasonCode !== undefined && !boundedText(v.disposition.reasonCode, 160))
|
|
129
|
+
return false;
|
|
130
|
+
if (v.disposition.supersededByRunId !== undefined && !ID.test(v.disposition.supersededByRunId))
|
|
131
|
+
return false;
|
|
132
|
+
if (v.commitmentRef !== undefined && !ID.test(v.commitmentRef))
|
|
133
|
+
return false;
|
|
134
|
+
if (!Number.isSafeInteger(v.revision) || v.revision < 1 || !Number.isSafeInteger(v.semanticProgress?.version) || v.semanticProgress.version < 0)
|
|
135
|
+
return false;
|
|
136
|
+
if (!HEX_64.test(v.semanticProgress?.fingerprint) || !canonicalIso(v.semanticProgress?.lastProgressAt))
|
|
137
|
+
return false;
|
|
138
|
+
if (!['closed', 'tripped'].includes(v.breaker?.state) || !Number.isSafeInteger(v.breaker.consecutiveNoProgress) || v.breaker.consecutiveNoProgress < 0)
|
|
139
|
+
return false;
|
|
140
|
+
if (v.breaker.trippedAt !== undefined && !canonicalIso(v.breaker.trippedAt))
|
|
141
|
+
return false;
|
|
142
|
+
if (v.breaker.rearmBasis !== undefined && !['operator-transition', 'semantic-progress'].includes(v.breaker.rearmBasis))
|
|
143
|
+
return false;
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
/* @silent-fallback-ok — boundary validator converts malformed nested input to false;
|
|
148
|
+
callers receive the explicit fail-closed corrupt/hold decision. */
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/** Scope membership only; effects must also compose aliveness, breaker eligibility, and authority rebind. */
|
|
153
|
+
export function deriveActionDecisionDetailed(extension, phaseId, request) {
|
|
154
|
+
let decision = 'hold:corrupt';
|
|
155
|
+
let matchedRuleId = null;
|
|
156
|
+
let envelopeDigest = null;
|
|
157
|
+
let canonicalRequest = ['invalid-request'];
|
|
158
|
+
if (extension && typeof extension === 'object' && extension.schemaVersion !== 1) {
|
|
159
|
+
decision = 'hold:ineligible-extension';
|
|
160
|
+
}
|
|
161
|
+
else if (validateStandingDriveExtensionV1(extension)) {
|
|
162
|
+
envelopeDigest = extension.envelope.digest;
|
|
163
|
+
if (typeof phaseId === 'string' && ID.test(phaseId) && validActionRequest(request)) {
|
|
164
|
+
const canonicalTarget = request.domain === 'git' || request.domain === 'local-read-test'
|
|
165
|
+
? canonicalScopedPath(request.target) ?? ['invalid-scoped-path', request.target]
|
|
166
|
+
: request.target;
|
|
167
|
+
canonicalRequest = [request.domain, request.operation, canonicalTarget, orderedObject(request.constraints)];
|
|
168
|
+
const phase = extension.envelope.phases.find((candidate) => candidate.id === phaseId);
|
|
169
|
+
if (!phase || extension.cursor.phaseId !== phaseId || phase.domain !== request.domain) {
|
|
170
|
+
decision = 'hold:phase-mismatch';
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
const candidates = extension.envelope.allowedActions.filter((rule) => phase.actionRuleIds.includes(rule.id) && rule.domain === request.domain && rule.operation === request.operation)
|
|
174
|
+
.sort((a, b) => codeUnitCompare(a.id, b.id));
|
|
175
|
+
if (candidates.length === 0) {
|
|
176
|
+
decision = 'hold:not-enumerated';
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
const matched = candidates.find((rule) => rule.targets.some((target) => targetMatches(rule.domain, target, request.target))
|
|
180
|
+
&& JSON.stringify(orderedObject(rule.constraints)) === JSON.stringify(orderedObject(request.constraints)));
|
|
181
|
+
if (matched) {
|
|
182
|
+
decision = 'allow';
|
|
183
|
+
matchedRuleId = matched.id;
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
decision = 'hold:constraint-mismatch';
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
const decisionDigest = hash(JSON.stringify([
|
|
193
|
+
'standing-drive-action-derivation-v1',
|
|
194
|
+
envelopeDigest,
|
|
195
|
+
typeof phaseId === 'string' ? phaseId : null,
|
|
196
|
+
canonicalRequest,
|
|
197
|
+
decision,
|
|
198
|
+
matchedRuleId,
|
|
199
|
+
]));
|
|
200
|
+
return { decision, matchedRuleId, envelopeDigest, decisionDigest };
|
|
201
|
+
}
|
|
202
|
+
/** Compatibility projection for callers that only need the closed decision enum. */
|
|
203
|
+
export function deriveActionDecision(extension, phaseId, request) {
|
|
204
|
+
return deriveActionDecisionDetailed(extension, phaseId, request).decision;
|
|
205
|
+
}
|
|
206
|
+
export function checkAuthorityRebind(extension, current) {
|
|
207
|
+
if (!validateStandingDriveExtensionV1(extension))
|
|
208
|
+
return false;
|
|
209
|
+
const a = extension.authority;
|
|
210
|
+
return a.operatorPrincipalHash === current.operatorPrincipalHash && a.topicBindingDigest === current.topicBindingDigest && a.projectBindingDigest === current.projectBindingDigest;
|
|
211
|
+
}
|
|
212
|
+
export function readBreakerEligibility(extension) {
|
|
213
|
+
if (!validateStandingDriveExtensionV1(extension))
|
|
214
|
+
return { eligible: false, reason: 'breaker-unreadable' };
|
|
215
|
+
return extension.breaker.state === 'tripped' ? { eligible: false, reason: 'breaker-tripped' } : { eligible: true, reason: 'closed' };
|
|
216
|
+
}
|
|
217
|
+
export function isStandingDriveAlive(extension) {
|
|
218
|
+
return validateStandingDriveExtensionV1(extension) && extension.disposition.state === 'active';
|
|
219
|
+
}
|
|
220
|
+
export function applyDispositionTransition(extension, next, verifiedAuthority, at) {
|
|
221
|
+
if (!verifiedAuthority)
|
|
222
|
+
throw new Error('standing-drive-authority-required');
|
|
223
|
+
if (['abandoned', 'superseded'].includes(extension.disposition.state))
|
|
224
|
+
throw new Error('standing-drive-terminal');
|
|
225
|
+
const allowed = extension.disposition.state === 'active'
|
|
226
|
+
? ['stopped', 'abandoned', 'superseded'].includes(next)
|
|
227
|
+
: extension.disposition.state === 'stopped' && ['active', 'abandoned', 'superseded'].includes(next);
|
|
228
|
+
if (!allowed)
|
|
229
|
+
throw new Error('standing-drive-invalid-transition');
|
|
230
|
+
return { ...extension, disposition: { ...extension.disposition, state: next, at }, revision: extension.revision + 1 };
|
|
231
|
+
}
|
|
232
|
+
export function composeStopDecision(sources) {
|
|
233
|
+
if (sources.includes(true))
|
|
234
|
+
return { stopped: true, reason: 'operator-stop' };
|
|
235
|
+
if (sources.includes('unreadable'))
|
|
236
|
+
return { stopped: true, reason: 'stop-evidence-unreadable' };
|
|
237
|
+
return { stopped: false, reason: 'clear' };
|
|
238
|
+
}
|
|
239
|
+
//# 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-18T07:34:42.051Z",
|
|
5
|
+
"instarVersion": "1.3.868",
|
|
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,23 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: patch -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
Adds StandingDrive Slice 2: a closed deterministic action-derivation authority with auditable matched-rule and decision digests, safe project-relative path-prefix evaluation, fail-closed malformed-input handling, and cross-machine-stable rule selection.
|
|
9
|
+
|
|
10
|
+
## What to Tell Your User
|
|
11
|
+
|
|
12
|
+
StandingDrive still does not execute actions yet. This release makes its frozen-scope decision mechanically auditable and proves that a merely related action cannot expand the operator-authorized envelope.
|
|
13
|
+
|
|
14
|
+
## Summary of New Capabilities
|
|
15
|
+
|
|
16
|
+
- Produce a stable, audit-grade derivation result from a frozen drive envelope.
|
|
17
|
+
- Permit approved project-relative descendants without allowing traversal or absolute-path escape.
|
|
18
|
+
- Hold malformed, future-version, wrong-phase, non-enumerated, and constraint-mismatched requests without a model call.
|
|
19
|
+
|
|
20
|
+
## Evidence
|
|
21
|
+
|
|
22
|
+
- 30 focused StandingDrive schema and derivation tests pass; 50/50 combined with store and no-silent-fallback regressions.
|
|
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,91 @@
|
|
|
1
|
+
# Side-Effects Review — StandingDrive Slice 2 scope derivation
|
|
2
|
+
|
|
3
|
+
**Version / slug:** `standing-drive-slice2`
|
|
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 upgrades `src/core/StandingDriveSchema.ts` from an enum-only scope membership result to an auditable `StandingDriveActionDerivationV1`. It validates unknown runtime-shaped requests without throwing, returns the matched frozen rule and stable decision digest, applies safe project-relative prefix matching for git/local-test targets, and preserves `deriveActionDecision` as a compatibility projection. Tests in `tests/unit/standing-drive-schema.test.ts` prove closed holds, traversal refusal, insertion-order determinism, and absence of model/network/clock/locale seams.
|
|
11
|
+
|
|
12
|
+
## Decision-point inventory
|
|
13
|
+
|
|
14
|
+
- `deriveActionDecisionDetailed` — add — authoritative closed policy evaluation over the frozen enumerated envelope.
|
|
15
|
+
- `deriveActionDecision` — modify — compatibility projection over the detailed result; its public decision enum is unchanged.
|
|
16
|
+
- `targetMatches` — add — deterministic domain-specific target membership, with project-relative prefix semantics only for git/local-test domains.
|
|
17
|
+
|
|
18
|
+
## 1. Over-block
|
|
19
|
+
|
|
20
|
+
Git/local-test requests using absolute paths, backslashes, `.` segments, or `..` segments hold even when they resolve inside an approved root. This is intentional: filesystem resolution differs across platforms and environments, while frozen project-relative paths are portable and auditable. External-operation, message-review, and operator-transition targets remain exact; a legitimate alias or renamed recipient holds until a fresh operator transition updates the frozen envelope.
|
|
21
|
+
|
|
22
|
+
## 2. Under-block
|
|
23
|
+
|
|
24
|
+
The validator proves membership, not external authority or effect safety. An allowed action still cannot execute safely until later slices compose drive aliveness, exact local authority rebind, breaker and stop state, operation/coherence gates, and effect reconciliation. Constraint keys remain operator-frozen generic fields in schema v1; service-specific payload semantics belong to the Slice 3 adapter and cannot be inferred here.
|
|
25
|
+
|
|
26
|
+
## 3. Level-of-abstraction fit
|
|
27
|
+
|
|
28
|
+
This is a deterministic policy authority over a genuinely enumerable domain, colocated with the frozen envelope canonicalizer. It does not duplicate lifecycle persistence, external-operation authority, or a semantic evaluator. Detailed derivation is pure and synchronous, so later actuators can persist or audit its stable output without giving this module side effects.
|
|
29
|
+
|
|
30
|
+
## 4. Signal vs authority compliance
|
|
31
|
+
|
|
32
|
+
**Required reference:** [docs/signal-vs-authority.md](../../docs/signal-vs-authority.md)
|
|
33
|
+
|
|
34
|
+
- [x] This is blocking authority over closed hard invariants, not brittle semantic judgment.
|
|
35
|
+
|
|
36
|
+
The authority compares enumerated domain, operation, target, constraints, phase, and schema fields. It never interprets prose or estimates relevance. The explicit plausibly-related-but-out-of-envelope test demonstrates that semantic closeness cannot expand authority.
|
|
37
|
+
|
|
38
|
+
## 4b. Judgment-point check (Judgment Within Floors standard)
|
|
39
|
+
|
|
40
|
+
No competing-signals judgment point is introduced. Scope membership is a closed set-membership invariant. Project-relative path prefix matching is deterministic mechanics with traversal refusal, not a heuristic about intent.
|
|
41
|
+
|
|
42
|
+
## 5. Interactions
|
|
43
|
+
|
|
44
|
+
- **Shadowing:** none; later execution code must consume this result before existing operation/coherence gates, which retain their own authority.
|
|
45
|
+
- **Double-fire:** none; the evaluator has no actuator or persistence.
|
|
46
|
+
- **Races:** none; the evaluator reads one immutable input snapshot and returns a value.
|
|
47
|
+
- **Feedback loops:** none.
|
|
48
|
+
- **Compatibility:** the existing `deriveActionDecision` API and decision strings are preserved.
|
|
49
|
+
- **Determinism:** candidate rules are sorted with fixed code-unit ordering before a match is selected, preventing replicated insertion order from changing the matched rule or digest.
|
|
50
|
+
|
|
51
|
+
## 6. External surfaces
|
|
52
|
+
|
|
53
|
+
No route, message, notice, external call, persistent transition, URL, or operator-facing action is added. The exported detailed result is an internal API for later reviewed slices.
|
|
54
|
+
|
|
55
|
+
## 6b. Operator-surface quality (Operator-Surface Quality standard)
|
|
56
|
+
|
|
57
|
+
No operator surface — not applicable.
|
|
58
|
+
|
|
59
|
+
## 7. Multi-machine posture (Cross-Machine Coherence)
|
|
60
|
+
|
|
61
|
+
**Replicated deterministic behavior:** the frozen envelope remains in the existing autonomous-run record and this pure evaluator produces the same result on every machine. Canonical object fields, array-valued constraints, and candidate rule selection use fixed code-unit ordering rather than locale or insertion order. Project-relative path syntax is deliberately OS-neutral. The decision stores no machine-local authority and remains inert until a later execution slice performs fresh local authority rebind.
|
|
62
|
+
|
|
63
|
+
It emits no user-facing notices, holds no new durable state, and generates no URLs. Topic transfer therefore cannot strand new Slice 2 state.
|
|
64
|
+
|
|
65
|
+
## 8. Rollback cost
|
|
66
|
+
|
|
67
|
+
- **Hot-fix release:** revert the detailed evaluator and restore the previous compatibility function body.
|
|
68
|
+
- **Data migration:** none; no stored schema changes.
|
|
69
|
+
- **Agent state repair:** none.
|
|
70
|
+
- **User visibility:** none; no runtime actuator consumes the result yet.
|
|
71
|
+
|
|
72
|
+
## Conclusion
|
|
73
|
+
|
|
74
|
+
Slice 2 closes the scope-derivation boundary without introducing semantic judgment or side effects. The main risks—path overreach, traversal, malformed input, rule-order divergence, and hidden intelligence seams—are covered by focused tests. It is ready for independent second-pass review and the normal Instar gates.
|
|
75
|
+
|
|
76
|
+
## Second-pass review (if required)
|
|
77
|
+
|
|
78
|
+
**Reviewer:** Hegel (`continuation_side_effects_review`)
|
|
79
|
+
**Independent read of the artifact:** concur
|
|
80
|
+
|
|
81
|
+
The first pass caught Windows drive-qualified and noncanonical double-slash paths at the project-relative boundary. Slice 2 now rejects drive-absolute and drive-relative syntax in both requested and frozen targets, rejects invalid frozen targets as corrupt enrollment state, and canonicalizes equivalent trailing-slash targets for stable decision digests. The reviewer concurs that the revised path, cross-machine, fail-closed, and no-intelligence-seam claims are accurately tested and documented.
|
|
82
|
+
|
|
83
|
+
## Evidence pointers
|
|
84
|
+
|
|
85
|
+
- `tests/unit/standing-drive-schema.test.ts`: closed derivation, traversal/drive-path, cross-machine order, malformed-input, and no-intelligence-seam canaries.
|
|
86
|
+
- Focused Vitest: 30/30 passing; combined store and no-silent-fallback regressions: 50/50 passing.
|
|
87
|
+
- TypeScript build and repository lint: passing.
|
|
88
|
+
|
|
89
|
+
## Class-Closure Declaration (display-only mirror)
|
|
90
|
+
|
|
91
|
+
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.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# ELI16 — StandingDrive Slice 2
|
|
2
|
+
|
|
3
|
+
A standing drive must not gain authority merely because its next proposed step sounds helpful or closely related to the operator's goal. Slice 2 turns that rule into a closed, auditable calculation. The calculation receives only the frozen drive envelope, current phase id, and structured action request. It returns an allow or a typed hold, the exact frozen rule that matched when one exists, the envelope digest used, and a deterministic decision digest. There is no model prompt, similarity score, network lookup, clock, or locale-sensitive comparison in the decision path.
|
|
4
|
+
|
|
5
|
+
Git and local-test targets use safe project-relative prefix semantics. An operator-approved `src/` scope therefore includes `src/core/file.ts`, but cannot escape through `..`, an absolute path, or a platform-specific backslash path. Other domains retain exact target matching. Constraints are canonicalized by fixed code-unit order, so two machines receive the same result even when object fields or replicated rule arrays arrive in different insertion orders. If multiple frozen rules match, the lowest code-unit rule id is selected deterministically.
|
|
6
|
+
|
|
7
|
+
Malformed runtime input, unknown schema versions, the wrong phase or domain, a non-enumerated operation, and a constraint mismatch all fail closed into explicit typed results. The original enum-only helper remains available as a compatibility projection over the new detailed authority, so existing callers do not change behavior while later execution slices gain an audit-grade result.
|
|
8
|
+
|
|
9
|
+
This slice still does not wake a session, dispatch an external effect, send a message, or grant new external permission. It only establishes the deterministic scope authority that every later actuator must compose with the existing lifecycle, authority-rebind, breaker, stop, operation, and coherence gates.
|