Appendix 5.A Limits and Defaults

Every limit below is a minimum conformance figure: a consumer MUST process a package or document whose characteristics fall within it, and MUST reject one that exceeds it.

A consumer MAY raise a limit through operator configuration, but MUST NOT raise one silently: an operator-tuned value SHOULD be logged and surfaced in diagnostic output.

A producer SHOULD stay well below these figures. They exist to bound a consumer's resource use when processing a maliciously crafted package, not to describe the scale of a well-formed one.

5.A.1 Package structure #

LimitMaximum
Payload entries100,000
.peipkg/manifest.json size16 MiB
.peipkg/files.json size64 MiB
.peipkg/signature size64 KiB
Single payload path component (UTF-8 bytes)255
Complete payload path (UTF-8 bytes)4096
Path nesting depth (components)256
Single claim path (UTF-8 bytes)4096

5.A.2 Manifest arrays #

LimitMaximum
dependencies10,000
optional_dependencies10,000
conflicts10,000
provides10,000
replaces1,000
sd_overrides100,000
Single sd_override decoded sd length64 KiB
Slots per claims field64
Claim paths materialised per role256

The claim-path figure is a materialisation limit, not a manifest limit: it bounds the union computed across every installed package declaring a path for that role, which is the quantity an adversary controls by installing many consumer-only packages.

5.A.3 Identity #

LimitValue
Package name length2 to 64 characters
Virtual name length2 to 128 characters
Architecture identifier lengthat most 16 characters

5.A.4 Documents #

LimitValue
JSON nesting depth64
Integer field rangeunsigned 64-bit

5.A.5 Decompression #

BoundValue
Compressed overrun allowance over size_compressedthe lesser of 1% or 16 MiB
Decompressed overhead allowance over size_installed320 MiB
Absolute decompressed cap4 GiB (default; operator-tunable)

5.A.6 Repository defaults #

DefaultValue
Maximum trusted age30 days
Maximum trusted age producing a warningabove 180 days
Maximum index staleness90 days
Maximum index staleness producing a warningabove 365 days
Revoked key retentionat least 1 year
Repository prioritypositive integer; lower is higher priority
Default signature policy for a new repositoryrequired

Edit this page