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.
Capabilities.resolveis 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 noresolve/resolvedenvelope in the schemaoneOf, no wire shape, no host API (contextgraph-host/src/compose.rs:85— "a later phase"), and no conformance check. ADR 0005 (line 77) confirmscontext/resolveis deferred.This is exactly the dead-capability-surface anti-pattern ADR 0004 purged (
upsert/subscribe/filters): a frozen 1.0 would shipreferenceframes 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 nocontent, 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. (Alsoschema:580'stokenizer_refcomment contradicts ADR 0003's Option A.)Options (mirroring ADR 0004's discipline)
A. Specify
context/resolvepre-freeze: envelope pair, correlation, error codes, and B3 semantics for every representation.B. Cut
referencerepresentation +Capabilities.resolvefrom 1.0; keep a sketch indocs/sketches/for a 1.x additive minor.compactmay survive if its B3 rule is written down.Either way, B3 must be restated for every representation the frozen spec ships.