Skip to content

feat(kanban): archive terminal items daily (D3, #1272) - #88

Merged
LukasWodka merged 1 commit into
mainfrom
feat/1272-kanban-archive
Jul 27, 2026
Merged

feat(kanban): archive terminal items daily (D3, #1272)#88
LukasWodka merged 1 commit into
mainfrom
feat/1272-kanban-archive

Conversation

@LukasWodka

@LukasWodkaLukasWodka commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Summary

Implements RFC-BACKEND-0008 D3 (continuous archiving) — the missing mechanism. Today nothing archives terminal work: kanban-reconcile only relocates non-terminal items, so Prod/Cancelled accumulate and the board re-bloats (~800/month). The 3,000-item archive earlier was a one-time snapshot.

kanban-archive.yml runs daily (05:00 UTC, after the reconcile), pages the org project, and archives every un-archived item in Prod or Cancelled. Archived items are retained + searchable — this hides done work, it doesn't delete it. Archives by column membership, never by age (age is unusable here — retired auto-classify rewrote updatedAt).

workflow_dispatch + dry-run input for a safe manual preview.

Test plan

  • actionlint clean (local).
  • After merge: gh workflow run "Kanban archive" -f dry-run=true to preview the count, then a real run.

Closes tracebloc/backend#1272


Note

Medium Risk
Automated mutations on the org kanban project can hide misclassified items from the active board, though dry-run and per-item failure handling limit blast radius.

Overview
Adds RFC-BACKEND-0008 D3 continuous archiving via a new Kanban archive GitHub Actions workflow so terminal board items do not pile up after reconcile.

The workflow runs daily at 05:00 UTC (after kanban-reconcile) and on workflow_dispatch, using PROJECTS_KANBAN_TOKEN against org project #2. It pages all project items, selects un-archived rows whose Status is Prod or Cancelled, and calls archiveProjectV2Item for each (items stay searchable; they are hidden from the active board). Selection is by column membership only, not age. A dry-run input logs how many items would be archived without mutating; failures per item emit warnings and a step summary reports ok/fail counts.

Reviewed by Cursor Bugbot for commit b03a2b4. Bugbot is set up for automated code reviews on this repo. Configure here.

Nothing archives terminal work today - the reconcile only moves non-terminal
items. At ~800 merges/month into Prod the board re-bloats within weeks (the D3
one-time archive of 3,000 items was a snapshot, not a mechanism).
New daily workflow sweeps every un-archived item in Prod/Cancelled and archives
it (retained + searchable, not deleted). Archives by column membership, never by
age. workflow_dispatch + dry-run for manual runs.
Closestracebloc/backend#1272
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@LukasWodka

Copy link
Copy Markdown
ContributorAuthor

bugbot run

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit b03a2b4. Configure here.

@LukasWodka
LukasWodka merged commit f001629 into mainJul 27, 2026
5 checks passed
@LukasWodka
LukasWodka deleted the feat/1272-kanban-archive branch July 28, 2026 09:03
LukasWodka added a commit that referenced this pull request Jul 28, 2026
A push routinely carries commits that already shipped further down the
pipeline: a staging->develop back-merge re-pushes Prod PRs to develop, and
a develop==main fast-forward does the same. advance-deploy-env blindly set
every PR in the push to the branch's column, un-shipping those cards (seen
live: .github #87/#88/#89/#92 stranded at On dev after yesterday's ff, #95
demoted from Prod today; engine#540's back-merge would demote its whole
staging history next). Now the per-PR query also reads the current Status
and the update is skipped unless the target rank is strictly higher.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for freeto 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

@LukasWodka