feat(rustfs): deliver the binjovi-logs key and mirror its bucket #490

Merged
binjovi-bot merged 1 commit from sean/rustfs-binjovi-logs into trunk 2026-09-09 16:11:49 +00:00 AGit
Owner

Stage 3, bucket two of five. Source side only: delivers the scoped credential to namespace binjovi and copies the bucket (297,895 objects / 75 MiB, measured). sean/binjovi is repointed in its own commit once the mirror is green. Both class guards were confirmed red first, and four further controls were run by hand against the new delivery chain. https://claude.ai/code/session_01KZoQin34jeyt6nDGqvJA76

Stage 3, bucket two of five. Source side only: delivers the scoped credential to namespace binjovi and copies the bucket (297,895 objects / 75 MiB, measured). sean/binjovi is repointed in its own commit once the mirror is green. Both class guards were confirmed red first, and four further controls were run by hand against the new delivery chain. https://claude.ai/code/session_01KZoQin34jeyt6nDGqvJA76
feat(rustfs): deliver the binjovi-logs key and mirror its bucket
All checks were successful
binjovi/ci Binjovi completed the frozen plan
b5814c844b
Stage 3, bucket two of five. Source side only: this delivers the scoped
credential to namespace binjovi and copies the bucket. sean/binjovi still
reads MinIO after this lands, and is repointed in its own commit once the
mirror is green.

The delivery chain lands BEFORE the repoint rather than with it, which is the
opposite of what this file's header said. The mirror writes with this
identity's own scoped key -- the migration never holds a root credential on
either side -- so the key has to exist before there is anything to repoint to.
Namespace binjovi gains a second Secret it does not read yet.

The shaped Secret uses access_key / secret_key, not the minio_access_key /
minio_secret_key the MinIO chain used. object-store.json already records those
two field names for this identity, and the store name and remote key change in
the repoint regardless, so there is nothing to gain by carrying the old word
into RustFS. The declaration, the delivered Secret and the workload now agree.

MEASURED before writing the mirror: 297,895 objects in 75 MiB, an average
object of about 260 bytes. Six times loki's object count in a thirtieth of its
bytes, so the cost here is per-object round trips and the two full listings
each pass does, not throughput.

The gate is loki's, for the same reason and with the same bound. MinIO carries
binjovi-logs-v1-expire-30d, so the source deletes objects while the mirror
runs and destination-only lines appear on every pass; requiring an empty diff
would require that expiry to stop. Nothing may differ, ever. Up to 64 missing
is the in-flight residual of a control plane still archiving to MinIO, and it
must reach zero on the run after the repoint. That run is the cutover gate.

Both class guards cover the new files the moment they land, and both were
confirmed red first. tests/rustfs-mirror.sh picks the alphabetically first
bucket for its seven probes, which is now binjovi-logs.yaml, so its generic
controls fire against this Job rather than tempo's. Four further controls were
run by hand against the new delivery chain -- conditions removed, reader scope
narrowed past the round-trip key, the generated key unfrozen, and the endpoint
pointed back at MinIO -- and each went red.

Claude-Session: https://claude.ai/code/session_01KZoQin34jeyt6nDGqvJA76
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!490
No description provided.