ditdash U-G4: the FOCUS/CSV export (the format param lands) #11

Merged
jsutter merged 1 commit from ditdash-u-g4 into main 2026-10-13 05:31:45 +00:00
Owner

The FOCUS 14-column map + the CSV serializer; the format param rides the I9 branch point; no charge math in ditdash. Critic: PASS-WITH-FINDINGS (2 coverage warnings ruled non-blocking: the invariants are individually pinned).

The FOCUS 14-column map + the CSV serializer; the format param rides the I9 branch point; no charge math in ditdash. Critic: PASS-WITH-FINDINGS (2 coverage warnings ruled non-blocking: the invariants are individually pinned).
src/export.rs carries the frozen FOCUS 1.4 profile (the 14-column map as
one extractor table; FOCUS_COLUMNS derives from it) and the stable CSV
serializer, with the role's shadow filter and the visible-subtotal
recompute as pure functions. The statement twin gains format=focus
(application/json, the FOCUS row array) and format=csv (text/csv); the
API-only periods summary mounts at /api/v1/clients/{c}/statements
(dito statement show <client> --json shaped, the role-visible current
statement included); the OpenAPI document gains the resource + focusRow
schemas generated from the serializer's own frozen tables.

tests/exports.rs pins the column-by-column mapping, the frozen export's
byte stability, the role boundaries (shadow absent for viewers, tagged
for operators), and the named data-absence envelopes; the statement page
and client-page digests refresh for the new export links.

Assisted-by: worker:synthetic/hf:deepseek-ai/DeepSeek-V4.1-Flash
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
deepnet/ditdash!11
No description provided.