tane/spike/block2_spike
vjrj cc88f3d688 spike(block2): de-risk web of trust — the last big unknown
Adds TrustTransport as the third interface on the shared NostrConnection,
completing the social-layer happy path in the spike:

- WebOfTrust: pure, Flutter-free Duniter membership rule (N certs from members +
  within distance D of bootstrap referents), iterated to a fixpoint. The
  commons_core-worthy piece; TDD'd (threshold, distance cutoff, transitive
  growth, expired/revoked/self exclusion).
- NostrTrustTransport: certifications as a custom addressable kind (30777,
  keyed by issuer+subject) — certify renews, revoke replaces, certs expire.
- Trust filters spam (network-trust §2): seeds certify Alice; Eve stays
  uncertified; Bob discovers both offers and annotates authors — Alice known,
  Eve unknown — all over ONE shared connection.

Findings updated: WoT risk High -> Medium (policy/bootstrap, not feasibility);
overall scope Medium-High -> Medium — all three transport contracts now proven.
30 tests green, analyzer clean, Block 1 untouched.
2026-07-10 02:17:35 +02:00
..
lib spike(block2): de-risk web of trust — the last big unknown 2026-07-10 02:17:35 +02:00
test spike(block2): de-risk web of trust — the last big unknown 2026-07-10 02:17:35 +02:00
.gitignore spike(block2): de-risk social layer — key derivation, OfferTransport, NIP-99 round-trip 2026-07-10 01:57:25 +02:00
pubspec.yaml spike(block2): de-risk NIP-17 messaging + validate shared-connection shape 2026-07-10 02:11:54 +02:00