Skip to content

Decide context/resolve before the freeze: specify it or cut reference representations — and define B3 for compact/reference frames #50

Description

@macanderson

Capabilities.resolve is advertised (schema/contextgraph-envelope.schema.json:373-376, contextgraph-types/src/capability.rs:133), and compact/reference representations require it (representations_consistent, capability.rs:155) — but there is no resolve/resolved envelope in the schema oneOf, no wire shape, no host API (contextgraph-host/src/compose.rs:85 — "a later phase"), and no conformance check. ADR 0005 (line 77) confirms context/resolve is deferred.

This is exactly the dead-capability-surface anti-pattern ADR 0004 purged (upsert/subscribe/filters): a frozen 1.0 would ship reference frames that no specified mechanism can rehydrate.

The budget half. SPEC.md:250 mandates token_cost = ceil(utf8_byte_length(content)/4); a reference frame has no content, and the code silently decided absent ⇒ 0 (contextgraph-types/src/frame.rs:397-399). B1 budget honesty therefore assigns zero cost to frames whose resolved content is unbounded — a budget hole the moment resolve exists. (Also schema:580's tokenizer_ref comment contradicts ADR 0003's Option A.)

Options (mirroring ADR 0004's discipline)

A. Specify context/resolve pre-freeze: envelope pair, correlation, error codes, and B3 semantics for every representation.

B. Cut reference representation + Capabilities.resolve from 1.0; keep a sketch in docs/sketches/ for a 1.x additive minor. compact may survive if its B3 rule is written down.

Either way, B3 must be restated for every representation the frozen spec ships.

Metadata

Metadata

Assignees

No one assigned

    Labels

    normativeChanges the protocol version or conformance contract (GOVERNANCE.md process)roadmapPart of the steering roadmap

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions