@engramx/idl 0.16.0-rc.5 → 0.16.0-rc.7
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/engram.did +148 -122
- package/dist/engram.idl.d.ts +142 -121
- package/dist/engram.idl.js +126 -120
- package/dist/market.did +87 -35
- package/dist/market.idl.d.ts +84 -35
- package/dist/market.idl.js +42 -35
- package/package.json +1 -1
package/dist/engram.did
CHANGED
|
@@ -220,11 +220,16 @@ type Result_8 =
|
|
|
220
220
|
Err: Error;
|
|
221
221
|
Ok: nat;
|
|
222
222
|
};
|
|
223
|
-
type
|
|
223
|
+
type Result_71 =
|
|
224
224
|
variant {
|
|
225
225
|
Err: Error;
|
|
226
226
|
Ok: AgentRecord;
|
|
227
227
|
};
|
|
228
|
+
type Result_70 =
|
|
229
|
+
variant {
|
|
230
|
+
Err: Error;
|
|
231
|
+
Ok: Eip712Registration;
|
|
232
|
+
};
|
|
228
233
|
type Result_7 =
|
|
229
234
|
variant {
|
|
230
235
|
Err: Error;
|
|
@@ -233,47 +238,47 @@ type Result_7 =
|
|
|
233
238
|
type Result_69 =
|
|
234
239
|
variant {
|
|
235
240
|
Err: Error;
|
|
236
|
-
Ok:
|
|
241
|
+
Ok: record {activatesAtNs: int;};
|
|
237
242
|
};
|
|
238
243
|
type Result_68 =
|
|
239
244
|
variant {
|
|
240
245
|
Err: Error;
|
|
241
|
-
Ok:
|
|
246
|
+
Ok: CondenseResult;
|
|
242
247
|
};
|
|
243
248
|
type Result_67 =
|
|
244
249
|
variant {
|
|
245
250
|
Err: Error;
|
|
246
|
-
Ok:
|
|
251
|
+
Ok: MemoryRangeExport;
|
|
247
252
|
};
|
|
248
|
-
type
|
|
253
|
+
type Result_65 =
|
|
249
254
|
variant {
|
|
250
255
|
Err: Error;
|
|
251
|
-
Ok:
|
|
256
|
+
Ok: Page_21;
|
|
252
257
|
};
|
|
253
258
|
type Result_64 =
|
|
254
259
|
variant {
|
|
255
260
|
Err: Error;
|
|
256
|
-
Ok:
|
|
261
|
+
Ok: AgentWriteReview;
|
|
257
262
|
};
|
|
258
263
|
type Result_63 =
|
|
259
264
|
variant {
|
|
260
265
|
Err: Error;
|
|
261
|
-
Ok:
|
|
266
|
+
Ok: BackupMetadata;
|
|
262
267
|
};
|
|
263
268
|
type Result_62 =
|
|
264
269
|
variant {
|
|
265
270
|
Err: Error;
|
|
266
|
-
Ok:
|
|
271
|
+
Ok: ChildAllowanceRow;
|
|
267
272
|
};
|
|
268
273
|
type Result_61 =
|
|
269
274
|
variant {
|
|
270
275
|
Err: Error;
|
|
271
|
-
Ok:
|
|
276
|
+
Ok: ChildOpening;
|
|
272
277
|
};
|
|
273
278
|
type Result_60 =
|
|
274
279
|
variant {
|
|
275
280
|
Err: Error;
|
|
276
|
-
Ok:
|
|
281
|
+
Ok: blob;
|
|
277
282
|
};
|
|
278
283
|
type Result_6 =
|
|
279
284
|
variant {
|
|
@@ -283,52 +288,52 @@ type Result_6 =
|
|
|
283
288
|
type Result_59 =
|
|
284
289
|
variant {
|
|
285
290
|
Err: Error;
|
|
286
|
-
Ok:
|
|
291
|
+
Ok: EvmAddresses;
|
|
287
292
|
};
|
|
288
293
|
type Result_58 =
|
|
289
294
|
variant {
|
|
290
295
|
Err: Error;
|
|
291
|
-
Ok:
|
|
296
|
+
Ok: AlertStatus;
|
|
292
297
|
};
|
|
293
298
|
type Result_57 =
|
|
294
299
|
variant {
|
|
295
300
|
Err: Error;
|
|
296
|
-
Ok:
|
|
301
|
+
Ok: MemoryHistory;
|
|
297
302
|
};
|
|
298
303
|
type Result_56 =
|
|
299
304
|
variant {
|
|
300
305
|
Err: Error;
|
|
301
|
-
Ok:
|
|
306
|
+
Ok: MemoryRetentionPolicy;
|
|
302
307
|
};
|
|
303
308
|
type Result_55 =
|
|
304
309
|
variant {
|
|
305
310
|
Err: Error;
|
|
306
|
-
Ok:
|
|
311
|
+
Ok: OwnerConsole;
|
|
307
312
|
};
|
|
308
313
|
type Result_54 =
|
|
309
314
|
variant {
|
|
310
315
|
Err: Error;
|
|
311
|
-
Ok:
|
|
316
|
+
Ok: record {paths: vec text;};
|
|
312
317
|
};
|
|
313
318
|
type Result_53 =
|
|
314
319
|
variant {
|
|
315
320
|
Err: Error;
|
|
316
|
-
Ok:
|
|
321
|
+
Ok: SigningFloorStatus;
|
|
317
322
|
};
|
|
318
323
|
type Result_52 =
|
|
319
324
|
variant {
|
|
320
325
|
Err: Error;
|
|
321
|
-
Ok:
|
|
326
|
+
Ok: SpendCeiling;
|
|
322
327
|
};
|
|
323
328
|
type Result_51 =
|
|
324
329
|
variant {
|
|
325
330
|
Err: Error;
|
|
326
|
-
Ok:
|
|
331
|
+
Ok: SpendingPolicy;
|
|
327
332
|
};
|
|
328
333
|
type Result_50 =
|
|
329
334
|
variant {
|
|
330
335
|
Err: Error;
|
|
331
|
-
Ok:
|
|
336
|
+
Ok: StorageReport;
|
|
332
337
|
};
|
|
333
338
|
type Result_5 =
|
|
334
339
|
variant {
|
|
@@ -338,52 +343,52 @@ type Result_5 =
|
|
|
338
343
|
type Result_49 =
|
|
339
344
|
variant {
|
|
340
345
|
Err: Error;
|
|
341
|
-
Ok:
|
|
346
|
+
Ok: WalletBalances;
|
|
342
347
|
};
|
|
343
348
|
type Result_48 =
|
|
344
349
|
variant {
|
|
345
350
|
Err: Error;
|
|
346
|
-
Ok:
|
|
351
|
+
Ok: WorldIdConfig;
|
|
347
352
|
};
|
|
348
353
|
type Result_47 =
|
|
349
354
|
variant {
|
|
350
355
|
Err: Error;
|
|
351
|
-
Ok:
|
|
356
|
+
Ok: WorldIdRpContext;
|
|
352
357
|
};
|
|
353
358
|
type Result_46 =
|
|
354
359
|
variant {
|
|
355
360
|
Err: Error;
|
|
356
|
-
Ok:
|
|
361
|
+
Ok: opt text;
|
|
357
362
|
};
|
|
358
363
|
type Result_45 =
|
|
359
364
|
variant {
|
|
360
365
|
Err: Error;
|
|
361
|
-
Ok:
|
|
366
|
+
Ok: bool;
|
|
362
367
|
};
|
|
363
368
|
type Result_44 =
|
|
364
369
|
variant {
|
|
365
370
|
Err: Error;
|
|
366
|
-
Ok:
|
|
371
|
+
Ok: text;
|
|
367
372
|
};
|
|
368
373
|
type Result_43 =
|
|
369
374
|
variant {
|
|
370
375
|
Err: Error;
|
|
371
|
-
Ok:
|
|
376
|
+
Ok: Page_20;
|
|
372
377
|
};
|
|
373
378
|
type Result_42 =
|
|
374
379
|
variant {
|
|
375
380
|
Err: Error;
|
|
376
|
-
Ok:
|
|
381
|
+
Ok: Page_19;
|
|
377
382
|
};
|
|
378
383
|
type Result_41 =
|
|
379
384
|
variant {
|
|
380
385
|
Err: Error;
|
|
381
|
-
Ok:
|
|
386
|
+
Ok: Page_18;
|
|
382
387
|
};
|
|
383
388
|
type Result_40 =
|
|
384
389
|
variant {
|
|
385
390
|
Err: Error;
|
|
386
|
-
Ok:
|
|
391
|
+
Ok: Page_17;
|
|
387
392
|
};
|
|
388
393
|
type Result_4 =
|
|
389
394
|
variant {
|
|
@@ -393,52 +398,52 @@ type Result_4 =
|
|
|
393
398
|
type Result_39 =
|
|
394
399
|
variant {
|
|
395
400
|
Err: Error;
|
|
396
|
-
Ok:
|
|
401
|
+
Ok: Page_16;
|
|
397
402
|
};
|
|
398
403
|
type Result_38 =
|
|
399
404
|
variant {
|
|
400
405
|
Err: Error;
|
|
401
|
-
Ok:
|
|
406
|
+
Ok: CheckpointPage;
|
|
402
407
|
};
|
|
403
408
|
type Result_37 =
|
|
404
409
|
variant {
|
|
405
410
|
Err: Error;
|
|
406
|
-
Ok:
|
|
411
|
+
Ok: Page_14;
|
|
407
412
|
};
|
|
408
413
|
type Result_36 =
|
|
409
414
|
variant {
|
|
410
415
|
Err: Error;
|
|
411
|
-
Ok:
|
|
416
|
+
Ok: Page_13;
|
|
412
417
|
};
|
|
413
418
|
type Result_35 =
|
|
414
419
|
variant {
|
|
415
420
|
Err: Error;
|
|
416
|
-
Ok:
|
|
421
|
+
Ok: Page_12;
|
|
417
422
|
};
|
|
418
423
|
type Result_34 =
|
|
419
424
|
variant {
|
|
420
425
|
Err: Error;
|
|
421
|
-
Ok:
|
|
426
|
+
Ok: Page_11;
|
|
422
427
|
};
|
|
423
428
|
type Result_33 =
|
|
424
429
|
variant {
|
|
425
430
|
Err: Error;
|
|
426
|
-
Ok:
|
|
431
|
+
Ok: Page_10;
|
|
427
432
|
};
|
|
428
433
|
type Result_32 =
|
|
429
434
|
variant {
|
|
430
435
|
Err: Error;
|
|
431
|
-
Ok:
|
|
436
|
+
Ok: ReceiptPage;
|
|
432
437
|
};
|
|
433
438
|
type Result_31 =
|
|
434
439
|
variant {
|
|
435
440
|
Err: Error;
|
|
436
|
-
Ok:
|
|
441
|
+
Ok: Page_8;
|
|
437
442
|
};
|
|
438
443
|
type Result_30 =
|
|
439
444
|
variant {
|
|
440
445
|
Err: Error;
|
|
441
|
-
Ok:
|
|
446
|
+
Ok: LogPage;
|
|
442
447
|
};
|
|
443
448
|
type Result_3 =
|
|
444
449
|
variant {
|
|
@@ -448,52 +453,52 @@ type Result_3 =
|
|
|
448
453
|
type Result_29 =
|
|
449
454
|
variant {
|
|
450
455
|
Err: Error;
|
|
451
|
-
Ok:
|
|
456
|
+
Ok: Page_6;
|
|
452
457
|
};
|
|
453
458
|
type Result_28 =
|
|
454
459
|
variant {
|
|
455
460
|
Err: Error;
|
|
456
|
-
Ok:
|
|
461
|
+
Ok: Page_5;
|
|
457
462
|
};
|
|
458
463
|
type Result_27 =
|
|
459
464
|
variant {
|
|
460
465
|
Err: Error;
|
|
461
|
-
Ok:
|
|
466
|
+
Ok: Page_4;
|
|
462
467
|
};
|
|
463
468
|
type Result_26 =
|
|
464
469
|
variant {
|
|
465
470
|
Err: Error;
|
|
466
|
-
Ok:
|
|
471
|
+
Ok: PaymentSignatureCounts;
|
|
467
472
|
};
|
|
468
473
|
type Result_25 =
|
|
469
474
|
variant {
|
|
470
475
|
Err: Error;
|
|
471
|
-
Ok:
|
|
476
|
+
Ok: Page_2;
|
|
472
477
|
};
|
|
473
478
|
type Result_24 =
|
|
474
479
|
variant {
|
|
475
480
|
Err: Error;
|
|
476
|
-
Ok:
|
|
481
|
+
Ok: Page_1;
|
|
477
482
|
};
|
|
478
483
|
type Result_23 =
|
|
479
484
|
variant {
|
|
480
485
|
Err: Error;
|
|
481
|
-
Ok:
|
|
486
|
+
Ok: Page;
|
|
482
487
|
};
|
|
483
488
|
type Result_22 =
|
|
484
489
|
variant {
|
|
485
490
|
Err: Error;
|
|
486
|
-
Ok:
|
|
491
|
+
Ok: principal;
|
|
487
492
|
};
|
|
488
493
|
type Result_21 =
|
|
489
494
|
variant {
|
|
490
495
|
Err: Error;
|
|
491
|
-
Ok:
|
|
496
|
+
Ok: EngramSessionState;
|
|
492
497
|
};
|
|
493
498
|
type Result_20 =
|
|
494
499
|
variant {
|
|
495
500
|
Err: Error;
|
|
496
|
-
Ok:
|
|
501
|
+
Ok: Pairing;
|
|
497
502
|
};
|
|
498
503
|
type Result_2 =
|
|
499
504
|
variant {
|
|
@@ -503,22 +508,22 @@ type Result_2 =
|
|
|
503
508
|
type Result_19 =
|
|
504
509
|
variant {
|
|
505
510
|
Err: Error;
|
|
506
|
-
Ok:
|
|
511
|
+
Ok: CondensePreview;
|
|
507
512
|
};
|
|
508
513
|
type Result_18 =
|
|
509
514
|
variant {
|
|
510
515
|
Err: Error;
|
|
511
|
-
Ok:
|
|
516
|
+
Ok: vec BatchReadItem;
|
|
512
517
|
};
|
|
513
518
|
type Result_17 =
|
|
514
519
|
variant {
|
|
515
520
|
Err: Error;
|
|
516
|
-
Ok:
|
|
521
|
+
Ok: MemoryByteChunk;
|
|
517
522
|
};
|
|
518
523
|
type Result_16 =
|
|
519
524
|
variant {
|
|
520
525
|
Err: Error;
|
|
521
|
-
Ok:
|
|
526
|
+
Ok: EngramEscrowRecovery;
|
|
522
527
|
};
|
|
523
528
|
type Result_15 =
|
|
524
529
|
variant {
|
|
@@ -610,6 +615,7 @@ type RailHealth =
|
|
|
610
615
|
freezeReservation: nat;
|
|
611
616
|
memoryBytes: nat;
|
|
612
617
|
paidVouchersConsumed: nat;
|
|
618
|
+
refundOwed: opt nat;
|
|
613
619
|
sendHeadroom: nat;
|
|
614
620
|
sessionsClosed: nat;
|
|
615
621
|
sessionsClosing: nat;
|
|
@@ -1139,6 +1145,11 @@ type EngramSessionState =
|
|
|
1139
1145
|
status: EngramSessionStatus;
|
|
1140
1146
|
voucherCount: nat;
|
|
1141
1147
|
};
|
|
1148
|
+
type EngramEscrowRecovery =
|
|
1149
|
+
record {
|
|
1150
|
+
amountE6: nat;
|
|
1151
|
+
blockIndex: nat;
|
|
1152
|
+
};
|
|
1142
1153
|
type Engram =
|
|
1143
1154
|
service {
|
|
1144
1155
|
/// ⟨0.16.0⟩ `about()` — the ONE public projection, replacing `status()` and absorbing `metrics()`.
|
|
@@ -1170,7 +1181,7 @@ type Engram =
|
|
|
1170
1181
|
/// nomination names. That check compares the caller inside the module, where
|
|
1171
1182
|
/// test/key-replacement.test.mo runs it; this body names no roster gate, because the caller holds
|
|
1172
1183
|
/// no role here until the move.
|
|
1173
|
-
acceptAgentKeyNomination: (agentKey: principal) -> (
|
|
1184
|
+
acceptAgentKeyNomination: (agentKey: principal) -> (Result_71);
|
|
1174
1185
|
/// Consensus transform for the alert webhook outcall: collapse the response to status-only so
|
|
1175
1186
|
/// replicas agree regardless of response headers/body (we only care that the POST landed 2xx).
|
|
1176
1187
|
///
|
|
@@ -1206,10 +1217,10 @@ type Engram =
|
|
|
1206
1217
|
};
|
|
1207
1218
|
primaryType: text;
|
|
1208
1219
|
verifyingContract: text;
|
|
1209
|
-
}) -> (
|
|
1220
|
+
}) -> (Result_70);
|
|
1210
1221
|
/// Owner-managed destination allowlist (D7). Additions LOOSEN and wait 24h; removals TIGHTEN
|
|
1211
1222
|
/// and apply instantly — the ratified asymmetry, applied to the one mutable policy surface.
|
|
1212
|
-
addEvmWithdrawDestination: (dest: text) -> (
|
|
1223
|
+
addEvmWithdrawDestination: (dest: text) -> (Result_69);
|
|
1213
1224
|
/// ⟨0.16.0, L1⟩ THE ROLE-CONFLICT ARM, and why three refusals here are not the same refusal.
|
|
1214
1225
|
///
|
|
1215
1226
|
/// This method had five distinct ways to say no through one `text`, and a caller could only tell
|
|
@@ -1251,7 +1262,7 @@ type Engram =
|
|
|
1251
1262
|
/// Gated on requireWritesNotPaused — unlike the export. This one destroys retained entries, which
|
|
1252
1263
|
/// is exactly what a guardian pause exists to hold. No action alert is raised: the operation is
|
|
1253
1264
|
/// owner-initiated, owner-only, and already chained into the audit log.
|
|
1254
|
-
applyCondense: (toSeq: nat) -> (
|
|
1265
|
+
applyCondense: (toSeq: nat) -> (Result_68);
|
|
1255
1266
|
/// Owner-only: activate a guardian who has registered against an invite.
|
|
1256
1267
|
///
|
|
1257
1268
|
/// Until this call the guardian is `#Pending` and can do NOTHING — registering is a claim, this
|
|
@@ -1322,13 +1333,13 @@ type Engram =
|
|
|
1322
1333
|
///
|
|
1323
1334
|
/// The write half also refuses while writes are PAUSED.
|
|
1324
1335
|
backupInit: (dbType: text, backupType: BackupType, parentBackupId:
|
|
1325
|
-
opt text, sha256: text, backupLabel: opt text) -> (
|
|
1336
|
+
opt text, sha256: text, backupLabel: opt text) -> (Result_44);
|
|
1326
1337
|
/// Read one chunk of a finalized backup, by index.
|
|
1327
1338
|
///
|
|
1328
1339
|
/// ⚠ GATED ON `read_backup`, which is NOT the permission the upload half uses — that one is
|
|
1329
1340
|
/// `canAppendMemory`. Holding one says nothing about the other, deliberately: taking a backup and
|
|
1330
1341
|
/// carrying it away are different authorities.
|
|
1331
|
-
backupPullChunk: (backupId: text, chunkIndex: nat) -> (
|
|
1342
|
+
backupPullChunk: (backupId: text, chunkIndex: nat) -> (Result_60) query;
|
|
1332
1343
|
backupPushChunk: (backupId: text, chunkIndex: nat, data: blob) ->
|
|
1333
1344
|
(Result_1);
|
|
1334
1345
|
/// The OWNER cancels an agent's pending key nomination; the agent keeps its current key. Refused
|
|
@@ -1380,7 +1391,7 @@ type Engram =
|
|
|
1380
1391
|
/// A principal that is already a GUARDIAN cannot become an agent — a guardian is an
|
|
1381
1392
|
/// independent check on agents, so one wallet must not hold both.
|
|
1382
1393
|
createAgentInvite: (name: text, permissions: AgentPermissions) ->
|
|
1383
|
-
(
|
|
1394
|
+
(Result_44);
|
|
1384
1395
|
/// Owner-only: mint an invite for a GUARDIAN — an independent check on agents, not a
|
|
1385
1396
|
/// co-owner and not a recovery agent.
|
|
1386
1397
|
///
|
|
@@ -1403,7 +1414,7 @@ type Engram =
|
|
|
1403
1414
|
/// So an invite that fails to redeem for that reason is not a bad code. The rule exists because
|
|
1404
1415
|
/// a check must be independent of the thing it checks.
|
|
1405
1416
|
createGuardianInvite: (name: text, permissions: GuardianPermissions) ->
|
|
1406
|
-
(
|
|
1417
|
+
(Result_44);
|
|
1407
1418
|
/// OWNER-ONLY deletion of a stored backup.
|
|
1408
1419
|
///
|
|
1409
1420
|
/// ⚠ NOT THE SAME GATE AS THE REST OF THE FAMILY, and the asymmetry is deliberate: `backupInit`,
|
|
@@ -1459,7 +1470,7 @@ type Engram =
|
|
|
1459
1470
|
///
|
|
1460
1471
|
/// ⟨Marker added 2026-08-23; the census row said "L7 mark added per review" and no mark was at
|
|
1461
1472
|
/// the site.⟩
|
|
1462
|
-
ensureEvmReady: () -> (
|
|
1473
|
+
ensureEvmReady: () -> (Result_44);
|
|
1463
1474
|
/// Record that log entries [fromSeq, toSeq] were served, and return the root that proves it.
|
|
1464
1475
|
///
|
|
1465
1476
|
/// This is the receipt ledgerfs Q2 requires before any of those entries may be condensed away.
|
|
@@ -1473,7 +1484,7 @@ type Engram =
|
|
|
1473
1484
|
/// situation rather than a safety measure. It IS gated on requireMemoryAttached: a store that
|
|
1474
1485
|
/// failed its integrity check must not attest anything it cannot vouch for.
|
|
1475
1486
|
exportMemoryRange: (fromSeq: nat, toSeq: nat, authorFilter:
|
|
1476
|
-
opt principal) -> (
|
|
1487
|
+
opt principal) -> (Result_67);
|
|
1477
1488
|
/// ⟨0.16.0, L2.2 — renamed from `guardianFreezePayments`⟩ The prefix LIED about who may call it.
|
|
1478
1489
|
/// The gate is `requireOwnerOrGuardian`, and an owner freezing their own payments is the ordinary
|
|
1479
1490
|
/// case — the guardian is the exceptional one. A name that says otherwise sends an owner looking
|
|
@@ -1505,7 +1516,7 @@ type Engram =
|
|
|
1505
1516
|
/// before this one. If any of them is wrong, this comment is where the argument should happen.
|
|
1506
1517
|
freezePayments: () -> (Result_1);
|
|
1507
1518
|
/// Delivery status + config readback. Owner-only (the URL is a secret).
|
|
1508
|
-
getActionAlertStatus: () -> (
|
|
1519
|
+
getActionAlertStatus: () -> (Result_58) query;
|
|
1509
1520
|
/// Agents need to know what they may revise, so they can read it too. Whole-value config, same
|
|
1510
1521
|
/// carve-out as getProtectedPaths — and kept a SEPARATE method from it deliberately (L2.2): a
|
|
1511
1522
|
/// protected path and a revisable path are opposite grants, and one accessor for both would be a
|
|
@@ -1513,7 +1524,7 @@ type Engram =
|
|
|
1513
1524
|
///
|
|
1514
1525
|
/// Refusal reason preserved from the trap: a grant is a power, and its absence and its
|
|
1515
1526
|
/// concealment are different facts.
|
|
1516
|
-
getAgentRevisablePaths: () -> (
|
|
1527
|
+
getAgentRevisablePaths: () -> (Result_54) query;
|
|
1517
1528
|
/// OWNER-ONLY: every engagement's seat weeks on this engram, with the agent's root — the day it
|
|
1518
1529
|
/// paired, the days of its first and last payment signature, a 64-week map whose bit 0 is the week
|
|
1519
1530
|
/// of the last one, and how many were produced. Never an amount, a recipient or a nonce.
|
|
@@ -1524,7 +1535,7 @@ type Engram =
|
|
|
1524
1535
|
/// order. Anyone else is refused by name (`#Refused getAgentSeatWeeks: …`), never answered with an
|
|
1525
1536
|
/// empty page. Paged; `total` is every engagement ever paired here (a reset keeps the rows).
|
|
1526
1537
|
/// Two rows can name one root: an agent paired again after it left is a second engagement.
|
|
1527
|
-
getAgentSeatWeeks: (start: nat, limit: nat) -> (
|
|
1538
|
+
getAgentSeatWeeks: (start: nat, limit: nat) -> (Result_65) query;
|
|
1528
1539
|
/// Owner: everything written into this engram by someone other than the owner since the last
|
|
1529
1540
|
/// markAgentWritesReviewed() — agent appends/revisions AND paid-session appends (see
|
|
1530
1541
|
/// qualifiesForReview for why those two families are recognised differently).
|
|
@@ -1532,7 +1543,7 @@ type Engram =
|
|
|
1532
1543
|
/// them — the UI must page (markAgentWritesReviewed(?lastShownId)) and must NOT present 200
|
|
1533
1544
|
/// as a total. `earliest` discloses ring eviction — if cursor < earliest, entries between them
|
|
1534
1545
|
/// aged out of the ring (the CHAIN still proves total count; this view can't show their bodies).
|
|
1535
|
-
getAgentWriteReview: () -> (
|
|
1546
|
+
getAgentWriteReview: () -> (Result_64) query;
|
|
1536
1547
|
/// Why anchoring is or is not advancing. PUBLIC: ungated on purpose — detecting a stalled
|
|
1537
1548
|
/// engram is the point, a gated read would fail-to-empty and hand a third party fabricated zeros,
|
|
1538
1549
|
/// and none of these fields is a secret — `total` is already public via getCertifiedAuditHead.
|
|
@@ -1551,7 +1562,7 @@ type Engram =
|
|
|
1551
1562
|
/// below serves the same head WITH the subnet certificate for a caller that needs to verify it
|
|
1552
1563
|
/// was signed rather than asserted.
|
|
1553
1564
|
getAuditHead: () -> (AuditHead) query;
|
|
1554
|
-
getBackupMetadata: (backupId: text) -> (
|
|
1565
|
+
getBackupMetadata: (backupId: text) -> (Result_63) query;
|
|
1555
1566
|
/// The cashier this engram recognises as its rent biller — `null` until the registry pushes one.
|
|
1556
1567
|
///
|
|
1557
1568
|
/// PUBLIC: a payer about to send money needs to know which cashier this engram will accept credit
|
|
@@ -1581,11 +1592,11 @@ type Engram =
|
|
|
1581
1592
|
/// query's state writes are discarded when it returns, and the `denied` call first written here
|
|
1582
1593
|
/// recorded nothing while reading as if it did. The refusal is loud in the reply instead. WHAT
|
|
1583
1594
|
/// WOULD MAKE THIS WRONG: a reason to record who asked — then this becomes an update that says so.
|
|
1584
|
-
getChildAllowance: (agentPrincipal: principal) -> (
|
|
1595
|
+
getChildAllowance: (agentPrincipal: principal) -> (Result_62) query;
|
|
1585
1596
|
/// Owner-only, Billing-class: what opening an engram costs this engram, the balance below which an
|
|
1586
1597
|
/// agent's request is refused, the balance now, and every agent's allowance. The console's cost
|
|
1587
1598
|
/// sentence reads it. Cycles are owner-class information, as on the owner's console read.
|
|
1588
|
-
getChildOpening: () -> (
|
|
1599
|
+
getChildOpening: () -> (Result_61) query;
|
|
1589
1600
|
/// Derive the shared memory-encryption key, encrypted under the caller's transport
|
|
1590
1601
|
/// public key. Gated to owner + read-agents (the same principals allowed to read
|
|
1591
1602
|
/// memory). The client decrypts it locally with its transport secret key.
|
|
@@ -1610,7 +1621,7 @@ type Engram =
|
|
|
1610
1621
|
/// cost. Stated here because L7 requires the reason be readable from the interface rather than
|
|
1611
1622
|
/// inferred by opening the body — which is exactly what had to happen to write this line.
|
|
1612
1623
|
getEncryptedMemoryKey: (epoch: opt nat, transportPublicKey: blob) ->
|
|
1613
|
-
(
|
|
1624
|
+
(Result_60);
|
|
1614
1625
|
/// ⟨0.16.0, owner ruling 2026-08-20 — option (a)⟩ `x402Support` REPORTS THE RAIL, not a constant.
|
|
1615
1626
|
///
|
|
1616
1627
|
/// The card's config hardcodes `x402Support = true`, answering a buyer's question with a fact
|
|
@@ -1709,7 +1720,7 @@ type Engram =
|
|
|
1709
1720
|
/// It refuses rather than half-answers: if either address cannot be derived the reply is
|
|
1710
1721
|
/// `#Err`, never a record carrying an empty string (ic402's `getEvmAddress` answers `""` on a
|
|
1711
1722
|
/// failed derivation — that is fail-to-empty on a money surface, and it stops here).
|
|
1712
|
-
getEvmAddress: () -> (
|
|
1723
|
+
getEvmAddress: () -> (Result_59);
|
|
1713
1724
|
/// The owner's OWN EVM address, if they registered one — distinct from `getEvmAddress`, which is
|
|
1714
1725
|
/// the address this canister derives for itself.
|
|
1715
1726
|
///
|
|
@@ -1724,7 +1735,7 @@ type Engram =
|
|
|
1724
1735
|
/// the management canister's `ecdsa_public_key`. A query cannot await, so the round-trip is the
|
|
1725
1736
|
/// cost — stated here because L7 requires the reason be readable from the interface rather than
|
|
1726
1737
|
/// inferred by opening the body.
|
|
1727
|
-
getEvmSignerAddress: () -> (
|
|
1738
|
+
getEvmSignerAddress: () -> (Result_44);
|
|
1728
1739
|
/// PUBLIC: where this chain begins, for the stranger deciding whether to trust it.
|
|
1729
1740
|
///
|
|
1730
1741
|
/// The fourth of the four evidence methods (`getAuditHead`, `getCertifiedAuditHead`,
|
|
@@ -1733,7 +1744,7 @@ type Engram =
|
|
|
1733
1744
|
/// cannot verify it, and nothing here identifies anybody.
|
|
1734
1745
|
getGenesisNote: () -> (GenesisNote) query;
|
|
1735
1746
|
/// A guardian's own channel status (their URL is their secret — each guardian sees only theirs).
|
|
1736
|
-
getGuardianAlertStatus: () -> (
|
|
1747
|
+
getGuardianAlertStatus: () -> (Result_58) query;
|
|
1737
1748
|
/// The market this engram will accept signing requests from — `null` until the registry pushes
|
|
1738
1749
|
/// one at spawn, which is why `requireMarket` refuses fleet-wide today.
|
|
1739
1750
|
///
|
|
@@ -1763,7 +1774,7 @@ type Engram =
|
|
|
1763
1774
|
/// never renumbered: the next page starts at the last version returned plus one. Defaults
|
|
1764
1775
|
/// return the whole history of any file a pre-FD engram could have held.
|
|
1765
1776
|
getMemoryHistory: (path: text, start: opt nat, max: opt nat) ->
|
|
1766
|
-
(
|
|
1777
|
+
(Result_57) query;
|
|
1767
1778
|
/// PUBLIC: the epoch alone, and deliberately nothing else (rotation study D4). A `rotatedAt[]`
|
|
1768
1779
|
/// history would be a public, fleet-enumerable feed of when each owner terminated a trust
|
|
1769
1780
|
/// relationship — readable by, among others, the party just terminated.
|
|
@@ -1804,7 +1815,7 @@ type Engram =
|
|
|
1804
1815
|
/// Refusal reasons of both merge: an empty policy reads as "nothing is capped, every version kept
|
|
1805
1816
|
/// forever" — a claim about what this engram will DESTROY — and an empty guard list reads as
|
|
1806
1817
|
/// "nothing is held back".
|
|
1807
|
-
getMemoryRetentionPolicy: () -> (
|
|
1818
|
+
getMemoryRetentionPolicy: () -> (Result_56) query;
|
|
1808
1819
|
/// The metrics reader this engram answers — `null` until the spawning registry names one.
|
|
1809
1820
|
///
|
|
1810
1821
|
/// PUBLIC: an owner deciding whether to switch the read off needs to know who it is, and anyone
|
|
@@ -1827,7 +1838,7 @@ type Engram =
|
|
|
1827
1838
|
/// was `nat`, then widened to `opt nat` so a refusal could be `null`, which broke every published
|
|
1828
1839
|
/// client (rule 4) and bought a masked answer nobody had asked for — the census could not even
|
|
1829
1840
|
/// find a consumer that read the masked `0`. Behind a gate there is nobody to mask it from.
|
|
1830
|
-
getOwnerConsole: () -> (
|
|
1841
|
+
getOwnerConsole: () -> (Result_55) query;
|
|
1831
1842
|
/// Owner + agents only (agents need it to avoid writing protected paths).
|
|
1832
1843
|
///
|
|
1833
1844
|
/// A NAMED RECORD, not a Page: the setter replaces this list wholesale, so there is no window to
|
|
@@ -1839,7 +1850,7 @@ type Engram =
|
|
|
1839
1850
|
/// path on this engram is protected", and an agent consults this list precisely to avoid
|
|
1840
1851
|
/// writing one — so a fabricated empty here does not merely misinform, it invites the write the
|
|
1841
1852
|
/// list exists to prevent.
|
|
1842
|
-
getProtectedPaths: () -> (
|
|
1853
|
+
getProtectedPaths: () -> (Result_54) query;
|
|
1843
1854
|
/// Whether the metrics reader's read is answered — `true` from birth.
|
|
1844
1855
|
///
|
|
1845
1856
|
/// PUBLIC: the promise that an owner can switch this read off can be checked only if the switch
|
|
@@ -1848,7 +1859,7 @@ type Engram =
|
|
|
1848
1859
|
/// Owner-only, Billing-class: the signing floor, the balance, one signature's price, and how many
|
|
1849
1860
|
/// payment signatures the balance carries above the floor before `signX402Payment` is refused by
|
|
1850
1861
|
/// name. The same numbers the check uses, so Billing can say only what the engram enforces.
|
|
1851
|
-
getSigningFloor: () -> (
|
|
1862
|
+
getSigningFloor: () -> (Result_53) query;
|
|
1852
1863
|
/// The registry that spawned this engram, if it recorded one.
|
|
1853
1864
|
///
|
|
1854
1865
|
/// PUBLIC: it is the provenance claim. An engram asserting it is part of a fleet, under that
|
|
@@ -1865,7 +1876,7 @@ type Engram =
|
|
|
1865
1876
|
/// configuration, and the engram-wide total would also tell one agent how much the others spent.
|
|
1866
1877
|
/// A refusal names this method (`Gated.gatedResult`) rather than answering null/0 — a ceiling of
|
|
1867
1878
|
/// "none" and a spend of 0 are both real answers, so a fabricated one would be read as fact.
|
|
1868
|
-
getSpendCeiling: () -> (
|
|
1879
|
+
getSpendCeiling: () -> (Result_52) query;
|
|
1869
1880
|
/// Read the caps in force for a caller.
|
|
1870
1881
|
///
|
|
1871
1882
|
/// OWNER-ONLY, and this is where it diverges from the market's inbound twin, which is public.
|
|
@@ -1873,8 +1884,8 @@ type Engram =
|
|
|
1873
1884
|
/// Here the engram serves no 402s at all: these caps are the owner's private custody
|
|
1874
1885
|
/// configuration, and publishing them would tell any caller exactly how large a signing request
|
|
1875
1886
|
/// can be before it needs an approval nobody is watching for.
|
|
1876
|
-
getSpendPolicy: (caller: opt principal) -> (
|
|
1877
|
-
getStorageStats: () -> (
|
|
1887
|
+
getSpendPolicy: (caller: opt principal) -> (Result_51) query;
|
|
1888
|
+
getStorageStats: () -> (Result_50) query;
|
|
1878
1889
|
/// Timer arm-state. PUBLIC and deliberately so: these timers are self-arming to save cycles,
|
|
1879
1890
|
/// and an optimisation nobody can verify is an optimisation nobody should trust. Cheap to read,
|
|
1880
1891
|
/// leaks nothing (booleans about our own scheduling).
|
|
@@ -1898,6 +1909,10 @@ type Engram =
|
|
|
1898
1909
|
/// because a persistent actor re-runs its init body BEFORE postupgrade restores stable sessions,
|
|
1899
1910
|
/// so a predicate-gated arm would skip exactly the canisters that have live ones. The first tick
|
|
1900
1911
|
/// disarms it. Still true minutes after an upgrade is a real bug — report it upstream.
|
|
1912
|
+
/// ⟨2026-10-07, beside the paragraph above⟩ The session sweep's interval is 300 seconds now (the
|
|
1913
|
+
/// owner's decision of that day; set in the actor body), so "one interval" is up to five minutes,
|
|
1914
|
+
/// and true five minutes after an upgrade is still expected. True ten minutes after, with no session
|
|
1915
|
+
/// open, is the bug.
|
|
1901
1916
|
/// NOT the whole timer story. The hourly CYCLE timer — which also carries audit anchoring — is
|
|
1902
1917
|
/// deliberately absent: it is a `transient let` armed unconditionally at init, so an "armed"
|
|
1903
1918
|
/// boolean for it would read true forever and tell you nothing, exactly the false-positive the
|
|
@@ -1941,12 +1956,12 @@ type Engram =
|
|
|
1941
1956
|
/// ⟨L7⟩ MARKER ADDED 2026-08-23, reasoning above UNCHANGED — this block already said "Stays an
|
|
1942
1957
|
/// UPDATE, marked per L7: it awaits three ICRC-1 ledgers". It was marked in prose and invisible
|
|
1943
1958
|
/// to any gate; the glyph is what `scripts/check-update-for-read.mjs` matches.
|
|
1944
|
-
getWalletBalances: () -> (
|
|
1959
|
+
getWalletBalances: () -> (Result_49);
|
|
1945
1960
|
/// Refusal reason preserved, and it is the clearest case of why a masked read is worse than no
|
|
1946
1961
|
/// read: three empty strings with `configured = false` is a VALID-LOOKING answer meaning "this
|
|
1947
1962
|
/// engram has no World ID configuration" — handed to a caller who merely lacks a grant. The
|
|
1948
1963
|
/// fabrication is indistinguishable from the truth by construction.
|
|
1949
|
-
getWorldIdConfig: () -> (
|
|
1964
|
+
getWorldIdConfig: () -> (Result_48) query;
|
|
1950
1965
|
/// ⟨L7⟩ UPDATE, NOT QUERY: this awaits THREE system calls — `raw_rand()` for the nonce,
|
|
1951
1966
|
/// `Call.signWithEcdsa` for the signature, and `worldIdRpPublicKey()` for the derived key. A
|
|
1952
1967
|
/// query can do none of them.
|
|
@@ -1955,7 +1970,7 @@ type Engram =
|
|
|
1955
1970
|
/// Valid iff the derived signer address (getWorldIdRpSignerAddress) is registered for this rp_id in
|
|
1956
1971
|
/// the World Developer Portal. Short-lived (300s TTL, idkit-server's default) and single-purpose —
|
|
1957
1972
|
/// it authorizes opening one verification request, nothing else.
|
|
1958
|
-
getWorldIdRpContext: () -> (
|
|
1973
|
+
getWorldIdRpContext: () -> (Result_47);
|
|
1959
1974
|
/// Owner-only: the EVM address derived from the engram's dedicated World ID RP signing key (the
|
|
1960
1975
|
/// "worldid-rp" tECDSA path). Register THIS address as the rp_id's signer in the World Developer
|
|
1961
1976
|
/// Portal — the engram never holds or exports a private key (only threshold shares exist, on the
|
|
@@ -1965,7 +1980,7 @@ type Engram =
|
|
|
1965
1980
|
/// awaits `worldIdRpPublicKey()` (management `ecdsa_public_key`), and it calls `denied()` on
|
|
1966
1981
|
/// refusal — a state write, which a query cannot perform. So even if the key were cached this
|
|
1967
1982
|
/// could not become a query without silently retiring its denial record (ADR-0002's class).
|
|
1968
|
-
getWorldIdRpSignerAddress: () -> (
|
|
1983
|
+
getWorldIdRpSignerAddress: () -> (Result_44);
|
|
1969
1984
|
/// The verified IDKitResult, verbatim, as World's /api/v4/verify accepted it — the re-checkable
|
|
1970
1985
|
/// artifact behind verifiedHuman. Role-gated because it carries the NULLIFIER.
|
|
1971
1986
|
/// `Result<opt Text>` — and the double wrapper is the entire point, not redundancy.
|
|
@@ -1984,7 +1999,7 @@ type Engram =
|
|
|
1984
1999
|
/// `///`, so the dead name was PUBLISHED in engram.did and pointed every client at a method the
|
|
1985
2000
|
/// canister does not serve. The tombstones below and at `about()` are historical and correct as
|
|
1986
2001
|
/// written; this one was present tense, which is the difference that matters.⟩
|
|
1987
|
-
getWorldIdVerification: () -> (
|
|
2002
|
+
getWorldIdVerification: () -> (Result_46) query;
|
|
1988
2003
|
/// ⟨0.16.0, L1⟩ THE EMERGENCY FAMILY. Every refusal below is `#Refused` or `#NotFound`, and the
|
|
1989
2004
|
/// absence of a `#Conflict` here is the point: these are the calls someone makes while something
|
|
1990
2005
|
/// is going wrong, and the only two answers that help are "you may not do this" and "there is
|
|
@@ -2059,7 +2074,7 @@ type Engram =
|
|
|
2059
2074
|
///
|
|
2060
2075
|
/// Owner-gated because it reports on custody posture, and answered as a Result so that a
|
|
2061
2076
|
/// wrong-identity caller gets a refusal rather than a bare `false` that reads as "no address yet".
|
|
2062
|
-
isEvmAddressCached: () -> (
|
|
2077
|
+
isEvmAddressCached: () -> (Result_45) query;
|
|
2063
2078
|
/// Issue an OAuth authorization code. Called by an OAuth client's sign-in bridge
|
|
2064
2079
|
/// (an `/auth/connector`-style route) after II authentication. The client then
|
|
2065
2080
|
/// redirects the user's browser to `redirectUri` with `?code=<this>` so the
|
|
@@ -2067,7 +2082,7 @@ type Engram =
|
|
|
2067
2082
|
///
|
|
2068
2083
|
/// Owner-only: only the engram owner can authorize a Connector install.
|
|
2069
2084
|
issueAuthCode: (redirectUri: text, scope: text, codeChallenge: text,
|
|
2070
|
-
clientId: opt text) -> (
|
|
2085
|
+
clientId: opt text) -> (Result_44);
|
|
2071
2086
|
/// ⟨0.16.0⟩ `getCycleSnapshotSource` DELETED — folded into `CycleSnapshot.source`, one label per
|
|
2072
2087
|
/// ROW. A single label for a whole ring misattributes every row recorded under the other source,
|
|
2073
2088
|
/// and the source flips by design (self-call first, balance on fallback). Its documentation of
|
|
@@ -2081,7 +2096,7 @@ type Engram =
|
|
|
2081
2096
|
/// Refusal reason preserved, and it is the sharpest of this family: a masked `[]` reads as a
|
|
2082
2097
|
/// DORMANT engram and corrupts retention math — a fabricated empty here does not just misinform a
|
|
2083
2098
|
/// reader, it feeds a wrong number into a decision about destroying data.
|
|
2084
|
-
listActivitySnapshots: (start: nat, limit: nat) -> (
|
|
2099
|
+
listActivitySnapshots: (start: nat, limit: nat) -> (Result_43) query;
|
|
2085
2100
|
/// ⟨0.16.0⟩ THE PAGE EXEMPLAR. Trap → `#Refused`, bare array → `Result<Page<T>>` (L1 + L3).
|
|
2086
2101
|
///
|
|
2087
2102
|
/// The refusal prose that used to be `gatedTrap`'s `whyNotEmpty` argument is not lost — it is why
|
|
@@ -2096,7 +2111,7 @@ type Engram =
|
|
|
2096
2111
|
///
|
|
2097
2112
|
/// `withheld` is 0: this roster is owner-only in whole, so there is no partial-visibility case.
|
|
2098
2113
|
/// A method that filters rows by caller sets it — see L1's row-level honesty rule.
|
|
2099
|
-
listAgents: (start: nat, limit: nat) -> (
|
|
2114
|
+
listAgents: (start: nat, limit: nat) -> (Result_42) query;
|
|
2100
2115
|
/// The GUARDIAN-audience projection of the agent roster — three fields, not the full record.
|
|
2101
2116
|
///
|
|
2102
2117
|
/// Two audiences, two methods (L1/L8), rather than one method masking fields by caller: a
|
|
@@ -2108,7 +2123,7 @@ type Engram =
|
|
|
2108
2123
|
/// Refusal reason preserved: `[]` reads as "this engram has no agents", and this is the list a
|
|
2109
2124
|
/// guardian consults BEFORE REVOKING ONE. A fabricated empty here does not merely misinform —
|
|
2110
2125
|
/// it tells someone acting under emergency powers that there is nothing to act on.
|
|
2111
|
-
listAgentsForGuardian: (start: nat, limit: nat) -> (
|
|
2126
|
+
listAgentsForGuardian: (start: nat, limit: nat) -> (Result_41) query;
|
|
2112
2127
|
/// Owner-only: rows carry caller, amount, operation and free-text rationale. The SDK omits it.
|
|
2113
2128
|
///
|
|
2114
2129
|
/// The optional leading filter SURVIVES the L3 reshape — ratified (census tier-2 #8) rather than
|
|
@@ -2121,7 +2136,7 @@ type Engram =
|
|
|
2121
2136
|
///
|
|
2122
2137
|
/// Refusal reason preserved: `[]` reads as "nothing is awaiting the owner's decision".
|
|
2123
2138
|
listApprovalRequests: (statusFilter: opt ApprovalStatus, start: nat,
|
|
2124
|
-
limit: nat) -> (
|
|
2139
|
+
limit: nat) -> (Result_29) query;
|
|
2125
2140
|
/// ⟨0.16.0⟩ `total` IS THE HEAD COUNTER, and on this method that is the entire point.
|
|
2126
2141
|
///
|
|
2127
2142
|
/// The audit log is a bounded RING: it trims its tail, so "rows you can read" and "entries that
|
|
@@ -2141,7 +2156,7 @@ type Engram =
|
|
|
2141
2156
|
/// For the owner and a guardian `withheld` is 0 and the page is the span. WHAT WOULD MAKE THIS
|
|
2142
2157
|
/// WRONG: a reader who must see the whole record without being the owner or a guardian — the
|
|
2143
2158
|
/// public certified head is the answer for integrity, and nothing else is.
|
|
2144
|
-
listAuditEntries: (start: nat, limit: nat) -> (
|
|
2159
|
+
listAuditEntries: (start: nat, limit: nat) -> (Result_24) query;
|
|
2145
2160
|
/// ⟨0.16.0, L1 + L3 — census-ruled⟩ THE TWO-MECHANISM EXCEPTION DISSOLVES.
|
|
2146
2161
|
///
|
|
2147
2162
|
/// This method used to answer THREE ways to one question: a list, an `#Err` text, and a trap,
|
|
@@ -2165,7 +2180,7 @@ type Engram =
|
|
|
2165
2180
|
/// `dbTypeFilter` DIES on the wire (census). The capability does not: `EngramClient.listBackups`
|
|
2166
2181
|
/// keeps its optional filter and applies it to the page, so no caller loses the ability to ask
|
|
2167
2182
|
/// "backups of this database" — it stops being a thing the canister has to page around.
|
|
2168
|
-
listBackups: (start: nat, limit: nat) -> (
|
|
2183
|
+
listBackups: (start: nat, limit: nat) -> (Result_40) query;
|
|
2169
2184
|
/// List all bearer tokens — Active, Revoked, and Expired. Owner uses this in
|
|
2170
2185
|
/// the dashboard to show installed Connectors (claude.ai, Claude Desktop, etc.).
|
|
2171
2186
|
/// Refusal reason preserved from the trap: `[]` reads as "no connector is installed on this
|
|
@@ -2175,7 +2190,7 @@ type Engram =
|
|
|
2175
2190
|
/// `bearerTokenStore.list()` already resolves each token's status at read time (a token that
|
|
2176
2191
|
/// merely stopped being used is reported `#Expired`, not a stale `#Active`), so the page carries
|
|
2177
2192
|
/// the same honesty the store gained on 2026-08-17.
|
|
2178
|
-
listBearerTokens: (start: nat, limit: nat) -> (
|
|
2193
|
+
listBearerTokens: (start: nat, limit: nat) -> (Result_39) query;
|
|
2179
2194
|
/// The condense checkpoints in the retained log at or above `startSeq`, oldest first.
|
|
2180
2195
|
///
|
|
2181
2196
|
/// ⟨0.16.0, NEW⟩ The other half of the split above. A checkpoint is the only surviving record of a
|
|
@@ -2185,25 +2200,25 @@ type Engram =
|
|
|
2185
2200
|
///
|
|
2186
2201
|
/// Owner-only like every other archive surface, and for the same structural reason: these rows
|
|
2187
2202
|
/// carry the chain positions and roots of entries whose paths were inside the hash preimage.
|
|
2188
|
-
listCondenseCheckpoints: (startSeq: nat, max: nat) -> (
|
|
2203
|
+
listCondenseCheckpoints: (startSeq: nat, max: nat) -> (Result_38) query;
|
|
2189
2204
|
/// ⟨0.16.0⟩ `metrics()` DELETED — absorbed by `about()`.
|
|
2190
2205
|
///
|
|
2191
2206
|
/// Two public projections of one canister (L2.2): `metrics()` and `status()` both answered "what
|
|
2192
2207
|
/// is this engram like" and disagreed on which counters they carried, so a consumer had to fetch
|
|
2193
2208
|
/// both and know which one owned each field. Every field here survives on `about()`, day-flooring
|
|
2194
2209
|
/// included.
|
|
2195
|
-
listCycleSnapshots: (start: nat, limit: nat) -> (
|
|
2210
|
+
listCycleSnapshots: (start: nat, limit: nat) -> (Result_37) query;
|
|
2196
2211
|
/// Same `withheld` treatment as listMemoryFiles — the tombstone listing filtered reserved paths
|
|
2197
2212
|
/// for non-owners just as silently, and a caller could not tell a filtered tombstone list from a
|
|
2198
2213
|
/// complete one. Counted before slicing, so policy-hidden rows never blur into paging.
|
|
2199
|
-
listDeletedMemoryFiles: (start: nat, limit: nat) -> (
|
|
2214
|
+
listDeletedMemoryFiles: (start: nat, limit: nat) -> (Result_36) query;
|
|
2200
2215
|
/// The registered shapes — E3: encodeTypeString is the display artifact, verbatim.
|
|
2201
2216
|
/// Stays on the engram under B1 (hybrid): EIP-712 signing is custody, and custody does not leave.
|
|
2202
2217
|
///
|
|
2203
2218
|
/// Refusal reason preserved: `[]` reads as "this engram can sign nothing" — a claim about SIGNING
|
|
2204
2219
|
/// AUTHORITY, which is not a thing to hand an unauthorized reader. The public trail of every
|
|
2205
2220
|
/// registration remains the audit chain under getCertifiedAuditHead.
|
|
2206
|
-
listEip712Types: (start: nat, limit: nat) -> (
|
|
2221
|
+
listEip712Types: (start: nat, limit: nat) -> (Result_35) query;
|
|
2207
2222
|
/// Stays on the engram under B1 (hybrid): withdrawal custody does not leave.
|
|
2208
2223
|
///
|
|
2209
2224
|
/// NAMED item, not a `(Text, Int)` tuple. The Int is an activation time, and a bare Int beside a
|
|
@@ -2212,14 +2227,14 @@ type Engram =
|
|
|
2212
2227
|
/// Refusal reason preserved, and it has two halves that matter separately: `[]` reads as "this
|
|
2213
2228
|
/// engram may withdraw nowhere", OR — worse — as "no allowlist is in force", which is the
|
|
2214
2229
|
/// opposite security posture. It also erases any pending 24h activation from view.
|
|
2215
|
-
listEvmWithdrawDestinations: (start: nat, limit: nat) -> (
|
|
2230
|
+
listEvmWithdrawDestinations: (start: nat, limit: nat) -> (Result_34) query;
|
|
2216
2231
|
/// Accessible by owner and guardians.
|
|
2217
2232
|
///
|
|
2218
2233
|
/// Refusal reason carried over from the trap, because it is the sharpest example of why this
|
|
2219
2234
|
/// surface may not fail soft: `[]` reads as "this engram has nobody who can freeze payments or
|
|
2220
2235
|
/// pause writes" — a claim about who can STOP it. A caller who cannot tell that from "you may not
|
|
2221
2236
|
/// see the roster" has been told the engram is unguarded when it may be fully guarded.
|
|
2222
|
-
listGuardians: (start: nat, limit: nat) -> (
|
|
2237
|
+
listGuardians: (start: nat, limit: nat) -> (Result_33) query;
|
|
2223
2238
|
/// The export receipts in the retained log at or above `startSeq`, oldest first.
|
|
2224
2239
|
///
|
|
2225
2240
|
/// ⟨0.16.0, L3⟩ ONE LIST, ONE QUESTION. This method used to return receipts AND checkpoints
|
|
@@ -2235,7 +2250,7 @@ type Engram =
|
|
|
2235
2250
|
///
|
|
2236
2251
|
/// Read `MemoryRouter.ReceiptPage` before reading `page.total` as a receipt count. It is not one;
|
|
2237
2252
|
/// it is the chain's length, and the declaration says why.
|
|
2238
|
-
listMemoryExportReceipts: (startSeq: nat, max: nat) -> (
|
|
2253
|
+
listMemoryExportReceipts: (startSeq: nat, max: nat) -> (Result_32) query;
|
|
2239
2254
|
/// ⟨0.16.0⟩ THE `withheld` EXEMPLAR — L1 names this exact method as the defect it fixes.
|
|
2240
2255
|
///
|
|
2241
2256
|
/// A non-owner's answer silently dropped every `config/` and `secrets/` row. Not "refused the
|
|
@@ -2251,7 +2266,7 @@ type Engram =
|
|
|
2251
2266
|
/// Note the count is computed from the unfiltered list before slicing, so it reports rows hidden
|
|
2252
2267
|
/// by POLICY, never rows merely off the end of this page — those are `total`'s job. Conflating
|
|
2253
2268
|
/// the two would rebuild the ambiguity in a new place.
|
|
2254
|
-
listMemoryFiles: (start: nat, limit: nat) -> (
|
|
2269
|
+
listMemoryFiles: (start: nat, limit: nat) -> (Result_31) query;
|
|
2255
2270
|
/// One page of the memory log, seq-ordered, optionally narrowed to one author.
|
|
2256
2271
|
///
|
|
2257
2272
|
/// THE WINDOW IS THE CURSOR, and the page now states it. The window is
|
|
@@ -2277,7 +2292,7 @@ type Engram =
|
|
|
2277
2292
|
/// with the disclosures that make the page verifiable — the hidden-bound defect the census itself
|
|
2278
2293
|
/// names on previewCondense's row.
|
|
2279
2294
|
listMemoryLog: (startSeq: nat, max: nat, authorFilter: opt principal) ->
|
|
2280
|
-
(
|
|
2295
|
+
(Result_30) query;
|
|
2281
2296
|
/// The caller's OWN spend-approval requests. ⟨0.16.0, L1 + L3 — fixed 2026-08-18⟩
|
|
2282
2297
|
///
|
|
2283
2298
|
/// Two defects in seven lines, and the first is the one this release exists to remove:
|
|
@@ -2294,7 +2309,7 @@ type Engram =
|
|
|
2294
2309
|
/// to see, so `total` over their own rows is the honest count and nothing is hidden FROM them.
|
|
2295
2310
|
/// (The unbounded MAP is filed separately — pruning an approval record destroys evidence of what
|
|
2296
2311
|
/// was asked, which is a retention ruling rather than a shape fix.)
|
|
2297
|
-
listMyApprovalRequests: (start: nat, limit: nat) -> (
|
|
2312
|
+
listMyApprovalRequests: (start: nat, limit: nat) -> (Result_29) query;
|
|
2298
2313
|
/// The payer's own sessions, live ones first. PAYER-SCOPED: a caller sees only their own, which
|
|
2299
2314
|
/// is why this needs no role — a session id is not a secret from the person who paid for it.
|
|
2300
2315
|
///
|
|
@@ -2303,7 +2318,7 @@ type Engram =
|
|
|
2303
2318
|
/// It took no arguments, and a cursor added after the freeze is an argument-list change every
|
|
2304
2319
|
/// client would break on — the market paged its own pending withdrawals before its cut for the
|
|
2305
2320
|
/// same reason. The order is the order sessions were opened.
|
|
2306
|
-
listMySessions: (start: nat, limit: nat) -> (
|
|
2321
|
+
listMySessions: (start: nat, limit: nat) -> (Result_28) query;
|
|
2307
2322
|
///
|
|
2308
2323
|
/// ⟨0.16.0, L3⟩ Paged and enveloped like every other `list*`, and the envelope here is uniformity
|
|
2309
2324
|
/// rather than gating: this method cannot refuse anybody, so `#Err` is unreachable on it. That is
|
|
@@ -2316,7 +2331,7 @@ type Engram =
|
|
|
2316
2331
|
/// asked by strangers. `verifyEngramActiveOwner` on the registry answers only about the owner
|
|
2317
2332
|
/// IT recorded, so this chain is what a caller composes with when currency matters — which it
|
|
2318
2333
|
/// cannot do if it needs a role here.
|
|
2319
|
-
listOwnershipTransfers: (start: nat, limit: nat) -> (
|
|
2334
|
+
listOwnershipTransfers: (start: nat, limit: nat) -> (Result_27) query;
|
|
2320
2335
|
/// ⟨2026-09-29, the platform's question from the build review⟩ OWNER-ONLY: how many payment
|
|
2321
2336
|
/// signatures each agent has obtained today, and the daily limit (200, `PaymentSignCap`). The
|
|
2322
2337
|
/// owner's console stated the rule and showed no number, because nothing served one; a number it
|
|
@@ -2332,7 +2347,7 @@ type Engram =
|
|
|
2332
2347
|
/// marketplace's one shared count today is in the reply's `marketplace` field, with the limit this
|
|
2333
2348
|
/// engram enforces for it — beside the agents, never a row among them
|
|
2334
2349
|
/// (`PaymentSignCap.marketplaceRow`). Null when no marketplace is set.
|
|
2335
|
-
listPaymentSignatureCounts: (start: nat, limit: nat) -> (
|
|
2350
|
+
listPaymentSignatureCounts: (start: nat, limit: nat) -> (Result_26) query;
|
|
2336
2351
|
/// Agent records removed by a reset. Each row is a NAMED record with the fields `principal`,
|
|
2337
2352
|
/// `name`, `registeredAt` and `purgedAt` — read them BY NAME, never by position.
|
|
2338
2353
|
/// ⟨2026-09-29, the vocabulary ruling: pairing is the one verb that admits an agent⟩ The field
|
|
@@ -2372,7 +2387,7 @@ type Engram =
|
|
|
2372
2387
|
/// `invite` its enrolment named, and `ended` — why and on what day its engagement ended (its own
|
|
2373
2388
|
/// earlier ending, or the reset) — the facts `resyncAgentEdges` re-sends. The stored rows are
|
|
2374
2389
|
/// served as they are.
|
|
2375
|
-
listPurgedAgents: (start: nat, limit: nat) -> (
|
|
2390
|
+
listPurgedAgents: (start: nat, limit: nat) -> (Result_25) query;
|
|
2376
2391
|
/// ⟨0.16.0⟩ ONE ACCESSOR, folding `readReadLog` and `getDenialLog` — and the fold only became
|
|
2377
2392
|
/// safe because of a change made earlier in this same leg.
|
|
2378
2393
|
///
|
|
@@ -2434,7 +2449,7 @@ type Engram =
|
|
|
2434
2449
|
/// on the chained record — the same `RecordView` filter, and `withheld` counts what it removed
|
|
2435
2450
|
/// together with what `successFilter` removed. WHAT WOULD MAKE THIS WRONG: see `listAuditEntries`.
|
|
2436
2451
|
listReadLog: (successFilter: opt bool, start: nat, limit: nat) ->
|
|
2437
|
-
(
|
|
2452
|
+
(Result_24) query;
|
|
2438
2453
|
/// Same visibility as listAuditEntries: the owner, this engram's agents, and ACTIVE guardians
|
|
2439
2454
|
/// see disputes. An unauthorized read REFUSES — it does not return an empty list, because an
|
|
2440
2455
|
/// empty list reads as "no disputes have been filed", which is a claim, not an absence of one.
|
|
@@ -2449,7 +2464,7 @@ type Engram =
|
|
|
2449
2464
|
/// window — which says disputes exist without showing them, never "none have been filed". WHAT
|
|
2450
2465
|
/// WOULD MAKE THIS WRONG: a ruling that an agent may see the disputes of its own writes; this would
|
|
2451
2466
|
/// then have to look up each disputed version's writer, which it does not do today.
|
|
2452
|
-
listRepudiations: (start: nat, limit: nat) -> (
|
|
2467
|
+
listRepudiations: (start: nat, limit: nat) -> (Result_23) query;
|
|
2453
2468
|
/// Owner: advance the review cursor — "I have seen everything up to and including uptoAuditId"
|
|
2454
2469
|
/// (null = everything at the current head). Bounded so the attestation can never cover entries
|
|
2455
2470
|
/// the console did not render; clamped monotonic (the cursor never moves backward) and to the
|
|
@@ -2494,8 +2509,8 @@ type Engram =
|
|
|
2494
2509
|
///
|
|
2495
2510
|
/// WHAT WOULD MAKE THIS WRONG: an await added between `ChildAllowance.take` and the registry call; the
|
|
2496
2511
|
/// registry's `CHILD_MIN_ATTACHED_CYCLES` moving without `CHILD_ATTACH_CYCLES`.
|
|
2497
|
-
openChildEngram: () -> (
|
|
2498
|
-
openSession: (config: SessionConfig, sig: PaymentSignature) -> (
|
|
2512
|
+
openChildEngram: () -> (Result_22);
|
|
2513
|
+
openSession: (config: SessionConfig, sig: PaymentSignature) -> (Result_21);
|
|
2499
2514
|
/// Withdraw tokens to the owner's principal. This is the ONLY way to
|
|
2500
2515
|
/// move tokens out of the engram to an external address, and the
|
|
2501
2516
|
/// destination is always hardcoded to the owner.
|
|
@@ -2560,7 +2575,7 @@ type Engram =
|
|
|
2560
2575
|
pairAgent: (arg: record {
|
|
2561
2576
|
code: text;
|
|
2562
2577
|
enrolment: Enrolment;
|
|
2563
|
-
}) -> (
|
|
2578
|
+
}) -> (Result_20);
|
|
2564
2579
|
/// ⟨0.16.0, L2.2 — renamed from `guardianPauseWrites`⟩ Same correction as freezePayments above:
|
|
2565
2580
|
/// owner-or-guardian, and `resumeWrites` never carried the prefix either.
|
|
2566
2581
|
pauseWrites: () -> (Result_1);
|
|
@@ -2582,7 +2597,7 @@ type Engram =
|
|
|
2582
2597
|
///
|
|
2583
2598
|
/// `unlocked` is the export-receipt gate ONLY. It is not a promise the condense will land: the
|
|
2584
2599
|
/// history-budget delta is checked at commit time and can still refuse a short prefix.
|
|
2585
|
-
previewCondense: (toSeq: nat) -> (
|
|
2600
|
+
previewCondense: (toSeq: nat) -> (Result_19) query;
|
|
2586
2601
|
/// A quote for a session this caller has not opened and is not committed to — the intent a
|
|
2587
2602
|
/// buyer signs against. Pure dry run, no state, no funds.
|
|
2588
2603
|
///
|
|
@@ -2640,7 +2655,7 @@ type Engram =
|
|
|
2640
2655
|
/// Both are now what they are: a single `#Err` for the whole call. `#Ok` still carries a row per
|
|
2641
2656
|
/// path, each with its own Result — a refused RESERVED path sits beside a readable one, which is
|
|
2642
2657
|
/// a genuine per-path fact.
|
|
2643
|
-
readMemoryBatch: (paths: vec text) -> (
|
|
2658
|
+
readMemoryBatch: (paths: vec text) -> (Result_18) query;
|
|
2644
2659
|
/// ⟨0.16.0⟩ `getMemoryRetentionGuards` DELETED — folded into `getMemoryRetentionPolicy` above.
|
|
2645
2660
|
/// It was the second L2.1 array-returning `get*`, and separating it from the policy it modifies
|
|
2646
2661
|
/// was the defect described there. Its own docs are preserved at the fold site.
|
|
@@ -2651,7 +2666,7 @@ type Engram =
|
|
|
2651
2666
|
/// see it cannot know whether it has the whole range, which is how silent truncation gets
|
|
2652
2667
|
/// reintroduced. Loop while `more` is true, advancing by the bytes actually returned.
|
|
2653
2668
|
readMemoryBytes: (path: text, offset: nat, len: nat, version: opt nat) ->
|
|
2654
|
-
(
|
|
2669
|
+
(Result_17) query;
|
|
2655
2670
|
/// The escrow exit for a session whose settle cannot pay.
|
|
2656
2671
|
///
|
|
2657
2672
|
/// PAYER-ONLY, enforced inside the gateway, and deliberately not owner-triggered: the payer's own
|
|
@@ -2706,7 +2721,15 @@ type Engram =
|
|
|
2706
2721
|
/// the transfer pays its own fee from the escrow. A session still reads `closing` only when its
|
|
2707
2722
|
/// close trapped after one of its awaits, or an earlier version left it there, and of that one the
|
|
2708
2723
|
/// line above still holds.
|
|
2709
|
-
|
|
2724
|
+
///
|
|
2725
|
+
/// ⟨2026-10-07, the owner's decision of that day⟩ WHAT IT ANSWERS: what came back. `amountE6` is
|
|
2726
|
+
/// the ckUSDC base units transferred to the payer's own account (the amount asked, capped at the
|
|
2727
|
+
/// session's unconsumed deposit; the transfer's fee comes out of the escrow on top), and
|
|
2728
|
+
/// `blockIndex` is the ledger block of that transfer. Until this date it answered a bare `nat` that
|
|
2729
|
+
/// was the block index alone, which read as the amount. If the session's record is removed before
|
|
2730
|
+
/// the amount can be read back — a session closed in the same moment as the recovery and cleaned up
|
|
2731
|
+
/// during its transfer — it answers `#Other` naming the block, never a guessed amount.
|
|
2732
|
+
recoverEscrow: (sessionId: text, amountE6: nat) -> (Result_16);
|
|
2710
2733
|
/// ⟨0.16.0, L1⟩ A REDEMPTION PATH, where the arm choice is a disclosure decision.
|
|
2711
2734
|
///
|
|
2712
2735
|
/// Four of these refusals are about the CODE and one is about the caller. The code arms restate
|
|
@@ -3373,7 +3396,10 @@ type Engram =
|
|
|
3373
3396
|
/// The metrics reader the registry designated reads this engram's paid-rail health, in one call:
|
|
3374
3397
|
/// the balance and the line it must stay above, the memory that line is computed from, the sessions
|
|
3375
3398
|
/// by state, the escrow open sessions hold, the vouchers spent and the refused ones
|
|
3376
|
-
/// (`RailHealth.RailHealth` says what each is, and what is never in it).
|
|
3399
|
+
/// (`RailHealth.RailHealth` says what each is, and what is never in it). ⟨2026-10-08, ic402 2.18.0⟩
|
|
3400
|
+
/// And `refundOwed`: the closed sessions whose refund failed and whose payer has not yet recovered
|
|
3401
|
+
/// it — counted from the close, never read from the ledger; `opt` from birth, and null (an engram
|
|
3402
|
+
/// that does not count) is never 0.
|
|
3377
3403
|
///
|
|
3378
3404
|
/// CALLER: the metrics reader the spawning registry named on this engram (`metricsReaderId`), and
|
|
3379
3405
|
/// nobody else — the owner reads its balance through `getOwnerConsole`. Answered only while the
|