feat: enrich triage routing metadata#722
Conversation
|
Controller disposition for current head Evidence:
Required path:
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b0204ccfbd
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| input.AssigneeID = &value | ||
| input.fieldsPresent["assigneeId"] = true |
There was a problem hiding this comment.
Avoid mutating shared field-presence defaults
In bulk accepts where a team has triage defaults and the client omits these metadata fields, BulkTriage reuses the same decoded request for every issue. This mutates the shared fieldsPresent map on the first issue, while the caller's pointer fields remain nil; subsequent issues then see assigneeId/project/cycle as present and the update writes null instead of applying the defaults. Clone the presence map or track default application without mutating the shared request state.
Useful? React with 👍 / 👎.
| acceptDestinationStateId: { type: [string, 'null'], format: uuid } | ||
| declineDestinationStateId: { type: [string, 'null'], format: uuid } |
There was a problem hiding this comment.
Match nullable default IDs to actual responses
For teams without configured triage destination defaults, triageDefaultSettings returns empty strings, but the new schema advertises these fields as UUID strings or null. OpenAPI validators and generated clients will treat the common empty-string response as invalid; either emit null from the API or keep the contract aligned with the current payload shape.
Useful? React with 👍 / 👎.
Summary
Verification
Blocked: make check currently fails in @exponential/web typecheck because workspace dependencies such as drizzle-orm/better-auth/stripe are not installed in this lane; go test is blocked because go is not installed.