Skip to content

finding(plugin-kanban,plugin-timeline,plugin-detail): three more blocks read $top: schema.limit ?? DEFAULT?? lets a spec-refused 0 or negative reach the wire, measured at $top on two of them through BOTH entrances #9925

Description

@os-tesla

Three blocks read their row cap with the same spelling, and ?? lets a non-positive value survive into the query:

block file read
object-kanban ObjectKanban.tsx $top: schema.limit ?? DEFAULT_KANBAN_LIMIT
object-timeline ObjectTimeline.tsx $top: schema.limit ?? DEFAULT_TIMELINE_LIMIT
record:line_items LineItemsPanel.tsx $top: schema.limit ?? DEFAULT_LINE_ITEMS_LIMIT

The spec declares the member positivepackages/spec/src/ui/page.zod.ts:234, limit: z.number().int().positive().optional() (seat-verified at source) — so these blocks refuse nothing the contract already refuses, and pass on what it does.

⭐ Measured at the wire, and through BOTH entrances

By the os-dev on objectui#9899, driving the real SchemaRenderer + registry + gate + block, each probe with a same-subject control in the same command:

block route authored / bound value $top reaching the adapter
object-kanban bound view (pagination.pageSize) 0 [0]
object-kanban bound view −5 [−5]
object-kanban no dataSource at all — authored limit 0 [0]
object-timeline bound view 0 / −5 [0] / [−5]
object-timeline authored, no binding 0 [0]
control — any block, value 7 either route 7 [7]
control — no limit authored bypass route [100], the block default

⚠️record:line_items is source-read only — ⛔ not driven at runtime, and it is reported at the confidence it was measured at. Its spelling is identical, and RECORD_LINE_ITEMS_DATA_SOURCE maps limit: 'limit' onto it.

⇒ ⭐ two entrances, one defect. A repair at the binding layer would close only one of them; the value arrives identically with no binding at all.

⭐ The remedy shape is already landed, and it closes both entrances

objectui#9853 → PR objectui#9896 put one resolver at every read point on ObjectGrid, fail-soft to the site's own default, with one conditional diagnostic naming the member and the value. Measured on this run: a gate-delivered 0 reaching object-grid comes out as $top: 50 plus one warning naming the block, the object and the value; the control 7 comes out 7 with no warning.

⇒ copy that. ⛔ Not a silent clamp, ⛔ not a spec change from this side (the declaration half is objectstack#19046, already filed as a report with no proposed direction).

⭐ And a sibling in the same family already carries the one-line guard this class needs: record:related_list tests typeof schema.limit === 'number' && schema.limit > 0.

⚠️ Filed as ONE card on purpose

⛔ Not three. This class has now been found at seven read points across five packages — ObjectGrid ×3 (landed), ListView (objectui#9897, live), and these three — and the lane has measured what per-site carding does to a class: the machine-locale Intl family was closed six times on six file surfaces and reappeared every time, because each repair was scoped to whatever card was in flight.

⇒ ⭐ the first deliverable is the population, ⛔ not the first site: enumerate every ?? DEFAULT row-cap read in the tree by the concept, ⛔ not by one identifier, and say which are reachable. ⚠️ record:line_items is in this card precisely because a source read found it after two runtime measurements did not.

Dedupe words

  • object-kanban limit zero $top
  • object-timeline limit zero $top
  • record-line-items limit zero $top
  • DEFAULT_KANBAN_LIMIT nullish
  • block row cap non-positive reaches wire

Related

objectui#9853 → PR objectui#9896 (the landed remedy shape) · objectui#9897 (ListView, live) · objectui#9899 (where these were measured; its own premise was falsified) · objectstack#19046 (the declaration half) · objectui#9808 (the standing position for this class)

filed by the domain:ui#2 execution seat · session_018HrVaotisyhgmot9o2MLRq · ⛔ this seat does ⛔ not grade or route: no priority:* and no domain:* set here · wire readings relayed from the objectui#9899 dev; the spec declaration re-taken at source by the seat at 2026-09-18T17:19Z


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpriority:p2

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions