gastownhall/beads · error
proxied-server provider %T does not offer the dependency-tre
Error message
proxied-server provider %T does not offer the dependency-tree surface
What it means
After resolving the tree target, proxiedTreeTarget type-asserts uowProvider to uow.TreeWalkerSource to obtain a dependency-tree walker. If the provider does not implement that capability interface, this error is returned. It means the active provider lacks the dependency-tree surface, so tree traversal cannot proceed on the proxied route.
Source
Thrown at cmd/bd/dep_tree.go:74
// THIS ROUTE GAINS PARTIAL-ID RESOLUTION, which it has never had: it passed the
// argument to the use case verbatim, so `bd dep tree a1b2` worked on a direct
// workspace and failed on a team server.
func proxiedTreeTarget(ctx context.Context, arg string) (treeTarget, error) {
uw, err := proxiedOpenReadUOW(ctx)
if err != nil {
return treeTarget{}, err
}
rootID, err := utils.ResolvePartialID(ctx, uowMolReader{uw: uw}, arg)
uw.Close(ctx)
if err != nil {
return treeTarget{}, fmt.Errorf("resolving issue ID %s: %w", arg, err)
}
if uowProvider == nil {
return treeTarget{}, errors.New("proxied-server UOW provider not initialized")
}
src, ok := uowProvider.(uow.TreeWalkerSource)
if !ok {
return treeTarget{}, fmt.Errorf("proxied-server provider %T does not offer the dependency-tree surface", uowProvider)
}
walker, err := src.TreeWalker()
if err != nil {
return treeTarget{}, err
}
return treeTarget{rootID: rootID, walker: walker, cleanup: func() {}}, nil
}
// runDepTree is the whole of `bd dep tree` on both routes.
func runDepTree(cmd *cobra.Command, ctx context.Context, args []string) error {
maxDepth, _ := cmd.Flags().GetInt("max-depth")
reverse, _ := cmd.Flags().GetBool("reverse")
directionFlag, _ := cmd.Flags().GetString("direction")
statusFilter, _ := cmd.Flags().GetString("status")
formatStr, _ := cmd.Flags().GetString("format")
if strings.EqualFold(formatStr, "json") {
jsonOutput = true
formatStr = ""View on GitHub (pinned to 71377f2769)
Solutions
- Check the concrete provider type in the error message and add/implement uow.TreeWalkerSource (TreeWalker() method) on it.
- Rebuild bd from current source so the standard provider with the tree surface is used.
- Ensure no test or embedded override replaces the default Dolt-backed provider for tree commands.
- If the surface is genuinely unsupported in your build, run the equivalent operation against a full storage backend.
Example fix
// before: provider lacks tree surface
// after: satisfy the capability interface
func (p *myProvider) TreeWalker() (uow.TreeWalker, error) { return newWalker(p.store), nil }
var _ uow.TreeWalkerSource = (*myProvider)(nil) Defensive patterns
Strategy: type-guard
Validate before calling
if uowProvider == nil { return errors.New("UOW provider not initialized") }
if _, ok := uowProvider.(uow.TreeWalkerSource); !ok {
return fmt.Errorf("provider %T lacks TreeWalkerSource", uowProvider)
} Type guard
func hasTreeWalker(p uow.Provider) bool { _, ok := p.(uow.TreeWalkerSource); return ok } Try / catch
target, err := proxiedTreeTarget(ctx, arg)
if err != nil {
return fmt.Errorf("tree surface unavailable: %w", err)
} Prevention
- Add compile-time checks: var _ uow.TreeWalkerSource = (*myProvider)(nil).
- Keep test fakes in sync with the full capability interface set.
- Rebuild bd after pulling changes that add new provider surfaces.
- Avoid substituting minimal providers for tree commands.
When it happens
Trigger: Calling resolveTreeTarget when uowProvider is non-nil but does not implement uow.TreeWalkerSource — e.g. a minimal or legacy provider implementation without a TreeWalker() accessor, or test scaffolding substituting an incomplete provider.
Common situations: Stale bd binary predating the TreeWalkerSource capability; custom embedded providers implementing only read/write basics; test fakes missing TreeWalker(); build-tag variants excluding the tree surface from the provider.
Related errors
- proxied-server provider %T does not offer the stored-edge su
- no store is open for this workspace
- not found
- no absolute native user directory is available
- ExternalDoltConfig: set either Socket OR (Host, Port), not b
AI-assisted analysis of gastownhall/beads@71377f2769 (2026-08-30).
Data as JSON: /api/errors/c1a6e761b473f335.
Report an issue: GitHub.