{"record":{"id":"5af4ef3e0c73080a","repo":"multica-ai/multica","slug":"resolve-issue-w-5af4ef","errorCode":null,"errorMessage":"resolve issue: %w","messagePattern":"resolve issue: %w","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/cmd/multica/cmd_property.go","lineNumber":589,"sourceCode":"\theaders := []string{\"NAME\", \"VALUE\", \"TYPE\"}\n\ttableRows := make([][]string, len(rows))\n\tfor i, row := range rows {\n\t\ttableRows[i] = []string{row.Name, row.Display, row.Type}\n\t}\n\tcli.PrintTable(os.Stdout, headers, tableRows)\n}\n\nfunc runIssuePropertyList(cmd *cobra.Command, args []string) error {\n\tclient, err := newAPIClient(cmd)\n\tif err != nil {\n\t\treturn err\n\t}\n\tctx, cancel := cli.APIContext(context.Background())\n\tdefer cancel()\n\n\tissueRef, err := resolveIssueRef(ctx, client, args[0])\n\tif err != nil {\n\t\treturn fmt.Errorf(\"resolve issue: %w\", err)\n\t}\n\tproperties, err := fetchProperties(ctx, client)\n\tif err != nil {\n\t\treturn err\n\t}\n\tbag, err := fetchIssuePropertyBag(ctx, client, issueRef.ID)\n\tif err != nil {\n\t\treturn err\n\t}\n\trows := buildIssuePropertyRows(properties, bag)\n\toutput, _ := cmd.Flags().GetString(\"output\")\n\tif output == \"json\" {\n\t\treturn cli.PrintJSON(os.Stdout, rows)\n\t}\n\tprintIssuePropertyRows(rows)\n\treturn nil\n}\n","sourceCodeStart":571,"sourceCodeEnd":607,"githubUrl":"https://github.com/multica-ai/multica/blob/2c0912b6ec764b373d44eeea1e80f0d9f11ab417/server/cmd/multica/cmd_property.go#L571-L607","documentation":"Returned by `runIssuePropertyList` when `resolveIssueRef` fails to turn the positional argument into a concrete issue ID (bad pattern, no match, or ambiguous match). This fails before any property fetching, so it is always an input-resolution problem, not a property problem.","triggerScenarios":"Passing an issue ref that matches no issue (typo, deleted issue), an identifier in a format `resolveIssueRef` does not accept, or a ref that resolves ambiguously across the workspace.","commonSituations":"Hard-coded issue keys in scripts that break after issues are archived/deleted; typos in interactive use; copy-pasting a URL fragment instead of the expected key format.","solutions":["Run `multica issue list` and copy the exact identifier shown for the target issue.","Check the wrapped error text — it usually states whether the ref was not found or was ambiguous; disambiguate with the full key/ID.","Update scripts to resolve issues dynamically rather than caching old refs."],"exampleFix":"// before\nmultica issue property list ISS-99\n// error: resolve issue: ...\n\n// after\nmultica issue list\nmultica issue property list <exact-key-or-id>","handlingStrategy":"validation","validationCode":"# bash: resolve the issue first and fail with a clear message\nISSUE_ID=$(multica issue list --output json | jq -r --arg k \"$KEY\" '.[] | select(.key==$k) | .id')\n[ -n \"$ISSUE_ID\" ] || { echo \"issue $KEY not found\" >&2; exit 1; }","typeGuard":"func issueRefResolves(ctx context.Context, c *cli.APIClient, ref string) bool {\n    _, err := resolveIssueRef(ctx, c, ref)\n    return err == nil\n}","tryCatchPattern":null,"preventionTips":["Take issue identifiers from `multica issue list`, not from memory or URLs.","Re-resolve refs at the start of each automation run instead of caching them."],"tags":["go","cli","validation","issue","ref-resolution"],"backgroundTag":null,"analyzedSha":"2c0912b6ec764b373d44eeea1e80f0d9f11ab417","analyzedAt":"2026-08-15T13:25:18.241Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}