policy: declare the label the rules read, and answer on one comment #20
No reviewers
Labels
No labels
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Meta/Campaign
Meta/Epic
Meta/Session
Priority/Critical
Priority/High
Priority/Low
Priority/Medium
Reviewed/Confirmed
Reviewed/Curated
Reviewed/Duplicate
Reviewed/Invalid
Reviewed/Won't Fix
Scope/Campaign
Status/Abandoned
Status/Blocked
Status/Conflicted
Status/In Progress
Status/In Review
Status/Need Grooming
Status/Need More Info
Status/Ready
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Blocks
Depends on
You do not have permission to read 1 dependency
Reference
Ting/Jostoph!20
Loading…
Reference in a new issue
No description provided.
Delete branch "tango/curated-and-standing"
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?
Three things asked for by the owner on 2026-08-11, and the first two turn out to be one thing. Built on #19, which merged while this was being written.
In scope
curatedlabel is declared, so that it exists.nix/forgejo.nixcarries it as org-level desired state beside the repos, mirrors and webhook — in Forgejo's own field names, reconciled by the same thing that reconciles the rest. Org-level rather than per-repo, for the same reason the webhook is namespace-scoped: it covers repositories born later.nix/policy.nixtakescurated_labelfromnix/forgejo.nixinstead of spelling it a second time — exactly the couplingmergeStylesalready has, and for the same reason. Eval fails if policy names a label the declaration lacks;nix flake checkfails if the label is declared without a description, because a bare label tells a reviewer nothing about what asserting it commits them to.rebase, still drawn from the repos' own allow-set, so neither can name a style the forge refuses.<!-- jostoph:standing -->), and its declaration asks to be upserted: an executor edits the comment carrying the marker, and posts only when there is none. The body is an aggregate over every conclusion about that subject — two missing sections are one comment naming both, not two comments racing to be the last word, which is what this replaces. Sorted and deduplicated, so an unchanged standing writes identical bytes and "nothing changed" is a comparison rather than a guess.repositoryandindex. The old one named neither: as declared it was unpostable.The aggregate is a second
ascent!program,Standing, run after the rules — an aggregate says what it means only over a relation that has stopped growing, and inside the rule setconclusionis still being derived. Same shape as the substrate's own dispatch-then-resolution.Out of scope
curated.lar.adcarries the same meaning asReviewed/Curated; unifying the two across the estate is a decision for whoever owns both, not a side effect of this file.rebase, still upstreamed fromlar.ad/flake-ops'sapp.ini. If "squash unless curated" should also be what a human gets clicking merge unaided, that is a change to the instance default and belongs in flake-ops — made here it would only disagree with the instance and fail the check that exists to catch exactly that.nix/forgejo.nix.Boundary
nix/forgejo.nix(the label, and rendering it),nix/policy.nix(reads it; two new assertions),flake.nix(one check),src/policy.rs(the standing comment),README.md. No change to standing, protected refs, required sections, the merge styles themselves, mirrors, or the NixOS module.Acceptance
Verified locally, not argued:
nix flake checkpasses, including the new label check and the module eval.cargo clippy --all-targets -- -D warningsis clean.nix build .#policystill renderscurated_label: "curated", sopolicy/ting.jsonis unchanged and the drift check stays quiet.Depends on lar.ad/jostoph-rs#5
Against the currently pinned substrate
nix flake checkfails here, correctly:One comment asked for by two findings is one comment only once
resolvekeeps the carried-effect set a set — which is jostoph-rs#5. With--override-input jostoph-rs path:…on that branch, all checks pass. So: land jostoph-rs#5, let the mirror carry it,nix flake update jostoph-rs, then this.Writing this is also what surfaced the other half of that PR: an approval from a login the estate does not recognize was denied and had its merge declared anyway.
Authored as
agent.odin.