Skip to content

ADR-0021: the two absent columns are filled, and point 7 is done - #87

Merged
jeffcrouse merged 3 commits into
mainfrom
docs/adr-0021-phase-4
Aug 4, 2026
Merged

ADR-0021: the two absent columns are filled, and point 7 is done#87
jeffcrouse merged 3 commits into
mainfrom
docs/adr-0021-phase-4

Conversation

@jeffcrouse

Copy link
Copy Markdown
Member

The record for phase 4 of the Mac's lists. The code is in seethroughlab/familiar-apple#61; this is the ADR catching up, as an accepted ADR's Implementation block is meant to.

What it records

The two columns that were built and deleted. They came out because they rendered blank on every row while their headers sorted, and the note said filling them was a schema change and a query change. Both have landed — created_at reached TrackResponse in #82, and the Mac now asks for include_features — so the record says what shipped and what was verified against the live 26,396-track library: bpm descending returns 215.3 / 198.8 / 198.8, playCount 42 / 38 / 35, and created_at spans 2026-01-25 to 2026-05-29. That last one is the check worth having: a column showing the same value on every row is the blank-column defect wearing a value.

What point 7's rollout actually met, which the original note did not anticipate. The six lists hold their rows whole, so sorting them on-device was the easy half — but they do not hold the same columns. AlbumTrack carries five fields and ArtistTrack six against TrackResponse's twenty, so a shared table had to be told what each list can fill or the album screen draws eleven empty columns. Also recorded: a playlist can hold the same track twice; FavoriteTrack was discarding sixteen of the twenty fields /favorites returns; and the downloads screen needed two columns no server-backed list has, or a table would have been worse than the rows it replaced.

The floor moving 14.0 → 14.4, which refines point 2 rather than reversing it — conditional columns inside a TableColumnBuilder are 14.4, and so is TableColumnForEach. Recorded here rather than as a new ADR because it implements point 2's direction instead of setting a new one; the decision that the Mac targets 14 is unchanged.

One thing not verified, stated as such: whether a single TableColumnCustomization shared across tables with different column sets keeps the ids a given table does not build. If visiting an album prunes the library's layout, the fallback is a key per list — at the cost of point 7's "one column preference across them".

No Decision text is edited; both changes are Implementation-block entries, plus a pointer from the acceptance line to where the floor moved.

🤖 Generated with Claude Code

https://claude.ai/code/session_014P9p2fvFnyiywBxGkv4gfW

jeffcrouse and others added 3 commits August 3, 2026 20:35
They were built, seen to render blank on every row while their headers sorted,
and removed — recorded as a schema change and a query change. Both have landed,
so the record catches up: what shipped, what was verified against the live
library, and the two shapes the work turned on.

Also records what the rollout to the other six lists will run into, which the
original note did not anticipate: those lists hold their rows whole, but they do
not hold the same columns. `AlbumTrack` carries four fields against
`TrackResponse`'s twenty, so a shared table has to be told what each list can
fill or the album screen draws eleven empty columns.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014P9p2fvFnyiywBxGkv4gfW
Records what the rollout to the other six lists actually met: the endpoints are
not equally generous, so the shared table had to be told what each list can
fill; a playlist can hold the same track twice; `FavoriteTrack` was discarding
most of what `/favorites` returns; and the downloads screen needed two columns
no server-backed list has, or a table would have been a worse version of the
rows it replaced.

Also records the floor moving 14.0 → 14.4, which refines point 2 rather than
reversing it — conditional columns in a `TableColumnBuilder` are 14.4 — and the
one thing not verified in the running app: whether a shared column customization
keeps ids a given table does not build.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014P9p2fvFnyiywBxGkv4gfW
…ubtful

The Implementation block said it was not verified in the running app, and
described the failure it might have had: one `TableColumnCustomization` shared
across tables that build different column sets, quietly pruning the library's
layout after a detour through a two-column album screen.

It does not. Driven on 2026-08-04 — columns turned on for Tracks survive album
and artist tables that never build them — so point 7's "one column preference
across them" stands as written and the per-list storage key is not needed.

Corrected rather than left standing because an ADR is read months later as fact,
and this one would have been read as an open risk.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014P9p2fvFnyiywBxGkv4gfW
@jeffcrouse
jeffcrouse merged commit 8aab736 into main Aug 4, 2026
12 of 13 checks passed
@jeffcrouse
jeffcrouse deleted the docs/adr-0021-phase-4 branch August 4, 2026 11:59
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