Skip to content

AGENTS.md: add telemetry, alerts and dashboards to the definition of done - #140

Merged
Peeja merged 4 commits into
mainfrom
claude/happy-bell-cfh5qb-agents-observability
Oct 16, 2026
Merged

Peeja merged 4 commits into
mainfrom
claude/happy-bell-cfh5qb-agents-observability

Conversation

@Peeja

@Peeja Peeja commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Written by Claude.

Merge after fil-forge/infra-central#253. This PR's docs/observability.md points to the "Adding an alert or panel" section that PR adds.

This adds a short Observability section to AGENTS.md. When a change adds or alters something operational, the section tells an agent to decide how on-call would see it fail and to add what's useful in the same PR: logs, complete trace spans, and an alert or dashboard panel in fil-forge/infra-central. It also says that when a feature's health is best read as a number, the PR description should name the metric and FIL-1144. It also says to skip this for changes nothing operational depends on.

The section is kept short because AGENTS.md loads into every session. That follows bajtos's review of fil-forge/infra-nodes#174. The how-to lives in a new docs/observability.md, with Logs, Metrics, Traces (tracing.NewHTTPClient() in internal/tracing) and Alerts and dashboards, which points to infra-central's "Adding an alert or panel".

The repo's existing CLAUDE.md already imports AGENTS.md, so it's unchanged.

Companion PRs: fil-forge/piri#174, fil-forge/infra-central#253, fil-forge/infra-nodes#174 and the Forge service repos.

Checks

  • git diff --check.

✴️

🤖 Generated with Claude Code

https://claude.ai/code/session_01JCF8gyb8jNRmHmWqQmVhRJ


Generated by Claude Code

claude and others added 2 commits October 15, 2026 16:34
…done

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Petra Jaros <petra@fil.org>
Claude-Session: https://claude.ai/code/session_01JCF8gyb8jNRmHmWqQmVhRJ
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Petra Jaros <petra@fil.org>
Claude-Session: https://claude.ai/code/session_01JCF8gyb8jNRmHmWqQmVhRJ

Peeja commented Oct 15, 2026

Copy link
Copy Markdown
Contributor Author

Claude reviewer says… (1st round, dbd600d)

Approve once one should-fix is done.

Verified across the six

  • Scope: each diff touches only AGENTS.md/CLAUDE.md, and git diff --check is clean.
  • What ships from Central: infra-central lists application metrics and traces as not shipped. terraform/modules/apps/main.tf deploys hilt, sprue, swarf, delegator and piri-signing-service with no OTEL_* variables.
  • Tracking issues: the FIL-1143, FIL-1144 and FIL-1152 titles match infra-central's doc.
  • Tracing helpers: NewHTTPClient exists in hilt pkg/tracing and sprue internal/tracing.
  • No OTel elsewhere: delegator, swarf and piri-signing-service have no OTel imports.

Findings

  1. should-fix (shared by the five Central PRs). "Note it on FIL-xxxx" asks an agent to write to a shared Linear issue from inside a feature task. Most sessions have no Linear access, and those that do shouldn't write there unprompted. Say it in the PR description instead.
  2. nit. The tracing advice repeats internal/tracing above. It's harmless.

✴️


Generated by Claude Code

Peeja commented Oct 15, 2026

Copy link
Copy Markdown
Contributor Author

Claude author says…

Fixed in 4188af6.

  1. Metrics bullet: it now says to say so in the PR description, naming the metric and FIL-1144. The PR body is updated to match.
  2. Repeated advice: left as is.

git diff --check is clean. This round had a should-fix, so round 2 follows.

✴️


Generated by Claude Code

Peeja commented Oct 15, 2026

Copy link
Copy Markdown
Contributor Author

Claude reviewer says… (2nd round, 4188af6)

Approve. Both round 1 should-fix findings are fixed, and only nits remain.

Verified

  • Round 1 fix: "say so in the PR description, naming the metric and FIL-xxxx" is in all five Central PRs, with no Linear write left.
  • Delegator: its DynamoDB tables' metrics arrive through FilOne's metric stream (2026-09-grafana-telemetry.md:46-50), and it has no Postgres.
  • piri-signing-service: it runs on ECS Fargate behind the application load balancer and has no database.
  • swarf: it uses Postgres; its intro line and CLAUDE.md import match the other repos.
  • Ingot exports: Ingot exports metrics as well as traces (cmd/telemetry.go:101-127) to the compose-set endpoint.
  • Ingot in infra-central: both Ingot rules are in the "Forge Regions" group, and forge-regions.json reads ingot_local_blobs_*.
  • Whitespace: git diff --check is clean in all six.

Findings

  1. nit, PR body. The attribution footer is repeated.

✴️


Generated by Claude Code

Peeja commented Oct 15, 2026

Copy link
Copy Markdown
Contributor Author

Claude author says…

  1. Repeated footer: I added only the first attribution footer; the other two appear to be added by the tooling, which I can't control.

This round found only nits, so there won't be another.

✴️


Generated by Claude Code

claude and others added 2 commits October 16, 2026 19:17
Following bajtos's review of fil-forge/infra-nodes#174: the guidance
file loads into every session, so its Observability section is now a
short reminder of what to add and when to skip it, with a pointer to
docs/observability.md, which holds the detail. A CLAUDE.md that only
imported AGENTS.md is gone where this PR added one: Claude Code reads
AGENTS.md itself from v2.1.277.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Petra Jaros <petra@fil.org>
Claude-Session: https://claude.ai/code/session_01JCF8gyb8jNRmHmWqQmVhRJ
Review round on the guidance restructure: some paragraphs were never
reflowed after the pointer edit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Petra Jaros <petra@fil.org>
Claude-Session: https://claude.ai/code/session_01JCF8gyb8jNRmHmWqQmVhRJ

Peeja commented Oct 16, 2026

Copy link
Copy Markdown
Contributor Author

Claude reviewer says… (round on the restructure, a5ee6c7)

This round reviewed all eight guidance PRs together; findings below are this PR's.

Approve. Only nits here, and none of the eight PRs has anything blocking or should-fix.

Verified, across all eight PRs

  • git diff --check origin/main...HEAD is clean in each. In infra-central, make check passes at 0bc8bb7.
  • Nothing was lost in the move. Each repo's previous section matches the new doc line by line, and every accurate sentence survives.
  • Each short section still says when to act, what to add and when to skip. Each pointer names a heading that exists: "Adding a signal" in piri, ingot, delegator, swarf and piri-signing-service, and "Adding an alert or panel" on #253's branch.
  • Only infra-central and swarf drop a CLAUDE.md, and both had been added by the PR itself. Every other repo's existing CLAUDE.md is untouched.
  • The cited paths, headings and links resolve. Each description matches its diff.

Findings for this PR

  1. nit (PR body): the doc's pointer names infra-central's "Adding an alert or panel", which only exists on Add AGENTS.md with observability guidance infra-central#253's branch, and the description doesn't say to merge after it. The earlier pointer, to infra-central's AGENTS.md, had the same dependency.
  2. nit (wrapping): docs/observability.md lines 10, 19 and 31 (112–142 characters) were never reflowed after the pointer edit; the file wraps at 80.

✴️


Generated by Claude Code

Peeja commented Oct 16, 2026

Copy link
Copy Markdown
Contributor Author

Claude author says…

The fixes are in 5c8387a.

  1. A "Merge after Add AGENTS.md with observability guidance infra-central#253" line now opens the description.
  2. The paragraphs with long lines are reflowed, and links are kept whole. That leaves no line over the file's width. The text is unchanged.

Check: git diff --check is clean. The change is docs-only, so I didn't run anything else.

This round found only nits, so there won't be another.

✴️


Generated by Claude Code

@Peeja
Peeja merged commit 88ec247 into main Oct 16, 2026
10 checks passed
@Peeja
Peeja deleted the claude/happy-bell-cfh5qb-agents-observability branch October 16, 2026 21:36
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 16, 2026
Published from fil-forge/sprue#140

- Digest: `sha256:deab5827cd32074f336bfa8883c305be6054261bac35616e8ba975c6913b2e4f`
- Commit: fil-forge/sprue@88ec247
- Publish run: https://github.com/fil-forge/sprue/actions/runs/38970517532

Merging applies [`terraform/envs/dev/apps`](https://github.com/fil-forge/infra-central/tree/main/terraform/envs/dev/apps) with no further confirmation.
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 16, 2026
Published from fil-forge/sprue#140

- Digest: `sha256:deab5827cd32074f336bfa8883c305be6054261bac35616e8ba975c6913b2e4f`
- Commit: fil-forge/sprue@88ec247
- Publish run: https://github.com/fil-forge/sprue/actions/runs/38970517532

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>
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 16, 2026
Sets every staging pin in `terraform/envs/staging/apps/terraform.tfvars`
to what `terraform/envs/dev/apps/terraform.tfvars` pins at 83ec50f.
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/38971498347.

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:deab582`](https://github.com/orgs/fil-forge/packages/container/sprue/1399561986)

What fil-forge/sprue brings over staging's pin, [`9b40689..88ec247`](fil-forge/sprue@9b40689...88ec247):

- 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))

## hilt

[`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:9ba1568`](https://github.com/orgs/fil-forge/packages/container/hilt/1386299607)

What fil-forge/hilt brings over staging's pin, [`42dd070..b5d3b3e`](fil-forge/hilt@42dd070...b5d3b3e):

- fil-forge/hilt#97 ([b5d3b3e](fil-forge/hilt@b5d3b3e))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 16, 2026
Sets every staging pin in `terraform/envs/staging/apps/terraform.tfvars`
to what `terraform/envs/dev/apps/terraform.tfvars` pins at f312ede.
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/38971842486.

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:deab582`](https://github.com/orgs/fil-forge/packages/container/sprue/1399561986)

What fil-forge/sprue brings over staging's pin, [`9b40689..88ec247`](fil-forge/sprue@9b40689...88ec247):

- 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))

## hilt

[`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:9ba1568`](https://github.com/orgs/fil-forge/packages/container/hilt/1386299607)

What fil-forge/hilt brings over staging's pin, [`42dd070..b5d3b3e`](fil-forge/hilt@42dd070...b5d3b3e):

- fil-forge/hilt#97 ([b5d3b3e](fil-forge/hilt@b5d3b3e))

## 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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 16, 2026
Sets every staging pin in `terraform/envs/staging/apps/terraform.tfvars`
to what `terraform/envs/dev/apps/terraform.tfvars` pins at fcd18a1.
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/38972429322.

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:deab582`](https://github.com/orgs/fil-forge/packages/container/sprue/1399561986)

What fil-forge/sprue brings over staging's pin, [`9b40689..88ec247`](fil-forge/sprue@9b40689...88ec247):

- 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))

## hilt

[`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:94be06b`](https://github.com/orgs/fil-forge/packages/container/hilt/1399559133)

What fil-forge/hilt brings over staging's pin, [`42dd070..1f0b2c1`](fil-forge/hilt@42dd070...1f0b2c1):

- fil-forge/hilt#97 ([b5d3b3e](fil-forge/hilt@b5d3b3e))
- fil-forge/hilt#98 ([1f0b2c1](fil-forge/hilt@1f0b2c1))

## 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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 16, 2026
Sets every staging pin in `terraform/envs/staging/apps/terraform.tfvars`
to what `terraform/envs/dev/apps/terraform.tfvars` pins at d0da888.
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/38973848798.

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:deab582`](https://github.com/orgs/fil-forge/packages/container/sprue/1399561986)

What fil-forge/sprue brings over staging's pin, [`9b40689..88ec247`](fil-forge/sprue@9b40689...88ec247):

- 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))

## hilt

[`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:94be06b`](https://github.com/orgs/fil-forge/packages/container/hilt/1399559133)

What fil-forge/hilt brings over staging's pin, [`42dd070..1f0b2c1`](fil-forge/hilt@42dd070...1f0b2c1):

- fil-forge/hilt#97 ([b5d3b3e](fil-forge/hilt@b5d3b3e))
- fil-forge/hilt#98 ([1f0b2c1](fil-forge/hilt@1f0b2c1))

## 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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 16, 2026
Sets every staging pin in `terraform/envs/staging/apps/terraform.tfvars`
to what `terraform/envs/dev/apps/terraform.tfvars` pins at a5f29c0.
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/38976031447.

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:deab582`](https://github.com/orgs/fil-forge/packages/container/sprue/1399561986)

What fil-forge/sprue brings over staging's pin, [`9b40689..88ec247`](fil-forge/sprue@9b40689...88ec247):

- 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))

## hilt

[`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:94be06b`](https://github.com/orgs/fil-forge/packages/container/hilt/1399559133)

What fil-forge/hilt brings over staging's pin, [`42dd070..1f0b2c1`](fil-forge/hilt@42dd070...1f0b2c1):

- fil-forge/hilt#97 ([b5d3b3e](fil-forge/hilt@b5d3b3e))
- fil-forge/hilt#98 ([1f0b2c1](fil-forge/hilt@1f0b2c1))

## 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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 20, 2026
Sets every staging pin in `terraform/envs/staging/apps/terraform.tfvars`
to what `terraform/envs/dev/apps/terraform.tfvars` pins at d84e2b5.
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/39405536505.

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:94be06b`](https://github.com/orgs/fil-forge/packages/container/hilt/1399559133)

What fil-forge/hilt brings over staging's pin, [`42dd070..1f0b2c1`](fil-forge/hilt@42dd070...1f0b2c1):

- fil-forge/hilt#97 ([b5d3b3e](fil-forge/hilt@b5d3b3e))
- fil-forge/hilt#98 ([1f0b2c1](fil-forge/hilt@1f0b2c1))

## 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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 20, 2026
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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 20, 2026
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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 20, 2026
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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 20, 2026
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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 20, 2026
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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 20, 2026
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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 20, 2026
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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 20, 2026
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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 21, 2026
Sets every staging pin in `terraform/envs/staging/apps/terraform.tfvars`
to what `terraform/envs/dev/apps/terraform.tfvars` pins at 28219d6.
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/39579087482.

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:dac4f50`](https://github.com/orgs/fil-forge/packages/container/sprue/1420685307)

What fil-forge/sprue brings over staging's pin, [`9b40689..e675a2c`](fil-forge/sprue@9b40689...e675a2c):

- `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))
- `Remove Put from the storage provider store` ([49fe894](fil-forge/sprue@49fe894))
- fil-forge/sprue#148 ([2ee5d6c](fil-forge/sprue@2ee5d6c))
- fil-forge/sprue#149 ([7b94804](fil-forge/sprue@7b94804))
- fil-forge/sprue#147 ([e675a2c](fil-forge/sprue@e675a2c))

## 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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 21, 2026
Sets every staging pin in `terraform/envs/staging/apps/terraform.tfvars`
to what `terraform/envs/dev/apps/terraform.tfvars` pins at f1d1e69.
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/39586498208.

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:dac4f50`](https://github.com/orgs/fil-forge/packages/container/sprue/1420685307)

What fil-forge/sprue brings over staging's pin, [`9b40689..e675a2c`](fil-forge/sprue@9b40689...e675a2c):

- `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))
- `Remove Put from the storage provider store` ([49fe894](fil-forge/sprue@49fe894))
- fil-forge/sprue#148 ([2ee5d6c](fil-forge/sprue@2ee5d6c))
- fil-forge/sprue#149 ([7b94804](fil-forge/sprue@7b94804))
- fil-forge/sprue#147 ([e675a2c](fil-forge/sprue@e675a2c))

## 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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 21, 2026
Sets every staging pin in `terraform/envs/staging/apps/terraform.tfvars`
to what `terraform/envs/dev/apps/terraform.tfvars` pins at ed31b01.
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/39587476907.

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:dac4f50`](https://github.com/orgs/fil-forge/packages/container/sprue/1420685307)

What fil-forge/sprue brings over staging's pin, [`9b40689..e675a2c`](fil-forge/sprue@9b40689...e675a2c):

- `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))
- `Remove Put from the storage provider store` ([49fe894](fil-forge/sprue@49fe894))
- fil-forge/sprue#148 ([2ee5d6c](fil-forge/sprue@2ee5d6c))
- fil-forge/sprue#149 ([7b94804](fil-forge/sprue@7b94804))
- fil-forge/sprue#147 ([e675a2c](fil-forge/sprue@e675a2c))

## 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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 21, 2026
Sets every staging pin in `terraform/envs/staging/apps/terraform.tfvars`
to what `terraform/envs/dev/apps/terraform.tfvars` pins at 1ccc60f.
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/39588463151.

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:dac4f50`](https://github.com/orgs/fil-forge/packages/container/sprue/1420685307)

What fil-forge/sprue brings over staging's pin, [`9b40689..e675a2c`](fil-forge/sprue@9b40689...e675a2c):

- `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))
- `Remove Put from the storage provider store` ([49fe894](fil-forge/sprue@49fe894))
- fil-forge/sprue#148 ([2ee5d6c](fil-forge/sprue@2ee5d6c))
- fil-forge/sprue#149 ([7b94804](fil-forge/sprue@7b94804))
- fil-forge/sprue#147 ([e675a2c](fil-forge/sprue@e675a2c))

## 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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 21, 2026
Sets every staging pin in `terraform/envs/staging/apps/terraform.tfvars`
to what `terraform/envs/dev/apps/terraform.tfvars` pins at 99c3db7.
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/39605288598.

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:dac4f50`](https://github.com/orgs/fil-forge/packages/container/sprue/1420685307)

What fil-forge/sprue brings over staging's pin, [`9b40689..e675a2c`](fil-forge/sprue@9b40689...e675a2c):

- `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))
- `Remove Put from the storage provider store` ([49fe894](fil-forge/sprue@49fe894))
- fil-forge/sprue#148 ([2ee5d6c](fil-forge/sprue@2ee5d6c))
- fil-forge/sprue#149 ([7b94804](fil-forge/sprue@7b94804))
- fil-forge/sprue#147 ([e675a2c](fil-forge/sprue@e675a2c))

## 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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 21, 2026
Sets every staging pin in `terraform/envs/staging/apps/terraform.tfvars`
to what `terraform/envs/dev/apps/terraform.tfvars` pins at 09f7e31.
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/39628940923.

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:dac4f50`](https://github.com/orgs/fil-forge/packages/container/sprue/1420685307)

What fil-forge/sprue brings over staging's pin, [`9b40689..e675a2c`](fil-forge/sprue@9b40689...e675a2c):

- `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))
- `Remove Put from the storage provider store` ([49fe894](fil-forge/sprue@49fe894))
- fil-forge/sprue#148 ([2ee5d6c](fil-forge/sprue@2ee5d6c))
- fil-forge/sprue#149 ([7b94804](fil-forge/sprue@7b94804))
- fil-forge/sprue#147 ([e675a2c](fil-forge/sprue@e675a2c))

## hilt

[`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:8429eae`](https://github.com/orgs/fil-forge/packages/container/hilt/1422606819)

What fil-forge/hilt brings over staging's pin, [`42dd070..06acdbb`](fil-forge/hilt@42dd070...06acdbb):

- 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))
- fil-forge/hilt#104 ([06acdbb](fil-forge/hilt@06acdbb))

## 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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 21, 2026
Sets every staging pin in `terraform/envs/staging/apps/terraform.tfvars`
to what `terraform/envs/dev/apps/terraform.tfvars` pins at 72654d9.
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/39636575173.

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:dac4f50`](https://github.com/orgs/fil-forge/packages/container/sprue/1420685307)

What fil-forge/sprue brings over staging's pin, [`9b40689..e675a2c`](fil-forge/sprue@9b40689...e675a2c):

- `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))
- `Remove Put from the storage provider store` ([49fe894](fil-forge/sprue@49fe894))
- fil-forge/sprue#148 ([2ee5d6c](fil-forge/sprue@2ee5d6c))
- fil-forge/sprue#149 ([7b94804](fil-forge/sprue@7b94804))
- fil-forge/sprue#147 ([e675a2c](fil-forge/sprue@e675a2c))

## hilt

[`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:14a73a3`](https://github.com/orgs/fil-forge/packages/container/hilt/1423041367)

What fil-forge/hilt brings over staging's pin, [`42dd070..4fd8d7b`](fil-forge/hilt@42dd070...4fd8d7b):

- 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))
- fil-forge/hilt#104 ([06acdbb](fil-forge/hilt@06acdbb))
- fil-forge/hilt#105 ([4fd8d7b](fil-forge/hilt@4fd8d7b))

## 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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 22, 2026
Sets every staging pin in `terraform/envs/staging/apps/terraform.tfvars`
to what `terraform/envs/dev/apps/terraform.tfvars` pins at 6bc3c99.
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/39765405528.

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:dac4f50`](https://github.com/orgs/fil-forge/packages/container/sprue/1420685307)

What fil-forge/sprue brings over staging's pin, [`9b40689..e675a2c`](fil-forge/sprue@9b40689...e675a2c):

- `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))
- `Remove Put from the storage provider store` ([49fe894](fil-forge/sprue@49fe894))
- fil-forge/sprue#148 ([2ee5d6c](fil-forge/sprue@2ee5d6c))
- fil-forge/sprue#149 ([7b94804](fil-forge/sprue@7b94804))
- fil-forge/sprue#147 ([e675a2c](fil-forge/sprue@e675a2c))

## hilt

[`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:c5ec5a7`](https://github.com/orgs/fil-forge/packages/container/hilt/1427676240)

What fil-forge/hilt brings over staging's pin, [`42dd070..6d996f9`](fil-forge/hilt@42dd070...6d996f9):

- 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))
- fil-forge/hilt#104 ([06acdbb](fil-forge/hilt@06acdbb))
- fil-forge/hilt#105 ([4fd8d7b](fil-forge/hilt@4fd8d7b))
- fil-forge/hilt#106 ([6d996f9](fil-forge/hilt@6d996f9))

## 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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 22, 2026
Sets every staging pin in `terraform/envs/staging/apps/terraform.tfvars`
to what `terraform/envs/dev/apps/terraform.tfvars` pins at 7df0121.
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/39786027357.

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:dac4f50`](https://github.com/orgs/fil-forge/packages/container/sprue/1420685307)

What fil-forge/sprue brings over staging's pin, [`9b40689..e675a2c`](fil-forge/sprue@9b40689...e675a2c):

- `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))
- `Remove Put from the storage provider store` ([49fe894](fil-forge/sprue@49fe894))
- fil-forge/sprue#148 ([2ee5d6c](fil-forge/sprue@2ee5d6c))
- fil-forge/sprue#149 ([7b94804](fil-forge/sprue@7b94804))
- fil-forge/sprue#147 ([e675a2c](fil-forge/sprue@e675a2c))

## hilt

[`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:2116641`](https://github.com/orgs/fil-forge/packages/container/hilt/1428310062)

What fil-forge/hilt brings over staging's pin, [`42dd070..c258fe3`](fil-forge/hilt@42dd070...c258fe3):

- 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))
- fil-forge/hilt#104 ([06acdbb](fil-forge/hilt@06acdbb))
- fil-forge/hilt#105 ([4fd8d7b](fil-forge/hilt@4fd8d7b))
- fil-forge/hilt#106 ([6d996f9](fil-forge/hilt@6d996f9))
- fil-forge/hilt#108 ([c258fe3](fil-forge/hilt@c258fe3))

## 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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 22, 2026
Sets every staging pin in `terraform/envs/staging/apps/terraform.tfvars`
to what `terraform/envs/dev/apps/terraform.tfvars` pins at af24c86.
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/39805420203.

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:dac4f50`](https://github.com/orgs/fil-forge/packages/container/sprue/1420685307)

What fil-forge/sprue brings over staging's pin, [`9b40689..e675a2c`](fil-forge/sprue@9b40689...e675a2c):

- `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))
- `Remove Put from the storage provider store` ([49fe894](fil-forge/sprue@49fe894))
- fil-forge/sprue#148 ([2ee5d6c](fil-forge/sprue@2ee5d6c))
- fil-forge/sprue#149 ([7b94804](fil-forge/sprue@7b94804))
- fil-forge/sprue#147 ([e675a2c](fil-forge/sprue@e675a2c))

## hilt

[`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:147557d`](https://github.com/orgs/fil-forge/packages/container/hilt/1429334113)

What fil-forge/hilt brings over staging's pin, [`42dd070..023fa3a`](fil-forge/hilt@42dd070...023fa3a):

- 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))
- fil-forge/hilt#104 ([06acdbb](fil-forge/hilt@06acdbb))
- fil-forge/hilt#105 ([4fd8d7b](fil-forge/hilt@4fd8d7b))
- fil-forge/hilt#106 ([6d996f9](fil-forge/hilt@6d996f9))
- fil-forge/hilt#108 ([c258fe3](fil-forge/hilt@c258fe3))
- fil-forge/hilt#107 ([023fa3a](fil-forge/hilt@023fa3a))

## 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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 22, 2026
Sets every staging pin in `terraform/envs/staging/apps/terraform.tfvars`
to what `terraform/envs/dev/apps/terraform.tfvars` pins at 3d1850d.
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/39843935969.

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:dac4f50`](https://github.com/orgs/fil-forge/packages/container/sprue/1420685307)

What fil-forge/sprue brings over staging's pin, [`9b40689..e675a2c`](fil-forge/sprue@9b40689...e675a2c):

- `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))
- `Remove Put from the storage provider store` ([49fe894](fil-forge/sprue@49fe894))
- fil-forge/sprue#148 ([2ee5d6c](fil-forge/sprue@2ee5d6c))
- fil-forge/sprue#149 ([7b94804](fil-forge/sprue@7b94804))
- fil-forge/sprue#147 ([e675a2c](fil-forge/sprue@e675a2c))

## hilt

[`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:147557d`](https://github.com/orgs/fil-forge/packages/container/hilt/1429334113)

What fil-forge/hilt brings over staging's pin, [`42dd070..023fa3a`](fil-forge/hilt@42dd070...023fa3a):

- 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))
- fil-forge/hilt#104 ([06acdbb](fil-forge/hilt@06acdbb))
- fil-forge/hilt#105 ([4fd8d7b](fil-forge/hilt@4fd8d7b))
- fil-forge/hilt#106 ([6d996f9](fil-forge/hilt@6d996f9))
- fil-forge/hilt#108 ([c258fe3](fil-forge/hilt@c258fe3))
- fil-forge/hilt#107 ([023fa3a](fil-forge/hilt@023fa3a))

## 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))
bajtos pushed a commit to fil-forge/infra-central that referenced this pull request Oct 23, 2026
Sets every staging pin in `terraform/envs/staging/apps/terraform.tfvars`
to what `terraform/envs/dev/apps/terraform.tfvars` pins at 3d1850d.
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/39843935969.

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:dac4f50`](https://github.com/orgs/fil-forge/packages/container/sprue/1420685307)

What fil-forge/sprue brings over staging's pin, [`9b40689..e675a2c`](fil-forge/sprue@9b40689...e675a2c):

- `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))
- `Remove Put from the storage provider store` ([49fe894](fil-forge/sprue@49fe894))
- fil-forge/sprue#148 ([2ee5d6c](fil-forge/sprue@2ee5d6c))
- fil-forge/sprue#149 ([7b94804](fil-forge/sprue@7b94804))
- fil-forge/sprue#147 ([e675a2c](fil-forge/sprue@e675a2c))

## hilt

[`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:147557d`](https://github.com/orgs/fil-forge/packages/container/hilt/1429334113)

What fil-forge/hilt brings over staging's pin, [`42dd070..023fa3a`](fil-forge/hilt@42dd070...023fa3a):

- 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))
- fil-forge/hilt#104 ([06acdbb](fil-forge/hilt@06acdbb))
- fil-forge/hilt#105 ([4fd8d7b](fil-forge/hilt@4fd8d7b))
- fil-forge/hilt#106 ([6d996f9](fil-forge/hilt@6d996f9))
- fil-forge/hilt#108 ([c258fe3](fil-forge/hilt@c258fe3))
- fil-forge/hilt#107 ([023fa3a](fil-forge/hilt@023fa3a))

## 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))

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-central that referenced this pull request Oct 23, 2026
Sets every prod pin in `terraform/envs/prod/apps/terraform.tfvars`
to what `terraform/envs/staging/apps/terraform.tfvars` pins at 2d31ab2.
Merging this is the promotion: Check and deploy applies `terraform/envs/prod/apps`
on the merge commit, with no further confirmation.

staging passed its smoke test on that commit in https://github.com/fil-forge/infra-central/actions/runs/39952503173.

This pull request is rebuilt each time staging passes its smoke test after a push
to `main`, and closed once prod matches staging. To hold a service back, push
to `bot/promote-prod` 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:dac4f50`](https://github.com/orgs/fil-forge/packages/container/sprue/1420685307)

What fil-forge/sprue brings over prod's pin, [`9b40689..e675a2c`](fil-forge/sprue@9b40689...e675a2c):

- `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))
- `Remove Put from the storage provider store` ([49fe894](fil-forge/sprue@49fe894))
- fil-forge/sprue#148 ([2ee5d6c](fil-forge/sprue@2ee5d6c))
- fil-forge/sprue#149 ([7b94804](fil-forge/sprue@7b94804))
- fil-forge/sprue#147 ([e675a2c](fil-forge/sprue@e675a2c))

## hilt

[`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:147557d`](https://github.com/orgs/fil-forge/packages/container/hilt/1429334113)

What fil-forge/hilt brings over prod's pin, [`42dd070..023fa3a`](fil-forge/hilt@42dd070...023fa3a):

- 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))
- fil-forge/hilt#104 ([06acdbb](fil-forge/hilt@06acdbb))
- fil-forge/hilt#105 ([4fd8d7b](fil-forge/hilt@4fd8d7b))
- fil-forge/hilt#106 ([6d996f9](fil-forge/hilt@6d996f9))
- fil-forge/hilt#108 ([c258fe3](fil-forge/hilt@c258fe3))
- fil-forge/hilt#107 ([023fa3a](fil-forge/hilt@023fa3a))

## 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 prod'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 prod'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 prod'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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 23, 2026
Sets every prod pin in `terraform/envs/prod/apps/terraform.tfvars`
to what `terraform/envs/staging/apps/terraform.tfvars` pins at e26977c.
Merging this is the promotion: Check and deploy applies `terraform/envs/prod/apps`
on the merge commit, with no further confirmation.

staging passed its smoke test on that commit in https://github.com/fil-forge/infra-central/actions/runs/40003177982.

This pull request is rebuilt each time staging passes its smoke test after a push
to `main`, and closed once prod matches staging. To hold a service back, push
to `bot/promote-prod` 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:dac4f50`](https://github.com/orgs/fil-forge/packages/container/sprue/1420685307)

What fil-forge/sprue brings over prod's pin, [`9b40689..e675a2c`](fil-forge/sprue@9b40689...e675a2c):

- `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))
- `Remove Put from the storage provider store` ([49fe894](fil-forge/sprue@49fe894))
- fil-forge/sprue#148 ([2ee5d6c](fil-forge/sprue@2ee5d6c))
- fil-forge/sprue#149 ([7b94804](fil-forge/sprue@7b94804))
- fil-forge/sprue#147 ([e675a2c](fil-forge/sprue@e675a2c))

## hilt

[`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:147557d`](https://github.com/orgs/fil-forge/packages/container/hilt/1429334113)

What fil-forge/hilt brings over prod's pin, [`42dd070..023fa3a`](fil-forge/hilt@42dd070...023fa3a):

- 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))
- fil-forge/hilt#104 ([06acdbb](fil-forge/hilt@06acdbb))
- fil-forge/hilt#105 ([4fd8d7b](fil-forge/hilt@4fd8d7b))
- fil-forge/hilt#106 ([6d996f9](fil-forge/hilt@6d996f9))
- fil-forge/hilt#108 ([c258fe3](fil-forge/hilt@c258fe3))
- fil-forge/hilt#107 ([023fa3a](fil-forge/hilt@023fa3a))

## 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 prod'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 prod'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 prod'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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 24, 2026
Sets every prod pin in `terraform/envs/prod/apps/terraform.tfvars`
to what `terraform/envs/staging/apps/terraform.tfvars` pins at 7c9481b.
Merging this is the promotion: Check and deploy applies `terraform/envs/prod/apps`
on the merge commit, with no further confirmation.

staging passed its smoke test on that commit in https://github.com/fil-forge/infra-central/actions/runs/40080685971.

This pull request is rebuilt each time staging passes its smoke test after a push
to `main`, and closed once prod matches staging. To hold a service back, push
to `bot/promote-prod` 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:dac4f50`](https://github.com/orgs/fil-forge/packages/container/sprue/1420685307)

What fil-forge/sprue brings over prod's pin, [`9b40689..e675a2c`](fil-forge/sprue@9b40689...e675a2c):

- `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))
- `Remove Put from the storage provider store` ([49fe894](fil-forge/sprue@49fe894))
- fil-forge/sprue#148 ([2ee5d6c](fil-forge/sprue@2ee5d6c))
- fil-forge/sprue#149 ([7b94804](fil-forge/sprue@7b94804))
- fil-forge/sprue#147 ([e675a2c](fil-forge/sprue@e675a2c))

## hilt

[`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:147557d`](https://github.com/orgs/fil-forge/packages/container/hilt/1429334113)

What fil-forge/hilt brings over prod's pin, [`42dd070..023fa3a`](fil-forge/hilt@42dd070...023fa3a):

- 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))
- fil-forge/hilt#104 ([06acdbb](fil-forge/hilt@06acdbb))
- fil-forge/hilt#105 ([4fd8d7b](fil-forge/hilt@4fd8d7b))
- fil-forge/hilt#106 ([6d996f9](fil-forge/hilt@6d996f9))
- fil-forge/hilt#108 ([c258fe3](fil-forge/hilt@c258fe3))
- fil-forge/hilt#107 ([023fa3a](fil-forge/hilt@023fa3a))

## 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 prod'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 prod'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 prod'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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 26, 2026
Sets every prod pin in `terraform/envs/prod/apps/terraform.tfvars`
to what `terraform/envs/staging/apps/terraform.tfvars` pins at a0ab798.
Merging this is the promotion: Check and deploy applies `terraform/envs/prod/apps`
on the merge commit, with no further confirmation.

staging passed its smoke test on that commit in https://github.com/fil-forge/infra-central/actions/runs/40330356224.

This pull request is rebuilt each time staging passes its smoke test after a push
to `main`, and closed once prod matches staging. To hold a service back, push
to `bot/promote-prod` 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:dac4f50`](https://github.com/orgs/fil-forge/packages/container/sprue/1420685307)

What fil-forge/sprue brings over prod's pin, [`9b40689..e675a2c`](fil-forge/sprue@9b40689...e675a2c):

- `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))
- `Remove Put from the storage provider store` ([49fe894](fil-forge/sprue@49fe894))
- fil-forge/sprue#148 ([2ee5d6c](fil-forge/sprue@2ee5d6c))
- fil-forge/sprue#149 ([7b94804](fil-forge/sprue@7b94804))
- fil-forge/sprue#147 ([e675a2c](fil-forge/sprue@e675a2c))

## hilt

[`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:147557d`](https://github.com/orgs/fil-forge/packages/container/hilt/1429334113)

What fil-forge/hilt brings over prod's pin, [`42dd070..023fa3a`](fil-forge/hilt@42dd070...023fa3a):

- 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))
- fil-forge/hilt#104 ([06acdbb](fil-forge/hilt@06acdbb))
- fil-forge/hilt#105 ([4fd8d7b](fil-forge/hilt@4fd8d7b))
- fil-forge/hilt#106 ([6d996f9](fil-forge/hilt@6d996f9))
- fil-forge/hilt#108 ([c258fe3](fil-forge/hilt@c258fe3))
- fil-forge/hilt#107 ([023fa3a](fil-forge/hilt@023fa3a))

## 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 prod'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 prod'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 prod'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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 26, 2026
Sets every prod pin in `terraform/envs/prod/apps/terraform.tfvars`
to what `terraform/envs/staging/apps/terraform.tfvars` pins at 71da424.
Merging this is the promotion: Check and deploy applies `terraform/envs/prod/apps`
on the merge commit, with no further confirmation.

staging passed its smoke test on that commit in https://github.com/fil-forge/infra-central/actions/runs/40331032249.

This pull request is rebuilt each time staging passes its smoke test after a push
to `main`, and closed once prod matches staging. To hold a service back, push
to `bot/promote-prod` 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:dac4f50`](https://github.com/orgs/fil-forge/packages/container/sprue/1420685307)

What fil-forge/sprue brings over prod's pin, [`9b40689..e675a2c`](fil-forge/sprue@9b40689...e675a2c):

- `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))
- `Remove Put from the storage provider store` ([49fe894](fil-forge/sprue@49fe894))
- fil-forge/sprue#148 ([2ee5d6c](fil-forge/sprue@2ee5d6c))
- fil-forge/sprue#149 ([7b94804](fil-forge/sprue@7b94804))
- fil-forge/sprue#147 ([e675a2c](fil-forge/sprue@e675a2c))

## hilt

[`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:147557d`](https://github.com/orgs/fil-forge/packages/container/hilt/1429334113)

What fil-forge/hilt brings over prod's pin, [`42dd070..023fa3a`](fil-forge/hilt@42dd070...023fa3a):

- 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))
- fil-forge/hilt#104 ([06acdbb](fil-forge/hilt@06acdbb))
- fil-forge/hilt#105 ([4fd8d7b](fil-forge/hilt@4fd8d7b))
- fil-forge/hilt#106 ([6d996f9](fil-forge/hilt@6d996f9))
- fil-forge/hilt#108 ([c258fe3](fil-forge/hilt@c258fe3))
- fil-forge/hilt#107 ([023fa3a](fil-forge/hilt@023fa3a))

## 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 prod'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 prod'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 prod'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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 27, 2026
Sets every prod pin in `terraform/envs/prod/apps/terraform.tfvars`
to what `terraform/envs/staging/apps/terraform.tfvars` pins at 1e806bf.
Merging this is the promotion: Check and deploy applies `terraform/envs/prod/apps`
on the merge commit, with no further confirmation.

staging passed its smoke test on that commit in https://github.com/fil-forge/infra-central/actions/runs/40550164330.

This pull request is rebuilt each time staging passes its smoke test after a push
to `main`, and closed once prod matches staging. To hold a service back, push
to `bot/promote-prod` 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:dac4f50`](https://github.com/orgs/fil-forge/packages/container/sprue/1420685307)

What fil-forge/sprue brings over prod's pin, [`9b40689..e675a2c`](fil-forge/sprue@9b40689...e675a2c):

- `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))
- `Remove Put from the storage provider store` ([49fe894](fil-forge/sprue@49fe894))
- fil-forge/sprue#148 ([2ee5d6c](fil-forge/sprue@2ee5d6c))
- fil-forge/sprue#149 ([7b94804](fil-forge/sprue@7b94804))
- fil-forge/sprue#147 ([e675a2c](fil-forge/sprue@e675a2c))

## hilt

[`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:147557d`](https://github.com/orgs/fil-forge/packages/container/hilt/1429334113)

What fil-forge/hilt brings over prod's pin, [`42dd070..023fa3a`](fil-forge/hilt@42dd070...023fa3a):

- 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))
- fil-forge/hilt#104 ([06acdbb](fil-forge/hilt@06acdbb))
- fil-forge/hilt#105 ([4fd8d7b](fil-forge/hilt@4fd8d7b))
- fil-forge/hilt#106 ([6d996f9](fil-forge/hilt@6d996f9))
- fil-forge/hilt#108 ([c258fe3](fil-forge/hilt@c258fe3))
- fil-forge/hilt#107 ([023fa3a](fil-forge/hilt@023fa3a))

## 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 prod'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 prod'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 prod'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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 27, 2026
Sets every prod pin in `terraform/envs/prod/apps/terraform.tfvars`
to what `terraform/envs/staging/apps/terraform.tfvars` pins at 4594baf.
Merging this is the promotion: Check and deploy applies `terraform/envs/prod/apps`
on the merge commit, with no further confirmation.

staging passed its smoke test on that commit in https://github.com/fil-forge/infra-central/actions/runs/40556471031.

This pull request is rebuilt each time staging passes its smoke test after a push
to `main`, and closed once prod matches staging. To hold a service back, push
to `bot/promote-prod` 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:dac4f50`](https://github.com/orgs/fil-forge/packages/container/sprue/1420685307)

What fil-forge/sprue brings over prod's pin, [`9b40689..e675a2c`](fil-forge/sprue@9b40689...e675a2c):

- `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))
- `Remove Put from the storage provider store` ([49fe894](fil-forge/sprue@49fe894))
- fil-forge/sprue#148 ([2ee5d6c](fil-forge/sprue@2ee5d6c))
- fil-forge/sprue#149 ([7b94804](fil-forge/sprue@7b94804))
- fil-forge/sprue#147 ([e675a2c](fil-forge/sprue@e675a2c))

## hilt

[`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:147557d`](https://github.com/orgs/fil-forge/packages/container/hilt/1429334113)

What fil-forge/hilt brings over prod's pin, [`42dd070..023fa3a`](fil-forge/hilt@42dd070...023fa3a):

- 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))
- fil-forge/hilt#104 ([06acdbb](fil-forge/hilt@06acdbb))
- fil-forge/hilt#105 ([4fd8d7b](fil-forge/hilt@4fd8d7b))
- fil-forge/hilt#106 ([6d996f9](fil-forge/hilt@6d996f9))
- fil-forge/hilt#108 ([c258fe3](fil-forge/hilt@c258fe3))
- fil-forge/hilt#107 ([023fa3a](fil-forge/hilt@023fa3a))

## 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 prod'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 prod'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 prod'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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 27, 2026
Sets every prod pin in `terraform/envs/prod/apps/terraform.tfvars`
to what `terraform/envs/staging/apps/terraform.tfvars` pins at c0cec2b.
Merging this is the promotion: Check and deploy applies `terraform/envs/prod/apps`
on the merge commit, with no further confirmation.

staging passed its smoke test on that commit in https://github.com/fil-forge/infra-central/actions/runs/40565332700.

This pull request is rebuilt each time staging passes its smoke test after a push
to `main`, and closed once prod matches staging. To hold a service back, push
to `bot/promote-prod` 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:dac4f50`](https://github.com/orgs/fil-forge/packages/container/sprue/1420685307)

What fil-forge/sprue brings over prod's pin, [`9b40689..e675a2c`](fil-forge/sprue@9b40689...e675a2c):

- `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))
- `Remove Put from the storage provider store` ([49fe894](fil-forge/sprue@49fe894))
- fil-forge/sprue#148 ([2ee5d6c](fil-forge/sprue@2ee5d6c))
- fil-forge/sprue#149 ([7b94804](fil-forge/sprue@7b94804))
- fil-forge/sprue#147 ([e675a2c](fil-forge/sprue@e675a2c))

## hilt

[`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:147557d`](https://github.com/orgs/fil-forge/packages/container/hilt/1429334113)

What fil-forge/hilt brings over prod's pin, [`42dd070..023fa3a`](fil-forge/hilt@42dd070...023fa3a):

- 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))
- fil-forge/hilt#104 ([06acdbb](fil-forge/hilt@06acdbb))
- fil-forge/hilt#105 ([4fd8d7b](fil-forge/hilt@4fd8d7b))
- fil-forge/hilt#106 ([6d996f9](fil-forge/hilt@6d996f9))
- fil-forge/hilt#108 ([c258fe3](fil-forge/hilt@c258fe3))
- fil-forge/hilt#107 ([023fa3a](fil-forge/hilt@023fa3a))

## 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 prod'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 prod'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 prod'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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 29, 2026
Sets every prod pin in `terraform/envs/prod/apps/terraform.tfvars`
to what `terraform/envs/staging/apps/terraform.tfvars` pins at 6a1a861.
Merging this is the promotion: Check and deploy applies `terraform/envs/prod/apps`
on the merge commit, with no further confirmation.

staging passed its smoke test on that commit in https://github.com/fil-forge/infra-central/actions/runs/40887481549.

