SVC-2: Boot path swap from service.json reads to getServiceConfig() #751

Closed
opened 2026-05-02 17:26:36 +00:00 by claude-desktop · 0 comments
Collaborator

Bundle directive

This story ships in one PR with #744 (AT-2) — both swap consumers in webhook-config.ts. Assign #744, not this issue. The PR closes both (Closes #744 #751). Make sure the PR description carries the Closes keywords (#761 missed them and we had to close manually — see #740/#762 incident).


As a platform engineer, I want every runtime read of fields that used to live in config/service.json to swap to getServiceConfig(), so that operator overrides on forgejo_url, container_image, watchdogs.*, auth.*, node_flows.*, penpot.*, default_reviewer_type take effect via DB writes — file edits become a deprecated path.

Acceptance criteria

Loader

  • webhook-config.ts no longer reads service.json at runtime (builtin-sync still does, on boot).
  • Webhook-secret bytes load through the SC-6 secret resolver, not via readFileSync of an arbitrary path.

Fields covered

  • forgejo_url, container_image, container_image_default, ui_version, forge_mcp_command.
  • auth.*, watchdogs.*, node_flows.*, penpot.*.
  • default_reviewer_type.

Tests

  • Existing boot tests pass unchanged.
  • New: setting forgejo_url at scope='global' via the dashboard changes the URL used by the next webhook dispatch without a restart.

Out of scope

  • UI editor — covered by SVC-3.
  • Killing service.json file altogether — covered by SVC-4.

References

  • Spec: specs/config-to-db.md § Story SVC-2.
  • Bundled with: #744 (AT-2) — assign #744, this closes via the same PR.
## Bundle directive This story ships in **one PR with #744 (AT-2)** — both swap consumers in `webhook-config.ts`. **Assign #744**, not this issue. The PR closes both (`Closes #744 #751`). Make sure the PR description carries the `Closes` keywords (#761 missed them and we had to close manually — see #740/#762 incident). --- As a platform engineer, I want every runtime read of fields that used to live in `config/service.json` to swap to `getServiceConfig()`, so that operator overrides on `forgejo_url`, `container_image`, `watchdogs.*`, `auth.*`, `node_flows.*`, `penpot.*`, `default_reviewer_type` take effect via DB writes — file edits become a deprecated path. ## Acceptance criteria ### Loader - [ ] `webhook-config.ts` no longer reads `service.json` at runtime (builtin-sync still does, on boot). - [ ] Webhook-secret bytes load through the SC-6 secret resolver, not via `readFileSync` of an arbitrary path. ### Fields covered - [ ] `forgejo_url`, `container_image`, `container_image_default`, `ui_version`, `forge_mcp_command`. - [ ] `auth.*`, `watchdogs.*`, `node_flows.*`, `penpot.*`. - [ ] `default_reviewer_type`. ### Tests - [ ] Existing boot tests pass unchanged. - [ ] New: setting `forgejo_url` at `scope='global'` via the dashboard changes the URL used by the next webhook dispatch without a restart. ## Out of scope - UI editor — covered by SVC-3. - Killing service.json file altogether — covered by SVC-4. ## References - Spec: `specs/config-to-db.md` § Story SVC-2. - Bundled with: #744 (AT-2) — assign #744, this closes via the same PR.
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
charles/claude-hooks#751
No description provided.