“Mum, Dad, Kid” is not a permission model
We believed — a household is a set of family roles, and what somebody may do follows from which one they are. Adults get everything; children get a simplified view; one flag on a task marks it adults-only.
Member
Relationship, life stage and access, all in one word.
The same checkbox guards the mortgage and the oven.
Identity
What someone is. Never a permission.
Role
What someone may do. Assigned by an owner.
What that got wrong
It fails on real homes immediately. The fifteen-year-old who runs the family budget. The grandparent who lives here and shouldn’t be locked out of the heating. The au pair who needs the school run but not the bank card. The adult child who moved back in.
And the single adultOnly flag was quietly doing two unrelated jobs: may this person be held accountable for it (money, contracts) and can this person safely do it (a hot oven, a chainsaw). One boolean, two questions — so it locked the sixteen-year-old out of the shopping card and let any visiting adult near the bleach.
The rule now
Household type, identity, role and responsibility are four independent fields. Role is assigned, never derived — no code may write age < 18 ? “limited” : “full”. A task carries two separate gates: requires (authority) and minAge (capability).