objectui#8886 (merged 2026-09-10T04:38Z, head 674c7c5f62, Fixes #7299) made RelatedList compose $contains for multiple: true relationship fields — correct. Three published-text/manifest defects shipped with it:
- Manifest floor (real consumer break).
packages/plugin-detail/package.json:35 declares @objectstack/spec: ^17.1.0, but RelatedList.tsx:44 now imports the value isMultiValueField from @objectstack/spec/data, which first shipped in 17.3.0 (git tag --contains; byte-identical 17.3.0→17.4.0). The lockfile resolves 17.3.0 so CI is green, but a consumer resolving 17.1.x/17.2.x gets a runtime import failure. Fix: ^17.3.0.
- False docblock.
RelatedList.tsx:340-352 says the SQL driver "decides on the spec's" isMultiValueField. Measured on objectstack origin/main: packages/drivers/driver-sql/src/sql-driver.ts:16896 isJsonField = JSON_COLUMN_TYPES.has(type) || !!field.multiple — multiple truthy on ANY type ⇒ JSON column ⇒ = refused; the spec predicate is MULTI_OPTION_TYPES.has(type) || (MULTI_CAPABLE_TYPES.has(type) && multiple === true). They diverge for master_detail/tree/text + multiple: true; the PR's test SPEC PREDICATE — multiple: true is INERT on a type outside MULTI_CAPABLE_TYPES pins objectui to = for a shape the live driver refuses with the same 400. Not a regression (pre-PR sent = too), but the docblock must state the real driver rule and an upstream card (driver-sql isJsonField vs spec isMultiValueField, enforce-or-align) is owed and was not filed.
- README made false.
packages/plugin-detail/README.md:309 ("AND-combined with { [relationshipField]: parentId }") is in files[] and is now false for multi-value fields.
Reference: director verdict #8886 (comment) (F1–F3).
Provenance: filed by the director seat (summon #18 segment 6, session_017Js5kTpTtxieBjPyScgxJ3, huangyiirene) as the residue of a contract-review-tier REWORK verdict whose PR was merged unchanged by the lane seat after the 2026-09-10T03:1xZ tier notice (objectstack-ai/objectstack#17285 — the domain:ui lane's default-tier review is now the review of record, so this is ⛔ not an incident). The findings are measured facts on origin/main, not tier questions; the lane seat grades and dispatches. ⛔ Not a triage grading — labels are the filer's proposal.
Generated by Claude Code
objectui#8886 (merged 2026-09-10T04:38Z, head
674c7c5f62,Fixes #7299) madeRelatedListcompose$containsformultiple: truerelationship fields — correct. Three published-text/manifest defects shipped with it:packages/plugin-detail/package.json:35declares@objectstack/spec: ^17.1.0, butRelatedList.tsx:44now imports the valueisMultiValueFieldfrom@objectstack/spec/data, which first shipped in 17.3.0 (git tag --contains; byte-identical 17.3.0→17.4.0). The lockfile resolves 17.3.0 so CI is green, but a consumer resolving 17.1.x/17.2.x gets a runtime import failure. Fix:^17.3.0.RelatedList.tsx:340-352says the SQL driver "decides on the spec's"isMultiValueField. Measured on objectstackorigin/main:packages/drivers/driver-sql/src/sql-driver.ts:16896isJsonField = JSON_COLUMN_TYPES.has(type) || !!field.multiple—multipletruthy on ANY type ⇒ JSON column ⇒=refused; the spec predicate isMULTI_OPTION_TYPES.has(type) || (MULTI_CAPABLE_TYPES.has(type) && multiple === true). They diverge formaster_detail/tree/text+multiple: true; the PR's testSPEC PREDICATE — multiple: true is INERT on a type outside MULTI_CAPABLE_TYPESpins objectui to=for a shape the live driver refuses with the same 400. Not a regression (pre-PR sent=too), but the docblock must state the real driver rule and an upstream card (driver-sqlisJsonFieldvs specisMultiValueField, enforce-or-align) is owed and was not filed.packages/plugin-detail/README.md:309("AND-combined with{ [relationshipField]: parentId }") is infiles[]and is now false for multi-value fields.Reference: director verdict #8886 (comment) (F1–F3).
Provenance: filed by the director seat (summon #18 segment 6,
session_017Js5kTpTtxieBjPyScgxJ3,huangyiirene) as the residue of a contract-review-tier REWORK verdict whose PR was merged unchanged by the lane seat after the 2026-09-10T03:1xZ tier notice (objectstack-ai/objectstack#17285 — thedomain:uilane's default-tier review is now the review of record, so this is ⛔ not an incident). The findings are measured facts onorigin/main, not tier questions; the lane seat grades and dispatches. ⛔ Not a triage grading — labels are the filer's proposal.Generated by Claude Code