multica-ai/multica · error

skill bundle missing after resolve: skill_id=%s source=%s ha

Error message

skill bundle missing after resolve: skill_id=%s source=%s hash=%s

What it means

Error "skill bundle missing after resolve: skill_id=%s source=%s hash=%s" thrown in multica-ai/multica.

Source

Thrown at server/internal/daemon/daemon.go:5907

		if err != nil {
			// Name the skill, its declared size, and how long we actually
			// waited. The bare "resolve skill bundles: context deadline
			// exceeded" this replaced was indistinguishable from a generic
			// network fault, and cost a community thread three hours of
			// guesswork (MUL-5370): size + elapsed separate "this bundle is
			// too big for the link" from "the link is dead".
			return fmt.Errorf("%w: skill %q (id=%s, %d bytes) after %s: %w",
				errSkillBundleUnavailable, ref.Name, ref.ID, ref.SizeBytes,
				time.Since(started).Round(time.Millisecond), err)
		}
		resolved[skillRefKey(bundle.Source, bundle.ID)] = bundle
	}

	skills := make([]SkillData, 0, len(task.Agent.SkillRefs))
	for _, ref := range task.Agent.SkillRefs {
		bundle, ok := resolved[skillRefKey(ref.Source, ref.ID)]
		if !ok {
			return fmt.Errorf("skill bundle missing after resolve: skill_id=%s source=%s hash=%s", ref.ID, ref.Source, ref.Hash)
		}
		skills = append(skills, bundle)
	}
	task.Agent.Skills = skills
	return nil
}

// resolveSkillBundle downloads one skill bundle and writes it to the on-disk
// cache before returning. The request runs under its own deadline, scaled to
// the bundle's declared size rather than the daemon's fixed 30s control-plane
// 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)

View on GitHub (pinned to 2c0912b6ec)

Solutions

  1. Clear the skill bundle cache and retry; the bundle resolution failed to persist.

When it happens

Trigger: Thrown at server/internal/daemon/daemon.go:5907 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/4b3b67e2e1edb6db. Report an issue: GitHub.