policy: no ticket delivered no merge, and the author cannot approve their own work #27

Merged
larandar merged 1 commit from agent.teyla/Jostoph:tango/23-laws-9-and-11 into main 2026-08-11 20:26:29 +00:00
Contributor

In scope — the two verifications the rules could hold today without new payload signals or a token: law 9's delivery floor and law 11's self-approval ban, as ascent! rules in src/policy.rs with their parameters crystallized in nix/policy.nix (schema 3 → 4).

Out of scope — law 13's tracker transitions (#25: conflicted needs an executor-failure signal and blocked needs dependency edges no webhook carries) and the executor itself (#26). One session, one PR: those are different perimeters, delivered apart.

Boundary — rule logic and parameters only; the steward still answers and never acts. Reads nothing beyond the webhook payload already delivered.

Acceptance, as it ran:

  • A PR body ending Closes #23 is deliverable; Refs #23 alone is denied, with a declared comment citing law 9; a bare Closes nothing: (no reason) does not pass; the keyword buried in prose does not count; an edit adding the line clears the denial.
  • A self-approval declares no merge and a denial that says why; the same approval by anyone else merges exactly as before.
  • cargo test (39 passed), cargo clippy -D warnings, cargo fmt --check, and nix flake check (policy-matches-checkout included) all green.

Closes #23
Closes #24

**In scope** — the two verifications the rules could hold today without new payload signals or a token: law 9's delivery floor and law 11's self-approval ban, as `ascent!` rules in `src/policy.rs` with their parameters crystallized in `nix/policy.nix` (schema 3 → 4). **Out of scope** — law 13's tracker transitions (#25: `conflicted` needs an executor-failure signal and `blocked` needs dependency edges no webhook carries) and the executor itself (#26). One session, one PR: those are different perimeters, delivered apart. **Boundary** — rule logic and parameters only; the steward still answers and never acts. Reads nothing beyond the webhook payload already delivered. **Acceptance**, as it ran: - A PR body ending `Closes #23` is deliverable; `Refs #23` alone is denied, with a declared comment citing law 9; a bare `Closes nothing:` (no reason) does not pass; the keyword buried in prose does not count; an edit adding the line clears the denial. - A self-approval declares no merge and a denial that says why; the same approval by anyone else merges exactly as before. - `cargo test` (39 passed), `cargo clippy -D warnings`, `cargo fmt --check`, and `nix flake check` (policy-matches-checkout included) all green. Closes #23 Closes #24
larandar force-pushed tango/23-laws-9-and-11 from 2a0b76fcee to 5a118d95df 2026-08-11 20:18:55 +00:00 Compare
larandar deleted branch tango/23-laws-9-and-11 2026-08-11 20:26:29 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 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!27
No description provided.