feat(deploy): flux targets may name a chain mirror as the source Flux reads #1794

Merged
binjovi-bot merged 1 commit from feat/flux-deploy-mirror-source into trunk 2026-09-14 21:30:24 +00:00
Owner

What

A flux deployment target may name the source Flux reads as mirror_url (an https git URL of the off-cluster chain copy a Forgejo push mirror feeds from Forgejo main) instead of codeberg_repo, which stays for the transition. Exactly one of the two, in every flux target shape.

  • Registry validation, runtime routes and NativeFlux thread mirror_url through; the task keeps 13 keys, one of them the source shape.
  • The agent passes --mirror-url to binjovi-flux-deployer v12 (pinned here; sean/builder-images#367) and pins the copies Flux may read per project (https://code.packet.town/sean/{seanfarm,platform-seanfarm}.git).
  • Rollback in the mirror shape moves Forgejo main, so both flux deploy agents mount the writer token at /secrets/forgejo from a new workflows-namespace ExternalSecret binjovi-flux-deployer-forgejo (store admitted by seanfarm #770, deployed).

Verified

command/native-flux/registry/container-contract/plan-source/native-agent-api suites: 163 passed. mix compile --warnings-as-errors, mix format --check-formatted, make contract-check clean.

Activation order

  1. this release (accepts both shapes); 2. seanfarm Flux source → code.packet.town; 3. binjovi-plans switches the two targets to mirror_url.

https://claude.ai/code/session_01XdBRc9CHgFhAxCyHbdVtt6

## What A flux deployment target may name the source Flux reads as `mirror_url` (an https git URL of the off-cluster chain copy a Forgejo push mirror feeds from Forgejo `main`) instead of `codeberg_repo`, which stays for the transition. Exactly one of the two, in every flux target shape. - Registry validation, runtime routes and `NativeFlux` thread `mirror_url` through; the task keeps 13 keys, one of them the source shape. - The agent passes `--mirror-url` to `binjovi-flux-deployer` **v12** (pinned here; sean/builder-images#367) and pins the copies Flux may read per project (`https://code.packet.town/sean/{seanfarm,platform-seanfarm}.git`). - Rollback in the mirror shape moves Forgejo `main`, so both flux deploy agents mount the writer token at `/secrets/forgejo` from a new `workflows`-namespace ExternalSecret `binjovi-flux-deployer-forgejo` (store admitted by seanfarm #770, deployed). ## Verified command/native-flux/registry/container-contract/plan-source/native-agent-api suites: 163 passed. `mix compile --warnings-as-errors`, `mix format --check-formatted`, `make contract-check` clean. ## Activation order 1. this release (accepts both shapes); 2. seanfarm Flux source → `code.packet.town`; 3. binjovi-plans switches the two targets to `mirror_url`. https://claude.ai/code/session_01XdBRc9CHgFhAxCyHbdVtt6
feat(deploy): flux targets may name a chain mirror as the source Flux reads
Some checks failed
binjovi/ci Binjovi failed the frozen plan
52452a2d32
Codeberg leaves the delivery path. A flux deployment target now names the
source Flux reads in exactly one of two shapes: codeberg_repo (the retired
shape, kept for the transition: the deployer pushes main to Codeberg with a
deploy key) or mirror_url, an https git URL of the off-cluster copy a Forgejo
push mirror feeds from Forgejo main. Forgejo main is the deploy pointer; the
deployer observes the copy and never writes it.

  - ProjectRegistry accepts either key (never both, never neither) in every
    flux target shape (base, v6 availability, v14 executor) and validates the
    URL; the target carries both fields, one nil.
  - The runtime routes and NativeFlux thread mirror_url through to the task:
    the payload keeps thirteen keys, one of them the source shape; validation
    requires exactly one non-empty source.
  - The agent passes --mirror-url to binjovi-flux-deployer, and pins the copies
    Flux may read per project: https://code.packet.town/sean/seanfarm.git and
    https://code.packet.town/sean/platform-seanfarm.git. A well-formed URL
    outside that list is not a deploy target.
  - Rollback in the mirror shape moves Forgejo main, so both flux deploy
    agents mount the writer token at /secrets/forgejo: a new ExternalSecret
    binjovi-flux-deployer-forgejo in namespace workflows, served by the
    binjovi-forgejo-writer store (seanfarm #770 admits that namespace).
  - binjovi-flux-deployer v12 (sean/builder-images#367) is pinned in both
    FROM lines and the container contract.

Tests: the agent emits --mirror-url and never a Codeberg flag, refuses a
foreign URL and a task with both keys; NativeFlux queues a mirror task with
thirteen keys and no codeberg_repo; the registry accepts each shape and
rejects both, neither, and four malformed URLs; the deployment contract
asserts the token mounts and the workflows-namespace ExternalSecret.

Order of activation: seanfarm's Flux source moves to code.packet.town first,
then binjovi-plans switches the two targets to mirror_url.

Claude-Session: https://claude.ai/code/session_01XdBRc9CHgFhAxCyHbdVtt6
sean force-pushed feat/flux-deploy-mirror-source from 52452a2d32
Some checks failed
binjovi/ci Binjovi failed the frozen plan
to d8b6705602
All checks were successful
binjovi/ci Binjovi completed the frozen plan
2026-09-14 21:28:42 +00:00
Compare
binjovi-bot deleted branch feat/flux-deploy-mirror-source 2026-09-14 21:30:24 +00:00
Sign in to join this conversation.
No reviewers
No labels
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
sean/binjovi!1794
No description provided.