[nomad-prep] P12 — dispatcher commits result.json via git push, not bind-mount #803

Closed
opened 2026-04-15 18:12:14 +00:00 by dev-bot · 0 comments
Collaborator

Part of the Nomad+Vault migration prep backlog. Blocked by: #802 — P2 (dispatcher refactor).

Goal

Make the dispatcher commit <action-id>.result.json back to the disinto-ops repo via git add && git push (through lib/forge-push.sh) instead of writing to a locally mounted filesystem. Portable across backends.

Scope

Audit docker/edge/dispatcher.sh result-writing logic:

  • If it currently writes to a bind-mounted vault/actions/ directory assuming the dispatcher's filesystem is shared with the host's ops-repo clone — that's docker-backend-coupled.
  • Replace with: clone/pull ops repo into a scratch dir → write result.json → commit + push via lib/forge-push.sh using vault-bot's token.
  • Idempotency: if a result.json already exists upstream for this action-id, skip (don't overwrite).
  • Retry on push conflict (rebase-and-push pattern — common case is admin merging another action PR concurrently).

Acceptance criteria

  • An action that runs end-to-end produces a commit on disinto-ops main authored by vault-bot with vault/actions/<id>.result.json.
  • No bind-mount required between dispatcher container and host ops-repo clone.
  • Retry loop handles a forced push-conflict scenario in CI (simulate by pre-pushing a no-op commit between the dispatcher's pull and push).
  • Works under current docker backend on live stack — smoke a real action through it.

Why

Under Nomad, the dispatcher alloc's filesystem is not shared with the host ops-repo clone. Writing via git push works under both backends identically.

Labels / meta

  • [nomad-prep] P12 — blocked by #802.
Part of the Nomad+Vault migration prep backlog. **Blocked by: #802 — P2 (dispatcher refactor).** ## Goal Make the dispatcher commit `<action-id>.result.json` back to the `disinto-ops` repo via `git add && git push` (through `lib/forge-push.sh`) instead of writing to a locally mounted filesystem. Portable across backends. ## Scope Audit `docker/edge/dispatcher.sh` result-writing logic: - If it currently writes to a bind-mounted `vault/actions/` directory assuming the dispatcher's filesystem is shared with the host's ops-repo clone — that's docker-backend-coupled. - Replace with: clone/pull ops repo into a scratch dir → write result.json → commit + push via `lib/forge-push.sh` using vault-bot's token. - Idempotency: if a result.json already exists upstream for this action-id, skip (don't overwrite). - Retry on push conflict (rebase-and-push pattern — common case is admin merging another action PR concurrently). ## Acceptance criteria - An action that runs end-to-end produces a commit on `disinto-ops` main authored by vault-bot with `vault/actions/<id>.result.json`. - No bind-mount required between dispatcher container and host ops-repo clone. - Retry loop handles a forced push-conflict scenario in CI (simulate by pre-pushing a no-op commit between the dispatcher's pull and push). - Works under current docker backend on live stack — smoke a real action through it. ## Why Under Nomad, the dispatcher alloc's filesystem is not shared with the host ops-repo clone. Writing via git push works under both backends identically. ## Labels / meta - `[nomad-prep] P12` — blocked by #802.
dev-bot added the
backlog
label 2026-04-15 18:12:14 +00:00
dev-bot self-assigned this 2026-04-16 00:50:25 +00:00
dev-bot added
in-progress
and removed
backlog
labels 2026-04-16 00:50:25 +00:00
dev-bot removed their assignment 2026-04-16 01:05:58 +00:00
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: disinto-admin/disinto#803
No description provided.