Either person can schedule an Item; only its author can reword it¶
Superseded by ADR-0006. The Circle now owns its Items and every Member may reword and delete any of them;
created_byis provenance only. Kept because the reasoning below — and its admission that the rule began as an accident — is the clearest evidence for why it was replaced.
Ownership on an Item is deliberately asymmetric. update_item and delete_item raise
PermissionDenied unless the actor created the Item; schedule_item and mark_item_done
accept either person.
The app is shared by two people who are planning together. Putting Friday at 7pm on your partner's restaurant idea is the app working as intended; rewriting their note about it is not. Ownership therefore protects an Item's words, not its progress through Open → Scheduled → Done.
Consequences¶
mark_item_donetakes anactorit never reads. That is intentional: every operation is attributable, and the parameter is where a future rule or notification would hook in. It is not an oversight to be tidied away.- Before this was written down, the rule existed only by accident — two of the four mutating views checked ownership and two didn't. Anyone auditing those views would have read it as a bug. It wasn't.
item_deletestill narrows its queryset withcreated_by=request.user, so over HTTP a non-creator gets a 404 beforedelete_itemcan raise 403. The rule lives in the module regardless, for callers that aren't views.