Repository navigation
fix(config): require the revocation service settings - #99
Conversation
revocation.service_id and revocation.service_url defaulted to prod's Swarf. Dev and staging set neither, so their Hilt published revocations to prod, which 404s on their tenants' did:plc DIDs and turned every tenant delete into a 500. Drop both defaults and make NewRevocationClient refuse empty values, so `hilt serve` exits at startup naming the missing env var and flag. The `hilt client` commands never build the revocation client and need neither setting. Assisted-by: Claude:claude-opus-5-5 Signed-off-by: Miroslav Bajtoš <oss@bajtos.net>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
🔵 Needs a closer look
The change makes Hilt crash at startup across all stages when the settings are unset and is explicitly gated on an external infra PR being applied first, which requires human deployment coordination.
0 open findings
What changed in this PR
This PR makes the Swarf revocation service settings (revocation.service_id and revocation.service_url) required rather than defaulting them to prod's Swarf. Previously, dev and staging Hilt deployments—which don't set these variables—silently published revocations to prod's Swarf, which doesn't know their tenants' DIDs, turning every tenant delete into a 500. Now hilt serve fails fast at startup when either setting is missing, with a clear actionable error, while hilt client commands (which never build the revocation client) keep working.
Changes:
- Remove the
SetDefaultcalls inpkg/configand the flag defaults incmd/main.go, replacing them with explicit empty values and "required" documentation. - Add explicit empty-value checks in
fx.NewRevocationClient(needed becauseurl.Parse("")succeeds and would otherwise defer the failure to first publish), plus tests for missing fields, module construction failure, and no-default loading. - Update README.md and AGENTS.md to mark both settings as required.
| File | Description |
|---|---|
pkg/fx/revocation.go |
Adds empty-string guards for ServiceID/ServiceURL with actionable error messages before parsing. |
pkg/config/config.go |
Removes the two SetDefault calls and documents why revocation settings have no default. |
cmd/main.go |
Clears the --revocation-service-* flag defaults and marks them "(required)". |
pkg/fx/revocation_test.go |
Adds table-driven tests for missing fields and an fx-construction failure test. |
pkg/config/config_test.go |
Verifies the revocation config stays empty with no defaults. |
README.md |
Documents both settings as required and the startup-exit behavior. |
AGENTS.md |
Updates the local-run command to include the now-required flags. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Published from fil-forge/hilt#99 - Digest: `sha256:be8aa83dcfcb18f4c57a027bfac969ffec38c7d87586594c3d17a2e43e98321c` - Commit: fil-forge/hilt@ac4676e - Publish run: https://github.com/fil-forge/hilt/actions/runs/39405191257 Merging applies [`terraform/envs/dev/apps`](https://github.com/fil-forge/infra-central/tree/main/terraform/envs/dev/apps) with no further confirmation.
Published from fil-forge/hilt#99 - Digest: `sha256:be8aa83dcfcb18f4c57a027bfac969ffec38c7d87586594c3d17a2e43e98321c` - Commit: fil-forge/hilt@ac4676e - Publish run: https://github.com/fil-forge/hilt/actions/runs/39405191257 Merging applies [`terraform/envs/dev/apps`](https://github.com/fil-forge/infra-central/tree/main/terraform/envs/dev/apps) with no further confirmation. Co-authored-by: fil-forge-bot[bot] <318653112+fil-forge-bot[bot]@users.noreply.github.com>
Sets every staging pin in `terraform/envs/staging/apps/terraform.tfvars` to what `terraform/envs/dev/apps/terraform.tfvars` pins at df6947f. Merging this is the promotion: Check and deploy applies `terraform/envs/staging/apps` on the merge commit, with no further confirmation. dev passed its smoke test on that commit in https://github.com/fil-forge/infra-central/actions/runs/39405801504. This pull request is rebuilt each time dev passes its smoke test after a push to `main`, and closed once staging matches dev. To hold a service back, push to `bot/promote-staging` by hand: the bot leaves the branch alone while this pull request is open. ## sprue [`sha256:79eb33d`](https://github.com/orgs/fil-forge/packages/container/sprue/1339893466) → [`sha256:705cd28`](https://github.com/orgs/fil-forge/packages/container/sprue/1414568650) What fil-forge/sprue brings over staging's pin, [`9b40689..bb3458c`](fil-forge/sprue@9b40689...bb3458c): - `Upgrade ucantone and log recovered panics` ([85b7799](fil-forge/sprue@85b7799)) - `Fix shared logger mutation in /provider/add` ([dc00875](fil-forge/sprue@dc00875)) - `Tolerate duplicate blob/add and blob/remove` ([c4a810d](fil-forge/sprue@c4a810d)) - `Stop sharing shard slices in memory upload store` ([4c387b0](fil-forge/sprue@4c387b0)) - `Don't panic on failure receipts without a name` ([32423bf](fil-forge/sprue@32423bf)) - `Insert agent index rows in a stable order` ([d5bc0fb](fil-forge/sprue@d5bc0fb)) - `Raise default postgres pool size to 100` ([b2ad08f](fil-forge/sprue@b2ad08f)) - `Lower default postgres pool size to 20` ([2038899](fil-forge/sprue@2038899)) - `Fail a /blob/add that loses the registration race` ([452bc56](fil-forge/sprue@452bc56)) - `Correct the descendingCIDs test helper comment` ([ea8fd67](fil-forge/sprue@ea8fd67)) - `Use conditional writes for admin provider updates` ([77b1492](fil-forge/sprue@77b1492)) - `Revert "Use conditional writes for admin provider updates"` ([5d0de78](fil-forge/sprue@5d0de78)) - fil-forge/sprue#130 ([0b76576](fil-forge/sprue@0b76576)) - fil-forge/sprue#131 ([8c7925a](fil-forge/sprue@8c7925a)) - fil-forge/sprue#132 ([a7762f6](fil-forge/sprue@a7762f6)) - fil-forge/sprue#133 ([a5d84ee](fil-forge/sprue@a5d84ee)) - fil-forge/sprue#137 ([98d22cc](fil-forge/sprue@98d22cc)) - fil-forge/sprue#136 ([9fb2d96](fil-forge/sprue@9fb2d96)) - `AGENTS.md: add telemetry, alerts and dashboards to the definition of done` ([dbd600d](fil-forge/sprue@dbd600d)) - `Address round 1 review of the observability guidance` ([4188af6](fil-forge/sprue@4188af6)) - fil-forge/sprue#141 ([046155c](fil-forge/sprue@046155c)) - fil-forge/sprue#142 ([80c2ed6](fil-forge/sprue@80c2ed6)) - fil-forge/sprue#145 ([9e5422e](fil-forge/sprue@9e5422e)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([a5ee6c7](fil-forge/sprue@a5ee6c7)) - fil-forge/sprue#143 ([3c62127](fil-forge/sprue@3c62127)) - `Rewrap docs/observability.md` ([5c8387a](fil-forge/sprue@5c8387a)) - fil-forge/sprue#140 ([88ec247](fil-forge/sprue@88ec247)) - `Merge branch 'main' into claude/ucantone-upgrade-concurrency-c1a7d5` ([048df30](fil-forge/sprue@048df30)) - fil-forge/sprue#109 ([bb3458c](fil-forge/sprue@bb3458c)) ## hilt [`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:be8aa83`](https://github.com/orgs/fil-forge/packages/container/hilt/1414577134) What fil-forge/hilt brings over staging's pin, [`42dd070..ac4676e`](fil-forge/hilt@42dd070...ac4676e): - fil-forge/hilt#97 ([b5d3b3e](fil-forge/hilt@b5d3b3e)) - fil-forge/hilt#98 ([1f0b2c1](fil-forge/hilt@1f0b2c1)) - fil-forge/hilt#99 ([ac4676e](fil-forge/hilt@ac4676e)) ## swarf [`sha256:c364312`](https://github.com/orgs/fil-forge/packages/container/swarf/1361661163) → [`sha256:4807de8`](https://github.com/orgs/fil-forge/packages/container/swarf/1399568771) What fil-forge/swarf brings over staging's pin, [`4b2e2ae..974851a`](fil-forge/swarf@4b2e2ae...974851a): - `Add AGENTS.md with observability guidance` ([88dbb4c](fil-forge/swarf@88dbb4c)) - `Address round 1 review of the observability guidance` ([305021e](fil-forge/swarf@305021e)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([7ff3da0](fil-forge/swarf@7ff3da0)) - `Rewrap docs/observability.md` ([72018b4](fil-forge/swarf@72018b4)) - fil-forge/swarf#24 ([974851a](fil-forge/swarf@974851a)) ## delegator [`sha256:30b1757`](https://github.com/orgs/fil-forge/packages/container/delegator/1178963957) → [`sha256:7fb4eb5`](https://github.com/orgs/fil-forge/packages/container/delegator/1399567101) What fil-forge/delegator brings over staging's pin, [`b5552f1..3ae7270`](fil-forge/delegator@b5552f1...3ae7270): - fil-forge/delegator#35 ([8bf4153](fil-forge/delegator@8bf4153)) - fil-forge/delegator#36 ([3dfe8c4](fil-forge/delegator@3dfe8c4)) - fil-forge/delegator#37 ([eb81da2](fil-forge/delegator@eb81da2)) - fil-forge/delegator#38 ([314b6d6](fil-forge/delegator@314b6d6)) - fil-forge/delegator#40 ([e588b27](fil-forge/delegator@e588b27)) - fil-forge/delegator#42 ([9cfc334](fil-forge/delegator@9cfc334)) - fil-forge/delegator#43 ([3d3525c](fil-forge/delegator@3d3525c)) - fil-forge/delegator#45 ([5e4090c](fil-forge/delegator@5e4090c)) - fil-forge/delegator#47 ([22d663d](fil-forge/delegator@22d663d)) - fil-forge/delegator#44 ([984ea6e](fil-forge/delegator@984ea6e)) - fil-forge/delegator#46 ([861f107](fil-forge/delegator@861f107)) - fil-forge/delegator#48 ([5a14d35](fil-forge/delegator@5a14d35)) - fil-forge/delegator#49 ([3fe2769](fil-forge/delegator@3fe2769)) - fil-forge/delegator#52 ([1ee1e5b](fil-forge/delegator@1ee1e5b)) - fil-forge/delegator#51 ([d12f29a](fil-forge/delegator@d12f29a)) - fil-forge/delegator#53 ([8d3b969](fil-forge/delegator@8d3b969)) - fil-forge/delegator#55 ([4d6e592](fil-forge/delegator@4d6e592)) - fil-forge/delegator#56 ([4d37521](fil-forge/delegator@4d37521)) - fil-forge/delegator#59 ([26d9d4e](fil-forge/delegator@26d9d4e)) - fil-forge/delegator#60 ([7eeff65](fil-forge/delegator@7eeff65)) - `AGENTS.md: add telemetry, alerts and dashboards to the definition of done` ([fe04a4c](fil-forge/delegator@fe04a4c)) - `Address round 1 review of the observability guidance` ([b29fad9](fil-forge/delegator@b29fad9)) - fil-forge/delegator#62 ([aaba55d](fil-forge/delegator@aaba55d)) - fil-forge/delegator#63 ([b3bc907](fil-forge/delegator@b3bc907)) - fil-forge/delegator#64 ([716049e](fil-forge/delegator@716049e)) - fil-forge/delegator#66 ([2c2784d](fil-forge/delegator@2c2784d)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([409ff15](fil-forge/delegator@409ff15)) - `Rewrap docs/observability.md` ([77e9d0a](fil-forge/delegator@77e9d0a)) - fil-forge/delegator#61 ([3ae7270](fil-forge/delegator@3ae7270)) ## signing_service [`sha256:b7ef5f0`](https://github.com/orgs/fil-forge/packages/container/piri-signing-service/1157634158) → [`sha256:4493534`](https://github.com/orgs/fil-forge/packages/container/piri-signing-service/1399574922) What fil-forge/piri-signing-service brings over staging's pin, [`c2ac7db..678c9c1`](fil-forge/piri-signing-service@c2ac7db...678c9c1): - fil-forge/piri-signing-service#19 ([8472ad9](fil-forge/piri-signing-service@8472ad9)) - `AGENTS.md: add telemetry, alerts and dashboards to the definition of done` ([53d3758](fil-forge/piri-signing-service@53d3758)) - `Address round 1 review of the observability guidance` ([950ef02](fil-forge/piri-signing-service@950ef02)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([e07d0ee](fil-forge/piri-signing-service@e07d0ee)) - `Rewrap docs/observability.md` ([af8b5c1](fil-forge/piri-signing-service@af8b5c1)) - fil-forge/piri-signing-service#22 ([678c9c1](fil-forge/piri-signing-service@678c9c1))
Sets every staging pin in `terraform/envs/staging/apps/terraform.tfvars` to what `terraform/envs/dev/apps/terraform.tfvars` pins at d6562e5. Merging this is the promotion: Check and deploy applies `terraform/envs/staging/apps` on the merge commit, with no further confirmation. dev passed its smoke test on that commit in https://github.com/fil-forge/infra-central/actions/runs/39406592373. This pull request is rebuilt each time dev passes its smoke test after a push to `main`, and closed once staging matches dev. To hold a service back, push to `bot/promote-staging` by hand: the bot leaves the branch alone while this pull request is open. ## sprue [`sha256:79eb33d`](https://github.com/orgs/fil-forge/packages/container/sprue/1339893466) → [`sha256:705cd28`](https://github.com/orgs/fil-forge/packages/container/sprue/1414568650) What fil-forge/sprue brings over staging's pin, [`9b40689..bb3458c`](fil-forge/sprue@9b40689...bb3458c): - `Upgrade ucantone and log recovered panics` ([85b7799](fil-forge/sprue@85b7799)) - `Fix shared logger mutation in /provider/add` ([dc00875](fil-forge/sprue@dc00875)) - `Tolerate duplicate blob/add and blob/remove` ([c4a810d](fil-forge/sprue@c4a810d)) - `Stop sharing shard slices in memory upload store` ([4c387b0](fil-forge/sprue@4c387b0)) - `Don't panic on failure receipts without a name` ([32423bf](fil-forge/sprue@32423bf)) - `Insert agent index rows in a stable order` ([d5bc0fb](fil-forge/sprue@d5bc0fb)) - `Raise default postgres pool size to 100` ([b2ad08f](fil-forge/sprue@b2ad08f)) - `Lower default postgres pool size to 20` ([2038899](fil-forge/sprue@2038899)) - `Fail a /blob/add that loses the registration race` ([452bc56](fil-forge/sprue@452bc56)) - `Correct the descendingCIDs test helper comment` ([ea8fd67](fil-forge/sprue@ea8fd67)) - `Use conditional writes for admin provider updates` ([77b1492](fil-forge/sprue@77b1492)) - `Revert "Use conditional writes for admin provider updates"` ([5d0de78](fil-forge/sprue@5d0de78)) - fil-forge/sprue#130 ([0b76576](fil-forge/sprue@0b76576)) - fil-forge/sprue#131 ([8c7925a](fil-forge/sprue@8c7925a)) - fil-forge/sprue#132 ([a7762f6](fil-forge/sprue@a7762f6)) - fil-forge/sprue#133 ([a5d84ee](fil-forge/sprue@a5d84ee)) - fil-forge/sprue#137 ([98d22cc](fil-forge/sprue@98d22cc)) - fil-forge/sprue#136 ([9fb2d96](fil-forge/sprue@9fb2d96)) - `AGENTS.md: add telemetry, alerts and dashboards to the definition of done` ([dbd600d](fil-forge/sprue@dbd600d)) - `Address round 1 review of the observability guidance` ([4188af6](fil-forge/sprue@4188af6)) - fil-forge/sprue#141 ([046155c](fil-forge/sprue@046155c)) - fil-forge/sprue#142 ([80c2ed6](fil-forge/sprue@80c2ed6)) - fil-forge/sprue#145 ([9e5422e](fil-forge/sprue@9e5422e)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([a5ee6c7](fil-forge/sprue@a5ee6c7)) - fil-forge/sprue#143 ([3c62127](fil-forge/sprue@3c62127)) - `Rewrap docs/observability.md` ([5c8387a](fil-forge/sprue@5c8387a)) - fil-forge/sprue#140 ([88ec247](fil-forge/sprue@88ec247)) - `Merge branch 'main' into claude/ucantone-upgrade-concurrency-c1a7d5` ([048df30](fil-forge/sprue@048df30)) - fil-forge/sprue#109 ([bb3458c](fil-forge/sprue@bb3458c)) ## hilt [`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:be8aa83`](https://github.com/orgs/fil-forge/packages/container/hilt/1414577134) What fil-forge/hilt brings over staging's pin, [`42dd070..ac4676e`](fil-forge/hilt@42dd070...ac4676e): - fil-forge/hilt#97 ([b5d3b3e](fil-forge/hilt@b5d3b3e)) - fil-forge/hilt#98 ([1f0b2c1](fil-forge/hilt@1f0b2c1)) - fil-forge/hilt#99 ([ac4676e](fil-forge/hilt@ac4676e)) ## swarf [`sha256:c364312`](https://github.com/orgs/fil-forge/packages/container/swarf/1361661163) → [`sha256:4807de8`](https://github.com/orgs/fil-forge/packages/container/swarf/1399568771) What fil-forge/swarf brings over staging's pin, [`4b2e2ae..974851a`](fil-forge/swarf@4b2e2ae...974851a): - `Add AGENTS.md with observability guidance` ([88dbb4c](fil-forge/swarf@88dbb4c)) - `Address round 1 review of the observability guidance` ([305021e](fil-forge/swarf@305021e)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([7ff3da0](fil-forge/swarf@7ff3da0)) - `Rewrap docs/observability.md` ([72018b4](fil-forge/swarf@72018b4)) - fil-forge/swarf#24 ([974851a](fil-forge/swarf@974851a)) ## delegator [`sha256:30b1757`](https://github.com/orgs/fil-forge/packages/container/delegator/1178963957) → [`sha256:7fb4eb5`](https://github.com/orgs/fil-forge/packages/container/delegator/1399567101) What fil-forge/delegator brings over staging's pin, [`b5552f1..3ae7270`](fil-forge/delegator@b5552f1...3ae7270): - fil-forge/delegator#35 ([8bf4153](fil-forge/delegator@8bf4153)) - fil-forge/delegator#36 ([3dfe8c4](fil-forge/delegator@3dfe8c4)) - fil-forge/delegator#37 ([eb81da2](fil-forge/delegator@eb81da2)) - fil-forge/delegator#38 ([314b6d6](fil-forge/delegator@314b6d6)) - fil-forge/delegator#40 ([e588b27](fil-forge/delegator@e588b27)) - fil-forge/delegator#42 ([9cfc334](fil-forge/delegator@9cfc334)) - fil-forge/delegator#43 ([3d3525c](fil-forge/delegator@3d3525c)) - fil-forge/delegator#45 ([5e4090c](fil-forge/delegator@5e4090c)) - fil-forge/delegator#47 ([22d663d](fil-forge/delegator@22d663d)) - fil-forge/delegator#44 ([984ea6e](fil-forge/delegator@984ea6e)) - fil-forge/delegator#46 ([861f107](fil-forge/delegator@861f107)) - fil-forge/delegator#48 ([5a14d35](fil-forge/delegator@5a14d35)) - fil-forge/delegator#49 ([3fe2769](fil-forge/delegator@3fe2769)) - fil-forge/delegator#52 ([1ee1e5b](fil-forge/delegator@1ee1e5b)) - fil-forge/delegator#51 ([d12f29a](fil-forge/delegator@d12f29a)) - fil-forge/delegator#53 ([8d3b969](fil-forge/delegator@8d3b969)) - fil-forge/delegator#55 ([4d6e592](fil-forge/delegator@4d6e592)) - fil-forge/delegator#56 ([4d37521](fil-forge/delegator@4d37521)) - fil-forge/delegator#59 ([26d9d4e](fil-forge/delegator@26d9d4e)) - fil-forge/delegator#60 ([7eeff65](fil-forge/delegator@7eeff65)) - `AGENTS.md: add telemetry, alerts and dashboards to the definition of done` ([fe04a4c](fil-forge/delegator@fe04a4c)) - `Address round 1 review of the observability guidance` ([b29fad9](fil-forge/delegator@b29fad9)) - fil-forge/delegator#62 ([aaba55d](fil-forge/delegator@aaba55d)) - fil-forge/delegator#63 ([b3bc907](fil-forge/delegator@b3bc907)) - fil-forge/delegator#64 ([716049e](fil-forge/delegator@716049e)) - fil-forge/delegator#66 ([2c2784d](fil-forge/delegator@2c2784d)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([409ff15](fil-forge/delegator@409ff15)) - `Rewrap docs/observability.md` ([77e9d0a](fil-forge/delegator@77e9d0a)) - fil-forge/delegator#61 ([3ae7270](fil-forge/delegator@3ae7270)) ## signing_service [`sha256:b7ef5f0`](https://github.com/orgs/fil-forge/packages/container/piri-signing-service/1157634158) → [`sha256:4493534`](https://github.com/orgs/fil-forge/packages/container/piri-signing-service/1399574922) What fil-forge/piri-signing-service brings over staging's pin, [`c2ac7db..678c9c1`](fil-forge/piri-signing-service@c2ac7db...678c9c1): - fil-forge/piri-signing-service#19 ([8472ad9](fil-forge/piri-signing-service@8472ad9)) - `AGENTS.md: add telemetry, alerts and dashboards to the definition of done` ([53d3758](fil-forge/piri-signing-service@53d3758)) - `Address round 1 review of the observability guidance` ([950ef02](fil-forge/piri-signing-service@950ef02)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([e07d0ee](fil-forge/piri-signing-service@e07d0ee)) - `Rewrap docs/observability.md` ([af8b5c1](fil-forge/piri-signing-service@af8b5c1)) - fil-forge/piri-signing-service#22 ([678c9c1](fil-forge/piri-signing-service@678c9c1))
Sets every staging pin in `terraform/envs/staging/apps/terraform.tfvars` to what `terraform/envs/dev/apps/terraform.tfvars` pins at da64faf. Merging this is the promotion: Check and deploy applies `terraform/envs/staging/apps` on the merge commit, with no further confirmation. dev passed its smoke test on that commit in https://github.com/fil-forge/infra-central/actions/runs/39412790499. This pull request is rebuilt each time dev passes its smoke test after a push to `main`, and closed once staging matches dev. To hold a service back, push to `bot/promote-staging` by hand: the bot leaves the branch alone while this pull request is open. ## sprue [`sha256:79eb33d`](https://github.com/orgs/fil-forge/packages/container/sprue/1339893466) → [`sha256:705cd28`](https://github.com/orgs/fil-forge/packages/container/sprue/1414568650) What fil-forge/sprue brings over staging's pin, [`9b40689..bb3458c`](fil-forge/sprue@9b40689...bb3458c): - `Upgrade ucantone and log recovered panics` ([85b7799](fil-forge/sprue@85b7799)) - `Fix shared logger mutation in /provider/add` ([dc00875](fil-forge/sprue@dc00875)) - `Tolerate duplicate blob/add and blob/remove` ([c4a810d](fil-forge/sprue@c4a810d)) - `Stop sharing shard slices in memory upload store` ([4c387b0](fil-forge/sprue@4c387b0)) - `Don't panic on failure receipts without a name` ([32423bf](fil-forge/sprue@32423bf)) - `Insert agent index rows in a stable order` ([d5bc0fb](fil-forge/sprue@d5bc0fb)) - `Raise default postgres pool size to 100` ([b2ad08f](fil-forge/sprue@b2ad08f)) - `Lower default postgres pool size to 20` ([2038899](fil-forge/sprue@2038899)) - `Fail a /blob/add that loses the registration race` ([452bc56](fil-forge/sprue@452bc56)) - `Correct the descendingCIDs test helper comment` ([ea8fd67](fil-forge/sprue@ea8fd67)) - `Use conditional writes for admin provider updates` ([77b1492](fil-forge/sprue@77b1492)) - `Revert "Use conditional writes for admin provider updates"` ([5d0de78](fil-forge/sprue@5d0de78)) - fil-forge/sprue#130 ([0b76576](fil-forge/sprue@0b76576)) - fil-forge/sprue#131 ([8c7925a](fil-forge/sprue@8c7925a)) - fil-forge/sprue#132 ([a7762f6](fil-forge/sprue@a7762f6)) - fil-forge/sprue#133 ([a5d84ee](fil-forge/sprue@a5d84ee)) - fil-forge/sprue#137 ([98d22cc](fil-forge/sprue@98d22cc)) - fil-forge/sprue#136 ([9fb2d96](fil-forge/sprue@9fb2d96)) - `AGENTS.md: add telemetry, alerts and dashboards to the definition of done` ([dbd600d](fil-forge/sprue@dbd600d)) - `Address round 1 review of the observability guidance` ([4188af6](fil-forge/sprue@4188af6)) - fil-forge/sprue#141 ([046155c](fil-forge/sprue@046155c)) - fil-forge/sprue#142 ([80c2ed6](fil-forge/sprue@80c2ed6)) - fil-forge/sprue#145 ([9e5422e](fil-forge/sprue@9e5422e)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([a5ee6c7](fil-forge/sprue@a5ee6c7)) - fil-forge/sprue#143 ([3c62127](fil-forge/sprue@3c62127)) - `Rewrap docs/observability.md` ([5c8387a](fil-forge/sprue@5c8387a)) - fil-forge/sprue#140 ([88ec247](fil-forge/sprue@88ec247)) - `Merge branch 'main' into claude/ucantone-upgrade-concurrency-c1a7d5` ([048df30](fil-forge/sprue@048df30)) - fil-forge/sprue#109 ([bb3458c](fil-forge/sprue@bb3458c)) ## hilt [`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:3dbe302`](https://github.com/orgs/fil-forge/packages/container/hilt/1414890670) What fil-forge/hilt brings over staging's pin, [`42dd070..cd26388`](fil-forge/hilt@42dd070...cd26388): - fil-forge/hilt#97 ([b5d3b3e](fil-forge/hilt@b5d3b3e)) - fil-forge/hilt#98 ([1f0b2c1](fil-forge/hilt@1f0b2c1)) - fil-forge/hilt#99 ([ac4676e](fil-forge/hilt@ac4676e)) - fil-forge/hilt#101 ([9328a49](fil-forge/hilt@9328a49)) - fil-forge/hilt#102 ([cd26388](fil-forge/hilt@cd26388)) ## swarf [`sha256:c364312`](https://github.com/orgs/fil-forge/packages/container/swarf/1361661163) → [`sha256:4807de8`](https://github.com/orgs/fil-forge/packages/container/swarf/1399568771) What fil-forge/swarf brings over staging's pin, [`4b2e2ae..974851a`](fil-forge/swarf@4b2e2ae...974851a): - `Add AGENTS.md with observability guidance` ([88dbb4c](fil-forge/swarf@88dbb4c)) - `Address round 1 review of the observability guidance` ([305021e](fil-forge/swarf@305021e)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([7ff3da0](fil-forge/swarf@7ff3da0)) - `Rewrap docs/observability.md` ([72018b4](fil-forge/swarf@72018b4)) - fil-forge/swarf#24 ([974851a](fil-forge/swarf@974851a)) ## delegator [`sha256:30b1757`](https://github.com/orgs/fil-forge/packages/container/delegator/1178963957) → [`sha256:7fb4eb5`](https://github.com/orgs/fil-forge/packages/container/delegator/1399567101) What fil-forge/delegator brings over staging's pin, [`b5552f1..3ae7270`](fil-forge/delegator@b5552f1...3ae7270): - fil-forge/delegator#35 ([8bf4153](fil-forge/delegator@8bf4153)) - fil-forge/delegator#36 ([3dfe8c4](fil-forge/delegator@3dfe8c4)) - fil-forge/delegator#37 ([eb81da2](fil-forge/delegator@eb81da2)) - fil-forge/delegator#38 ([314b6d6](fil-forge/delegator@314b6d6)) - fil-forge/delegator#40 ([e588b27](fil-forge/delegator@e588b27)) - fil-forge/delegator#42 ([9cfc334](fil-forge/delegator@9cfc334)) - fil-forge/delegator#43 ([3d3525c](fil-forge/delegator@3d3525c)) - fil-forge/delegator#45 ([5e4090c](fil-forge/delegator@5e4090c)) - fil-forge/delegator#47 ([22d663d](fil-forge/delegator@22d663d)) - fil-forge/delegator#44 ([984ea6e](fil-forge/delegator@984ea6e)) - fil-forge/delegator#46 ([861f107](fil-forge/delegator@861f107)) - fil-forge/delegator#48 ([5a14d35](fil-forge/delegator@5a14d35)) - fil-forge/delegator#49 ([3fe2769](fil-forge/delegator@3fe2769)) - fil-forge/delegator#52 ([1ee1e5b](fil-forge/delegator@1ee1e5b)) - fil-forge/delegator#51 ([d12f29a](fil-forge/delegator@d12f29a)) - fil-forge/delegator#53 ([8d3b969](fil-forge/delegator@8d3b969)) - fil-forge/delegator#55 ([4d6e592](fil-forge/delegator@4d6e592)) - fil-forge/delegator#56 ([4d37521](fil-forge/delegator@4d37521)) - fil-forge/delegator#59 ([26d9d4e](fil-forge/delegator@26d9d4e)) - fil-forge/delegator#60 ([7eeff65](fil-forge/delegator@7eeff65)) - `AGENTS.md: add telemetry, alerts and dashboards to the definition of done` ([fe04a4c](fil-forge/delegator@fe04a4c)) - `Address round 1 review of the observability guidance` ([b29fad9](fil-forge/delegator@b29fad9)) - fil-forge/delegator#62 ([aaba55d](fil-forge/delegator@aaba55d)) - fil-forge/delegator#63 ([b3bc907](fil-forge/delegator@b3bc907)) - fil-forge/delegator#64 ([716049e](fil-forge/delegator@716049e)) - fil-forge/delegator#66 ([2c2784d](fil-forge/delegator@2c2784d)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([409ff15](fil-forge/delegator@409ff15)) - `Rewrap docs/observability.md` ([77e9d0a](fil-forge/delegator@77e9d0a)) - fil-forge/delegator#61 ([3ae7270](fil-forge/delegator@3ae7270)) ## signing_service [`sha256:b7ef5f0`](https://github.com/orgs/fil-forge/packages/container/piri-signing-service/1157634158) → [`sha256:4493534`](https://github.com/orgs/fil-forge/packages/container/piri-signing-service/1399574922) What fil-forge/piri-signing-service brings over staging's pin, [`c2ac7db..678c9c1`](fil-forge/piri-signing-service@c2ac7db...678c9c1): - fil-forge/piri-signing-service#19 ([8472ad9](fil-forge/piri-signing-service@8472ad9)) - `AGENTS.md: add telemetry, alerts and dashboards to the definition of done` ([53d3758](fil-forge/piri-signing-service@53d3758)) - `Address round 1 review of the observability guidance` ([950ef02](fil-forge/piri-signing-service@950ef02)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([e07d0ee](fil-forge/piri-signing-service@e07d0ee)) - `Rewrap docs/observability.md` ([af8b5c1](fil-forge/piri-signing-service@af8b5c1)) - fil-forge/piri-signing-service#22 ([678c9c1](fil-forge/piri-signing-service@678c9c1))
The first run of E2E tests (fil-forge/infra-nodes#154) discovered that Hilt in dev cannot delete tenants because it was configured to use the production revocation service. I decided to make the revocation service config required in #99. Claude flagged that there is a similar footgun related to the configuration of the upload service, so in this PR I am making it required too. --- _Written by Claude._ Require `upload.service_id`, `upload.service_url` and `upload.product_id` instead of defaulting them to prod's Sprue (`did:web:upload.fil-forge.com`, `https://upload.fil-forge.com`) and prod's product DID (`did:web:hilt.fil-forge.com`). A stage that forgot these settings would register its tenants and provision its buckets on prod Sprue. #99 fixes the same pattern for the revocation settings, which turned every dev tenant delete into a 500. - Remove the three `SetDefault` calls in `pkg/config` and the `--upload-*` flag defaults in `cmd/main.go`. - `NewUploadClient` rejects an empty service DID, URL or product DID, so `hilt serve` exits during fx construction with, for example, `upload.product_id is required: set HILT_UPLOAD_PRODUCT_ID or --upload-product-id`. - `upload.product_id` was optional in the constructor. Tenant provisioning always passes it to Sprue's `/customer/add`, so a `serve` without it cannot create tenants, and it is now required too. `upload.proofs` stays optional. - The `hilt client` commands load config but never build the upload client, so they keep working without these settings. - Tests: `config.Load` leaves the upload config empty when nothing sets it; `NewUploadClient` errors on each missing field and on an invalid product DID; an fx app with the upload client and empty config fails to construct. - README and AGENTS.md mark the three settings required. Safe to merge once reviewed. infra-central's shared `modules/apps`, used by dev, staging and prod, has set all three `HILT_UPLOAD_*` variables since 2026-08-19. Smelt's `systems/hilt/compose.yml` sets them for the integration stack. This PR and #99 edit neighbouring lines in `pkg/config/config.go` `SetDefaults` and the same "Run locally" line in AGENTS.md. Whichever merges second needs a small conflict resolution. Signed-off-by: Miroslav Bajtoš <oss@bajtos.net>
Sets every staging pin in `terraform/envs/staging/apps/terraform.tfvars` to what `terraform/envs/dev/apps/terraform.tfvars` pins at cb2213d. Merging this is the promotion: Check and deploy applies `terraform/envs/staging/apps` on the merge commit, with no further confirmation. dev passed its smoke test on that commit in https://github.com/fil-forge/infra-central/actions/runs/39423531338. This pull request is rebuilt each time dev passes its smoke test after a push to `main`, and closed once staging matches dev. To hold a service back, push to `bot/promote-staging` by hand: the bot leaves the branch alone while this pull request is open. ## sprue [`sha256:79eb33d`](https://github.com/orgs/fil-forge/packages/container/sprue/1339893466) → [`sha256:0e6f85e`](https://github.com/orgs/fil-forge/packages/container/sprue/1415261149) What fil-forge/sprue brings over staging's pin, [`9b40689..ad4c80f`](fil-forge/sprue@9b40689...ad4c80f): - `Upgrade ucantone and log recovered panics` ([85b7799](fil-forge/sprue@85b7799)) - `Fix shared logger mutation in /provider/add` ([dc00875](fil-forge/sprue@dc00875)) - `Tolerate duplicate blob/add and blob/remove` ([c4a810d](fil-forge/sprue@c4a810d)) - `Stop sharing shard slices in memory upload store` ([4c387b0](fil-forge/sprue@4c387b0)) - `Don't panic on failure receipts without a name` ([32423bf](fil-forge/sprue@32423bf)) - `Insert agent index rows in a stable order` ([d5bc0fb](fil-forge/sprue@d5bc0fb)) - `Raise default postgres pool size to 100` ([b2ad08f](fil-forge/sprue@b2ad08f)) - `Lower default postgres pool size to 20` ([2038899](fil-forge/sprue@2038899)) - `Fail a /blob/add that loses the registration race` ([452bc56](fil-forge/sprue@452bc56)) - `Correct the descendingCIDs test helper comment` ([ea8fd67](fil-forge/sprue@ea8fd67)) - `Use conditional writes for admin provider updates` ([77b1492](fil-forge/sprue@77b1492)) - `Revert "Use conditional writes for admin provider updates"` ([5d0de78](fil-forge/sprue@5d0de78)) - fil-forge/sprue#130 ([0b76576](fil-forge/sprue@0b76576)) - fil-forge/sprue#131 ([8c7925a](fil-forge/sprue@8c7925a)) - fil-forge/sprue#132 ([a7762f6](fil-forge/sprue@a7762f6)) - fil-forge/sprue#133 ([a5d84ee](fil-forge/sprue@a5d84ee)) - fil-forge/sprue#137 ([98d22cc](fil-forge/sprue@98d22cc)) - fil-forge/sprue#136 ([9fb2d96](fil-forge/sprue@9fb2d96)) - `AGENTS.md: add telemetry, alerts and dashboards to the definition of done` ([dbd600d](fil-forge/sprue@dbd600d)) - `Address round 1 review of the observability guidance` ([4188af6](fil-forge/sprue@4188af6)) - fil-forge/sprue#141 ([046155c](fil-forge/sprue@046155c)) - fil-forge/sprue#142 ([80c2ed6](fil-forge/sprue@80c2ed6)) - fil-forge/sprue#145 ([9e5422e](fil-forge/sprue@9e5422e)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([a5ee6c7](fil-forge/sprue@a5ee6c7)) - fil-forge/sprue#143 ([3c62127](fil-forge/sprue@3c62127)) - `Rewrap docs/observability.md` ([5c8387a](fil-forge/sprue@5c8387a)) - fil-forge/sprue#140 ([88ec247](fil-forge/sprue@88ec247)) - `Merge branch 'main' into claude/ucantone-upgrade-concurrency-c1a7d5` ([048df30](fil-forge/sprue@048df30)) - fil-forge/sprue#109 ([bb3458c](fil-forge/sprue@bb3458c)) - `Use conditional writes for admin provider updates` ([34ff3f9](fil-forge/sprue@34ff3f9)) - `Copy replication weights in memory provider store` ([0ca9a6e](fil-forge/sprue@0ca9a6e)) - fil-forge/sprue#110 ([ad4c80f](fil-forge/sprue@ad4c80f)) ## hilt [`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:3dbe302`](https://github.com/orgs/fil-forge/packages/container/hilt/1414890670) What fil-forge/hilt brings over staging's pin, [`42dd070..cd26388`](fil-forge/hilt@42dd070...cd26388): - fil-forge/hilt#97 ([b5d3b3e](fil-forge/hilt@b5d3b3e)) - fil-forge/hilt#98 ([1f0b2c1](fil-forge/hilt@1f0b2c1)) - fil-forge/hilt#99 ([ac4676e](fil-forge/hilt@ac4676e)) - fil-forge/hilt#101 ([9328a49](fil-forge/hilt@9328a49)) - fil-forge/hilt#102 ([cd26388](fil-forge/hilt@cd26388)) ## swarf [`sha256:c364312`](https://github.com/orgs/fil-forge/packages/container/swarf/1361661163) → [`sha256:4807de8`](https://github.com/orgs/fil-forge/packages/container/swarf/1399568771) What fil-forge/swarf brings over staging's pin, [`4b2e2ae..974851a`](fil-forge/swarf@4b2e2ae...974851a): - `Add AGENTS.md with observability guidance` ([88dbb4c](fil-forge/swarf@88dbb4c)) - `Address round 1 review of the observability guidance` ([305021e](fil-forge/swarf@305021e)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([7ff3da0](fil-forge/swarf@7ff3da0)) - `Rewrap docs/observability.md` ([72018b4](fil-forge/swarf@72018b4)) - fil-forge/swarf#24 ([974851a](fil-forge/swarf@974851a)) ## delegator [`sha256:30b1757`](https://github.com/orgs/fil-forge/packages/container/delegator/1178963957) → [`sha256:7fb4eb5`](https://github.com/orgs/fil-forge/packages/container/delegator/1399567101) What fil-forge/delegator brings over staging's pin, [`b5552f1..3ae7270`](fil-forge/delegator@b5552f1...3ae7270): - fil-forge/delegator#35 ([8bf4153](fil-forge/delegator@8bf4153)) - fil-forge/delegator#36 ([3dfe8c4](fil-forge/delegator@3dfe8c4)) - fil-forge/delegator#37 ([eb81da2](fil-forge/delegator@eb81da2)) - fil-forge/delegator#38 ([314b6d6](fil-forge/delegator@314b6d6)) - fil-forge/delegator#40 ([e588b27](fil-forge/delegator@e588b27)) - fil-forge/delegator#42 ([9cfc334](fil-forge/delegator@9cfc334)) - fil-forge/delegator#43 ([3d3525c](fil-forge/delegator@3d3525c)) - fil-forge/delegator#45 ([5e4090c](fil-forge/delegator@5e4090c)) - fil-forge/delegator#47 ([22d663d](fil-forge/delegator@22d663d)) - fil-forge/delegator#44 ([984ea6e](fil-forge/delegator@984ea6e)) - fil-forge/delegator#46 ([861f107](fil-forge/delegator@861f107)) - fil-forge/delegator#48 ([5a14d35](fil-forge/delegator@5a14d35)) - fil-forge/delegator#49 ([3fe2769](fil-forge/delegator@3fe2769)) - fil-forge/delegator#52 ([1ee1e5b](fil-forge/delegator@1ee1e5b)) - fil-forge/delegator#51 ([d12f29a](fil-forge/delegator@d12f29a)) - fil-forge/delegator#53 ([8d3b969](fil-forge/delegator@8d3b969)) - fil-forge/delegator#55 ([4d6e592](fil-forge/delegator@4d6e592)) - fil-forge/delegator#56 ([4d37521](fil-forge/delegator@4d37521)) - fil-forge/delegator#59 ([26d9d4e](fil-forge/delegator@26d9d4e)) - fil-forge/delegator#60 ([7eeff65](fil-forge/delegator@7eeff65)) - `AGENTS.md: add telemetry, alerts and dashboards to the definition of done` ([fe04a4c](fil-forge/delegator@fe04a4c)) - `Address round 1 review of the observability guidance` ([b29fad9](fil-forge/delegator@b29fad9)) - fil-forge/delegator#62 ([aaba55d](fil-forge/delegator@aaba55d)) - fil-forge/delegator#63 ([b3bc907](fil-forge/delegator@b3bc907)) - fil-forge/delegator#64 ([716049e](fil-forge/delegator@716049e)) - fil-forge/delegator#66 ([2c2784d](fil-forge/delegator@2c2784d)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([409ff15](fil-forge/delegator@409ff15)) - `Rewrap docs/observability.md` ([77e9d0a](fil-forge/delegator@77e9d0a)) - fil-forge/delegator#61 ([3ae7270](fil-forge/delegator@3ae7270)) ## signing_service [`sha256:b7ef5f0`](https://github.com/orgs/fil-forge/packages/container/piri-signing-service/1157634158) → [`sha256:4493534`](https://github.com/orgs/fil-forge/packages/container/piri-signing-service/1399574922) What fil-forge/piri-signing-service brings over staging's pin, [`c2ac7db..678c9c1`](fil-forge/piri-signing-service@c2ac7db...678c9c1): - fil-forge/piri-signing-service#19 ([8472ad9](fil-forge/piri-signing-service@8472ad9)) - `AGENTS.md: add telemetry, alerts and dashboards to the definition of done` ([53d3758](fil-forge/piri-signing-service@53d3758)) - `Address round 1 review of the observability guidance` ([950ef02](fil-forge/piri-signing-service@950ef02)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([e07d0ee](fil-forge/piri-signing-service@e07d0ee)) - `Rewrap docs/observability.md` ([af8b5c1](fil-forge/piri-signing-service@af8b5c1)) - fil-forge/piri-signing-service#22 ([678c9c1](fil-forge/piri-signing-service@678c9c1))
Sets every staging pin in `terraform/envs/staging/apps/terraform.tfvars` to what `terraform/envs/dev/apps/terraform.tfvars` pins at a4b4089. Merging this is the promotion: Check and deploy applies `terraform/envs/staging/apps` on the merge commit, with no further confirmation. dev passed its smoke test on that commit in https://github.com/fil-forge/infra-central/actions/runs/39424031564. This pull request is rebuilt each time dev passes its smoke test after a push to `main`, and closed once staging matches dev. To hold a service back, push to `bot/promote-staging` by hand: the bot leaves the branch alone while this pull request is open. ## sprue [`sha256:79eb33d`](https://github.com/orgs/fil-forge/packages/container/sprue/1339893466) → [`sha256:0e6f85e`](https://github.com/orgs/fil-forge/packages/container/sprue/1415261149) What fil-forge/sprue brings over staging's pin, [`9b40689..ad4c80f`](fil-forge/sprue@9b40689...ad4c80f): - `Upgrade ucantone and log recovered panics` ([85b7799](fil-forge/sprue@85b7799)) - `Fix shared logger mutation in /provider/add` ([dc00875](fil-forge/sprue@dc00875)) - `Tolerate duplicate blob/add and blob/remove` ([c4a810d](fil-forge/sprue@c4a810d)) - `Stop sharing shard slices in memory upload store` ([4c387b0](fil-forge/sprue@4c387b0)) - `Don't panic on failure receipts without a name` ([32423bf](fil-forge/sprue@32423bf)) - `Insert agent index rows in a stable order` ([d5bc0fb](fil-forge/sprue@d5bc0fb)) - `Raise default postgres pool size to 100` ([b2ad08f](fil-forge/sprue@b2ad08f)) - `Lower default postgres pool size to 20` ([2038899](fil-forge/sprue@2038899)) - `Fail a /blob/add that loses the registration race` ([452bc56](fil-forge/sprue@452bc56)) - `Correct the descendingCIDs test helper comment` ([ea8fd67](fil-forge/sprue@ea8fd67)) - `Use conditional writes for admin provider updates` ([77b1492](fil-forge/sprue@77b1492)) - `Revert "Use conditional writes for admin provider updates"` ([5d0de78](fil-forge/sprue@5d0de78)) - fil-forge/sprue#130 ([0b76576](fil-forge/sprue@0b76576)) - fil-forge/sprue#131 ([8c7925a](fil-forge/sprue@8c7925a)) - fil-forge/sprue#132 ([a7762f6](fil-forge/sprue@a7762f6)) - fil-forge/sprue#133 ([a5d84ee](fil-forge/sprue@a5d84ee)) - fil-forge/sprue#137 ([98d22cc](fil-forge/sprue@98d22cc)) - fil-forge/sprue#136 ([9fb2d96](fil-forge/sprue@9fb2d96)) - `AGENTS.md: add telemetry, alerts and dashboards to the definition of done` ([dbd600d](fil-forge/sprue@dbd600d)) - `Address round 1 review of the observability guidance` ([4188af6](fil-forge/sprue@4188af6)) - fil-forge/sprue#141 ([046155c](fil-forge/sprue@046155c)) - fil-forge/sprue#142 ([80c2ed6](fil-forge/sprue@80c2ed6)) - fil-forge/sprue#145 ([9e5422e](fil-forge/sprue@9e5422e)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([a5ee6c7](fil-forge/sprue@a5ee6c7)) - fil-forge/sprue#143 ([3c62127](fil-forge/sprue@3c62127)) - `Rewrap docs/observability.md` ([5c8387a](fil-forge/sprue@5c8387a)) - fil-forge/sprue#140 ([88ec247](fil-forge/sprue@88ec247)) - `Merge branch 'main' into claude/ucantone-upgrade-concurrency-c1a7d5` ([048df30](fil-forge/sprue@048df30)) - fil-forge/sprue#109 ([bb3458c](fil-forge/sprue@bb3458c)) - `Use conditional writes for admin provider updates` ([34ff3f9](fil-forge/sprue@34ff3f9)) - `Copy replication weights in memory provider store` ([0ca9a6e](fil-forge/sprue@0ca9a6e)) - fil-forge/sprue#110 ([ad4c80f](fil-forge/sprue@ad4c80f)) ## hilt [`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:d693f58`](https://github.com/orgs/fil-forge/packages/container/hilt/1415385710) What fil-forge/hilt brings over staging's pin, [`42dd070..358562a`](fil-forge/hilt@42dd070...358562a): - fil-forge/hilt#97 ([b5d3b3e](fil-forge/hilt@b5d3b3e)) - fil-forge/hilt#98 ([1f0b2c1](fil-forge/hilt@1f0b2c1)) - fil-forge/hilt#99 ([ac4676e](fil-forge/hilt@ac4676e)) - fil-forge/hilt#101 ([9328a49](fil-forge/hilt@9328a49)) - fil-forge/hilt#102 ([cd26388](fil-forge/hilt@cd26388)) - fil-forge/hilt#100 ([358562a](fil-forge/hilt@358562a)) ## swarf [`sha256:c364312`](https://github.com/orgs/fil-forge/packages/container/swarf/1361661163) → [`sha256:4807de8`](https://github.com/orgs/fil-forge/packages/container/swarf/1399568771) What fil-forge/swarf brings over staging's pin, [`4b2e2ae..974851a`](fil-forge/swarf@4b2e2ae...974851a): - `Add AGENTS.md with observability guidance` ([88dbb4c](fil-forge/swarf@88dbb4c)) - `Address round 1 review of the observability guidance` ([305021e](fil-forge/swarf@305021e)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([7ff3da0](fil-forge/swarf@7ff3da0)) - `Rewrap docs/observability.md` ([72018b4](fil-forge/swarf@72018b4)) - fil-forge/swarf#24 ([974851a](fil-forge/swarf@974851a)) ## delegator [`sha256:30b1757`](https://github.com/orgs/fil-forge/packages/container/delegator/1178963957) → [`sha256:7fb4eb5`](https://github.com/orgs/fil-forge/packages/container/delegator/1399567101) What fil-forge/delegator brings over staging's pin, [`b5552f1..3ae7270`](fil-forge/delegator@b5552f1...3ae7270): - fil-forge/delegator#35 ([8bf4153](fil-forge/delegator@8bf4153)) - fil-forge/delegator#36 ([3dfe8c4](fil-forge/delegator@3dfe8c4)) - fil-forge/delegator#37 ([eb81da2](fil-forge/delegator@eb81da2)) - fil-forge/delegator#38 ([314b6d6](fil-forge/delegator@314b6d6)) - fil-forge/delegator#40 ([e588b27](fil-forge/delegator@e588b27)) - fil-forge/delegator#42 ([9cfc334](fil-forge/delegator@9cfc334)) - fil-forge/delegator#43 ([3d3525c](fil-forge/delegator@3d3525c)) - fil-forge/delegator#45 ([5e4090c](fil-forge/delegator@5e4090c)) - fil-forge/delegator#47 ([22d663d](fil-forge/delegator@22d663d)) - fil-forge/delegator#44 ([984ea6e](fil-forge/delegator@984ea6e)) - fil-forge/delegator#46 ([861f107](fil-forge/delegator@861f107)) - fil-forge/delegator#48 ([5a14d35](fil-forge/delegator@5a14d35)) - fil-forge/delegator#49 ([3fe2769](fil-forge/delegator@3fe2769)) - fil-forge/delegator#52 ([1ee1e5b](fil-forge/delegator@1ee1e5b)) - fil-forge/delegator#51 ([d12f29a](fil-forge/delegator@d12f29a)) - fil-forge/delegator#53 ([8d3b969](fil-forge/delegator@8d3b969)) - fil-forge/delegator#55 ([4d6e592](fil-forge/delegator@4d6e592)) - fil-forge/delegator#56 ([4d37521](fil-forge/delegator@4d37521)) - fil-forge/delegator#59 ([26d9d4e](fil-forge/delegator@26d9d4e)) - fil-forge/delegator#60 ([7eeff65](fil-forge/delegator@7eeff65)) - `AGENTS.md: add telemetry, alerts and dashboards to the definition of done` ([fe04a4c](fil-forge/delegator@fe04a4c)) - `Address round 1 review of the observability guidance` ([b29fad9](fil-forge/delegator@b29fad9)) - fil-forge/delegator#62 ([aaba55d](fil-forge/delegator@aaba55d)) - fil-forge/delegator#63 ([b3bc907](fil-forge/delegator@b3bc907)) - fil-forge/delegator#64 ([716049e](fil-forge/delegator@716049e)) - fil-forge/delegator#66 ([2c2784d](fil-forge/delegator@2c2784d)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([409ff15](fil-forge/delegator@409ff15)) - `Rewrap docs/observability.md` ([77e9d0a](fil-forge/delegator@77e9d0a)) - fil-forge/delegator#61 ([3ae7270](fil-forge/delegator@3ae7270)) ## signing_service [`sha256:b7ef5f0`](https://github.com/orgs/fil-forge/packages/container/piri-signing-service/1157634158) → [`sha256:4493534`](https://github.com/orgs/fil-forge/packages/container/piri-signing-service/1399574922) What fil-forge/piri-signing-service brings over staging's pin, [`c2ac7db..678c9c1`](fil-forge/piri-signing-service@c2ac7db...678c9c1): - fil-forge/piri-signing-service#19 ([8472ad9](fil-forge/piri-signing-service@8472ad9)) - `AGENTS.md: add telemetry, alerts and dashboards to the definition of done` ([53d3758](fil-forge/piri-signing-service@53d3758)) - `Address round 1 review of the observability guidance` ([950ef02](fil-forge/piri-signing-service@950ef02)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([e07d0ee](fil-forge/piri-signing-service@e07d0ee)) - `Rewrap docs/observability.md` ([af8b5c1](fil-forge/piri-signing-service@af8b5c1)) - fil-forge/piri-signing-service#22 ([678c9c1](fil-forge/piri-signing-service@678c9c1))
Sets every staging pin in `terraform/envs/staging/apps/terraform.tfvars` to what `terraform/envs/dev/apps/terraform.tfvars` pins at 4c6e6e1. Merging this is the promotion: Check and deploy applies `terraform/envs/staging/apps` on the merge commit, with no further confirmation. dev passed its smoke test on that commit in https://github.com/fil-forge/infra-central/actions/runs/39444651185. This pull request is rebuilt each time dev passes its smoke test after a push to `main`, and closed once staging matches dev. To hold a service back, push to `bot/promote-staging` by hand: the bot leaves the branch alone while this pull request is open. ## sprue [`sha256:79eb33d`](https://github.com/orgs/fil-forge/packages/container/sprue/1339893466) → [`sha256:1c37f2f`](https://github.com/orgs/fil-forge/packages/container/sprue/1416201344) What fil-forge/sprue brings over staging's pin, [`9b40689..2ee5d6c`](fil-forge/sprue@9b40689...2ee5d6c): - `Upgrade ucantone and log recovered panics` ([85b7799](fil-forge/sprue@85b7799)) - `Fix shared logger mutation in /provider/add` ([dc00875](fil-forge/sprue@dc00875)) - `Tolerate duplicate blob/add and blob/remove` ([c4a810d](fil-forge/sprue@c4a810d)) - `Stop sharing shard slices in memory upload store` ([4c387b0](fil-forge/sprue@4c387b0)) - `Don't panic on failure receipts without a name` ([32423bf](fil-forge/sprue@32423bf)) - `Insert agent index rows in a stable order` ([d5bc0fb](fil-forge/sprue@d5bc0fb)) - `Raise default postgres pool size to 100` ([b2ad08f](fil-forge/sprue@b2ad08f)) - `Lower default postgres pool size to 20` ([2038899](fil-forge/sprue@2038899)) - `Fail a /blob/add that loses the registration race` ([452bc56](fil-forge/sprue@452bc56)) - `Correct the descendingCIDs test helper comment` ([ea8fd67](fil-forge/sprue@ea8fd67)) - `Use conditional writes for admin provider updates` ([77b1492](fil-forge/sprue@77b1492)) - `Revert "Use conditional writes for admin provider updates"` ([5d0de78](fil-forge/sprue@5d0de78)) - fil-forge/sprue#130 ([0b76576](fil-forge/sprue@0b76576)) - fil-forge/sprue#131 ([8c7925a](fil-forge/sprue@8c7925a)) - fil-forge/sprue#132 ([a7762f6](fil-forge/sprue@a7762f6)) - fil-forge/sprue#133 ([a5d84ee](fil-forge/sprue@a5d84ee)) - fil-forge/sprue#137 ([98d22cc](fil-forge/sprue@98d22cc)) - fil-forge/sprue#136 ([9fb2d96](fil-forge/sprue@9fb2d96)) - `AGENTS.md: add telemetry, alerts and dashboards to the definition of done` ([dbd600d](fil-forge/sprue@dbd600d)) - `Address round 1 review of the observability guidance` ([4188af6](fil-forge/sprue@4188af6)) - fil-forge/sprue#141 ([046155c](fil-forge/sprue@046155c)) - fil-forge/sprue#142 ([80c2ed6](fil-forge/sprue@80c2ed6)) - fil-forge/sprue#145 ([9e5422e](fil-forge/sprue@9e5422e)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([a5ee6c7](fil-forge/sprue@a5ee6c7)) - fil-forge/sprue#143 ([3c62127](fil-forge/sprue@3c62127)) - `Rewrap docs/observability.md` ([5c8387a](fil-forge/sprue@5c8387a)) - fil-forge/sprue#140 ([88ec247](fil-forge/sprue@88ec247)) - `Merge branch 'main' into claude/ucantone-upgrade-concurrency-c1a7d5` ([048df30](fil-forge/sprue@048df30)) - fil-forge/sprue#109 ([bb3458c](fil-forge/sprue@bb3458c)) - `Use conditional writes for admin provider updates` ([34ff3f9](fil-forge/sprue@34ff3f9)) - `Copy replication weights in memory provider store` ([0ca9a6e](fil-forge/sprue@0ca9a6e)) - fil-forge/sprue#110 ([ad4c80f](fil-forge/sprue@ad4c80f)) - fil-forge/sprue#148 ([2ee5d6c](fil-forge/sprue@2ee5d6c)) ## hilt [`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:d693f58`](https://github.com/orgs/fil-forge/packages/container/hilt/1415385710) What fil-forge/hilt brings over staging's pin, [`42dd070..358562a`](fil-forge/hilt@42dd070...358562a): - fil-forge/hilt#97 ([b5d3b3e](fil-forge/hilt@b5d3b3e)) - fil-forge/hilt#98 ([1f0b2c1](fil-forge/hilt@1f0b2c1)) - fil-forge/hilt#99 ([ac4676e](fil-forge/hilt@ac4676e)) - fil-forge/hilt#101 ([9328a49](fil-forge/hilt@9328a49)) - fil-forge/hilt#102 ([cd26388](fil-forge/hilt@cd26388)) - fil-forge/hilt#100 ([358562a](fil-forge/hilt@358562a)) ## swarf [`sha256:c364312`](https://github.com/orgs/fil-forge/packages/container/swarf/1361661163) → [`sha256:4807de8`](https://github.com/orgs/fil-forge/packages/container/swarf/1399568771) What fil-forge/swarf brings over staging's pin, [`4b2e2ae..974851a`](fil-forge/swarf@4b2e2ae...974851a): - `Add AGENTS.md with observability guidance` ([88dbb4c](fil-forge/swarf@88dbb4c)) - `Address round 1 review of the observability guidance` ([305021e](fil-forge/swarf@305021e)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([7ff3da0](fil-forge/swarf@7ff3da0)) - `Rewrap docs/observability.md` ([72018b4](fil-forge/swarf@72018b4)) - fil-forge/swarf#24 ([974851a](fil-forge/swarf@974851a)) ## delegator [`sha256:30b1757`](https://github.com/orgs/fil-forge/packages/container/delegator/1178963957) → [`sha256:7fb4eb5`](https://github.com/orgs/fil-forge/packages/container/delegator/1399567101) What fil-forge/delegator brings over staging's pin, [`b5552f1..3ae7270`](fil-forge/delegator@b5552f1...3ae7270): - fil-forge/delegator#35 ([8bf4153](fil-forge/delegator@8bf4153)) - fil-forge/delegator#36 ([3dfe8c4](fil-forge/delegator@3dfe8c4)) - fil-forge/delegator#37 ([eb81da2](fil-forge/delegator@eb81da2)) - fil-forge/delegator#38 ([314b6d6](fil-forge/delegator@314b6d6)) - fil-forge/delegator#40 ([e588b27](fil-forge/delegator@e588b27)) - fil-forge/delegator#42 ([9cfc334](fil-forge/delegator@9cfc334)) - fil-forge/delegator#43 ([3d3525c](fil-forge/delegator@3d3525c)) - fil-forge/delegator#45 ([5e4090c](fil-forge/delegator@5e4090c)) - fil-forge/delegator#47 ([22d663d](fil-forge/delegator@22d663d)) - fil-forge/delegator#44 ([984ea6e](fil-forge/delegator@984ea6e)) - fil-forge/delegator#46 ([861f107](fil-forge/delegator@861f107)) - fil-forge/delegator#48 ([5a14d35](fil-forge/delegator@5a14d35)) - fil-forge/delegator#49 ([3fe2769](fil-forge/delegator@3fe2769)) - fil-forge/delegator#52 ([1ee1e5b](fil-forge/delegator@1ee1e5b)) - fil-forge/delegator#51 ([d12f29a](fil-forge/delegator@d12f29a)) - fil-forge/delegator#53 ([8d3b969](fil-forge/delegator@8d3b969)) - fil-forge/delegator#55 ([4d6e592](fil-forge/delegator@4d6e592)) - fil-forge/delegator#56 ([4d37521](fil-forge/delegator@4d37521)) - fil-forge/delegator#59 ([26d9d4e](fil-forge/delegator@26d9d4e)) - fil-forge/delegator#60 ([7eeff65](fil-forge/delegator@7eeff65)) - `AGENTS.md: add telemetry, alerts and dashboards to the definition of done` ([fe04a4c](fil-forge/delegator@fe04a4c)) - `Address round 1 review of the observability guidance` ([b29fad9](fil-forge/delegator@b29fad9)) - fil-forge/delegator#62 ([aaba55d](fil-forge/delegator@aaba55d)) - fil-forge/delegator#63 ([b3bc907](fil-forge/delegator@b3bc907)) - fil-forge/delegator#64 ([716049e](fil-forge/delegator@716049e)) - fil-forge/delegator#66 ([2c2784d](fil-forge/delegator@2c2784d)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([409ff15](fil-forge/delegator@409ff15)) - `Rewrap docs/observability.md` ([77e9d0a](fil-forge/delegator@77e9d0a)) - fil-forge/delegator#61 ([3ae7270](fil-forge/delegator@3ae7270)) ## signing_service [`sha256:b7ef5f0`](https://github.com/orgs/fil-forge/packages/container/piri-signing-service/1157634158) → [`sha256:4493534`](https://github.com/orgs/fil-forge/packages/container/piri-signing-service/1399574922) What fil-forge/piri-signing-service brings over staging's pin, [`c2ac7db..678c9c1`](fil-forge/piri-signing-service@c2ac7db...678c9c1): - fil-forge/piri-signing-service#19 ([8472ad9](fil-forge/piri-signing-service@8472ad9)) - `AGENTS.md: add telemetry, alerts and dashboards to the definition of done` ([53d3758](fil-forge/piri-signing-service@53d3758)) - `Address round 1 review of the observability guidance` ([950ef02](fil-forge/piri-signing-service@950ef02)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([e07d0ee](fil-forge/piri-signing-service@e07d0ee)) - `Rewrap docs/observability.md` ([af8b5c1](fil-forge/piri-signing-service@af8b5c1)) - fil-forge/piri-signing-service#22 ([678c9c1](fil-forge/piri-signing-service@678c9c1))
Sets every staging pin in `terraform/envs/staging/apps/terraform.tfvars` to what `terraform/envs/dev/apps/terraform.tfvars` pins at fe0e133. Merging this is the promotion: Check and deploy applies `terraform/envs/staging/apps` on the merge commit, with no further confirmation. dev passed its smoke test on that commit in https://github.com/fil-forge/infra-central/actions/runs/39450487506. This pull request is rebuilt each time dev passes its smoke test after a push to `main`, and closed once staging matches dev. To hold a service back, push to `bot/promote-staging` by hand: the bot leaves the branch alone while this pull request is open. ## sprue [`sha256:79eb33d`](https://github.com/orgs/fil-forge/packages/container/sprue/1339893466) → [`sha256:1828e90`](https://github.com/orgs/fil-forge/packages/container/sprue/1416415898) What fil-forge/sprue brings over staging's pin, [`9b40689..7b94804`](fil-forge/sprue@9b40689...7b94804): - `Upgrade ucantone and log recovered panics` ([85b7799](fil-forge/sprue@85b7799)) - `Fix shared logger mutation in /provider/add` ([dc00875](fil-forge/sprue@dc00875)) - `Tolerate duplicate blob/add and blob/remove` ([c4a810d](fil-forge/sprue@c4a810d)) - `Stop sharing shard slices in memory upload store` ([4c387b0](fil-forge/sprue@4c387b0)) - `Don't panic on failure receipts without a name` ([32423bf](fil-forge/sprue@32423bf)) - `Insert agent index rows in a stable order` ([d5bc0fb](fil-forge/sprue@d5bc0fb)) - `Raise default postgres pool size to 100` ([b2ad08f](fil-forge/sprue@b2ad08f)) - `Lower default postgres pool size to 20` ([2038899](fil-forge/sprue@2038899)) - `Fail a /blob/add that loses the registration race` ([452bc56](fil-forge/sprue@452bc56)) - `Correct the descendingCIDs test helper comment` ([ea8fd67](fil-forge/sprue@ea8fd67)) - `Use conditional writes for admin provider updates` ([77b1492](fil-forge/sprue@77b1492)) - `Revert "Use conditional writes for admin provider updates"` ([5d0de78](fil-forge/sprue@5d0de78)) - fil-forge/sprue#130 ([0b76576](fil-forge/sprue@0b76576)) - fil-forge/sprue#131 ([8c7925a](fil-forge/sprue@8c7925a)) - fil-forge/sprue#132 ([a7762f6](fil-forge/sprue@a7762f6)) - fil-forge/sprue#133 ([a5d84ee](fil-forge/sprue@a5d84ee)) - fil-forge/sprue#137 ([98d22cc](fil-forge/sprue@98d22cc)) - fil-forge/sprue#136 ([9fb2d96](fil-forge/sprue@9fb2d96)) - `AGENTS.md: add telemetry, alerts and dashboards to the definition of done` ([dbd600d](fil-forge/sprue@dbd600d)) - `Address round 1 review of the observability guidance` ([4188af6](fil-forge/sprue@4188af6)) - fil-forge/sprue#141 ([046155c](fil-forge/sprue@046155c)) - fil-forge/sprue#142 ([80c2ed6](fil-forge/sprue@80c2ed6)) - fil-forge/sprue#145 ([9e5422e](fil-forge/sprue@9e5422e)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([a5ee6c7](fil-forge/sprue@a5ee6c7)) - fil-forge/sprue#143 ([3c62127](fil-forge/sprue@3c62127)) - `Rewrap docs/observability.md` ([5c8387a](fil-forge/sprue@5c8387a)) - fil-forge/sprue#140 ([88ec247](fil-forge/sprue@88ec247)) - `Merge branch 'main' into claude/ucantone-upgrade-concurrency-c1a7d5` ([048df30](fil-forge/sprue@048df30)) - fil-forge/sprue#109 ([bb3458c](fil-forge/sprue@bb3458c)) - `Use conditional writes for admin provider updates` ([34ff3f9](fil-forge/sprue@34ff3f9)) - `Copy replication weights in memory provider store` ([0ca9a6e](fil-forge/sprue@0ca9a6e)) - fil-forge/sprue#110 ([ad4c80f](fil-forge/sprue@ad4c80f)) - fil-forge/sprue#148 ([2ee5d6c](fil-forge/sprue@2ee5d6c)) - fil-forge/sprue#149 ([7b94804](fil-forge/sprue@7b94804)) ## hilt [`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:d693f58`](https://github.com/orgs/fil-forge/packages/container/hilt/1415385710) What fil-forge/hilt brings over staging's pin, [`42dd070..358562a`](fil-forge/hilt@42dd070...358562a): - fil-forge/hilt#97 ([b5d3b3e](fil-forge/hilt@b5d3b3e)) - fil-forge/hilt#98 ([1f0b2c1](fil-forge/hilt@1f0b2c1)) - fil-forge/hilt#99 ([ac4676e](fil-forge/hilt@ac4676e)) - fil-forge/hilt#101 ([9328a49](fil-forge/hilt@9328a49)) - fil-forge/hilt#102 ([cd26388](fil-forge/hilt@cd26388)) - fil-forge/hilt#100 ([358562a](fil-forge/hilt@358562a)) ## swarf [`sha256:c364312`](https://github.com/orgs/fil-forge/packages/container/swarf/1361661163) → [`sha256:4807de8`](https://github.com/orgs/fil-forge/packages/container/swarf/1399568771) What fil-forge/swarf brings over staging's pin, [`4b2e2ae..974851a`](fil-forge/swarf@4b2e2ae...974851a): - `Add AGENTS.md with observability guidance` ([88dbb4c](fil-forge/swarf@88dbb4c)) - `Address round 1 review of the observability guidance` ([305021e](fil-forge/swarf@305021e)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([7ff3da0](fil-forge/swarf@7ff3da0)) - `Rewrap docs/observability.md` ([72018b4](fil-forge/swarf@72018b4)) - fil-forge/swarf#24 ([974851a](fil-forge/swarf@974851a)) ## delegator [`sha256:30b1757`](https://github.com/orgs/fil-forge/packages/container/delegator/1178963957) → [`sha256:7fb4eb5`](https://github.com/orgs/fil-forge/packages/container/delegator/1399567101) What fil-forge/delegator brings over staging's pin, [`b5552f1..3ae7270`](fil-forge/delegator@b5552f1...3ae7270): - fil-forge/delegator#35 ([8bf4153](fil-forge/delegator@8bf4153)) - fil-forge/delegator#36 ([3dfe8c4](fil-forge/delegator@3dfe8c4)) - fil-forge/delegator#37 ([eb81da2](fil-forge/delegator@eb81da2)) - fil-forge/delegator#38 ([314b6d6](fil-forge/delegator@314b6d6)) - fil-forge/delegator#40 ([e588b27](fil-forge/delegator@e588b27)) - fil-forge/delegator#42 ([9cfc334](fil-forge/delegator@9cfc334)) - fil-forge/delegator#43 ([3d3525c](fil-forge/delegator@3d3525c)) - fil-forge/delegator#45 ([5e4090c](fil-forge/delegator@5e4090c)) - fil-forge/delegator#47 ([22d663d](fil-forge/delegator@22d663d)) - fil-forge/delegator#44 ([984ea6e](fil-forge/delegator@984ea6e)) - fil-forge/delegator#46 ([861f107](fil-forge/delegator@861f107)) - fil-forge/delegator#48 ([5a14d35](fil-forge/delegator@5a14d35)) - fil-forge/delegator#49 ([3fe2769](fil-forge/delegator@3fe2769)) - fil-forge/delegator#52 ([1ee1e5b](fil-forge/delegator@1ee1e5b)) - fil-forge/delegator#51 ([d12f29a](fil-forge/delegator@d12f29a)) - fil-forge/delegator#53 ([8d3b969](fil-forge/delegator@8d3b969)) - fil-forge/delegator#55 ([4d6e592](fil-forge/delegator@4d6e592)) - fil-forge/delegator#56 ([4d37521](fil-forge/delegator@4d37521)) - fil-forge/delegator#59 ([26d9d4e](fil-forge/delegator@26d9d4e)) - fil-forge/delegator#60 ([7eeff65](fil-forge/delegator@7eeff65)) - `AGENTS.md: add telemetry, alerts and dashboards to the definition of done` ([fe04a4c](fil-forge/delegator@fe04a4c)) - `Address round 1 review of the observability guidance` ([b29fad9](fil-forge/delegator@b29fad9)) - fil-forge/delegator#62 ([aaba55d](fil-forge/delegator@aaba55d)) - fil-forge/delegator#63 ([b3bc907](fil-forge/delegator@b3bc907)) - fil-forge/delegator#64 ([716049e](fil-forge/delegator@716049e)) - fil-forge/delegator#66 ([2c2784d](fil-forge/delegator@2c2784d)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([409ff15](fil-forge/delegator@409ff15)) - `Rewrap docs/observability.md` ([77e9d0a](fil-forge/delegator@77e9d0a)) - fil-forge/delegator#61 ([3ae7270](fil-forge/delegator@3ae7270)) ## signing_service [`sha256:b7ef5f0`](https://github.com/orgs/fil-forge/packages/container/piri-signing-service/1157634158) → [`sha256:4493534`](https://github.com/orgs/fil-forge/packages/container/piri-signing-service/1399574922) What fil-forge/piri-signing-service brings over staging's pin, [`c2ac7db..678c9c1`](fil-forge/piri-signing-service@c2ac7db...678c9c1): - fil-forge/piri-signing-service#19 ([8472ad9](fil-forge/piri-signing-service@8472ad9)) - `AGENTS.md: add telemetry, alerts and dashboards to the definition of done` ([53d3758](fil-forge/piri-signing-service@53d3758)) - `Address round 1 review of the observability guidance` ([950ef02](fil-forge/piri-signing-service@950ef02)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([e07d0ee](fil-forge/piri-signing-service@e07d0ee)) - `Rewrap docs/observability.md` ([af8b5c1](fil-forge/piri-signing-service@af8b5c1)) - fil-forge/piri-signing-service#22 ([678c9c1](fil-forge/piri-signing-service@678c9c1))
Sets every staging pin in `terraform/envs/staging/apps/terraform.tfvars` to what `terraform/envs/dev/apps/terraform.tfvars` pins at c96a817. Merging this is the promotion: Check and deploy applies `terraform/envs/staging/apps` on the merge commit, with no further confirmation. dev passed its smoke test on that commit in https://github.com/fil-forge/infra-central/actions/runs/39491247723. This pull request is rebuilt each time dev passes its smoke test after a push to `main`, and closed once staging matches dev. To hold a service back, push to `bot/promote-staging` by hand: the bot leaves the branch alone while this pull request is open. ## sprue [`sha256:79eb33d`](https://github.com/orgs/fil-forge/packages/container/sprue/1339893466) → [`sha256:1828e90`](https://github.com/orgs/fil-forge/packages/container/sprue/1416415898) What fil-forge/sprue brings over staging's pin, [`9b40689..7b94804`](fil-forge/sprue@9b40689...7b94804): - `Upgrade ucantone and log recovered panics` ([85b7799](fil-forge/sprue@85b7799)) - `Fix shared logger mutation in /provider/add` ([dc00875](fil-forge/sprue@dc00875)) - `Tolerate duplicate blob/add and blob/remove` ([c4a810d](fil-forge/sprue@c4a810d)) - `Stop sharing shard slices in memory upload store` ([4c387b0](fil-forge/sprue@4c387b0)) - `Don't panic on failure receipts without a name` ([32423bf](fil-forge/sprue@32423bf)) - `Insert agent index rows in a stable order` ([d5bc0fb](fil-forge/sprue@d5bc0fb)) - `Raise default postgres pool size to 100` ([b2ad08f](fil-forge/sprue@b2ad08f)) - `Lower default postgres pool size to 20` ([2038899](fil-forge/sprue@2038899)) - `Fail a /blob/add that loses the registration race` ([452bc56](fil-forge/sprue@452bc56)) - `Correct the descendingCIDs test helper comment` ([ea8fd67](fil-forge/sprue@ea8fd67)) - `Use conditional writes for admin provider updates` ([77b1492](fil-forge/sprue@77b1492)) - `Revert "Use conditional writes for admin provider updates"` ([5d0de78](fil-forge/sprue@5d0de78)) - fil-forge/sprue#130 ([0b76576](fil-forge/sprue@0b76576)) - fil-forge/sprue#131 ([8c7925a](fil-forge/sprue@8c7925a)) - fil-forge/sprue#132 ([a7762f6](fil-forge/sprue@a7762f6)) - fil-forge/sprue#133 ([a5d84ee](fil-forge/sprue@a5d84ee)) - fil-forge/sprue#137 ([98d22cc](fil-forge/sprue@98d22cc)) - fil-forge/sprue#136 ([9fb2d96](fil-forge/sprue@9fb2d96)) - `AGENTS.md: add telemetry, alerts and dashboards to the definition of done` ([dbd600d](fil-forge/sprue@dbd600d)) - `Address round 1 review of the observability guidance` ([4188af6](fil-forge/sprue@4188af6)) - fil-forge/sprue#141 ([046155c](fil-forge/sprue@046155c)) - fil-forge/sprue#142 ([80c2ed6](fil-forge/sprue@80c2ed6)) - fil-forge/sprue#145 ([9e5422e](fil-forge/sprue@9e5422e)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([a5ee6c7](fil-forge/sprue@a5ee6c7)) - fil-forge/sprue#143 ([3c62127](fil-forge/sprue@3c62127)) - `Rewrap docs/observability.md` ([5c8387a](fil-forge/sprue@5c8387a)) - fil-forge/sprue#140 ([88ec247](fil-forge/sprue@88ec247)) - `Merge branch 'main' into claude/ucantone-upgrade-concurrency-c1a7d5` ([048df30](fil-forge/sprue@048df30)) - fil-forge/sprue#109 ([bb3458c](fil-forge/sprue@bb3458c)) - `Use conditional writes for admin provider updates` ([34ff3f9](fil-forge/sprue@34ff3f9)) - `Copy replication weights in memory provider store` ([0ca9a6e](fil-forge/sprue@0ca9a6e)) - fil-forge/sprue#110 ([ad4c80f](fil-forge/sprue@ad4c80f)) - fil-forge/sprue#148 ([2ee5d6c](fil-forge/sprue@2ee5d6c)) - fil-forge/sprue#149 ([7b94804](fil-forge/sprue@7b94804)) ## hilt [`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:d693f58`](https://github.com/orgs/fil-forge/packages/container/hilt/1415385710) What fil-forge/hilt brings over staging's pin, [`42dd070..358562a`](fil-forge/hilt@42dd070...358562a): - fil-forge/hilt#97 ([b5d3b3e](fil-forge/hilt@b5d3b3e)) - fil-forge/hilt#98 ([1f0b2c1](fil-forge/hilt@1f0b2c1)) - fil-forge/hilt#99 ([ac4676e](fil-forge/hilt@ac4676e)) - fil-forge/hilt#101 ([9328a49](fil-forge/hilt@9328a49)) - fil-forge/hilt#102 ([cd26388](fil-forge/hilt@cd26388)) - fil-forge/hilt#100 ([358562a](fil-forge/hilt@358562a)) ## swarf [`sha256:c364312`](https://github.com/orgs/fil-forge/packages/container/swarf/1361661163) → [`sha256:4807de8`](https://github.com/orgs/fil-forge/packages/container/swarf/1399568771) What fil-forge/swarf brings over staging's pin, [`4b2e2ae..974851a`](fil-forge/swarf@4b2e2ae...974851a): - `Add AGENTS.md with observability guidance` ([88dbb4c](fil-forge/swarf@88dbb4c)) - `Address round 1 review of the observability guidance` ([305021e](fil-forge/swarf@305021e)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([7ff3da0](fil-forge/swarf@7ff3da0)) - `Rewrap docs/observability.md` ([72018b4](fil-forge/swarf@72018b4)) - fil-forge/swarf#24 ([974851a](fil-forge/swarf@974851a)) ## delegator [`sha256:30b1757`](https://github.com/orgs/fil-forge/packages/container/delegator/1178963957) → [`sha256:7fb4eb5`](https://github.com/orgs/fil-forge/packages/container/delegator/1399567101) What fil-forge/delegator brings over staging's pin, [`b5552f1..3ae7270`](fil-forge/delegator@b5552f1...3ae7270): - fil-forge/delegator#35 ([8bf4153](fil-forge/delegator@8bf4153)) - fil-forge/delegator#36 ([3dfe8c4](fil-forge/delegator@3dfe8c4)) - fil-forge/delegator#37 ([eb81da2](fil-forge/delegator@eb81da2)) - fil-forge/delegator#38 ([314b6d6](fil-forge/delegator@314b6d6)) - fil-forge/delegator#40 ([e588b27](fil-forge/delegator@e588b27)) - fil-forge/delegator#42 ([9cfc334](fil-forge/delegator@9cfc334)) - fil-forge/delegator#43 ([3d3525c](fil-forge/delegator@3d3525c)) - fil-forge/delegator#45 ([5e4090c](fil-forge/delegator@5e4090c)) - fil-forge/delegator#47 ([22d663d](fil-forge/delegator@22d663d)) - fil-forge/delegator#44 ([984ea6e](fil-forge/delegator@984ea6e)) - fil-forge/delegator#46 ([861f107](fil-forge/delegator@861f107)) - fil-forge/delegator#48 ([5a14d35](fil-forge/delegator@5a14d35)) - fil-forge/delegator#49 ([3fe2769](fil-forge/delegator@3fe2769)) - fil-forge/delegator#52 ([1ee1e5b](fil-forge/delegator@1ee1e5b)) - fil-forge/delegator#51 ([d12f29a](fil-forge/delegator@d12f29a)) - fil-forge/delegator#53 ([8d3b969](fil-forge/delegator@8d3b969)) - fil-forge/delegator#55 ([4d6e592](fil-forge/delegator@4d6e592)) - fil-forge/delegator#56 ([4d37521](fil-forge/delegator@4d37521)) - fil-forge/delegator#59 ([26d9d4e](fil-forge/delegator@26d9d4e)) - fil-forge/delegator#60 ([7eeff65](fil-forge/delegator@7eeff65)) - `AGENTS.md: add telemetry, alerts and dashboards to the definition of done` ([fe04a4c](fil-forge/delegator@fe04a4c)) - `Address round 1 review of the observability guidance` ([b29fad9](fil-forge/delegator@b29fad9)) - fil-forge/delegator#62 ([aaba55d](fil-forge/delegator@aaba55d)) - fil-forge/delegator#63 ([b3bc907](fil-forge/delegator@b3bc907)) - fil-forge/delegator#64 ([716049e](fil-forge/delegator@716049e)) - fil-forge/delegator#66 ([2c2784d](fil-forge/delegator@2c2784d)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([409ff15](fil-forge/delegator@409ff15)) - `Rewrap docs/observability.md` ([77e9d0a](fil-forge/delegator@77e9d0a)) - fil-forge/delegator#61 ([3ae7270](fil-forge/delegator@3ae7270)) ## signing_service [`sha256:b7ef5f0`](https://github.com/orgs/fil-forge/packages/container/piri-signing-service/1157634158) → [`sha256:4493534`](https://github.com/orgs/fil-forge/packages/container/piri-signing-service/1399574922) What fil-forge/piri-signing-service brings over staging's pin, [`c2ac7db..678c9c1`](fil-forge/piri-signing-service@c2ac7db...678c9c1): - fil-forge/piri-signing-service#19 ([8472ad9](fil-forge/piri-signing-service@8472ad9)) - `AGENTS.md: add telemetry, alerts and dashboards to the definition of done` ([53d3758](fil-forge/piri-signing-service@53d3758)) - `Address round 1 review of the observability guidance` ([950ef02](fil-forge/piri-signing-service@950ef02)) - `Keep the always-loaded guidance short, and move the how-to to docs` ([e07d0ee](fil-forge/piri-signing-service@e07d0ee)) - `Rewrap docs/observability.md` ([af8b5c1](fil-forge/piri-signing-service@af8b5c1)) - fil-forge/piri-signing-service#22 ([678c9c1](fil-forge/piri-signing-service@678c9c1))
The first run of E2E tests (fil-forge/infra-nodes#154) discovered that Hilt in dev cannot delete tenants because it was configured to use the production revocation service. I decided to make the revocation service config required to avoid similar surprises in the future.
Written by Claude.
Do not merge until fil-forge/infra-central#264, which setsHILT_REVOCATION_SERVICE_IDandHILT_REVOCATION_SERVICE_URLper stage, is applied to dev, staging and prod. After this lands, a Hilt task without them exits at startup.Require
revocation.service_idandrevocation.service_urlinstead of defaulting them to prod's Swarf (did:web:revoke.fil-forge.com/https://revoke.fil-forge.com).Dev's ECS task sets neither variable, so dev Hilt published revocations to prod's Swarf. Prod Swarf does not know dev tenants' did:plc DIDs and answers 404, which turned every dev tenant delete into a 500. Staging has the same gap.
SetDefaultcalls inpkg/configand the--revocation-service-*flag defaults incmd/main.go.NewRevocationClientrejects an empty DID or URL, sohilt serveexits during fx construction withrevocation.service_id is required: set HILT_REVOCATION_SERVICE_ID or --revocation-service-id(or the_urlequivalent). The check is explicit becauseurl.Parse("")succeeds and would otherwise build a client that fails only on its first publish.hilt clientcommands load config but never build the revocation client, so they keep working without these settings.config.Loadleaves both fields empty when nothing sets them;NewRevocationClienterrors on each missing field; an fx app withRevocationModuleand empty config fails to construct.The integration stack keeps booting: smelt's
systems/hilt/compose.ymlalready setsHILT_REVOCATION_SERVICE_ID=did:web:swarfandHILT_REVOCATION_SERVICE_URL=http://swarf:80.upload.service_id,upload.service_urlandupload.product_idstill default to prod values in the same way. They are left for a separate change.