Recovery fix under issue 1966 (notes 86-89), recovery-fixes-merge-and-tell.
Cause.#632 wrote the forge's store pool cap (MAX_OPEN_CONNS 40, MAX_IDLE_CONNS 10, CONN_MAX_LIFETIME 5m) as literals into modules/gitea/files/server.env, an env-file docker reads only when the container is created. The container server names no restart-on, so the delivery to novox at 03:20 local wrote the file and left the running container as it was: docker_inspect shows no GITEA__database__MAX_OPEN_CONNS in its environment, and the forge held 55-67 of the store's 100 connections in bursts.
Change. The shape ADR 0348 decides: three gitea config values (database-max-open-connections 40, database-max-idle-connections 10, database-connection-lifetime 5m, not trusted, each describing the store's shared 100 connections), placed into server.env with ${config:...}; the container server declares restart-on: ["server-env"], so a changed value recreates it (mesh-host's apply recreates a container for a changed restart-on resource). Changing the cap is then one mesh-config.config set.
Evidence. pool-cap.test.ts proves the placements, defaults and restart-on, and fails with either part taken out; gitea's 217 tests pass; the manifest validator (mesh-delivery main 68581be, with the 60 seat definitions) accepts all 144 manifests in the change and the trunk alike.
Undo. Revert this merge; the literals of #632 return.
Reviewed-by: mesh-code-reviewer@shanks at 4becc7bd83
Recovery fix under issue 1966 (notes 86-89), recovery-fixes-merge-and-tell.
**Cause.** #632 wrote the forge's store pool cap (MAX_OPEN_CONNS 40, MAX_IDLE_CONNS 10, CONN_MAX_LIFETIME 5m) as literals into `modules/gitea/files/server.env`, an env-file docker reads only when the container is created. The container `server` names no `restart-on`, so the delivery to novox at 03:20 local wrote the file and left the running container as it was: `docker_inspect` shows no `GITEA__database__MAX_OPEN_CONNS` in its environment, and the forge held 55-67 of the store's 100 connections in bursts.
**Change.** The shape ADR 0348 decides: three gitea config values (`database-max-open-connections` 40, `database-max-idle-connections` 10, `database-connection-lifetime` 5m, not trusted, each describing the store's shared 100 connections), placed into `server.env` with `${config:...}`; the container `server` declares `restart-on: ["server-env"]`, so a changed value recreates it (mesh-host's apply recreates a container for a changed restart-on resource). Changing the cap is then one `mesh-config.config` set.
**Evidence.** pool-cap.test.ts proves the placements, defaults and restart-on, and fails with either part taken out; gitea's 217 tests pass; the manifest validator (mesh-delivery main 68581be, with the 60 seat definitions) accepts all 144 manifests in the change and the trunk alike.
**Undo.** Revert this merge; the literals of #632 return.
Reviewed-by: mesh-code-reviewer@shanks at 4becc7bd83125880ec001a84a5d115e2b3d551e2
https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
The caps were literals in server.env and the container named no restart-on, so a changed env-file never reached the running forge. They are now three gitea config values placed with ${config:...}, and the server container restarts on server-env.
Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
Deliverynovox/mesh-catalog@4becc7bd8312 — merged since 2026-11-08T03:41:33Z
Source — source.main moved to novox/mesh-catalog@53d173aa7d. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
Transitions
2026-11-08 02:50 (new) → proposed (announced): novox/mesh-catalog#633's head announced
2026-11-08 02:50 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
2026-11-08 03:41 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under refs/notes/mesh-plan keeps every transition of this change up to its merge: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-catalog@4becc7bd8312` — **merged** since 2026-11-08T03:41:33Z
**Source** — source.main moved to novox/mesh-catalog@53d173aa7de5. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Transitions**
- 2026-11-08 02:50 (new) → proposed (announced): novox/mesh-catalog#633's head announced
- 2026-11-08 02:50 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
- 2026-11-08 03:41 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under `refs/notes/mesh-plan` keeps every transition of this change up to its merge: `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.
Recovery fix under issue 1966 (notes 86-89), recovery-fixes-merge-and-tell.
Cause. #632 wrote the forge's store pool cap (MAX_OPEN_CONNS 40, MAX_IDLE_CONNS 10, CONN_MAX_LIFETIME 5m) as literals into
modules/gitea/files/server.env, an env-file docker reads only when the container is created. The containerservernames norestart-on, so the delivery to novox at 03:20 local wrote the file and left the running container as it was:docker_inspectshows noGITEA__database__MAX_OPEN_CONNSin its environment, and the forge held 55-67 of the store's 100 connections in bursts.Change. The shape ADR 0348 decides: three gitea config values (
database-max-open-connections40,database-max-idle-connections10,database-connection-lifetime5m, not trusted, each describing the store's shared 100 connections), placed intoserver.envwith${config:...}; the containerserverdeclaresrestart-on: ["server-env"], so a changed value recreates it (mesh-host's apply recreates a container for a changed restart-on resource). Changing the cap is then onemesh-config.configset.Evidence. pool-cap.test.ts proves the placements, defaults and restart-on, and fails with either part taken out; gitea's 217 tests pass; the manifest validator (mesh-delivery main 68581be, with the 60 seat definitions) accepts all 144 manifests in the change and the trunk alike.
Undo. Revert this merge; the literals of #632 return.
Reviewed-by: mesh-code-reviewer@shanks at
4becc7bd83https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
The caps were literals in server.env and the container named no restart-on, so a changed env-file never reached the running forge. They are now three gitea config values placed with ${config:...}, and the server container restarts on server-env. Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5Delivery
novox/mesh-catalog@4becc7bd8312— merged since 2026-11-08T03:41:33ZSource — source.main moved to novox/mesh-catalog@53d173aa7d. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.