Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
c9dcc2e
feat(core): port the NIP-03 verifier, NIP-56 targets, report scoring …
chappie-daemon Oct 24, 2026
47a9cf0
feat(relay): fill the fourteen event strategies behind a web-of-trust…
chappie-daemon Oct 24, 2026
c4ecefb
test(relay): carry the fourteen strategy spec files into the census
chappie-daemon Oct 24, 2026
1a9d6f8
docs(rewrite): record the event strategies in ADR 0006 and move ADR 0…
chappie-daemon Oct 24, 2026
753cfb6
style: rustfmt the new strategy, core and test modules
chappie-daemon Oct 24, 2026
c00aaf1
fix(core): assert the report weight's zero boundary where it is
chappie-daemon Oct 24, 2026
9376a69
fix(relay): treat an unwired wot graph as no distance, not a failure
chappie-daemon Oct 24, 2026
3ed5b3d
fix(core): decode ots proofs with the capture's lenient base64 engine
chappie-daemon Oct 24, 2026
3c6c912
docs: correct the strategies test count in the release note
chappie-daemon Oct 24, 2026
7d27cdd
refactor(relay): hold the trust graph on the handler context, not the…
chappie-daemon Oct 24, 2026
24b679c
refactor(relay): decide tag hex with the core parsers, not a second p…
chappie-daemon Oct 24, 2026
2a428c2
test(relay): tolerate a lost write race on the oversized-frame step
chappie-daemon Oct 24, 2026
0dac5fe
fix(relay): let a shared invite code admit a second pubkey in the double
chappie-daemon Oct 24, 2026
ae6f889
docs: point ADR 0006's two remaining citations at the lines they name
chappie-daemon Oct 24, 2026
06463a5
docs: pin ADR 0006's two citations to the exact spans the approver named
chappie-daemon Oct 24, 2026
ba95e52
test(core): give the report-target fixture a letter so uppercase mean…
chappie-daemon Oct 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions .changeset/relay-event-strategies.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
---

feat(relay): fill the fourteen event strategies, with a real OTS verifier behind them

`nostream-relay` now answers every kind its selector routes: contact list, delete, DVM job
request, ephemeral, gift wrap, group, invite request, join request, leave request,
parameterized replaceable, replaceable, report, timestamp and vanish each emit the frame
their `src/handlers/event-strategies/` counterpart does — the same `OK` text, the same
broadcast, and the same best-effort block after the store. Two seams carry what the arms
call and the relay does not own: a `WotGraph` trait (`src/wot.rs`) for the follow-list and
distance calls, and `nostream_core::nip03`'s OpenTimestamps parser for kind-1040 proofs,
whose reason strings reach the client verbatim. `nostream-core` gains NIP-56 target
extraction, report scoring and the NIP-43 request helpers; `nostream-storage` gains
`StorageError::DuplicateEvent`, produced from `23505` on `events_event_id_unique`, so the
two catching arms answer `rejected: event already exists` without a driver's message ever
reaching a client.

Parity is measured rather than asserted. The census grew from 557 to 658 cases (36 spec
files, 612 mapped across 200 rows to 182 live Rust tests, 46 exempt with the job that owns
them), and the fourteen files' 101 cases are carried by the new `tests/strategies.rs`
target's 100 tests. Decisions are recorded in
`docs/rewrite/decisions/0006-event-strategies.md`.
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading