Verify law 13: the steward moves the tracker states it owns (in-review, conflicted) and derives blocked #25

Open
opened 2026-08-11 16:05:16 +00:00 by agent.teyla · 2 comments
Contributor

In scope

Declared effects in src/policy.rs for the label transitions law 13 assigns to the steward:

  • in-review on every ticket a PR body closes (not just the lead one), when the PR opens against fastlane.
  • conflicted when the steward's declared rebase/update of a PR fails, with evidence in a comment; back to in-review on the fix push.
  • blocked as a derived-only overlay from open Blocked by edges — never hand-set, purely informative.

Label names parameterized in nix/policy.nix.

Out of scope

  • Performing the label mutations (declared effects only, consistent with the answering perimeter).
  • The hand-set overlays (needs-decision) and the curated PR label — those have other movers.
  • Creating the labels on the forge — that is desired-state conformance (pipeline_labels on the forge-conformance trait).

Boundary

Depends on the law-9 body parsing (the set of tickets a PR closes) and on dependency edges if the payload carries them; where the webhook payload is insufficient, the rule declares what it would need rather than reaching for a token.

Acceptance

  • A PR opening with Closes #7 declares forgejo.label effects setting in-review on #7.
  • A failed declared update declares conflicted plus an evidence comment.
  • blocked is only ever derived; no rule accepts it as input from a hand-set label.
  • nix flake check passes.
## In scope Declared effects in `src/policy.rs` for the label transitions law 13 assigns to the steward: - `in-review` on every ticket a PR body closes (not just the lead one), when the PR opens against fastlane. - `conflicted` when the steward's declared rebase/update of a PR fails, with evidence in a comment; back to `in-review` on the fix push. - `blocked` as a **derived-only** overlay from open *Blocked by* edges — never hand-set, purely informative. Label names parameterized in `nix/policy.nix`. ## Out of scope - Performing the label mutations (declared effects only, consistent with the answering perimeter). - The hand-set overlays (`needs-decision`) and the `curated` PR label — those have other movers. - Creating the labels on the forge — that is desired-state conformance (`pipeline_labels` on the `forge-conformance` trait). ## Boundary Depends on the law-9 body parsing (the set of tickets a PR closes) and on dependency edges if the payload carries them; where the webhook payload is insufficient, the rule declares what it would need rather than reaching for a token. ## Acceptance - A PR opening with `Closes #7` declares `forgejo.label` effects setting `in-review` on #7. - A failed declared update declares `conflicted` plus an evidence comment. - `blocked` is only ever derived; no rule accepts it as input from a hand-set label. - `nix flake check` passes.
Contributor

Grooming state: Stale label vocabulary resolved; implementation ready.
Evidence: Ting/Ting#25 ratified the canonical organisation vocabulary and completed its cutover.
Scope correction: Declare Status/In Review, Status/Conflicted, and derived-only Status/Blocked instead of the unprefixed names in this body. Keep needs-decision semantically distinct from Status/Need More Info.
Delivery boundary: Declared effects and tests only; performing label mutations remains out of scope.

<!-- codexo:groom:v1 --> **Grooming state:** Stale label vocabulary resolved; implementation ready. **Evidence:** [Ting/Ting#25](https://jo.et0.pw/Ting/Ting/issues/25) ratified the canonical organisation vocabulary and completed its cutover. **Scope correction:** Declare Status/In Review, Status/Conflicted, and derived-only Status/Blocked instead of the unprefixed names in this body. Keep needs-decision semantically distinct from Status/Need More Info. **Delivery boundary:** Declared effects and tests only; performing label mutations remains out of scope.
Owner

Audit 2026-09-19/20, G23: reconcile this record and its implementation to the ratified Status/* vocabulary from grooming comment 6802 and Ting/Ting#25. Replace stale in-review, conflicted, and blocked terminology with Status/In Review, Status/Conflicted, and derived-only Status/Blocked; keep Status/Need More Info distinct from needs-decision semantics. This comment records the required body/label reconciliation without reopening the ratified vocabulary.

<!-- larandar:groom:v1 --> Audit 2026-09-19/20, G23: reconcile this record and its implementation to the ratified Status/* vocabulary from grooming comment 6802 and Ting/Ting#25. Replace stale `in-review`, `conflicted`, and `blocked` terminology with `Status/In Review`, `Status/Conflicted`, and derived-only `Status/Blocked`; keep `Status/Need More Info` distinct from needs-decision semantics. This comment records the required body/label reconciliation without reopening the ratified vocabulary.
Sign in to join this conversation.
No milestone
No project
No assignees
3 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Ting/Jostoph#25
No description provided.