Phase 8 (BEYOND-SOTA MOAT):
domain/federation-protocol.ts — 4 wire message types over ADR-104:
pr_artifact_request — peer asks for a PR over (graphId, queryNode)
with lastKnownGraphHash + lastKnownResultHash
for stale-detection
pr_artifact_response — peer ships a Phase 7 signed envelope back
pr_artifact_delta — sparse delta over a known base resultHash
pr_artifact_stale — graph changed; consumer must recompute
All Zod-validated, discriminated-union routable.
application/federation-server.ts — receives requests, rate-limits per
peer (default 60/min), computes via Phase 2-6 adapters + runPageRank,
seals via Phase 7 sealArtifact. Returns stale rejects when graphHash
mismatches or graphId unknown.
application/federation-client.ts — sends requests via FederationTransport;
verifies inbound envelopes against trusted-public-keys list; falls back
to local compute (origin: 'peer' / 'stale-fallback' /
'untrusted-fallback' / 'local-fallback') with reason.
inProcessTransport() helper stitches a client to a server for in-process
testing without spinning up real ADR-104 wiring.
104/104 tests passing (+6 for Phase 8):
- phase8-federation.test.ts: 6 (verifiable peer artifact, untrusted-key
fallback, stale graphHash, unknown graphId, rate limit per peer,
unreachable-peer local fallback)
All 8 phases of ADR-123 are now feature-complete. Plugin builds clean,
ships at 0.1.0-alpha.1 with 104 passing tests across the eleven wedges
(W1-W11) + Wedge 12 streaming + the beyond-SOTA Phase 7+8 federation
artifact pipeline.
Next: publish ruflo-graph-intelligence to npm, open + merge PR, create
announcement gist with intro/features/usages (practical to exotic).
Co-Authored-By: RuFlo <ruv@ruv.net>
Phase 6.5 — Wedge 12: StreamingBridge
application/streaming-bridge.ts — couples a registered SublinearAdapter
with solve_on_change so event-driven graphs pay only O(nnz(delta) · log N)
per event. Maintains prev_solution in memory; pushDelta applies the
delta or falls back to full re-solve when the delta ratio exceeds the
threshold (default 0.05) or refresh-cap (default 50) hits. Cold-start
produces a full-solve baseline. Reset clears cached state.
Phase 7 — Witness-signed PR artifacts (BEYOND-SOTA WEDGE)
domain/signed-artifact.ts — SignedPageRankPayload + Envelope schema.
Embeds complexity_class + coherence_score + resultHash echoes so
verification covers provenance + budget compliance + input stability.
Solver version pinned to sublinear-time-solver@1.7.0.
infrastructure/witness-signer.ts — Ed25519 sign/verify via node:crypto
(no new deps). canonicalJSON skips undefined keys for round-trip
determinism. Trust-list filtering. Three integrity checks before
signature verify: resultHash echo, coherenceScore echo,
complexityClass echo — all three must match the embedded PageRankResult
or the artifact is rejected as tampered.
98/98 tests passing (+18 since Phase 6):
- phase6_5-streaming.test.ts: 6 (cold-start, sparse delta, full-resolve
fallback, refresh-cap, getCurrentSolution, reset)
- phase7-signed-artifact.test.ts: 12 (canonicalJSON determinism +
undefined-key skip, round-trip, 4 tamper-detection scenarios, trust
list accept/reject, byte-deterministic signing, signature changes
with content)
No competing memory framework (LangGraph, AutoGen, Letta, MemGPT, Mem0,
HippoRAG) ships signed graph-reasoning artifacts. The combination of
ADR-103 witness chain + ADR-104 federation transport + sublinear's
deterministic forward-push composes into a primitive structurally
unavailable to systems without these three substrate primitives.
Co-Authored-By: RuFlo <ruv@ruv.net>