Capacity and workload envelope
Crosstabs does not reduce capacity to a single row limit. The safe workload depends on respondents, width, category shape, table-book output, statistical-test fan-out, memory, execution mode, and the device running it.
How the planner decides
- Direct browser planning covers up to 100,000 respondents when the other dimensions remain within budget.
- From 100,000 to 1,000,000 respondents, a measured low-width single-response table can use the full-memory local browser worker with bounded aggregation, three-phase progress, and hard cancellation. Width, expanded multi-response rows, memory, and category shape can require a stricter decision before that row boundary.
- Above 1,000,000 respondents, or for methods outside the measured local envelope, Crosstabs blocks the full run before computation. Reduce or split the local workload; Crosstabs does not upload respondent data as a fallback.
- One table is blocked above 100,000 generated cells or when its row/column category budgets are exceeded. No respondent rows are silently truncated.
- A tab book above 100,000 combined generated cells is batched and paginated even when each individual table is safe.
- The explicit batch preview is synchronous and separately aggregates live source width, row passes, generated cells, test fan-out, exact-inference draw work, custom-table presentation work (definition traversals, memberships, reductions, and suppression), complex-sample work, and retained memory before per-table computation.
Versioned release scenarios · 2026-08-21.2
| Scenario | Boundary | Expected decision | Automated evidence |
|---|---|---|---|
| interactive browser | 50,000 respondents × 40 variables; 20 × 8 table; one table | run | Planner and direct crosstab regression tests |
| local worker | 300,000 respondents × 20 variables; full in-memory local dataset; bounded aggregate result | warn | Worker routing, progress, and cancellation tests |
| million row workspace | 1,000,000 respondents × 3 variables; 5 × 4 table; full local research contract | warn | Production workspace service stress test with input/result digests |
| local limit block | 1,250,000 generated respondents; 20 aggregate cells | block | Browser-local envelope rejection test |
| high cardinality block | 1,000 × 1,000 categories; 1,000,000 requested cells | block | Pre-allocation cardinality rejection and memory test |
| large tab book | 400 safe tables; 160,000 generated cells; 18,000 test comparisons | paginate | Multidimensional planner regression test |
| cancellation | Cancellation callback checked before every streamed row | warn | Streaming cancellation regression test |
Measured release gates
These are automated thresholds in the release test environment, not promises for every browser or device. Actual latency and memory vary with file representation, browser, hardware, filters, weights, and the selected statistics.
| Workload | Fixture | Release gate |
|---|---|---|
| Production workspace contract | 1,000,000 respondents × 3 variables · 5 × 4 table | Completes under 12 s with canonical input/result digests; process heap delta under 384 MiB |
| Iterable aggregate kernel | 1,250,000 generated respondents · 20 cells | Completes under 12 s; aggregate estimate under 8 MiB; process heap delta under 96 MiB |
| High-cardinality rows | 50,000 row levels × 2 columns | Lossless result under 5 s; process heap delta under 192 MiB |
| Low-level weighted aggregation kernel | 250,000 respondents · 4 × 3 cells | Completes under 5 s with the expected aggregate; this direct kernel is not public weight authority |
| Unsafe dense shape | 1,000 × 1,000 requested cells | Rejected before dense allocation under 500 ms; process heap delta under 64 MiB |
| Cancellation | 10,000-row streaming fixture | Stops before completion and returns an explicit cancelled status |
| Synchronous batch preview | 100 tables · 1,000,000 row evaluations · 20,000,000 source-cell evaluations | Also caps retained output at 100,000 cells, 50,000 tests, 25,000,000 exact-inference draw-work units, 1,000,000 aggregate custom-table presentation work units (definition traversals, memberships, reductions, and suppression), 25,000,000 complex-sample work units, and 1,073,741,824 estimated peak bytes before per-table computation |
| Batch XLSX/PDF output | 100 canonical tables · 100,000 remeasured cells · 1,073,741,824 estimated bytes | Canonicalizes and validates the complete result graph before the XLSX writer or PDF constructor; malformed, sparse, custom-prototype, accessor-backed, cyclic, or invalid numeric data fails with no exporter side effects |
Outcome Studio domain qualification
The release suite does not rely on the employee-engagement demo. It generates deterministic, upload-driven research fixtures, checks their statistical contracts in the engine, and repeats the journeys through the real CSV parser and workspace UI. The values below are qualification fixtures, not customer datasets or claims about every possible file.
| Use case | Deterministic fixture | Release evidence |
|---|---|---|
| Subscription churn | 1,200 rows · mixed numeric/categorical | Successful held-out model, expected churn signal, saved review and reload |
| Customer NPS | 960 rows · retained weight candidate from 0.05 to 12 | Untyped weight rejection plus successful unweighted holdout, mixed drivers, observed segments and bounded clusters |
| Brand tracker | 1,200 rows · 3 waves · retained weight candidate | Untyped weight rejection plus an unweighted wave/campaign model without causal claims |
| Concept test | 1,050 rows · concepts, ratings and price response | Mixed-field drivers, scenarios, synthetic separation and mobile workflow |
| Care outcomes | 900 simulated rows · missing predictors · zero/negative weight candidate | Untyped weight rejection plus an unweighted model with incomplete-row exclusions disclosed |
| No-signal control | 800 balanced rows | Holdout AUC remains near chance and no investigation is fabricated |
| Rare outcome | 600 rows · 20 positive events | Blocked before fitting by the 25-event/non-event safeguard |
| High-cardinality ID | 900 rows · 900 unique account IDs | Identifier unavailable in the driver picker; safe fields still run |
| Large outcome workload | 20,000 rows · all-row holdout scoring | All eligible rows scored; quadratic cluster diagnostics sampled at 1,500 |
- The browser journey covers upload, explicit outcome and success selection, exact driver selection, accessible rejection of selected weights, recovery to an unweighted model, guarded fitting, holdout evidence, observed segments, modeled scenarios, synthetic-evidence separation, human review, project reload, phone-width layout, and automated accessibility checks.
- The current measured Outcome Studio release fixture is 20,000 rows. This is not a universal maximum: the input file still has a 50 MB limit, and practical capacity depends on browser memory, file width, missingness, field cardinality, and device hardware.
- Outcome Studio accepts at most 8 selected predictors and 40 encoded terms. A categorical predictor above 20 levels is blocked, likely identifiers are removed from the picker, and exploratory clustering is capped at a deterministic 1,500 observed rows.
- Qualification does not establish causal effects, prospective accuracy, fairness across protected groups, complex-survey variance validity, survival/time-to-event support, or a true multiclass model. The selected success value is modeled against all other values.
What can still limit a project
- Input size and browser storage can fail before row count does, especially for very wide files or long open-ended text.
- A low-row dataset can still be unsafe when category combinations create too many cells or significance comparisons.
- Large table books are scheduled and rendered in batches; browser display is not an attempt to hold every native table at once.
- Browser-worker cancellation is hard: the active worker is terminated and stale results are ignored. The standalone iterable kernel is cooperative and checks before each row; the synchronous batch preview instead fails closed under its aggregate envelope before per-table computation.
- Batch XLSX/PDF export takes one bounded canonical snapshot and validates it before the XLSX writer or PDF constructor. That preflight does not promise that every later third-party file-generation call will succeed.
- Crosstabs blocks workloads beyond the measured browser-local envelope. The public page does not imply a server data plane or respondent-data upload fallback.