instar 1.3.511 → 1.3.513

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.
Files changed (91) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +168 -2
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/config/ConfigDefaults.d.ts.map +1 -1
  5. package/dist/config/ConfigDefaults.js +42 -0
  6. package/dist/config/ConfigDefaults.js.map +1 -1
  7. package/dist/core/CoherenceJournal.d.ts +31 -1
  8. package/dist/core/CoherenceJournal.d.ts.map +1 -1
  9. package/dist/core/CoherenceJournal.js +49 -2
  10. package/dist/core/CoherenceJournal.js.map +1 -1
  11. package/dist/core/JournalSyncApplier.d.ts.map +1 -1
  12. package/dist/core/JournalSyncApplier.js +18 -0
  13. package/dist/core/JournalSyncApplier.js.map +1 -1
  14. package/dist/core/MeshRpc.d.ts +6 -0
  15. package/dist/core/MeshRpc.d.ts.map +1 -1
  16. package/dist/core/MeshRpc.js +1 -0
  17. package/dist/core/MeshRpc.js.map +1 -1
  18. package/dist/core/PeerPresencePuller.d.ts +19 -0
  19. package/dist/core/PeerPresencePuller.d.ts.map +1 -1
  20. package/dist/core/PeerPresencePuller.js +7 -0
  21. package/dist/core/PeerPresencePuller.js.map +1 -1
  22. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  23. package/dist/core/PostUpdateMigrator.js +57 -0
  24. package/dist/core/PostUpdateMigrator.js.map +1 -1
  25. package/dist/core/PreferencesManager.d.ts +34 -0
  26. package/dist/core/PreferencesManager.d.ts.map +1 -1
  27. package/dist/core/PreferencesManager.js +74 -0
  28. package/dist/core/PreferencesManager.js.map +1 -1
  29. package/dist/core/PreferencesSync.d.ts +167 -0
  30. package/dist/core/PreferencesSync.d.ts.map +1 -0
  31. package/dist/core/PreferencesSync.js +307 -0
  32. package/dist/core/PreferencesSync.js.map +1 -0
  33. package/dist/core/devGatedFeatures.d.ts.map +1 -1
  34. package/dist/core/devGatedFeatures.js +5 -0
  35. package/dist/core/devGatedFeatures.js.map +1 -1
  36. package/dist/core/types.d.ts +34 -0
  37. package/dist/core/types.d.ts.map +1 -1
  38. package/dist/core/types.js.map +1 -1
  39. package/dist/monitoring/GreenPrAutoMerger.d.ts +188 -0
  40. package/dist/monitoring/GreenPrAutoMerger.d.ts.map +1 -0
  41. package/dist/monitoring/GreenPrAutoMerger.js +393 -0
  42. package/dist/monitoring/GreenPrAutoMerger.js.map +1 -0
  43. package/dist/monitoring/GuardLatchStore.d.ts +134 -0
  44. package/dist/monitoring/GuardLatchStore.d.ts.map +1 -0
  45. package/dist/monitoring/GuardLatchStore.js +255 -0
  46. package/dist/monitoring/GuardLatchStore.js.map +1 -0
  47. package/dist/monitoring/MergeRunner.d.ts +126 -0
  48. package/dist/monitoring/MergeRunner.d.ts.map +1 -0
  49. package/dist/monitoring/MergeRunner.js +296 -0
  50. package/dist/monitoring/MergeRunner.js.map +1 -0
  51. package/dist/monitoring/floorDriftCanary.d.ts +88 -0
  52. package/dist/monitoring/floorDriftCanary.d.ts.map +1 -0
  53. package/dist/monitoring/floorDriftCanary.js +89 -0
  54. package/dist/monitoring/floorDriftCanary.js.map +1 -0
  55. package/dist/monitoring/greenPrAutomergeWiring.d.ts +73 -0
  56. package/dist/monitoring/greenPrAutomergeWiring.d.ts.map +1 -0
  57. package/dist/monitoring/greenPrAutomergeWiring.js +273 -0
  58. package/dist/monitoring/greenPrAutomergeWiring.js.map +1 -0
  59. package/dist/monitoring/greenPrLogic.d.ts +121 -0
  60. package/dist/monitoring/greenPrLogic.d.ts.map +1 -0
  61. package/dist/monitoring/greenPrLogic.js +198 -0
  62. package/dist/monitoring/greenPrLogic.js.map +1 -0
  63. package/dist/monitoring/guardManifest.d.ts.map +1 -1
  64. package/dist/monitoring/guardManifest.js +12 -0
  65. package/dist/monitoring/guardManifest.js.map +1 -1
  66. package/dist/scaffold/templates.d.ts.map +1 -1
  67. package/dist/scaffold/templates.js +1 -0
  68. package/dist/scaffold/templates.js.map +1 -1
  69. package/dist/server/AgentServer.d.ts +5 -0
  70. package/dist/server/AgentServer.d.ts.map +1 -1
  71. package/dist/server/AgentServer.js +3 -0
  72. package/dist/server/AgentServer.js.map +1 -1
  73. package/dist/server/CapabilityIndex.d.ts.map +1 -1
  74. package/dist/server/CapabilityIndex.js +16 -0
  75. package/dist/server/CapabilityIndex.js.map +1 -1
  76. package/dist/server/routes.d.ts +10 -0
  77. package/dist/server/routes.d.ts.map +1 -1
  78. package/dist/server/routes.js +137 -1
  79. package/dist/server/routes.js.map +1 -1
  80. package/dist/server/stopGate.d.ts +45 -0
  81. package/dist/server/stopGate.d.ts.map +1 -1
  82. package/dist/server/stopGate.js +74 -0
  83. package/dist/server/stopGate.js.map +1 -1
  84. package/package.json +1 -1
  85. package/scripts/safe-merge.mjs +449 -59
  86. package/src/data/builtin-manifest.json +64 -64
  87. package/src/scaffold/templates.ts +1 -0
  88. package/upgrades/1.3.512.md +65 -0
  89. package/upgrades/1.3.513.md +61 -0
  90. package/upgrades/side-effects/green-pr-automerge-enforcement.md +171 -0
  91. package/upgrades/side-effects/multi-machine-seamlessness-ws21-preferences-pool.md +116 -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,EA2E/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"}
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,EA2E/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,EA8HnD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAO5E"}
@@ -163,6 +163,11 @@ export const DARK_GATE_EXCLUSIONS = [
163
163
  reason: 'hold-for-stability policy; trails inboundQueue one rollout stage behind (operator discipline)',
164
164
  },
