const transitions = new Map([['DRAFT:submit:component_owner', 'SUBMITTED'], ['SUBMITTED:verify:validator', 'VERIFIED'], ['VERIFIED:approve:integration_approver', 'APPROVED'], ['APPROVED:publish:release_manager', 'PUBLISHED']]);
export function transition(input) {
  const current = String(input.current_state).toUpperCase();
  if (['verify', 'approve', 'publish'].includes(input.action) && Number(input.evidence_count ?? 0) < 1) return { accepted: false, state: current, reason: 'evidence_required' };
  const key = [current, input.action, input.actor_role].join(':');
  const state = transitions.get(key);
  return state ? { accepted: true, previous_state: current, state, audit_event: [key, state].join(':') } : { accepted: false, state: current, reason: 'transition_not_allowed' };
}
