Amends 0011: the reporting and read-model
capabilities here are built in the platform. The 0011 row changes are in the final pass (ADR
0227).
Context
Modules needed reports, data imports and exports, and read models for history. The owner’s answers P7, AN2, DX-1 and DX-2 (mem L821–824, 2026-10-20) fix these. The analytics service and the tenant dashboard builder are OS items, not Stackra packages.Decision
- Reports and read models (P7). A
@Reportquery is compiled to SQL. Exports run as queue jobs that write a file. A@Projectionread model supports anasOfquery. - Report widgets (AN2). A module’s
@Reportmetrics appear as panel widgets (0164). - Imports (DX-1).
@Importablereads CSV, XLSX and JSON. It suggests a column mapping with AI, supports a dry run, upserts by key, resumes after failure, and rolls back a batch as a whole. - Exports (DX-2). List exports respect the caller’s permissions. Exports can be scheduled.
- The analytics service and the tenant dashboard builder are not Stackra packages.
Consequences
- An export of data is a queue job, so a large export does not block a request.
- An import that fails halfway can be retried without duplicating rows, because it upserts by key.
Enforcement
planned — the import dry run and batch rollback are covered by the importable conformance tests, and export jobs check permissions per row.Alternatives
- Reports as ad-hoc SQL in actions: rejected by 0160.
Supersedes and sources
Supersedes: none. Amends: 0011 (final pass for the row changes). Sources: owner answers P7 (intent-map item, accepted), AN2 (stackra-decisions-2026-10-19.md L821), DX-1 (L823), DX-2 (L824), 2026-10-20.