@ibgib/core-gib 0.1.60 → 0.1.62

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/common/other/graph-helper.d.mts.map +1 -1
  3. package/dist/common/other/graph-helper.mjs +7 -6
  4. package/dist/common/other/graph-helper.mjs.map +1 -1
  5. package/dist/keystone/keystone-config-builder.d.mts +1 -2
  6. package/dist/keystone/keystone-config-builder.d.mts.map +1 -1
  7. package/dist/keystone/keystone-config-builder.mjs +4 -19
  8. package/dist/keystone/keystone-config-builder.mjs.map +1 -1
  9. package/dist/keystone/keystone-constants.d.mts +2 -1
  10. package/dist/keystone/keystone-constants.d.mts.map +1 -1
  11. package/dist/keystone/keystone-constants.mjs +2 -1
  12. package/dist/keystone/keystone-constants.mjs.map +1 -1
  13. package/dist/keystone/keystone-helpers.d.mts +28 -16
  14. package/dist/keystone/keystone-helpers.d.mts.map +1 -1
  15. package/dist/keystone/keystone-helpers.mjs +155 -76
  16. package/dist/keystone/keystone-helpers.mjs.map +1 -1
  17. package/dist/keystone/keystone-policy-types.d.mts +6 -4
  18. package/dist/keystone/keystone-policy-types.d.mts.map +1 -1
  19. package/dist/keystone/keystone-service-v1.d.mts +38 -2
  20. package/dist/keystone/keystone-service-v1.d.mts.map +1 -1
  21. package/dist/keystone/keystone-service-v1.mjs +177 -11
  22. package/dist/keystone/keystone-service-v1.mjs.map +1 -1
  23. package/dist/keystone/keystone-service-v1.respec.mjs +527 -41
  24. package/dist/keystone/keystone-service-v1.respec.mjs.map +1 -1
  25. package/dist/keystone/keystone-types.d.mts +53 -11
  26. package/dist/keystone/keystone-types.d.mts.map +1 -1
  27. package/dist/keystone/policy/keystone-profile-builder.d.mts +25 -0
  28. package/dist/keystone/policy/keystone-profile-builder.d.mts.map +1 -0
  29. package/dist/keystone/policy/keystone-profile-builder.mjs +117 -0
  30. package/dist/keystone/policy/keystone-profile-builder.mjs.map +1 -0
  31. package/dist/keystone/policy/profiles/profile-high.json +84 -0
  32. package/dist/keystone/policy/profiles/profile-low.json +84 -0
  33. package/dist/keystone/policy/profiles/profile-medium.json +84 -0
  34. package/dist/keystone/policy/profiles/profile-session.json +84 -0
  35. package/dist/keystone/policy/profiles/profile-test.json +84 -0
  36. package/dist/keystone/policy/schemas/connect-pool.high.schema.json +23 -0
  37. package/dist/keystone/policy/schemas/connect-pool.low.schema.json +23 -0
  38. package/dist/keystone/policy/schemas/connect-pool.medium.schema.json +23 -0
  39. package/dist/keystone/policy/schemas/keystone.high.schema.json +26 -0
  40. package/dist/keystone/policy/schemas/keystone.low.schema.json +26 -0
  41. package/dist/keystone/policy/schemas/keystone.medium.schema.json +26 -0
  42. package/dist/keystone/policy/schemas/manage-pool.high.schema.json +23 -0
  43. package/dist/keystone/policy/schemas/manage-pool.low.schema.json +23 -0
  44. package/dist/keystone/policy/schemas/manage-pool.medium.schema.json +23 -0
  45. package/dist/keystone/policy/schemas/revoke-pool.high.schema.json +23 -0
  46. package/dist/keystone/policy/schemas/revoke-pool.low.schema.json +23 -0
  47. package/dist/keystone/policy/schemas/revoke-pool.medium.schema.json +23 -0
  48. package/dist/keystone/policy/schemas/sign-pool.high.schema.json +23 -0
  49. package/dist/keystone/policy/schemas/sign-pool.low.schema.json +23 -0
  50. package/dist/keystone/policy/schemas/sign-pool.medium.schema.json +23 -0
  51. package/dist/keystone/policy/schemas/sync-pool.high.schema.json +23 -0
  52. package/dist/keystone/policy/schemas/sync-pool.low.schema.json +23 -0
  53. package/dist/keystone/policy/schemas/sync-pool.medium.schema.json +23 -0
  54. package/dist/sync/sync-conflict-adv-multitimelines.withid.respec.d.mts +8 -0
  55. package/dist/sync/sync-conflict-adv-multitimelines.withid.respec.d.mts.map +1 -0
  56. package/dist/sync/sync-conflict-adv-multitimelines.withid.respec.mjs +582 -0
  57. package/dist/sync/sync-conflict-adv-multitimelines.withid.respec.mjs.map +1 -0
  58. package/dist/sync/sync-conflict-basic-divergence.withid.respec.d.mts +7 -0
  59. package/dist/sync/sync-conflict-basic-divergence.withid.respec.d.mts.map +1 -0
  60. package/dist/sync/sync-conflict-basic-divergence.withid.respec.mjs +274 -0
  61. package/dist/sync/sync-conflict-basic-divergence.withid.respec.mjs.map +1 -0
  62. package/dist/sync/sync-conflict-basic-multitimelines.withid.respec.d.mts +8 -0
  63. package/dist/sync/sync-conflict-basic-multitimelines.withid.respec.d.mts.map +1 -0
  64. package/dist/sync/sync-conflict-basic-multitimelines.withid.respec.mjs +322 -0
  65. package/dist/sync/sync-conflict-basic-multitimelines.withid.respec.mjs.map +1 -0
  66. package/dist/sync/sync-conflict-text-merge.withid.respec.d.mts +7 -0
  67. package/dist/sync/sync-conflict-text-merge.withid.respec.d.mts.map +1 -0
  68. package/dist/sync/sync-conflict-text-merge.withid.respec.mjs +307 -0
  69. package/dist/sync/sync-conflict-text-merge.withid.respec.mjs.map +1 -0
  70. package/dist/sync/sync-innerspace-constants.withid.respec.d.mts +8 -0
  71. package/dist/sync/sync-innerspace-constants.withid.respec.d.mts.map +1 -0
  72. package/dist/sync/sync-innerspace-constants.withid.respec.mjs +233 -0
  73. package/dist/sync/sync-innerspace-constants.withid.respec.mjs.map +1 -0
  74. package/dist/sync/sync-innerspace-deep-updates.withid.respec.d.mts +7 -0
  75. package/dist/sync/sync-innerspace-deep-updates.withid.respec.d.mts.map +1 -0
  76. package/dist/sync/sync-innerspace-deep-updates.withid.respec.mjs +233 -0
  77. package/dist/sync/sync-innerspace-deep-updates.withid.respec.mjs.map +1 -0
  78. package/dist/sync/sync-innerspace-dest-ahead.withid.respec.d.mts +7 -0
  79. package/dist/sync/sync-innerspace-dest-ahead.withid.respec.d.mts.map +1 -0
  80. package/dist/sync/sync-innerspace-dest-ahead.withid.respec.mjs +225 -0
  81. package/dist/sync/sync-innerspace-dest-ahead.withid.respec.mjs.map +1 -0
  82. package/dist/sync/sync-innerspace-multiple-timelines.respec.mjs.map +1 -1
  83. package/dist/sync/sync-innerspace-multiple-timelines.withid.respec.d.mts +7 -0
  84. package/dist/sync/sync-innerspace-multiple-timelines.withid.respec.d.mts.map +1 -0
  85. package/dist/sync/sync-innerspace-multiple-timelines.withid.respec.mjs +235 -0
  86. package/dist/sync/sync-innerspace-multiple-timelines.withid.respec.mjs.map +1 -0
  87. package/dist/sync/sync-innerspace-partial-update.withid.respec.d.mts +7 -0
  88. package/dist/sync/sync-innerspace-partial-update.withid.respec.d.mts.map +1 -0
  89. package/dist/sync/sync-innerspace-partial-update.withid.respec.mjs +211 -0
  90. package/dist/sync/sync-innerspace-partial-update.withid.respec.mjs.map +1 -0
  91. package/dist/sync/sync-innerspace.withid.respec.d.mts +8 -0
  92. package/dist/sync/sync-innerspace.withid.respec.d.mts.map +1 -0
  93. package/dist/sync/sync-innerspace.withid.respec.mjs +260 -0
  94. package/dist/sync/sync-innerspace.withid.respec.mjs.map +1 -0
  95. package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-peer-websocket-receiver-v1.d.mts +1 -0
  96. package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-peer-websocket-receiver-v1.d.mts.map +1 -1
  97. package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-peer-websocket-receiver-v1.mjs +13 -4
  98. package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-peer-websocket-receiver-v1.mjs.map +1 -1
  99. package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-websocket-peer-helpers.d.mts +1 -1
  100. package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-websocket-peer-helpers.d.mts.map +1 -1
  101. package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-websocket-peer-helpers.mjs +5 -3
  102. package/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-websocket-peer-helpers.mjs.map +1 -1
  103. package/dist/sync/sync-saga-coordinator.d.mts.map +1 -1
  104. package/dist/sync/sync-saga-coordinator.mjs +165 -145
  105. package/dist/sync/sync-saga-coordinator.mjs.map +1 -1
  106. package/dist/sync/sync-withid.pingpong.respec.mjs +8 -8
  107. package/dist/sync/sync-withid.pingpong.respec.mjs.map +1 -1
  108. package/dist/timeline/timeline-api.d.mts.map +1 -1
  109. package/dist/timeline/timeline-api.mjs +1 -14
  110. package/dist/timeline/timeline-api.mjs.map +1 -1
  111. package/dist/witness/space/reconciliation-space/reconciliation-space-base.d.mts.map +1 -1
  112. package/dist/witness/space/reconciliation-space/reconciliation-space-base.mjs +0 -40
  113. package/dist/witness/space/reconciliation-space/reconciliation-space-base.mjs.map +1 -1
  114. package/dist/witness/space/reconciliation-space/reconciliation-space-helper.d.mts.map +1 -1
  115. package/dist/witness/space/reconciliation-space/reconciliation-space-helper.mjs +6 -6
  116. package/dist/witness/space/reconciliation-space/reconciliation-space-helper.mjs.map +1 -1
  117. package/ibgib-foundations.md +2 -1
  118. package/package.json +1 -1
  119. package/src/common/other/graph-helper.mts +7 -6
  120. package/src/keystone/README.md +34 -17
  121. package/src/keystone/docs/CRYPTANALYSIS.md +185 -0
  122. package/src/keystone/docs/architecture.md +45 -3
  123. package/src/keystone/docs/delegation.md +57 -0
  124. package/src/keystone/docs/profiles.md +124 -0
  125. package/src/keystone/keystone-config-builder.mts +3 -21
  126. package/src/keystone/keystone-constants.mts +2 -1
  127. package/src/keystone/keystone-helpers.mts +204 -81
  128. package/src/keystone/keystone-policy-types.mts +6 -4
  129. package/src/keystone/keystone-service-v1.mts +223 -11
  130. package/src/keystone/keystone-service-v1.respec.mts +596 -39
  131. package/src/keystone/keystone-types.mts +55 -9
  132. package/src/keystone/policy/IMPLEMENTATION.md +60 -0
  133. package/src/keystone/policy/README.md +94 -0
  134. package/src/keystone/policy/keystone-profile-builder.mts +131 -0
  135. package/src/keystone/policy/profiles/profile-high.json +84 -0
  136. package/src/keystone/policy/profiles/profile-low.json +84 -0
  137. package/src/keystone/policy/profiles/profile-medium.json +84 -0
  138. package/src/keystone/policy/profiles/profile-session.json +84 -0
  139. package/src/keystone/policy/profiles/profile-test.json +84 -0
  140. package/src/keystone/policy/schemas/connect-pool.high.schema.json +23 -0
  141. package/src/keystone/policy/schemas/connect-pool.low.schema.json +23 -0
  142. package/src/keystone/policy/schemas/connect-pool.medium.schema.json +23 -0
  143. package/src/keystone/policy/schemas/keystone.high.schema.json +26 -0
  144. package/src/keystone/policy/schemas/keystone.low.schema.json +26 -0
  145. package/src/keystone/policy/schemas/keystone.medium.schema.json +26 -0
  146. package/src/keystone/policy/schemas/manage-pool.high.schema.json +23 -0
  147. package/src/keystone/policy/schemas/manage-pool.low.schema.json +23 -0
  148. package/src/keystone/policy/schemas/manage-pool.medium.schema.json +23 -0
  149. package/src/keystone/policy/schemas/revoke-pool.high.schema.json +23 -0
  150. package/src/keystone/policy/schemas/revoke-pool.low.schema.json +23 -0
  151. package/src/keystone/policy/schemas/revoke-pool.medium.schema.json +23 -0
  152. package/src/keystone/policy/schemas/sign-pool.high.schema.json +23 -0
  153. package/src/keystone/policy/schemas/sign-pool.low.schema.json +23 -0
  154. package/src/keystone/policy/schemas/sign-pool.medium.schema.json +23 -0
  155. package/src/keystone/policy/schemas/sync-pool.high.schema.json +23 -0
  156. package/src/keystone/policy/schemas/sync-pool.low.schema.json +23 -0
  157. package/src/keystone/policy/schemas/sync-pool.medium.schema.json +23 -0
  158. package/src/sync/docs/security.md +54 -21
  159. package/src/sync/sync-conflict-adv-multitimelines.withid.respec.mts +706 -0
  160. package/src/sync/sync-conflict-basic-divergence.withid.respec.mts +321 -0
  161. package/src/sync/sync-conflict-basic-multitimelines.withid.respec.mts +374 -0
  162. package/src/sync/sync-conflict-text-merge.withid.respec.mts +347 -0
  163. package/src/sync/sync-innerspace-constants.withid.respec.mts +264 -0
  164. package/src/sync/sync-innerspace-deep-updates.withid.respec.mts +272 -0
  165. package/src/sync/sync-innerspace-dest-ahead.withid.respec.mts +266 -0
  166. package/src/sync/sync-innerspace-multiple-timelines.respec.mts +0 -1
  167. package/src/sync/sync-innerspace-multiple-timelines.withid.respec.mts +273 -0
  168. package/src/sync/sync-innerspace-partial-update.withid.respec.mts +249 -0
  169. package/src/sync/sync-innerspace.withid.respec.mts +265 -0
  170. package/src/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-peer-websocket-receiver-v1.mts +12 -4
  171. package/src/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-websocket-peer-helpers.mts +5 -3
  172. package/src/sync/sync-saga-coordinator.mts +159 -143
  173. package/src/sync/sync-withid.pingpong.respec.mts +8 -8
  174. package/src/timeline/timeline-api.mts +1 -15
  175. package/src/timeline/timeline-api.respec.mts +3 -3
  176. package/src/witness/space/reconciliation-space/reconciliation-space-base.mts +0 -46
  177. package/src/witness/space/reconciliation-space/reconciliation-space-helper.mts +6 -5
  178. package/tsconfig.json +6 -1
  179. package/src/keystone/keystone-policy.schema.json +0 -51
  180. package/src/witness/space/reconciliation-space/reconciliation-space-base.mts.OLD.md +0 -884
  181. package/src/witness/space/reconciliation-space/reconciliation-space-helper.mts.OLD.md +0 -125
