/**
 * AttemptRecord — evidence-driven attempt tracking.
 *
 * Each attempt captures full context: runtime, tokens, evidence results,
 * changed files, and failure diagnosis for retry strategy selection.
 */
export function createAttemptId(nodeId, attempt) {
    return `${nodeId}__${attempt}`;
}
export function hashContent(content) {
    let h = 0;
    for (let i = 0; i < content.length; i++) {
        h = ((h << 5) - h + content.charCodeAt(i)) | 0;
    }
    return Math.abs(h).toString(36);
}
