Skip to content

feat: add generic paginated scheduled reports - #280

Merged
Calmingstorm merged 9 commits into
masterfrom
feat/paginated-scheduled-reports
Aug 21, 2026
Merged

feat: add generic paginated scheduled reports#280
Calmingstorm merged 9 commits into
masterfrom
feat/paginated-scheduled-reports

Conversation

@Calmingstorm

@Calmingstorm Calmingstorm commented Aug 21, 2026

Copy link
Copy Markdown
Owner

Summary

  • add the versioned paginated_embed_v1 producer contract with bounded generic embeds, structured links, hostile-payload rejection, normalized persisted projections, and reaction-driven redraws
  • construct renderer registry and pagination service in wiring, inject pagination directly into the reaction cog, and retain atomic state under the configured scheduler persistence root
  • carry report_format consistently through scheduler, native tools, API, WebUI, and tool schemas while preserving plain-text behavior and rollback-tolerant schedule persistence
  • pass cron_timezone through schedule create/update API calls in an isolated commit with create/update/readback and invalid-timezone coverage

Validation

  • full Python suite: passed (6 environment-dependent skips)
  • focused report/scheduling tests: 195 passed on the final implementation
  • Ruff: clean
  • lint no-new: 0 findings
  • type no-new: 0 findings
  • coverage gate: 0 regressions on final HEAD
  • apply-registry gate: 0 findings
  • npm run check: passed; production assets rebuilt and reproducible
  • generic report UI contract: 7 assertions passed

Boundaries

  • no deployment or release-pipeline execution
  • no live schedule mutation
  • no domain-specific report semantics in the repository

@Calmingstorm

Copy link
Copy Markdown
Owner Author

LGTM at 3b12138 — merge HELD pending branch soak per Aaron. Re-verification: all three round-1 blockers now bite under the exact mutations that exposed them — (1) bypassing unknown-format validation fails FOUR pins, one per surface (native add/update, API create/update); the provider mechanism is fail-closed twice over (absent provider rejects non-empty formats; provider failure rejects); (2) the legacy byte-identity pin fails on a one-character truncation change under a boundary-length result; (3) the update persistence pin does the full disk round-trip (set → reload → clear → reload) and catches set-then-drop. Clean control 309 passed. Round-1 verified findings stand: contract caps exact, four original mutations biting, explicit wiring with components-before-extensions ordering, zero domain terms in source, zero internal IPs, parse-first ordering, cron_timezone isolated in f1647d4. Independent full battery at this head: suite 9,650 passed / 5 skipped, npm run check exit 0 with byte-current dist, coverage/lint/type/apply-registry clean, diff-check clean, CI 7/7. Next: branch soak on the live install (Aaron-authorized), then merge on his word.

@Calmingstorm
Calmingstorm merged commit fc927d0 into master Aug 21, 2026
7 checks passed
@Calmingstorm
Calmingstorm deleted the feat/paginated-scheduled-reports branch August 21, 2026 19:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant