GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | |||||||||||||||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | |||||||||||||||||||||||||||||||||||||
GeezerVison is showing github.com — fix(v2): hold create to the rules update enforces, and bind the last two cursors by waleedlatif1 · Pull Request #6684 · simstudioai/sim Conversation
Collaborator
Three defects, one shape: a rule applied to one path and not its sibling. Two were found by probing the live surface after #6681 deployed; the third by reading for the pattern. Each was reproduced before any code changed, and each fix is verified red-then-green. Create validated almost nothing update validates
Each 201 stores a column no run can ever write — the runner fills a cell from Create now runs the same The discriminator is A group's producer type could be relabelled into a state create forbids
The harmful direction is the reverse flip. Relabelling an enrichment group as manual keeps Option (b) — accepting The last two unbound cursors
Both now wrap their domain token with the same Guardrail closed too: In-flight tokens for these two lists are invalidated. They are single-walk and unpersisted, and the refusal message is accurate. Not fixed, flagged for follow-up
Verification
Sorry, something went wrong. Uh oh!
There was an error while loading. Please reload this page. All reactions
…two cursors Three defects, one shape: a rule applied to one path and not its sibling. Two were found by probing the live surface after the previous fixes deployed, and the third by reading for the pattern. Creating a workflow group through the public surface validated almost nothing the update path validates. An enrichment group could name an enrichment the registry does not define, or an output the enrichment does not have, or carry no output id at all — each a 201 storing a column no run can ever write, discovered only when the caller later tried to edit the group and got the 400 create should have given. The workflow half was the same: a fabricated block-and-path coordinate was stored on create and refused on update. Create now runs the same two registry helpers and the same workflow-output check the update path uses. The discriminator there is the backing workflow id, not the declared type. The workflow sidebar creates enrichment-template groups labelled `enrichment` while backed by a real workflow and carrying no enrichment id, so keying on the label would have refused the first-party create path outright. A group's producer type could also be relabelled after the fact into a state creation refuses. Nothing rejected it and nothing could repair it, since the update body carries no enrichment id to supply. Relabelling an enrichment group as workflow-backed is the harmful direction: it keeps the enrichment id while moving the group onto the workflow branch with an empty workflow id, so every cell run fails. An update may now only restate the type the group already has. The workflow-version and workspace-member lists were the last two paged reads minting cursors with no route identity, so a token from one parent resumed another at a position that silently skips rows — the defect the previous change closed everywhere else. Both now wrap their domain token with the same scope binding, and the pagination guardrail gained a declaration of every nested list's parent path param, because the old one recorded only query filters and so could not tell an unfiltered list from a forgotten parent.
|
There was an error while loading. Please reload this page.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Sorry, something went wrong.
There was an error while loading. Please reload this page.
PR SummaryCursor Bugbot is generating a summary for commit 717b4bf. Configure here. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Greptile SummaryThe PR aligns table-group creation validation with update validation, prevents producer-type relabeling, and scopes the remaining nested-list cursors to their parent resources.
Confidence Score: 5/5The PR appears safe to merge, with no concrete changed-code-triggered failures identified. The new validation and cursor-binding paths match existing contracts and sibling implementations, while the type guard preserves same-type updates and downstream missing-group handling.
|
| Filename | Overview |
|---|---|
| apps/sim/lib/table/application/groups.ts | Adds create-time output validation and prevents update-time producer-type changes without exposing a concrete regression. |
| apps/sim/app/api/v2/workflows/[id]/versions/route.ts | Consistently binds version cursors to the workflow path parameter when reading and minting tokens. |
| apps/sim/app/api/v2/workspaces/[workspaceId]/members/route.ts | Consistently binds member cursors to the workspace path parameter when reading and minting tokens. |
| apps/sim/lib/api/contracts/tables.ts | Updates the producer-type contract description to reflect the newly enforced immutability. |
| apps/sim/lib/api/contracts/v2/tests/list-pagination.test.ts | Adds an audit guard requiring nested paginated routes to declare all parent path bindings. |
| apps/sim/lib/table/application/groups.test.ts | Covers invalid create coordinates, valid workflow-backed templates, forbidden relabeling, and no-op type echoes. |
%%{init: {'theme': 'neutral'}}%%
flowchart LR
Request[Paginated list request] --> Scope[Derive scope from route and parent ID]
Scope --> Cursor{Cursor supplied?}
Cursor -->|No| FirstPage[Load first page]
Cursor -->|Yes| Verify[Read scoped cursor]
Verify -->|Scope mismatch or malformed| Reject[Return validation error]
Verify -->|Valid| Decode[Decode and validate inner keyset]
Decode --> Load[Load page from keyset]
FirstPage --> Present[Present results]
Load --> Present
Present --> More{More results?}
More -->|Yes| Mint[Mint cursor with same parent scope]
More -->|No| Null[Return null nextCursor]
Reviews (1): Last reviewed commit: "fix(v2): hold create to the rules update..." | Re-trigger Greptile
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
717b4bf3
Deployed
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.