Draft · 0.3.0

A `0.x` draft in production use by adopters: pin the exact draft and runtime release; no compatibility guarantee between drafts.

Accepted design — review pending View current source

RFC 0026: Document ceiling profiles

On this page
  • Status: Accepted
  • Type: Standards track, draft maturity
  • Decision: Issue #232, maintainer decision of 2026-10-22

Summary

A document declares profile, defaulting to base; extended doubles the existing ceilings enumerated in Core §4.1. This records the accepted issue design, not release readiness.

Problem

Installation-only overrides make identical documents silently admissible at different ceilings. The declared choice must travel with the bytes and be discoverable through reader capabilities.

Evidence

Core escalation routes (#219) have an eight-route bound; Policy informational sources have a sixteen-source bound. Workflow already declares limits below fixed ceilings. Dialect has fixed resource bounds. Core defines no outcome, rule or reference ceiling: this change invents none. The synthetic vectors demonstrate structural admission, not runtime or independent agreement.

Specification

Core §4.1 owns the complete ceiling table, declaration, identity and capability rules. Companions reference it. A known unsupported profile yields one profile-unsupported diagnostic naming that profile before other documents' byte-bound checks, reference loading, acquisition or evaluation; only the bounded declaration scan precedes negotiation. A supporting reader then applies the selected ceilings. An unknown profile is structural. The declaration is retained in bytes and digests. Profiles change ceilings only, never semantics, minima, closed vocabularies or canonical numeric domains. Workflow keeps its limits member.

Alternatives

No change leaves installation differences hidden. Extensions would introduce a second declaration mechanism. Product-only overrides cannot give documents portable identities and admission rules. The accepted profile approach names specification-versioned ceilings instead of arbitrary numbers.

Compatibility

Absent declarations retain base behavior. Explicit declarations change exact bytes, even base. Old schemas may reject the new member. Published schemas retain base maxima; profile-aware readers apply the enumerated extended maxima without relaxing other constraints. No frozen Core consumer schema, release pin, specification version or released evaluation corpus is rewritten. The Policy reader retains its pinned Core consumer contract. Workflow remains a proposed companion without an implementation. The released Policy 1.0.0 draft does not carry profile; its table ceilings apply from the next companion version, which adopts the member. The Dialect readers support only base; the Core structural profile reference admits both. No claim of extended companion implementation is made.

Security and privacy

Larger ceilings increase resource demand. Readers must refuse unsupported profiles before side effects, never truncate, and never use deployment settings to grant undeclared limits. Refusal messages echo only known profile names. All examples are synthetic; ceilings grant no authority.

Conformance

conformance/evaluation/staged/profiles.json supplies hand-written boundary and capability vectors. Tests cover implicit and explicit base, one-over-base refusal, extended admission and its own ceiling, unsupported and unknown names, unchanged identity bytes, schema mutation sensitivity, and both Dialect language readers' declaration checks. The frozen Policy schemas continue to reject the new member. Handoff boundaries are covered at 8/9 and 16/17 routes; both effective schemas are compared with the normative table. Canonical digests distinguish absent, base and extended declarations. The oversized case probe checks envelope admission only: its minimal profile declaration is not a complete Dialect document, and full extended verification is not claimed.

Implementation

The Python Core structural reference adapts only route ceilings in a fresh schema. Independent implementations can select precompiled validators per profile or use conditional schemas at the root. Existing schema style permits conditionals, but this change leaves base schemas directly usable and performs extended validation in the profile-aware reader. Python and TypeScript Dialect readers implement base-only negotiation; no independent extended reader agreement is claimed.

Unresolved questions

Extended companion implementations and release publication remain separate work. Existing RFCs' companion mirrors change with the proposal; the repository's different-vendor adversarial review and maintainer disposition remain release/review requirements, not evidence supplied by this session.