Repository navigation
feat(iam): forward a DeleteObjects body to Hilt and decide the fast path on it - #299
Merged
Merged
Conversation
…ath on it Hilt now reads a DeleteObjects body and needs s3:DeleteObjectVersion when an entry names a version. The body travels only for the operations Hilt's classifier names, so a streaming write's body is never read here; the fast path checks the version permission from the same classification and leaves a body the signature does not bind to Hilt, which refuses it as UnboundBody. Pins libforge to fil-forge/libforge#87 and hilt to fil-forge/hilt#106. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…/hilt#106 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Unbounded pre-authentication body buffering and forgeable checksum-based body binding leave unresolved security risks.
2 open issues
What changed in this PR
This PR adds body-aware DeleteObjects authorization to Ingot’s Hilt integration, so batches naming versions require version-delete permission.
Changes:
- Forward bodies only for operations Hilt classifies as body-dependent, and map
UnboundBodyto AccessDenied. - Add tests for cached permissions and tampered bodies.
- Update Hilt/libforge dependencies and authorization documentation.
| File | Description |
|---|---|
iam/service.go |
Forward authorization-relevant bodies and map unbound-body errors. |
iam/service_internal_test.go |
Test version-delete permissions, body binding, and error mapping. |
go.sum |
Update dependency checksums. |
go.mod |
Pin Hilt and libforge revisions supporting body-aware authorization. |
docs/diagrams.md |
Document body-dependent authorization and fallback behavior. |
Review effort: Balanced
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The body was drained from the stream and cloned before anything about the request was verified, so an unauthenticated POST ?delete could cost an unbounded allocation. It is now read only to one byte past Hilt's limit, refused as EntityTooLarge beyond it, and set back on the request within it so the handler reads the same bytes. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…hilt#106 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
A streamed DeleteObjects body reaches the authorizer exactly and is left for the handler, another operation's body is neither forwarded nor consumed, and an oversized body is refused before the authorizer is asked. The route-permission scenario expects a mixed batch naming a version to be refused as a whole, as Hilt now decides it, with nothing deleted, and the plain batch to go through. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
fil-forge-bot Bot
added a commit
to fil-forge/infra-nodes
that referenced
this pull request
Oct 22, 2026
Published from fil-forge/ingot#299 - Digest: `sha256:fce5261976ed9bddc9b9b3dbe26430da6178fc04e2f86c0b51af568549628ae0` - Commit: fil-forge/ingot@9881bef - Publish run: https://github.com/fil-forge/ingot/actions/runs/39770653477 Merging rewrites [`nodes/dev/apps/versions.env`](https://github.com/fil-forge/infra-nodes/blob/main/nodes/dev/apps/versions.env) and queues the image. The node picks it up on its next reconcile pass, waits for a safe proving window and then restarts the service, so the deploy happens well after this merges. Co-authored-by: fil-forge-bot[bot] <318653112+fil-forge-bot[bot]@users.noreply.github.com>
fil-forge-bot Bot
added a commit
to fil-forge/infra-nodes
that referenced
this pull request
Oct 22, 2026
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:00f0fb7`](https://github.com/orgs/fil-forge/packages/container/piri/1421174034) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3cd4f27`](fil-forge/piri@c2dc6b0...3cd4f27): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:fce5261`](https://github.com/orgs/fil-forge/packages/container/ingot/1427940427) What fil-forge/ingot brings over staging's pin, [`6331454..9881bef`](fil-forge/ingot@6331454...9881bef): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e)) - fil-forge/ingot#292 ([7c9440d](fil-forge/ingot@7c9440d)) - fil-forge/ingot#293 ([f2b2628](fil-forge/ingot@f2b2628)) - fil-forge/ingot#297 ([31e01b0](fil-forge/ingot@31e01b0)) - fil-forge/ingot#291 ([a75c81a](fil-forge/ingot@a75c81a)) - fil-forge/ingot#300 ([49fec43](fil-forge/ingot@49fec43)) - fil-forge/ingot#299 ([9881bef](fil-forge/ingot@9881bef))
fil-forge-bot Bot
added a commit
to fil-forge/infra-nodes
that referenced
this pull request
Oct 22, 2026
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:00f0fb7`](https://github.com/orgs/fil-forge/packages/container/piri/1421174034) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3cd4f27`](fil-forge/piri@c2dc6b0...3cd4f27): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:c4f38fd`](https://github.com/orgs/fil-forge/packages/container/ingot/1428268604) What fil-forge/ingot brings over staging's pin, [`6331454..bb88ee0`](fil-forge/ingot@6331454...bb88ee0): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e)) - fil-forge/ingot#292 ([7c9440d](fil-forge/ingot@7c9440d)) - fil-forge/ingot#293 ([f2b2628](fil-forge/ingot@f2b2628)) - fil-forge/ingot#297 ([31e01b0](fil-forge/ingot@31e01b0)) - fil-forge/ingot#291 ([a75c81a](fil-forge/ingot@a75c81a)) - fil-forge/ingot#300 ([49fec43](fil-forge/ingot@49fec43)) - fil-forge/ingot#299 ([9881bef](fil-forge/ingot@9881bef)) - fil-forge/ingot#279 ([bb88ee0](fil-forge/ingot@bb88ee0))
fil-forge-bot Bot
added a commit
to fil-forge/infra-nodes
that referenced
this pull request
Oct 22, 2026
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:00f0fb7`](https://github.com/orgs/fil-forge/packages/container/piri/1421174034) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3cd4f27`](fil-forge/piri@c2dc6b0...3cd4f27): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:c4f38fd`](https://github.com/orgs/fil-forge/packages/container/ingot/1428268604) What fil-forge/ingot brings over staging's pin, [`6331454..bb88ee0`](fil-forge/ingot@6331454...bb88ee0): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e)) - fil-forge/ingot#292 ([7c9440d](fil-forge/ingot@7c9440d)) - fil-forge/ingot#293 ([f2b2628](fil-forge/ingot@f2b2628)) - fil-forge/ingot#297 ([31e01b0](fil-forge/ingot@31e01b0)) - fil-forge/ingot#291 ([a75c81a](fil-forge/ingot@a75c81a)) - fil-forge/ingot#300 ([49fec43](fil-forge/ingot@49fec43)) - fil-forge/ingot#299 ([9881bef](fil-forge/ingot@9881bef)) - fil-forge/ingot#279 ([bb88ee0](fil-forge/ingot@bb88ee0))
fil-forge-bot Bot
added a commit
to fil-forge/infra-nodes
that referenced
this pull request
Oct 22, 2026
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:00f0fb7`](https://github.com/orgs/fil-forge/packages/container/piri/1421174034) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3cd4f27`](fil-forge/piri@c2dc6b0...3cd4f27): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:eea47a7`](https://github.com/orgs/fil-forge/packages/container/ingot/1428859054) What fil-forge/ingot brings over staging's pin, [`6331454..5596df7`](fil-forge/ingot@6331454...5596df7): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e)) - fil-forge/ingot#292 ([7c9440d](fil-forge/ingot@7c9440d)) - fil-forge/ingot#293 ([f2b2628](fil-forge/ingot@f2b2628)) - fil-forge/ingot#297 ([31e01b0](fil-forge/ingot@31e01b0)) - fil-forge/ingot#291 ([a75c81a](fil-forge/ingot@a75c81a)) - fil-forge/ingot#300 ([49fec43](fil-forge/ingot@49fec43)) - fil-forge/ingot#299 ([9881bef](fil-forge/ingot@9881bef)) - fil-forge/ingot#279 ([bb88ee0](fil-forge/ingot@bb88ee0)) - fil-forge/ingot#278 ([0d16d90](fil-forge/ingot@0d16d90)) - fil-forge/ingot#280 ([5596df7](fil-forge/ingot@5596df7))
fil-forge-bot Bot
added a commit
to fil-forge/infra-nodes
that referenced
this pull request
Oct 22, 2026
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:00f0fb7`](https://github.com/orgs/fil-forge/packages/container/piri/1421174034) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3cd4f27`](fil-forge/piri@c2dc6b0...3cd4f27): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:7a6cd2d`](https://github.com/orgs/fil-forge/packages/container/ingot/1429078201) What fil-forge/ingot brings over staging's pin, [`6331454..7be5b2f`](fil-forge/ingot@6331454...7be5b2f): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e)) - fil-forge/ingot#292 ([7c9440d](fil-forge/ingot@7c9440d)) - fil-forge/ingot#293 ([f2b2628](fil-forge/ingot@f2b2628)) - fil-forge/ingot#297 ([31e01b0](fil-forge/ingot@31e01b0)) - fil-forge/ingot#291 ([a75c81a](fil-forge/ingot@a75c81a)) - fil-forge/ingot#300 ([49fec43](fil-forge/ingot@49fec43)) - fil-forge/ingot#299 ([9881bef](fil-forge/ingot@9881bef)) - fil-forge/ingot#279 ([bb88ee0](fil-forge/ingot@bb88ee0)) - fil-forge/ingot#278 ([0d16d90](fil-forge/ingot@0d16d90)) - fil-forge/ingot#280 ([5596df7](fil-forge/ingot@5596df7)) - fil-forge/ingot#273 ([7be5b2f](fil-forge/ingot@7be5b2f))
fil-forge-bot Bot
added a commit
to fil-forge/infra-nodes
that referenced
this pull request
Oct 22, 2026
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:00f0fb7`](https://github.com/orgs/fil-forge/packages/container/piri/1421174034) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3cd4f27`](fil-forge/piri@c2dc6b0...3cd4f27): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:7a6cd2d`](https://github.com/orgs/fil-forge/packages/container/ingot/1429078201) What fil-forge/ingot brings over staging's pin, [`6331454..7be5b2f`](fil-forge/ingot@6331454...7be5b2f): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e)) - fil-forge/ingot#292 ([7c9440d](fil-forge/ingot@7c9440d)) - fil-forge/ingot#293 ([f2b2628](fil-forge/ingot@f2b2628)) - fil-forge/ingot#297 ([31e01b0](fil-forge/ingot@31e01b0)) - fil-forge/ingot#291 ([a75c81a](fil-forge/ingot@a75c81a)) - fil-forge/ingot#300 ([49fec43](fil-forge/ingot@49fec43)) - fil-forge/ingot#299 ([9881bef](fil-forge/ingot@9881bef)) - fil-forge/ingot#279 ([bb88ee0](fil-forge/ingot@bb88ee0)) - fil-forge/ingot#278 ([0d16d90](fil-forge/ingot@0d16d90)) - fil-forge/ingot#280 ([5596df7](fil-forge/ingot@5596df7)) - fil-forge/ingot#273 ([7be5b2f](fil-forge/ingot@7be5b2f))
fil-forge-bot Bot
added a commit
to fil-forge/infra-nodes
that referenced
this pull request
Oct 22, 2026
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:f493390`](https://github.com/orgs/fil-forge/packages/container/piri/1429852644) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3ef715b`](fil-forge/piri@c2dc6b0...3ef715b): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) - fil-forge/piri#192 ([9b3191c](fil-forge/piri@9b3191c)) - fil-forge/piri#121 ([0fbd8da](fil-forge/piri@0fbd8da)) - fil-forge/piri#194 ([3ef715b](fil-forge/piri@3ef715b)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:7a6cd2d`](https://github.com/orgs/fil-forge/packages/container/ingot/1429078201) What fil-forge/ingot brings over staging's pin, [`6331454..7be5b2f`](fil-forge/ingot@6331454...7be5b2f): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e)) - fil-forge/ingot#292 ([7c9440d](fil-forge/ingot@7c9440d)) - fil-forge/ingot#293 ([f2b2628](fil-forge/ingot@f2b2628)) - fil-forge/ingot#297 ([31e01b0](fil-forge/ingot@31e01b0)) - fil-forge/ingot#291 ([a75c81a](fil-forge/ingot@a75c81a)) - fil-forge/ingot#300 ([49fec43](fil-forge/ingot@49fec43)) - fil-forge/ingot#299 ([9881bef](fil-forge/ingot@9881bef)) - fil-forge/ingot#279 ([bb88ee0](fil-forge/ingot@bb88ee0)) - fil-forge/ingot#278 ([0d16d90](fil-forge/ingot@0d16d90)) - fil-forge/ingot#280 ([5596df7](fil-forge/ingot@5596df7)) - fil-forge/ingot#273 ([7be5b2f](fil-forge/ingot@7be5b2f))
fil-forge-bot Bot
added a commit
to fil-forge/infra-nodes
that referenced
this pull request
Oct 22, 2026
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:f493390`](https://github.com/orgs/fil-forge/packages/container/piri/1429852644) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3ef715b`](fil-forge/piri@c2dc6b0...3ef715b): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) - fil-forge/piri#192 ([9b3191c](fil-forge/piri@9b3191c)) - fil-forge/piri#121 ([0fbd8da](fil-forge/piri@0fbd8da)) - fil-forge/piri#194 ([3ef715b](fil-forge/piri@3ef715b)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:5ca3bc4`](https://github.com/orgs/fil-forge/packages/container/ingot/1430706317) What fil-forge/ingot brings over staging's pin, [`6331454..c1f3eaa`](fil-forge/ingot@6331454...c1f3eaa): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e)) - fil-forge/ingot#292 ([7c9440d](fil-forge/ingot@7c9440d)) - fil-forge/ingot#293 ([f2b2628](fil-forge/ingot@f2b2628)) - fil-forge/ingot#297 ([31e01b0](fil-forge/ingot@31e01b0)) - fil-forge/ingot#291 ([a75c81a](fil-forge/ingot@a75c81a)) - fil-forge/ingot#300 ([49fec43](fil-forge/ingot@49fec43)) - fil-forge/ingot#299 ([9881bef](fil-forge/ingot@9881bef)) - fil-forge/ingot#279 ([bb88ee0](fil-forge/ingot@bb88ee0)) - fil-forge/ingot#278 ([0d16d90](fil-forge/ingot@0d16d90)) - fil-forge/ingot#280 ([5596df7](fil-forge/ingot@5596df7)) - fil-forge/ingot#273 ([7be5b2f](fil-forge/ingot@7be5b2f)) - fil-forge/ingot#276 ([957e190](fil-forge/ingot@957e190)) - fil-forge/ingot#282 ([ebbc066](fil-forge/ingot@ebbc066)) - fil-forge/ingot#275 ([425d2cb](fil-forge/ingot@425d2cb)) - fil-forge/ingot#281 ([b36651a](fil-forge/ingot@b36651a)) - fil-forge/ingot#301 ([c1f3eaa](fil-forge/ingot@c1f3eaa))
fil-forge-bot Bot
added a commit
to fil-forge/infra-nodes
that referenced
this pull request
Oct 22, 2026
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:f493390`](https://github.com/orgs/fil-forge/packages/container/piri/1429852644) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3ef715b`](fil-forge/piri@c2dc6b0...3ef715b): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) - fil-forge/piri#192 ([9b3191c](fil-forge/piri@9b3191c)) - fil-forge/piri#121 ([0fbd8da](fil-forge/piri@0fbd8da)) - fil-forge/piri#194 ([3ef715b](fil-forge/piri@3ef715b)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:8a16655`](https://github.com/orgs/fil-forge/packages/container/ingot/1431251960) What fil-forge/ingot brings over staging's pin, [`6331454..4585b83`](fil-forge/ingot@6331454...4585b83): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e)) - fil-forge/ingot#292 ([7c9440d](fil-forge/ingot@7c9440d)) - fil-forge/ingot#293 ([f2b2628](fil-forge/ingot@f2b2628)) - fil-forge/ingot#297 ([31e01b0](fil-forge/ingot@31e01b0)) - fil-forge/ingot#291 ([a75c81a](fil-forge/ingot@a75c81a)) - fil-forge/ingot#300 ([49fec43](fil-forge/ingot@49fec43)) - fil-forge/ingot#299 ([9881bef](fil-forge/ingot@9881bef)) - fil-forge/ingot#279 ([bb88ee0](fil-forge/ingot@bb88ee0)) - fil-forge/ingot#278 ([0d16d90](fil-forge/ingot@0d16d90)) - fil-forge/ingot#280 ([5596df7](fil-forge/ingot@5596df7)) - fil-forge/ingot#273 ([7be5b2f](fil-forge/ingot@7be5b2f)) - fil-forge/ingot#276 ([957e190](fil-forge/ingot@957e190)) - fil-forge/ingot#282 ([ebbc066](fil-forge/ingot@ebbc066)) - fil-forge/ingot#275 ([425d2cb](fil-forge/ingot@425d2cb)) - fil-forge/ingot#281 ([b36651a](fil-forge/ingot@b36651a)) - fil-forge/ingot#301 ([c1f3eaa](fil-forge/ingot@c1f3eaa)) - fil-forge/ingot#302 ([4585b83](fil-forge/ingot@4585b83))
fil-forge-bot Bot
added a commit
to fil-forge/infra-nodes
that referenced
this pull request
Oct 22, 2026
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:07f74c5`](https://github.com/orgs/fil-forge/packages/container/piri/1431242148) What fil-forge/piri brings over staging's pin, [`c2dc6b0..e8d7fd9`](fil-forge/piri@c2dc6b0...e8d7fd9): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) - fil-forge/piri#192 ([9b3191c](fil-forge/piri@9b3191c)) - fil-forge/piri#121 ([0fbd8da](fil-forge/piri@0fbd8da)) - fil-forge/piri#194 ([3ef715b](fil-forge/piri@3ef715b)) - fil-forge/piri#196 ([1f79668](fil-forge/piri@1f79668)) - fil-forge/piri#197 ([476f1a2](fil-forge/piri@476f1a2)) - fil-forge/piri#198 ([1df9059](fil-forge/piri@1df9059)) - fil-forge/piri#193 ([e8d7fd9](fil-forge/piri@e8d7fd9)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:8a16655`](https://github.com/orgs/fil-forge/packages/container/ingot/1431251960) What fil-forge/ingot brings over staging's pin, [`6331454..4585b83`](fil-forge/ingot@6331454...4585b83): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e)) - fil-forge/ingot#292 ([7c9440d](fil-forge/ingot@7c9440d)) - fil-forge/ingot#293 ([f2b2628](fil-forge/ingot@f2b2628)) - fil-forge/ingot#297 ([31e01b0](fil-forge/ingot@31e01b0)) - fil-forge/ingot#291 ([a75c81a](fil-forge/ingot@a75c81a)) - fil-forge/ingot#300 ([49fec43](fil-forge/ingot@49fec43)) - fil-forge/ingot#299 ([9881bef](fil-forge/ingot@9881bef)) - fil-forge/ingot#279 ([bb88ee0](fil-forge/ingot@bb88ee0)) - fil-forge/ingot#278 ([0d16d90](fil-forge/ingot@0d16d90)) - fil-forge/ingot#280 ([5596df7](fil-forge/ingot@5596df7)) - fil-forge/ingot#273 ([7be5b2f](fil-forge/ingot@7be5b2f)) - fil-forge/ingot#276 ([957e190](fil-forge/ingot@957e190)) - fil-forge/ingot#282 ([ebbc066](fil-forge/ingot@ebbc066)) - fil-forge/ingot#275 ([425d2cb](fil-forge/ingot@425d2cb)) - fil-forge/ingot#281 ([b36651a](fil-forge/ingot@b36651a)) - fil-forge/ingot#301 ([c1f3eaa](fil-forge/ingot@c1f3eaa)) - fil-forge/ingot#302 ([4585b83](fil-forge/ingot@4585b83))
fil-forge-bot Bot
added a commit
to fil-forge/infra-nodes
that referenced
this pull request
Oct 23, 2026
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:07f74c5`](https://github.com/orgs/fil-forge/packages/container/piri/1431242148) What fil-forge/piri brings over staging's pin, [`c2dc6b0..e8d7fd9`](fil-forge/piri@c2dc6b0...e8d7fd9): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) - fil-forge/piri#192 ([9b3191c](fil-forge/piri@9b3191c)) - fil-forge/piri#121 ([0fbd8da](fil-forge/piri@0fbd8da)) - fil-forge/piri#194 ([3ef715b](fil-forge/piri@3ef715b)) - fil-forge/piri#196 ([1f79668](fil-forge/piri@1f79668)) - fil-forge/piri#197 ([476f1a2](fil-forge/piri@476f1a2)) - fil-forge/piri#198 ([1df9059](fil-forge/piri@1df9059)) - fil-forge/piri#193 ([e8d7fd9](fil-forge/piri@e8d7fd9)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:8a16655`](https://github.com/orgs/fil-forge/packages/container/ingot/1431251960) What fil-forge/ingot brings over staging's pin, [`6331454..4585b83`](fil-forge/ingot@6331454...4585b83): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e)) - fil-forge/ingot#292 ([7c9440d](fil-forge/ingot@7c9440d)) - fil-forge/ingot#293 ([f2b2628](fil-forge/ingot@f2b2628)) - fil-forge/ingot#297 ([31e01b0](fil-forge/ingot@31e01b0)) - fil-forge/ingot#291 ([a75c81a](fil-forge/ingot@a75c81a)) - fil-forge/ingot#300 ([49fec43](fil-forge/ingot@49fec43)) - fil-forge/ingot#299 ([9881bef](fil-forge/ingot@9881bef)) - fil-forge/ingot#279 ([bb88ee0](fil-forge/ingot@bb88ee0)) - fil-forge/ingot#278 ([0d16d90](fil-forge/ingot@0d16d90)) - fil-forge/ingot#280 ([5596df7](fil-forge/ingot@5596df7)) - fil-forge/ingot#273 ([7be5b2f](fil-forge/ingot@7be5b2f)) - fil-forge/ingot#276 ([957e190](fil-forge/ingot@957e190)) - fil-forge/ingot#282 ([ebbc066](fil-forge/ingot@ebbc066)) - fil-forge/ingot#275 ([425d2cb](fil-forge/ingot@425d2cb)) - fil-forge/ingot#281 ([b36651a](fil-forge/ingot@b36651a)) - fil-forge/ingot#301 ([c1f3eaa](fil-forge/ingot@c1f3eaa)) - fil-forge/ingot#302 ([4585b83](fil-forge/ingot@4585b83))
bajtos
pushed a commit
to fil-forge/infra-nodes
that referenced
this pull request
Oct 23, 2026
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:07f74c5`](https://github.com/orgs/fil-forge/packages/container/piri/1431242148) What fil-forge/piri brings over staging's pin, [`c2dc6b0..e8d7fd9`](fil-forge/piri@c2dc6b0...e8d7fd9): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) - fil-forge/piri#192 ([9b3191c](fil-forge/piri@9b3191c)) - fil-forge/piri#121 ([0fbd8da](fil-forge/piri@0fbd8da)) - fil-forge/piri#194 ([3ef715b](fil-forge/piri@3ef715b)) - fil-forge/piri#196 ([1f79668](fil-forge/piri@1f79668)) - fil-forge/piri#197 ([476f1a2](fil-forge/piri@476f1a2)) - fil-forge/piri#198 ([1df9059](fil-forge/piri@1df9059)) - fil-forge/piri#193 ([e8d7fd9](fil-forge/piri@e8d7fd9)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:8a16655`](https://github.com/orgs/fil-forge/packages/container/ingot/1431251960) What fil-forge/ingot brings over staging's pin, [`6331454..4585b83`](fil-forge/ingot@6331454...4585b83): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e)) - fil-forge/ingot#292 ([7c9440d](fil-forge/ingot@7c9440d)) - fil-forge/ingot#293 ([f2b2628](fil-forge/ingot@f2b2628)) - fil-forge/ingot#297 ([31e01b0](fil-forge/ingot@31e01b0)) - fil-forge/ingot#291 ([a75c81a](fil-forge/ingot@a75c81a)) - fil-forge/ingot#300 ([49fec43](fil-forge/ingot@49fec43)) - fil-forge/ingot#299 ([9881bef](fil-forge/ingot@9881bef)) - fil-forge/ingot#279 ([bb88ee0](fil-forge/ingot@bb88ee0)) - fil-forge/ingot#278 ([0d16d90](fil-forge/ingot@0d16d90)) - fil-forge/ingot#280 ([5596df7](fil-forge/ingot@5596df7)) - fil-forge/ingot#273 ([7be5b2f](fil-forge/ingot@7be5b2f)) - fil-forge/ingot#276 ([957e190](fil-forge/ingot@957e190)) - fil-forge/ingot#282 ([ebbc066](fil-forge/ingot@ebbc066)) - fil-forge/ingot#275 ([425d2cb](fil-forge/ingot@425d2cb)) - fil-forge/ingot#281 ([b36651a](fil-forge/ingot@b36651a)) - fil-forge/ingot#301 ([c1f3eaa](fil-forge/ingot@c1f3eaa)) - fil-forge/ingot#302 ([4585b83](fil-forge/ingot@4585b83)) Co-authored-by: fil-forge-bot[bot] <318653112+fil-forge-bot[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Companion to fil-forge/hilt#106 and fil-forge/libforge#87, both merged; pins Hilt and libforge main.
Hilt now decides a DeleteObjects on its body: an entry naming a version needs
s3:DeleteObjectVersionbesides3:DeleteObject. Until now Ingot removed the named versions with no such check, so a key holding the delete permission alone could remove any version it could name.What changes
The request forwarded to Hilt carries its body only for the operations Hilt's classifier names as deciding on one, which today is DeleteObjects. Every other request goes without, so PutObject and UploadPart never have their body read here. Hilt binds the body to the signature before reading it, and the fast path decides on the same classification: a version entry is refused locally when the key's cached set lacks the version permission, and a body the signature does not bind is left to Hilt, which refuses it as
InvalidBody. That name joinsUnsignedHeaderin the error mapping as AccessDenied.Behaviour changes to know about
s3:DeleteObjectVersionis refused as a whole, where S3 would refuse only those entries. Plain batches are unaffected.The IAM itest scenario for this lives in Hilt and was not run.
🤖 Generated with Claude Code