multica-ai/multica · error

resolve issue: %w

Error message

resolve issue: %w

What it means

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.

Source

Thrown at server/cmd/multica/cmd_property.go:589

	headers := []string{"NAME", "VALUE", "TYPE"}
	tableRows := make([][]string, len(rows))
	for i, row := range rows {
		tableRows[i] = []string{row.Name, row.Display, row.Type}
	}
	cli.PrintTable(os.Stdout, headers, tableRows)
}

func runIssuePropertyList(cmd *cobra.Command, args []string) error {
	client, err := newAPIClient(cmd)
	if err != nil {
		return err
	}
	ctx, cancel := cli.APIContext(context.Background())
	defer cancel()

	issueRef, err := resolveIssueRef(ctx, client, args[0])
	if err != nil {
		return fmt.Errorf("resolve issue: %w", err)
	}
	properties, err := fetchProperties(ctx, client)
	if err != nil {
		return err
	}
	bag, err := fetchIssuePropertyBag(ctx, client, issueRef.ID)
	if err != nil {
		return err
	}
	rows := buildIssuePropertyRows(properties, bag)
	output, _ := cmd.Flags().GetString("output")
	if output == "json" {
		return cli.PrintJSON(os.Stdout, rows)
	}
	printIssuePropertyRows(rows)
	return nil
}

View on GitHub (pinned to 2c0912b6ec)

Solutions

  1. Run `multica issue list` and copy the exact identifier shown for the target issue.
  2. Check the wrapped error text — it usually states whether the ref was not found or was ambiguous; disambiguate with the full key/ID.
  3. Update scripts to resolve issues dynamically rather than caching old refs.

Example fix

// before
multica issue property list ISS-99
// error: resolve issue: ...

// after
multica issue list
multica issue property list <exact-key-or-id>
Defensive patterns

Strategy: validation

Validate before calling

# bash: resolve the issue first and fail with a clear message
ISSUE_ID=$(multica issue list --output json | jq -r --arg k "$KEY" '.[] | select(.key==$k) | .id')
[ -n "$ISSUE_ID" ] || { echo "issue $KEY not found" >&2; exit 1; }

Type guard

func issueRefResolves(ctx context.Context, c *cli.APIClient, ref string) bool {
    _, err := resolveIssueRef(ctx, c, ref)
    return err == nil
}

Prevention

When it happens

Trigger: 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.

Common situations: 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.

Related errors


AI-assisted analysis of multica-ai/multica@2c0912b6ec (2026-08-15). Data as JSON: /api/errors/5af4ef3e0c73080a. Report an issue: GitHub.