dagger/dagger · error
failed to apply generated code: %w
Error message
failed to apply generated code: %w
What it means
After building the decode resolver, dagql extracts the underlying *Server (dagql server) from it via resolverServer to decode the result. If the resolver implementation does not expose a dagql server, decoding cannot proceed and this error names the concrete resolver Go type.
Source
Thrown at cmd/codegen/codegen.go:68
introspectionSchemaVersion = resp.SchemaVersion
} else {
introspectionSchema, introspectionSchemaVersion, err = introspection.Introspect(ctx, cfg.Dag)
if err != nil {
return err
}
}
// Set the parent schema
generator.SetSchemaParents(introspectionSchema)
for ctx.Err() == nil {
generated, err := genFunc(ctx, introspectionSchema, introspectionSchemaVersion)
if err != nil {
return err
}
if err := generator.Apply(ctx, generated, cfg.OutputDir); err != nil {
return fmt.Errorf("failed to apply generated code: %w", err)
}
for _, cmd := range generated.PostCommands {
// Only set cmd.Dir if the command hasn't already specified one.
// This allows generators to target a specific sub-directory (e.g.
// the client module directory) without being overridden here.
if cmd.Dir == "" {
cmd.Dir = cfg.OutputDir
if cfg.ModuleConfig != nil && cfg.ModuleConfig.ModuleName != "" {
cmd.Dir = filepath.Join(cfg.OutputDir, cfg.ModuleConfig.ModuleSourcePath)
}
}
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
slog.Info("running post-command:", "args", strings.Join(cmd.Args, " "))
err := cmd.Run()
if err != nil {
slog.Error("post-command failed", "error", err)View on GitHub (pinned to 82ba2681db)
Solutions
- Pass the actual dagql *Server (or a resolver whose Server() method returns one) when loading persisted results.
- Implement the server-extraction interface on the custom TypeResolver, returning the underlying *Server.
- Check for nil-Server embedding — make sure the Server field is initialized before LoadResultByResultID is called.
- Audit code paths that substitute a test resolver into import/attach paths.
Example fix
// before cache.LoadResultByResultID(ctx, session, testResolver, id) // after cache.LoadResultByResultID(ctx, session, dag, id) // dag is the initialized *dagql.Server
Defensive patterns
Strategy: validation
Validate before calling
if dag == nil || dag.Server() == nil { return errors.New("resolver must expose a dagql server") } Type guard
func providesServer(r dagql.TypeResolver) bool {
s, ok := r.(interface{ Server() *dagql.Server })
return ok && s.Server() != nil
} Try / catch
res, err := cache.LoadResultByResultID(ctx, session, dag, id)
if err != nil && strings.Contains(err.Error(), "does not provide dagql server") {
return fmt.Errorf("configure real *dagql.Server: %w", err)
} Prevention
- Always pass the live *dagql.Server into persistence load APIs
- Never substitute test resolvers in production import paths
- Initialize the Server field before any cache loads
When it happens
Trigger: resolverServer(decodeResolver) returns nil in ensurePersistedHitValueLoaded — the TypeResolver handed in (from e.g. loadResultByResultID's dag *Server or a wrapping resolver) does not implement the server-providing interface.
Common situations: Embedding dagql in a custom host with a minimal TypeResolver implementation; calling LoadResultByResultID with a resolver that is not backed by a *Server; test doubles used in production import paths.
Related errors
- failed parsing [%s], expected address format: [%s]
- use target SDK language: %s: %w
- unmarshal introspection json: %w
- failed to connect to engine: %w
- read introspection json: %w
AI-assisted analysis of dagger/dagger@82ba2681db (2026-09-05).
Data as JSON: /api/errors/875d6c5d32cd79c1.
Report an issue: GitHub.