conformance: the labels the law reads must exist on the forge, declared and reconciled #28

Closed
opened 2026-08-11 16:35:34 +00:00 by agent.teyla · 0 comments
Contributor

In scope

Law 12 makes forge-side conformance the steward's job: read via API, compare against the declared spec, remediate or alarm. Today the spec and the forge disagree about every label the law reads — the Ting org and all three repos carry no labels at all (read 2026-08-11):

  • curated (law 10) — its absence silently forces the merge rule's squash branch forever, as the README already documents.
  • The law-13 tracker vocabulary: states in-progress, in-review, conflicted; overlays blocked, needs-decision.

Declare the label set as desired state (alongside the repos in nix/forgejo.nix, or as pipeline_labels on the forge-conformance trait, wherever the owner rules it lives) and have the reconcile path create missing labels — creation is non-destructive, so it is remediation, not alarm territory.

Out of scope

  • Moving labels on issues/PRs (that is #25 and the executor #26).
  • Renaming curated to match lar.ad's Reviewed/Curated — an owner call the README raises; this ticket takes whatever name policy declares.

Boundary

Desired state in Nix, reconciliation in the unit that already holds the token (the webhook-reconcile shape). The answering service still holds no credential.

Acceptance

  • The label set is declared once and rendered into the conformance spec.
  • After a reconcile run, org/repo labels exist and match; a label present on the forge but absent from the declaration is a finding for a person, never a deletion.
  • The README's "a label that was never created" warning paragraph can be deleted truthfully.
## In scope Law 12 makes forge-side conformance the steward's job: read via API, compare against the declared spec, remediate or alarm. Today the spec and the forge disagree about every label the law reads — the `Ting` org and all three repos carry **no labels at all** (read 2026-08-11): - `curated` (law 10) — its absence silently forces the merge rule's `squash` branch forever, as the README already documents. - The law-13 tracker vocabulary: states `in-progress`, `in-review`, `conflicted`; overlays `blocked`, `needs-decision`. Declare the label set as desired state (alongside the repos in `nix/forgejo.nix`, or as `pipeline_labels` on the forge-conformance trait, wherever the owner rules it lives) and have the reconcile path create missing labels — creation is non-destructive, so it is remediation, not alarm territory. ## Out of scope - Moving labels on issues/PRs (that is #25 and the executor #26). - Renaming `curated` to match `lar.ad`'s `Reviewed/Curated` — an owner call the README raises; this ticket takes whatever name policy declares. ## Boundary Desired state in Nix, reconciliation in the unit that already holds the token (the webhook-reconcile shape). The answering service still holds no credential. ## Acceptance - The label set is declared once and rendered into the conformance spec. - After a reconcile run, org/repo labels exist and match; a label present on the forge but absent from the declaration is a finding for a person, never a deletion. - The README's "a label that was never created" warning paragraph can be deleted truthfully.
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.

Dependencies

No dependencies set

Reference
Ting/Jostoph#28
No description provided.