Skip to content

spec: note the interaction of MAX_PROOF_BUNDLE_BYTES and chain depth (§5.1) - #56

Merged
chuks merged 2 commits into
mainfrom
docs/bounds-depth-guidance
Aug 1, 2026
Merged

spec: note the interaction of MAX_PROOF_BUNDLE_BYTES and chain depth (§5.1)#56
chuks merged 2 commits into
mainfrom
docs/bounds-depth-guidance

Conversation

@chuks

@chuks chuks commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Documentation only; no protocol, wire-format, or fixture change. Adds a short §5.1 guidance note and updates the existing alpha.16 "Input bounds" changelog bullet.

Why

alpha.16 raised MAX_DELEGATION_CHAIN_DEPTH to 8, which brings a deep chain's wire size close to MAX_PROOF_BUNDLE_BYTES (128 KiB). The two are independent ceilings that can bind near the same point: a chain within the depth limit can still exceed the byte limit when hops carry many scopes or several resource_path constraints. The decoder then rejects the bundle for size (reported via the existing invalid status) before depth is evaluated, not as chain_too_deep — a confusing diagnostic for an operator reasoning about depth.

Change

  • §5.1: a guidance paragraph stating the byte and depth ceilings are independent, that the byte limit applies to the received wire representation and is enforced before parsing, and that operators should budget for worst-case per-certificate content, not depth alone.
  • CHANGELOG: updated the existing alpha.16 "Input bounds" bullet (no second entry).

Verification

  • readme-sync ok
  • release-sync ok
  • make test-all ok

chuks added 2 commits August 1, 2026 10:42
…(§5.1)

Documentation only; no protocol, wire-format, or fixture change.

alpha.16 raised MAX_DELEGATION_CHAIN_DEPTH to 8, which brings a deep chain's
wire size close to MAX_PROOF_BUNDLE_BYTES. The two are independent ceilings that
can bind near the same point: a chain within the depth limit can still exceed the
byte limit when hops carry many scopes or several resource_path constraints, and
the decoder then rejects it for size (reported as the existing invalid status)
before depth is evaluated, not as chain_too_deep. Added a §5.1 guidance note so
operators budget for worst-case per-certificate content, not depth alone, and
updated the existing alpha.16 "Input bounds" changelog bullet to match.

Signed-off-by: chuks <891251+chuks@users.noreply.github.com>
…vior

The paragraph said "verification entry points report the violation using the
existing invalid status," which over-generalizes: the Go, TypeScript, Python,
and Rust wire decoders reject oversized input as a decode error, and their
verifier APIs take an already-decoded bundle and never observe the wire size;
only a wire-facing verification surface (the C ABI) maps the decode failure to
an invalid result. Reworded to attribute the rejection to the wire decoder and
scope the invalid-status statement to wire-facing verification surfaces. Also
changed "worst-case per-certificate content" to "maximum expected
per-certificate content," which is the operationally useful budget.

Documentation only.

Signed-off-by: chuks <891251+chuks@users.noreply.github.com>
@chuks
chuks merged commit 766d2c5 into main Aug 1, 2026
14 checks passed
@chuks
chuks deleted the docs/bounds-depth-guidance branch August 1, 2026 18:10
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