fix(issues): default list endpoint to include blockedBy graph (GRO-2096) #18
Reference in New Issue
Block a user
Delete Branch "gb_flea/paperclip:fix/gro-2096-blockedby-default"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
GET /api/companies/{companyId}/issuesnow returns theblockedBygraph by default, matchingGET /api/issues/{id}. This closes the false-unblock cascade in the hygiene scanner: the scanner was treating GRO-1178 as unblocked because the list endpoint never returned theblockedByarray, even when?status=blockedwas set.This is the single-line change tracked in GRO-2096 / GRO-2097.
Diff
Tests
server/src/__tests__/issues-list-include-blocked-by-routes.test.tsincludeBlockedBy: trueby defaultincludeBlockedBy: truewhen?status=blocked(regression guard for GRO-2096)includeBlockedBy: falsewhen caller opts out with?includeBlockedBy=falseor=0origin/devHEAD9f3f71a1issue-dependency-wakeups-routes.test.tsstill green (no service-layer change)Acceptance criteria (from GRO-2096)
GET /api/companies/{companyId}/issues?status=blockedreturns a non-nullblockedByarray per result by default. ✓GET /api/issues/{id}return the sameblockedBydata. ✓todowhile GRO-1472 isblocked. ✓Out of scope
blockedByIssueIds(null even on per-issue reads) is intentionally untouched; flagged as a follow-up in the GRO-2096 plan.Reviewer
Requesting cpfarhood as the sole platform merger per the GRO-2097 plan.
groombookorg has no direct push access tofarhoodlabs/paperclip.🤖 Generated with Claude Code
Co-Authored-By: Paperclip noreply@paperclip.ing
GET /api/companies/{companyId}/issues now returns the blockedBy graph by default, matching GET /api/issues/{id}. The hygiene scanner was producing false-unblock cascades on GRO-1178 because the blocked filter on the list endpoint returned no blockedBy data, so the scanner never saw that GRO-1472 was still blocking the task. Opt out with ?includeBlockedBy=false (or 0) for perf-sensitive callers that do not need the dependency graph. The service layer default remains opt-in to keep services/issues.test.ts:1419 stable. Cross-repo PR: farhoodlabs/paperclip#<pending> Co-Authored-By: Paperclip <noreply@paperclip.ing>Hand-off
Single-line route-layer change on
devHEAD9f3f71a1:server/src/routes/issues.ts: defaultincludeBlockedBytotrueonGET /api/companies/:companyId/issues(opt out with?includeBlockedBy=falseor0).server/src/__tests__/issues-list-include-blocked-by-routes.test.ts— 4 cases all pass.services/issues.tsdefault remains opt-in soissues-service.test.ts:1419stays green.This unblocks the GRO-1178 false-unblock cascade (the hygiene scanner was moving blocked issues to
todobecause the list endpoint never returnedblockedBy).Cross-repo PR opened per the GRO-2097 plan:
groombookorg has no direct push access tofarhoodlabs/paperclip. @cpfarhood requested as the sole platform merger.Ref: GRO-2096 (root cause), GRO-2097 (this fork+PR).
CTO correctness review (GRO-2096): route hunk is byte-identical to the authored patch (b2f2d872..650893bc); defaults includeBlockedBy to true with ?includeBlockedBy=false|0 opt-out. Scope is clean (routes/issues.ts + new route test only); service layer and issues-service.test.ts:1419 untouched. 4-case route test covers default, status=blocked regression guard, and both opt-out forms. LGTM — ready for cpfarhood to merge to dev.
✅ CTO sign-off (GRO-2096) — reviewed for correctness.
b2f2d872..650893bc): defaultsincludeBlockedByto true, opt-out via?includeBlockedBy=false|0.server/src/routes/issues.ts+ new route test. Service layer andissues-service.test.ts:1419untouched (stays green).status=blockedregression guard, both opt-out forms).blockedBykey), so this PR is the fix.@cpfarhood this is ready to merge to
dev— you are the sole platform merger. (Formal APPROVE review stuck PENDING since I was not the requested reviewer; this comment is the sign-off.)Withdrawing this PR. The GroomBook board has decided not to make changes to the upstream Paperclip product (GRO-2096 cancelled). No merge needed — thanks @cpfarhood. Closing.
Pull request closed