You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(supply-chain): derive the mirror path instead of describing a rule for it
The mirror instruction was wrong for the five first-party images. The inventory
lists what you pull — `ghcr.io/simstudioai/app` — but `ghcr.io` is the chart's
default registry, so a redirected install pulls `<registry>/simstudioai/app`.
Following "mirror to <registry>/<reference as listed>" put them at
`<registry>/ghcr.io/simstudioai/...` and every Sim image failed to pull. The
device plugin is the opposite case: its `nvcr.io/` really is part of the
repository and survives the rewrite.
Rather than write that rule out and hope it stays true, the generator now
renders the chart a second time against a sentinel registry and strips it back
off, so each entry carries both the source reference and the exact path the
chart resolves to. Verified by rendering with a real mirror and diffing: all 13
mirror paths match.
Also retries the moving-alias read. A mismatch meant "the guard held this tag
back", but it can equally mean GHCR is still serving the previous digest a
moment after this run wrote it — and that reading dropped three subjects from
the matrix without a word.
Docs, each verified against source:
- Chat drops a disallowed tool while generating a workflow and records the
omission; a run that reaches one fails. Both statements were needed, and the
page previously asserted one or the other in different places.
- A quickly-failing CronJob pod is retried six times by Kubernetes; the
five-minute deadline only preempts one that hangs.
- Selecting a sandbox without a provider is a 503; the 422 is the file path.
- Chat's public code tool is run_function, not the internal function_execute.
- The parity step needs SANDBOX_PROVIDER=e2b, or an exported daytona provider
makes step 1 exit before writing the manifest.
- PII_URL is auto-wired by the chart and needs a service URL on Compose.
- NO_PROXY should use the cluster suffix; the Service names depend on the
release name.
- The bucket loops now fail loudly instead of silently iterating nothing when
SIM_BUCKETS is unset in a fresh shell.
- Generating CRON_SECRET beside the curl suggested it was the token to use.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015BwsJTEQRzWJaY4BRCkPZt
Copy file name to clipboardExpand all lines: apps/docs/content/docs/platform/enterprise/access-control.mdx
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,7 +27,7 @@ Assignment-time checks keep this unambiguous: a workspace has at most one all-me
27
27
When a user runs a workflow or uses Chat, Sim reads the resolved group's configuration and applies it:
28
28
29
29
-**In the executor:** If a workflow uses a disallowed block type or model provider, execution halts immediately with an error. This applies to both manual runs and scheduled or API-triggered deployments.
30
-
-**In Chat:** Disallowed blocks are filtered out of the block list so they cannot be added to a workflow. Disallowed tool types (MCP, custom tools, skills) make the block fail with an error if Sim attempts to use them — they are refused, not silently dropped.
30
+
-**In Chat:** Disallowed blocks are filtered out of the block list so they cannot be added to a workflow. Disallowed tool types (MCP, custom tools, skills) are dropped while Sim generates a workflow, with the omission recorded. If a run reaches one anyway, the block fails with an error naming the restriction rather than skipping it.
31
31
32
32
---
33
33
@@ -209,7 +209,7 @@ This applies regardless of how the workflow is triggered — manually, via API,
209
209
When a user opens Chat, their permission group is read before any block or tool suggestions are made:
210
210
211
211
- Blocks not in the allowed list are filtered out of the block picker entirely — they do not appear as options.
212
-
- If Sim generates a workflow step that would use a disallowed tool (MCP, custom, or skills), the run fails with an error naming the restriction.
212
+
- If Sim generates a workflow step that would use a disallowed tool (MCP, custom, or skills), the tool is left out of the generated workflow. A run that reaches a disallowed tool fails with an error naming the restriction.
Copy file name to clipboardExpand all lines: apps/docs/content/docs/platform/self-hosting/background-jobs.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -71,7 +71,7 @@ cronjobs:
71
71
enabled: true
72
72
```
73
73
74
-
Each job runs a small `curlimages/curl` pod that calls the app's **in-cluster Service** (not the ingress), with `concurrencyPolicy: Forbid` so a slow run never overlaps itself. The Service load-balances that single call to one replica, so a job never fans out across pods. The chart keeps three completed and one failed Job per CronJob, but `ttlSecondsAfterFinished` defaults to 600, so a finished Job is deleted ten minutes after it ends — inspect a failure promptly or collect the logs. It sets no `backoffLimit`, but `cronjobs.activeDeadlineSeconds` (default `300`) terminates the whole Job after five minutes, and the pod's own script already retries three times inside that window — so a failing job gets roughly one pod attempt and is then marked `DeadlineExceeded`, not six retries.
74
+
Each job runs a small `curlimages/curl` pod that calls the app's **in-cluster Service** (not the ingress), with `concurrencyPolicy: Forbid` so a slow run never overlaps itself. The Service load-balances that single call to one replica, so a job never fans out across pods. The chart keeps three completed and one failed Job per CronJob, but `ttlSecondsAfterFinished` defaults to 600, so a finished Job is deleted ten minutes after it ends — inspect a failure promptly or collect the logs. It sets no `backoffLimit`, so a pod that exits quickly — an immediate `401`, say — is retried up to the Kubernetes default of six times. A pod that hangs instead is cut off by `cronjobs.activeDeadlineSeconds` (default `300`), which caps the whole Job at five minutes and marks it `DeadlineExceeded`. Set `backoffLimit: 0` if you want exactly one attempt.
75
75
76
76
Disable individual jobs you do not need — billing reconciliation is the obvious one on a self-hosted install:
Copy file name to clipboardExpand all lines: apps/docs/content/docs/platform/self-hosting/environment-variables.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -199,7 +199,7 @@ See [Observability](/platform/self-hosting/observability).
199
199
|----------|-------------|
200
200
|`COPILOT_API_KEY`| API key for Chat. Without it the Sim Chat block, scheduled prompt jobs, and Inbox cannot run |
201
201
|`NEXT_PUBLIC_CHAT_DISABLED`| Set to `true` to hide the Chat module: the workspace lands on your first workflow, with no chats list, scheduled tasks, or editor Chat panel. Chat is shown when unset; `npx sim-setup` sets it for you if you skip the chat key |
202
-
|`PII_URL`| Base URL of the Presidio service backing PII detection and redaction. Defaults to `http://localhost:5001`, which exists only in local development — set it to your own Presidio deployment|
202
+
|`PII_URL`| Base URL of the Presidio service backing PII detection and redaction. The Helm chart wires it to its own `pii` Service when `pii.enabled`; on Compose point it at the PII service on your network. The default `http://localhost:5001`exists only in local development, and leaving it makes redaction fail|
203
203
|`DURABLE_SECRET_PROVENANCE_ENFORCED_SURFACES`| Durable stores where a value whose secret provenance was never recorded fails the run instead of logging a warning. `all`, or a comma-separated subset of `memory`, `table-row`, `knowledge`, `workspace-file`. Unset (nothing enforced) by default |
204
204
|`ADMIN_API_KEY`| Admin API key for GitOps operations and organization provisioning |
0 commit comments