Wiki source code of Federation & Decentralization

Version 7.3 by Robert Schaub on 2025/12/16 20:27

Show last authors
1 = Federation & Decentralization =
2
3 FactHarbor is designed to operate as a **federated network of nodes** rather than a single central server.
4
5 Decentralization provides:
6 * **Resilience** against censorship or political pressure
7 * **Autonomy** for local governance and moderation
8 * **Scalability** across many independent communities
9 * **Trust** without centralized control
10 * **Domain specialization** (health-focused nodes, energy-focused nodes, etc.)
11
12 FactHarbor draws inspiration from the Fediverse but uses stronger structure, versioning, and integrity guarantees.
13
14 ----
15
16 == Federated FactHarbor Nodes ==
17
18 Each FactHarbor instance ("node") maintains:
19 * Its own database
20 * Its own AKEL instance
21 * Its own reviewers, experts, and contributors
22 * Its own governance rules
23
24 Nodes exchange structured information:
25 * Claims
26 * Scenarios
27 * Evidence metadata (not necessarily full files)
28 * Verdicts (optional)
29 * Hashes and signatures for integrity
30
31 Nodes choose which external nodes they trust.
32
33 ----
34
35 == Global Identifiers ==
36
37 Every entity receives a globally unique, linkable identifier.
38
39 **Format**:
40 `factharbor://node_url/type/local_id`
41
42 **Example**:
43 `factharbor://factharbor.energy/claim/CLM-55812`
44
45 **Supported types**:
46 * `claim`
47 * `scenario`
48 * `evidence`
49 * `verdict`
50 * `user` (optional)
51 * `cluster`
52
53 **Properties**:
54 * Globally consistent
55 * Human-readable
56 * Hash-derived
57 * Independent of database internals
58 * URL-resolvable (future enhancement)
59
60 This allows cross-node references and prevents identifier collisions in federated environments.
61
62 ----
63
64 == Trust Model ==
65
66 Each node maintains a **trust table** defining relationships with other nodes:
67
68 === Trust Levels ===
69
70 **Trusted Nodes**:
71 * Claims auto-imported
72 * Scenarios accepted without re-review
73 * Evidence considered valid
74 * Verdicts displayed to users
75 * High synchronization priority
76
77 **Neutral Nodes**:
78 * Claims imported but flagged for review
79 * Scenarios require local validation
80 * Evidence requires re-assessment
81 * Verdicts shown with "external node" disclaimer
82 * Normal synchronization priority
83
84 **Untrusted Nodes**:
85 * Claims quarantined, manual import only
86 * Scenarios rejected by default
87 * Evidence not accepted
88 * Verdicts not displayed
89 * No automatic synchronization
90
91 === Trust Affects ===
92
93 * **Auto-import**: Whether claims/scenarios are automatically added
94 * **Re-review requirements**: Whether local reviewers must validate
95 * **Verdict display**: Whether external verdicts are shown to users
96 * **Synchronization frequency**: How often data is exchanged
97 * **Reputation signals**: How external reputation is interpreted
98
99 === Local Trust Authority ===
100
101 Each node's governance team decides:
102 * Which nodes to trust
103 * Trust level criteria
104 * Trust escalation/degradation rules
105 * Dispute resolution with partner nodes
106
107 Trust is **local and autonomous** - no global trust registry exists.
108
109 ----
110
111 == Data Sharing Model ==
112
113 === What Nodes Share ===
114
115 **Always shared** (if federation enabled):
116 * Claims and claim clusters
117 * Scenario structures
118 * Evidence metadata and content hashes
119 * Integrity signatures
120
121 **Optionally shared**:
122 * Full evidence files (large documents)
123 * Verdicts (nodes may choose to keep verdicts local)
124 * Vector embeddings
125 * Scenario templates
126 * AKEL distilled knowledge
127
128 **Never shared**:
129 * Internal user lists
130 * Reviewer comments and internal discussions
131 * Governance decisions and meeting notes
132 * Access control data
133 * Private or sensitive content marked as local-only
134
135 === Large Evidence Files ===
136
137 Evidence files are:
138 * Stored locally by default
139 * Referenced via global content hash
140 * Optionally served through IPFS
141 * Accessible via direct peer-to-peer transfer
142 * Can be stored in S3-compatible object storage
143
144 ----
145
146 == Synchronization Protocol ==
147
148 Nodes exchange data using multiple synchronization methods:
149
150 === Push-Based Synchronization ===
151
152 **Mechanism**: Webhooks
153
154 When local content changes:
155 1. Node builds signed bundle
156 2. Sends webhook notification to subscribed nodes
157 3. Remote nodes fetch bundle
158 4. Remote nodes validate and import
159
160 **Use case**: Real-time updates for trusted partners
161
162 === Pull-Based Synchronization ===
163
164 **Mechanism**: Scheduled polling
165
166 Nodes periodically:
167 1. Query partner nodes for updates
168 2. Fetch changed entities since last sync
169 3. Validate and import
170 4. Store sync checkpoint
171
172 **Use case**: Regular batch updates, lower trust nodes
173
174 === Subscription-Based Synchronization ===
175
176 **Mechanism**: WebSub-like protocol
177
178 Nodes subscribe to:
179 * Specific claim clusters
180 * Specific domains (medical, energy, etc.)
181 * Specific scenario types
182 * Verdict updates
183
184 Publisher pushes updates only to subscribers.
185
186 **Use case**: Selective federation, domain specialization
187
188 === Large Asset Transfer ===
189
190 For files >10MB:
191 * S3-compatible object storage
192 * IPFS (content-addressed)
193 * Direct peer-to-peer transfer
194 * Chunked HTTP transfer with resume support
195
196 ----
197
198 == Federation Sync Workflow ==
199
200 Complete synchronization sequence for creating and sharing new content:
201
202 === Step 1: Local Node Creates New Versions ===
203
204 User or AKEL creates:
205 * New claim version
206 * New scenario version
207 * New evidence version
208 * New verdict version
209
210 All changes tracked with:
211 * VersionID
212 * ParentVersionID
213 * AuthorType
214 * Timestamp
215 * JustificationText
216
217 === Step 2: Federation Layer Builds Signed Bundle ===
218
219 Federation layer packages:
220 * Entity data (claim, scenario, evidence metadata, verdict)
221 * Version lineage (ParentVersionID chain)
222 * Cryptographic signatures
223 * Node provenance information
224 * Trust metadata
225
226 Bundle format:
227 * JSON-LD for structured data
228 * Content-addressed hashes
229 * Digital signatures for integrity
230
231 === Step 3: Bundle Includes Required Data ===
232
233 Each bundle contains:
234 * **Claims**: Full claim text, classification, domain
235 * **Scenarios**: Definitions, assumptions, boundaries
236 * **Evidence metadata**: Source URLs, hashes, reliability scores (not always full files)
237 * **Verdicts**: Likelihood ranges, uncertainty, reasoning chains
238 * **Lineage**: Version history, parent relationships
239 * **Signatures**: Cryptographic proof of origin
240
241 === Step 4: Bundle Pushed to Trusted Neighbor Nodes ===
242
243 Based on trust table:
244 * Push to **trusted nodes** immediately
245 * Queue for **neutral nodes** (batched)
246 * Skip **untrusted nodes**
247
248 Push methods:
249 * Webhook notification
250 * Direct API call
251 * Pub/Sub message queue
252
253 === Step 5: Remote Nodes Validate Lineage and Signatures ===
254
255 Receiving node:
256 1. Verifies cryptographic signatures
257 2. Validates version lineage (ParentVersionID chain)
258 3. Checks for conflicts with local data
259 4. Validates data structure and required fields
260 5. Applies local trust policies
261
262 Validation failures → reject or quarantine bundle
263
264 === Step 6: Accept or Branch Versions ===
265
266 **Accept** (if validation passes):
267 * Import new versions
268 * Maintain provenance metadata
269 * Link to local related entities
270 * Update local indices
271
272 **Branch** (if conflict detected):
273 * Create parallel version tree
274 * Mark as "external branch"
275 * Allow local reviewers to merge or reject
276 * Preserve both version histories
277
278 **Reject** (if validation fails):
279 * Log rejection reason
280 * Notify source node (optional)
281 * Quarantine for manual review (optional)
282
283 === Step 7: Local Re-evaluation Runs if Required ===
284
285 After import, local node checks:
286 * Does new evidence affect existing verdicts?
287 * Do new scenarios require re-assessment?
288 * Are there contradictions with local content?
289
290 If yes:
291 * Trigger AKEL re-evaluation
292 * Queue for reviewer attention
293 * Update affected verdicts
294 * Notify users following related content
295
296 ----
297
298 == Cross-Node AI Knowledge Exchange ==
299
300 Each node runs its own AKEL instance and may exchange AI-derived knowledge:
301
302 === What Can Be Shared ===
303
304 **Vector embeddings**:
305 * For cross-node claim clustering
306 * For semantic search alignment
307 * Never includes training data
308
309 **Canonical claim forms**:
310 * Normalized claim text
311 * Standard phrasing templates
312 * Domain-specific formulations
313
314 **Scenario templates**:
315 * Reusable scenario structures
316 * Common assumption patterns
317 * Evaluation method templates
318
319 **Contradiction alerts**:
320 * Detected conflicts between claims
321 * Evidence conflicts across nodes
322 * Scenario incompatibilities
323
324 **Metadata and insights**:
325 * Aggregate quality metrics
326 * Reliability signal extraction
327 * Bubble detection patterns
328
329 === What Can NEVER Be Shared ===
330
331 **Model weights**: No sharing of trained model parameters
332
333 **Training data**: No sharing of full training datasets
334
335 **Local governance overrides**: AKEL suggestions can be overridden locally
336
337 **User behavior data**: No cross-node tracking
338
339 **Internal review discussions**: Private content stays private
340
341 === Benefits of AI Knowledge Exchange ===
342
343 * Reduced duplication across nodes
344 * Improved claim clustering accuracy
345 * Faster contradiction detection
346 * Shared scenario libraries
347 * Cross-node quality improvements
348
349 === Local Control Maintained ===
350
351 * Nodes accept or reject shared AI knowledge
352 * Human reviewers can override any AKEL suggestion
353 * Local governance always has final authority
354 * No external AI control over local content
355 * Privacy-preserving knowledge exchange
356
357 ----
358
359 == Decentralized Processing ==
360
361 Each node independently performs:
362 * AKEL processing
363 * Scenario drafting and validation
364 * Evidence review
365 * Verdict calculation
366 * Truth landscape summarization
367
368 Nodes can specialize:
369 * Health-focused node with medical experts
370 * Energy-focused node with domain knowledge
371 * Small node delegating scenario libraries to partners
372 * Regional node with language/culture specialization
373
374 Optional data sharing includes:
375 * Embeddings for clustering
376 * Claim clusters for alignment
377 * Scenario templates for efficiency
378 * Verdict comparison metadata
379
380 ----
381
382 == Scaling to Thousands of Users ==
383
384 Nodes scale independently through:
385 * Horizontally scalable API servers
386 * Worker pools for AKEL tasks
387 * Hybrid storage (local + S3/IPFS)
388 * Redis caching for performance
389 * Sharded or partitioned databases
390
391 Federation allows effectively unlimited horizontal scaling by adding new nodes.
392
393 Communities may form:
394 * Domain-specific nodes (epidemiology, energy, climate)
395 * Language or region-based nodes
396 * NGO or institutional nodes
397 * Private organizational nodes
398 * Academic research nodes
399
400 Nodes cooperate through:
401 * Scenario library sharing
402 * Shared or overlapping claim clusters
403 * Expert delegation between nodes
404 * Distributed AKEL task support
405 * Cross-node quality audits
406
407 ----
408
409 == Federation and Release 1.0 ==
410
411 **POC**: Single node, optional federation experiments
412
413 **Beta 0**: 2-3 nodes, basic federation protocol
414
415 **Release 1.0**: Full federation support with:
416 * Robust synchronization protocol
417 * Trust model implementation
418 * Cross-node AI knowledge exchange
419 * Federated search and discovery
420 * Distributed audit collaboration
421 * Inter-node expert consultation
422
423 ----
424
425 == Related Pages ==
426
427 * [[AKEL (AI Knowledge Extraction Layer)>>FactHarbor.Specification.AI Knowledge Extraction Layer (AKEL).WebHome]]
428 * [[Data Model>>FactHarbor.Specification.Data Model.WebHome]]
429 * [[Architecture>>FactHarbor.Specification.Architecture.WebHome]]
430 * [[Workflows>>FactHarbor.Specification.Workflows.WebHome]]