* fix(#2766): scan archived phases and read table-shaped Gaps/deferred entries
Three silent false negatives in cmdAuditUat and its readers, all failing in
the reassuring (false-negative) direction — a UAT audit whose entire job is
to catch leftover work reporting zero over real work:
1. Archived phases invisible (src/uat.cts cmdAuditUat): on milestone
completion milestone.cts MOVES phase dirs into
.planning/milestones/<version>-phases/ (archive-by-default since #1871),
leaving .planning/phases/ empty or absent. Partial archive → false
all-clear; full archive → hard error indistinguishable from a broken
install. Fix: enumerate archived dirs via the canonical
getArchivedPhaseDirs seam (phase-locator.cts); archived dirs deliberately
bypass getMilestonePhaseFilter (which scopes to the CURRENT milestone —
applying it to past-milestone dirs would discard every one and reinstate
the bug).
2. Table-shaped deferred-items.md yielded zero items (splitGapsEntries
keyed on bullet openers only; a GFM table row starts with |). Fix: union
of bullet + numbered + table-row splits.
3. Table-shaped ## Gaps yielded zero items (same bullet-only splitter).
Fix: same union walker.
The table walker is deliberately NOT routed through parseMarkdownTable
(ADR-2143 §3 — that reads only the first table and treats ragged/headerless
shapes as errors, the wrong contract for a hand-written backstop table
that must surface its rows). New additive archived_milestone field labels
provenance.
Fix authored by issue reporter gavin-ray and verified against the published
tarball; maintainer triage (trek-e) confirmed all three findings. Cherry-
picked onto fresh next after prior PR #2832 closed for staleness; re-verified
under gsd-test + reviews. 21 regression tests including the negative
direction (bullet-only unchanged, status: resolved still suppressed, empty
phases dir still succeeds).
* chore(#2766): backfill changeset PR number 3082
---------
Co-authored-by: sim <sim@local>