Skip to content

feat: add EPIC/Goal history log with Jira-backed timestamps#13

Open
ImTheKai wants to merge 1 commit into
Percona-Lab:mainfrom
ImTheKai:epic-history-log
Open

feat: add EPIC/Goal history log with Jira-backed timestamps#13
ImTheKai wants to merge 1 commit into
Percona-Lab:mainfrom
ImTheKai:epic-history-log

Conversation

@ImTheKai

@ImTheKai ImTheKai commented Jul 7, 2026

Copy link
Copy Markdown
Collaborator

Adds a hidden /history page that tracks when EPICs (board columns / "Goals") were added to or dropped from the board, so scope changes over time are auditable.

  • New epic_events table + EpicEvent model; JiraSync records an "added"/"removed" row whenever an epic enters or leaves the epic_query result set (Priority label set/unset, or status reaching a terminal state like SUCCESS/FAILURE/REJECTED/"GONE BAD").
  • Event timestamps are derived from Jira's own changelog (status/label field changes) instead of the sync poll time, with a follow-up changelog lookup for epics that already dropped out of the query.
  • EpicHistoryController + view render the events as a day-grouped timeline behind /history (still auth-gated); each row links out to the epic in Jira.
  • One-time backfill tasks: epic_events:backfill corrects timestamps on events recorded before this logic existed, and epic_events:discover_closed finds epics that already reached a terminal status before this app ever tracked them and reconstructs their add/remove history from Jira.

Adds a hidden /history page that tracks when EPICs (board columns /
"Goals") were added to or dropped from the board, so scope changes
over time are auditable.

- New epic_events table + EpicEvent model; JiraSync records an
  "added"/"removed" row whenever an epic enters or leaves the
  epic_query result set (Priority label set/unset, or status reaching
  a terminal state like SUCCESS/FAILURE/REJECTED/"GONE BAD").
- Event timestamps are derived from Jira's own changelog (status/label
  field changes) instead of the sync poll time, with a follow-up
  changelog lookup for epics that already dropped out of the query.
- EpicHistoryController + view render the events as a day-grouped
  timeline behind /history (still auth-gated); each row links out to
  the epic in Jira.
- One-time backfill tasks: `epic_events:backfill` corrects timestamps
  on events recorded before this logic existed, and
  `epic_events:discover_closed` finds epics that already reached a
  terminal status before this app ever tracked them and reconstructs
  their add/remove history from Jira.

Signed-off-by: Kai Wagner <kai.wagner@percona.com>
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