Review follow-ups on the row/cell limits: - getdata.sas checked the limits twice - once before the sort that caps work.out, and again after PRE_EDIT_HOOK. It is now a single check, after both, so the counts cover everything that could reach the browser: the rows the selection matched, plus anything a hook has added. The payload cap moves to where work.outdata is built, which is the only place that needs it. Each mp_abort also names its option once - the limit was repeated in the message text as well as the condition. - The migration closed only var_active=1 rows but inserted active rows unconditionally, so an option a site had switched off was silently switched back on. It now leaves those alone and logs a note. - row-cell-limits.cy.ts test 1 matched a regex against the grid's text, which the fixture's own columns satisfy (DEPTH_M reaches 4293, SAMPLE_COUNT 4210), so it did not pin the raised VIEW cap. It now reads the PK column - the first td of a .ht_master row - and requires values in the PK range 1001-2000 with a maximum above 1500, which the old 500 row cap could never render.