feat(rustfs): key for the binjovi-candidates-read identity #709

Merged
binjovi-bot merged 1 commit from feat/binjovi-candidates-read into trunk 2026-09-13 13:44:45 +00:00
Owner

First of three changes that let the dashboard offer a Build's candidate package set for download before it is released (zelnet, zdns, zerotea and the RPG projects). The candidate lives in the private workflows bucket, so the control plane serves it to a signed-in user through an authenticated route, and needs a read-only key for workflows/<project>/candidates/.

This file generates and freezes that key and delivers it to namespace binjovi as binjovi-candidates-read-s3-credentials, the same chain binjovi-logs.yaml uses. The converge reader lists the frozen key, so Binjovi can create the user and prove its scope once sean/binjovi-plans declares the policy (next pull request). The identity can only read the candidate prefixes: a control plane compromise gains no write on the store and no read of any other prefix.

tests/rustfs-identities.sh and tests/binjovi.sh pass.

Order: this, then the binjovi-plans policy and 30-day lifecycle rule, then the binjovi route and views.

https://claude.ai/code/session_01XdBRc9CHgFhAxCyHbdVtt6

First of three changes that let the dashboard offer a Build's candidate package set for download before it is released (zelnet, zdns, zerotea and the RPG projects). The candidate lives in the private `workflows` bucket, so the control plane serves it to a signed-in user through an authenticated route, and needs a read-only key for `workflows/<project>/candidates/`. This file generates and freezes that key and delivers it to namespace `binjovi` as `binjovi-candidates-read-s3-credentials`, the same chain `binjovi-logs.yaml` uses. The converge reader lists the frozen key, so Binjovi can create the user and prove its scope once `sean/binjovi-plans` declares the policy (next pull request). The identity can only read the candidate prefixes: a control plane compromise gains no write on the store and no read of any other prefix. `tests/rustfs-identities.sh` and `tests/binjovi.sh` pass. Order: this, then the `binjovi-plans` policy and 30-day lifecycle rule, then the binjovi route and views. https://claude.ai/code/session_01XdBRc9CHgFhAxCyHbdVtt6
feat(rustfs): key for the binjovi-candidates-read identity
All checks were successful
binjovi/ci Binjovi completed the frozen plan
4790fbed46
The dashboard will serve a Build's candidate package set to a signed-in
user through the control plane. The control plane needs a read-only key
for workflows/<project>/candidates/. This file generates and freezes that
key and delivers it to namespace binjovi as
binjovi-candidates-read-s3-credentials, the same chain binjovi-logs uses.
The converge reader lists the frozen key, so Binjovi can create the user
and prove its scope when sean/binjovi-plans declares the policy.

Claude-Session: https://claude.ai/code/session_01XdBRc9CHgFhAxCyHbdVtt6
binjovi-bot deleted branch feat/binjovi-candidates-read 2026-09-13 13:44:45 +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/seanfarm!709
No description provided.