dagger/dagger · error

namespace interface typedef id: %w

Error message

namespace interface typedef id: %w

What it means

Wraps a failure from ResultIDInput while encoding the fully namespaced interface into an ID, before substituting it into the TypeDef via `__withInterfaceTypeDef` (core/module.go). Encoding the updated InterfaceTypeDef result failed.

Source

Thrown at core/module.go:1823

			if !sameAttachedResult(updatedFn, fn) {
				fnID, err := ResultIDInput(updatedFn)
				if err != nil {
					return typeDef, fmt.Errorf("namespace interface function id: %w", err)
				}
				if err := dag.Select(ctx, updatedIface, &updatedIface, dagql.Selector{
					Field: "__withFunction",
					Args:  []dagql.NamedInput{{Name: "function", Value: fnID}},
				}); err != nil {
					return typeDef, fmt.Errorf("namespace interface function: %w", err)
				}
			}
		}
		if sameAttachedResult(updatedIface, iface) {
			return typeDef, nil
		}
		updatedIfaceID, err := ResultIDInput(updatedIface)
		if err != nil {
			return typeDef, fmt.Errorf("namespace interface typedef id: %w", err)
		}
		updated := typeDef
		if err := dag.Select(ctx, updated, &updated, dagql.Selector{
			Field: "__withInterfaceTypeDef",
			Args:  []dagql.NamedInput{{Name: "interfaceTypeDef", Value: updatedIfaceID}},
		}); err != nil {
			return typeDef, fmt.Errorf("namespace interface typedef: %w", err)
		}
		return updated, nil
	case TypeDefKindEnum:
		enum := typeDef.Self().AsEnum.Value
		updatedEnum := enum
		_, ok, err := mod.Deps.ModTypeFor(ctx, typeDef.Self())
		if err != nil {
			return typeDef, fmt.Errorf("namespace enum type lookup: %w", err)
		}
		if ok {
			return typeDef, nil

View on GitHub (pinned to 82ba2681db)

Solutions

  1. Check the wrapped cause from ResultIDInput
  2. Regenerate SDK code (`dagger develop`)
  3. Restart engine / clear cache to drop corrupt results
  4. Verify CLI and engine versions match

Example fix

// before
dagger functions // fails on stale generated SDK
// after
dagger develop && dagger functions
Defensive patterns

Strategy: validation

Validate before calling

if updatedIface.Self().Name == "" { return errors.New("namespaced interface has empty name") }

Type guard

func encodableInterface(i *core.Interface) bool { return i != nil && i.Name != "" }

Try / catch

id, err := ResultIDInput(updatedIface); if err != nil { return fmt.Errorf("interface typedef encoding failed: %w", err) }

Prevention

When it happens

Trigger: After namespacing, updatedIface differs from iface (sameAttachedResult false) and ResultIDInput(updatedIface) errors.

Common situations: Malformed interface produced by codegen; corrupt cached results; engine version skew.

Related errors


AI-assisted analysis of dagger/dagger@82ba2681db (2026-09-05). Data as JSON: /api/errors/1da40afa67a66071. Report an issue: GitHub.