Proxy verbs: promote manager-tier guards to sub-verb rows, re-gate clients #135
Labels
No labels
adr
android
area/calendar
area/design-system
area/i18n
area/jobs
area/offline
area/server
area/testing
bug
ci
duplicate
enhancement
help wanted
invalid
notifications
question
reliability
security
severity/low
severity/medium
tracking
web
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
eagraiclainne/app#135
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
From the RBAC matrix breakdown (2026-08-16), findings 2 and 4.
Both clients elect one verb to "stand for the manager tier" and gate actions it does not name. These break silently if the matrix ever splits a role's verbs, and web and Android even disagree on which wrong verb to use.
Web proxies:
Jobs.tsx:224/Today.tsx:162(ItemService/Deletegates edit mode, owner reassign, step points → RewardService/Create cross-service),ListDetail.tsx:45(ItemListService/Updategates UncheckAll, Delete, entry reassign, convert-to-job),Meals.tsx:62-63,Rewards.tsx:88.Android proxies:
ItemSheets.kt:227/Jobs.kt:80,Home.kt:507(divergence — proxies the list screen withCreatewhere web usesUpdate),ItemSheets.kt:1211,Rewards.kt:170,Meals.kt:76(divergence — meal edit gated onCreate; web correctly usesUpdate),Meals.kt:77.Proposed fix (extends ADR-0031, needs an ADR update): add sub-verb rows for the role-only halves so clients stop proxying:
RequireItemManager(replaces theItemService/Deleteproxy on three surfaces),Claim.otherfor admin-claims-on-behalf,ExportUserData.Then re-gate every proxy site on the verb it actually performs.