Repository navigation
feat(pdp): hold accepted blobs before commP for a configurable delay - #187
Conversation
An accepted blob now waits out pdp.aggregation.commp.delay (default 1h,
dynamic, 0 disables) before a PDPCommP task may claim its pipeline row. A
blob released inside the window is cancelled by the removal sweep without a
commP, a parked piece, or an on-chain root that the removal would then
retire. The blob is retrievable throughout and nothing on the wire changes.
Eligibility is computed at claim time from the row's created_at, so no
migration is needed and a change to the setting applies to blobs already
waiting; setting it to 0 releases them on the engine's next poll. With a
delay, the commP task's IAmBored is what claims due rows, so it now claims
every due row per call (capped) rather than one; a direct spawn (settle
hand-off, or acceptance with no delay) still claims a due row at once.
The default follows published deletion-age traces: the 90th percentile of
age at deletion in the Yahoo HDFS traces falls between 22 and 75 minutes,
and every file-system trace puts the bulk of deletions in the first minutes,
so an hour covers nearly all a delay can save.
Telemetry: piri_pdp_commp_held_blobs, piri_pdp_commp_due_blobs and
piri_pdp_commp_due_blobs_oldest_seconds gauge the entry queue;
piri_pdp_pipeline_cancelled{stage} and
piri_pdp_pipeline_cancelled_age_seconds record each row the sweep cancels
before aggregation, which is the node's own age-at-deletion distribution
for tuning the delay. Docs cover the setting, the metrics and an alert.
DurationSchema now rejects a negative duration whatever its Min, which a
zero Min used to let through.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
SettleTask.Do spawned a commP task after every settle, which with a delay set claimed nothing and rolled back, where Entry.Enqueue already skips the spawn when a delay is set. The two entry points now agree: a settled row under a delay is left for the commP task's IAmBored to claim once due. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
Why the default delay is one hour The delay exists to avoid computing a CommP and adding an on-chain root for a blob that is deleted soon after upload. Its value is set by how deletion risk falls with a blob's age. No public trace covers an S3-style object store, so the default comes from the closest published deletion-age distributions. All of them put most deletions of fresh data in the first minutes and flatten within about an hour.
The Hadoop trace is the closest in shape to an object store, and its 90th percentile sits at about an hour. Past that each extra hour saves little: the CIFS data shows a full day only moves coverage from roughly 80% to 90% of deletions. Backup retention deletes, weeks or months out, are beyond any delay. The cost of an hour is an hour added to time to first proof, which the pipeline already spends waiting for an aggregate to fill and for the next proving period. AWS answers the same cost differently: S3 Standard-IA bills a 30-day minimum, Glacier Instant Retrieval 90 days and Deep Archive 180 days. A minimum billing duration is a pricing decision, so it is not part of this change. The default is a starting point. The age histogram this change adds ( |
There was a problem hiding this comment.
🟡 Changes recommended
Pending releases can still incur hashing, disabled delays can be lost during installation, and cancellation metrics can overstate avoided work.
3 open issues
What changed in this PR
Adds a configurable, one-hour default delay before accepted blobs enter CommP processing, allowing early removals to avoid unnecessary work.
Changes:
- Adds dynamic delay configuration and time-based task selection.
- Adds backlog and cancellation telemetry.
- Documents operation and tests delayed processing.
| File | Description |
|---|---|
| pkg/ucanhandlers/pdp/info.go | Documents the on-demand bypass. |
| pkg/pdp/service/telemetry.go | Defines cancellation metrics. |
| pkg/pdp/service/service.go | Initializes cancellation metrics. |
| pkg/pdp/service/piece_remove.go | Records cancellation stage and age. |
| pkg/pdp/service/piece_remove_test.go | Tests held-blob removal and metrics. |
| pkg/pdp/pipeline/task_settle.go | Defers CommP handoff when configured. |
| pkg/pdp/pipeline/task_settle_test.go | Tests delayed handoff. |
| pkg/pdp/pipeline/task_commp.go | Claims due blobs in bounded batches. |
| pkg/pdp/pipeline/fxmodule.go | Registers policy and telemetry. |
| pkg/pdp/pipeline/commp_metrics.go | Exposes held and overdue backlog gauges. |
| pkg/pdp/pipeline/commp_delay_test.go | Tests delay, claims, and backlog. |
| pkg/pdp/pipeline/calculator.go | Suppresses immediate tasks during delay. |
| pkg/pdp/pipeline/calculator_test.go | Adds delay-aware test helpers. |
| pkg/pdp/aggregation/commp/policy/policy.go | Binds policy to dynamic configuration. |
| pkg/pdp/aggregation/commp/policy/policy_test.go | Tests policy updates and validation. |
| pkg/pdp/aggregation/commp/commp.go | Defines delay policy and limits. |
| pkg/fx/app/common.go | Supplies CommP configuration. |
| pkg/config/pdp.go | Adds delay configuration and validation. |
| pkg/config/dynamic/schema.go | Rejects negative durations. |
| pkg/config/dynamic/schema_test.go | Tests zero and negative durations. |
| pkg/config/defaults.go | Registers the delay key and default. |
| pkg/config/app/pdp.go | Carries delay into application configuration. |
| docs/content/operator-guide/monitoring.md | Documents metrics and an alert. |
| docs/content/configuration/pdp/aggregation/index.md | Describes delayed pipeline entry. |
| docs/content/configuration/pdp/aggregation/commp.md | Documents delay configuration. |
| docs/content/configuration/index.md | Lists the dynamic delay setting. |
| docs/content/concepts/telemetry.md | Catalogs pipeline metrics. |
Review effort: Balanced
A commP claim now skips a row whose blob has a removal pending, so a release that lands just before the delay expires cannot be followed by a commP task before the sweep cancels the row; the sweep decides whether the row goes or, after a racing accept revived the blob, stays to be claimed. A cancelled row counts as hashed when the blob has a commp mapping, not only when the row's commp is stamped: the task records the mapping before it parks the piece and stamps the row, so a task that gave up between the two still ran the hash, as did an on-demand calculation. The config field is a pointer so that a file written back by `setup install` keeps an explicit "0s" and omits an absent key, instead of turning one into the other; absent resolves to the default when the config is applied. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Piri now holds each accepted blob for pdp.aggregation.commp.delay before a CommP task may claim it (fil-forge/piri#187). Three panels on the Regions dashboard show the queue per node: blobs held by the delay against blobs past it with no task yet; blobs released before aggregation by whether their CommP had been computed, which is what the delay saves; and, from the age histogram Piri records for those releases, the share released within 1, 5, 15, 30 and 60 minutes of acceptance, which is what a delay of each length catches and so whether the default should move. One appliance rule warns when the oldest due blob has gone unclaimed for ten minutes, which is the task engine down or saturated. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The claims skip a row whose blob has a removal pending, so counting it as due showed claims stalled while they were working; the backlog now leaves it out the same way. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Piri now holds each accepted blob for pdp.aggregation.commp.delay before a CommP task may claim it (fil-forge/piri#187). Three panels on the Regions dashboard show the queue per node: blobs held by the delay against blobs past it with no task yet; blobs released before aggregation by whether their CommP had been computed, which is what the delay saves; and, from the age histogram Piri records for those releases, the share released within 1, 5, 15, 30 and 60 minutes of acceptance, which is what a delay of each length catches and so whether the default should move. One appliance rule warns when the oldest due blob has gone unclaimed for ten minutes, which is the task engine down or saturated. Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:00f0fb7`](https://github.com/orgs/fil-forge/packages/container/piri/1421174034) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3cd4f27`](fil-forge/piri@c2dc6b0...3cd4f27): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:f87a697`](https://github.com/orgs/fil-forge/packages/container/ingot/1418019409) What fil-forge/ingot brings over staging's pin, [`6331454..319edf8`](fil-forge/ingot@6331454...319edf8): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8))
main added the commp delay key (#187), which init writes with its default. GeneratedConfigVersion 1 has not shipped yet, so re-record its golden files rather than bump the version, and set the key in the base-config fixture so the completeness test passes. 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
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:00f0fb7`](https://github.com/orgs/fil-forge/packages/container/piri/1421174034) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3cd4f27`](fil-forge/piri@c2dc6b0...3cd4f27): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:f87a697`](https://github.com/orgs/fil-forge/packages/container/ingot/1418019409) What fil-forge/ingot brings over staging's pin, [`6331454..319edf8`](fil-forge/ingot@6331454...319edf8): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8))
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:00f0fb7`](https://github.com/orgs/fil-forge/packages/container/piri/1421174034) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3cd4f27`](fil-forge/piri@c2dc6b0...3cd4f27): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:f87a697`](https://github.com/orgs/fil-forge/packages/container/ingot/1418019409) What fil-forge/ingot brings over staging's pin, [`6331454..319edf8`](fil-forge/ingot@6331454...319edf8): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8))
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:00f0fb7`](https://github.com/orgs/fil-forge/packages/container/piri/1421174034) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3cd4f27`](fil-forge/piri@c2dc6b0...3cd4f27): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:f87a697`](https://github.com/orgs/fil-forge/packages/container/ingot/1418019409) What fil-forge/ingot brings over staging's pin, [`6331454..319edf8`](fil-forge/ingot@6331454...319edf8): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8))
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:00f0fb7`](https://github.com/orgs/fil-forge/packages/container/piri/1421174034) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3cd4f27`](fil-forge/piri@c2dc6b0...3cd4f27): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:b5e200f`](https://github.com/orgs/fil-forge/packages/container/ingot/1421752609) What fil-forge/ingot brings over staging's pin, [`6331454..31f159a`](fil-forge/ingot@6331454...31f159a): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a))
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:00f0fb7`](https://github.com/orgs/fil-forge/packages/container/piri/1421174034) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3cd4f27`](fil-forge/piri@c2dc6b0...3cd4f27): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:b5e200f`](https://github.com/orgs/fil-forge/packages/container/ingot/1421752609) What fil-forge/ingot brings over staging's pin, [`6331454..31f159a`](fil-forge/ingot@6331454...31f159a): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a))
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:00f0fb7`](https://github.com/orgs/fil-forge/packages/container/piri/1421174034) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3cd4f27`](fil-forge/piri@c2dc6b0...3cd4f27): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:d38d6e1`](https://github.com/orgs/fil-forge/packages/container/ingot/1423201096) What fil-forge/ingot brings over staging's pin, [`6331454..30c90f3`](fil-forge/ingot@6331454...30c90f3): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3))
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:00f0fb7`](https://github.com/orgs/fil-forge/packages/container/piri/1421174034) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3cd4f27`](fil-forge/piri@c2dc6b0...3cd4f27): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:ae40c5e`](https://github.com/orgs/fil-forge/packages/container/ingot/1423645646) What fil-forge/ingot brings over staging's pin, [`6331454..b6d6b2e`](fil-forge/ingot@6331454...b6d6b2e): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e))
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:00f0fb7`](https://github.com/orgs/fil-forge/packages/container/piri/1421174034) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3cd4f27`](fil-forge/piri@c2dc6b0...3cd4f27): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:a178eb2`](https://github.com/orgs/fil-forge/packages/container/ingot/1427079306) What fil-forge/ingot brings over staging's pin, [`6331454..f2b2628`](fil-forge/ingot@6331454...f2b2628): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e)) - fil-forge/ingot#292 ([7c9440d](fil-forge/ingot@7c9440d)) - fil-forge/ingot#293 ([f2b2628](fil-forge/ingot@f2b2628))
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:00f0fb7`](https://github.com/orgs/fil-forge/packages/container/piri/1421174034) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3cd4f27`](fil-forge/piri@c2dc6b0...3cd4f27): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:b470bfc`](https://github.com/orgs/fil-forge/packages/container/ingot/1427178093) What fil-forge/ingot brings over staging's pin, [`6331454..31e01b0`](fil-forge/ingot@6331454...31e01b0): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e)) - fil-forge/ingot#292 ([7c9440d](fil-forge/ingot@7c9440d)) - fil-forge/ingot#293 ([f2b2628](fil-forge/ingot@f2b2628)) - fil-forge/ingot#297 ([31e01b0](fil-forge/ingot@31e01b0))
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:00f0fb7`](https://github.com/orgs/fil-forge/packages/container/piri/1421174034) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3cd4f27`](fil-forge/piri@c2dc6b0...3cd4f27): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:ea89ede`](https://github.com/orgs/fil-forge/packages/container/ingot/1427350334) What fil-forge/ingot brings over staging's pin, [`6331454..a75c81a`](fil-forge/ingot@6331454...a75c81a): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e)) - fil-forge/ingot#292 ([7c9440d](fil-forge/ingot@7c9440d)) - fil-forge/ingot#293 ([f2b2628](fil-forge/ingot@f2b2628)) - fil-forge/ingot#297 ([31e01b0](fil-forge/ingot@31e01b0)) - fil-forge/ingot#291 ([a75c81a](fil-forge/ingot@a75c81a))
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:00f0fb7`](https://github.com/orgs/fil-forge/packages/container/piri/1421174034) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3cd4f27`](fil-forge/piri@c2dc6b0...3cd4f27): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:2f1175e`](https://github.com/orgs/fil-forge/packages/container/ingot/1427537898) What fil-forge/ingot brings over staging's pin, [`6331454..49fec43`](fil-forge/ingot@6331454...49fec43): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e)) - fil-forge/ingot#292 ([7c9440d](fil-forge/ingot@7c9440d)) - fil-forge/ingot#293 ([f2b2628](fil-forge/ingot@f2b2628)) - fil-forge/ingot#297 ([31e01b0](fil-forge/ingot@31e01b0)) - fil-forge/ingot#291 ([a75c81a](fil-forge/ingot@a75c81a)) - fil-forge/ingot#300 ([49fec43](fil-forge/ingot@49fec43))
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:00f0fb7`](https://github.com/orgs/fil-forge/packages/container/piri/1421174034) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3cd4f27`](fil-forge/piri@c2dc6b0...3cd4f27): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:fce5261`](https://github.com/orgs/fil-forge/packages/container/ingot/1427940427) What fil-forge/ingot brings over staging's pin, [`6331454..9881bef`](fil-forge/ingot@6331454...9881bef): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e)) - fil-forge/ingot#292 ([7c9440d](fil-forge/ingot@7c9440d)) - fil-forge/ingot#293 ([f2b2628](fil-forge/ingot@f2b2628)) - fil-forge/ingot#297 ([31e01b0](fil-forge/ingot@31e01b0)) - fil-forge/ingot#291 ([a75c81a](fil-forge/ingot@a75c81a)) - fil-forge/ingot#300 ([49fec43](fil-forge/ingot@49fec43)) - fil-forge/ingot#299 ([9881bef](fil-forge/ingot@9881bef))
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:00f0fb7`](https://github.com/orgs/fil-forge/packages/container/piri/1421174034) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3cd4f27`](fil-forge/piri@c2dc6b0...3cd4f27): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:c4f38fd`](https://github.com/orgs/fil-forge/packages/container/ingot/1428268604) What fil-forge/ingot brings over staging's pin, [`6331454..bb88ee0`](fil-forge/ingot@6331454...bb88ee0): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e)) - fil-forge/ingot#292 ([7c9440d](fil-forge/ingot@7c9440d)) - fil-forge/ingot#293 ([f2b2628](fil-forge/ingot@f2b2628)) - fil-forge/ingot#297 ([31e01b0](fil-forge/ingot@31e01b0)) - fil-forge/ingot#291 ([a75c81a](fil-forge/ingot@a75c81a)) - fil-forge/ingot#300 ([49fec43](fil-forge/ingot@49fec43)) - fil-forge/ingot#299 ([9881bef](fil-forge/ingot@9881bef)) - fil-forge/ingot#279 ([bb88ee0](fil-forge/ingot@bb88ee0))
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:00f0fb7`](https://github.com/orgs/fil-forge/packages/container/piri/1421174034) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3cd4f27`](fil-forge/piri@c2dc6b0...3cd4f27): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:c4f38fd`](https://github.com/orgs/fil-forge/packages/container/ingot/1428268604) What fil-forge/ingot brings over staging's pin, [`6331454..bb88ee0`](fil-forge/ingot@6331454...bb88ee0): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e)) - fil-forge/ingot#292 ([7c9440d](fil-forge/ingot@7c9440d)) - fil-forge/ingot#293 ([f2b2628](fil-forge/ingot@f2b2628)) - fil-forge/ingot#297 ([31e01b0](fil-forge/ingot@31e01b0)) - fil-forge/ingot#291 ([a75c81a](fil-forge/ingot@a75c81a)) - fil-forge/ingot#300 ([49fec43](fil-forge/ingot@49fec43)) - fil-forge/ingot#299 ([9881bef](fil-forge/ingot@9881bef)) - fil-forge/ingot#279 ([bb88ee0](fil-forge/ingot@bb88ee0))
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:00f0fb7`](https://github.com/orgs/fil-forge/packages/container/piri/1421174034) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3cd4f27`](fil-forge/piri@c2dc6b0...3cd4f27): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:eea47a7`](https://github.com/orgs/fil-forge/packages/container/ingot/1428859054) What fil-forge/ingot brings over staging's pin, [`6331454..5596df7`](fil-forge/ingot@6331454...5596df7): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e)) - fil-forge/ingot#292 ([7c9440d](fil-forge/ingot@7c9440d)) - fil-forge/ingot#293 ([f2b2628](fil-forge/ingot@f2b2628)) - fil-forge/ingot#297 ([31e01b0](fil-forge/ingot@31e01b0)) - fil-forge/ingot#291 ([a75c81a](fil-forge/ingot@a75c81a)) - fil-forge/ingot#300 ([49fec43](fil-forge/ingot@49fec43)) - fil-forge/ingot#299 ([9881bef](fil-forge/ingot@9881bef)) - fil-forge/ingot#279 ([bb88ee0](fil-forge/ingot@bb88ee0)) - fil-forge/ingot#278 ([0d16d90](fil-forge/ingot@0d16d90)) - fil-forge/ingot#280 ([5596df7](fil-forge/ingot@5596df7))
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:00f0fb7`](https://github.com/orgs/fil-forge/packages/container/piri/1421174034) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3cd4f27`](fil-forge/piri@c2dc6b0...3cd4f27): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:7a6cd2d`](https://github.com/orgs/fil-forge/packages/container/ingot/1429078201) What fil-forge/ingot brings over staging's pin, [`6331454..7be5b2f`](fil-forge/ingot@6331454...7be5b2f): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e)) - fil-forge/ingot#292 ([7c9440d](fil-forge/ingot@7c9440d)) - fil-forge/ingot#293 ([f2b2628](fil-forge/ingot@f2b2628)) - fil-forge/ingot#297 ([31e01b0](fil-forge/ingot@31e01b0)) - fil-forge/ingot#291 ([a75c81a](fil-forge/ingot@a75c81a)) - fil-forge/ingot#300 ([49fec43](fil-forge/ingot@49fec43)) - fil-forge/ingot#299 ([9881bef](fil-forge/ingot@9881bef)) - fil-forge/ingot#279 ([bb88ee0](fil-forge/ingot@bb88ee0)) - fil-forge/ingot#278 ([0d16d90](fil-forge/ingot@0d16d90)) - fil-forge/ingot#280 ([5596df7](fil-forge/ingot@5596df7)) - fil-forge/ingot#273 ([7be5b2f](fil-forge/ingot@7be5b2f))
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:00f0fb7`](https://github.com/orgs/fil-forge/packages/container/piri/1421174034) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3cd4f27`](fil-forge/piri@c2dc6b0...3cd4f27): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:7a6cd2d`](https://github.com/orgs/fil-forge/packages/container/ingot/1429078201) What fil-forge/ingot brings over staging's pin, [`6331454..7be5b2f`](fil-forge/ingot@6331454...7be5b2f): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e)) - fil-forge/ingot#292 ([7c9440d](fil-forge/ingot@7c9440d)) - fil-forge/ingot#293 ([f2b2628](fil-forge/ingot@f2b2628)) - fil-forge/ingot#297 ([31e01b0](fil-forge/ingot@31e01b0)) - fil-forge/ingot#291 ([a75c81a](fil-forge/ingot@a75c81a)) - fil-forge/ingot#300 ([49fec43](fil-forge/ingot@49fec43)) - fil-forge/ingot#299 ([9881bef](fil-forge/ingot@9881bef)) - fil-forge/ingot#279 ([bb88ee0](fil-forge/ingot@bb88ee0)) - fil-forge/ingot#278 ([0d16d90](fil-forge/ingot@0d16d90)) - fil-forge/ingot#280 ([5596df7](fil-forge/ingot@5596df7)) - fil-forge/ingot#273 ([7be5b2f](fil-forge/ingot@7be5b2f))
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:f493390`](https://github.com/orgs/fil-forge/packages/container/piri/1429852644) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3ef715b`](fil-forge/piri@c2dc6b0...3ef715b): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) - fil-forge/piri#192 ([9b3191c](fil-forge/piri@9b3191c)) - fil-forge/piri#121 ([0fbd8da](fil-forge/piri@0fbd8da)) - fil-forge/piri#194 ([3ef715b](fil-forge/piri@3ef715b)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:7a6cd2d`](https://github.com/orgs/fil-forge/packages/container/ingot/1429078201) What fil-forge/ingot brings over staging's pin, [`6331454..7be5b2f`](fil-forge/ingot@6331454...7be5b2f): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e)) - fil-forge/ingot#292 ([7c9440d](fil-forge/ingot@7c9440d)) - fil-forge/ingot#293 ([f2b2628](fil-forge/ingot@f2b2628)) - fil-forge/ingot#297 ([31e01b0](fil-forge/ingot@31e01b0)) - fil-forge/ingot#291 ([a75c81a](fil-forge/ingot@a75c81a)) - fil-forge/ingot#300 ([49fec43](fil-forge/ingot@49fec43)) - fil-forge/ingot#299 ([9881bef](fil-forge/ingot@9881bef)) - fil-forge/ingot#279 ([bb88ee0](fil-forge/ingot@bb88ee0)) - fil-forge/ingot#278 ([0d16d90](fil-forge/ingot@0d16d90)) - fil-forge/ingot#280 ([5596df7](fil-forge/ingot@5596df7)) - fil-forge/ingot#273 ([7be5b2f](fil-forge/ingot@7be5b2f))
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:f493390`](https://github.com/orgs/fil-forge/packages/container/piri/1429852644) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3ef715b`](fil-forge/piri@c2dc6b0...3ef715b): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) - fil-forge/piri#192 ([9b3191c](fil-forge/piri@9b3191c)) - fil-forge/piri#121 ([0fbd8da](fil-forge/piri@0fbd8da)) - fil-forge/piri#194 ([3ef715b](fil-forge/piri@3ef715b)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:5ca3bc4`](https://github.com/orgs/fil-forge/packages/container/ingot/1430706317) What fil-forge/ingot brings over staging's pin, [`6331454..c1f3eaa`](fil-forge/ingot@6331454...c1f3eaa): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e)) - fil-forge/ingot#292 ([7c9440d](fil-forge/ingot@7c9440d)) - fil-forge/ingot#293 ([f2b2628](fil-forge/ingot@f2b2628)) - fil-forge/ingot#297 ([31e01b0](fil-forge/ingot@31e01b0)) - fil-forge/ingot#291 ([a75c81a](fil-forge/ingot@a75c81a)) - fil-forge/ingot#300 ([49fec43](fil-forge/ingot@49fec43)) - fil-forge/ingot#299 ([9881bef](fil-forge/ingot@9881bef)) - fil-forge/ingot#279 ([bb88ee0](fil-forge/ingot@bb88ee0)) - fil-forge/ingot#278 ([0d16d90](fil-forge/ingot@0d16d90)) - fil-forge/ingot#280 ([5596df7](fil-forge/ingot@5596df7)) - fil-forge/ingot#273 ([7be5b2f](fil-forge/ingot@7be5b2f)) - fil-forge/ingot#276 ([957e190](fil-forge/ingot@957e190)) - fil-forge/ingot#282 ([ebbc066](fil-forge/ingot@ebbc066)) - fil-forge/ingot#275 ([425d2cb](fil-forge/ingot@425d2cb)) - fil-forge/ingot#281 ([b36651a](fil-forge/ingot@b36651a)) - fil-forge/ingot#301 ([c1f3eaa](fil-forge/ingot@c1f3eaa))
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:f493390`](https://github.com/orgs/fil-forge/packages/container/piri/1429852644) What fil-forge/piri brings over staging's pin, [`c2dc6b0..3ef715b`](fil-forge/piri@c2dc6b0...3ef715b): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) - fil-forge/piri#192 ([9b3191c](fil-forge/piri@9b3191c)) - fil-forge/piri#121 ([0fbd8da](fil-forge/piri@0fbd8da)) - fil-forge/piri#194 ([3ef715b](fil-forge/piri@3ef715b)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:8a16655`](https://github.com/orgs/fil-forge/packages/container/ingot/1431251960) What fil-forge/ingot brings over staging's pin, [`6331454..4585b83`](fil-forge/ingot@6331454...4585b83): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e)) - fil-forge/ingot#292 ([7c9440d](fil-forge/ingot@7c9440d)) - fil-forge/ingot#293 ([f2b2628](fil-forge/ingot@f2b2628)) - fil-forge/ingot#297 ([31e01b0](fil-forge/ingot@31e01b0)) - fil-forge/ingot#291 ([a75c81a](fil-forge/ingot@a75c81a)) - fil-forge/ingot#300 ([49fec43](fil-forge/ingot@49fec43)) - fil-forge/ingot#299 ([9881bef](fil-forge/ingot@9881bef)) - fil-forge/ingot#279 ([bb88ee0](fil-forge/ingot@bb88ee0)) - fil-forge/ingot#278 ([0d16d90](fil-forge/ingot@0d16d90)) - fil-forge/ingot#280 ([5596df7](fil-forge/ingot@5596df7)) - fil-forge/ingot#273 ([7be5b2f](fil-forge/ingot@7be5b2f)) - fil-forge/ingot#276 ([957e190](fil-forge/ingot@957e190)) - fil-forge/ingot#282 ([ebbc066](fil-forge/ingot@ebbc066)) - fil-forge/ingot#275 ([425d2cb](fil-forge/ingot@425d2cb)) - fil-forge/ingot#281 ([b36651a](fil-forge/ingot@b36651a)) - fil-forge/ingot#301 ([c1f3eaa](fil-forge/ingot@c1f3eaa)) - fil-forge/ingot#302 ([4585b83](fil-forge/ingot@4585b83))
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:07f74c5`](https://github.com/orgs/fil-forge/packages/container/piri/1431242148) What fil-forge/piri brings over staging's pin, [`c2dc6b0..e8d7fd9`](fil-forge/piri@c2dc6b0...e8d7fd9): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) - fil-forge/piri#192 ([9b3191c](fil-forge/piri@9b3191c)) - fil-forge/piri#121 ([0fbd8da](fil-forge/piri@0fbd8da)) - fil-forge/piri#194 ([3ef715b](fil-forge/piri@3ef715b)) - fil-forge/piri#196 ([1f79668](fil-forge/piri@1f79668)) - fil-forge/piri#197 ([476f1a2](fil-forge/piri@476f1a2)) - fil-forge/piri#198 ([1df9059](fil-forge/piri@1df9059)) - fil-forge/piri#193 ([e8d7fd9](fil-forge/piri@e8d7fd9)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:8a16655`](https://github.com/orgs/fil-forge/packages/container/ingot/1431251960) What fil-forge/ingot brings over staging's pin, [`6331454..4585b83`](fil-forge/ingot@6331454...4585b83): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e)) - fil-forge/ingot#292 ([7c9440d](fil-forge/ingot@7c9440d)) - fil-forge/ingot#293 ([f2b2628](fil-forge/ingot@f2b2628)) - fil-forge/ingot#297 ([31e01b0](fil-forge/ingot@31e01b0)) - fil-forge/ingot#291 ([a75c81a](fil-forge/ingot@a75c81a)) - fil-forge/ingot#300 ([49fec43](fil-forge/ingot@49fec43)) - fil-forge/ingot#299 ([9881bef](fil-forge/ingot@9881bef)) - fil-forge/ingot#279 ([bb88ee0](fil-forge/ingot@bb88ee0)) - fil-forge/ingot#278 ([0d16d90](fil-forge/ingot@0d16d90)) - fil-forge/ingot#280 ([5596df7](fil-forge/ingot@5596df7)) - fil-forge/ingot#273 ([7be5b2f](fil-forge/ingot@7be5b2f)) - fil-forge/ingot#276 ([957e190](fil-forge/ingot@957e190)) - fil-forge/ingot#282 ([ebbc066](fil-forge/ingot@ebbc066)) - fil-forge/ingot#275 ([425d2cb](fil-forge/ingot@425d2cb)) - fil-forge/ingot#281 ([b36651a](fil-forge/ingot@b36651a)) - fil-forge/ingot#301 ([c1f3eaa](fil-forge/ingot@c1f3eaa)) - fil-forge/ingot#302 ([4585b83](fil-forge/ingot@4585b83))
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:07f74c5`](https://github.com/orgs/fil-forge/packages/container/piri/1431242148) What fil-forge/piri brings over staging's pin, [`c2dc6b0..e8d7fd9`](fil-forge/piri@c2dc6b0...e8d7fd9): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) - fil-forge/piri#192 ([9b3191c](fil-forge/piri@9b3191c)) - fil-forge/piri#121 ([0fbd8da](fil-forge/piri@0fbd8da)) - fil-forge/piri#194 ([3ef715b](fil-forge/piri@3ef715b)) - fil-forge/piri#196 ([1f79668](fil-forge/piri@1f79668)) - fil-forge/piri#197 ([476f1a2](fil-forge/piri@476f1a2)) - fil-forge/piri#198 ([1df9059](fil-forge/piri@1df9059)) - fil-forge/piri#193 ([e8d7fd9](fil-forge/piri@e8d7fd9)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:8a16655`](https://github.com/orgs/fil-forge/packages/container/ingot/1431251960) What fil-forge/ingot brings over staging's pin, [`6331454..4585b83`](fil-forge/ingot@6331454...4585b83): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e)) - fil-forge/ingot#292 ([7c9440d](fil-forge/ingot@7c9440d)) - fil-forge/ingot#293 ([f2b2628](fil-forge/ingot@f2b2628)) - fil-forge/ingot#297 ([31e01b0](fil-forge/ingot@31e01b0)) - fil-forge/ingot#291 ([a75c81a](fil-forge/ingot@a75c81a)) - fil-forge/ingot#300 ([49fec43](fil-forge/ingot@49fec43)) - fil-forge/ingot#299 ([9881bef](fil-forge/ingot@9881bef)) - fil-forge/ingot#279 ([bb88ee0](fil-forge/ingot@bb88ee0)) - fil-forge/ingot#278 ([0d16d90](fil-forge/ingot@0d16d90)) - fil-forge/ingot#280 ([5596df7](fil-forge/ingot@5596df7)) - fil-forge/ingot#273 ([7be5b2f](fil-forge/ingot@7be5b2f)) - fil-forge/ingot#276 ([957e190](fil-forge/ingot@957e190)) - fil-forge/ingot#282 ([ebbc066](fil-forge/ingot@ebbc066)) - fil-forge/ingot#275 ([425d2cb](fil-forge/ingot@425d2cb)) - fil-forge/ingot#281 ([b36651a](fil-forge/ingot@b36651a)) - fil-forge/ingot#301 ([c1f3eaa](fil-forge/ingot@c1f3eaa)) - fil-forge/ingot#302 ([4585b83](fil-forge/ingot@4585b83))
Sets every staging pin in `nodes/staging/eu-central-3/apps/versions.env` to what `nodes/dev/apps/versions.env` pins on `main`. Merging this is the promotion: the node picks it up on its next reconcile pass, waits for a safe proving window and restarts each service that changed. This pull request is rebuilt on every push to `main` and closed once staging matches dev, so edits to it are overwritten unless they are pushed to `bot/promote-staging` by hand. ## piri [`sha256:1e91500`](https://github.com/orgs/fil-forge/packages/container/piri/1392106094) → [`sha256:07f74c5`](https://github.com/orgs/fil-forge/packages/container/piri/1431242148) What fil-forge/piri brings over staging's pin, [`c2dc6b0..e8d7fd9`](fil-forge/piri@c2dc6b0...e8d7fd9): - fil-forge/piri#108 ([7912ce0](fil-forge/piri@7912ce0)) - fil-forge/piri#177 ([37cb316](fil-forge/piri@37cb316)) - fil-forge/piri#175 ([0a2dc09](fil-forge/piri@0a2dc09)) - fil-forge/piri#180 ([2703e3e](fil-forge/piri@2703e3e)) - fil-forge/piri#182 ([8e3ce5d](fil-forge/piri@8e3ce5d)) - fil-forge/piri#178 ([fa5bc09](fil-forge/piri@fa5bc09)) - fil-forge/piri#179 ([c9565b3](fil-forge/piri@c9565b3)) - fil-forge/piri#183 ([1fef19d](fil-forge/piri@1fef19d)) - fil-forge/piri#184 ([dcf3f70](fil-forge/piri@dcf3f70)) - fil-forge/piri#174 ([3a9a3fd](fil-forge/piri@3a9a3fd)) - fil-forge/piri#187 ([3cd4f27](fil-forge/piri@3cd4f27)) - fil-forge/piri#192 ([9b3191c](fil-forge/piri@9b3191c)) - fil-forge/piri#121 ([0fbd8da](fil-forge/piri@0fbd8da)) - fil-forge/piri#194 ([3ef715b](fil-forge/piri@3ef715b)) - fil-forge/piri#196 ([1f79668](fil-forge/piri@1f79668)) - fil-forge/piri#197 ([476f1a2](fil-forge/piri@476f1a2)) - fil-forge/piri#198 ([1df9059](fil-forge/piri@1df9059)) - fil-forge/piri#193 ([e8d7fd9](fil-forge/piri@e8d7fd9)) ## ingot [`sha256:f629535`](https://github.com/orgs/fil-forge/packages/container/ingot/1386342616) → [`sha256:8a16655`](https://github.com/orgs/fil-forge/packages/container/ingot/1431251960) What fil-forge/ingot brings over staging's pin, [`6331454..4585b83`](fil-forge/ingot@6331454...4585b83): - fil-forge/ingot#265 ([83dc31d](fil-forge/ingot@83dc31d)) - fil-forge/ingot#267 ([9b7051f](fil-forge/ingot@9b7051f)) - fil-forge/ingot#266 ([6aa7eee](fil-forge/ingot@6aa7eee)) - fil-forge/ingot#283 ([d69bbf3](fil-forge/ingot@d69bbf3)) - fil-forge/ingot#284 ([324e294](fil-forge/ingot@324e294)) - fil-forge/ingot#285 ([4fddf05](fil-forge/ingot@4fddf05)) - fil-forge/ingot#286 ([f879a36](fil-forge/ingot@f879a36)) - fil-forge/ingot#287 ([fff9351](fil-forge/ingot@fff9351)) - fil-forge/ingot#289 ([03d12c3](fil-forge/ingot@03d12c3)) - fil-forge/ingot#269 ([319edf8](fil-forge/ingot@319edf8)) - fil-forge/ingot#295 ([31f159a](fil-forge/ingot@31f159a)) - fil-forge/ingot#296 ([30c90f3](fil-forge/ingot@30c90f3)) - fil-forge/ingot#298 ([b6d6b2e](fil-forge/ingot@b6d6b2e)) - fil-forge/ingot#292 ([7c9440d](fil-forge/ingot@7c9440d)) - fil-forge/ingot#293 ([f2b2628](fil-forge/ingot@f2b2628)) - fil-forge/ingot#297 ([31e01b0](fil-forge/ingot@31e01b0)) - fil-forge/ingot#291 ([a75c81a](fil-forge/ingot@a75c81a)) - fil-forge/ingot#300 ([49fec43](fil-forge/ingot@49fec43)) - fil-forge/ingot#299 ([9881bef](fil-forge/ingot@9881bef)) - fil-forge/ingot#279 ([bb88ee0](fil-forge/ingot@bb88ee0)) - fil-forge/ingot#278 ([0d16d90](fil-forge/ingot@0d16d90)) - fil-forge/ingot#280 ([5596df7](fil-forge/ingot@5596df7)) - fil-forge/ingot#273 ([7be5b2f](fil-forge/ingot@7be5b2f)) - fil-forge/ingot#276 ([957e190](fil-forge/ingot@957e190)) - fil-forge/ingot#282 ([ebbc066](fil-forge/ingot@ebbc066)) - fil-forge/ingot#275 ([425d2cb](fil-forge/ingot@425d2cb)) - fil-forge/ingot#281 ([b36651a](fil-forge/ingot@b36651a)) - fil-forge/ingot#301 ([c1f3eaa](fil-forge/ingot@c1f3eaa)) - fil-forge/ingot#302 ([4585b83](fil-forge/ingot@4585b83)) Co-authored-by: fil-forge-bot[bot] <318653112+fil-forge-bot[bot]@users.noreply.github.com>


An accepted blob now waits a configurable time, one hour by default, before Piri computes its CommP and adds it to the PDP pipeline. A blob deleted inside that window costs no CommP and no on-chain root. The blob is retrievable throughout and nothing on the wire changes.
Why one hour
Published traces of file deletion put most deletions of fresh data in the first minutes and flatten within about an hour; the 90th percentile of age at deletion in the Yahoo HDFS traces is 22 to 75 minutes. An hour saves nearly everything a delay can. Backup retention deletes, weeks out, are beyond any delay. The cost is an hour added to time to first proof.
How
pdp.aggregation.commp.delay, dynamic) applies to blobs already waiting;0releases them.0. The task runner picks the blob up on its next trigger once the delay has passed./blob/releaseinvocation) of a blob inside the delay: the existing removal sweep drops it from the pipeline and releases its bytes.Telemetry
Gauges for blobs waiting out the delay and for blobs past it that no task has picked up yet, plus a counter and an age histogram for blobs removed before aggregation, split by whether their CommP had run. The histogram is the node's own age-at-deletion distribution, which is what should tune the default. Docs and an example alert are included; the Grafana panels and alert rule are fil-forge/infra-central#291.
Not in scope:
/pdp/infostill computes CommP on demand, which would bypass the delay for a caller polling it. Nothing calls it today; the handler carries a note.Tests pass, with the Postgres-backed ones run locally with the macOS skip lifted. Footnote: the duration validator used for config values now rejects negative durations.
🤖 Generated with Claude Code