h2. The Ask The grid locator ({{src/quber/agents/grid_locator.py}}) merges two tables printed side by side into one region. Its prompt's "Counting tables" rules only describe tables stacked vertically and end with "When unsure, prefer ONE region over splitting", so a page with a geography table on the left and a property-type table on the right is reported as one region spanning both. Camelot then reads the merged region faithfully, docling merges the same page on its own, so fusion has nothing to split against, and the store holds one table with the right-hand table's rows buried as extra columns of the left one. A question about the right-hand table cannot be answered. h3. Reproduce KREF Q1 2026 Form 10-Q (doc_key {{998c8ed06c0be22d}}), pages 23 and 33. Each prints "Geography" (left) and "Collateral Property Type" (right) side by side under the Concentration of Credit Risk note. Five full-document runs of the current pipeline on this file between 2026-09-10 and 2026-09-11 (local and AWS, same code, same models): page 23 came out as one 23x6 region in four of them and as two tables once; page 33 as one region in three and two tables in two. Four single-page locator runs on page 23: one region in four of four. The model's own grid flags span columns A to L in the merged runs, so the merge is the vision call, not the geometry chain. h3. Actual Hosted playground, document re-ingested 2026-09-11 08:26 UTC: page 23 holds one table, {{#/tables/14}}, 23 rows by 6 columns. All eleven "Collateral Property Type" questions in the concentration batch return not found. h3. Expected Two regions on page 23, one per table, each with its own column span: Geography 23x3 at x 0.07 to 0.49, Collateral Property Type 9x3 at x 0.50 to 0.93. Every run. h3. Severity High. The right-hand table disappears silently: no flag, no error, the run record shows one table where the page prints two. Any filing whose notes print two tables side by side is exposed. h2. Why now / What's open Measured 2026-09-11 in a scratch harness that patches the prompt at runtime (nothing in production changed). One bullet added under "Counting tables", directly after the stacked-tables bullet: {noformat} - Two tables printed SIDE BY SIDE are separate tables: each has its own column-header block and its own row-label column, and a vertical band of empty grid columns separates them. Report each with its own column span; never report one region spanning both. {noformat} * Pages 23 and 33, four locator runs each: current prompt merged page 23 in 4 of 4 and page 33 in 2 of 4; with the bullet, both pages split in 4 of 4. * Whole document, all 80 pages, one run each: 67 tables became 69. The only pages whose table count changed are 23 and 33 (1 to 2 each). No other page gained or lost a table or changed a column span. Title wording differed on 19 pages and four boxes shifted by 0.04 to 0.05 of page height; the same kind and size of drift appeared in a control run that changed an unrelated sentence, so it is run-to-run variance of the correction agent and locator, not the bullet. * As a side effect, both split regions start below the running header, so the tables are titled "Concentration of Credit Risk" / "Collateral Property Type" rather than the company name. Still open: # Page 33's left region overlaps the right one by 0.10 of page width (x 0.46 to 0.56), so the Geography grid carries a fourth column holding the neighbour's row labels ("Collateral Type": Retail, Office ...). Page 23 has no overlap. This is the same seam residue as QUE-370, arising here from the locator rather than from fusion's declash. # The bullet has been measured on one document. The Set-of-Mark notes say the current prompt was measured stable across the review corpus; the stacked-table and section-subheading cases that wording protects need a regression pass before this ships. # The existing vision count probe ({{split.vision_count_probe}}) answered 2 on the merged region in 8 of 8 runs but only runs when docling out-counts the locator. Whether to also run it on wide single regions is a separate decision. h2. Acceptance Criteria (provisional) h3. AC1: Side-by-side pages split every run * *Verify by:* the locator on pages 23 and 33 of {{998c8ed06c0be22d}}, five runs each. * *Expected:* two regions per page, with disjoint or near-disjoint column spans, on every run. * *Show:* the regions and grid flags per run. h3. AC2: No other page changes * *Verify by:* full-document extraction of the same file, three runs, against a three-run baseline on the current prompt. * *Expected:* no page other than 23 and 33 gains or loses a table beyond what the baseline runs vary among themselves; no column span changes. * *Show:* per-page table counts for all six runs. h3. AC3: Review-corpus regression * *Verify by:* the corpus the current prompt was tuned on (stacked pairs, section sub-headings, single wide tables). * *Expected:* table counts and regions unchanged against the current prompt within run-to-run variance. * *Show:* per-document counts, current prompt vs new. h3. AC4: The right-hand table is answerable * *Verify by:* re-ingest {{998c8ed06c0be22d}} on the hosted playground and run the eleven Collateral Property Type questions from docs/development/Playground_Output_Comp_Concentration_KREF.xlsx. * *Expected:* Multifamily 40.6, Industrial 22.1, Office 17.8, Life Science 13.9, Hospitality 2.9, Student Housing 2.2, Mixed-use 0.5 answered from page 23; the four types the page does not print return not found. * *Show:* the batch rows. h2. Current State To Do. Evidence gathered 2026-09-11 in a scratch harness; the production prompt is unchanged. Landing.ai dpt-3 Pro separates both tables on page 23 unaided (1.2 credits for the page) but text-layer pages are never sent to it. h2. Links Epic QUE-1 (Document Processing). Related: QUE-370 (column bleed at the split seam), QUE-336 (declash reads locator column spans). Standards: see docs/ENGINEERING_STANDARDS.md