instar 1.3.512 → 1.3.514
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/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +102 -2
- package/dist/commands/server.js.map +1 -1
- package/dist/config/ConfigDefaults.d.ts.map +1 -1
- package/dist/config/ConfigDefaults.js +29 -8
- package/dist/config/ConfigDefaults.js.map +1 -1
- package/dist/core/MeshRpc.d.ts +6 -0
- package/dist/core/MeshRpc.d.ts.map +1 -1
- package/dist/core/MeshRpc.js +1 -0
- package/dist/core/MeshRpc.js.map +1 -1
- package/dist/core/PeerPresencePuller.d.ts +19 -0
- package/dist/core/PeerPresencePuller.d.ts.map +1 -1
- package/dist/core/PeerPresencePuller.js +7 -0
- package/dist/core/PeerPresencePuller.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +14 -1
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/PreferencesManager.d.ts +34 -0
- package/dist/core/PreferencesManager.d.ts.map +1 -1
- package/dist/core/PreferencesManager.js +74 -0
- package/dist/core/PreferencesManager.js.map +1 -1
- package/dist/core/PreferencesSync.d.ts +167 -0
- package/dist/core/PreferencesSync.d.ts.map +1 -0
- package/dist/core/PreferencesSync.js +307 -0
- package/dist/core/PreferencesSync.js.map +1 -0
- package/dist/core/devGatedFeatures.d.ts.map +1 -1
- package/dist/core/devGatedFeatures.js +6 -5
- package/dist/core/devGatedFeatures.js.map +1 -1
- package/dist/core/types.d.ts +7 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +2 -1
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/server/AgentServer.d.ts +3 -0
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +1 -0
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/routes.d.ts +5 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +27 -1
- package/dist/server/routes.js.map +1 -1
- package/dist/threadline/NegotiatorGate.d.ts +6 -0
- package/dist/threadline/NegotiatorGate.d.ts.map +1 -1
- package/dist/threadline/NegotiatorGate.js +3 -1
- package/dist/threadline/NegotiatorGate.js.map +1 -1
- package/dist/threadline/NegotiatorLease.d.ts +17 -2
- package/dist/threadline/NegotiatorLease.d.ts.map +1 -1
- package/dist/threadline/NegotiatorLease.js +10 -2
- package/dist/threadline/NegotiatorLease.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +64 -64
- package/src/scaffold/templates.ts +2 -1
- package/upgrades/1.3.513.md +61 -0
- package/upgrades/1.3.514.md +42 -0
- package/upgrades/side-effects/multi-machine-seamlessness-ws21-preferences-pool.md +116 -0
- package/upgrades/side-effects/threadline-single-negotiator-devgate.md +62 -0
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PreferencesSync — WS2.1 of multi-machine seamlessness: the serve / receive /
|
|
3
|
+
* merge engine behind the `preferences-sync` mesh verb. Replicates the
|
|
4
|
+
* correction-learning preference store (PreferencesManager,
|
|
5
|
+
* `.instar/preferences.json`) across the machine pool so a preference learned on
|
|
6
|
+
* machine A is honored on machine B.
|
|
7
|
+
*
|
|
8
|
+
* Spec: MULTI-MACHINE-SEAMLESSNESS-SPEC §WS2.1. Mirrors the COMMITMENTS-COHERENCE
|
|
9
|
+
* replication pattern (CommitmentsSync.ts) — transport-agnostic, seam-injected;
|
|
10
|
+
* the server registers the serve side as the verb handler and rides the
|
|
11
|
+
* PeerPresencePuller cadence on the receive side, exactly like journal-sync.
|
|
12
|
+
*
|
|
13
|
+
* Preferences are ADVISORY SIGNALS (session-start hints), never authority — so
|
|
14
|
+
* this is read-replication only, no write-back, no election, no quorum.
|
|
15
|
+
*
|
|
16
|
+
* Load-bearing rules (mirrors §3.2):
|
|
17
|
+
* - Pages are seq-windowed DELTAS by `lastMutatedSeq` (asc, dedupeKey tiebreak),
|
|
18
|
+
* EXCLUSIVE cursor, capped at `syncPageBytes` with ≥1 record/page — a store
|
|
19
|
+
* replicates fully over multiple pages, never a blob whose tail strands.
|
|
20
|
+
* - Incarnation fencing: a stale incarnation is answered `incarnationChanged`;
|
|
21
|
+
* the receiver discards the replica wholesale and re-pulls from 0 (a restored
|
|
22
|
+
* `.instar/preferences.json` must never strand replication).
|
|
23
|
+
* - First-hop with teeth: the replica owner derives from the AUTHENTICATED
|
|
24
|
+
* envelope sender; any served row whose originMachineId names a DIFFERENT
|
|
25
|
+
* machine is rejected + counted (forgedRows) — a peer cannot inject rows
|
|
26
|
+
* attributed to a third machine.
|
|
27
|
+
* - Disclosure honesty: the free-text `learning` is credential-shape-scanned at
|
|
28
|
+
* serve time; a flagged row ships with `learning` REDACTED (it still
|
|
29
|
+
* replicates — usefulness never depends on the scan).
|
|
30
|
+
*
|
|
31
|
+
* The ONE merge difference from commitments (design fork, resolved): commitments
|
|
32
|
+
* union on composite key with no cross-origin merge; preferences COLLAPSE by
|
|
33
|
+
* `dedupeKey` because the same dedupeKey on two machines is the SAME learned
|
|
34
|
+
* lesson observed independently. The merged view presents ONE row per dedupeKey
|
|
35
|
+
* (newest `recordedAt` wins the fields; `dedupeCount` sums across origins) so the
|
|
36
|
+
* session-start block never double-injects the same guidance.
|
|
37
|
+
*/
|
|
38
|
+
import fs from 'node:fs';
|
|
39
|
+
import path from 'node:path';
|
|
40
|
+
import { redactForLiveTail } from './liveTailRedaction.js';
|
|
41
|
+
export const DEFAULT_SYNC_PAGE_BYTES = 256 * 1024;
|
|
42
|
+
export const DEFAULT_REPLICA_STALE_WARN_MS = 10 * 60 * 1000;
|
|
43
|
+
/** Per-store bound — preferences are few; a runaway peer can't bloat the merge. */
|
|
44
|
+
export const DEFAULT_MAX_REPLICATED_PREFERENCES = 500;
|
|
45
|
+
export function buildPreferencesSyncPage(req, deps) {
|
|
46
|
+
const { incarnation, replicationSeq } = deps.advert;
|
|
47
|
+
// Incarnation fence: a stale requester re-pulls from 0.
|
|
48
|
+
if (req.incarnation !== undefined && req.incarnation !== incarnation) {
|
|
49
|
+
return { incarnation, replicationSeq, records: [], nextSinceSeq: 0, done: false, incarnationChanged: true };
|
|
50
|
+
}
|
|
51
|
+
const sinceSeq = Number.isFinite(req.sinceSeq) && req.sinceSeq >= 0 ? req.sinceSeq : 0;
|
|
52
|
+
const pageBytes = deps.syncPageBytes && deps.syncPageBytes > 0 ? deps.syncPageBytes : DEFAULT_SYNC_PAGE_BYTES;
|
|
53
|
+
// Delta window, EXCLUSIVE cursor; (lastMutatedSeq asc, dedupeKey tiebreak).
|
|
54
|
+
const eligible = deps.records
|
|
55
|
+
.map((r) => ({ r, seq: typeof r.lastMutatedSeq === 'number' ? r.lastMutatedSeq : 0 }))
|
|
56
|
+
.filter((x) => x.seq > sinceSeq)
|
|
57
|
+
.sort((a, b) => (a.seq - b.seq) || a.r.dedupeKey.localeCompare(b.r.dedupeKey));
|
|
58
|
+
const records = [];
|
|
59
|
+
let bytes = 0;
|
|
60
|
+
let nextSinceSeq = sinceSeq;
|
|
61
|
+
for (const { r, seq } of eligible) {
|
|
62
|
+
const scan = redactForLiveTail(r.learning);
|
|
63
|
+
// `violationPattern` is a LOCAL-ONLY signal (the user's self-violation
|
|
64
|
+
// detection regex/keywords — e.g. `regex:api_key|secret|token`). It is
|
|
65
|
+
// never injected into the session block and reveals the operator's security
|
|
66
|
+
// posture, so it MUST NOT replicate to peers (review WS2.1 finding #1).
|
|
67
|
+
// Strip it explicitly rather than spreading the whole record.
|
|
68
|
+
const { violationPattern: _localOnly, lastMutatedSeq: _seq, ...replicable } = r;
|
|
69
|
+
void _localOnly;
|
|
70
|
+
void _seq;
|
|
71
|
+
const row = {
|
|
72
|
+
...replicable,
|
|
73
|
+
learning: scan.redactedCount > 0 ? scan.text : r.learning,
|
|
74
|
+
originMachineId: deps.ownMachineId,
|
|
75
|
+
lastMutatedSeq: seq,
|
|
76
|
+
...(scan.redactedCount > 0 ? { textRedacted: true } : {}),
|
|
77
|
+
};
|
|
78
|
+
const size = Buffer.byteLength(JSON.stringify(row), 'utf-8');
|
|
79
|
+
// ≥1 record per page even when a single record exceeds the cap.
|
|
80
|
+
if (records.length > 0 && bytes + size > pageBytes)
|
|
81
|
+
break;
|
|
82
|
+
records.push(row);
|
|
83
|
+
bytes += size;
|
|
84
|
+
nextSinceSeq = seq;
|
|
85
|
+
}
|
|
86
|
+
const done = records.length === 0 || !eligible.some((x) => x.seq > nextSinceSeq);
|
|
87
|
+
return { incarnation, replicationSeq, records, nextSinceSeq, done };
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* The per-peer replica store: one JSON file per owner under
|
|
91
|
+
* `state/preference-replicas/`, written ONLY by this receive path
|
|
92
|
+
* (single-writer), temp-file + atomic rename, corrupt → quarantine + fresh
|
|
93
|
+
* (never silently empty).
|
|
94
|
+
*/
|
|
95
|
+
export class PreferenceReplicaStore {
|
|
96
|
+
dir;
|
|
97
|
+
now;
|
|
98
|
+
logger;
|
|
99
|
+
maxRecords;
|
|
100
|
+
cache = new Map();
|
|
101
|
+
constructor(config) {
|
|
102
|
+
this.dir = path.join(config.stateDir, 'state', 'preference-replicas');
|
|
103
|
+
this.now = config.now ?? (() => new Date());
|
|
104
|
+
this.logger = config.logger ?? (() => { });
|
|
105
|
+
this.maxRecords =
|
|
106
|
+
config.maxRecordsPerPeer && config.maxRecordsPerPeer > 0
|
|
107
|
+
? config.maxRecordsPerPeer
|
|
108
|
+
: DEFAULT_MAX_REPLICATED_PREFERENCES;
|
|
109
|
+
}
|
|
110
|
+
/** The cursor to request next from a peer (0 + no incarnation when fresh). */
|
|
111
|
+
cursorFor(ownerMachineId) {
|
|
112
|
+
const r = this.load(ownerMachineId);
|
|
113
|
+
return r ? { sinceSeq: r.sinceSeq, incarnation: r.incarnation } : { sinceSeq: 0 };
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Apply a served page. `senderMachineId` is the AUTHENTICATED envelope
|
|
117
|
+
* sender — the replica identity derives from it, never a payload field.
|
|
118
|
+
*/
|
|
119
|
+
applyPage(senderMachineId, page) {
|
|
120
|
+
let replica = this.load(senderMachineId);
|
|
121
|
+
let replaced = false;
|
|
122
|
+
if (page.incarnationChanged || !replica || replica.incarnation !== page.incarnation) {
|
|
123
|
+
replica = {
|
|
124
|
+
version: 1,
|
|
125
|
+
ownerMachineId: senderMachineId,
|
|
126
|
+
incarnation: page.incarnation,
|
|
127
|
+
sinceSeq: 0,
|
|
128
|
+
receivedAt: this.now().toISOString(),
|
|
129
|
+
records: {},
|
|
130
|
+
};
|
|
131
|
+
replaced = true;
|
|
132
|
+
if (page.incarnationChanged) {
|
|
133
|
+
this.persist(senderMachineId, replica);
|
|
134
|
+
return { applied: 0, forgedRows: 0, replaced, dropped: 0 };
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
let applied = 0;
|
|
138
|
+
let forgedRows = 0;
|
|
139
|
+
let dropped = 0;
|
|
140
|
+
for (const row of page.records) {
|
|
141
|
+
if (row.originMachineId !== senderMachineId) {
|
|
142
|
+
forgedRows++; // first-hop with teeth — counted, never applied
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
const isNewKey = !(row.dedupeKey in replica.records);
|
|
146
|
+
if (isNewKey && Object.keys(replica.records).length >= this.maxRecords) {
|
|
147
|
+
dropped++; // per-peer bound reached — an existing key may still update
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
replica.records[row.dedupeKey] = row;
|
|
151
|
+
applied++;
|
|
152
|
+
}
|
|
153
|
+
replica.sinceSeq = Math.max(replica.sinceSeq, page.nextSinceSeq);
|
|
154
|
+
replica.receivedAt = this.now().toISOString();
|
|
155
|
+
this.persist(senderMachineId, replica);
|
|
156
|
+
return { applied, forgedRows, replaced, dropped };
|
|
157
|
+
}
|
|
158
|
+
/** Every replica's rows, tagged with owner + receivedAt. */
|
|
159
|
+
allReplicas() {
|
|
160
|
+
const out = [];
|
|
161
|
+
let names = [];
|
|
162
|
+
try {
|
|
163
|
+
names = fs.readdirSync(this.dir).filter((n) => n.endsWith('.json') && !n.includes('.corrupt-'));
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
/* @silent-fallback-ok: replica dir absent = no replicas yet (single-machine or fresh boot) — an empty merge, never an error (MULTI-MACHINE-SEAMLESSNESS-SPEC §WS2.1) */
|
|
167
|
+
}
|
|
168
|
+
for (const name of names) {
|
|
169
|
+
const owner = name.replace(/\.json$/, '');
|
|
170
|
+
const r = this.load(owner);
|
|
171
|
+
if (r)
|
|
172
|
+
out.push({ ownerMachineId: r.ownerMachineId, receivedAt: r.receivedAt, records: Object.values(r.records) });
|
|
173
|
+
}
|
|
174
|
+
return out;
|
|
175
|
+
}
|
|
176
|
+
fileFor(owner) {
|
|
177
|
+
return path.join(this.dir, `${owner.replace(/[^A-Za-z0-9_.-]/g, '_')}.json`);
|
|
178
|
+
}
|
|
179
|
+
load(owner) {
|
|
180
|
+
const cached = this.cache.get(owner);
|
|
181
|
+
if (cached)
|
|
182
|
+
return cached;
|
|
183
|
+
const file = this.fileFor(owner);
|
|
184
|
+
let raw;
|
|
185
|
+
try {
|
|
186
|
+
raw = fs.readFileSync(file, 'utf-8');
|
|
187
|
+
}
|
|
188
|
+
catch {
|
|
189
|
+
/* @silent-fallback-ok: absent replica = first contact with this peer — a fresh pull from 0, never an error (MULTI-MACHINE-SEAMLESSNESS-SPEC §WS2.1) */
|
|
190
|
+
return null;
|
|
191
|
+
}
|
|
192
|
+
try {
|
|
193
|
+
const parsed = JSON.parse(raw);
|
|
194
|
+
if (parsed?.version !== 1 || typeof parsed.records !== 'object')
|
|
195
|
+
throw new Error('shape');
|
|
196
|
+
this.cache.set(owner, parsed);
|
|
197
|
+
return parsed;
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
try {
|
|
201
|
+
fs.renameSync(file, `${file}.corrupt-${this.now().getTime()}`);
|
|
202
|
+
}
|
|
203
|
+
catch {
|
|
204
|
+
/* @silent-fallback-ok: quarantine rename can lose a race; the fresh re-pull below proceeds either way (MULTI-MACHINE-SEAMLESSNESS-SPEC §WS2.1) */
|
|
205
|
+
}
|
|
206
|
+
this.logger(`preference replica for ${owner} unreadable — quarantined; full re-pull will rebuild it`);
|
|
207
|
+
return null;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
persist(owner, replica) {
|
|
211
|
+
fs.mkdirSync(this.dir, { recursive: true });
|
|
212
|
+
const file = this.fileFor(owner);
|
|
213
|
+
const tmp = `${file}.tmp-${process.pid}`;
|
|
214
|
+
fs.writeFileSync(tmp, JSON.stringify(replica, null, 2));
|
|
215
|
+
fs.renameSync(tmp, file);
|
|
216
|
+
this.cache.set(owner, replica);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Clock-skew tolerance for merge ordering. A peer's `recordedAt` is capped at
|
|
221
|
+
* `now + this` before it can win a dedupeKey collision — so a machine with a
|
|
222
|
+
* fast/hostile clock (e.g. set a year ahead) cannot silently dominate EVERY
|
|
223
|
+
* preference across the pool (review WS2.1 finding #2; the spec's clock-skew
|
|
224
|
+
* requirement). Real-world cross-machine clock drift is seconds-to-minutes; a
|
|
225
|
+
* full day is a generous ceiling that never penalizes honest machines.
|
|
226
|
+
* NOTE: this is the shipped mitigation; full HLC (logical counters) is a tracked
|
|
227
|
+
* follow-up. <!-- tracked: WS2.1 HLC counters -->
|
|
228
|
+
*/
|
|
229
|
+
export const CLOCK_SKEW_TOLERANCE_MS = 24 * 60 * 60 * 1000;
|
|
230
|
+
/**
|
|
231
|
+
* HLC-light ordering: (effective recordedAt-ms, originMachineId) lexicographic,
|
|
232
|
+
* newer wins. `capMs` bounds a future-skewed timestamp so it cannot win on a
|
|
233
|
+
* fabricated/drifted clock.
|
|
234
|
+
*/
|
|
235
|
+
function isNewer(aRecordedAt, aOrigin, bRecordedAt, bOrigin, capMs) {
|
|
236
|
+
// A timestamp beyond `now + tolerance` is not merely clamped to ~now (that
|
|
237
|
+
// would still let it beat a genuine recent write); it is UNTRUSTWORTHY — a
|
|
238
|
+
// fabricated/grossly-skewed clock — so it is treated as the OLDEST (0) and
|
|
239
|
+
// loses every collision to any real timestamp. Within tolerance, normal
|
|
240
|
+
// recency applies (review WS2.1 finding #2).
|
|
241
|
+
const pa = Date.parse(aRecordedAt) || 0;
|
|
242
|
+
const pb = Date.parse(bRecordedAt) || 0;
|
|
243
|
+
const at = pa > capMs ? 0 : pa;
|
|
244
|
+
const bt = pb > capMs ? 0 : pb;
|
|
245
|
+
if (at !== bt)
|
|
246
|
+
return at > bt;
|
|
247
|
+
return aOrigin > bOrigin; // deterministic tiebreak
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Collapse own + replicas by dedupeKey into one merged row per learned
|
|
251
|
+
* preference. Newest (recordedAt, origin) wins the fields; dedupeCount SUMS
|
|
252
|
+
* across the distinct contributing origins (true cross-machine observation
|
|
253
|
+
* count); contributingMachines lists every origin that holds the key.
|
|
254
|
+
*/
|
|
255
|
+
export function mergePreferenceViews(deps) {
|
|
256
|
+
const byKey = new Map();
|
|
257
|
+
const capMs = (deps.now?.() ?? new Date()).getTime() + CLOCK_SKEW_TOLERANCE_MS;
|
|
258
|
+
const ingest = (entry, origin, redacted) => {
|
|
259
|
+
const key = entry.dedupeKey;
|
|
260
|
+
const existing = byKey.get(key);
|
|
261
|
+
const count = typeof entry.dedupeCount === 'number' && entry.dedupeCount >= 1 ? entry.dedupeCount : 1;
|
|
262
|
+
if (!existing) {
|
|
263
|
+
byKey.set(key, {
|
|
264
|
+
winner: entry,
|
|
265
|
+
winnerOrigin: origin,
|
|
266
|
+
winnerRecordedAt: entry.recordedAt,
|
|
267
|
+
countByOrigin: new Map([[origin, count]]),
|
|
268
|
+
redacted,
|
|
269
|
+
});
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
// Each origin contributes ONCE per key (its own upsert collapses dupes);
|
|
273
|
+
// last write from the same origin replaces its count rather than summing.
|
|
274
|
+
existing.countByOrigin.set(origin, count);
|
|
275
|
+
existing.redacted = existing.redacted || redacted;
|
|
276
|
+
if (isNewer(entry.recordedAt, origin, existing.winnerRecordedAt, existing.winnerOrigin, capMs)) {
|
|
277
|
+
existing.winner = entry;
|
|
278
|
+
existing.winnerOrigin = origin;
|
|
279
|
+
existing.winnerRecordedAt = entry.recordedAt;
|
|
280
|
+
}
|
|
281
|
+
};
|
|
282
|
+
for (const p of deps.own)
|
|
283
|
+
ingest(p, deps.ownMachineId, false);
|
|
284
|
+
for (const rep of deps.replicas) {
|
|
285
|
+
if (rep.ownerMachineId === deps.ownMachineId)
|
|
286
|
+
continue; // never our own echo
|
|
287
|
+
for (const p of rep.records)
|
|
288
|
+
ingest(p, p.originMachineId, p.textRedacted === true);
|
|
289
|
+
}
|
|
290
|
+
const out = [];
|
|
291
|
+
for (const acc of byKey.values()) {
|
|
292
|
+
let dedupeCount = 0;
|
|
293
|
+
for (const c of acc.countByOrigin.values())
|
|
294
|
+
dedupeCount += c;
|
|
295
|
+
out.push({
|
|
296
|
+
...acc.winner,
|
|
297
|
+
dedupeCount,
|
|
298
|
+
contributingMachines: [...acc.countByOrigin.keys()].sort(),
|
|
299
|
+
winningMachineId: acc.winnerOrigin,
|
|
300
|
+
...(acc.redacted ? { textRedacted: true } : {}),
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
// Stable, useful order: newest first (the injection block consumes this).
|
|
304
|
+
out.sort((a, b) => (Date.parse(b.recordedAt) || 0) - (Date.parse(a.recordedAt) || 0));
|
|
305
|
+
return out;
|
|
306
|
+
}
|
|
307
|
+
//# sourceMappingURL=PreferencesSync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PreferencesSync.js","sourceRoot":"","sources":["../../src/core/PreferencesSync.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devGatedFeatures.d.ts","sourceRoot":"","sources":["../../src/core/devGatedFeatures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,kBAAkB,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"devGatedFeatures.d.ts","sourceRoot":"","sources":["../../src/core/devGatedFeatures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,kBAAkB,EAAE,eAAe,EAmF/C,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,gBAAgB,GACxB,aAAa,GACb,sBAAsB,GACtB,cAAc,GACd,iBAAiB,GACjB,0BAA0B,CAAC;AAE/B,MAAM,WAAW,iBAAiB;IAChC,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,EAyHnD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAO5E"}
|
|
@@ -96,6 +96,12 @@ export const DEV_GATED_FEATURES = [
|
|
|
96
96
|
description: 'TIME_CLAIM outbound advisory — flags elapsed/remaining/percent claims that contradict the live session clock (operator mandate 2026-06-12).',
|
|
97
97
|
justification: 'Deterministic regex check feeding the existing inform-only advisory surface (never blocks; sender fixes or acks); no LLM, no egress, no spend, no destructive action.',
|
|
98
98
|
},
|
|
99
|
+
{
|
|
100
|
+
name: 'threadlineSingleNegotiator',
|
|
101
|
+
configPath: 'threadline.singleNegotiator.enabled',
|
|
102
|
+
description: 'Threadline single-negotiator lease — one session owns each conversation\'s outbound voice (THREADLINE-SINGLE-NEGOTIATOR-SPEC, CMT-1362).',
|
|
103
|
+
justification: 'Lives live on a dev agent ONLY in dry-run (dryRun defaults true) — it engages the lease logic and logs every would-hold verdict for the FD-7 false-positive telemetry but withholds NOTHING (a real send is only blocked by an explicit dryRun:false). No egress, no spend, no destructive action; this is exactly the dogfooding posture FD-7 requires before the lease can ever enforce. (Was mis-classified deliberate-fleet-default at ship, which starved the telemetry — corrected here.)',
|
|
104
|
+
},
|
|
99
105
|
];
|
|
100
106
|
export const DARK_GATE_EXCLUSIONS = [
|
|
101
107
|
// ── destructive — kills/deletes on a heuristic; off + dry-run for EVERYONE ──
|
|
@@ -168,11 +174,6 @@ export const DARK_GATE_EXCLUSIONS = [
|
|
|
168
174
|
category: 'deliberate-fleet-default',
|
|
169
175
|
reason: 'green-PR auto-merge watcher — action-bearing (merges PRs), so NOT dev-gated (the dev-gate registry bars action-bearing features, devGatedFeatures.ts contract). Off fleet-wide; flipped on per dev agent with expectedGhLogin. safe-merge re-verifies + lease-gated + runtime rollback + breaker; GitHub App is a binding precondition before any fleet promotion.',
|
|
170
176
|
},
|
|
171
|
-
{
|
|
172
|
-
configPath: 'threadline.singleNegotiator.enabled',
|
|
173
|
-
category: 'deliberate-fleet-default',
|
|
174
|
-
reason: 'lease send-gate withholds a non-owner content send; off+dry-run-first for everyone until dry-run telemetry shows an acceptable false-positive rate (THREADLINE-SINGLE-NEGOTIATOR-SPEC FD-7)',
|
|
175
|
-
},
|
|
176
177
|
{
|
|
177
178
|
configPath: 'monitoring.bootHealthBeacon.enabled',
|
|
178
179
|
category: 'deliberate-fleet-default',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devGatedFeatures.js","sourceRoot":"","sources":["../../src/core/devGatedFeatures.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"devGatedFeatures.js","sourceRoot":"","sources":["../../src/core/devGatedFeatures.ts"],"names":[],"mappings":"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"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -1986,6 +1986,13 @@ export interface CoherenceJournalUserConfig {
|
|
|
1986
1986
|
maxPendingOpsPerOwner?: number;
|
|
1987
1987
|
opKeyTtlDays?: number;
|
|
1988
1988
|
};
|
|
1989
|
+
/** WS2.1 preferences pool — independent page-sizing dials (MULTI-MACHINE-SEAMLESSNESS-SPEC §WS2.1). */
|
|
1990
|
+
preferences?: {
|
|
1991
|
+
syncPageBytes?: number;
|
|
1992
|
+
maxSyncPagesPerTick?: number;
|
|
1993
|
+
replicaStaleWarnMs?: number;
|
|
1994
|
+
maxReplicatedPreferences?: number;
|
|
1995
|
+
};
|
|
1989
1996
|
/**
|
|
1990
1997
|
* Per-kind retention. rotateKeep N>0 = rotate at maxFileBytes, keep N
|
|
1991
1998
|
* archives, delete older; 0 = rotate at maxFileBytes but NEVER delete
|