A long conversation, sidebar and many tables can crowd out the field a caller actually needs. I separated bounded observation from narrower search. Returning less data matters, but so does preventing a limited reply from being mistaken for the complete page.

Retain relevant controls rather than sending more data

Candidates include editable fields and choices as well as ordinary links and buttons. Editor and input priorities prevent a long navigation sidebar from pushing actual form controls out of the bounded list. Ordering and limits matter even after names are resolved correctly.

Priority does not determine the user's goal or authorize selecting the first item. The request still needs a specific role and name. A compact-list optimization must not become another way to guess the first plausible target.

Control limits and text limits are different bounds

Bounding controls per frame does not prevent body text and tables from growing. The implementation separately limits returned elements, text, tables, rows, columns and headings. Aggregating frames adds another set of bounds for combined text, tables and headings.

The convenience page API then builds a smaller snapshot again. The underlying observation and caller-facing summary can therefore cover different material from the same page. A limit at one layer is not a full-page collection guarantee. Knowing which layer omitted data helps the caller select the right next read.

Retain totals, matches and returned range

Selection metadata distinguishes total candidates, matched candidates, offset, limit and whether more matches remain. Text search returns a bounded region near the match and retains text-match and truncation metadata.

I do not claim one flag captures every kind of omission. Per-frame bounds and aggregate bounds act at different stages. Callers need the layer and its limits alongside the flags. An empty result must not establish absence from an unread frame or the whole page.

Do not infer uniqueness from a truncated list

The page locator refuses a fresh find with more remaining matches. Seeing one button in this slice does not exclude another matching button outside it. Uniqueness cannot be established by counting only the returned fragment.

The caller should refine the query, role or link or read the relevant frame and range. Increasing every limit indefinitely restores the original cost and uncertainty. Bounded discovery needs a deliberate route to further reading so a useful limit does not become a dead end. The page can change between additional reads too. Fragments from different observations should not be concatenated blindly and treated as a complete current inventory with stable positions.

Match table-reading scope to the data question

Table reading supports native tables and declared table, grid and treegrid roles. It checks nearest table and row ownership so nested structures are not casually merged. Row and column bounds still mean that the result is not an entire ledger.

A business total must not be calculated as if a partial table were the whole dataset. Page reading and source-data export have different contracts. This account reads current text, control and table assembly and the locator's truncation refusal; it does not report an external-ledger download or a new completeness experiment.

Explaining omission is part of the interface

A business dashboard does not improve simply by placing every record on one screen. Showing the immediate question and a path to more detail can be more useful, provided partial numbers are not presented as totals.

Northstar applies the same principle. Compact reading needs visible scope so an agent can choose the next necessary query. I value knowing what remains unknown more than merely making a reply shorter. Bounded observation is a contract for the next accurate decision as well as a way to reduce data volume.