You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ADR: ADR-026. Phase 4 of 6. Hard prerequisite: #72 (unpredictable epoch token). Depends on: Phase 3.
Make the ADR-023 epoch fence peer-enforceable so removed-member / pre-grant-cascade writes are rejected at every peer, not just the doc-owning daemon.
Scope
Sign content (node) ops with author fingerprint + epoch + Ed25519 signature over the op bytes.
On each peer: read the signed membership chain (Phase 3) for the author's current epoch, then apply ADR-023's rule locally — every new op (beyond the peer's node SV) must be under the author's current-epoch derive_kb_client_id(fp, epoch), else fence (rebase). The ADR-023 viewer_era_* oracle, now peer-side.
fenced_ops + sig_verify_fail counters; fenced-op + verification-failure events surfaced via the notification bus.
Verification
Unit: peer-side fence parity with ADR-023; signed-op author/epoch verify; replay/mis-attribution rejected. Security-negative mesh e2e: a relayed stale-epoch op is fenced by the receiving peer without a trusted server; removed-member writes don't cascade.
🤖 Phase epic for the P2P decentralized KB-sync initiative (ADR-025/026/027, plan: daemon-mediated mesh, integrity-first, observability throughout).
ADR: ADR-026. Phase 4 of 6. Hard prerequisite: #72 (unpredictable epoch token). Depends on: Phase 3.
Make the ADR-023 epoch fence peer-enforceable so removed-member / pre-grant-cascade writes are rejected at every peer, not just the doc-owning daemon.
Scope
derive_kb_client_id(fp, epoch), else fence (rebase). The ADR-023viewer_era_*oracle, now peer-side.Observability (ADR-027)
fenced_ops+sig_verify_failcounters; fenced-op + verification-failure events surfaced via the notification bus.Verification
Unit: peer-side fence parity with ADR-023; signed-op author/epoch verify; replay/mis-attribution rejected. Security-negative mesh e2e: a relayed stale-epoch op is fenced by the receiving peer without a trusted server; removed-member writes don't cascade.
🤖 Phase epic for the P2P decentralized KB-sync initiative (ADR-025/026/027, plan: daemon-mediated mesh, integrity-first, observability throughout).