Skip to content

docs(adr-19): say which pairs idOnly replaces, in this package's own terms - #745

Open
ddeboer wants to merge 1 commit into
mainfrom
docs/adr-19-domain-neutral
Open

docs(adr-19): say which pairs idOnly replaces, in this package's own terms#745
ddeboer wants to merge 1 commit into
mainfrom
docs/adr-19-domain-neutral

Conversation

@ddeboer

@ddeboer ddeboer commented Aug 17, 2026

Copy link
Copy Markdown
Member

ADR 19 reasoned about the deployment that motivated it rather than about the shape of the case, in a package that names neither a domain nor an engine. That hid a real error.

idOnly does not replace every such pair. The ADR named five properties whose pairs it removes the reason for – but idOnly surfaces a bare IRI, and three hold locators: a content URL, a thumbnail, a landing page. Nothing selects on those, so IRI would assert a selection key that does not exist. A deployment following the ADR would have retyped its URLs as identity. It now states the rule – idOnly is for values a consumer can filter or facet on – and says the split is per property. A list of names could not be checked against a rule it never stated, which is how three locators sat in it unnoticed.

The narrowing caveat argued from a profile a reader cannot check. True, but stated through one profile's co-typing and one deployment's property names. The general fact is lde's own: a reference declares one ref.typeName and one labelSource, with no list form, so refinement returns fields that declare a type rather than fields that may also hold one. The counted claims went too – both were wrong as well as out of place.

Illustrative names (creator, TermFilter) stay. The line is between an example and an assertion about a named deployment's schema.

Docs only; the site builds.

@ddeboer
ddeboer force-pushed the docs/adr-19-domain-neutral branch from 270ae1c to 5a8ac77 Compare August 17, 2026 17:29
…terms

Two problems, one cause: the ADR reasoned about the deployment that
motivated it rather than about the shape of the case, in a package that
names neither a domain nor an engine.

The factual one first. It listed five properties as pairs `idOnly`
removes the reason for, but `idOnly` surfaces a bare `IRI`, and three of
those hold **locators** - a content URL, a thumbnail, a landing page.
Nothing selects on them, they carry no filter or facet, and typing them
`IRI` would assert a selection key that does not exist. They keep the
internal-reader-plus-keyword pair, which is still the only declaration
yielding a plain `String` over an IRI-valued path. A reader following the
ADR as written would have retyped its URLs as identity.

The register, second. The narrowing caveat argued from one profile's
co-typing of a specific class, which a reader of this package cannot
check and does not need: the general statement is that a declaration
names the target whose collection resolves its labels, which need not be
the widest class the data admits. The counted claim about that
deployment's declarations is gone with it - it was wrong as well as out
of place.
@ddeboer
ddeboer force-pushed the docs/adr-19-domain-neutral branch from 5a8ac77 to 3657bc4 Compare August 17, 2026 17:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant