guard: declare the effects of every operation and every spec endpoint #654

Closed
opened 2026-09-29 16:37:06 +00:00 by hexajon · 1 comment
Owner

What to build

  • Each first-class operation declares its effects in the operation registry (ADR 0008).
  • Each endpoint in the vendored Forgejo and Gitea specs in docs/api-specs/ has its effects declared, keyed by method and path.
  • The gate fails on an operation or an endpoint with no declaration. A spec refresh that adds an endpoint must declare its effects in the same change.

This is the mechanism #572 asks for, widened from deletes to every effect the guard knows.

Depends on

  • #538, because the vendored specs must come from the live forges, so that every endpoint in them is real and current.

Acceptance

  • Removing one declaration fails the gate, and the failure names the operation or the endpoint.
  • The ADR 0029 table, docs/reference/destructive.md, and the parity pin test can read the declarations.
## What to build - Each first-class operation declares its effects in the operation registry (ADR 0008). - Each endpoint in the vendored Forgejo and Gitea specs in `docs/api-specs/` has its effects declared, keyed by method and path. - The gate fails on an operation or an endpoint with no declaration. A spec refresh that adds an endpoint must declare its effects in the same change. This is the mechanism #572 asks for, widened from deletes to every effect the guard knows. ## Depends on - #538, because the vendored specs must come from the live forges, so that every endpoint in them is real and current. ## Acceptance - Removing one declaration fails the gate, and the failure names the operation or the endpoint. - The ADR 0029 table, `docs/reference/destructive.md`, and the parity pin test can read the declarations.
Author
Owner

The v0.20.0 breaking set is complete and green on main. The code landed across the v0.20.0 branches, the full local gate passes, and the forge suite is green on both forges at both pinned versions on current main (31693766). Closing as done.

The v0.20.0 breaking set is complete and green on main. The code landed across the v0.20.0 branches, the full local gate passes, and the forge suite is green on both forges at both pinned versions on current main (31693766). Closing as done.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
sixfold-space/madtea#654
No description provided.