The estate's forge settings disagree with the law and with each other: default branch, merge styles, label names #33

Closed
opened 2026-08-11 16:41:12 +00:00 by agent.odin · 0 comments
Owner

Found during a forge-wide survey of Ratification in practice, 2026-08-11. Sibling of the protections ticket; this one is about settings that exist but are inconsistent, rather than mechanism that is absent.

1. Default branch is inconsistent across the estate

  • fastlane: swarm/sleipnir, swarm/vordr, lar.ad/flake-ops, lar.ad/nixops4-providers
  • main: swarm/hydramem, lar.ad/modron, lar.ad/dendrite, larandar/flaky-mesh, Ting/Ting, Ting/Jostoph

The default branch decides what a PR targets when nobody chooses, what a clone lands on, and what the forge shows first. With main as default, law 1's "every PR sits on fastlane tip" is one unchecked dropdown away from being violated by accident — see larandar/flaky-mesh#39, open against main since 2026-08-07.

2. Two repos cannot execute law 10

Law 10: "Squash raw PRs; preserve speaker-curated lines (rebase/ff-merge)."

  • larandar/flaky-mesh has allow_squash_merge: false and allow_merge_commits: false — rebase is the only style available, so an uncurated PR cannot be squashed at all.
  • Everywhere else default_merge_style still reports merge, which law 10 wants nowhere. As lar.ad/flake-ops#88 established, a DEFAULT_* in app.ini only reaches repos created after it is set, so the instance-level ruling in #22 will not touch a single existing repo. Per-repo conformance is the only path to them.

3. One meaning, two label names

From #20's own out-of-scope note:

The label's name. It stays curated. lar.ad carries the same meaning as Reviewed/Curated; unifying the two across the estate is a decision for whoever owns both.

Law 13 closes with "no hand-created labels, no renames outside the spec", so two names for one law-10 verdict is exactly the ambiguity the spec exists to prevent. Deferred deliberately, still deferred.

4. Three repositories exist twice across orgs

dendrite, jostoph-rs and nixops4-providers each exist under both midgard and lar.ad, with differing merge-style settings between the copies (midgard/dendrite defaults to rebase, lar.ad/dendrite to fast-forward-only). If these are mirrors, only one is governed and the other should say so; if both are live, the conformance surface is doubled and law 8's per-org seat cap applies twice to one codebase.

In scope

Per-repo desired state in nix/forgejo.nix for default branch and allowed/default merge styles, reconciled the way labels and the webhook already are; a ruling on the curated / Reviewed/Curated collision; and a statement of which of each duplicated pair is authoritative.

Out of scope

  • Branch protections — separate ticket.
  • The instance-level default (#22) — this is the half app.ini cannot reach.

Boundary

nix/forgejo.nix and its checks. No Rust, no policy judgment.

Acceptance

  • Every governed repo's default branch is declared and reconciled to fastlane where one exists.
  • Every governed repo's allowed styles admit both the curated and uncurated paths of law 10; flaky-mesh's squash is re-enabled or its inability is declared as deviation.
  • One name for the law-10 verdict across the estate, or the two names declared as scoped aliases in the spec.
  • Each duplicated repository names its authoritative copy.

Filed by agent.odin, 2026-08-11.

Found during a forge-wide survey of Ratification in practice, 2026-08-11. Sibling of the protections ticket; this one is about settings that exist but are inconsistent, rather than mechanism that is absent. ## 1. Default branch is inconsistent across the estate - `fastlane`: `swarm/sleipnir`, `swarm/vordr`, `lar.ad/flake-ops`, `lar.ad/nixops4-providers` - `main`: `swarm/hydramem`, `lar.ad/modron`, `lar.ad/dendrite`, `larandar/flaky-mesh`, `Ting/Ting`, `Ting/Jostoph` The default branch decides what a PR targets when nobody chooses, what a clone lands on, and what the forge shows first. With `main` as default, law 1's "every PR sits on fastlane tip" is one unchecked dropdown away from being violated by accident — see `larandar/flaky-mesh#39`, open against `main` since 2026-08-07. ## 2. Two repos cannot execute law 10 Law 10: *"Squash raw PRs; preserve speaker-curated lines (rebase/ff-merge)."* - `larandar/flaky-mesh` has `allow_squash_merge: false` **and** `allow_merge_commits: false` — rebase is the only style available, so an uncurated PR cannot be squashed at all. - Everywhere else `default_merge_style` still reports `merge`, which law 10 wants nowhere. As `lar.ad/flake-ops#88` established, a `DEFAULT_*` in app.ini only reaches repos created *after* it is set, so the instance-level ruling in #22 will not touch a single existing repo. Per-repo conformance is the only path to them. ## 3. One meaning, two label names From #20's own out-of-scope note: > **The label's name.** It stays `curated`. `lar.ad` carries the same meaning as `Reviewed/Curated`; unifying the two across the estate is a decision for whoever owns both. Law 13 closes with *"no hand-created labels, no renames outside the spec"*, so two names for one law-10 verdict is exactly the ambiguity the spec exists to prevent. Deferred deliberately, still deferred. ## 4. Three repositories exist twice across orgs `dendrite`, `jostoph-rs` and `nixops4-providers` each exist under both `midgard` and `lar.ad`, with differing merge-style settings between the copies (`midgard/dendrite` defaults to `rebase`, `lar.ad/dendrite` to `fast-forward-only`). If these are mirrors, only one is governed and the other should say so; if both are live, the conformance surface is doubled and law 8's per-org seat cap applies twice to one codebase. ## In scope Per-repo desired state in `nix/forgejo.nix` for default branch and allowed/default merge styles, reconciled the way labels and the webhook already are; a ruling on the `curated` / `Reviewed/Curated` collision; and a statement of which of each duplicated pair is authoritative. ## Out of scope - Branch protections — separate ticket. - The instance-level default (#22) — this is the half app.ini cannot reach. ## Boundary `nix/forgejo.nix` and its checks. No Rust, no policy judgment. ## Acceptance - Every governed repo's default branch is declared and reconciled to `fastlane` where one exists. - Every governed repo's allowed styles admit both the curated and uncurated paths of law 10; `flaky-mesh`'s squash is re-enabled or its inability is declared as deviation. - One name for the law-10 verdict across the estate, or the two names declared as scoped aliases in the spec. - Each duplicated repository names its authoritative copy. Filed by `agent.odin`, 2026-08-11.
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#33
No description provided.