@@ -0,0 +1,307 @@
1
+ /**
2
+ * @module sync-conflict-text-merge.withid.respec
3
+ *
4
+ * Verifies text merge (LCS algorithm) in SyncSagaCoordinator under identity.
5
+ */
6
+ import { respecfully, ifWe, iReckon } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
7
+ const maam = `[${import.meta.url}]`, sir = maam;
8
+ import { clone, delay, extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
9
+ import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
10
+ import { GLOBAL_LOG_A_LOT } from '../core-constants.mjs';
11
+ import { TestTransformer } from '../test-helpers.mjs';
12
+ import { SyncSagaCoordinator } from './sync-saga-coordinator.mjs';
13
+ import { getFromSpace } from '../witness/space/space-helper.mjs';
14
+ import { Metaspace_Innerspace } from '../witness/space/metaspace/metaspace-innerspace/metaspace-innerspace.mjs';
15
+ import { InnerSpace_V1 } from '../witness/space/inner-space/inner-space-v1.mjs';
16
+ import { SyncPeerInnerspace_V1 } from './sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.mjs';
17
+ import { DEFAULT_INNER_SPACE_DATA_V1 } from '../witness/space/inner-space/inner-space-types.mjs';
18
+ import { getIbGibsFromCache_fallbackToSpaces, getTjpAddr } from '../common/other/ibgib-helper.mjs';
19
+ import { SYNC_PEER_INNERSPACE_DEFAULT_DATA_V1 } from './sync-peer/sync-peer-innerspace/sync-peer-innerspace-constants.mjs';
20
+ import { SyncConflictStrategy } from './sync-constants.mjs';
21
+ import { KeystoneService_V1 } from '../keystone/keystone-service-v1.mjs';
22
+ import { KEYSTONE_VERB_SYNC, POOL_ID_SYNC, } from '../keystone/keystone-constants.mjs';
23
+ import { createStandardPoolConfig } from '../keystone/keystone-config-builder.mjs';
24
+ import { KeystoneReplenishStrategy } from '../keystone/keystone-types.mjs';
25
+ const logalot = GLOBAL_LOG_A_LOT;
26
+ const lc = sir;
27
+ const SENDER_SECRET = 'test-sender-secret-conflict-text-merge-withid';
28
+ const SENDER_IDENTITY_SYNC_POOL_CONFIG = createStandardPoolConfig({
29
+ id: POOL_ID_SYNC,
30
+ salt: 'senderidentitysyncsaltconflicttextmergewithid',
31
+ verbs: [KEYSTONE_VERB_SYNC],
32
+ size: 200,
33
+ sequential: 1,
34
+ random: 1,
35
+ targetBinding: 2,
36
+ replenishStrategy: KeystoneReplenishStrategy.topUp,
37
+ });
38
+ await respecfully(sir, `Text merge (LCS) conflict resolution with Identity`, async () => {
39
+ // #region Init/Setup
40
+ const metaspace = new Metaspace_Innerspace(undefined);
41
+ await metaspace.initialize({
42
+ getFnAlert: () => async ({ title, msg }) => { console.log(`[Alert] ${title}: ${msg}`); },
43
+ getFnPrompt: () => async ({ title, msg }) => { console.log(`[Prompt] ${title}: ${msg}`); return ''; },
44
+ getFnPromptPassword: () => async (title, msg) => { console.log(`[PromptPwd] ${title}: ${msg}`); return null; },
45
+ });
46
+ while (!metaspace.initialized) {
47
+ await delay(10);
48
+ }
49
+ const defaultLocalUserSpace = await metaspace.getLocalUserSpace({ lock: false });
50
+ await defaultLocalUserSpace.initialized;
51
+ const sourceSpace = new InnerSpace_V1({
52
+ ...DEFAULT_INNER_SPACE_DATA_V1,
53
+ name: 'source',
54
+ uuid: 'source_uuid',
55
+ description: 'source test space',
56
+ });
57
+ await sourceSpace.initialized;
58
+ const destSpace = new InnerSpace_V1({
59
+ ...DEFAULT_INNER_SPACE_DATA_V1,
60
+ name: 'dest',
61
+ uuid: 'dest_uuid',
62
+ description: 'dest test space',
63
+ });
64
+ await destSpace.initialized;
65
+ const testTransformer = new TestTransformer(metaspace, sourceSpace, destSpace);
66
+ if (logalot) {
67
+ console.log(`${lc} Setting up Coordinators...`);
68
+ }
69
+ const senderCoordinator = new SyncSagaCoordinator();
70
+ const receiverCoordinator = new SyncSagaCoordinator();
71
+ // Setup Identities
72
+ const keystoneSvc = new KeystoneService_V1();
73
+ const r1_senderIdentity_v0_source = await keystoneSvc.genesis({
74
+ masterSecret: SENDER_SECRET,
75
+ configs: [SENDER_IDENTITY_SYNC_POOL_CONFIG],
76
+ metaspace,
77
+ space: sourceSpace,
78
+ });
79
+ // Register identity in both spaces
80
+ await metaspace.put({ ibGib: r1_senderIdentity_v0_source, space: destSpace });
81
+ await metaspace.registerNewIbGib({ ibGib: r1_senderIdentity_v0_source, space: destSpace });
82
+ let senderIdentityLatestSource = r1_senderIdentity_v0_source;
83
+ async function newTestPeer() {
84
+ const peer = new SyncPeerInnerspace_V1(clone(SYNC_PEER_INNERSPACE_DEFAULT_DATA_V1));
85
+ await peer.initialized;
86
+ await peer.initializeOpts({
87
+ localMetaspace: metaspace,
88
+ localSpace: sourceSpace,
89
+ receiverSpace: destSpace,
90
+ receiverCoordinator: receiverCoordinator,
91
+ receiverMetaspace: metaspace,
92
+ });
93
+ return peer;
94
+ }
95
+ // #endregion Init/Setup
96
+ // #region Round 1: Seed common history & initial text
97
+ const _r1 = testTransformer.newRound({
98
+ name: 'r1_seed_common_text',
99
+ description: 'Create timeline with initial text, sync to establish common history'
100
+ });
101
+ if (logalot) {
102
+ console.log(`${lc} R1: Creating initial alpha with text...`);
103
+ }
104
+ // Create alpha with initial text on source
105
+ const INITIAL_TEXT = "This is the initial quiz question.\nIt has multiple lines.\nStudents will answer this.";
106
+ const r1_alpha_v0_source = await testTransformer.create({
107
+ atom: 'alpha',
108
+ in: 'source',
109
+ data: { text: INITIAL_TEXT },
110
+ name: 'r1_alpha_v0_source'
111
+ });
112
+ const alpha_tjpAddr = getTjpAddr({ ibGib: r1_alpha_v0_source.ibGib, defaultIfNone: 'incomingAddr' });
113
+ if (logalot) {
114
+ console.log(`${lc} R1: Syncing initial alpha to dest...`);
115
+ }
116
+ let r1_syncSaga;
117
+ const peerR1 = await newTestPeer();
118
+ try {
119
+ r1_syncSaga = await senderCoordinator.sync({
120
+ peer: peerR1,
121
+ localSpace: sourceSpace,
122
+ metaspace,
123
+ domainIbGibs: [r1_alpha_v0_source.ibGib],
124
+ conflictStrategy: SyncConflictStrategy.optimisticWithLCS,
125
+ senderIdentity: senderIdentityLatestSource,
126
+ fnSenderSecret: async () => SENDER_SECRET,
127
+ });
128
+ await r1_syncSaga.done;
129
+ if (logalot) {
130
+ console.log(`${lc} R1 Sync Complete.`);
131
+ }
132
+ }
133
+ catch (e) {
134
+ console.error(`${lc} R1 Sync Failed:`, e);
135
+ iReckon(sir, false).asTo(`R1 Sync failed: ${e}`).isGonnaBeTruthy();
136
+ return;
137
+ }
138
+ // Verify both sides have same text
139
+ await respecfully(sir, `r1 verify post`, async () => {
140
+ try {
141
+ const r1_alpha_sourceKV = await senderCoordinator.getKnowledgeMap({
142
+ space: sourceSpace,
143
+ metaspace,
144
+ domainIbGibs: [r1_alpha_v0_source.ibGib]
145
+ });
146
+ const r1_alpha_source_tipAddr = r1_alpha_sourceKV[alpha_tjpAddr];
147
+ if (!r1_alpha_source_tipAddr) {
148
+ await ifWe(sir, 'r1_alpha_source_tipAddr is falsy?', async () => {
149
+ iReckon(sir, true).asTo('fail').isGonnaBe(false);
150
+ });
151
+ return;
152
+ }
153
+ const r1_alpha_destKV = await senderCoordinator.getKnowledgeMap({
154
+ space: destSpace,
155
+ metaspace,
156
+ domainIbGibs: [r1_alpha_v0_source.ibGib]
157
+ });
158
+ const r1_alpha_dest_tipAddr = r1_alpha_destKV[alpha_tjpAddr];
159
+ if (!r1_alpha_dest_tipAddr) {
160
+ await ifWe(sir, 'r1_alpha_dest_tipAddr is falsy?', async () => {
161
+ iReckon(sir, true).asTo('fail').isGonnaBe(false);
162
+ });
163
+ return;
164
+ }
165
+ await ifWe(sir, 'r1 tip addrs match', async () => {
166
+ iReckon(sir, r1_alpha_source_tipAddr).asTo('R1 source/dest have same tip').isGonnaBe(r1_alpha_dest_tipAddr);
167
+ });
168
+ await ifWe(sir, 'r1 text synced correctly', async () => {
169
+ const resGet_destTip = await getFromSpace({ space: destSpace, addr: r1_alpha_dest_tipAddr });
170
+ const destTipIbGib = resGet_destTip.ibGibs[0];
171
+ iReckon(sir, destTipIbGib.data.text).asTo('Dest has initial text').isGonnaBe(INITIAL_TEXT);
172
+ });
173
+ await ifWe(sir, 'sessionIdentity evolved for Round 1', async () => {
174
+ const latestS = peerR1.currentSessionIdentity;
175
+ iReckon(sir, latestS).asTo('session identity exists').isGonnaBeTruthy();
176
+ if (latestS) {
177
+ iReckon(sir, latestS.data?.n).asTo('session identity data.n').isGonnaBe(2);
178
+ }
179
+ });
180
+ }
181
+ catch (error) {
182
+ console.error(`${lc} ${extractErrorMsg(error)}`);
183
+ iReckon(sir, true).asTo('R1 verify errored').isGonnaBeFalse();
184
+ }
185
+ });
186
+ // #endregion Round 1: Seed common history & initial text
187
+ // Fetch evolved user identity from space
188
+ const latestSenderIdentityAddr = await metaspace.getLatestAddr({
189
+ addr: getIbGibAddr({ ibGib: r1_senderIdentity_v0_source }),
190
+ space: sourceSpace,
191
+ });
192
+ if (!latestSenderIdentityAddr) {
193
+ throw new Error("Could not find latest sender identity after R1");
194
+ }
195
+ const resGetSenderI = await getFromSpace({ space: sourceSpace, addr: latestSenderIdentityAddr });
196
+ senderIdentityLatestSource = resGetSenderI.ibGibs[0];
197
+ // Copy/register evolved user identity to dest space
198
+ await metaspace.put({ ibGib: senderIdentityLatestSource, space: destSpace });
199
+ await metaspace.registerNewIbGib({ ibGib: senderIdentityLatestSource, space: destSpace });
200
+ // #region Round 2: Simple append - different parts of text
201
+ const _r2 = testTransformer.newRound({
202
+ name: 'r2_simple_append',
203
+ description: 'Source appends to end, dest appends to beginning - should merge both'
204
+ });
205
+ // #region r2 source edits
206
+ if (logalot) {
207
+ console.log(`${lc} R2: Source appending to end of text...`);
208
+ }
209
+ const SOURCE_APPEND = "\nInstructor added hint.";
210
+ const r2_alpha_v1_source_appendedText = await testTransformer.mut8({
211
+ ibGib: r1_alpha_v0_source.ibGib,
212
+ in: 'source',
213
+ strField: { name: 'text', value: INITIAL_TEXT + SOURCE_APPEND },
214
+ name: 'r2_alpha_v1_source_appendedText',
215
+ });
216
+ // #endregion r2 source edits
217
+ // #region r2 dest edits
218
+ if (logalot) {
219
+ console.log(`${lc} R2: Dest prepending to beginning of text...`);
220
+ }
221
+ const resGet_r2_dest = await getFromSpace({ space: destSpace, addr: r1_alpha_v0_source.addr });
222
+ const r2_v0_alpha_dest = resGet_r2_dest.ibGibs[0];
223
+ const DEST_PREPEND = "Student note: Confusing!\n";
224
+ const r2_alpha_v1_dest_prependedText = await testTransformer.mut8({
225
+ ibGib: r2_v0_alpha_dest,
226
+ in: 'dest',
227
+ strField: { name: 'text', value: DEST_PREPEND + INITIAL_TEXT },
228
+ name: 'r2_alpha_v1_dest_prependedText',
229
+ });
230
+ // #endregion r2 dest edits
231
+ await respecfully(sir, `r2 verify pre`, async () => {
232
+ await ifWe(sir, 'texts as expected', async () => {
233
+ iReckon(sir, r2_alpha_v1_source_appendedText.ibGib.data?.text.includes(INITIAL_TEXT)).asTo('alpha source has initial text').isGonnaBeTrue();
234
+ iReckon(sir, r2_alpha_v1_source_appendedText.ibGib.data?.text.includes(SOURCE_APPEND)).asTo('alpha source has appended text').isGonnaBeTrue();
235
+ iReckon(sir, r2_alpha_v1_source_appendedText.ibGib.data?.text.includes(DEST_PREPEND)).asTo('alpha source does NOT have prepended text').isGonnaBeFalse();
236
+ iReckon(sir, r2_alpha_v1_dest_prependedText.ibGib.data?.text.includes(INITIAL_TEXT)).asTo('alpha dest has initial text').isGonnaBeTrue();
237
+ iReckon(sir, r2_alpha_v1_dest_prependedText.ibGib.data?.text.includes(SOURCE_APPEND)).asTo('alpha dest does NOT have appended text').isGonnaBeFalse();
238
+ iReckon(sir, r2_alpha_v1_dest_prependedText.ibGib.data?.text.includes(DEST_PREPEND)).asTo('alpha dest has prepended text').isGonnaBeTrue();
239
+ });
240
+ });
241
+ if (logalot) {
242
+ console.log(`${lc} Running r2 Sync (simple data.text conflict)...`);
243
+ }
244
+ let r2_syncSaga;
245
+ const peerR2 = await newTestPeer();
246
+ try {
247
+ r2_syncSaga = await senderCoordinator.sync({
248
+ peer: peerR2,
249
+ localSpace: sourceSpace,
250
+ metaspace,
251
+ domainIbGibs: [r2_alpha_v1_source_appendedText.ibGib],
252
+ conflictStrategy: SyncConflictStrategy.optimisticWithLCS,
253
+ senderIdentity: senderIdentityLatestSource,
254
+ fnSenderSecret: async () => SENDER_SECRET,
255
+ });
256
+ await r2_syncSaga.done;
257
+ }
258
+ catch (e) {
259
+ console.error(`${lc} R2 Sync Failed:`, e);
260
+ iReckon(sir, false).asTo(`R2 failed: ${e}`).isGonnaBeTruthy();
261
+ return;
262
+ }
263
+ await respecfully(sir, `r2 verify post`, async () => {
264
+ const kv_source = await senderCoordinator.getKnowledgeMap({ space: sourceSpace, metaspace, domainIbGibs: [r1_alpha_v0_source.ibGib] });
265
+ const kv_dest = await senderCoordinator.getKnowledgeMap({ space: destSpace, metaspace, domainIbGibs: [r1_alpha_v0_source.ibGib] });
266
+ const r2_alpha_source_tipAddr = kv_source[alpha_tjpAddr];
267
+ if (!r2_alpha_source_tipAddr) {
268
+ await ifWe(sir, 'r2_alpha_source_tipAddr falsy?', async () => {
269
+ iReckon(sir, true).asTo('fails').isGonnaBe(false);
270
+ });
271
+ return;
272
+ }
273
+ const r2_alpha_dest_tipAddr = kv_dest[alpha_tjpAddr];
274
+ if (!r2_alpha_dest_tipAddr) {
275
+ await ifWe(sir, 'r2_alpha_dest_tipAddr falsy?', async () => {
276
+ iReckon(sir, true).asTo('fails').isGonnaBe(false);
277
+ });
278
+ return;
279
+ }
280
+ const [r2_alpha_source_tip] = await getIbGibsFromCache_fallbackToSpaces({
281
+ addrs: [r2_alpha_source_tipAddr],
282
+ space: sourceSpace,
283
+ });
284
+ const [r2_alpha_dest_tip] = await getIbGibsFromCache_fallbackToSpaces({
285
+ addrs: [r2_alpha_dest_tipAddr],
286
+ space: sourceSpace,
287
+ });
288
+ await ifWe(sir, 'r2 tip addrs match', async () => {
289
+ iReckon(sir, r2_alpha_source_tipAddr).asTo('alpha').isGonnaBe(r2_alpha_dest_tipAddr);
290
+ });
291
+ await ifWe(sir, 'r2 text merged correctly', async () => {
292
+ iReckon(sir, r2_alpha_source_tip.data?.text).asTo('source/dest same text').isGonnaBe(r2_alpha_dest_tip.data?.text);
293
+ const text = r2_alpha_source_tip.data?.text;
294
+ iReckon(sir, text).asTo('R2 has both prepend and append').isGonnaBe(DEST_PREPEND + INITIAL_TEXT + SOURCE_APPEND);
295
+ });
296
+ await ifWe(sir, 'sessionIdentity evolved for Round 2', async () => {
297
+ const latestS = peerR2.currentSessionIdentity;
298
+ iReckon(sir, latestS).asTo('session identity exists').isGonnaBeTruthy();
299
+ if (latestS) {
300
+ // Conflict graft sync triggers extra turn (n=3)
301
+ iReckon(sir, latestS.data?.n).asTo('session identity data.n').isGonnaBe(3);
302
+ }
303
+ });
304
+ });
305
+ // #endregion Round 2: Simple append - different parts of text
306
+ });
307
+ //# sourceMappingURL=sync-conflict-text-merge.withid.respec.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-conflict-text-merge.withid.respec.mjs","sourceRoot":"","sources":["../../src/sync/sync-conflict-text-merge.withid.respec.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @module sync-innerspace-constants.withid.respec
3
+ *
4
+ * Verifies syncing "Constants" (ibGibs without timelines/TJPs) with Identity.
5
+ * Also verifies Smart Diff behavior (Constants shouldn't be re-sent).
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=sync-innerspace-constants.withid.respec.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-innerspace-constants.withid.respec.d.mts","sourceRoot":"","sources":["../../src/sync/sync-innerspace-constants.withid.respec.mts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,233 @@
1
+ /**
2
+ * @module sync-innerspace-constants.withid.respec
3
+ *
4
+ * Verifies syncing "Constants" (ibGibs without timelines/TJPs) with Identity.
5
+ * Also verifies Smart Diff behavior (Constants shouldn't be re-sent).
6
+ */
7
+ import { respecfully, iReckon, ifWe } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
8
+ const maam = `[${import.meta.url}]`, sir = maam;
9
+ import { clone, delay } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
10
+ import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
11
+ import { Factory_V1 } from '@ibgib/ts-gib/dist/V1/index.mjs';
12
+ import { GLOBAL_LOG_A_LOT } from '../core-constants.mjs';
13
+ import { SyncSagaCoordinator } from './sync-saga-coordinator.mjs';
14
+ import { putInSpace, getFromSpace } from '../witness/space/space-helper.mjs';
15
+ import { Metaspace_Innerspace } from '../witness/space/metaspace/metaspace-innerspace/metaspace-innerspace.mjs';
16
+ import { InnerSpace_V1 } from '../witness/space/inner-space/inner-space-v1.mjs';
17
+ import { DEFAULT_INNER_SPACE_DATA_V1 } from '../witness/space/inner-space/inner-space-types.mjs';
18
+ import { SyncPeerInnerspace_V1 } from './sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.mjs';
19
+ import { SYNC_PEER_INNERSPACE_DEFAULT_DATA_V1 } from './sync-peer/sync-peer-innerspace/sync-peer-innerspace-constants.mjs';
20
+ import { getDependencyGraph } from '../common/other/graph-helper.mjs';
21
+ import { KeystoneService_V1 } from '../keystone/keystone-service-v1.mjs';
22
+ import { KEYSTONE_VERB_SYNC, POOL_ID_SYNC, } from '../keystone/keystone-constants.mjs';
23
+ import { createStandardPoolConfig } from '../keystone/keystone-config-builder.mjs';
24
+ import { KeystoneReplenishStrategy } from '../keystone/keystone-types.mjs';
25
+ const logalot = GLOBAL_LOG_A_LOT;
26
+ const lc = `[sync-innerspace-constants.withid.respec]`;
27
+ const SENDER_SECRET = 'test-sender-secret-constants-withid';
28
+ const SENDER_IDENTITY_SYNC_POOL_CONFIG = createStandardPoolConfig({
29
+ id: POOL_ID_SYNC,
30
+ salt: 'senderidentitysyncsaltconstantswithid',
31
+ verbs: [KEYSTONE_VERB_SYNC],
32
+ size: 200,
33
+ sequential: 1,
34
+ random: 1,
35
+ targetBinding: 2,
36
+ replenishStrategy: KeystoneReplenishStrategy.topUp,
37
+ });
38
+ await respecfully(sir, `Sync Constants (No TJP) with Identity`, async () => {
39
+ let metaspace;
40
+ let sourceSpace;
41
+ let destSpace;
42
+ // #region Round 1 - Sync Constants
43
+ await respecfully(sir, `Syncing Constants (No TJP) (Source -> Dest)`, async () => {
44
+ // 1. Setup Spaces
45
+ metaspace = new Metaspace_Innerspace(undefined);
46
+ await metaspace.initialize({
47
+ getFnAlert: () => async ({ title, msg }) => { },
48
+ getFnPrompt: () => async ({ title, msg }) => { return ''; },
49
+ getFnPromptPassword: () => async (title, msg) => { return null; },
50
+ });
51
+ while (!metaspace.initialized) {
52
+ await delay(10);
53
+ }
54
+ sourceSpace = new InnerSpace_V1({
55
+ ...DEFAULT_INNER_SPACE_DATA_V1,
56
+ name: 'source',
57
+ uuid: 'source_uuid',
58
+ description: 'source test space',
59
+ });
60
+ await sourceSpace.initialized;
61
+ destSpace = new InnerSpace_V1({
62
+ ...DEFAULT_INNER_SPACE_DATA_V1,
63
+ name: 'dest',
64
+ uuid: 'dest_uuid',
65
+ description: 'dest test space',
66
+ });
67
+ await destSpace.initialized;
68
+ const keystoneSvc = new KeystoneService_V1();
69
+ const r1_senderIdentity_v0_source = await keystoneSvc.genesis({
70
+ masterSecret: SENDER_SECRET,
71
+ configs: [SENDER_IDENTITY_SYNC_POOL_CONFIG],
72
+ metaspace,
73
+ space: sourceSpace,
74
+ });
75
+ // post the senderIdentity to receiver
76
+ await metaspace.put({ ibGib: r1_senderIdentity_v0_source, space: destSpace });
77
+ await metaspace.registerNewIbGib({ ibGib: r1_senderIdentity_v0_source, space: destSpace });
78
+ // #region r1 setup
79
+ // 2. Create Constant (C1) in Source
80
+ const r1_c1_v0_source = await Factory_V1.constant({
81
+ parentPrimitiveIb: 'root',
82
+ ib: 'constant_c1',
83
+ data: { some: 'data' },
84
+ });
85
+ const r1_c1_v0_source_addr = getIbGibAddr({ ibGib: r1_c1_v0_source });
86
+ await putInSpace({ space: sourceSpace, ibGibs: [r1_c1_v0_source] });
87
+ // #endregion r1 setup
88
+ // #region r1 verify pre
89
+ await respecfully(sir, `r1 verify pre`, async () => {
90
+ await ifWe(sir, `C1 is not initially in Dest`, async () => {
91
+ const checkDest1 = await getFromSpace({ space: destSpace, addr: r1_c1_v0_source_addr });
92
+ iReckon(sir, checkDest1.success).asTo('Dest initially does not have C1').isGonnaBeFalse();
93
+ });
94
+ });
95
+ // #endregion r1 verify pre
96
+ // 3. Setup Coordinator and Peer
97
+ const senderCoordinator = new SyncSagaCoordinator();
98
+ const receiverCoordinator = new SyncSagaCoordinator();
99
+ const peer = new SyncPeerInnerspace_V1(clone(SYNC_PEER_INNERSPACE_DEFAULT_DATA_V1));
100
+ await peer.initialized;
101
+ await peer.initializeOpts({
102
+ sagaId: '',
103
+ localMetaspace: metaspace,
104
+ localSpace: sourceSpace, // "Client"
105
+ receiverSpace: destSpace, // "Server"
106
+ receiverCoordinator,
107
+ receiverMetaspace: metaspace,
108
+ });
109
+ // #region r1 syncs
110
+ // 4. Sync C1 (First Pass)
111
+ let resSync = await senderCoordinator.sync({
112
+ peer,
113
+ localSpace: sourceSpace,
114
+ metaspace: metaspace,
115
+ domainIbGibs: [r1_c1_v0_source],
116
+ senderIdentity: r1_senderIdentity_v0_source,
117
+ fnSenderSecret: async () => SENDER_SECRET,
118
+ });
119
+ await resSync.done;
120
+ // Get the latest sender identity frame after Sync 1
121
+ const latestSenderAddr1 = await metaspace.getLatestAddr({
122
+ addr: getIbGibAddr({ ibGib: r1_senderIdentity_v0_source }),
123
+ space: sourceSpace,
124
+ });
125
+ const resGetLatestI1 = await getFromSpace({ space: sourceSpace, addr: latestSenderAddr1 });
126
+ const r1_senderIdentity_v1_source_postSync1 = resGetLatestI1.ibGibs[0];
127
+ // 5. Sync C1 (Second Pass - Idempotency / Smart Diff)
128
+ resSync = await senderCoordinator.sync({
129
+ peer: peer,
130
+ localSpace: sourceSpace,
131
+ metaspace: metaspace,
132
+ domainIbGibs: [r1_c1_v0_source],
133
+ senderIdentity: r1_senderIdentity_v1_source_postSync1,
134
+ fnSenderSecret: async () => SENDER_SECRET,
135
+ });
136
+ await resSync.done;
137
+ // Get the latest sender identity frame after Sync 2
138
+ const latestSenderAddr2 = await metaspace.getLatestAddr({
139
+ addr: getIbGibAddr({ ibGib: r1_senderIdentity_v0_source }),
140
+ space: sourceSpace,
141
+ });
142
+ const resGetLatestI2 = await getFromSpace({ space: sourceSpace, addr: latestSenderAddr2 });
143
+ const r1_senderIdentity_v2_source_postSync2 = resGetLatestI2.ibGibs[0];
144
+ // 6. Create "Constant with Dependency" (C2 -> C1)
145
+ const r1_c2_v0_source_rel8C1 = await Factory_V1.constant({
146
+ ib: 'constant_c2',
147
+ parentPrimitiveIb: 'root',
148
+ rel8ns: {
149
+ link: [r1_c1_v0_source_addr],
150
+ },
151
+ });
152
+ const r1_c2_v0_source_addr = getIbGibAddr({ ibGib: r1_c2_v0_source_rel8C1 });
153
+ await putInSpace({ space: sourceSpace, ibGibs: [r1_c2_v0_source_rel8C1] });
154
+ // Sync C2
155
+ resSync = await senderCoordinator.sync({
156
+ peer: peer,
157
+ localSpace: sourceSpace,
158
+ metaspace: metaspace,
159
+ domainIbGibs: [r1_c2_v0_source_rel8C1],
160
+ senderIdentity: r1_senderIdentity_v2_source_postSync2,
161
+ fnSenderSecret: async () => SENDER_SECRET,
162
+ });
163
+ await resSync.done;
164
+ // #endregion r1 syncs
165
+ // #region r1 verify post
166
+ await respecfully(sir, `r1 verify post`, async () => {
167
+ await ifWe(sir, `Dest has C1 and C2 after sync`, async () => {
168
+ const getC1Dest = await getFromSpace({ space: destSpace, addr: r1_c1_v0_source_addr });
169
+ const getC2Dest = await getFromSpace({ space: destSpace, addr: r1_c2_v0_source_addr });
170
+ iReckon(sir, getC1Dest.success && !!getC1Dest.ibGibs[0]).asTo('Dest has C1').isGonnaBeTrue();
171
+ iReckon(sir, getC2Dest.success && !!getC2Dest.ibGibs[0]).asTo('Dest has C2').isGonnaBeTrue();
172
+ });
173
+ await ifWe(sir, 'sessionIdentity evolved the expected number of times', async () => {
174
+ const latestS = peer.currentSessionIdentity;
175
+ iReckon(sir, latestS).asTo('latest session identity exists on peer').isGonnaBeTruthy();
176
+ if (latestS) {
177
+ iReckon(sir, latestS.data?.n).asTo('session identity data.n').isGonnaBe(2);
178
+ }
179
+ });
180
+ await ifWe(sir, 'sender durable space has I (evolved frame)', async () => {
181
+ const latestSenderIdentityAddr = await metaspace.getLatestAddr({
182
+ addr: getIbGibAddr({ ibGib: r1_senderIdentity_v0_source }),
183
+ space: sourceSpace,
184
+ });
185
+ iReckon(sir, latestSenderIdentityAddr).asTo('latestSenderIdentityAddr exists').isGonnaBeTruthy();
186
+ if (latestSenderIdentityAddr) {
187
+ const resGetSourceI = await getFromSpace({ space: sourceSpace, addr: latestSenderIdentityAddr });
188
+ iReckon(sir, resGetSourceI.success && resGetSourceI.ibGibs?.length === 1).asTo('evolved I exists in sourceSpace').isGonnaBeTrue();
189
+ if (resGetSourceI.success && resGetSourceI.ibGibs?.[0]) {
190
+ const evolvedI = resGetSourceI.ibGibs[0];
191
+ iReckon(sir, evolvedI.data?.n).asTo('evolved I data.n').isGonnaBe(3);
192
+ }
193
+ }
194
+ });
195
+ await ifWe(sir, 'receiver durable space has I (evolved frame)', async () => {
196
+ const latestSenderIdentityAddr = await metaspace.getLatestAddr({
197
+ addr: getIbGibAddr({ ibGib: r1_senderIdentity_v0_source }),
198
+ space: sourceSpace,
199
+ });
200
+ iReckon(sir, latestSenderIdentityAddr).asTo('latestSenderIdentityAddr exists').isGonnaBeTruthy();
201
+ if (latestSenderIdentityAddr) {
202
+ const resGetDestI = await getFromSpace({ space: destSpace, addr: latestSenderIdentityAddr });
203
+ iReckon(sir, resGetDestI.success && resGetDestI.ibGibs?.length === 1).asTo('evolved I exists in destSpace').isGonnaBeTrue();
204
+ if (resGetDestI.success && resGetDestI.ibGibs?.[0]) {
205
+ const evolvedI = resGetDestI.ibGibs[0];
206
+ iReckon(sir, evolvedI.data?.n).asTo('evolved I data.n').isGonnaBe(3);
207
+ }
208
+ }
209
+ });
210
+ await ifWe(sir, 'sender durable space has full S dep graph', async () => {
211
+ const latestS = peer.currentSessionIdentity;
212
+ iReckon(sir, latestS).asTo('latestS exists').isGonnaBeTruthy();
213
+ if (latestS) {
214
+ const depGraphS = await getDependencyGraph({ ibGib: latestS, space: sourceSpace });
215
+ const addrs = Object.keys(depGraphS);
216
+ iReckon(sir, addrs.length > 2).asTo('number of nodes in S graph > 2').isGonnaBeTrue();
217
+ }
218
+ });
219
+ await ifWe(sir, 'receiver durable space has full S dep graph', async () => {
220
+ const latestS = peer.currentSessionIdentity;
221
+ iReckon(sir, latestS).asTo('latestS exists').isGonnaBeTruthy();
222
+ if (latestS) {
223
+ const depGraphS = await getDependencyGraph({ ibGib: latestS, space: destSpace });
224
+ const addrs = Object.keys(depGraphS);
225
+ iReckon(sir, addrs.length > 2).asTo('number of nodes in S graph in destSpace > 2').isGonnaBeTrue();
226
+ }
227
+ });
228
+ });
229
+ // #endregion r1 verify post
230
+ });
231
+ // #endregion Round 1 - Sync Constants
232
+ });
233
+ //# sourceMappingURL=sync-innerspace-constants.withid.respec.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-innerspace-constants.withid.respec.mjs","sourceRoot":"","sources":["../../src/sync/sync-innerspace-constants.withid.respec.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @module sync-innerspace-deep-updates.withid.respec
3
+ *
4
+ * Verifies syncing timelines with deep mutation histories (multiple updates) with Identity.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=sync-innerspace-deep-updates.withid.respec.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-innerspace-deep-updates.withid.respec.d.mts","sourceRoot":"","sources":["../../src/sync/sync-innerspace-deep-updates.withid.respec.mts"],"names":[],"mappings":"AAAA;;;;GAIG"}