Public: anyone can read this; the crew can change it.

A row the owner ranked is marked as his and no planner or keeper re-ranks it #11909

opened this

Check · Review · Land · Live — Its check is queued. Next: reviewer, no review yet.

Ready to land

A row a person ranks on `/next` is now stored as the owner's and shows an "Owner's pick" mark, and automatic ranking leaves it where it is. The ranking tests (32), `tsc`, `scripts/gate.ts` and `design-lint` pass. I did not run the full suite; the forge's check does that on push.

6 files · +135 −5

working queued to check deploy 0bc93ab

Check queued 35mCheck of 0bc93abfast tier: queued · full gate runs on land

Website spec: 23 findings (report only)
opened this

A row a person ranks on /next is now stored as the owner's and shows an "Owner's pick" mark, and automatic ranking leaves it where it is. The ranking tests (32), tsc, scripts/gate.ts and design-lint pass. I did not run the full suite; the forge's check does that on push.

  • Storage: a new migration, 20261112200000-issue-rank-owner.ts, adds issue_rank.by_owner. Rows that already exist count as the owner's, since only a person's move could have written them. rankIssue writes by_owner = 1 when the actor is a person. A move by a person leaves the marks on other rows as they were, so it never turns a planner's row into the owner's.
  • Automatic paths: writeOrder takes { owner: false } for planner and keeper writes. In that mode every owner-ranked row stays at its place and only the other rows are ordered around them. Planner-ranked rows are still re-ranked.
  • No caller to change: I grepped every writer of issue_rank. The only one is rankIssue, and it already refuses agents. The week planner (takeProposal) only sends an issue to Not now on a person's tap. The only other path touching the table is clearRank on close. So nothing automatic writes ranks today. The { owner: false } mode is there so one that appears later cannot move an owner's row.
  • Page: /next renders the mark server-side from ownerRanked(). It adds one rule to NEXT_CSS.
  • Tests: test/next-owner-rank.test.ts covers a person's move surviving a planner pass, a planner's rank still being re-ranked, and the mark appearing only on the owner's rows. scripts/gate.ts picks up every test/*.test.ts by glob, so there was no list to edit.

I did not add a "planner ranked this" mark, and I did not add a way to un-pin a row other than a person moving it again.

To try it: open a repo's /next, press Top on a row, and "Owner's pick" appears on it.

Closes #11753

commented

A row a person ranks on /next is now stored as the owner's and shows an "Owner's pick" mark, and automatic ranking leaves it where it is. The ranking tests (32), tsc, scripts/gate.ts and design-lint pass. I did not run the full suite; the forge's check does that on push.

  • Storage: a new migration, 20261112200000-issue-rank-owner.ts, adds issue_rank.by_owner. Rows that already exist count as the owner's, since only a person's move could have written them. rankIssue writes by_owner = 1 when the actor is a person. A move by a person leaves the marks on other rows as they were, so it never turns a planner's row into the owner's.
  • Automatic paths: writeOrder takes { owner: false } for planner and keeper writes. In that mode every owner-ranked row stays at its place and only the other rows are ordered around them. Planner-ranked rows are still re-ranked.
  • No caller to change: I grepped every writer of issue_rank. The only one is rankIssue, and it already refuses agents. The week planner (takeProposal) only sends an issue to Not now on a person's tap. The only other path touching the table is clearRank on close. So nothing automatic writes ranks today. The { owner: false } mode is there so one that appears later cannot move an owner's row.
  • Page: /next renders the mark server-side from ownerRanked(). It adds one rule to NEXT_CSS.
  • Tests: test/next-owner-rank.test.ts covers a person's move surviving a planner pass, a planner's rank still being re-ranked, and the mark appearing only on the owner's rows. scripts/gate.ts picks up every test/*.test.ts by glob, so there was no list to edit.

I did not add a "planner ranked this" mark, and I did not add a way to un-pin a row other than a person moving it again.

To try it: open a repo's /next, press Top on a row, and "Owner's pick" appears on it.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs