fix: address the review findings raised on the v0.8.21 release PR - #7451
fix: address the review findings raised on the v0.8.21 release PR#7451waleedlatif1 wants to merge 3 commits into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Eight of the thirteen threads were real. Each was verified against source before changing anything; three were pushed back on and are unchanged. Knowledge and credential groups: - The connector Access field resolved its provider through the standard-OAuth subset, which excludes Slack — Slack collects accounts through a custom bot. The field never rendered for a Slack connector, so it could not enter members mode and, worse, a per-member Slack connector had no way back to workspace mode. Resolved across all credential-group providers instead. - The v1 document delete looked the document up with an ACL scope and then ran an unscoped delete. The access-aware path already existed and v2 already used it; v1 was the last surface on the old one. The window is small and not attacker-controllable, but the divergence is worth closing. - Enrollment surfaced `CredentialGroupEnrollmentError` as a bare 500. A missing, disabled, or unconfigured credential group is the admin's to act on, so the policy now projects its 404/409 the way the credential-group routes do. - The workspace-level member-connector listing used knowledge-base concealment and answered "Knowledge base not found" where its siblings return an authorization response. It names a workspace, not a base, so it now uses an unconcealed policy — the convention the policy file already documents. Home: - Restoring a queued Build message left the search query in the URL, and the rule that forces Search whenever a query is present flipped the composer straight back. The edit was discarded and the original message dispatched. Clearing the query alongside the mode restore batches into the same nuqs update, so the forcing rule never observes the intermediate state. Docs and tooling: - `redis.mdx` claimed completed work is unaffected by losing Redis. Webhook idempotency markers live wherever the cache does, with a 7-day TTL sized to the longest provider retry window, and the bundled Redis runs without persistence — so a redelivery after a restart can re-run a finished workflow with its real side effects. Billing, checkout, and Chat-send idempotency are pinned to PostgreSQL. Corrected the same claim in the chart's values. - `/ship` Phase A never regenerated the docs manifest that Phase B hard-gates on, so adding or renaming a docs page aborted the command. - The CLI updater prints a yarn command, but the upgrade tabs offered none. - Documented that Ask may reach an integration for an explicitly requested action, not only when sources cannot answer. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015BwsJTEQRzWJaY4BRCkPZt
Greptile SummaryThe PR addresses review feedback from the v0.8.21 release work.
Confidence Score: 5/5The PR appears safe to merge. No blocking failure remains.
|
| Filename | Overview |
|---|---|
| apps/sim/lib/knowledge/orchestration/documents.ts | Replaces the unscoped document deletion with a knowledge-base- and access-scoped operation. |
| apps/sim/app/api/v1/knowledge/[id]/documents/[documentId]/route.ts | Resolves one access scope and forwards it through both document lookup and deletion. |
| apps/sim/app/workspace/[workspaceId]/home/home.tsx | Clears Search URL state before restoring the queued message's composer mode. |
| apps/sim/app/workspace/[workspaceId]/knowledge/[id]/hooks/use-connector-member-group-options.ts | Resolves all credential-group providers, including Slack, and exposes only provisionable options. |
| apps/sim/lib/knowledge/api/route-policies.ts | Projects credential-group enrollment failures and adds a workspace-level member-connector error policy. |
| apps/docs/content/docs/platform/self-hosting/redis.mdx | Documents the duplicate-side-effect risk when Redis-backed webhook idempotency markers are lost. |
| helm/sim/values.yaml | Clarifies Redis requirements and the consequences of running the bundled instance without persistence. |
Reviews (3): Last reviewed commit: "fix: address the first review round" | Re-trigger Greptile
be65c17 to
d236a68
Compare
Any change under helm/sim/ requires a Chart.yaml bump. This one only corrects a comment about what a Redis restart costs, so it is a patch. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015BwsJTEQRzWJaY4BRCkPZt
There was a problem hiding this comment.
All reported issues were addressed
Reply with feedback, questions, or to request a fix.
Fix all with cubic | Re-trigger cubic
|
@cubic-dev-ai review this PR |
@waleedlatif1 I have started the AI code review. It will take a few minutes to complete. |
- The Access picker offered Slack options that member provisioning would then reject: it filtered on `status` but not `configurationStatus`. Rendering the field for Slack is what exposed this, so it belongs with that change. Now mirrors provisioning, which skips anything not `ready`. - "The bundled Redis runs without persistence" was only true of the chart. The Compose stack leaves Redis on its default snapshotting with no mounted volume, so webhook markers survive a restart there but not recreating the container. - Redis is not optional at one replica: CLI authentication's approval store has no fallback and throws without it. The values guidance implied the requirement began above one replica. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015BwsJTEQRzWJaY4BRCkPZt
|
@cubic-dev-ai review this PR |
@waleedlatif1 I have started the AI code review. It will take a few minutes to complete. |
There was a problem hiding this comment.
2 issues found across 11 files
Confidence score: 3/5
helm/sim/Chart.yamlleaves unpinned installs deployingv0.8.18with thev0.8.21release, creating a concrete default-install regression; setappVersiontov0.8.21and regenerate the image inventory.helm/sim/values.yamlomits theChat-sendPostgreSQL idempotency exception from the Redis-loss guidance, which could lead operators to misunderstand chat-send deduplication behavior; documentchatSendIdempotencyalongside billing and checkout.
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="helm/sim/Chart.yaml">
<violation number="1" location="helm/sim/Chart.yaml:5">
P1: Unpinned chart installs still deploy `v0.8.18` even though this chart version is being shipped with the `v0.8.21` release. Set `appVersion` to `v0.8.21` and regenerate the image inventory so default installs receive the release features.
(Based on your team's feedback about keeping appVersion current for unpinned Helm installs.)</violation>
</file>
<file name="helm/sim/values.yaml">
<violation number="1" location="helm/sim/values.yaml:605">
P3: This Redis-loss note omits the `Chat-send` idempotency exception: `chatSendIdempotency` is forced to PostgreSQL, just like billing and checkout. Name it here so operators do not mistake chat-send deduplication for a Redis marker when evaluating restart risk.</violation>
</file>
Reply with feedback, questions, or to request a fix.
Fix all with cubic | Re-trigger cubic
| description: A Helm chart for Sim - the open-source AI workspace where teams build, deploy, and manage AI agents | ||
| type: application | ||
| version: 1.9.0 | ||
| version: 1.9.2 |
There was a problem hiding this comment.
P1: Unpinned chart installs still deploy v0.8.18 even though this chart version is being shipped with the v0.8.21 release. Set appVersion to v0.8.21 and regenerate the image inventory so default installs receive the release features.
(Based on your team's feedback about keeping appVersion current for unpinned Helm installs.)
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At helm/sim/Chart.yaml, line 5:
<comment>Unpinned chart installs still deploy `v0.8.18` even though this chart version is being shipped with the `v0.8.21` release. Set `appVersion` to `v0.8.21` and regenerate the image inventory so default installs receive the release features.
(Based on your team's feedback about keeping appVersion current for unpinned Helm installs.) </comment>
<file context>
@@ -2,7 +2,7 @@ apiVersion: v2
description: A Helm chart for Sim - the open-source AI workspace where teams build, deploy, and manage AI agents
type: application
-version: 1.9.0
+version: 1.9.2
appVersion: "v0.8.18"
kubeVersion: ">=1.25.0-0"
</file context>
| # keys, so a restart costs in-flight live updates, not committed data. It also | ||
| # drops webhook idempotency markers, so a provider redelivery after a | ||
| # restart can re-run an already-completed workflow — use a persistent managed | ||
| # instance if that matters. Billing and checkout idempotency is on PostgreSQL. |
There was a problem hiding this comment.
P3: This Redis-loss note omits the Chat-send idempotency exception: chatSendIdempotency is forced to PostgreSQL, just like billing and checkout. Name it here so operators do not mistake chat-send deduplication for a Redis marker when evaluating restart risk.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At helm/sim/values.yaml, line 605:
<comment>This Redis-loss note omits the `Chat-send` idempotency exception: `chatSendIdempotency` is forced to PostgreSQL, just like billing and checkout. Name it here so operators do not mistake chat-send deduplication for a Redis marker when evaluating restart risk.</comment>
<file context>
@@ -597,7 +599,10 @@ redis:
+ # keys, so a restart costs in-flight live updates, not committed data. It also
+ # drops webhook idempotency markers, so a provider redelivery after a
+ # restart can re-run an already-completed workflow — use a persistent managed
+ # instance if that matters. Billing and checkout idempotency is on PostgreSQL.
maxmemory: "512mb"
maxmemoryPolicy: "noeviction"
</file context>
| # instance if that matters. Billing and checkout idempotency is on PostgreSQL. | |
| # instance if that matters. Billing, checkout, and Chat-send idempotency are on PostgreSQL. |
Summary
Fixes the review findings raised on the v0.8.21 release PR (#7446). Thirteen threads were triaged; each was verified against source before anything changed.
Three landed on
stagingindependently while this was in progress — the/shipdocs-manifest regeneration (#7450), the CLI Yarn upgrade tab (#7448), and the table view-pin (#7449) — so this branch was rebased and those duplicates dropped. What remains:Knowledge / credential groups
CredentialGroupEnrollmentErroras a bare 500. A missing, disabled, or unconfigured credential group is the admin's to act on, so its 404/409 now project the way the credential-group routes do.Knowledge base not foundwhere its siblings return an authorization response. It names a workspace, not a base — now unconcealed, matching the convention its own policy file documents.Home
qin the URL, and the rule that forces Search whenever a query is present flipped the composer straight back: the edit was discarded and the original message dispatched. Clearing the query alongside the mode restore batches into the same nuqs update, so the forcing rule never observes the intermediate state.Docs
redis.mdxclaimed completed work is unaffected by losing Redis. Webhook idempotency markers live wherever the cache does, with a 7-day TTL sized to the longest provider retry window, and the bundled Redis runs--save "" --appendonly no— so a redelivery after a restart can re-run a finished workflow with real side effects. Billing, checkout, and Chat-send idempotency are pinned to PostgreSQL. The same claim invalues.yamlis corrected too.Pushed back on (unchanged, reasoning left on each thread)
canManageBlock). The suggested rewrite would make the page inconsistent with every other "you" on it.defaultValueguard is deliberate (landing-prompt seed path). The suggested fix would destroy user-typed text on every mode switch and break the queued-edit fix above.<source>payload — the file's own TSDoc documents this as an accepted trade; it only bites when the tag is also code-span-wrapped, costing one chip. Loosening the pattern removes the bound that stops a bogus match spanning code fences.Type of Change
Testing
bun run lint,bun run check:audits(45),bun run docs-manifest:check, andbun run type-checkall pass; 1210 tests pass acrosslib/knowledge. The new access-scope test is mutation-verified — it goes red when the scope is not forwarded to the delete./cleanuppasses (effects, state, callbacks, url-state, comments), with its three comment findings applied.Checklist