feat: promote priority, estimate, assignees to first-class fields#68
Merged
Conversation
FrkAk
requested changes
May 10, 2026
FrkAk
requested changes
May 11, 2026
FrkAk
approved these changes
May 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 atask_assignees(task_id, user_id)junction. The data migration mirrors existing priority strings fromtasks.tagsinto the new column but intentionally leaves them intagsfor 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
priorityfield;PRIORITY_TAGSand the priority branch intagTaxonomyHintsare removed.Follow-up: workspace UI changes tracked in MYMR-194; legacy-tag strip in MYMR-195.
Type of change
Testing
bun run lint)bun run typecheck)bun test: 103 / 103 pass, including new coverage for non-member rejection, append vs replace assignee modes, and priority + estimate persistencebun run dev(deferred — local DB is on an old schema; verified against Neon viascripts/apply-mymr-190.tsinstead)Notes for reviewer
text().$type<>()/integer().$type<>()narrowing, nopgEnumor DB CHECK. Validation lives at the Zod edge.release-blocker,core,normal,backlog) instead of thelow/normal/high/release-blockerset originally drafted in AC 1, by user decision during planning.assertAssigneesInTeaminside the same transaction as the junction insert, so a concurrent membership revoke cannot slip past.(task_id, user_id)intask_assignees(no ordering column). Sets the convention for MYMR-136's twin junction work on acceptanceCriteria + decisions.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.mainkeeps reading priority fromtasks.tagsvia the still-activePRIORITY_TAGSenforcement on that branch.