guard: allowlist the pure-toggle DELETE endpoints the raw passthrough may pass #774
Labels
No labels
breaking
bug
documentation
enhancement
epic
good first issue
help wanted
refactoring
resolution/duplicate
resolution/invalid
resolution/wontfix
security
severity/critical
severity/high
severity/low
severity/medium
status/abandoned
status/blocked
status/needs-decision
status/needs-info
status/needs-verification
testing
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sixfold-space/madtea#774
Loading…
Add table
Add a link
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?
Follow-up from #654. #654 declares every raw spec DELETE endpoint as
unrecoverable-destroy, so the raw API passthrough (#668) refuses every raw
delete and points to the vetted first-class op or raw git. That fail-closed
default ships in v0.20.0 and stays the default here.
The refinement, deferred to its own decision: many DELETE endpoints are pure
toggles, not data destruction - unsubscribe, unfollow, unstar, unlock, unpin,
cancel-auto-merge, remove-member, remove-reaction. Refusing those through the
passthrough is stricter than the data they touch warrants.
What to decide and build:
effect, so the passthrough passes them, while every data-destroying delete
(repo, issue, release, tag, wiki, label, milestone, comment, attachment,
webhook, key, note, branch, ...) stays refused.
unrecoverable-destroy.
This needs a per-endpoint recoverability judgment on the ~89 vendored DELETE
endpoints, where the config-delete vs toggle line is fuzzy and the ADRs never
classified raw spec endpoints. That makes it a trust-boundary decision, not a
mechanical change.
Relates to #654 (the effect declarations), #668 (the passthrough), ADR 0029.