{"record":{"id":"7037d044835b30de","repo":"multica-ai/multica","slug":"issue-ref-q-looks-like-a-short-uuid-prefix-short","errorCode":null,"errorMessage":"issue ref %q looks like a short UUID prefix; short prefixes are no longer supported for issues. Use the issue key (e.g. MUL-123) shown by `multica issue list`, or pass the full UUID (run a list command with --full-id to copy it)","messagePattern":"issue ref %q looks like a short UUID prefix; short prefixes are no longer supported for issues\\. Use the issue key \\(e\\.g\\. MUL-123\\) shown by `multica issue list`, or pass the full UUID \\(run a list command with --full-id to copy it\\)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/cmd/multica/cmd_id_resolver.go","lineNumber":162,"sourceCode":"func resolveIssueRef(ctx context.Context, client *cli.APIClient, input string) (resolvedID, error) {\n\ttrimmed := strings.TrimSpace(input)\n\tif trimmed == \"\" {\n\t\treturn resolvedID{}, fmt.Errorf(\"issue id is required\")\n\t}\n\n\tif looksLikeIssueIdentifier(trimmed) {\n\t\treturn fetchIssueRef(ctx, client, trimmed)\n\t}\n\tif uuidRegexp.MatchString(trimmed) {\n\t\treturn fetchIssueRef(ctx, client, trimmed)\n\t}\n\n\t// Detect the common \"I copied a truncated UUID\" case and give a\n\t// tailored hint. normalizeUUIDPrefix succeeds for any input that is\n\t// ≥4 hex chars (after stripping dashes), which matches what the old\n\t// resolver used to accept as a prefix.\n\tif _, err := normalizeUUIDPrefix(trimmed); err == nil {\n\t\treturn resolvedID{}, fmt.Errorf(\n\t\t\t\"issue ref %q looks like a short UUID prefix; short prefixes are no longer supported for issues. \"+\n\t\t\t\t\"Use the issue key (e.g. MUL-123) shown by `multica issue list`, or pass the full UUID (run a list command with --full-id to copy it)\",\n\t\t\tinput,\n\t\t)\n\t}\n\treturn resolvedID{}, fmt.Errorf(\n\t\t\"issue ref %q is not a recognized issue reference; use the issue key (e.g. MUL-123) shown by `multica issue list`, or pass the full UUID\",\n\t\tinput,\n\t)\n}\n\nfunc fetchIssueRef(ctx context.Context, client *cli.APIClient, ref string) (resolvedID, error) {\n\tvar issue map[string]any\n\tif err := client.GetJSON(ctx, \"/api/issues/\"+url.PathEscape(ref), &issue); err != nil {\n\t\treturn resolvedID{}, err\n\t}\n\tc := issueCandidate(issue)\n\tif c.Display == \"\" {","sourceCodeStart":144,"sourceCodeEnd":180,"githubUrl":"https://github.com/multica-ai/multica/blob/2c0912b6ec764b373d44eeea1e80f0d9f11ab417/server/cmd/multica/cmd_id_resolver.go#L144-L180","documentation":"Returned by resolveIssueRef when the input normalizes as a short UUID prefix (>= 4 hex chars after dash-stripping) but is neither an issue key nor a full UUID. Short prefixes for issues were deliberately removed: resolving them required client-side paging of the entire issue list, causing 14–35s timeouts on large workspaces (GH #4701). The message offers the two supported alternatives.","triggerScenarios":"Passing a truncated issue UUID like \"1881abcd\" or \"1881\" to any issue command. normalizeUUIDPrefix succeeds on it (hex, >= 4 chars), so the tailored hint fires instead of the generic unrecognized-reference error.","commonSituations":"Users who relied on short issue prefixes in older CLI versions after upgrading; copying a truncated UUID from log output or a trimmed table; muscle memory from other resources (labels, projects) that still accept prefixes.","solutions":["Use the issue key (e.g. MUL-123) shown by multica issue list","Or pass the full UUID — run multica issue list --full-id to copy it","Update any scripts still passing truncated issue UUIDs to use keys or full UUIDs"],"exampleFix":"# before\nmultica issue show 1881abcd\n# error: issue ref \"1881abcd\" looks like a short UUID prefix; ...\n\n# after\nmultica issue show MUL-1852\n# or\nmultica issue list --full-id && multica issue show 1881abcd3e-...-full-uuid","handlingStrategy":"type-guard","validationCode":"// isShortUUIDPrefix reports whether input would be rejected as an issue\n// short prefix (hex, >= 4 chars, but not a full UUID or issue key).\nfunc isShortUUIDPrefix(input string) bool {\n    t := strings.TrimSpace(input)\n    if isFullUUID(t) || looksLikeIssueKey(t) {\n        return false\n    }\n    _, err := normalizeUUIDPrefix(t)\n    return err == nil\n}","typeGuard":"// IssueRefOK narrows an input to the two accepted issue reference forms.\nfunc IssueRefOK(input string) bool {\n    t := strings.TrimSpace(input)\n    return looksLikeIssueIdentifier(t) || uuidRegexp.MatchString(t)\n}","tryCatchPattern":null,"preventionTips":["Never rely on short prefixes for issues — upgrade-era scripts are the main source of this error","Extract issue keys from issue list output rather than truncating UUIDs"],"tags":["cli","issues","id-resolution","breaking-change","uuid"],"backgroundTag":null,"analyzedSha":"2c0912b6ec764b373d44eeea1e80f0d9f11ab417","analyzedAt":"2026-08-15T13:25:18.241Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}