Fixes issue 1903's first step, the operator's ask (2026-10-23 15:58): the forge module rewrote every repository's main rule from rules fixed in its code, undoing what the operator set at the forge.
New setting keep-main-rules (boolean, default false).
With it false: the 10-minute tick and the start-time call write nothing; the token mint (setUpToolsAccount) writes nothing; repositories sync still makes new repositories, but changes no existing repository's protection and says so in its outcome.
With it true: today's behaviour.
Tests: a write counter and the fake forge prove no protection write with the setting false for the tick, the mint and the sync; the issue 948 tests run with it true.
The NATS-native shape (protection as declared state applied on a settings event, no timer) is the rest of the issue.
Reviewed-by: review-1903@shanks at 68dfca1057
Pushed-by: fix-gitea-reset@shanks
Fixes issue 1903's first step, the operator's ask (2026-10-23 15:58): the forge module rewrote every repository's main rule from rules fixed in its code, undoing what the operator set at the forge.
- New setting `keep-main-rules` (boolean, default **false**).
- With it false: the 10-minute tick and the start-time call write nothing; the token mint (setUpToolsAccount) writes nothing; `repositories sync` still makes new repositories, but changes no existing repository's protection and says so in its outcome.
- With it true: today's behaviour.
- Tests: a write counter and the fake forge prove no protection write with the setting false for the tick, the mint and the sync; the issue 948 tests run with it true.
The NATS-native shape (protection as declared state applied on a settings event, no timer) is the rest of the issue.
Reviewed-by: review-1903@shanks at 68dfca1057940ab6dc58289eeff5e8bdaa8fa810
Pushed-by: fix-gitea-reset@shanks
The operator, 2026-10-23: "disable the gitea branch protection reset thing". The 10-minute tick and the start-time
ensureMainMerges, and the repositories sync's changes to existing repositories' main rules, now run only when the new
setting is true; new repositories are still made. The sync says in its outcome that rules were left.
The operator, 2026-10-23: "disable the gitea branch protection reset thing". setUpToolsAccount (run at every token mint) called ensureMainMerges regardless; it now does so only when the setting is true.
Deliverynovox/mesh-catalog@68dfca105794 — delivered since 2026-10-23T15:17:19Z
Delivery plan — builds gitea → novox; no bus step
tier 0: gitea
novox: receives gitea
gitea provides npm-package-registry, git, gitea-read, forge-account: its consumers are sent again after it
gitea keeps data (ADR 0233): what it holds is backed up before it moves
Machines
gitea on every machine running it: sent
Transitions
2026-10-23 13:59 (new) → proposed (announced): novox/mesh-catalog#463's head announced
2026-10-23 14:46 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
2026-10-23 14:46 checked → rejected (refused): the gate failed or could not run, or the repository's own check failed
2026-10-23 15:14 rejected → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on
2026-10-23 15:14 held → delivering (release): the operator merged #463 by hand at the forge (17:14), reviewed at 68dfca10; its check stuck 'running' with no step (issue 734, diagnosed now): the gitea reset must be off before R4g touches gitea
2026-10-23 15:17 delivering → delivered (done): its walk is done, carrying its own commit: every machine of its deploy plan passed, or was left as its policy says
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-catalog@68dfca105794` — **delivered** since 2026-10-23T15:17:19Z
**Delivery plan** — builds gitea → novox; no bus step
- tier 0: gitea
- novox: receives gitea
- gitea provides npm-package-registry, git, gitea-read, forge-account: its consumers are sent again after it
- gitea keeps data (ADR 0233): what it holds is backed up before it moves
**Machines**
- gitea on every machine running it: sent
**Transitions**
- 2026-10-23 13:59 (new) → proposed (announced): novox/mesh-catalog#463's head announced
- 2026-10-23 14:46 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
- 2026-10-23 14:46 checked → rejected (refused): the gate failed or could not run, or the repository's own check failed
- 2026-10-23 15:14 rejected → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on
- 2026-10-23 15:14 held → delivering (release): the operator merged #463 by hand at the forge (17:14), reviewed at 68dfca10; its check stuck 'running' with no step (issue 734, diagnosed now): the gitea reset must be off before R4g touches gitea
- 2026-10-23 15:17 delivering → delivered (done): its walk is done, carrying its own commit: every machine of its deploy plan passed, or was left as its policy says
The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Fixes issue 1903's first step, the operator's ask (2026-10-23 15:58): the forge module rewrote every repository's main rule from rules fixed in its code, undoing what the operator set at the forge.
keep-main-rules(boolean, default false).repositories syncstill makes new repositories, but changes no existing repository's protection and says so in its outcome.The NATS-native shape (protection as declared state applied on a settings event, no timer) is the rest of the issue.
Reviewed-by: review-1903@shanks at
68dfca1057Pushed-by: fix-gitea-reset@shanks
Delivery
novox/mesh-catalog@68dfca105794— delivered since 2026-10-23T15:17:19ZDelivery plan — builds gitea → novox; no bus step
Machines
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.