165
165
  // ── deliberate-fleet-default — off for everyone by design (incl. dev) ──
166
+ {
167
+ configPath: 'monitoring.greenPrAutoMerge.enabled',
168
+ category: 'deliberate-fleet-default',
169
+ 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
+ },
166
171
  {
167
172
  configPath: 'threadline.singleNegotiator.enabled',
168
173
  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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"}
@@ -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
@@ -4065,6 +4072,33 @@ export interface MonitoringConfig {
4065
4072
  /** Override the instar repo path to analyze (default: the agent home). */
4066
4073
  repoPath?: string;
4067
4074
  };
4075
+ /**
4076
+ * green-pr-automerge-enforcement R7: the background watcher that merges a
4077
+ * green, mergeable, non-held PR this agent authored (Phase 7 becomes
4078
+ * machinery). DARK_GATE_EXCLUSIONS: deliberate-fleet-default — off fleet-wide,
4079
+ * flipped on per dev agent with expectedGhLogin. Repo-gated.
4080
+ */
4081
+ greenPrAutoMerge?: {
4082
+ enabled: boolean;
4083
+ dryRun?: boolean;
4084
+ tickIntervalMs?: number;
4085
+ maxAttempts?: number;
4086
+ maxRearmEpisodes?: number;
4087
+ breakerThreshold?: number;
4088
+ deadlineKillBreakerThreshold?: number;
4089
+ busySkipBreakerThreshold?: number;
4090
+ breakerCooldownMin?: number;
4091
+ mergeTimeoutMs?: number;
4092
+ mergeKillGraceMs?: number;
4093
+ /** The agent's verified gh login (R4 identity contract). Unset → inert. */
4094
+ expectedGhLogin?: string;
4095
+ identityRecheckTicks?: number;
4096
+ holdReleaseTicks?: number;
4097
+ staleHoldDays?: number;
4098
+ floorDriftCheckTicks?: number;
4099
+ floorDriftLookbackPrs?: number;
4100
+ floorDriftLookbackCommits?: number;
4101
+ };
4068
4102
  /**
4069
4103
  * Master gate for Telegram delivery of silently-stopped-sentinel escalations
4070
4104
  * (SentinelNotifier). Default false → sentinel notices are logged to the