Skip to content

fix(notify): complete inbound coverage (escalation_response, object_revoke, profile_share) - #41

Merged
antonyevans merged 1 commit into
mainfrom
fix/notify-complete-coverage
Jun 19, 2026
Merged

antonyevans merged 1 commit into
mainfrom
fix/notify-complete-coverage

Conversation

@antonyevans

Copy link
Copy Markdown
Owner

What

Completes inbound notification coverage so no user-facing inbound type arrives silently.

Review: coverage matrix

Edge Book has 12 envelope types. The inbound dispatcher (receiveEnvelope) applies 10 of them (the other two, ack/error, are protocol-level and never dispatched). Before this PR the notify policy table covered 7:

Type Notifies?
friend_request ✅ already
friend_response ✅ already
privileged_message ✅ already
object_share ✅ already
escalation ✅ already
support_bundle ✅ already
post_publish ✅ already (0.18.3)
escalation_response ➕ added — a friend's answer to a decision you raised (high signal)
object_revoke ➕ added — a friend revoked access to something they shared
profile_share ➕ added — a deliberate profile broadcast (manual command, not auto housekeeping)
ack / error — protocol-level, intentionally silent

Posts (the post_publish sub-taxonomy)

No per-post-type work needed: a single post_publish policy already covers every post sub-type — signal, query, answer, endorse, coordinate, share, delegation_request, capability_advertisement, result_attestation — because it keys on post.post_type generically. A friend's broadcast feed post is delivered as a post_publish envelope, so it's covered by the same watcher as a direct message (push model; the local feed = the store of received post_publish items).

Tests

  • Positive notificationIntent cases for escalation_response, object_revoke, profile_share.
  • The two "silent type" tests now use ack (a genuine protocol frame) instead of profile_share.
  • npm test → 511 pass; typecheck/lint/sync-readme clean.

Note

profile_share also rides along the friend handshake (each side exchanges a profile), so friending now emits an "accepted" notification followed by a "shared a profile" one. It can be suppressed per-agent via the notify_types whitelist if that's too chatty. README updated to list the complete coverage. Bumps to 0.18.5.

🤖 Generated with Claude Code

Completes inbound notification coverage. Of the 12 envelope types, the inbound
dispatcher (receiveEnvelope) applies 10; the notify policy table covered 7.
The three remaining user-facing types arrived silently:

- escalation_response: a friend's answer to a decision you raised (high signal)
- object_revoke: a friend revoked access to something they shared
- profile_share: a deliberate `profile broadcast` from a friend (a manual
  command, not auto housekeeping)

Add policies for all three. Only protocol-level frames (ack/error) stay silent
now. The single post_publish policy already covers every post sub-type
(signal/query/answer/endorse/coordinate) since it keys on post_type.

Tests: positive cases for the three new types; the two "silent type" tests now
use ack (a genuine protocol frame) instead of profile_share. README updated to
list complete coverage. Bumps to 0.18.5.
@antonyevans
antonyevans merged commit 23a5c6d into main Jun 19, 2026
1 check passed
@antonyevans
antonyevans deleted the fix/notify-complete-coverage branch June 19, 2026 00:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant