Skip to content

feat(client): publish a batch of revocations in one request - #22

Merged
pyropy merged 1 commit into
mainfrom
srdjan/feat/publish-batch
Oct 9, 2026
Merged

pyropy merged 1 commit into
mainfrom
srdjan/feat/publish-batch

Conversation

@pyropy

@pyropy pyropy commented Sep 22, 2026

Copy link
Copy Markdown
Contributor

Summary

RFC 30 (fil-one/RFC#30) has Hilt rotate a principal-bound key's delegations on every policy change and send every revocation produced by one write to Swarf in a single request, so a write waits on one round trip however many keys it touches. The client gains PublishBatch, which builds one self-signed /ucan/revoke invocation per revoked delegation and sends them in one container through ucantone's ExecuteBatch. Every receipt is checked; the first refused one fails the call. The service needs no change: a ucantone server already executes every invocation in a request container.

Change log

  • pkg/client: PublishBatch(ctx, revoker, revoked []ucan.Delegation); the executor is the ucantone HTTP client so both Execute and ExecuteBatch are available.
  • go.mod: ucantone bumped to b59f1d1fcbb6 for execution/batch.
  • Tests: TestPublishBatch (one request for two delegations, an empty batch publishes nothing, a refused revocation fails the call).

🤖 Generated with Claude Code

Hilt rotates a principal-bound key's delegations on every policy change
and needs every revocation of one write sent together, so that the write
waits on one round trip regardless of how many keys it touches.
PublishBatch builds one self-signed /ucan/revoke invocation per revoked
delegation and sends them in a single container through ucantone's
ExecuteBatch, failing on the first refused receipt. ucantone is bumped to
the version that exposes batch execution.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@pyropy

pyropy commented Oct 1, 2026

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-01T12:17:41.301503Z 0b2e5b2 Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. 👍

Reviewed commit: 0b2e5b2e1c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@pyropy
pyropy requested a review from alanshaw October 2, 2026 09:44
@pyropy
pyropy merged commit 4b2e2ae into main Oct 9, 2026
7 checks passed
@pyropy
pyropy deleted the srdjan/feat/publish-batch branch October 9, 2026 13:02
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 9, 2026
Published from fil-forge/swarf#22

- Digest: `sha256:c3643127f22e47c9ea8f479287ffc1ef01e9d29d2fe9ebe5fc76488501803a74`
- Commit: fil-forge/swarf@4b2e2ae
- Publish run: https://github.com/fil-forge/swarf/actions/runs/37934029957

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

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:b6a4f84` → `sha256:79eb33d`

What fil-forge/sprue brings over staging's pin, `de71035..9b40689`:

- build(deps): bump the github-actions group across 1 directory with 6 updates (9531d9d)
- build(deps): bump the github-actions group across 1 directory with 6 updates (fil-forge/sprue#83) (ab4a00d)
- build(deps): bump the github-actions group with 5 updates (fil-forge/sprue#99) (bc827d0)
- build(deps): bump github.com/aws/aws-sdk-go-v2 from 1.46.0 to 1.47.0 (fil-forge/sprue#100) (bb23dbe)
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.112.0 to 1.113.1 (fil-forge/sprue#101) (42f78f7)
- build(deps): bump golang.org/x/sync from 0.22.0 to 0.23.0 (fil-forge/sprue#103) (a17d3f4)
- build(deps): bump github.com/olekukonko/tablewriter from 1.1.4 to 1.1.5 (fil-forge/sprue#104) (0723a79)
- build(deps): bump github.com/aws/aws-sdk-go-v2/credentials from 1.20.3 to 1.20.5 (fil-forge/sprue#102) (b400abe)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.33.3 to 1.33.5 (fil-forge/sprue#105) (506f5f6)
- feat: record upload counts (fil-forge/sprue#108) (289704a)
- feat: implement metrics handler (fil-forge/sprue#107) (3ecddfd)
- feat: add OTEL tracing (fil-forge/sprue#112) (dae68fb)
- build(deps): bump the github-actions group with 5 updates (fil-forge/sprue#115) (9196de3)
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.113.1 to 1.113.2 (fil-forge/sprue#116) (d73446d)
- feat: concurrent event listeners (fil-forge/sprue#117) (c2cd80b)
- Add /forge-perf: benchmark a pull request on forge-perf (fil-forge/sprue#118) (45d5331)
- ci: call libforge workspace test workflow at @main (fil-forge/sprue#120) (c0f6b49)
- Grant forge-perf's pr-run.yml pull-requests: write again (fil-forge/sprue#121) (2f1ec80)
- feat: add upload count to metrics (fil-forge/sprue#119) (6b6e727)
- feat: allow digest-less blob add (fil-forge/sprue#122) (04ea1db)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.33.5 to 1.33.6 (fil-forge/sprue#124) (67d7ba0)
- build(deps): bump github.com/labstack/echo/v4 from 4.15.4 to 4.16.0 (fil-forge/sprue#127) (c99a3e1)
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.113.2 to 1.113.4 (fil-forge/sprue#128) (052f95d)
- feat: add timestamp to agent index table (fil-forge/sprue#129) (9b40689)

## hilt

`sha256:3992eef` → `sha256:80076f3`

What fil-forge/hilt brings over staging's pin, `9815d93..a026d16`:

- feat: return error codes from the Tenant API (fil-forge/hilt#76) (14f6d84)
- fix: delete bucket grants (fil-forge/hilt#78) (468abb1)
- fix: add missing upload remove grant (fil-forge/hilt#79) (d716fd3)
- feat: add async overhang (fil-forge/hilt#83) (87afacd)
- fix: reject self issued invocations (fil-forge/hilt#81) (969e212)
- feat: add OTEL tracing (fil-forge/hilt#88) (cbe41f1)
- fix: add `/upload/remove` grant to bucket delete (fil-forge/hilt#90) (4ee3af8)
- Add /forge-perf: benchmark a pull request on forge-perf (fil-forge/hilt#92) (22b905f)
- Grant forge-perf's pr-run.yml pull-requests: write again (fil-forge/hilt#94) (19be980)
- fix: catalog write grants (fil-forge/hilt#93) (d21578e)
- feat: implement tenant metrics (fil-forge/hilt#91) (a026d16)

## swarf

`sha256:1edd6ed` → `sha256:c364312`

What fil-forge/swarf brings over staging's pin, `f286fb0..4b2e2ae`:

- fix: bound the event MaxEventBytes names (edfa9a6)
- fix: report the service's error events from swarf stream (16cf241)
- fix: report a failed firehose stream to the caller of the handler (a033bcc)
- fix: bound the event MaxEventBytes names, and report the service's error events (fil-forge/swarf#18) (f796a42)
- fix: report a failed firehose stream to the caller of the handler (fil-forge/swarf#19) (1778ec0)
- fix: add recovery middleware (fil-forge/swarf#21) (cdba143)
- feat(client): publish a batch of revocations in one request (0b2e5b2)
- feat(client): publish a batch of revocations in one request (fil-forge/swarf#22) (4b2e2ae)

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 13, 2026
Sets every prod pin in `terraform/envs/prod/apps/terraform.tfvars`
to what `terraform/envs/staging/apps/terraform.tfvars` pins at 6a4df2a.
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/38399813594.

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:b6a4f84` → `sha256:79eb33d`

What fil-forge/sprue brings over prod's pin, `de71035..9b40689`:

- build(deps): bump the github-actions group across 1 directory with 6 updates (9531d9d)
- build(deps): bump the github-actions group across 1 directory with 6 updates (fil-forge/sprue#83) (ab4a00d)
- build(deps): bump the github-actions group with 5 updates (fil-forge/sprue#99) (bc827d0)
- build(deps): bump github.com/aws/aws-sdk-go-v2 from 1.46.0 to 1.47.0 (fil-forge/sprue#100) (bb23dbe)
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.112.0 to 1.113.1 (fil-forge/sprue#101) (42f78f7)
- build(deps): bump golang.org/x/sync from 0.22.0 to 0.23.0 (fil-forge/sprue#103) (a17d3f4)
- build(deps): bump github.com/olekukonko/tablewriter from 1.1.4 to 1.1.5 (fil-forge/sprue#104) (0723a79)
- build(deps): bump github.com/aws/aws-sdk-go-v2/credentials from 1.20.3 to 1.20.5 (fil-forge/sprue#102) (b400abe)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.33.3 to 1.33.5 (fil-forge/sprue#105) (506f5f6)
- feat: record upload counts (fil-forge/sprue#108) (289704a)
- feat: implement metrics handler (fil-forge/sprue#107) (3ecddfd)
- feat: add OTEL tracing (fil-forge/sprue#112) (dae68fb)
- build(deps): bump the github-actions group with 5 updates (fil-forge/sprue#115) (9196de3)
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.113.1 to 1.113.2 (fil-forge/sprue#116) (d73446d)
- feat: concurrent event listeners (fil-forge/sprue#117) (c2cd80b)
- Add /forge-perf: benchmark a pull request on forge-perf (fil-forge/sprue#118) (45d5331)
- ci: call libforge workspace test workflow at @main (fil-forge/sprue#120) (c0f6b49)
- Grant forge-perf's pr-run.yml pull-requests: write again (fil-forge/sprue#121) (2f1ec80)
- feat: add upload count to metrics (fil-forge/sprue#119) (6b6e727)
- feat: allow digest-less blob add (fil-forge/sprue#122) (04ea1db)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.33.5 to 1.33.6 (fil-forge/sprue#124) (67d7ba0)
- build(deps): bump github.com/labstack/echo/v4 from 4.15.4 to 4.16.0 (fil-forge/sprue#127) (c99a3e1)
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.113.2 to 1.113.4 (fil-forge/sprue#128) (052f95d)
- feat: add timestamp to agent index table (fil-forge/sprue#129) (9b40689)

## hilt

`sha256:3992eef` → `sha256:80076f3`

What fil-forge/hilt brings over prod's pin, `9815d93..a026d16`:

- feat: return error codes from the Tenant API (fil-forge/hilt#76) (14f6d84)
- fix: delete bucket grants (fil-forge/hilt#78) (468abb1)
- fix: add missing upload remove grant (fil-forge/hilt#79) (d716fd3)
- feat: add async overhang (fil-forge/hilt#83) (87afacd)
- fix: reject self issued invocations (fil-forge/hilt#81) (969e212)
- feat: add OTEL tracing (fil-forge/hilt#88) (cbe41f1)
- fix: add `/upload/remove` grant to bucket delete (fil-forge/hilt#90) (4ee3af8)
- Add /forge-perf: benchmark a pull request on forge-perf (fil-forge/hilt#92) (22b905f)
- Grant forge-perf's pr-run.yml pull-requests: write again (fil-forge/hilt#94) (19be980)
- fix: catalog write grants (fil-forge/hilt#93) (d21578e)
- feat: implement tenant metrics (fil-forge/hilt#91) (a026d16)

## swarf

`sha256:1edd6ed` → `sha256:c364312`

What fil-forge/swarf brings over prod's pin, `f286fb0..4b2e2ae`:

- fix: bound the event MaxEventBytes names (edfa9a6)
- fix: report the service's error events from swarf stream (16cf241)
- fix: report a failed firehose stream to the caller of the handler (a033bcc)
- fix: bound the event MaxEventBytes names, and report the service's error events (fil-forge/swarf#18) (f796a42)
- fix: report a failed firehose stream to the caller of the handler (fil-forge/swarf#19) (1778ec0)
- fix: add recovery middleware (fil-forge/swarf#21) (cdba143)
- feat(client): publish a batch of revocations in one request (0b2e5b2)
- feat(client): publish a batch of revocations in one request (fil-forge/swarf#22) (4b2e2ae)
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 13, 2026
Sets every prod pin in `terraform/envs/prod/apps/terraform.tfvars`
to what `terraform/envs/staging/apps/terraform.tfvars` pins at c8d4687.
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/38400369763.

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:b6a4f84` → `sha256:79eb33d`

What fil-forge/sprue brings over prod's pin, `de71035..9b40689`:

- build(deps): bump the github-actions group across 1 directory with 6 updates (9531d9d)
- build(deps): bump the github-actions group across 1 directory with 6 updates (fil-forge/sprue#83) (ab4a00d)
- build(deps): bump the github-actions group with 5 updates (fil-forge/sprue#99) (bc827d0)
- build(deps): bump github.com/aws/aws-sdk-go-v2 from 1.46.0 to 1.47.0 (fil-forge/sprue#100) (bb23dbe)
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.112.0 to 1.113.1 (fil-forge/sprue#101) (42f78f7)
- build(deps): bump golang.org/x/sync from 0.22.0 to 0.23.0 (fil-forge/sprue#103) (a17d3f4)
- build(deps): bump github.com/olekukonko/tablewriter from 1.1.4 to 1.1.5 (fil-forge/sprue#104) (0723a79)
- build(deps): bump github.com/aws/aws-sdk-go-v2/credentials from 1.20.3 to 1.20.5 (fil-forge/sprue#102) (b400abe)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.33.3 to 1.33.5 (fil-forge/sprue#105) (506f5f6)
- feat: record upload counts (fil-forge/sprue#108) (289704a)
- feat: implement metrics handler (fil-forge/sprue#107) (3ecddfd)
- feat: add OTEL tracing (fil-forge/sprue#112) (dae68fb)
- build(deps): bump the github-actions group with 5 updates (fil-forge/sprue#115) (9196de3)
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.113.1 to 1.113.2 (fil-forge/sprue#116) (d73446d)
- feat: concurrent event listeners (fil-forge/sprue#117) (c2cd80b)
- Add /forge-perf: benchmark a pull request on forge-perf (fil-forge/sprue#118) (45d5331)
- ci: call libforge workspace test workflow at @main (fil-forge/sprue#120) (c0f6b49)
- Grant forge-perf's pr-run.yml pull-requests: write again (fil-forge/sprue#121) (2f1ec80)
- feat: add upload count to metrics (fil-forge/sprue#119) (6b6e727)
- feat: allow digest-less blob add (fil-forge/sprue#122) (04ea1db)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.33.5 to 1.33.6 (fil-forge/sprue#124) (67d7ba0)
- build(deps): bump github.com/labstack/echo/v4 from 4.15.4 to 4.16.0 (fil-forge/sprue#127) (c99a3e1)
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.113.2 to 1.113.4 (fil-forge/sprue#128) (052f95d)
- feat: add timestamp to agent index table (fil-forge/sprue#129) (9b40689)

## hilt

`sha256:3992eef` → `sha256:80076f3`

What fil-forge/hilt brings over prod's pin, `9815d93..a026d16`:

- feat: return error codes from the Tenant API (fil-forge/hilt#76) (14f6d84)
- fix: delete bucket grants (fil-forge/hilt#78) (468abb1)
- fix: add missing upload remove grant (fil-forge/hilt#79) (d716fd3)
- feat: add async overhang (fil-forge/hilt#83) (87afacd)
- fix: reject self issued invocations (fil-forge/hilt#81) (969e212)
- feat: add OTEL tracing (fil-forge/hilt#88) (cbe41f1)
- fix: add `/upload/remove` grant to bucket delete (fil-forge/hilt#90) (4ee3af8)
- Add /forge-perf: benchmark a pull request on forge-perf (fil-forge/hilt#92) (22b905f)
- Grant forge-perf's pr-run.yml pull-requests: write again (fil-forge/hilt#94) (19be980)
- fix: catalog write grants (fil-forge/hilt#93) (d21578e)
- feat: implement tenant metrics (fil-forge/hilt#91) (a026d16)

## swarf

`sha256:1edd6ed` → `sha256:c364312`

What fil-forge/swarf brings over prod's pin, `f286fb0..4b2e2ae`:

- fix: bound the event MaxEventBytes names (edfa9a6)
- fix: report the service's error events from swarf stream (16cf241)
- fix: report a failed firehose stream to the caller of the handler (a033bcc)
- fix: bound the event MaxEventBytes names, and report the service's error events (fil-forge/swarf#18) (f796a42)
- fix: report a failed firehose stream to the caller of the handler (fil-forge/swarf#19) (1778ec0)
- fix: add recovery middleware (fil-forge/swarf#21) (cdba143)
- feat(client): publish a batch of revocations in one request (0b2e5b2)
- feat(client): publish a batch of revocations in one request (fil-forge/swarf#22) (4b2e2ae)
fil-forge-bot Bot added a commit to fil-forge/infra-central that referenced this pull request Oct 13, 2026
Sets every prod pin in `terraform/envs/prod/apps/terraform.tfvars`
to what `terraform/envs/staging/apps/terraform.tfvars` pins at 14c562f.
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/38400903396.

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:b6a4f84` → `sha256:79eb33d`

What fil-forge/sprue brings over prod's pin, `de71035..9b40689`:

- build(deps): bump the github-actions group across 1 directory with 6 updates (9531d9d)
- build(deps): bump the github-actions group across 1 directory with 6 updates (fil-forge/sprue#83) (ab4a00d)
- build(deps): bump the github-actions group with 5 updates (fil-forge/sprue#99) (bc827d0)
- build(deps): bump github.com/aws/aws-sdk-go-v2 from 1.46.0 to 1.47.0 (fil-forge/sprue#100) (bb23dbe)
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.112.0 to 1.113.1 (fil-forge/sprue#101) (42f78f7)
- build(deps): bump golang.org/x/sync from 0.22.0 to 0.23.0 (fil-forge/sprue#103) (a17d3f4)
- build(deps): bump github.com/olekukonko/tablewriter from 1.1.4 to 1.1.5 (fil-forge/sprue#104) (0723a79)
- build(deps): bump github.com/aws/aws-sdk-go-v2/credentials from 1.20.3 to 1.20.5 (fil-forge/sprue#102) (b400abe)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.33.3 to 1.33.5 (fil-forge/sprue#105) (506f5f6)
- feat: record upload counts (fil-forge/sprue#108) (289704a)
- feat: implement metrics handler (fil-forge/sprue#107) (3ecddfd)
- feat: add OTEL tracing (fil-forge/sprue#112) (dae68fb)
- build(deps): bump the github-actions group with 5 updates (fil-forge/sprue#115) (9196de3)
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.113.1 to 1.113.2 (fil-forge/sprue#116) (d73446d)
- feat: concurrent event listeners (fil-forge/sprue#117) (c2cd80b)
- Add /forge-perf: benchmark a pull request on forge-perf (fil-forge/sprue#118) (45d5331)
- ci: call libforge workspace test workflow at @main (fil-forge/sprue#120) (c0f6b49)
- Grant forge-perf's pr-run.yml pull-requests: write again (fil-forge/sprue#121) (2f1ec80)
- feat: add upload count to metrics (fil-forge/sprue#119) (6b6e727)
- feat: allow digest-less blob add (fil-forge/sprue#122) (04ea1db)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.33.5 to 1.33.6 (fil-forge/sprue#124) (67d7ba0)
- build(deps): bump github.com/labstack/echo/v4 from 4.15.4 to 4.16.0 (fil-forge/sprue#127) (c99a3e1)
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.113.2 to 1.113.4 (fil-forge/sprue#128) (052f95d)
- feat: add timestamp to agent index table (fil-forge/sprue#129) (9b40689)

## hilt

`sha256:3992eef` → `sha256:80076f3`

What fil-forge/hilt brings over prod's pin, `9815d93..a026d16`:

- feat: return error codes from the Tenant API (fil-forge/hilt#76) (14f6d84)
- fix: delete bucket grants (fil-forge/hilt#78) (468abb1)
- fix: add missing upload remove grant (fil-forge/hilt#79) (d716fd3)
- feat: add async overhang (fil-forge/hilt#83) (87afacd)
- fix: reject self issued invocations (fil-forge/hilt#81) (969e212)
- feat: add OTEL tracing (fil-forge/hilt#88) (cbe41f1)
- fix: add `/upload/remove` grant to bucket delete (fil-forge/hilt#90) (4ee3af8)
- Add /forge-perf: benchmark a pull request on forge-perf (fil-forge/hilt#92) (22b905f)
- Grant forge-perf's pr-run.yml pull-requests: write again (fil-forge/hilt#94) (19be980)
- fix: catalog write grants (fil-forge/hilt#93) (d21578e)
- feat: implement tenant metrics (fil-forge/hilt#91) (a026d16)

## swarf

`sha256:1edd6ed` → `sha256:c364312`

What fil-forge/swarf brings over prod's pin, `f286fb0..4b2e2ae`:

- fix: bound the event MaxEventBytes names (edfa9a6)
- fix: report the service's error events from swarf stream (16cf241)
- fix: report a failed firehose stream to the caller of the handler (a033bcc)
- fix: bound the event MaxEventBytes names, and report the service's error events (fil-forge/swarf#18) (f796a42)
- fix: report a failed firehose stream to the caller of the handler (fil-forge/swarf#19) (1778ec0)
- fix: add recovery middleware (fil-forge/swarf#21) (cdba143)
- feat(client): publish a batch of revocations in one request (0b2e5b2)
- feat(client): publish a batch of revocations in one request (fil-forge/swarf#22) (4b2e2ae)
bajtos pushed a commit to fil-forge/infra-central that referenced this pull request Oct 13, 2026
Sets every prod pin in `terraform/envs/prod/apps/terraform.tfvars`
to what `terraform/envs/staging/apps/terraform.tfvars` pins at 14c562f.
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/38400903396.

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:b6a4f84` → `sha256:79eb33d`

What fil-forge/sprue brings over prod's pin, `de71035..9b40689`:

- build(deps): bump the github-actions group across 1 directory with 6 updates (9531d9d)
- build(deps): bump the github-actions group across 1 directory with 6 updates (fil-forge/sprue#83) (ab4a00d)
- build(deps): bump the github-actions group with 5 updates (fil-forge/sprue#99) (bc827d0)
- build(deps): bump github.com/aws/aws-sdk-go-v2 from 1.46.0 to 1.47.0 (fil-forge/sprue#100) (bb23dbe)
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.112.0 to 1.113.1 (fil-forge/sprue#101) (42f78f7)
- build(deps): bump golang.org/x/sync from 0.22.0 to 0.23.0 (fil-forge/sprue#103) (a17d3f4)
- build(deps): bump github.com/olekukonko/tablewriter from 1.1.4 to 1.1.5 (fil-forge/sprue#104) (0723a79)
- build(deps): bump github.com/aws/aws-sdk-go-v2/credentials from 1.20.3 to 1.20.5 (fil-forge/sprue#102) (b400abe)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.33.3 to 1.33.5 (fil-forge/sprue#105) (506f5f6)
- feat: record upload counts (fil-forge/sprue#108) (289704a)
- feat: implement metrics handler (fil-forge/sprue#107) (3ecddfd)
- feat: add OTEL tracing (fil-forge/sprue#112) (dae68fb)
- build(deps): bump the github-actions group with 5 updates (fil-forge/sprue#115) (9196de3)
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.113.1 to 1.113.2 (fil-forge/sprue#116) (d73446d)
- feat: concurrent event listeners (fil-forge/sprue#117) (c2cd80b)
- Add /forge-perf: benchmark a pull request on forge-perf (fil-forge/sprue#118) (45d5331)
- ci: call libforge workspace test workflow at @main (fil-forge/sprue#120) (c0f6b49)
- Grant forge-perf's pr-run.yml pull-requests: write again (fil-forge/sprue#121) (2f1ec80)
- feat: add upload count to metrics (fil-forge/sprue#119) (6b6e727)
- feat: allow digest-less blob add (fil-forge/sprue#122) (04ea1db)
- build(deps): bump github.com/aws/aws-sdk-go-v2/config from 1.33.5 to 1.33.6 (fil-forge/sprue#124) (67d7ba0)
- build(deps): bump github.com/labstack/echo/v4 from 4.15.4 to 4.16.0 (fil-forge/sprue#127) (c99a3e1)
- build(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 from 1.113.2 to 1.113.4 (fil-forge/sprue#128) (052f95d)
- feat: add timestamp to agent index table (fil-forge/sprue#129) (9b40689)

## hilt

`sha256:3992eef` → `sha256:80076f3`

What fil-forge/hilt brings over prod's pin, `9815d93..a026d16`:

- feat: return error codes from the Tenant API (fil-forge/hilt#76) (14f6d84)
- fix: delete bucket grants (fil-forge/hilt#78) (468abb1)
- fix: add missing upload remove grant (fil-forge/hilt#79) (d716fd3)
- feat: add async overhang (fil-forge/hilt#83) (87afacd)
- fix: reject self issued invocations (fil-forge/hilt#81) (969e212)
- feat: add OTEL tracing (fil-forge/hilt#88) (cbe41f1)
- fix: add `/upload/remove` grant to bucket delete (fil-forge/hilt#90) (4ee3af8)
- Add /forge-perf: benchmark a pull request on forge-perf (fil-forge/hilt#92) (22b905f)
- Grant forge-perf's pr-run.yml pull-requests: write again (fil-forge/hilt#94) (19be980)
- fix: catalog write grants (fil-forge/hilt#93) (d21578e)
- feat: implement tenant metrics (fil-forge/hilt#91) (a026d16)

## swarf

`sha256:1edd6ed` → `sha256:c364312`

What fil-forge/swarf brings over prod's pin, `f286fb0..4b2e2ae`:

- fix: bound the event MaxEventBytes names (edfa9a6)
- fix: report the service's error events from swarf stream (16cf241)
- fix: report a failed firehose stream to the caller of the handler (a033bcc)
- fix: bound the event MaxEventBytes names, and report the service's error events (fil-forge/swarf#18) (f796a42)
- fix: report a failed firehose stream to the caller of the handler (fil-forge/swarf#19) (1778ec0)
- fix: add recovery middleware (fil-forge/swarf#21) (cdba143)
- feat(client): publish a batch of revocations in one request (0b2e5b2)
- feat(client): publish a batch of revocations in one request (fil-forge/swarf#22) (4b2e2ae)

Co-authored-by: fil-forge-bot[bot] <318653112+fil-forge-bot[bot]@users.noreply.github.com>
pyropy added a commit to fil-forge/hilt that referenced this pull request Oct 14, 2026
Rotates a principal-bound key's delegations when its policies change and
revokes them when the principal goes. Revocations go to Swarf in one
request per write, and the gateway should drop its delagations from
caches.

- `grant.Rotator` (`Rotate`, `Revoke`), `PublishRevocations`,
`BatchTimeout`
- Delegation store `Replace` swaps several keys' sets in one transaction
- One `RevocationPublisher` shared by key, bucket and policy writes
- `testutil.FakeSwarf`
- Temporary pin: swarf to fil-forge/swarf#22 (`PublishBatch`); re-pin
before merge

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
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