This pull request is rebuilt each time staging passes its smoke test after a push
to `main`, and closed once prod matches staging. To hold a service back, push
to `bot/promote-prod` 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:dac4f50`](https://github.com/orgs/fil-forge/packages/container/sprue/1420685307)

What fil-forge/sprue brings over prod's pin, [`9b40689..e675a2c`](fil-forge/sprue@9b40689...e675a2c):

- `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))
- `Remove Put from the storage provider store` ([49fe894](fil-forge/sprue@49fe894))
- fil-forge/sprue#148 ([2ee5d6c](fil-forge/sprue@2ee5d6c))
- fil-forge/sprue#149 ([7b94804](fil-forge/sprue@7b94804))
- fil-forge/sprue#147 ([e675a2c](fil-forge/sprue@e675a2c))

## hilt

[`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:147557d`](https://github.com/orgs/fil-forge/packages/container/hilt/1429334113)

What fil-forge/hilt brings over prod's pin, [`42dd070..023fa3a`](fil-forge/hilt@42dd070...023fa3a):

- 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))
- fil-forge/hilt#104 ([06acdbb](fil-forge/hilt@06acdbb))
- fil-forge/hilt#105 ([4fd8d7b](fil-forge/hilt@4fd8d7b))
- fil-forge/hilt#106 ([6d996f9](fil-forge/hilt@6d996f9))
- fil-forge/hilt#108 ([c258fe3](fil-forge/hilt@c258fe3))
- fil-forge/hilt#107 ([023fa3a](fil-forge/hilt@023fa3a))

## 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 prod'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 prod'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 prod'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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 29, 2026
Sets every prod pin in `terraform/envs/prod/apps/terraform.tfvars`
to what `terraform/envs/staging/apps/terraform.tfvars` pins at 9e73ace.
Merging this is the promotion: Check and deploy applies `terraform/envs/prod/apps`
on the merge commit, with no further confirmation.

staging passed its smoke test on that commit in https://github.com/fil-forge/infra-central/actions/runs/40931550755.

This pull request is rebuilt each time staging passes its smoke test after a push
to `main`, and closed once prod matches staging. To hold a service back, push
to `bot/promote-prod` 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:dac4f50`](https://github.com/orgs/fil-forge/packages/container/sprue/1420685307)

What fil-forge/sprue brings over prod's pin, [`9b40689..e675a2c`](fil-forge/sprue@9b40689...e675a2c):

- `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))
- `Remove Put from the storage provider store` ([49fe894](fil-forge/sprue@49fe894))
- fil-forge/sprue#148 ([2ee5d6c](fil-forge/sprue@2ee5d6c))
- fil-forge/sprue#149 ([7b94804](fil-forge/sprue@7b94804))
- fil-forge/sprue#147 ([e675a2c](fil-forge/sprue@e675a2c))

## hilt

[`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:147557d`](https://github.com/orgs/fil-forge/packages/container/hilt/1429334113)

What fil-forge/hilt brings over prod's pin, [`42dd070..023fa3a`](fil-forge/hilt@42dd070...023fa3a):

- 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))
- fil-forge/hilt#104 ([06acdbb](fil-forge/hilt@06acdbb))
- fil-forge/hilt#105 ([4fd8d7b](fil-forge/hilt@4fd8d7b))
- fil-forge/hilt#106 ([6d996f9](fil-forge/hilt@6d996f9))
- fil-forge/hilt#108 ([c258fe3](fil-forge/hilt@c258fe3))
- fil-forge/hilt#107 ([023fa3a](fil-forge/hilt@023fa3a))

## 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 prod'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 prod'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 prod'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))
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 29, 2026
Sets every prod pin in `terraform/envs/prod/apps/terraform.tfvars`
to what `terraform/envs/staging/apps/terraform.tfvars` pins at 2a0e4ab.
Merging this is the promotion: Check and deploy applies `terraform/envs/prod/apps`
on the merge commit, with no further confirmation.

staging passed its smoke test on that commit in https://github.com/fil-forge/infra-central/actions/runs/40932541907.

This pull request is rebuilt each time staging passes its smoke test after a push
to `main`, and closed once prod matches staging. To hold a service back, push
to `bot/promote-prod` 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:dac4f50`](https://github.com/orgs/fil-forge/packages/container/sprue/1420685307)

What fil-forge/sprue brings over prod's pin, [`9b40689..e675a2c`](fil-forge/sprue@9b40689...e675a2c):

- `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))
- `Remove Put from the storage provider store` ([49fe894](fil-forge/sprue@49fe894))
- fil-forge/sprue#148 ([2ee5d6c](fil-forge/sprue@2ee5d6c))
- fil-forge/sprue#149 ([7b94804](fil-forge/sprue@7b94804))
- fil-forge/sprue#147 ([e675a2c](fil-forge/sprue@e675a2c))

## hilt

[`sha256:5b6d022`](https://github.com/orgs/fil-forge/packages/container/hilt/1384674731) → [`sha256:147557d`](https://github.com/orgs/fil-forge/packages/container/hilt/1429334113)

What fil-forge/hilt brings over prod's pin, [`42dd070..023fa3a`](fil-forge/hilt@42dd070...023fa3a):

- 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))
- fil-forge/hilt#104 ([06acdbb](fil-forge/hilt@06acdbb))
- fil-forge/hilt#105 ([4fd8d7b](fil-forge/hilt@4fd8d7b))
- fil-forge/hilt#106 ([6d996f9](fil-forge/hilt@6d996f9))
- fil-forge/hilt#108 ([c258fe3](fil-forge/hilt@c258fe3))
- fil-forge/hilt#107 ([023fa3a](fil-forge/hilt@023fa3a))

## swarf

[`sha256:c364312`](https://github.com/orgs/fil-forge/packages/container/swarf/1361661163) → [`sha256:87d48f8`](https://github.com/orgs/fil-forge/packages/container/swarf/1469527924)

What fil-forge/swarf brings over prod's pin, [`4b2e2ae..0b9c66d`](fil-forge/swarf@4b2e2ae...0b9c66d):

- `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))
- `FIL-1646 Bump ucantone to run batch invocations concurrently` ([0cbf743](fil-forge/swarf@0cbf743))
- `FIL-1646 Lock the test handler's revoked list` ([cdd1d32](fil-forge/swarf@cdd1d32))
- fil-forge/swarf#26 ([0b9c66d](fil-forge/swarf@0b9c66d))

## 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 prod'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 prod'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))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants