docs: state why the FRLY carrier caps are 4096 / 1 MiB #154
No reviewers
Labels
No labels
priority/P0
priority/P1
priority/P2
release/v0.1.0
status/blocked
status/planned
type/bug
type/design
type/test-gap
type/tracker
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
natsukium/felis!154
Loading…
Reference in a new issue
No description provided.
Delete branch "docs/frly-carrier-caps-139"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fixes #139.
The FRLY carrier block's limit table stated 4096 entries and 1 MiB without saying where the numbers came from, and the caps are frozen for the protocol major — v1 is the last chance to change them, so the sizing argument has to be readable now. This records that argument and the degrade contract that follows from it, and pins the degrade in a test.
docs/reference/ipc.md/docs/explanation/architecture/ipc.md: state the measurement the caps are set against (a login environment measures tens of KiB), why the payload cap bounds the single allocation the declared length word buys before any of it is trusted, and why chunking the payload is rejected (chunk boundaries are framing; a relay that respects them is no longer a byte pump).crates/felis-daemon/src/relay.rs: take the carrier block as an argument so a test can drive an environment pastMAX_CARRIER_ENTRIES, and pin the over-cap behavior — the relay warns and sends the client's bare FLIS stream rather than failing the connection.crates/felis-protocol/src/preface.rs,docs/reference/spec.md(REQ-104c), and the relay module doc: qualify the carrier-block prefix as omittable, since the unqualified prose read as if the block were sent unconditionally and contradicted the degrade path documented on the same page.Doc cascade: reference (
docs/reference/ipc.md,docs/reference/spec.md) states the resulting facts; the explanation twin (docs/explanation/architecture/ipc.md) carries the sizing rationale, the degrade argument, and the rejected chunking alternative; the code mirrors (preface.rs,relay.rsmodule docs) keep only the invariant and cite the docs.Verified: just check green (fmt, clippy, nextest, deny, proto-compat); reviewed by pi luna + pi sol; docs proofread by Gemini gemini-3.8-flash-high
Deferred
just proto-compatreports wire-compatible with the base.yqmissing from PATH forjust skill-check; cross-worktree artifact contamination in the shared cargo target dir) — harness/environment issues, not repository defects, and unrelated to #139's scope; both were worked around.