{"record":{"id":"1264ee89da5608d2","repo":"multica-ai/multica","slug":"w-after-s","errorCode":null,"errorMessage":"%w after %s","messagePattern":"%w after (.+?)","errorType":"exception","errorClass":"errTaskPrepareTimeout","httpStatus":null,"severity":"error","filePath":"server/internal/daemon/daemon.go","lineNumber":6099,"sourceCode":"\t// path that can leak operations into an unrelated workspace when\n\t// multiple workspaces share a host.\n\tif task.WorkspaceID == \"\" {\n\t\treturn TaskResult{}, fmt.Errorf(\"refusing to spawn agent: task has no workspace_id (task_id=%s)\", task.ID)\n\t}\n\n\tprepareTimeout := d.effectiveTaskPrepareTimeout()\n\tprepareCtx, cancelPrepare := context.WithTimeoutCause(ctx, prepareTimeout, errTaskPrepareTimeout)\n\tprepareComplete := false\n\tdefer func() {\n\t\tcancelPrepare()\n\t\tif prepareComplete || returnErr == nil || !errors.Is(context.Cause(prepareCtx), errTaskPrepareTimeout) {\n\t\t\treturn\n\t\t}\n\t\t// Collapse every deadline shape (context deadline, HTTP cancellation,\n\t\t// or the explicit waitForExecutionEnvironment cause) into one sentinel\n\t\t// that handleTask can classify as a retryable platform timeout.\n\t\ttaskResult = TaskResult{}\n\t\treturnErr = fmt.Errorf(\"%w after %s\", errTaskPrepareTimeout, prepareTimeout)\n\t}()\n\n\t// task.Repos is the authoritative repo list for this task — when the\n\t// claimed task belongs to a project with github_repo resources the server\n\t// has already narrowed it to project repos only. Make sure those URLs are\n\t// in the per-workspace allowlist and the local cache, otherwise\n\t// `multica repo checkout` would reject project-only URLs that aren't also\n\t// bound at the workspace level.\n\td.registerTaskRepos(task.WorkspaceID, task.ID, task.Repos)\n\tdefer d.clearTaskRepoRefs(task.WorkspaceID, task.ID)\n\n\tentry, ok := d.agents()[provider]\n\t// A custom runtime profile (MUL-3284) overrides the executable path: the\n\t// runtime's protocol_family is the provider (so agent.New still selects\n\t// the right backend), but the actual binary on PATH is the profile's\n\t// command_name, resolved at registration time and keyed by RuntimeID here.\n\t// Critically, a custom runtime can live on a host that has NO built-in\n\t// agent of the same provider installed, so when the runtime is custom we","sourceCodeStart":6081,"sourceCodeEnd":6117,"githubUrl":"https://github.com/multica-ai/multica/blob/2c0912b6ec764b373d44eeea1e80f0d9f11ab417/server/internal/daemon/daemon.go#L6081-L6117","documentation":"Error \"%w after %s\" thrown in multica-ai/multica.","triggerScenarios":"Thrown at server/internal/daemon/daemon.go:6099 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Inspect the wrapped error and the timing context for the failing operation."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"2c0912b6ec764b373d44eeea1e80f0d9f11ab417","analyzedAt":"2026-08-15T13:25:18.241Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}