Appearance
A10 — Sponsor report projection consistency
Status: blocked. Updated: 2026-09-06. Assigned agent: unassigned. Implementation PR: none.
Issues and acceptance covered
#52. The acceptance boundary is the implementation scope and completion checks below; see the issue acceptance matrix for parent coverage. Shared definitions: financial contract; proof anchors: evidence index.
Dependencies and blockers
A02/A03; A06 shared campaign contract agreed. Existing #67 feature stays delivered; #37 and payout migration coverage constrain completeness.
Repository and expected files
Backend: src/utils/campaignReports/domain.ts, report domain/route tests, shared analytics adapters; frontend only features/reports/types.ts/API adaptation if additive contract necessary. No link-management redesign.
Existing behavior and verified gap
Report already implements grants, revocation/expiry, strict DTO, 90-day signed timeline, accepted metrics and completed item gross. It does not share admin financial/performance domain; legacy allocation detection is limited (E10).
Proposed implementation boundary
Reuse matched-scope A02 performance and A03 paid-gross projections behind existing report DTO; preserve all-time totals versus 90-day flow and selected creator ranking disclosure. Add coverage precision for legacy/new sources. Never disclose internal pending/holds/net destinations or recreate #67.
Expected API / data contract
Preserve report contract where possible; additive source/coverage metadata only. Any exact amount semantic change gets explicit version/adapter, backend first. Existing includeCreatorPayouts and top/recent limits remain.
Required tests
Equal staff/sponsor accepted scope and paid-gross allocation fixture; cross-campaign transfer; denied source with historical payment; legacy gap/missing date; null shares; negative/sparse timeline; 90 days; token invalid/expired/revoked/rotated during read; payout details off and PII whitelist.
Suggested agent tier
Smart owner reviews projection scope and token/privacy races. Lower-cost agent expands report response/regression cases after expected semantics freeze.
Expected PR boundary and reason
One report consistency PR referencing #52 and delivered #67 as context, stacked on shared readers. No financial feature bundle or issue #67 reopening. Unlocks A17. Keep compatibility additive, avoid unrelated cleanup, and list exact stacked commits and later units unlocked in the PR. If observed scope grows beyond this boundary, update the plan before splitting or adding work.
RBAC requirements / TODOs
Keep public bearer-grant access and strict DTO; keep management requireAuth/requireAdmin and existing RBAC TODO. TODO(RBAC): Preserve the approved authority for report-link management and creator-ranking disclosure; sharing does not confer staff finance or fraud access.
Completion and reconciliation checks
Equal-scope report/admin amounts match. Revocation post-read check remains outside snapshot; no cache logs/telemetry expose tokens. Gross report total never becomes net transfer total silently.
Record actual tests, source schema/contract versions, PR/merge SHA, manual evidence and residual coverage before changing status to review/complete. Any unexpected migration must first satisfy the migration gates; never bundle upstream financial writer work into this analytics unit.