Skip to content

feat: enrich triage routing metadata#722

Open
jaeyunha wants to merge 1 commit into
stagingfrom
issue-561-parity-enrich-triage-routing-metad
Open

feat: enrich triage routing metadata#722
jaeyunha wants to merge 1 commit into
stagingfrom
issue-561-parity-enrich-triage-routing-metad

Conversation

@jaeyunha

Copy link
Copy Markdown
Member

Summary

  • type triage response metadata in OpenAPI/SDK and expose source-context chips in the triage list
  • preserve remote triage safety fixes while applying explicit nullable metadata updates/defaults correctly
  • add integration-style Go coverage for metadata loading and wrong-scope routing validation

Verification

  • pnpm exec vitest run tests/team-triage-view.test.tsx
  • pnpm --filter @namuh-eng/expn-sdk typecheck
  • pnpm exec biome check apps/web/src/app/'(app)'/team/'[key]'/triage/page.tsx apps/web/src/components/triage-row.tsx apps/web/tests/team-triage-view.test.tsx packages/sdk/src/generated.ts packages/proto/openapi.yaml

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.

@jaeyunha

Copy link
Copy Markdown
Member Author

Controller disposition for current head b0204cc: validation-blocked; do not merge yet.

Evidence:

  • PR feat: enrich triage routing metadata #722 targets staging, contains current origin/staging, and GitHub reports mergeable=MERGEABLE.
  • Merge simulation shows no conflicts; changed files are limited to triage API/web tests, triage row/page UI, OpenAPI, and generated SDK.
  • Passed controller guards in clean PR worktree: git diff --check, OpenAPI coverage, generated Go OpenAPI strict-server check, and empty Next API route guard.
  • Blocked in clean PR worktree: cd apps/api && go test ./internal/teams -run 'Triage|triage' fails because the new triage tests insert workspace keys longer than varchar(63).
  • JS validation is also setup-blocked in the clean controller worktree: pnpm exec vitest run tests/team-triage-view.test.tsx cannot find vitest there.

Required path:

  • Fix the feat: enrich triage routing metadata #722 Go test fixture workspace keys to satisfy the existing schema limit, rerun focused teams Go tests, then rerun the triage Vitest/SDK/Biome gates in a dependency-complete workspace before merge.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment on lines +610 to +611
input.AssigneeID = &value
input.fieldsPresent["assigneeId"] = true

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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 👍 / 👎.

Comment on lines +6390 to +6391
acceptDestinationStateId: { type: [string, 'null'], format: uuid }
declineDestinationStateId: { type: [string, 'null'], format: uuid }

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

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.

1 participant