package run

import (
	"fmt"
	"strings"
)

func workItemFailurePath(item *WorkItemState, candidateLabel string) string {
	key := strings.TrimSpace(item.Key)
	if key == "" {
		key = "?"
	}
	return fmt.Sprintf("work_item %s (%s)", key, strings.TrimSpace(candidateLabel))
}

// workItemFailurePathFromRef builds a stable bounded path label identifying the
// failing dynamic WorkItem from its ScopeRef lineage (item key/index) so the
// fallback/inherited fan-out failure can pinpoint the exact item.
func workItemFailurePathFromRef(reference ScopeRef) string {
	key := strings.TrimSpace(reference.ItemKey)
	if key == "" {
		key = "?"
	}
	if reference.ItemIndex != nil {
		return fmt.Sprintf("work_item %s (%d)", key, *reference.ItemIndex)
	}
	return fmt.Sprintf("work_item %s", key)
}
