multica-ai/multica · error
resolve skill bundle returned wrong skill: requested source=
Error message
resolve skill bundle returned wrong skill: requested source=%s id=%s, got source=%s id=%s
What it means
Error "resolve skill bundle returned wrong skill: requested source=%s id=%s, got source=%s id=%s" thrown in multica-ai/multica.
Source
Thrown at server/internal/daemon/daemon.go:5936
// timeout, so a large bundle on a slow link is given room to finish instead of
// being cut off mid-body. Caching on success is what lets the resolve converge
// across dispatches. (GitHub #4505 / MUL-3650)
func (d *Daemon) resolveSkillBundle(ctx context.Context, task *Task, ref SkillRefData) (SkillData, error) {
reqCtx, cancel := context.WithTimeout(ctx, skillBundleResolveTimeout(ref.SizeBytes))
defer cancel()
bundle, err := d.client.ResolveSkillBundle(reqCtx, task.RuntimeID, task.ID, ref)
if err != nil {
return SkillData{}, err
}
// The resolve endpoint serves the agent's *current* bundle and hash, which
// may differ from the claim-time ref when the skill was edited between
// claim and prepare (see ResolveTaskSkillBundles). So confirm only that the
// server returned the skill we asked for (source/id), then validate the
// bundle for self-consistency against a ref derived from itself — pinning
// it to the possibly-stale requested hash would reject a legitimate update.
if bundle.Source != ref.Source || bundle.ID != ref.ID {
return SkillData{}, fmt.Errorf("resolve skill bundle returned wrong skill: requested source=%s id=%s, got source=%s id=%s", ref.Source, ref.ID, bundle.Source, bundle.ID)
}
bundleRef := skillRefFromBundle(bundle)
validationRef := bundleRef
if ref.Source == skillbundle.SourcePlugin {
validationRef = ref
}
if !validateSkillBundle(validationRef, bundle) {
return SkillData{}, fmt.Errorf("resolve skill bundle returned invalid bundle: skill_id=%s source=%s hash=%s", bundle.ID, bundle.Source, bundle.Hash)
}
if err := d.skillCache.WithRefLock(task.WorkspaceID, validationRef, func() error {
return d.skillCache.Store(task.WorkspaceID, bundle)
}); err != nil {
return SkillData{}, fmt.Errorf("store skill bundle cache: %w", err)
}
return bundle, nil
}
const (View on GitHub (pinned to 2c0912b6ec)
Solutions
- Clear the skill bundle cache and retry; report the mismatch if it persists.
When it happens
Trigger: Thrown at server/internal/daemon/daemon.go:5936 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of multica-ai/multica@2c0912b6ec (2026-08-15).
Data as JSON: /api/errors/8e81d44e7836bac6.
Report an issue: GitHub.