Skip to content

chore: sync fork to upstream paradigmxyz/centaur main (f97c8219) - #12

Merged
lyoungblood merged 137 commits into
mainfrom
sync/upstream-2026-09-21
Sep 21, 2026
Merged

lyoungblood merged 137 commits into
mainfrom
sync/upstream-2026-09-21

Conversation

@lyoungblood

Copy link
Copy Markdown

Lockstep fast-forward for the chart 0.1.125 → 0.1.144 deployment bump (companion PRs: moonwell-fi/centaur-moonwell#71 sandbox image, and a centaur-infra PR pinning chart/base-ref/images to this sync). 136 upstream commits (af72296f97c821, 2026-08-21 → 2026-09-21), merged clean.

Notables for the deployment:

Fork delta preserved and verified: git diff f97c8219 --stat after the merge shows exactly one file, services/sandbox/Dockerfile (the MOO-534 openssh-client line). Python workflow SDK surface used by the overlay is unchanged (additive slack_buttons/update_slack only).

Please merge with a merge commit (not squash) so the sync sha 01160f6d stays reachable.

🤖 Generated with Claude Code

svc-paradigm and others added 30 commits August 21, 2026 23:00
Co-authored-by: Perry Dime <260989497+svc-paradigm@users.noreply.github.com>
* feat(api-rs): persist MCP console user metadata

* refactor(api-rs): avoid redundant MCP metadata writes
…xyz#1450)

* fix(mcp): filter tool catalog by the sandbox tool allowlist

The MCP endpoint advertised every discovered tool, but sandboxes only
install tools admitted by TOOL_ALLOWLIST/TOOL_BLOCKLIST, so tools/list
included entries whose calls could only fail in the tool host -- and
clients plan around those phantom tools. Filter the MCP catalog with
the same lists, parsed from SESSION_SANDBOX_EXTRA_ENV (the exact values
sandbox pods boot with), matching the sandbox shim gate: package
directory name or pyproject project name, unset meaning unrestricted.
Covers both tools/list and the tools/call lookup.

* fix(mcp): align tool catalog with sandbox policy

---------

Co-authored-by: Matthew Slipper <me@matthewslipper.com>
* fix(console): serialize Slack DM credential sync

* fix(console): checkpoint Slack DM conversations

* fix(console): skip rejected Slack DM conversations
* fix(console): retry Slack DM sync after rate limits

* fix(console): sleep for short Slack rate limits

* refactor(console): retry individual Slack requests

* fix(console): cap inline Slack rate-limit retries
…e in the ruby-dependencies group (paradigmxyz#1471)

chore(deps): bump solid_queue

Bumps the ruby-dependencies group in /services/console with 1 update: [solid_queue](https://github.com/rails/solid_queue).


Updates `solid_queue` from 1.6.0 to 1.7.0
- [Release notes](https://github.com/rails/solid_queue/releases)
- [Commits](rails/solid_queue@v1.6.0...v1.7.0)

---
updated-dependencies:
- dependency-name: solid_queue
  dependency-version: 1.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: ruby-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…z#1472)

Bumps the github-actions group with 3 updates: [depot/setup-action](https://github.com/depot/setup-action), [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) and [mikefarah/yq](https://github.com/mikefarah/yq).


Updates `depot/setup-action` from 1.7.1 to 1.7.2
- [Release notes](https://github.com/depot/setup-action/releases)
- [Commits](depot/setup-action@15c09a5...91bc849)

Updates `docker/setup-buildx-action` from 4.2.0 to 4.3.0
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](docker/setup-buildx-action@bb05f3f...37fe631)

Updates `mikefarah/yq` from 4.53.3 to 4.53.6
- [Release notes](https://github.com/mikefarah/yq/releases)
- [Changelog](https://github.com/mikefarah/yq/blob/master/release_notes.txt)
- [Commits](mikefarah/yq@1b9b4ac...c14f446)

---
updated-dependencies:
- dependency-name: depot/setup-action
  dependency-version: 1.7.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: docker/setup-buildx-action
  dependency-version: 4.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: mikefarah/yq
  dependency-version: 4.53.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…P server (paradigmxyz#1451)

* feat(console): allow github_token credentials on the hosted GitHub MCP server

api.githubcopilot.com authenticates with the same token as the REST and Git
hosts, so seed it into new github_token secrets and accept it in validation.
Validation is now host-based instead of an exact rule-list match, so secrets
seeded before a host was added stay valid on later saves.

* test(console): update github_token expectations for the copilot MCP host

The profile now seeds three rules, so counts and host lists gain
api.githubcopilot.com. The conflict-rejection test targets a host outside
ALLOWED_HOSTS, since a bare github.com rule is valid under host-based
validation.
feat(slackbotv2): log webhook retry headers

Co-authored-by: Perry Dime <260989497+svc-paradigm@users.noreply.github.com>
* feat: replace NewsAPI.org tool with NewsAPI.ai

* fix: preserve existing NewsAPI.org tool

* refactor: rename NewsAPI.ai tool to Event Registry
* fix(console): allow Drive readonly credentials to sync

* feat(api-rs): support incremental Google Docs sync

* refactor(console): paginate Google Docs sync

* refactor(console): discard legacy Google Docs sync jobs

* fix(console): recover Google Docs sync cursors

* refactor(console): consolidate Google Docs sync jobs

* refactor(console): simplify Google Docs sync flow

* refactor(console): simplify Google Docs checkpoints

* refactor(console): chain initial Google Docs pages

* fix(console): keep Google Docs crawls progressing

* refactor(console): simplify initial Google Docs crawl

* fix(console): isolate Google Docs sync queue
* feat(console): add Google Docs sync kill switch

* chore(chart): bump version to 0.1.126

* refactor(console): guard Google Docs sync jobs at base

* refactor(console): guard Google Docs job entry points

* fix(console): default Google Docs sync to disabled
* fix: retry Google Docs network failures

* test: cover transient DNS failures

---------

Co-authored-by: Perry Dime <260989497+svc-paradigm@users.noreply.github.com>
* fix: truncate oversized Google Docs names

* refactor: enforce Google Docs name limit at API boundary

---------

Co-authored-by: Perry Dime <260989497+svc-paradigm@users.noreply.github.com>
Co-authored-by: Matthew Slipper <me@matthewslipper.com>
Co-authored-by: Perry Dime <260989497+svc-paradigm@users.noreply.github.com>
…init resources (paradigmxyz#1502)

* feat(k8s): sandbox priority class, pause-proxy teardown, quota-ready init resources

- New SESSION_SANDBOX_PRIORITY_CLASS_NAME arg: sets priorityClassName on
  agent sandbox pods and their iron-proxy pods so a cluster operator can
  make sandboxes first-evicted/preempted and scope a ResourceQuota to them.
- pause() now deletes the sandbox's iron-proxy pod/configmap alongside
  scaling the sandbox to zero; resume() already recreates them from the
  principal recorded at create. Suspended sandboxes previously kept their
  proxy pod for the full reaper lifetime, exhausting kubelet pod slots
  (~880 of 1500 slots during the 2026-08-26 prd-centaur-na outage).
- tools-bootstrap init container now carries explicit requests/limits so
  quota-scoped namespaces admit sandbox pods.
- Chart: sandbox.priorityClassName + apiRs.priorityClassName values.

Amp-Thread-ID: https://ampcode.com/threads/T-01a03e96-a489-73b8-a5ef-888930d4b95d
Co-authored-by: Amp <amp@ampcode.com>

* chore(chart): bump version to 0.1.127

Amp-Thread-ID: https://ampcode.com/threads/T-01a03e96-a489-73b8-a5ef-888930d4b95d
Co-authored-by: Amp <amp@ampcode.com>

* refactor: group proxy pod scheduling knobs into ProxyPodScheduling

Fixes clippy too_many_arguments after adding priority_class_name.

Amp-Thread-ID: https://ampcode.com/threads/T-01a03e96-a489-73b8-a5ef-888930d4b95d
Co-authored-by: Amp <amp@ampcode.com>

---------

Co-authored-by: Amp <amp@ampcode.com>
…igmxyz#1500)

* feat(chart,api-rs): allow a serviceAccountName on sandbox pods

Add sandbox.serviceAccountName, rendered as
SESSION_SANDBOX_SERVICE_ACCOUNT_NAME and applied to every sandbox pod
(session, warm, and workflow-host), so deployments can attach cloud
workload identity (e.g. EKS IRSA) instead of long-lived credentials.
Identity webhooks inject their own projected credentials keyed off the
pod's serviceAccountName, so automountServiceAccountToken stays false.
iron-proxy pods are deliberately unaffected. Unset preserves current
behavior (namespace default account, nothing rendered).

* chore(chart): bump version to 0.1.127

* chore: rerun CI

---------

Co-authored-by: Matthew Slipper <me@matthewslipper.com>
…digmxyz#1494)

* feat: bind the console user's principal on console thread turns

Console sessions register an anonymous per-thread principal, so a user's
connected OAuth credentials (e.g. GitHub) never reach console-driven turns:
reconciliation matches identity-scoped credentials to principals, and the
thread principal carries no user identity. The proxy falls back to shared
role-granted tokens and PRs open as the bot.

The console now provisions the authenticated user's console-user principal
on each execute and passes its foreign ID as requester_principal_foreign_id
in the execute metadata. api-rs resolves it fetch-only for console: thread
keys (a namespace only the console service may write) and binds it as the
turn's requester principal, so the proxy serves the RFC 0005 union: the
thread principal's grants plus the requester's always-available OAuth direct
grants. Shared threads stay safe — a reply binds the replier's principal,
never the creator's. The provisioner no longer rewrites an unchanged
principal on repeat calls.

The RFC 0005 availability gate is unchanged: a credential joins console
turns only when an admin marked its OAuth app always-available.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* refactor: tighten console requester comments

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix: support console requesters on shared threads

---------

Co-authored-by: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Matthew Slipper <me@matthewslipper.com>
* fix: inject selected persona prompts into sandboxes

* refactor: mount persona prompts as sandbox files

* refactor: generalize sandbox file materialization

* refactor: remove obsolete persona prompt env names

* refactor: share sandbox agent home path
* feat(slack): acknowledge steering messages

* fix(slack): clear steering reaction before retry execution

* chore(chart): bump version to 0.1.129

* fix(slack): keep steering reactions until response

* docs(slack): note steering reaction cleanup race

* refactor(slack): simplify steering reaction tracking
Iron-proxy pods were created with restartPolicy=Never, so any container
crash left the pod permanently Failed while its sandbox kept running with
zero egress: Codex gets connection refused to api.openai.com, in-sandbox
tools fail, and the turn dies. Nothing repairs the proxy until the next
session execute calls assign_proxy_principal and recreates it, so every
in-flight turn on that sandbox is lost.

This went from latent to load-bearing on prd-centaur-na when
tempoxyz/prd-centaur-infra#669 added a 512Mi memory limit: iron-proxy
buffers bodies while proxying, large transfers burst past the limit in
seconds, and the resulting OOM kills produced 40+ mid-turn 'stream
disconnected before completion' failures since 2026-08-27.

OnFailure makes the kubelet restart the container in place: same pod IP,
the per-sandbox Service keeps routing, and the proxy re-syncs its
principal config from iron-control on startup, so an OOM becomes a
seconds-long blip instead of a dead session. pod_running() requires the
Ready condition, so ensure/assign paths still treat a crash-looping proxy
as unusable, and wait_until_proxy_running now bounds a proxy that never
comes up by ready_timeout instead of failing on first crash.

Amp-Thread-ID: https://ampcode.com/threads/T-01a048d9-a0bb-72f0-b6cd-4769da726fdc

Co-authored-by: Amp <amp@ampcode.com>
…z#1496)

* feat: bind the console user's principal on console thread turns

Console sessions register an anonymous per-thread principal, so a user's
connected OAuth credentials (e.g. GitHub) never reach console-driven turns:
reconciliation matches identity-scoped credentials to principals, and the
thread principal carries no user identity. The proxy falls back to shared
role-granted tokens and PRs open as the bot.

The console now provisions the authenticated user's console-user principal
on each execute and passes its foreign ID as requester_principal_foreign_id
in the execute metadata. api-rs resolves it fetch-only for console: thread
keys (a namespace only the console service may write) and binds it as the
turn's requester principal, so the proxy serves the RFC 0005 union: the
thread principal's grants plus the requester's always-available OAuth direct
grants. Shared threads stay safe — a reply binds the replier's principal,
never the creator's. The provisioner no longer rewrites an unchanged
principal on repeat calls.

The RFC 0005 availability gate is unchanged: a credential joins console
turns only when an admin marked its OAuth app always-available.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* feat: bind the comment author's principal on GitHub turns

GitHub-triggered turns ran with only the anonymous per-thread principal, so
a commenter's connected GitHub OAuth credential never applied: githubbot
already forwards the webhook-verified sender (`user_id`, the numeric GitHub
id, and `user_name`) in every execute's metadata, but api-rs resolved a
requester only for Slack.

api-rs now derives and upserts a per-user `github-user-<id>` principal for
`github:` thread keys, labeled `github_subject: <id>`, and binds it as the
turn's requester principal. Reconciliation gains GitHub as a subject-label
provider (`Principal::KINDS` learns `github_user`), so the credential owner
is matched by GitHub user id — the only workable anchor, since the consent
flow collects no email scope. The proxy then serves the RFC 0005 union:
thread principal's grants plus the requester's always-available OAuth direct
grants, so pushes and PRs authenticate as the commenter.

A commenter can only bind their own identity: the sender id is authentic
from the signature-verified webhook, turns only run for author associations
the deployment allowlisted, and the hoisted credential is always the
commenter's own.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* refactor: tighten console requester comments

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* refactor: plan-based requester resolution and review cleanup

Address review findings on the requester binding:

- Collapse register_requester's per-source branches into a typed
  RequesterPlan (FetchExisting for console-provisioned principals,
  UpsertDerived for api-rs-owned Slack/GitHub principals) produced by one
  dispatch function, so a new source is one arm instead of another branch
  in the registrar.
- The test stub now records request bodies, and the GitHub upsert test
  asserts the serialized kind/name/github_subject payload, not just the
  path.
- RFC 0005 §4 rewritten around the single precedence rule (provider-native
  subject first, owner-identity/email fallback) so it no longer contradicts
  the GitHub subject path; Security Considerations lists the webhook and
  console trust anchors.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix: resolve GitHub requesters on work sessions

---------

Co-authored-by: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Matthew Slipper <me@matthewslipper.com>
Co-authored-by: Liam Horne <1933029+snario@users.noreply.github.com>
* feat: add experimental memory generation workflow

* fix: resolve memory workflow CI failures

* fix: align memory generation model with evals

* fix: prevent memory generation pipeline wedges

* fix: preserve cursor on transient memory failures

* fix: reject all Slack group DMs from memory scope

* feat: add self-draining memory backfill
mslipper and others added 28 commits September 16, 2026 21:33
…z#1683)

* feat(githubbot): skip centaur-skip checks, and read check detail without the Checks API

An approval gate that fails until a person signs off reads to githubbot as red
CI: it spends every CI-fix attempt on a check no agent can turn green, then
escalates. Checks with `centaur-skip` in their name are now dropped from the CI
evaluation and from the escalation comment's failing list.

The marker rides the job id because GitHub recomputes the check-run name every
run, unlike workflowRun.workflow.name, which it caches per consuming repo for
ruleset-injected required workflows and never refreshes.

That filter needs readable check detail, and a fine-grained PAT — the token type
GitHub recommends — has no Checks permission at all, so statusCheckRollup
returns null check nodes. Today that silently degrades every deployment using
one: failingNames is always empty, so fix turns are dispatched with "Failing
checks: unknown" and escalations say "Still failing: the CI checks". When the
nodes are unreadable, githubbot now rebuilds the checks from the Actions API,
where a job is the same object as its check run. It trusts the reconstruction
only when it accounts for every context GitHub counted — commit statuses and
check runs from other Apps aren't Actions jobs — and otherwise keeps the
existing aggregate behavior rather than call a PR green on a check it never saw.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NY7uaJuKZDbHdD9UaBQZVc

* docs(githubbot): clarify centaur-skip naming

* fix(githubbot): retain same-named workflow checks

* fix(githubbot): harden Actions check fallback

---------

Co-authored-by: Oliver Ponder <oliver.ponder@gmail.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
* docs: clarify Slack search channel access

* docs: refine Slack history permission guidance

* test: remove Slack prompt text assertion
…ATIONS) (paradigmxyz#1679)

* feat: configurable sandbox pod annotations (SESSION_SANDBOX_POD_ANNOTATIONS)

Sandbox pods and their paired iron-proxy pods are created by api-rs at
runtime, so nothing the Helm chart renders can attach metadata to them.
There is no way to set pod annotations, which operators running on
Karpenter or cluster-autoscaler need: without `karpenter.sh/do-not-disrupt`
(or `cluster-autoscaler.kubernetes.io/safe-to-evict: "false"`) on an
in-flight sandbox pod, a node consolidation or drift replacement can evict
the pod and kill a running turn.

Add a `SESSION_SANDBOX_POD_ANNOTATIONS` knob (JSON object of string
key/value pairs) that mirrors the existing `SESSION_SANDBOX_NODE_SELECTOR`:
malformed JSON is startup-fatal, and each entry is validated against the
Kubernetes annotation shape (key prefix/name rules, value length and
control-character limits) so a bad annotation fails fast instead of being
rejected later by the API server. The annotations are applied to both the
sandbox pod template and the iron-proxy pod; the proxy's binding
annotations always win over any operator key collision. The Helm chart
renders `sandbox.podAnnotations` into the new env var alongside the other
sandbox scheduling knobs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* chore(chart): bump version to 0.1.143

The contrib/chart change adding the SESSION_SANDBOX_POD_ANNOTATIONS knob
(values.yaml, templates/apirs.yaml) requires a chart version bump so the
release-chart "Validate chart version bump" check passes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix: isolate sandbox pod annotations

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Matthew Slipper <me@matthewslipper.com>
* feat: add Zoom OAuth credential support

* fix: enforce Zoom identity requirements

* docs: remove unsupported Zoom tool recipe

* docs: restore supported Zoom automation recipe

---------

Co-authored-by: Matthew Slipper <me@matthewslipper.com>
* feat: expose scoped Slack rows to company context

* docs: clarify scoped Slack queries

* feat: add scoped Slack context views

* refactor: combine company context migrations

* test: cover company context Slack policies
* fix: use scoped company context reader role

* feat: enable public Slack company context

* feat: pass company context identity settings
…1684)

* feat(slack): add native direct message search

* refactor(slack): use company context for search

* refactor(slack): call company context client directly

* feat(slack): search scoped indexed messages

* refactor(slack): own indexed message search

* refactor(slack): use shared company context dsn
* feat: gate sessions on preapproved principals

* fix: require preapproval for requester principals

* fix: exempt internal workflows from session admission

* fix: serialize denied Slack status cleanup

* chore(chart): bump version to 0.1.144
Co-authored-by: zhygis <5236121+Zygimantass@users.noreply.github.com>
…ath (paradigmxyz#1685)

foundryup changed its install layout: the toolchain binaries now land in
~/.foundry/versions/foundry-rs/foundry/${FOUNDRY_VERSION}/ instead of
~/.foundry/versions/${FOUNDRY_VERSION}/. The hardcoded symlink target
~/.foundry/versions/${FOUNDRY_VERSION}/$bin therefore dangles, so cast, forge
and anvil fall off PATH (`cast: not found`, exit 127).

Resolve each binary's real path with `find` before creating the symlink, so the
links survive foundryup layout changes; fail the build loudly if a binary is
missing; and verify cast/forge/anvil actually run at build time.
* feat: make sandbox drain busy-aware

Draining sandboxes on deploy or scale-down previously stopped every
non-terminal sandbox unconditionally, interrupting any turn that was
executing at that moment. The drain now skips sandboxes whose session has
a queued or running execution and reports them as busy, so a rollout can
wait for in-flight turns to finish instead of killing them. An explicit
?force=true restores the unconditional behavior.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix: make sandbox drain fail closed

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Matthew Slipper <me@matthewslipper.com>
* fix(slack): add direct command guidance to MCP

* fix(slack): move MCP direct guidance to help

* docs(slack): explain tool access paths in help

* docs(slack): tie direct commands to user tokens
* feat: add Vega-Lite rendering tool

* docs: expand Vega-Lite tool help

* style: apply brand defaults to Vega-Lite charts

* test: normalize styled CLI help output

* style: align Vega-Lite defaults with chart guidelines
* fix: retry fresh Slack file share lookups

* refactor: validate Slack shares in retry helper

* refactor: simplify Slack file age check
* feat: add JSON output to gsuite table commands

* test: remove redundant gsuite JSON matrix
* feat: expose failed workflow metrics

* fix: count only terminal workflow failures

* refactor: emit workflow outcomes on transition

* fix: emit terminal outcomes across worker paths

* test: wait for terminal outcome hooks
…z#1715)

Bumps the github-actions group with 3 updates: [dtolnay/rust-toolchain](https://github.com/dtolnay/rust-toolchain), [ruby/setup-ruby](https://github.com/ruby/setup-ruby) and [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action).


Updates `dtolnay/rust-toolchain` from 6c977a6ca4077a0ceb28ffbe03f59d46e9ac8772 to 02cb101ec7c40f2c49e1d9714d64511d8e1b74de
- [Release notes](https://github.com/dtolnay/rust-toolchain/releases)
- [Commits](dtolnay/rust-toolchain@6c977a6...02cb101)

Updates `ruby/setup-ruby` from 1.321.0 to 1.324.0
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](ruby/setup-ruby@95ef2b0...a0102e0)

Updates `docker/setup-buildx-action` from 4.3.0 to 4.4.1
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](docker/setup-buildx-action@37fe631...f87e599)

---
updated-dependencies:
- dependency-name: dtolnay/rust-toolchain
  dependency-version: 02cb101ec7c40f2c49e1d9714d64511d8e1b74de
  dependency-type: direct:production
  dependency-group: github-actions
- dependency-name: ruby/setup-ruby
  dependency-version: 1.324.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: docker/setup-buildx-action
  dependency-version: 4.4.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ith 5 updates (paradigmxyz#1714)

chore(deps): bump the api-rs-dependencies group

Bumps the api-rs-dependencies group in /services/api-rs with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [aws-smithy-types](https://github.com/smithy-lang/smithy-rs) | `1.6.3` | `1.6.4` |
| [clap](https://github.com/clap-rs/clap) | `4.6.6` | `4.6.7` |
| [jiff](https://github.com/BurntSushi/jiff) | `0.2.35` | `0.2.37` |
| [jsonwebtoken](https://github.com/Keats/jsonwebtoken) | `11.0.0` | `11.1.0` |
| [rustls](https://github.com/rustls/rustls) | `0.23.44` | `0.23.45` |


Updates `aws-smithy-types` from 1.6.3 to 1.6.4
- [Release notes](https://github.com/smithy-lang/smithy-rs/releases)
- [Changelog](https://github.com/smithy-lang/smithy-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/smithy-lang/smithy-rs/commits)

Updates `clap` from 4.6.6 to 4.6.7
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/main/CHANGELOG.md)
- [Commits](clap-rs/clap@clap_complete-v4.6.6...clap_complete-v4.6.7)

Updates `jiff` from 0.2.35 to 0.2.37
- [Release notes](https://github.com/BurntSushi/jiff/releases)
- [Changelog](https://github.com/BurntSushi/jiff/blob/jiff-static-0.2.37/CHANGELOG.md)
- [Commits](BurntSushi/jiff@jiff-static-0.2.35...jiff-static-0.2.37)

Updates `jsonwebtoken` from 11.0.0 to 11.1.0
- [Changelog](https://github.com/Keats/jsonwebtoken/blob/master/CHANGELOG.md)
- [Commits](Keats/jsonwebtoken@v11.0.0...v11.1.0)

Updates `rustls` from 0.23.44 to 0.23.45
- [Release notes](https://github.com/rustls/rustls/releases)
- [Changelog](https://github.com/rustls/rustls/blob/main/CHANGELOG.md)
- [Commits](rustls/rustls@v/0.23.44...v/0.23.45)

---
updated-dependencies:
- dependency-name: aws-smithy-types
  dependency-version: 1.6.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: api-rs-dependencies
- dependency-name: clap
  dependency-version: 4.6.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: api-rs-dependencies
- dependency-name: jiff
  dependency-version: 0.2.37
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: api-rs-dependencies
- dependency-name: jsonwebtoken
  dependency-version: 11.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: api-rs-dependencies
- dependency-name: rustls
  dependency-version: 0.23.45
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: api-rs-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…in the harness-server-dependencies group (paradigmxyz#1712)

chore(deps): bump clap

Bumps the harness-server-dependencies group in /crates/harness-server with 1 update: [clap](https://github.com/clap-rs/clap).


Updates `clap` from 4.6.6 to 4.6.7
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/main/CHANGELOG.md)
- [Commits](clap-rs/clap@clap_complete-v4.6.6...clap_complete-v4.6.7)

---
updated-dependencies:
- dependency-name: clap
  dependency-version: 4.6.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: harness-server-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…th 2 updates (paradigmxyz#1711)

chore(deps): bump the ruby-dependencies group

Bumps the ruby-dependencies group in /services/console with 2 updates: [jwt](https://github.com/jwt/ruby-jwt) and [fugit](https://github.com/floraison/fugit).


Updates `jwt` from 3.2.0 to 3.3.0
- [Release notes](https://github.com/jwt/ruby-jwt/releases)
- [Changelog](https://github.com/jwt/ruby-jwt/blob/main/CHANGELOG.md)
- [Commits](jwt/ruby-jwt@v3.2.0...v3.3.0)

Updates `fugit` from 1.13.0 to 1.14.0
- [Changelog](https://github.com/floraison/fugit/blob/master/CHANGELOG.md)
- [Commits](floraison/fugit@v1.13.0...v1.14.0)

---
updated-dependencies:
- dependency-name: jwt
  dependency-version: 3.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: ruby-dependencies
- dependency-name: fugit
  dependency-version: 1.14.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: ruby-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Lockstep fast-forward for the chart 0.1.125 -> 0.1.144 deployment bump.
136 upstream commits, merged clean. Fork delta preserved: the MOO-534
openssh-client line in services/sandbox/Dockerfile.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@lyoungblood
lyoungblood merged commit 4d97da3 into main Sep 21, 2026
3 checks passed
@lyoungblood
lyoungblood deleted the sync/upstream-2026-09-21 branch September 21, 2026 21:03
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.