Skip to content

docs(spec): record opcode-220 as base-bounded by design (accepted) (#1780) - #49

Merged
MichaelTaylor3d merged 2 commits into
mainfrom
docs/1780-opcode220-base-bound-accepted
Jul 29, 2026
Merged

docs(spec): record opcode-220 as base-bounded by design (accepted) (#1780)#49
MichaelTaylor3d merged 2 commits into
mainfrom
docs/1780-opcode220-base-bound-accepted

Conversation

@MichaelTaylor3d

Copy link
Copy Markdown
Contributor

Closes dig_ecosystem#1780.

Task

#1780 (evaluate a dedicated dig_wire rate-limit row for opcode 220 / DigMessage) resolved by a decide-first as DOCUMENT-AS-ACCEPTED: opcode 220 rides the base rate-limit bound (100 frames/min · 1 MiB/frame · 100 MiB cumulative per connection) by design and must NOT get a tighter dedicated row, because (a) dig-gossip performs no per-frame crypto on a 220 frame (the envelope is opaque transport), and (b) 220 is the directed-message streaming transportStreamFrame OPEN/DATA/CLOSE ride inside the opaque payload, so legit transfers fragment into many 220 frames and need high per-connection cadence; a tighter row would clip legit streaming for no security gain against any abuse the base per-connection bound doesn't already cover. The base bound is real + non-fail-open (handle_message applies it before the fail-open check_dig_extension). Inner-DigMessageType limiting is deferred to dig-node (post-decrypt).

Change (doc-only)

  • docs/resources/SPEC.md §5.3 + the CON-005 spec — a normative note recording the accepted decision + the streaming-transport rationale (prevents a future "harden 220 with a tighter row" regression).

Bump

0.17.19 → 0.17.20 (patch — docs, no code/API/wire/format change) — already set in the anchor.

WIP — draft anchor; doc note per the #1780 decider verdict.


Generated by Claude Code

MichaelTaylor3d and others added 2 commits July 29, 2026 08:46
…780)

Salvage anchor: record that opcode 220 (DigMessage, directed envelope) rides the
base rate-limit bound by design (it is the streaming transport; a tighter row
would clip legit streaming), non-fail-open; inner-type limiting is dig-node.

Co-Authored-By: Claude <noreply@anthropic.com>
Add normative note to SPEC.md §2.3.1 and CON-005.md explaining that
opcode 220 (DigMessage, directed envelope) is deliberately base-bounded
only by default_settings limits, with no dedicated dig_wire row, because
dig-gossip performs no per-frame crypto and opcode 220's streaming nature
requires high frame cadence. Recipient-side per-subtype limiting is
defense-in-depth layered on top.

Co-Authored-By: Claude <noreply@anthropic.com>
@MichaelTaylor3d
MichaelTaylor3d marked this pull request as ready for review July 29, 2026 08:49
@MichaelTaylor3d
MichaelTaylor3d merged commit 4c252b8 into main Jul 29, 2026
9 checks passed
@MichaelTaylor3d
MichaelTaylor3d deleted the docs/1780-opcode220-base-bound-accepted branch July 29, 2026 09:16
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