Order of work for the open backlog (#107–#136) #137

Closed
opened 2026-08-18 11:22:44 +00:00 by nalum · 1 comment
Owner

This issue holds the working order for the 30 open issues, and the PR plan that delivers them. Merges are fast-forward only, so every PR stacks on the one before it: the first PR bases on main, each later PR bases on the branch below it, and merges go bottom-first (Forgejo retargets the next PR to main automatically). Do not open a PR before its branch has commits — open each PR when its work is ready, based on the current stack tip. Tick an item here when its issue closes.

The PR stack (bottom → top)

# Branch Issues Notes
1 fix/sessions #112 PR #138 open — server + web + Android
1a ci/recursive-image-sign — PR #139 open — release image signing, stacked on #138; current tip
2 fix/reward-job-links #110 PR #140 open — job-sheet reward verbs, stacked on #139
3 feat/list-rename #115 PR #141 open — web + Android, stacked on #140
4 fix/mcp-defects #113 #120 #121 PR #142 open — reopen, rota acting_user, event clears, stacked on #141
5 fix/cli-defects #114 #118 #119 PR #143 open — logout revoke + session verbs, item list membership, stacked on #142
6 fix/android-defects #124 #125 #117 PR #144 open — grabs rows, reduced-motion celebrate, cleanups, stacked on #143
7 refactor/web-shared-components #129 #123 #122 PR #145 open — JobCard/MemberSelect + deadline/points/repeat/meals modules, stacked on #144
8 refactor/android-shared-components #130 #122 PR #146 open — shared JobCard/AgendaRow/Pill/SectionHeading + clamped balance, stacked on #145
9 refactor/tui-shared-rows #131 #126 PR #147 open — rows.go (itemLine/eventLine/rewardLine/worthOf/listBlock), stacked on #146
10 feat/job-card-redesign #107 PR #148 open — stacked action-bar card on web+Android, stacked on #147
11 feat/sub-verb-affordances #135 PR #149 open — Update.other/Claim.other/ExportUserData.other rows + web/Android re-gate, stacked on #148
12 feat/web-admin-matrix #134 PR #150 open — useAdminAccess tab verbs + Family per-verb split (+UserService/Update.other row), stacked on #149
13 feat/tui-matrix #136 PR #151 open — GetPermissionMatrix client + appCtx.can() + four-tab re-gate + verb-aware help, stacked on #150
14 feat/cli-tui-tier-gaps #132 PR #152 open — list/meal/rota/notification groups + system mcp/release-notes + TUI Meals tab, stacked on #151
15 feat/mcp-tier-gaps #133 PR #153 open — audit_log/update_item/set_repeat/uncheck_list/set_rota_timezone, stacked on #152
16 feat/android-notification-kinds #116 PR #154 open — the 7 missing kind toggles, stacked on #153
17 feat/android-theme-workshop #127 PR #155 open — custom-theme rendering + text-size control (editor stays web, recorded), stacked on #154
18 feat/subtask-todo #111 PR #156 open — step-job on assignee's Mine boards (web+Android+TUI), stacked on #155
19 feat/event-types #109 PR #157 open — ADR-0034 General/Reminder on all surfaces, stacked on #156
20 feat/calendar-marks #108 PR #158 open — mark symbols on wide grid + day view, stacked on #157
21 fix/android-visual-polish #128 PR #159 open — save arc, skeletons, themed toast, dress details, stacked on #158; current tip. Stack complete: every open issue has a PR (#138–#159).

Stack rules:

  1. Open a PR only when its branch has commits. Base it on the branch below it in this table (or main when everything below is merged).
  2. Merge bottom-first, fast-forward, as soon as a PR is green. Do not hold the whole stack for the top.
  3. If an entry needs a different split when the work starts, edit this table first, then branch.

Phase 1 — User-reported bugs (PRs 1–3)

These block daily use, so they go first.

  • #112 — User sessions: password prompt despite PIN, phantom sessions, delete does not log out → PR 1
  • #110 — Rewards: cannot edit or delete a reward that is linked to a job → PR 2
  • #115 — List rename is unreachable on web and Android (a gap on the reference surface) → PR 3

Phase 2 — Small parity-defect fixes (PRs 4–6)

Quick corrections from the 2026-08-18 parity report, grouped by surface so one PR carries each cluster.

  • #113 — MCP: complete_item cannot reopen an item → PR 4
  • #120 — MCP: rota writes take no acting_user → PR 4
  • #121 — MCP: update_event cannot clear description or location → PR 4
  • #114 — CLI: logout does not revoke the server session; add session list / session revoke → PR 5
  • #118 — CLI: completion flips send an empty audited Update → PR 5
  • #119 — CLI: cannot put an item on a list → PR 5
  • #124 — Android: Up-for-grabs rows break the danger rule → PR 6
  • #125 — Android: reduced motion removes the celebration state → PR 6
  • #117 — Cleanups: stale UncheckAll proto comment, dead isManager binding → PR 6

Not in this phase: #122, #123 and #126 are also defects, but their fixes are "define one shared function" — they land inside the Phase 3 consolidation PRs instead of twice.

Phase 3 — Shared entity components (PRs 7–10)

Do this before the client re-gating in Phase 4, so permission gates get written once into the shared components instead of into every fork.

  • #129 — Web: shared entity components (reference surface — decides the component shapes) → PR 7
  • #123 — Web: one weekday-name source → PR 7
  • #122 — One balance function and one clamping decision per surface → PRs 7 + 8
  • #130 — Android: shared entity components (ports the PR 7 decisions) → PR 8
  • #131 — TUI: shared row renderers → PR 9
  • #126 — TUI: reward enum leak and bounty math disagreement → PR 9
  • #107 — My Jobs card redesign (restyle the shared JobCard once, not the forks) → PR 10

Phase 4 — Matrix-derived affordances (PRs 11–13)

The ADR and matrix rows for #135 can start any time. The client re-gating waits for Phase 3.

  • #135 — Promote manager-tier guards to sub-verb rows (ADR + server rows first, then re-gate web and Android) → PR 11
  • #134 — Web: gate the admin surface on the matrix, not isAdmin → PR 12
  • #136 — TUI: adopt GetPermissionMatrix affordances → PR 13

Phase 5 — Tier gaps (PRs 14–17)

Capability additions per surface tier. Each needs either an implementation or a recorded deliberate-gap decision.

  • #132 — CLI/TUI: meals, rota, lists, notifications, mcp_enabled, release notes → PR 14 (or a sub-stack)
  • #133 — MCP: AuditLog, item editing, UncheckAll, rota time zone → PR 15
  • #116 — Android: full 14-kind notification toggle list → PR 16
  • #127 — Android: custom theme workshop and text-size control → PR 17

Phase 6 — Features and polish (PRs 18–21)

  • #111 — Jobs: subtask assignment surfaces the job on the assignee's todo → PR 18
  • #109 — Calendar: Reminder and Event types (proto change — needs its design settled first) → PR 19
  • #108 — Calendar: member marks on the large-screen month and day views → PR 20
  • #128 — Android: remaining visual-polish divergences → PR 21

Notes

  • The web leads in each phase (system rule 1: web is the reference surface). Android, MCP and CLI follow against their tier.
  • When a decision records a deliberate gap instead of an implementation, the commit message carries the decision (system rule 1).
  • Every PR passes make check and a live make deploy verification before merge (system rule 5).
This issue holds the working order for the 30 open issues, and the PR plan that delivers them. Merges are fast-forward only, so every PR stacks on the one before it: the first PR bases on `main`, each later PR bases on the branch below it, and merges go bottom-first (Forgejo retargets the next PR to `main` automatically). Do not open a PR before its branch has commits — open each PR when its work is ready, based on the current stack tip. Tick an item here when its issue closes. ## The PR stack (bottom → top) | # | Branch | Issues | Notes | |---|--------|--------|-------| | 1 | `fix/sessions` | #112 | **PR #138 open** — server + web + Android | | 1a | `ci/recursive-image-sign` | — | **PR #139 open** — release image signing, stacked on #138; current tip | | 2 | `fix/reward-job-links` | #110 | **PR #140 open** — job-sheet reward verbs, stacked on #139 | | 3 | `feat/list-rename` | #115 | **PR #141 open** — web + Android, stacked on #140 | | 4 | `fix/mcp-defects` | #113 #120 #121 | **PR #142 open** — reopen, rota acting_user, event clears, stacked on #141 | | 5 | `fix/cli-defects` | #114 #118 #119 | **PR #143 open** — logout revoke + session verbs, item list membership, stacked on #142 | | 6 | `fix/android-defects` | #124 #125 #117 | **PR #144 open** — grabs rows, reduced-motion celebrate, cleanups, stacked on #143 | | 7 | `refactor/web-shared-components` | #129 #123 #122 | **PR #145 open** — JobCard/MemberSelect + deadline/points/repeat/meals modules, stacked on #144 | | 8 | `refactor/android-shared-components` | #130 #122 | **PR #146 open** — shared JobCard/AgendaRow/Pill/SectionHeading + clamped balance, stacked on #145 | | 9 | `refactor/tui-shared-rows` | #131 #126 | **PR #147 open** — rows.go (itemLine/eventLine/rewardLine/worthOf/listBlock), stacked on #146 | | 10 | `feat/job-card-redesign` | #107 | **PR #148 open** — stacked action-bar card on web+Android, stacked on #147 | | 11 | `feat/sub-verb-affordances` | #135 | **PR #149 open** — Update.other/Claim.other/ExportUserData.other rows + web/Android re-gate, stacked on #148 | | 12 | `feat/web-admin-matrix` | #134 | **PR #150 open** — useAdminAccess tab verbs + Family per-verb split (+UserService/Update.other row), stacked on #149 | | 13 | `feat/tui-matrix` | #136 | **PR #151 open** — GetPermissionMatrix client + appCtx.can() + four-tab re-gate + verb-aware help, stacked on #150 | | 14 | `feat/cli-tui-tier-gaps` | #132 | **PR #152 open** — list/meal/rota/notification groups + system mcp/release-notes + TUI Meals tab, stacked on #151 | | 15 | `feat/mcp-tier-gaps` | #133 | **PR #153 open** — audit_log/update_item/set_repeat/uncheck_list/set_rota_timezone, stacked on #152 | | 16 | `feat/android-notification-kinds` | #116 | **PR #154 open** — the 7 missing kind toggles, stacked on #153 | | 17 | `feat/android-theme-workshop` | #127 | **PR #155 open** — custom-theme rendering + text-size control (editor stays web, recorded), stacked on #154 | | 18 | `feat/subtask-todo` | #111 | **PR #156 open** — step-job on assignee's Mine boards (web+Android+TUI), stacked on #155 | | 19 | `feat/event-types` | #109 | **PR #157 open** — ADR-0034 General/Reminder on all surfaces, stacked on #156 | | 20 | `feat/calendar-marks` | #108 | **PR #158 open** — mark symbols on wide grid + day view, stacked on #157 | | 21 | `fix/android-visual-polish` | #128 | **PR #159 open** — save arc, skeletons, themed toast, dress details, stacked on #158; current tip. **Stack complete: every open issue has a PR (#138–#159).** | Stack rules: 1. Open a PR only when its branch has commits. Base it on the branch below it in this table (or `main` when everything below is merged). 2. Merge bottom-first, fast-forward, as soon as a PR is green. Do not hold the whole stack for the top. 3. If an entry needs a different split when the work starts, edit this table first, then branch. ## Phase 1 — User-reported bugs (PRs 1–3) These block daily use, so they go first. - [x] #112 — User sessions: password prompt despite PIN, phantom sessions, delete does not log out → PR 1 - [x] #110 — Rewards: cannot edit or delete a reward that is linked to a job → PR 2 - [x] #115 — List rename is unreachable on web and Android (a gap on the reference surface) → PR 3 ## Phase 2 — Small parity-defect fixes (PRs 4–6) Quick corrections from the 2026-08-18 parity report, grouped by surface so one PR carries each cluster. - [x] #113 — MCP: `complete_item` cannot reopen an item → PR 4 - [x] #120 — MCP: rota writes take no `acting_user` → PR 4 - [x] #121 — MCP: `update_event` cannot clear description or location → PR 4 - [x] #114 — CLI: logout does not revoke the server session; add `session list` / `session revoke` → PR 5 - [x] #118 — CLI: completion flips send an empty audited `Update` → PR 5 - [x] #119 — CLI: cannot put an item on a list → PR 5 - [x] #124 — Android: Up-for-grabs rows break the danger rule → PR 6 - [x] #125 — Android: reduced motion removes the celebration state → PR 6 - [x] #117 — Cleanups: stale `UncheckAll` proto comment, dead `isManager` binding → PR 6 Not in this phase: #122, #123 and #126 are also defects, but their fixes are "define one shared function" — they land inside the Phase 3 consolidation PRs instead of twice. ## Phase 3 — Shared entity components (PRs 7–10) Do this before the client re-gating in Phase 4, so permission gates get written once into the shared components instead of into every fork. - [x] #129 — Web: shared entity components (reference surface — decides the component shapes) → PR 7 - [x] #123 — Web: one weekday-name source → PR 7 - [x] #122 — One balance function and one clamping decision per surface → PRs 7 + 8 - [x] #130 — Android: shared entity components (ports the PR 7 decisions) → PR 8 - [x] #131 — TUI: shared row renderers → PR 9 - [x] #126 — TUI: reward enum leak and bounty math disagreement → PR 9 - [x] #107 — My Jobs card redesign (restyle the shared `JobCard` once, not the forks) → PR 10 ## Phase 4 — Matrix-derived affordances (PRs 11–13) The ADR and matrix rows for #135 can start any time. The client re-gating waits for Phase 3. - [x] #135 — Promote manager-tier guards to sub-verb rows (ADR + server rows first, then re-gate web and Android) → PR 11 - [x] #134 — Web: gate the admin surface on the matrix, not `isAdmin` → PR 12 - [x] #136 — TUI: adopt `GetPermissionMatrix` affordances → PR 13 ## Phase 5 — Tier gaps (PRs 14–17) Capability additions per surface tier. Each needs either an implementation or a recorded deliberate-gap decision. - [x] #132 — CLI/TUI: meals, rota, lists, notifications, `mcp_enabled`, release notes → PR 14 (or a sub-stack) - [x] #133 — MCP: `AuditLog`, item editing, `UncheckAll`, rota time zone → PR 15 - [x] #116 — Android: full 14-kind notification toggle list → PR 16 - [x] #127 — Android: custom theme workshop and text-size control → PR 17 ## Phase 6 — Features and polish (PRs 18–21) - [x] #111 — Jobs: subtask assignment surfaces the job on the assignee's todo → PR 18 - [x] #109 — Calendar: `Reminder` and `Event` types (proto change — needs its design settled first) → PR 19 - [x] #108 — Calendar: member marks on the large-screen month and day views → PR 20 - [x] #128 — Android: remaining visual-polish divergences → PR 21 ## Notes - The web leads in each phase (system rule 1: web is the reference surface). Android, MCP and CLI follow against their tier. - When a decision records a deliberate gap instead of an implementation, the commit message carries the decision (system rule 1). - Every PR passes `make check` and a live `make deploy` verification before merge (system rule 5).
Author
Owner

The whole order of work is delivered: PRs #138 through #159 merged bottom-first into main, CI green on every one. All thirty tracked issues (#107–#136) are closed — most by the merge keywords, the multi-issue PRs' secondary halves (#117–#123, #125, #126) closed by hand with pointers to their delivering PRs. Deliberate gaps stayed recorded in the commits and PR bodies per rule 1 (Android sheets stay bottom sheets, splash keeps Hearth, rota editing lives at the CLI tier, TUI admin keys/webhooks stay CLI). Closing the tracker.

The whole order of work is delivered: PRs #138 through #159 merged bottom-first into main, CI green on every one. All thirty tracked issues (#107–#136) are closed — most by the merge keywords, the multi-issue PRs' secondary halves (#117–#123, #125, #126) closed by hand with pointers to their delivering PRs. Deliberate gaps stayed recorded in the commits and PR bodies per rule 1 (Android sheets stay bottom sheets, splash keeps Hearth, rota editing lives at the CLI tier, TUI admin keys/webhooks stay CLI). Closing the tracker.
nalum closed this issue 2026-08-18 16:47:30 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
eagraiclainne/app#137
No description provided.