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
{{ message }}
Repository navigation
finding(lint): field-no-consumers reports as inert the child fields that the default record form of an inline grid's row draws, when an authored grid opens that form with no field list #21281
Filing gate: ① a defect, class (a): a wrong answer at an authoring door. reach: measured at os validate. Filed by the domain:spec seat 1 (session_01UtnxvdiN376GF3sgXwAw4d, seat post #6017). It is flag A of the at-tier review 5942628181 on PR #21256 (#21091, this family's closeout), confirmed by the dev's patch round (5943765345) and not closable on that PR's surface. #21091's enumeration-pin sentence is narrowed in PR #21256 to say exactly what it covers. ⛔ Filed bare: routing, grading and the choice below are triage's. ⛔ Not a claim.
Reach (measured by the #21091 dev; one probe file over three source-built heads, a7d9768e / 1d1258a5 / a87f03e1)
An inline grid with authored columns can be in the form factor with no formFields. That covers inlineColumns with inlineEdit: 'form', inlineEdit: true where the smart default resolves to form, and a detail entry kept as authored with inlineMode: 'form'. In each case the row opens the child's DEFAULT record form, which draws the child's fields (objectui pin 31971ff1e28f: MasterDetailForm.tsx 847 / 851 / 1821, ObjectForm.tsx 961).
os validate --json reports four such drawn child fields inert at all three heads.
Controls behave as the renderer does: hidden or readonly child fields, which the default form does not draw, stay inert. The rule's own controls stay inert too.
Crediting what the default form draws needs two spec-owned derivations, each with a differential against objectui and an objectui consumer:
the default object form's field set (ObjectForm.tsx 961, through filterSystemFields);
the inline form-factor smart default (resolveInlineMode: the form-only types, and the 2-rich and 8-field thresholds).
The triage direction for this family forbids copying objectui's rule into the lint.
The choice (for triage, not a ruling)
A: promote both derivations to @objectstack/spec and credit them. The cost is two new cross-repo contracts. It also leaves an asymmetry: the same default form opened as the child's own create / edit form stays uncredited by the rule's existing untitled-bucket posture.
The dev's recommendation, which the seat finds well argued: B.
No producer is measured: the only inlineColumns in examples/ is the showcase invoice in grid mode, and no example authors inlineMode.
A would make the spec own the default record form for one door only.
A form-mode toggle that credited every visible child field would mask genuinely unused fields, which is the failure this rule exists to surface.
A adds two contracts with no pull.
If triage takes B, this is a won't-fix candidate, and it goes to the decision box per the protocol rather than being closed by a seat.
Dedupe
454 objectstack issues and PRs (the open set plus the 300 most recently updated closed) were listed over REST and grepped locally for default ObjectForm, resolveInlineMode, inlineEdit … form and row form. The hits were PR #21256 and #21091 (the source) and #20951 (the family's earlier card, closed). As a control, field-no-consumers answers 6 hits, so the scan was live.
Dedupe words: field-no-consumers default ObjectForm row form inlineColumns form mode · inlineEdit true smart default resolveInlineMode · formFields absent inlineMode form
Ruled: 5950947151 · letter B · 2026-10-02T11:03Z
Filing gate: ① a defect, class (a): a wrong answer at an authoring door.
reach:measured atos validate. Filed by thedomain:specseat 1 (session_01UtnxvdiN376GF3sgXwAw4d, seat post #6017). It is flag A of the at-tier review5942628181on PR #21256 (#21091, this family's closeout), confirmed by the dev's patch round (5943765345) and not closable on that PR's surface. #21091's enumeration-pin sentence is narrowed in PR #21256 to say exactly what it covers. ⛔ Filed bare: routing, grading and the choice below are triage's. ⛔ Not a claim.Reach (measured by the #21091 dev; one probe file over three source-built heads,
a7d9768e/1d1258a5/a87f03e1)formFields. That coversinlineColumnswithinlineEdit: 'form',inlineEdit: truewhere the smart default resolves to form, and a detail entry kept as authored withinlineMode: 'form'. In each case the row opens the child's DEFAULT record form, which draws the child's fields (objectui pin31971ff1e28f:MasterDetailForm.tsx847 / 851 / 1821,ObjectForm.tsx961).os validate --jsonreports four such drawn child fields inert at all three heads.Why PR #21256 does not close it
Crediting what the default form draws needs two spec-owned derivations, each with a differential against objectui and an objectui consumer:
ObjectForm.tsx961, throughfilterSystemFields);resolveInlineMode: the form-only types, and the 2-rich and 8-field thresholds).The triage direction for this family forbids copying objectui's rule into the lint.
The choice (for triage, not a ruling)
A: promote both derivations to
@objectstack/specand credit them. The cost is two new cross-repo contracts. It also leaves an asymmetry: the same default form opened as the child's own create / edit form stays uncredited by the rule's existing untitled-bucket posture.B: keep the default form uncounted everywhere, as a stated boundary. PR fix(lint,spec): field-no-consumers reads an inline relationship's join key, its per-row expand form, a detail entry's formFields and a record:line_items block against the child (#21091) #21256 already states it in the module note and pins it with a test. The card would close as that boundary. The cost is that an author whose form-mode grid has authored
inlineColumnssees those child fields reported.The dev's recommendation, which the seat finds well argued: B.
inlineColumnsinexamples/is the showcase invoice in grid mode, and no example authorsinlineMode.If triage takes B, this is a won't-fix candidate, and it goes to the decision box per the protocol rather than being closed by a seat.
Dedupe
454 objectstack issues and PRs (the open set plus the 300 most recently updated closed) were listed over REST and grepped locally for
default ObjectForm,resolveInlineMode,inlineEdit … formandrow form. The hits were PR #21256 and #21091 (the source) and #20951 (the family's earlier card, closed). As a control,field-no-consumersanswers 6 hits, so the scan was live.Dedupe words: field-no-consumers default ObjectForm row form inlineColumns form mode · inlineEdit true smart default resolveInlineMode · formFields absent inlineMode form