Skip to content

NAP-5: Feed topic family - #36

Closed
dskvr wants to merge 5 commits into
masterfrom
nap-5-feed-topics
Closed

NAP-5: Feed topic family#36
dskvr wants to merge 5 commits into
masterfrom
nap-5-feed-topics

Conversation

@dskvr

@dskvr dskvr commented Jun 14, 2026

Copy link
Copy Markdown
Contributor

Summary

Defines the feed:* topic family carried over NAP-INC. Its primary topic, feed:open, passes one or more NIP-01 filters plus an optional origin that names relay-pinned or outbox-routed sourcing. It is the wire format for "show me this feed."

  • NAP ID: NAP-5 · draft
  • Domain: feed topic coordination
  • Depends: inc — rides NAP-INC transport (inc.subscribe / inc.event)
  • Serves: feed/open
  • Discovery: shell.supports("inc", "NAP-5")

Changes

  • Adds naps/NAP-5.md with the feed:open payload schema and producer/consumer rules.
  • Requires a non-empty filters array with NIP-01 OR semantics.
  • Replaces older relay-hint framing with origin: { type: "relay", relays } or { type: "outbox", authors?, strategy? }.
  • Keeps relay selection, outbox resolution, fetching, ordering, deduplication, pagination, and rendering outside this protocol.
  • Documents direct NAP-INC delivery and NAP-INTENT role delivery as two paths for the same payload.

Downstream

Feed producers can describe criteria and optional origin hints without gaining relay access. Feed consumers validate filters and source events through their own authorized relay/outbox policy. The Serves: feed/open header self-registers this protocol as the recommended open contract for the feed archetype; no README or ARCHETYPES file is changed in this PR.

Web binding: NIP-5D.

Changelog

  • ec0adad - Introduced NAP-5 as the feed topic family.

Rebased onto current master; spec only.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@dskvr
dskvr force-pushed the nap-5-feed-topics branch from b4260cc to ec0adad Compare June 17, 2026 19:14
dskvr added 4 commits June 21, 2026 18:40
The feed open payload, origin variants, and NIP-01 filter shape now use CDDL-style schema notation, and the INC transport example no longer carries TypeScript highlighting.

Constraint: Keep this branch scoped to NAP-5.
Confidence: high
Scope-risk: narrow
Tested: git diff --check
Tested: rg found no TypeScript code fences or declarations in naps/NAP-5.md
The numbered topic NAP is a language-neutral wire contract. The shell.supports example is not TypeScript-specific, so it now uses an untyped code fence.

Constraint: Keep this branch scoped to its numbered NAP file.
Confidence: high
Scope-risk: narrow
Tested: git diff --check
Tested: rg found no ts or typescript code fences in the changed file
The feed topic payload should read as a transport contract, not a code-like schema block. This replaces the CDDL payload fence with tables for payload fields, provenance, behavior, origin variants, and NIP-01 filter fields.

Constraint: PR #36 is scoped to NAP-5.

Rejected: Rewrite inc.emit example | it is a concrete transport example, not a type definition.

Confidence: high

Scope-risk: narrow

Tested: rg found no cddl, TypeScript, or ts schema fences in NAP-5

Tested: git diff --check -- naps/NAP-5.md
Open NAP proposal branches need reader-visible changelogs that track semantic spec changes without recording formatting-only migrations.

Constraint: Changelog entries are one bullet per semantic commit-change.
Rejected: Include schema-table or formatting-only commits | they do not change the spec contract or boundary.
Confidence: high
Scope-risk: narrow
Directive: Keep future changelog entries semantic; omit changelog-only and formatting-only commits.
Tested: git diff --check
Not-tested: Rendered Markdown
@dskvr

dskvr commented Jul 21, 2026

Copy link
Copy Markdown
Contributor Author

Closing this because numbered NAPs are being removed from the registry. Cross-napplet payload shapes should converge as unnumbered conventions, without sequence assignment or shell.supports("<domain>", "NAP-N") negotiation.

Suggested alternative:

Use unnumbered feed conventions advertised by feed handlers instead of a numbered NAP.
Convention: feed:open
Discovery: manifest `['archetype', '<slug>', 'feed:open']` and `intent.available()` candidate `conventions`.

@dskvr dskvr closed this Jul 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant