Part of #455 (split). The cards at /og/repo/:ref and /og/issue/:ref (src/web/pages/og.ts, drawn by renderCard in src/web/og/card.ts) say where things stand, not just a count.
Done:
[ ] The repo card shows its open issues, how many are ready now and how many are blocked, plus open pulls, from data an anonymous reader may already see.
[ ] The issue card shows open/closed and either "ready" or "waits on #A, #B" (at most three numbers, then "+N"). Sealed or private blockers are counted but not named.
[ ] The ETag still changes when any shown value changes, and stays the same when nothing shown changes.
[ ] test/og-route.test.ts covers a ready issue, a blocked issue and a repo, and each test fails without the change.
Files: src/web/pages/og.ts, maybe src/web/og/card.ts, test/og-route.test.ts. Do not touch src/core/pulls.ts, src/http/api.ts or scripts/gate.ts.
Risk: leaking a sealed issue's title through a blocker; only numbers that mayView allows are named.
Part of #455 (split). The cards at
/og/repo/:refand/og/issue/:ref(src/web/pages/og.ts, drawn byrenderCardinsrc/web/og/card.ts) say where things stand, not just a count.Done:
test/og-route.test.tscovers a ready issue, a blocked issue and a repo, and each test fails without the change.Files:
src/web/pages/og.ts, maybesrc/web/og/card.ts,test/og-route.test.ts. Do not touchsrc/core/pulls.ts,src/http/api.tsorscripts/gate.ts. Risk: leaking a sealed issue's title through a blocker; only numbers thatmayViewallows are named.