repositoryStandards v1.1.20

ADR-053: The backlog view does not carry the archive

StatusAccepted (2026-08-19)
Date2026-08-19
AuthorƁukasz Bodurka
Tagsbacklog, dashboard, methodology

Context

ADR-051 made one clause of its dashboard section binding: "Closed rows stay reachable in the view, and that requirement is the part of this section that binds. Work that has been relocated has not been hidden." It named the "show finished" chip as the surface. The chip was removed in 1.1.13 for an unrelated defect - it made the count under the pool mean two different things depending on a button nobody remembers pressing - which left the requirement standing with nothing carrying it, tracked as ARCHIVE-VIEW-1.

Two things are true of the code as it stands, and neither was checked when the requirement was written:

  • No surface reads the archive. standard/scripts/generate-dashboard/index.mjs contains no reference to backlog-archive.md in any form.
  • Timeline, the candidate the row named first, could not have carried it. It reads docs/sprints/TIMELINE.md - sprint throughput, forecast and verdict against target. Closed backlog rows are not among its inputs, and giving it them means a second, unrelated input for a tab that answers a period question.

Nothing is broken yet only because no archive exists: not in this repository, not in any adopted one. So the requirement has bound nothing for six days while blocking the first cut that would make it matter.

The question it exists to answer - what happened to <id> - is a lookup by id against a file holding one row per closed item and a pointer to where its content went. Opening the file answers it. So does git log -p backlog.md, for anyone who has the repository at all.

Options considered

  • A. Build a control on the Backlog tab. Rejected: it reinstates the defect that removed the chip, for a reader who has not appeared. The pool's count would again mean two things depending on a control's state.
  • B. Give Timeline a second input. Rejected: it makes one tab answer two unrelated questions, and couples a core-profile file to a scale-profile projection.
  • C. No surface at all. Chosen.

Decision

The archive is read as a file, not through the backlog view. No tab, no control, no generator input, at either profile.

ADR-051's reachability clause is narrowed to nothing rather than reassigned. It was written against hiding closed rows inside the pool view - a mask over a live list, which is what hideDone was. A separate file is not a mask, and "not hidden" is satisfied by the row being in a file with its own name.

Where closed work does surface as history - what a period finished, how much moved - it is built from the changelog and the sprint records, which are the artifacts shaped by period already.

Consequences

  • Positive: the first archive cut is unblocked, and ARCHIVE-VIEW-1 closes without building anything. The requirement had made every future release cut wait on a design nobody needed yet.
  • Positive: each dashboard tab keeps one input.
  • Negative: a reader who only ever sees the generated dashboard cannot see a closed row. Taken deliberately: period questions are answered by Timeline and Reports, and the id lookup is one file open away for anyone with the repository.
  • Negative: this narrows a clause of a record accepted six days earlier, on measurement rather than on use. If it is wrong it is wrong cheaply - a surface is additive, and nothing here removes data.

Revisit when

  • Someone asks what happened to <id> and neither backlog-archive.md nor git log -p backlog.md answers it. That is the concrete signal, and it is a sentence somebody says rather than a threshold to invent.
  • Or an archive grows past the point where opening the file is a search - the same size at which ADR-051 already says the release headings become the split.
  • ADR-051 - the record this narrows. Its clauses 1 to 4, the guard and the where pointer are untouched.
  • ADR-046 - why a decided open question stays in the pool rather than archiving, which is the other half of what the view shows.