{"record":{"id":"38738809144b6d54","repo":"gastownhall/beads","slug":"proxied-server-provider-t-does-not-offer-the-bloc","errorCode":null,"errorMessage":"proxied-server provider %T does not offer the blocking-decoration surface","messagePattern":"proxied-server provider %T does not offer the blocking-decoration surface","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/bd/list_roles.go","lineNumber":88,"sourceCode":"\tif err != nil {\n\t\treturn newListBlocking(issueops.BlockingResult{})\n\t}\n\tresult, err := annotator.AnnotateBlocking(ctx, issueops.BlockingRequest{IDs: ids})\n\tif err != nil {\n\t\treturn newListBlocking(issueops.BlockingResult{})\n\t}\n\treturn newListBlocking(result)\n}\n\n// proxiedBlockingAnnotator hands back the guarded blocking-decoration surface\n// for the proxied-server provider, through the provider's own accessor.\nfunc proxiedBlockingAnnotator() (issueops.BlockingAnnotator, error) {\n\tif uowProvider == nil {\n\t\treturn nil, errors.New(\"proxied-server UOW provider not initialized\")\n\t}\n\tsrc, ok := uowProvider.(uow.BlockingAnnotatorSource)\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"proxied-server provider %T does not offer the blocking-decoration surface\", uowProvider)\n\t}\n\treturn src.BlockingAnnotator()\n}\n","sourceCodeStart":70,"sourceCodeEnd":92,"githubUrl":"https://github.com/gastownhall/beads/blob/71377f276968b452ee607177637970a4ff888584/cmd/bd/list_roles.go#L70-L92","documentation":"proxiedBlockingAnnotator requires the configured UOW provider to implement uow.BlockingAnnotatorSource. This error fires when a provider implementation lacks that capability surface, meaning blocking decoration cannot be performed in this proxied setup. It's a capability/capability-mismatch error, not a transient failure.","triggerScenarios":"renderProxiedListText → proxiedBlockingAnnotator when the registered uowProvider's concrete type does not implement BlockingAnnotatorSource — e.g. an older or alternative provider wired in proxied mode.","commonSituations":"Mixed-version setup (daemon/provider built without the blocking-decoration interface), custom or test provider injected via uowProvider, or running a new bd client against an older proxied server.","solutions":["Upgrade bd (client and daemon/server) so both sides support the blocking-decoration surface","Verify no custom/test UOW provider is being injected (build tags, env, config)","If the provider can't be changed, use --json output to avoid text blocking decoration","File/check an issue if your provider should implement BlockingAnnotatorSource"],"exampleFix":"// before: provider missing the surface\nfunc (p *MyProvider) NewUOW(ctx) (uow.UnitOfWork, error) {...}\n// after: implement the source interface\nfunc (p *MyProvider) BlockingAnnotator() (issueops.BlockingAnnotator, error) {...}\nvar _ uow.BlockingAnnotatorSource = (*MyProvider)(nil)","handlingStrategy":"type-guard","validationCode":"// bd-side check is internal; scripts can probe by behavior:\n// if text list fails with 'blocking-decoration surface', switch to --json\nout=$(bd list 2>&1) || case \"$out\" in\n  *\"blocking-decoration surface\"*) exec bd list --json;; *) echo \"$out\";; esac","typeGuard":"// Go-side capability check mirroring the library's guard\nsrc, ok := uowProvider.(uow.BlockingAnnotatorSource)\nif !ok { /* provider lacks blocking decoration; skip decoration or use json */ }","tryCatchPattern":"// Degrade gracefully when the capability is absent\nif bd list 2>&1 | grep -q 'blocking-decoration surface'; then\n  bd list --json # fall back to output without text decoration\nfi","preventionTips":["Keep bd client and daemon on the same version","Only inject UOW providers that implement BlockingAnnotatorSource","Design consumers to degrade to --json when decoration is unavailable"],"tags":["capability","interface","proxied-server"],"backgroundTag":"interface-not-implemented","analyzedSha":"71377f276968b452ee607177637970a4ff888584","analyzedAt":"2026-08-30T18:55:39.744Z","schemaVersion":2},"datasetVersion":"2026-08-30T23:17:21.991Z"}