{"record":{"id":"97b3de01fa81558a","repo":"gastownhall/beads","slug":"load-blocking-info-w","errorCode":null,"errorMessage":"load blocking info: %w","messagePattern":"load blocking info: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/bd/list_proxied_server.go","lineNumber":267,"sourceCode":"\tlabelsMap := make(map[string][]string, len(issues))\n\tfor i, issue := range issues {\n\t\tissueIDs[i] = issue.ID\n\t\tif len(issue.Labels) > 0 {\n\t\t\tlabelsMap[issue.ID] = issue.Labels\n\t\t}\n\t}\n\n\t// The decoration, onto issueops.BlockingAnnotator. This route FAILS on the\n\t// read where the direct one swallows it, and both are kept exactly as they\n\t// were: converging them is a behavior decision recorded for the owner\n\t// (AMBIGUITIES.md, A-blk-1) rather than taken here.\n\tannotator, err := proxiedBlockingAnnotator()\n\tif err != nil {\n\t\treturn err\n\t}\n\tresult, err := annotator.AnnotateBlocking(ctx, issueops.BlockingRequest{IDs: issueIDs})\n\tif err != nil {\n\t\treturn fmt.Errorf(\"load blocking info: %w\", err)\n\t}\n\tblocking := newListBlocking(result)\n\n\tvar buf strings.Builder\n\tswitch {\n\tcase ui.IsAgentMode():\n\t\tfor _, issue := range issues {\n\t\t\tformatAgentIssue(&buf, issue, blocking.blockedBy[issue.ID], blocking.blocks[issue.ID], blocking.parent[issue.ID])\n\t\t}\n\t\tfmt.Print(buf.String())\n\t\tprintTruncationHint(truncated, in.effectiveLimit)\n\t\treturn nil\n\tcase in.longFormat:\n\t\tbuf.WriteString(fmt.Sprintf(\"\\nFound %d issues:\\n\\n\", len(issues)))\n\t\tfor _, issue := range issues {\n\t\t\tformatIssueLong(&buf, issue, labelsMap[issue.ID], in.SkipLabels)\n\t\t}\n\tdefault:","sourceCodeStart":249,"sourceCodeEnd":285,"githubUrl":"https://github.com/gastownhall/beads/blob/71377f276968b452ee607177637970a4ff888584/cmd/bd/list_proxied_server.go#L249-L285","documentation":"renderProxiedListText decorates listed issues with blocking info via the BlockingAnnotator; this wraps AnnotateBlocking failures. The core list query succeeded, but fetching which issues block the listed ones failed while rendering text output.","triggerScenarios":"Any proxied text-mode list render (pretty/agent/compact) where annotator.AnnotateBlocking(ctx, BlockingRequest{IDs: ...}) errors — storage/daemon failure during the blocking-relationship query for the listed IDs.","commonSituations":"Daemon connection lost mid-command, large ID batches timing out, or backend storage errors while reading dependency/blocking relationships.","solutions":["Retry the command — often transient","Check daemon/storage health (`bd doctor`)","Reduce --limit so fewer IDs are annotated per request","Use --json output, which may skip text-only blocking decoration"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"# Check storage/daemon health before large annotated lists\nbd doctor >/dev/null 2>&1 || exit 1\nbd list --limit 500 >/dev/null 2>&1 || { echo \"list backend failing\"; exit 1; }","typeGuard":null,"tryCatchPattern":"for i in 1 2 3; do\n  bd list --status open && break\n  sleep $((i*i))  # 'load blocking info' is often transient\ndone","preventionTips":["Retry text-mode lists before diagnosing deeper","Lower --limit to shrink AnnotateBlocking batch size","Keep client/daemon versions matched"],"tags":["blocking","dependencies","proxied-server"],"backgroundTag":"annotate-blocking-failed","analyzedSha":"71377f276968b452ee607177637970a4ff888584","analyzedAt":"2026-08-30T18:55:39.744Z","schemaVersion":2},"datasetVersion":"2026-08-30T23:17:21.991Z"}