Skip to content

feat: promote priority, estimate, assignees to first-class fields#68

Merged
FrkAk merged 7 commits into
mainfrom
feat/expand-task-table
May 11, 2026
Merged

feat: promote priority, estimate, assignees to first-class fields#68
FrkAk merged 7 commits into
mainfrom
feat/expand-task-table

Conversation

@ulascanzorer
Copy link
Copy Markdown
Collaborator

@ulascanzorer ulascanzorer commented May 10, 2026

Summary

Task Reference: [MYMR-190]

Promotes priority, estimate, and assignees from scattered / tag-encoded state to first-class task columns. Schema adds nullable tasks.priority (text), tasks.estimate (integer), and a task_assignees(task_id, user_id) junction. The data migration mirrors existing priority strings from tasks.tags into the new column but intentionally leaves them in tags for branch compatibility during the dual-life period; the strip is deferred to MYMR-195.

The four-dimension tag taxonomy becomes three (work-type, cross-cutting, tech) plus the new priority field; PRIORITY_TAGS and the priority branch in tagTaxonomyHints are removed.

Follow-up: workspace UI changes tracked in MYMR-194; legacy-tag strip in MYMR-195.

Type of change

  • New feature
  • Bug fix
  • Refactor / cleanup
  • Documentation

Testing

  • Linting passes (bun run lint)
  • Typecheck passes (bun run typecheck)
  • bun test: 103 / 103 pass, including new coverage for non-member rejection, append vs replace assignee modes, and priority + estimate persistence
  • Tested locally with bun run dev (deferred — local DB is on an old schema; verified against Neon via scripts/apply-mymr-190.ts instead)

Notes for reviewer

  • Schema enforcement matches MYMR-98 precedent: text().$type<>() / integer().$type<>() narrowing, no pgEnum or DB CHECK. Validation lives at the Zod edge.
  • Priority value vocabulary kept 1:1 with the existing tag values (release-blocker, core, normal, backlog) instead of the low/normal/high/release-blocker set originally drafted in AC 1, by user decision during planning.
  • Team-scope check on assignee writes lives in assertAssigneesInTeam inside the same transaction as the junction insert, so a concurrent membership revoke cannot slip past.
  • Composite PK on (task_id, user_id) in task_assignees (no ordering column). Sets the convention for MYMR-136's twin junction work on acceptanceCriteria + decisions.
  • Migration applied to Neon via scripts/apply-mymr-190.ts (idempotent): 472 of 493 tasks now carry a priority value; 21 had no priority tag and stay NULL. The script is left in place for re-runs.
  • AC 2 ("removes them from the tags array; no task ends up with both") is intentionally unchecked. The strip is deferred to MYMR-195 once every active branch has merged the new surface; until then, code on main keeps reading priority from tasks.tags via the still-active PRIORITY_TAGS enforcement on that branch.

@ulascanzorer ulascanzorer requested review from FrkAk and ZeyNor as code owners May 10, 2026 13:59
@ulascanzorer ulascanzorer self-assigned this May 10, 2026
Comment thread lib/mcp/create-server.ts Outdated
Comment thread lib/graph/tool-handlers.ts Outdated
Comment thread lib/data/task.ts
Comment thread lib/data/task.ts
Comment thread lib/data/task.ts Outdated
Comment thread drizzle/meta/0001_snapshot.json Outdated
Comment thread lib/graph/tool-handlers.ts
@FrkAk FrkAk changed the title feat: promote priority, estimate, assignees to first-class fields [MYMR-190] feat: promote priority, estimate, assignees to first-class fields May 10, 2026
@ulascanzorer ulascanzorer requested a review from FrkAk May 11, 2026 17:40
Comment thread lib/data/task.ts
Comment thread lib/graph/tool-handlers.ts Outdated
Comment thread lib/mcp/create-server.ts Outdated
Comment thread plugins/claude-code/skills/mymir/SKILL.md Outdated
@FrkAk FrkAk merged commit 32b6d3a into main May 11, 2026
4 checks passed
@FrkAk FrkAk deleted the feat/expand-task-table branch May 11, 2026 19:24
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.

2 participants