#!/usr/bin/env bash set -euo pipefail usage() { printf '%s\n' \ 'usage:' \ ' finalize-task-policy.sh pair official-review ' \ ' build-route-basis: local-fit | capability-gap | grade-boundary' >&2 exit 2 } script_dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd) formatter="$script_dir/finalize-task-route.sh" field() { local output=$1 local key=$2 local value value=$(sed -n "s/^${key}=//p" <<<"$output") if [[ -z "$value" ]]; then printf 'missing formatter field: %s\n' "$key" >&2 exit 3 fi printf '%s\n' "$value" } finalize_build() { local route_basis=$1 shift local scores=("$@") local lane local route case "$route_basis" in local-fit) lane=local ;; capability-gap|grade-boundary) lane=cloud ;; *) usage ;; esac route=$("$formatter" build "$lane" "${scores[@]}") BUILD_ROUTE_BASIS=$route_basis BUILD_LANE=$(field "$route" lane) BUILD_GRADE=$(field "$route" grade) BUILD_FILENAME=$(field "$route" filename) if [[ "$route_basis" == local-fit && ( "$BUILD_GRADE" == G09 || "$BUILD_GRADE" == G10 ) ]]; then printf 'local-fit is valid only for G01-G08\n' >&2 exit 2 fi if [[ "$route_basis" == grade-boundary && "$BUILD_GRADE" != G09 && "$BUILD_GRADE" != G10 ]]; then printf 'grade-boundary is valid only for G09-G10\n' >&2 exit 2 fi } finalize_review() { local route_basis=$1 shift local scores=("$@") local route [[ "$route_basis" == official-review ]] || usage route=$("$formatter" review cloud "${scores[@]}") REVIEW_ROUTE_BASIS=$route_basis REVIEW_LANE=$(field "$route" lane) REVIEW_GRADE=$(field "$route" grade) REVIEW_FILENAME=$(field "$route" filename) REVIEW_ADAPTER=codex REVIEW_MODEL=gpt-5.6-sol REVIEW_REASONING_EFFORT=xhigh } emit_build() { printf 'build_route_basis=%s\n' "$BUILD_ROUTE_BASIS" printf 'build_risk_triggered=%s\n' "$BUILD_RISK_TRIGGERED" printf 'build_lane=%s\n' "$BUILD_LANE" printf 'build_grade=%s\n' "$BUILD_GRADE" printf 'build_filename=%s\n' "$BUILD_FILENAME" } emit_review() { printf 'review_route_basis=%s\n' "$REVIEW_ROUTE_BASIS" printf 'review_lane=%s\n' "$REVIEW_LANE" printf 'review_grade=%s\n' "$REVIEW_GRADE" printf 'review_filename=%s\n' "$REVIEW_FILENAME" printf 'review_adapter=%s\n' "$REVIEW_ADAPTER" printf 'review_model=%s\n' "$REVIEW_MODEL" printf 'review_reasoning_effort=%s\n' "$REVIEW_REASONING_EFFORT" } mode=${1:-} [[ "$mode" == pair && $# -eq 14 ]] || usage case "$3" in true|false) BUILD_RISK_TRIGGERED=$3 ;; *) usage ;; esac finalize_build "$2" "${@:4:5}" finalize_review "$9" "${@:10:5}" printf 'finalizer=finalize-task-policy.sh\n' printf 'finalizer_mode=%s\n' "$mode" emit_build emit_review