@ibgib/core-gib 0.1.57 → 0.1.59
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/keystone/keystone-config-builder.d.mts +12 -1
- package/dist/keystone/keystone-config-builder.d.mts.map +1 -1
- package/dist/keystone/keystone-config-builder.mjs +58 -4
- package/dist/keystone/keystone-config-builder.mjs.map +1 -1
- package/dist/keystone/keystone-constants.d.mts +40 -5
- package/dist/keystone/keystone-constants.d.mts.map +1 -1
- package/dist/keystone/keystone-constants.mjs +39 -5
- package/dist/keystone/keystone-constants.mjs.map +1 -1
- package/dist/keystone/keystone-helpers.d.mts +11 -1
- package/dist/keystone/keystone-helpers.d.mts.map +1 -1
- package/dist/keystone/keystone-helpers.mjs +37 -1
- package/dist/keystone/keystone-helpers.mjs.map +1 -1
- package/dist/keystone/keystone-policy-types.d.mts +23 -0
- package/dist/keystone/keystone-policy-types.d.mts.map +1 -0
- package/dist/keystone/keystone-policy-types.mjs +2 -0
- package/dist/keystone/keystone-policy-types.mjs.map +1 -0
- package/dist/sync/graft-info/graft-info-helpers.respec.mjs +8 -8
- package/dist/sync/graft-info/graft-info-helpers.respec.mjs.map +1 -1
- package/dist/sync/sync-conflict-adv-multitimelines.respec.mjs +22 -22
- package/dist/sync/sync-conflict-adv-multitimelines.respec.mjs.map +1 -1
- package/dist/sync/sync-conflict-basic-divergence.respec.mjs +3 -3
- package/dist/sync/sync-conflict-basic-divergence.respec.mjs.map +1 -1
- package/dist/sync/sync-conflict-basic-multitimelines.respec.mjs +6 -6
- package/dist/sync/sync-conflict-basic-multitimelines.respec.mjs.map +1 -1
- package/dist/sync/sync-conflict-text-merge.respec.mjs +26 -26
- package/dist/sync/sync-conflict-text-merge.respec.mjs.map +1 -1
- package/dist/sync/sync-helpers.d.mts +19 -0
- package/dist/sync/sync-helpers.d.mts.map +1 -1
- package/dist/sync/sync-helpers.mjs +51 -1
- package/dist/sync/sync-helpers.mjs.map +1 -1
- package/dist/sync/sync-innerspace-constants.respec.mjs +2 -2
- package/dist/sync/sync-innerspace-constants.respec.mjs.map +1 -1
- package/dist/sync/sync-innerspace-deep-updates.respec.mjs +2 -2
- package/dist/sync/sync-innerspace-deep-updates.respec.mjs.map +1 -1
- package/dist/sync/sync-innerspace-dest-ahead.respec.mjs +4 -4
- package/dist/sync/sync-innerspace-dest-ahead.respec.mjs.map +1 -1
- package/dist/sync/sync-innerspace-multiple-timelines.respec.mjs +2 -2
- package/dist/sync/sync-innerspace-multiple-timelines.respec.mjs.map +1 -1
- package/dist/sync/sync-innerspace-partial-update.respec.mjs +3 -3
- package/dist/sync/sync-innerspace-partial-update.respec.mjs.map +1 -1
- package/dist/sync/sync-innerspace.respec.mjs +4 -4
- package/dist/sync/sync-innerspace.respec.mjs.map +1 -1
- package/dist/sync/sync-peer/sync-peer-http-receiver/sync-peer-http-receiver-v1.d.mts +5 -0
- package/dist/sync/sync-peer/sync-peer-http-receiver/sync-peer-http-receiver-v1.d.mts.map +1 -1
- package/dist/sync/sync-peer/sync-peer-http-receiver/sync-peer-http-receiver-v1.mjs +24 -2
- package/dist/sync/sync-peer/sync-peer-http-receiver/sync-peer-http-receiver-v1.mjs.map +1 -1
- package/dist/sync/sync-peer/sync-peer-http-sender/sync-peer-http-sender-v1.d.mts +5 -0
- package/dist/sync/sync-peer/sync-peer-http-sender/sync-peer-http-sender-v1.d.mts.map +1 -1
- package/dist/sync/sync-peer/sync-peer-http-sender/sync-peer-http-sender-v1.mjs +21 -3
- package/dist/sync/sync-peer/sync-peer-http-sender/sync-peer-http-sender-v1.mjs.map +1 -1
- package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-types.d.mts +1 -1
- package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.d.mts +13 -1
- package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.d.mts.map +1 -1
- package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.mjs +40 -10
- package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.mjs.map +1 -1
- package/dist/sync/sync-peer/sync-peer-types.d.mts +81 -1
- package/dist/sync/sync-peer/sync-peer-types.d.mts.map +1 -1
- package/dist/sync/sync-peer/sync-peer-v1.d.mts +37 -3
- package/dist/sync/sync-peer/sync-peer-v1.d.mts.map +1 -1
- package/dist/sync/sync-peer/sync-peer-v1.mjs +163 -23
- package/dist/sync/sync-peer/sync-peer-v1.mjs.map +1 -1
- package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-constants.d.mts +46 -0
- package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-constants.d.mts.map +1 -0
- package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-constants.mjs +45 -0
- package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-constants.mjs.map +1 -0
- package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-peer-websocket-receiver-types.d.mts +30 -0
- package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-peer-websocket-receiver-types.d.mts.map +1 -0
- package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-peer-websocket-receiver-types.mjs +2 -0
- package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-peer-websocket-receiver-types.mjs.map +1 -0
- package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-peer-websocket-receiver-v1.d.mts +68 -0
- package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-peer-websocket-receiver-v1.d.mts.map +1 -0
- package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-peer-websocket-receiver-v1.mjs +324 -0
- package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-peer-websocket-receiver-v1.mjs.map +1 -0
- package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-websocket-peer-helpers.d.mts +85 -0
- package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-websocket-peer-helpers.d.mts.map +1 -0
- package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-websocket-peer-helpers.mjs +332 -0
- package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-websocket-peer-helpers.mjs.map +1 -0
- package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-sender/sync-peer-websocket-sender-types.d.mts +29 -0
- package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-sender/sync-peer-websocket-sender-types.d.mts.map +1 -0
- package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-sender/sync-peer-websocket-sender-types.mjs +2 -0
- package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-sender/sync-peer-websocket-sender-types.mjs.map +1 -0
- package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-sender/sync-peer-websocket-sender-v1.d.mts +44 -0
- package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-sender/sync-peer-websocket-sender-v1.d.mts.map +1 -0
- package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-sender/sync-peer-websocket-sender-v1.mjs +303 -0
- package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-sender/sync-peer-websocket-sender-v1.mjs.map +1 -0
- package/dist/sync/sync-saga-context/sync-saga-context-helpers.d.mts +22 -5
- package/dist/sync/sync-saga-context/sync-saga-context-helpers.d.mts.map +1 -1
- package/dist/sync/sync-saga-context/sync-saga-context-helpers.mjs +223 -27
- package/dist/sync/sync-saga-context/sync-saga-context-helpers.mjs.map +1 -1
- package/dist/sync/sync-saga-context/sync-saga-context-types.d.mts +9 -0
- package/dist/sync/sync-saga-context/sync-saga-context-types.d.mts.map +1 -1
- package/dist/sync/sync-saga-coordinator.d.mts +41 -2
- package/dist/sync/sync-saga-coordinator.d.mts.map +1 -1
- package/dist/sync/sync-saga-coordinator.mjs +110 -11
- package/dist/sync/sync-saga-coordinator.mjs.map +1 -1
- package/dist/sync/sync-types.d.mts +24 -0
- package/dist/sync/sync-types.d.mts.map +1 -1
- package/dist/sync/sync-types.mjs +0 -1
- package/dist/sync/sync-types.mjs.map +1 -1
- package/dist/sync/sync-withid.connect.respec.d.mts +12 -0
- package/dist/sync/sync-withid.connect.respec.d.mts.map +1 -0
- package/dist/sync/sync-withid.connect.respec.mjs +205 -0
- package/dist/sync/sync-withid.connect.respec.mjs.map +1 -0
- package/dist/sync/sync-withid.establish.respec.d.mts +19 -0
- package/dist/sync/sync-withid.establish.respec.d.mts.map +1 -0
- package/dist/sync/sync-withid.establish.respec.mjs +322 -0
- package/dist/sync/sync-withid.establish.respec.mjs.map +1 -0
- package/dist/sync/sync-withid.pingpong.respec.d.mts +11 -0
- package/dist/sync/sync-withid.pingpong.respec.d.mts.map +1 -0
- package/dist/sync/sync-withid.pingpong.respec.mjs +131 -0
- package/dist/sync/sync-withid.pingpong.respec.mjs.map +1 -0
- package/dist/witness/space/inner-space/inner-space-v1.d.mts.map +1 -1
- package/dist/witness/space/inner-space/inner-space-v1.mjs +1 -1
- package/dist/witness/space/inner-space/inner-space-v1.mjs.map +1 -1
- package/package.json +4 -4
- package/src/keystone/keystone-config-builder.mts +73 -4
- package/src/keystone/keystone-constants.mts +42 -6
- package/src/keystone/keystone-helpers.mts +44 -2
- package/src/keystone/keystone-policy-types.mts +25 -0
- package/src/keystone/keystone-policy.schema.json +51 -0
- package/src/keystone/keystone-service-v1.mts +3 -3
- package/src/sync/docs/architecture.md +20 -0
- package/src/sync/docs/ping_pong_plan.md +147 -0
- package/src/sync/docs/security.md +207 -3
- package/src/sync/graft-info/graft-info-helpers.respec.mts +7 -7
- package/src/sync/sync-conflict-adv-multitimelines.respec.mts +21 -21
- package/src/sync/sync-conflict-basic-divergence.respec.mts +2 -2
- package/src/sync/sync-conflict-basic-multitimelines.respec.mts +5 -5
- package/src/sync/sync-conflict-text-merge.respec.mts +25 -25
- package/src/sync/sync-helpers.mts +51 -1
- package/src/sync/sync-innerspace-constants.respec.mts +1 -1
- package/src/sync/sync-innerspace-deep-updates.respec.mts +1 -1
- package/src/sync/sync-innerspace-dest-ahead.respec.mts +3 -3
- package/src/sync/sync-innerspace-multiple-timelines.respec.mts +1 -1
- package/src/sync/sync-innerspace-partial-update.respec.mts +2 -2
- package/src/sync/sync-innerspace.respec.mts +3 -3
- package/src/sync/sync-peer/sync-peer-http-receiver/sync-peer-http-receiver-v1.mts +26 -2
- package/src/sync/sync-peer/sync-peer-http-sender/sync-peer-http-sender-v1.mts +23 -3
- package/src/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-types.mts +1 -1
- package/src/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.mts +47 -13
- package/src/sync/sync-peer/sync-peer-types.mts +87 -1
- package/src/sync/sync-peer/sync-peer-v1.mts +171 -32
- package/src/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-constants.mts +68 -0
- package/src/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-peer-websocket-receiver-types.mts +36 -0
- package/src/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-peer-websocket-receiver-v1.mts +385 -0
- package/src/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-websocket-peer-helpers.mts +388 -0
- package/src/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-sender/sync-peer-websocket-sender-types.mts +35 -0
- package/src/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-sender/sync-peer-websocket-sender-v1.mts +345 -0
- package/src/sync/sync-saga-context/sync-saga-context-helpers.mts +223 -34
- package/src/sync/sync-saga-context/sync-saga-context-types.mts +9 -0
- package/src/sync/sync-saga-coordinator.mts +162 -6
- package/src/sync/sync-types.mts +28 -4
- package/src/sync/sync-withid.connect.respec.mts +243 -0
- package/src/sync/sync-withid.establish.respec.mts +361 -0
- package/src/sync/sync-withid.pingpong.respec.mts +161 -0
- package/src/sync/unused-identity-backup.mts.md +1 -1
- package/src/witness/space/inner-space/inner-space-v1.mts +4 -5
- package/dist/sync/sync-innerspace-dest-ahead-withid.respec.d.mts +0 -2
- package/dist/sync/sync-innerspace-dest-ahead-withid.respec.d.mts.map +0 -1
- package/dist/sync/sync-innerspace-dest-ahead-withid.respec.mjs +0 -310
- package/dist/sync/sync-innerspace-dest-ahead-withid.respec.mjs.map +0 -1
- package/src/sync/sync-innerspace-dest-ahead-withid.respec.mts +0 -364
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inner-space-v1.mjs","sourceRoot":"","sources":["../../../../src/witness/space/inner-space/inner-space-v1.mts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"inner-space-v1.mjs","sourceRoot":"","sources":["../../../../src/witness/space/inner-space/inner-space-v1.mts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ibgib/core-gib",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.59",
|
|
4
4
|
"description": "ibgib core functionality, including base architecture for witnesses, spaces, apps, robbots, etc., as well as shared utility functions. Node v19+ needed for heavily-used isomorphic webcrypto hashing consumed in both node and browsers.",
|
|
5
5
|
"funding": {
|
|
6
6
|
"type": "individual",
|
|
@@ -26,9 +26,9 @@
|
|
|
26
26
|
"author": "William Raiford",
|
|
27
27
|
"license": "ISC",
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@ibgib/encrypt-gib": "
|
|
30
|
-
"@ibgib/helper-gib": "
|
|
31
|
-
"@ibgib/ts-gib": "
|
|
29
|
+
"@ibgib/encrypt-gib": "^0.2.37",
|
|
30
|
+
"@ibgib/helper-gib": "^0.0.36",
|
|
31
|
+
"@ibgib/ts-gib": "^0.5.32"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {},
|
|
34
34
|
"engines": {
|
|
@@ -5,7 +5,10 @@ import {
|
|
|
5
5
|
KeystonePoolConfig, KeystonePoolConfig_HashV1, KeystonePoolBehavior,
|
|
6
6
|
KeystoneReplenishStrategy, KeystonePoolConfigBase, KeystoneChallengeType,
|
|
7
7
|
} from './keystone-types.mjs';
|
|
8
|
-
import { POOL_ID_REVOKE, KEYSTONE_VERB_REVOKE, KEYSTONE_CONFIG_DEFAULT_SIZE, KEYSTONE_CONFIG_DEFAULT_BINDING, KEYSTONE_CONFIG_DEFAULT_REPLENISH_STRATEGY, KEYSTONE_CONFIG_DEFAULT_SEQUENTIAL, KEYSTONE_CONFIG_DEFAULT_RANDOM, KEYSTONE_CONFIG_DEFAULT_SIZE_HIGHSECURITY, KEYSTONE_CONFIG_DEFAULT_SEQUENTIAL_HIGHSECURITY, KEYSTONE_CONFIG_DEFAULT_RANDOM_HIGHSECURITY, KEYSTONE_CONFIG_DEFAULT_BINDING_HIGHSECURITY, KEYSTONE_CONFIG_DEFAULT_REPLENISH_STRATEGY_HIGHSECURITY, KeystoneVerb, KEYSTONE_CONFIG_DEFAULT_HASH_ALGORITHM, KEYSTONE_CONFIG_DEFAULT_HASH_ROUNDS, KEYSTONE_CONFIG_DEFAULT_HASH_ALGORITHM_HIGHSECURITY, KEYSTONE_CONFIG_DEFAULT_HASH_ROUNDS_HIGHSECURITY } from './keystone-constants.mjs';
|
|
8
|
+
import { POOL_ID_REVOKE, KEYSTONE_VERB_REVOKE, KEYSTONE_CONFIG_DEFAULT_SIZE, KEYSTONE_CONFIG_DEFAULT_BINDING, KEYSTONE_CONFIG_DEFAULT_REPLENISH_STRATEGY, KEYSTONE_CONFIG_DEFAULT_SEQUENTIAL, KEYSTONE_CONFIG_DEFAULT_RANDOM, KEYSTONE_CONFIG_DEFAULT_SIZE_HIGHSECURITY, KEYSTONE_CONFIG_DEFAULT_SEQUENTIAL_HIGHSECURITY, KEYSTONE_CONFIG_DEFAULT_RANDOM_HIGHSECURITY, KEYSTONE_CONFIG_DEFAULT_BINDING_HIGHSECURITY, KEYSTONE_CONFIG_DEFAULT_REPLENISH_STRATEGY_HIGHSECURITY, KeystoneVerb, KEYSTONE_CONFIG_DEFAULT_HASH_ALGORITHM, KEYSTONE_CONFIG_DEFAULT_HASH_ROUNDS, KEYSTONE_CONFIG_DEFAULT_HASH_ALGORITHM_HIGHSECURITY, KEYSTONE_CONFIG_DEFAULT_HASH_ROUNDS_HIGHSECURITY, POOL_ID_SYNC, POOL_ID_CONNECT, POOL_ID_MANAGE } from './keystone-constants.mjs';
|
|
9
|
+
import { KeystoneBehaviorProfileTemplate, KeystonePoolTemplate } from './keystone-policy-types.mjs';
|
|
10
|
+
|
|
11
|
+
export { KeystoneBehaviorProfileTemplate, KeystonePoolTemplate };
|
|
9
12
|
|
|
10
13
|
const logalot = GLOBAL_LOG_A_LOT;
|
|
11
14
|
|
|
@@ -308,14 +311,80 @@ export function createHighSecurityPoolConfig(opts: KeystoneConfigFactoryOptions_
|
|
|
308
311
|
export function createManagePoolConfig(opts: KeystoneConfigFactoryOptions_Standard): KeystonePoolConfig {
|
|
309
312
|
return createHighSecurityPoolConfig({
|
|
310
313
|
...opts,
|
|
311
|
-
|
|
314
|
+
id: opts.id ?? POOL_ID_MANAGE,
|
|
315
|
+
verbs: opts.verbs ?? [KeystoneVerb.MANAGE],
|
|
312
316
|
});
|
|
313
317
|
}
|
|
314
318
|
|
|
315
319
|
export function createRevocationPoolConfig(opts: KeystoneConfigFactoryOptions_Standard): KeystonePoolConfig {
|
|
316
320
|
return createHighSecurityPoolConfig({
|
|
317
321
|
...opts,
|
|
318
|
-
|
|
319
|
-
|
|
322
|
+
id: opts.id ?? POOL_ID_REVOKE,
|
|
323
|
+
verbs: opts.verbs ?? [KeystoneVerb.REVOKE],
|
|
324
|
+
replenishStrategy: opts.replenishStrategy ?? KeystoneReplenishStrategy.deleteAll,
|
|
320
325
|
});
|
|
321
326
|
}
|
|
327
|
+
|
|
328
|
+
export function createSyncPoolConfig(opts: KeystoneConfigFactoryOptions_Standard): KeystonePoolConfig {
|
|
329
|
+
return createStandardPoolConfig({
|
|
330
|
+
...opts,
|
|
331
|
+
id: opts.id ?? POOL_ID_SYNC,
|
|
332
|
+
verbs: opts.verbs ?? [KeystoneVerb.SYNC],
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
export function createConnectPoolConfig(opts: KeystoneConfigFactoryOptions_Standard): KeystonePoolConfig {
|
|
337
|
+
return createStandardPoolConfig({
|
|
338
|
+
...opts,
|
|
339
|
+
id: opts.id ?? POOL_ID_CONNECT,
|
|
340
|
+
verbs: opts.verbs ?? [KeystoneVerb.CONNECT],
|
|
341
|
+
replenishStrategy: opts.replenishStrategy ?? KeystoneReplenishStrategy.deleteAll,
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* Builds a KeystonePoolConfig from a JSON-sourced KeystonePoolTemplate.
|
|
347
|
+
*/
|
|
348
|
+
export function createPoolConfigFromJson({
|
|
349
|
+
template,
|
|
350
|
+
behaviorProfiles,
|
|
351
|
+
salt
|
|
352
|
+
}: {
|
|
353
|
+
template: KeystonePoolTemplate;
|
|
354
|
+
behaviorProfiles?: Record<string, KeystoneBehaviorProfileTemplate>;
|
|
355
|
+
salt: string;
|
|
356
|
+
}): KeystonePoolConfig {
|
|
357
|
+
let behavior: KeystoneBehaviorProfileTemplate | undefined;
|
|
358
|
+
if (template.behaviorProfile && behaviorProfiles) {
|
|
359
|
+
behavior = behaviorProfiles[template.behaviorProfile];
|
|
360
|
+
}
|
|
361
|
+
if (!behavior) {
|
|
362
|
+
behavior = template.behaviorInline;
|
|
363
|
+
}
|
|
364
|
+
if (!behavior) {
|
|
365
|
+
behavior = {
|
|
366
|
+
size: KEYSTONE_CONFIG_DEFAULT_SIZE,
|
|
367
|
+
replenish: KEYSTONE_CONFIG_DEFAULT_REPLENISH_STRATEGY,
|
|
368
|
+
selectSequentially: KEYSTONE_CONFIG_DEFAULT_SEQUENTIAL,
|
|
369
|
+
selectRandomly: KEYSTONE_CONFIG_DEFAULT_RANDOM,
|
|
370
|
+
targetBindingChars: KEYSTONE_CONFIG_DEFAULT_BINDING
|
|
371
|
+
};
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
return KeystoneConfig.hash()
|
|
375
|
+
.withId(template.id)
|
|
376
|
+
.withSalt(salt)
|
|
377
|
+
.withSize(behavior.size)
|
|
378
|
+
.withHybrid({
|
|
379
|
+
seqCount: behavior.selectSequentially,
|
|
380
|
+
randCount: behavior.selectRandomly,
|
|
381
|
+
})
|
|
382
|
+
.withTargetBinding(behavior.targetBindingChars)
|
|
383
|
+
.withReplenishStrategy(behavior.replenish)
|
|
384
|
+
.withHash({
|
|
385
|
+
algo: template.algo,
|
|
386
|
+
rounds: template.rounds
|
|
387
|
+
})
|
|
388
|
+
.forVerbs(template.allowedVerbs)
|
|
389
|
+
.build();
|
|
390
|
+
}
|
|
@@ -3,16 +3,12 @@ import { KeystoneReplenishStrategy } from "./keystone-types.mjs";
|
|
|
3
3
|
|
|
4
4
|
export const KEYSTONE_ATOM = "keystone";
|
|
5
5
|
export const KEYSTONE_POOL_ID_REGEXP = /^\w[\w\-.]*$/;
|
|
6
|
-
|
|
7
|
-
* arbitrary 64 limit? only letters characters good
|
|
8
|
-
*/
|
|
9
|
-
export const KEYSTONE_SALT_REGEXP = /^[a-zA-Z0-9]{1,64}$/;
|
|
6
|
+
export const KEYSTONE_SALT_REGEXP = /^[a-zA-Z0-9\-_]{1,64}$/;
|
|
10
7
|
/**
|
|
11
8
|
* arbitrary right now. don't want an easy DoS. this may still be too high.
|
|
12
9
|
*/
|
|
13
10
|
export const KEYSTONE_HASH_MAX_ROUNDS = 1_000;
|
|
14
11
|
|
|
15
|
-
// #region KeystoneVerb enum
|
|
16
12
|
/**
|
|
17
13
|
* @see {@link KeystoneVerb.REVOKE}
|
|
18
14
|
*/
|
|
@@ -25,10 +21,28 @@ export const KEYSTONE_VERB_MANAGE = "manage";
|
|
|
25
21
|
* @see {@link KeystoneVerb.SIGN}
|
|
26
22
|
*/
|
|
27
23
|
export const KEYSTONE_VERB_SIGN = "sign";
|
|
24
|
+
/**
|
|
25
|
+
* Used when a senderIdentity keystone authorizes a session keystone for a sync
|
|
26
|
+
* operation. The senderIdentity is evolved with a claim whose verb is `sync`,
|
|
27
|
+
* pointing to the session keystone genesis address.
|
|
28
|
+
*
|
|
29
|
+
* @see {@link KeystoneVerb.SYNC}
|
|
30
|
+
*/
|
|
31
|
+
export const KEYSTONE_VERB_SYNC = "sync";
|
|
32
|
+
/**
|
|
33
|
+
* Used by the session keystone's `connect` pool to authorize the transport
|
|
34
|
+
* connect (e.g. WebSocket challenge/response). Consumed exactly once per
|
|
35
|
+
* sync session during `peer.connect()`.
|
|
36
|
+
*
|
|
37
|
+
* @see {@link KeystoneVerb.CONNECT}
|
|
38
|
+
*/
|
|
39
|
+
export const KEYSTONE_VERB_CONNECT = "connect";
|
|
28
40
|
export type KeystoneVerb =
|
|
29
41
|
| typeof KEYSTONE_VERB_REVOKE
|
|
30
42
|
| typeof KEYSTONE_VERB_MANAGE
|
|
31
|
-
| typeof KEYSTONE_VERB_SIGN
|
|
43
|
+
| typeof KEYSTONE_VERB_SIGN
|
|
44
|
+
| typeof KEYSTONE_VERB_SYNC
|
|
45
|
+
| typeof KEYSTONE_VERB_CONNECT;
|
|
32
46
|
|
|
33
47
|
/**
|
|
34
48
|
* Verbs that describe actions that can be authorized by a Keystone.
|
|
@@ -55,6 +69,16 @@ export const KeystoneVerb = {
|
|
|
55
69
|
* This is the least of all privileges that can actually evolve a keystone.
|
|
56
70
|
*/
|
|
57
71
|
SIGN: KEYSTONE_VERB_SIGN,
|
|
72
|
+
/**
|
|
73
|
+
* Used when a senderIdentity keystone authorizes a session keystone.
|
|
74
|
+
* The senderIdentity is evolved with a `sync` claim targeting S^Stjp.
|
|
75
|
+
*/
|
|
76
|
+
SYNC: KEYSTONE_VERB_SYNC,
|
|
77
|
+
/**
|
|
78
|
+
* Used by the session keystone's `connect` pool for the transport
|
|
79
|
+
* connect (proof-of-possession). Consumed once per session.
|
|
80
|
+
*/
|
|
81
|
+
CONNECT: KEYSTONE_VERB_CONNECT,
|
|
58
82
|
} satisfies { [key: string]: KeystoneVerb };
|
|
59
83
|
export const KEYSTONE_VERB_VALID_VALUES = Object.values(KeystoneVerb);
|
|
60
84
|
export function isKeystoneVerb(value: string): value is KeystoneVerb {
|
|
@@ -70,6 +94,18 @@ export const POOL_ID_REVOKE = KEYSTONE_VERB_REVOKE;
|
|
|
70
94
|
export const POOL_ID_MANAGE = KEYSTONE_VERB_MANAGE;
|
|
71
95
|
export const POOL_ID_DEFAULT = "default";
|
|
72
96
|
export const POOL_ID_DELEGATE = "delegate";
|
|
97
|
+
/**
|
|
98
|
+
* Pool ID for the session keystone's transport connect pool.
|
|
99
|
+
* Paired with {@link KEYSTONE_VERB_CONNECT}. Consumed once per sync session
|
|
100
|
+
* during `peer.connect()`.
|
|
101
|
+
*/
|
|
102
|
+
export const POOL_ID_CONNECT = KEYSTONE_VERB_CONNECT;
|
|
103
|
+
/**
|
|
104
|
+
* Pool ID for the session keystone's per-turn signing pool.
|
|
105
|
+
* Paired with {@link KEYSTONE_VERB_SYNC}. Consumed once per outgoing sync
|
|
106
|
+
* context frame (Init, Delta, Commit, etc.).
|
|
107
|
+
*/
|
|
108
|
+
export const POOL_ID_SYNC = KEYSTONE_VERB_SYNC;
|
|
73
109
|
/**
|
|
74
110
|
* **THESE SHOULD ONLY BE USED IN TEMPORARY/SESSION KEYSTONES.**
|
|
75
111
|
* _this is because a receiver could intercept the stone, DoS participants and
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { extractErrorMsg, hash, HashAlgorithm, pretty } from "@ibgib/helper-gib/dist/helpers/utils-helper.mjs";
|
|
2
2
|
import { GIB } from "@ibgib/ts-gib/dist/V1/constants.mjs";
|
|
3
|
-
import { Ib, TransformResult } from "@ibgib/ts-gib/dist/types.mjs";
|
|
3
|
+
import { Ib, IbGibAddr, TransformResult } from "@ibgib/ts-gib/dist/types.mjs";
|
|
4
4
|
import { getIbAndGib, getIbGibAddr } from "@ibgib/ts-gib/dist/helper.mjs";
|
|
5
5
|
import { validateIbGibIntrinsically } from "@ibgib/ts-gib/dist/V1/validate-helper.mjs";
|
|
6
6
|
import { mut8 } from "@ibgib/ts-gib/dist/V1/transforms/mut8.mjs";
|
|
@@ -543,7 +543,7 @@ export async function validateChallengePool_typeHashRevealV1({ pool }: {
|
|
|
543
543
|
|
|
544
544
|
const { algo, rounds, salt, } = pool.config as KeystonePoolConfig_HashV1;
|
|
545
545
|
|
|
546
|
-
const validAlgos: HashAlgorithm[] = [HashAlgorithm.sha_256];
|
|
546
|
+
const validAlgos: HashAlgorithm[] = [HashAlgorithm.sha_256, HashAlgorithm.sha_512];
|
|
547
547
|
if (algo) {
|
|
548
548
|
if (!validAlgos.includes(algo)) {
|
|
549
549
|
errors.push(`${lc} invalid hash algorithm (${algo}). Must be one of ${validAlgos}. (E: a22399ca3a68e63ffcc7507699be5826)`);
|
|
@@ -1116,3 +1116,45 @@ export async function validateKeystoneGraph({
|
|
|
1116
1116
|
}
|
|
1117
1117
|
}
|
|
1118
1118
|
|
|
1119
|
+
export async function getIdentity({
|
|
1120
|
+
addr,
|
|
1121
|
+
metaspace,
|
|
1122
|
+
space,
|
|
1123
|
+
}: {
|
|
1124
|
+
addr: IbGibAddr,
|
|
1125
|
+
metaspace: MetaspaceService,
|
|
1126
|
+
space: IbGibSpaceAny,
|
|
1127
|
+
}): Promise<KeystoneIbGib_V1 | undefined> {
|
|
1128
|
+
const lc = `[${getIdentity.name}]`;
|
|
1129
|
+
try {
|
|
1130
|
+
if (logalot) { console.log(`${lc} starting... (I: 7f1dac53ff4691cb08cd267bf75f4326)`); }
|
|
1131
|
+
const resGet = await metaspace.get({ addr, space });
|
|
1132
|
+
const identityIbGib = resGet.ibGibs?.at(0) as KeystoneIbGib_V1;
|
|
1133
|
+
if (identityIbGib) {
|
|
1134
|
+
if (!identityIbGib.data) { throw new Error(`(UNEXPECTED) identityIbGib.data falsy? (E: d2f188232cd3bafb873b89e3a25a4826)`); }
|
|
1135
|
+
// should actually be a `isKeystone` guard, but hey...
|
|
1136
|
+
if (!identityIbGib.ib.startsWith(KEYSTONE_ATOM)) {
|
|
1137
|
+
throw new Error(`invalid. does not start with ${KEYSTONE_ATOM} (E: 4523f8647cc139f8c49597fb86329426)`);
|
|
1138
|
+
}
|
|
1139
|
+
}
|
|
1140
|
+
return identityIbGib;
|
|
1141
|
+
} catch (error) {
|
|
1142
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
1143
|
+
throw error;
|
|
1144
|
+
} finally {
|
|
1145
|
+
if (logalot) { console.log(`${lc} complete.`); }
|
|
1146
|
+
}
|
|
1147
|
+
}
|
|
1148
|
+
export async function getIdentity_throwIfUndefined({
|
|
1149
|
+
addr,
|
|
1150
|
+
metaspace,
|
|
1151
|
+
space,
|
|
1152
|
+
}: {
|
|
1153
|
+
addr: IbGibAddr,
|
|
1154
|
+
metaspace: MetaspaceService,
|
|
1155
|
+
space: IbGibSpaceAny,
|
|
1156
|
+
}): Promise<KeystoneIbGib_V1> {
|
|
1157
|
+
const identityIbGib = await getIdentity({ metaspace, addr, space });
|
|
1158
|
+
if (!identityIbGib) { throw new Error(`addr (${addr}) not found in space: ${space.ib} (E: 7533682e805819cc78bdb0d8960be826)`); }
|
|
1159
|
+
return identityIbGib;
|
|
1160
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { HashAlgorithm } from "@ibgib/helper-gib/dist/helpers/utils-helper.mjs";
|
|
2
|
+
import { KeystoneReplenishStrategy, KeystoneChallengeType } from "./keystone-types.mjs";
|
|
3
|
+
|
|
4
|
+
export interface KeystoneBehaviorProfileTemplate {
|
|
5
|
+
size: number;
|
|
6
|
+
replenish: KeystoneReplenishStrategy;
|
|
7
|
+
selectSequentially: number;
|
|
8
|
+
selectRandomly: number;
|
|
9
|
+
targetBindingChars: number;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface KeystonePoolTemplate {
|
|
13
|
+
id: string;
|
|
14
|
+
allowedVerbs: string[];
|
|
15
|
+
behaviorProfile?: string; // Reference to a behavior profile key
|
|
16
|
+
behaviorInline?: KeystoneBehaviorProfileTemplate; // Or specify behavior inline
|
|
17
|
+
algo: HashAlgorithm;
|
|
18
|
+
rounds: number;
|
|
19
|
+
type?: KeystoneChallengeType;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface KeystonePolicyConfigTemplate {
|
|
23
|
+
behaviorProfiles?: Record<string, KeystoneBehaviorProfileTemplate>;
|
|
24
|
+
pools: Record<string, KeystonePoolTemplate>;
|
|
25
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "KeystonePolicyConfigTemplate",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"behaviorProfiles": {
|
|
7
|
+
"type": "object",
|
|
8
|
+
"additionalProperties": {
|
|
9
|
+
"type": "object",
|
|
10
|
+
"properties": {
|
|
11
|
+
"size": { "type": "integer", "minimum": 1 },
|
|
12
|
+
"replenish": { "type": "string", "enum": ["top-up", "replace-all", "consume", "delete-all"] },
|
|
13
|
+
"selectSequentially": { "type": "integer", "minimum": 0 },
|
|
14
|
+
"selectRandomly": { "type": "integer", "minimum": 0 },
|
|
15
|
+
"targetBindingChars": { "type": "integer", "minimum": 0 }
|
|
16
|
+
},
|
|
17
|
+
"required": ["size", "replenish", "selectSequentially", "selectRandomly", "targetBindingChars"]
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"pools": {
|
|
21
|
+
"type": "object",
|
|
22
|
+
"additionalProperties": {
|
|
23
|
+
"type": "object",
|
|
24
|
+
"properties": {
|
|
25
|
+
"id": { "type": "string" },
|
|
26
|
+
"allowedVerbs": {
|
|
27
|
+
"type": "array",
|
|
28
|
+
"items": { "type": "string" }
|
|
29
|
+
},
|
|
30
|
+
"behaviorProfile": { "type": "string" },
|
|
31
|
+
"behaviorInline": {
|
|
32
|
+
"type": "object",
|
|
33
|
+
"properties": {
|
|
34
|
+
"size": { "type": "integer", "minimum": 1 },
|
|
35
|
+
"replenish": { "type": "string", "enum": ["top-up", "replace-all", "consume", "delete-all"] },
|
|
36
|
+
"selectSequentially": { "type": "integer", "minimum": 0 },
|
|
37
|
+
"selectRandomly": { "type": "integer", "minimum": 0 },
|
|
38
|
+
"targetBindingChars": { "type": "integer", "minimum": 0 }
|
|
39
|
+
},
|
|
40
|
+
"required": ["size", "replenish", "selectSequentially", "selectRandomly", "targetBindingChars"]
|
|
41
|
+
},
|
|
42
|
+
"algo": { "type": "string", "enum": ["SHA-256", "SHA-512"] },
|
|
43
|
+
"rounds": { "type": "integer", "minimum": 1 },
|
|
44
|
+
"type": { "type": "string", "enum": ["hash-reveal-v1"] }
|
|
45
|
+
},
|
|
46
|
+
"required": ["id", "allowedVerbs", "algo", "rounds"]
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"required": ["pools"]
|
|
51
|
+
}
|
|
@@ -256,10 +256,10 @@ export class KeystoneService_V1 {
|
|
|
256
256
|
|
|
257
257
|
/**
|
|
258
258
|
* Retrieves the latest keystone frame for the given address.
|
|
259
|
-
*
|
|
259
|
+
*
|
|
260
260
|
* Uses `metaspace.getLatestAddr` to find the actual tip instead of trusting
|
|
261
261
|
* an incoming payload's `past` rel8n.
|
|
262
|
-
*
|
|
262
|
+
*
|
|
263
263
|
* @see `ibgib-get-pattern` SKILL.md
|
|
264
264
|
*/
|
|
265
265
|
async getLatestKeystone({
|
|
@@ -274,7 +274,7 @@ export class KeystoneService_V1 {
|
|
|
274
274
|
const lc = `${this.lc}[${this.getLatestKeystone.name}]`;
|
|
275
275
|
try {
|
|
276
276
|
if (logalot) { console.log(`${lc} starting...`); }
|
|
277
|
-
|
|
277
|
+
|
|
278
278
|
const latestAddr = await metaspace.getLatestAddr({ tjpAddr: addr, space });
|
|
279
279
|
if (!latestAddr) {
|
|
280
280
|
throw new Error(`could not find latest addr for ${addr}`);
|
|
@@ -68,6 +68,17 @@ The protocol supports two types of data:
|
|
|
68
68
|
|
|
69
69
|
See [Security](./security.md) documentation.
|
|
70
70
|
|
|
71
|
+
### 4.1 Ephemeral Session Domain-Binding
|
|
72
|
+
To prevent an ephemeral session keystone `S` from acting as a "blank check" that could authorize operations on arbitrary timelines, the protocol implements strict domain-binding:
|
|
73
|
+
* **Genesis Binding**: The first frame of the session keystone ($S^{Stjp}$) must explicitly contain a `targetAddrs` array inside its `frameDetails` mapping to the exact addresses of the ibgibs being synchronized.
|
|
74
|
+
* **Verification Boundary**: During the initial turn-based synchronization (e.g., `handleInitFrame`), the validating peer (Receiver) must extract this `targetAddrs` array from $S^{Stjp}$'s genesis `frameDetails` and verify it contains the synchronizing domain's target address, rejecting the handshake on any mismatch.
|
|
75
|
+
|
|
76
|
+
## 5. Sync Peer Lifetime
|
|
77
|
+
|
|
78
|
+
A `SyncPeer` is **single-saga scoped**. One peer instance services exactly one `sync(...)` call from creation through saga completion. The coordinator's `newTestPeer()` factory pattern (or equivalent in production) must create a fresh peer per saga.
|
|
79
|
+
|
|
80
|
+
**Rationale**: The session keystone `S` is derived from `KDF(senderSecret, sagaId)`. Since `sagaId` is unique per saga, `S` is inherently saga-bound. A peer that outlived its saga would hold stale identity state, violating the security model.
|
|
81
|
+
|
|
71
82
|
> [!WARNING]
|
|
72
83
|
> ## 5. Sync Storage & Persistence Rules (Critical Security)
|
|
73
84
|
>
|
|
@@ -88,3 +99,12 @@ See [Security](./security.md) documentation.
|
|
|
88
99
|
> * **First step:** Intrinsically validate ibgibs (hashes, basic structure).
|
|
89
100
|
> * **Second step:** Perform AuthN/AuthZ checks (using the session keystone).
|
|
90
101
|
> * **Final step:** Once verified, saga "control" ibgibs (which only contain "soft" links to domain ibgibs) can be safely persisted to durable spaces.
|
|
102
|
+
|
|
103
|
+
## 6. Transport & Framing (Naive WebSocket Implementation)
|
|
104
|
+
|
|
105
|
+
> [!NOTE]
|
|
106
|
+
> ### TODO: Robust WebSocket Framing & TCP Reassembly
|
|
107
|
+
> The current custom WebSocket integration on the node server (`ws-helper.mts`) relies on a naive framing implementation. It assumes each socket `data` event emitted by Node's TCP stream contains exactly one complete WebSocket frame.
|
|
108
|
+
>
|
|
109
|
+
> * **TCP Fragmentation Risk**: When payload sizes grow (e.g. sending larger cryptographic proofs or domain datasets), TCP will split the frame across multiple packets or buffers. The naive decoder will decode a partial frame, causing parse errors (e.g., `Unterminated string in JSON`).
|
|
110
|
+
> * **Future Action**: Replace the custom, naive WebSocket framing code with a robust stateful accumulator that aggregates incoming TCP chunks until the entire frame length (indicated in the frame header) is present in memory, or transition to a fully tested, production-grade library (such as the NPM `ws` package).
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# Phase 3: Ping Pong Sync with Identity Plan
|
|
2
|
+
|
|
3
|
+
This document details the step-by-step execution flow, space-routing rules, and verification requirements for implementing Phase 3 (Basic Single-Timeline Sync with Identity).
|
|
4
|
+
|
|
5
|
+
## Core Concepts & Terms
|
|
6
|
+
* **Durable Space**: Persistent local database/filesystem storage (`localSpace`).
|
|
7
|
+
* **Temporary Space**: In-memory or transient storage (`tempSpace`) used during the sync saga to accumulate uncommitted domain data.
|
|
8
|
+
* **Control/Saga IbGibs**: The sync saga timeline, saga message stones, context envelopes, and session identity evolutions. These represent the protocol communication and auditing trail.
|
|
9
|
+
* **Domain IbGibs**: The actual user timelines, files, or payload data being synchronized.
|
|
10
|
+
* **Sender (Alice / Initiator)**: The node that generates and signs all request turns using the ephemeral Session Keystone ($S$).
|
|
11
|
+
* **Receiver (Bob / Sovereign Broker / Reactor)**: The node that validates the sender's cryptographic turns and replies with unsigned contexts echoing the same session identity.
|
|
12
|
+
|
|
13
|
+
### Note on "Domain" Overloaded Term
|
|
14
|
+
|
|
15
|
+
The term "domain" is overloaded at this point WRT sync and identity contexts. In this sync context, "domain" refers to ibgibs in the business logic domain, i.e., the actual data we're working with. This is in contrast to the identity context, in which "domain" means the identity boundary created with a main identity keystone. Neither usage is easily refactorable in code, hence the term overloading.
|
|
16
|
+
|
|
17
|
+
**TL;DR - Sync: "domain" vs "control". Identity: "domain" keystone vs. "session" keystone**
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Storage & Routing Rules (Security Boundary)
|
|
22
|
+
|
|
23
|
+
| IbGib Category | Target Space (Validation Phase) | Target Space (Commit Phase) | Rationale |
|
|
24
|
+
| :--- | :--- | :--- | :--- |
|
|
25
|
+
| **Control / Saga** | Durable Space (`localSpace`) | Durable Space (`localSpace`) | Must be persisted ASAP after authentication/validation per exchange between endpoints to maintain a tamper-evident audit trail, even if the sync fails midway. |
|
|
26
|
+
| **Domain Payloads** | Temporary Space (`tempSpace`) | Durable Space (`localSpace`) | Avoids polluting the durable space with unverified or partial data before a transaction successfully commits. |
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Detailed Leg-by-Leg Execution Flow
|
|
31
|
+
|
|
32
|
+
```mermaid
|
|
33
|
+
sequenceDiagram
|
|
34
|
+
autonumber
|
|
35
|
+
actor Alice as Sender (Alice)
|
|
36
|
+
actor Bob as Receiver (Bob)
|
|
37
|
+
|
|
38
|
+
Note over Alice: Leg 1: Init (Sign & Post)
|
|
39
|
+
Alice->>Alice: Sign/Evolve S -> S_init
|
|
40
|
+
Alice->>Alice: Bind context.rel8ns.sessionIdentity = S_genesis
|
|
41
|
+
Alice->>Alice: Bind context.signedSessionIdentity = S_init
|
|
42
|
+
Alice->>Bob: Send Context (with S_init frame)
|
|
43
|
+
Note over Bob: Authenticate S_init independently
|
|
44
|
+
Bob->>Bob: Save Context & S_init to Durable Space
|
|
45
|
+
|
|
46
|
+
Note over Bob: Leg 2: Ack (Passive Validation)
|
|
47
|
+
Bob->>Bob: Prepare Ack context
|
|
48
|
+
Bob->>Bob: Bind context.rel8ns.sessionIdentity = S_init
|
|
49
|
+
Note over Bob: (No new evolution / signedSessionIdentity = undefined)
|
|
50
|
+
Bob->>Alice: Return Ack Context
|
|
51
|
+
|
|
52
|
+
Note over Alice: Leg 3: Delta (Sign & Payload)
|
|
53
|
+
Alice->>Alice: Process Ack requests
|
|
54
|
+
Alice->>Alice: Sign/Evolve S_init -> S_delta
|
|
55
|
+
Alice->>Alice: Bind context.rel8ns.sessionIdentity = S_init
|
|
56
|
+
Alice->>Alice: Bind context.signedSessionIdentity = S_delta
|
|
57
|
+
Alice->>Bob: Send Delta Context + Domain Payloads
|
|
58
|
+
Note over Bob: Authenticate S_delta independently
|
|
59
|
+
Bob->>Bob: Save Context & S_delta to Durable Space
|
|
60
|
+
Bob->>Bob: Save Domain Payloads to Temp Space
|
|
61
|
+
|
|
62
|
+
Note over Bob: Leg 4: Commit (Passive Verification)
|
|
63
|
+
Bob->>Bob: Prepare Commit context
|
|
64
|
+
Bob->>Bob: Bind context.rel8ns.sessionIdentity = S_delta
|
|
65
|
+
Bob->>Alice: Return Commit Context
|
|
66
|
+
Bob->>Bob: Move Domain Payloads (Temp -> Durable)
|
|
67
|
+
Alice->>Alice: Move Domain Payloads (Temp -> Durable)
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Leg 1: Init (Sender $\to$ Receiver)
|
|
71
|
+
1. **Sender (Alice)**:
|
|
72
|
+
* [ ] Generates the `Init` message frame.
|
|
73
|
+
* [ ] Signs and evolves the session identity from $S_{genesis}$ to $S_{init}$ using the `sync` pool, targeting the `Init` context ibgib.
|
|
74
|
+
* [ ] Wraps the saga in a context:
|
|
75
|
+
* `context.rel8ns.sessionIdentity = [S_genesis_addr]`
|
|
76
|
+
* `context.signedSessionIdentity = S_init`
|
|
77
|
+
* [ ] Transmits the context to the peer. Note: We only transmit the single evolved `S_init` frame inside `signedSessionIdentity`.
|
|
78
|
+
2. **Receiver (Bob)**:
|
|
79
|
+
* [ ] Receives the context.
|
|
80
|
+
* [ ] **Authentication**: Run `authenticateContext`.
|
|
81
|
+
* [ ] Retrieve the previous keystone frame ($S_{genesis}$) independently from Bob's own local registry (using the session identity address obtained via $I_1$'s claim), rather than trusting any path/history Alice sends.
|
|
82
|
+
* [ ] Validate the cryptographic evolution from $S_{genesis}$ to the incoming $S_{init}$ (sequential counters, signature verification).
|
|
83
|
+
* [ ] Verify the signature in $S_{init}$ targets the exact context address.
|
|
84
|
+
* [ ] **Persistence**: Ensure $S_{init}$ is saved to the durable space alongside the context/saga control ibgibs (already handled by the coordinator's sync state saving mechanism, but needs to include the new session identity frame).
|
|
85
|
+
|
|
86
|
+
### Leg 2: Ack (Receiver $\to$ Sender)
|
|
87
|
+
1. **Receiver (Bob)**:
|
|
88
|
+
* [ ] Creates the `Ack` message frame.
|
|
89
|
+
* [ ] Wraps it in an `Ack` context:
|
|
90
|
+
* `context.rel8ns.sessionIdentity = [S_init_addr]`
|
|
91
|
+
* `context.signedSessionIdentity = undefined` (Bob does *not* sign or evolve $S$).
|
|
92
|
+
* [ ] Transmits the `Ack` context to Alice.
|
|
93
|
+
2. **Sender (Alice)**:
|
|
94
|
+
* [ ] Receives the `Ack` context.
|
|
95
|
+
* [ ] Processes the gap requests and prepares domain payloads.
|
|
96
|
+
|
|
97
|
+
### Leg 3: Delta (Sender $\to$ Receiver)
|
|
98
|
+
1. **Sender (Alice)**:
|
|
99
|
+
* [ ] Creates the `Delta` message frame.
|
|
100
|
+
* [ ] Signs and evolves the session identity from $S_{init}$ to $S_{delta}$, targeting the `Delta` context ibgib.
|
|
101
|
+
* [ ] Wraps it in a `Delta` context:
|
|
102
|
+
* `context.rel8ns.sessionIdentity = [S_init_addr]`
|
|
103
|
+
* `context.signedSessionIdentity = S_delta`
|
|
104
|
+
* [ ] Transmits the `Delta` context and the domain payloads.
|
|
105
|
+
2. **Receiver (Bob)**:
|
|
106
|
+
* [ ] Receives the context and domain payloads.
|
|
107
|
+
* [ ] **Authentication**: Run `authenticateContext`.
|
|
108
|
+
* [ ] Retrieve $S_{init}$ independently from Bob's own local registry.
|
|
109
|
+
* [ ] Validate transition from $S_{init}$ to $S_{delta}$.
|
|
110
|
+
* [ ] Verify signature targets the `Delta` context address.
|
|
111
|
+
* [ ] **Persistence**:
|
|
112
|
+
* [ ] Ensure $S_{delta}$ is saved to the durable space alongside the control ibgibs.
|
|
113
|
+
* [ ] Save incoming domain payloads to **Temporary Space** (`tempSpace`).
|
|
114
|
+
|
|
115
|
+
### Leg 4: Commit (Receiver $\to$ Sender)
|
|
116
|
+
1. **Receiver (Bob)**:
|
|
117
|
+
* [ ] Creates the `Commit` message frame and context.
|
|
118
|
+
* [ ] Returns the `Commit` context to Alice.
|
|
119
|
+
* [ ] Commits the sync session: transfers all domain payloads from `tempSpace` to `localSpace` (Durable).
|
|
120
|
+
2. **Sender (Alice)**:
|
|
121
|
+
* [ ] Receives the `Commit` context.
|
|
122
|
+
* [ ] Commits the sync session: transfers accumulated domain payloads from `tempSpace` to `localSpace` (Durable).
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Phase 3A: Step-by-Step Testing Plan
|
|
127
|
+
|
|
128
|
+
To prevent complexity explosion, we will implement this incrementally using a new test file: `libs/core-gib/src/sync/sync-withid.pingpong.respec.mts`.
|
|
129
|
+
|
|
130
|
+
### Step 1: Scaffold & Establish
|
|
131
|
+
* [ ] Initialize a basic sync saga setup (two spaces, two coordinators, custom in-memory peer).
|
|
132
|
+
* [ ] Perform Phase 1 establish to load the sender identity $I$ and session identity $S_{genesis}$ into the spaces.
|
|
133
|
+
* [ ] Trigger `sync(...)`. Assert that the saga fails on Leg 1 due to unimplemented identity checks on the receiver.
|
|
134
|
+
|
|
135
|
+
### Step 2: Implement Leg 1 Validation
|
|
136
|
+
* [ ] Implement `authenticateContext` on the sync peer receiver (or as a helper).
|
|
137
|
+
* [ ] Wire `authenticateContext` into the coordinator/peer incoming frame handler.
|
|
138
|
+
* [ ] Verify that Leg 1 completes without error and that the receiver successfully writes the saga/session frames to durable space.
|
|
139
|
+
|
|
140
|
+
### Step 3: Implement Leg 2 & Leg 3 Validation
|
|
141
|
+
* [ ] Verify Alice processes the Ack and produces a Delta.
|
|
142
|
+
* [ ] Implement Alice's second evolution to $S_{delta}$ and verification of it by Bob.
|
|
143
|
+
* [ ] Verify domain payloads are successfully written to `tempSpace` during the Delta stage.
|
|
144
|
+
|
|
145
|
+
### Step 4: Transactional Commit
|
|
146
|
+
* [ ] Implement the commit phase logic that transfers domain payloads from `tempSpace` to `localSpace` upon receipt/emission of the `Commit` frame.
|
|
147
|
+
* [ ] Assert that the final domain graphs on both sides are completely equivalent.
|