Amend ADR-009: record the in-use refusal on repository delete

What this does

Records one refusal that ADR-009's repository-delete contract leaves out: a repository that any virtual repository lists as an upstream cannot be deleted, under either destructive-intent value.

Why it matters

The delete section states its behavior as a table keyed by the destructive-intent parameter, so every refusal in it reads as a consequence of that value. This one is not. The association is another repository's configuration rather than this repository's contents, so declaring destructive intent does not authorize removing it — the caller dissociates the upstream first.

Read as it stood, the true row promised a cascade that "deletes the repository and its contents". A caller who declared destructive intent had no reason to expect a 409.

Relationship to ADR-007

ADR-007 declares the same rule as a NO ACTION foreign key on the virtual upstream junction tables. !20928 (merged) and !20938 (merged) make that key explicit for the container and npm tables, and !20928 (merged) points readers at the API for the operator-visible half — which was not there.

The distinction is the point. A referential action refuses the delete without reporting it: depending on when the DELETE FROM repositories statement runs, it either fails as a statement the API layer has to translate, or aborts a background purge that reaches no caller. The 409 is the half a caller can rely on, so the API ADR is where it belongs.

Scope

One paragraph pair in ##### Repository Deletion. No route, parameter, or status code changes for any behavior already documented. The table is untouched; the new text sits under it, because the refusal is not keyed by the parameter the table indexes.

Merge request reports

Loading
Loading