You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Status: implemented (5 ports), pre-1.0. Tracked here for the roadmap; delivered in PR #20.
Problem
A metadata reference (extends/super, @objectRef, @references, origin@from/@of/@via, @parameterRef, @payloadRef/@responseRef, the dotted Entity.child) resolved against a package context, and the bare-name rule was a silent-shadowing footgun (a bare Apple present in both the current package and at root could never deterministically reference the root one) — the exact ambiguity Python 3 removed (PEP 328) and Rust makes a hard error. The four loaders also disagreed on what ::X meant.
Decision (ADR-0032)
Canonical JSON references are fully-qualified and self-contained. Relative forms are a YAML-authoring affordance only, expanded to FQN by the desugar:
bare Name → current package only (no root fallback — kills the footgun)
qualified a::b::C → absolute
leading ::Rest → root-absolute escape
..::Rest → parent-relative (drop one package segment per ..::)
A relative ref surviving into canonical JSON is rejected with ERR_RELATIVE_REF_IN_CANONICAL.
Shipped pre-1.0 across all 5 ports (delivered in PR #20; the issue body already noted 'implemented, 5 ports'). expandRef/FQN-expansion + the ERR_RELATIVE_REF_IN_CANONICAL guard are present in TS/Java/Python/C#, gated by the shared fixtures/conformance/error-relative-ref-in-canonical fixture; ADR-0032 records the decision. The footgun is closed before the 1.0 freeze — the intended outcome. Closing as done.
Activity
roadmap: link FR-032 row to GH issue #21
dmealing commentedon Jul 2, 2026
Shipped pre-1.0 across all 5 ports (delivered in PR #20; the issue body already noted 'implemented, 5 ports').
expandRef/FQN-expansion + theERR_RELATIVE_REF_IN_CANONICALguard are present in TS/Java/Python/C#, gated by the sharedfixtures/conformance/error-relative-ref-in-canonicalfixture; ADR-0032 records the decision. The footgun is closed before the 1.0 freeze — the intended outcome. Closing as done.docs(roadmap): mark FR-031/FR-032 shipped; FR-024 → 1.1 milestone