← All stories

BRANCH · ef-088-activity-log-report

Activity Log report

EF-088Persona: OrganizerStage: CloseoutRoots in: admin-shell-access

Organizer reviews a paginated activity preview that unions guest, scan, notification, and email activity, then launches an async export with the lifecycle inherited from ui-async-job-tracker.

Happy path

  1. Open Activity Log from Reports.

    Date range and source filters are visible, with a paginated preview before download.

  2. Select time range and generate export.

    The report job starts and ui-async-job-tracker owns status, cancel, failure, and artifact states.

  3. Download activity CSV.

    Rows include normalized source, actor, action, subject, timestamp, and request id when present.

Failure modes

Activity union incomplete

Trigger: guest, scan, notification, or email source is dropped.

Resolution: source summary shows all included source counts before export.

Preview pagination lies

Trigger: first page renders but export omits later pages.

Resolution: preview page count and export total share the same filtered query digest.

Time range timezone drift

Trigger: ui-date-range-picker dates are interpreted in UTC instead of event timezone.

Resolution: the selected range displays the event timezone and boundary timestamps.

Deployed-runtime gap

Trigger: deployed run on 2026-04-29 observed activity-log report job create returned 400 D1 bootstrap error; the probe locks this in until the gap is closed.

Resolution: status 400 remains expected until deployed D1 bootstrap is fixed.

Stable test attributes

Visibility teeth. Each attribute must be effectively visible when active.

activity-log-report-pagePageActivity Log report surface
activity-log-date-rangeFormTime-range filter
activity-log-source-filterFormGuest/scan/notification/email source filter
activity-log-preview-tablePreviewPaginated activity preview
activity-log-source-summaryPreviewSource count summary
activity-log-generate-ctaToolbarCreate report job
activity-log-job-trackerPageAsync report lifecycle
activity-log-download-ctaJob rowDownload artifact
activity-log-regenerate-ctaJob rowRegenerate expired/swept artifact
activity-log-error-panelJob rowFailure reason and request id
activity-log-stuck-bannerJob rowQueued too long warning
activity-log-permission-gateCatalogPermission-filtered report entry
activity-log-gap-panelPageRuntime gap notice

Agent test plan

- activity-log-renders
- generate-activity-log-report
- activity-preview-pagination
- deployed-runtime-gap