#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "$0")/../.." && pwd)" TS="$(date +%F_%H%M%S)" OUT_DIR="${ROOT_DIR}/review/outputs" mkdir -p "${OUT_DIR}" OUT_FILE="${OUT_DIR}/tok007_release_recheck_${TS}.md" LOG_FILE="${ROOT_DIR}/reports/gates/tok007_release_recheck_${TS}.log" log() { echo "$1" | tee -a "${LOG_FILE}" } latest_file_or_empty() { local pattern="$1" local latest latest="$(ls -1t ${pattern} 2>/dev/null | head -n 1 || true)" echo "${latest}" } extract_md_checkbox_conclusion() { local file="$1" local go="0" local cgo="0" local nogo="0" if [[ ! -f "${file}" ]]; then echo "UNKNOWN" return fi grep -Eq '^- \[x\] (通过|GO)' "${file}" && go="1" || true grep -Eq '^- \[x\] (有条件通过|CONDITIONAL GO)' "${file}" && cgo="1" || true grep -Eq '^- \[x\] (不通过|NO-GO)' "${file}" && nogo="1" || true if [[ "${go}" == "1" ]]; then echo "GO" return fi if [[ "${cgo}" == "1" ]]; then echo "CONDITIONAL_GO" return fi if [[ "${nogo}" == "1" ]]; then echo "NO_GO" return fi echo "UNKNOWN" } extract_bold_decision() { local file="$1" if [[ ! -f "${file}" ]]; then echo "UNKNOWN" return fi local row row="$(grep -E '^- (决策|判定):\*\*' "${file}" | head -n 1 || true)" if [[ -z "${row}" ]]; then echo "UNKNOWN" return fi if echo "${row}" | grep -q 'NO_GO'; then echo "NO_GO" return fi if echo "${row}" | grep -q 'CONDITIONAL_GO'; then echo "CONDITIONAL_GO" return fi if echo "${row}" | grep -q 'GO'; then echo "GO" return fi echo "UNKNOWN" } extract_superpowers_decision() { local file="$1" extract_bold_decision "${file}" } extract_pass_fail_result() { local file="$1" if [[ ! -f "${file}" ]]; then echo "UNKNOWN" return fi if grep -Eq '^- 结果:\*\*PASS\*\*' "${file}"; then echo "PASS" return fi if grep -Eq '^- 结果:\*\*FAIL\*\*' "${file}"; then echo "FAIL" return fi echo "UNKNOWN" } TOK006_REPORT="$(latest_file_or_empty "${ROOT_DIR}/reports/gates/tok006_gate_bundle_*.md")" SP_REPORT="$(latest_file_or_empty "${ROOT_DIR}/reports/gates/superpowers_stage_validation_*.md")" TOK_RUNTIME_READINESS_REPORT="$(latest_file_or_empty "${ROOT_DIR}/reports/gates/token_runtime_readiness_*.md")" SUP_REVIEW_REPORT="${ROOT_DIR}/reports/supply_gate_review_2026-03-31.md" FINAL_DECISION_REPORT="${ROOT_DIR}/review/final_decision_2026-03-31.md" TOK006_DECISION="$(extract_bold_decision "${TOK006_REPORT}")" SP_DECISION="$(extract_superpowers_decision "${SP_REPORT}")" TOK_RUNTIME_READINESS_RESULT="$(extract_pass_fail_result "${TOK_RUNTIME_READINESS_REPORT}")" SUP_DECISION="$(extract_md_checkbox_conclusion "${SUP_REVIEW_REPORT}")" FINAL_DECISION_CURRENT="$(extract_md_checkbox_conclusion "${FINAL_DECISION_REPORT}")" has_unknown=0 if [[ "${TOK006_DECISION}" == "UNKNOWN" || "${SP_DECISION}" == "UNKNOWN" || "${TOK_RUNTIME_READINESS_RESULT}" == "UNKNOWN" || "${SUP_DECISION}" == "UNKNOWN" ]]; then has_unknown=1 fi DECISION="CONDITIONAL_GO" DECISION_REASON="all available checks are non-failing but at least one source is conditional/mock/deferred" if [[ "${TOK006_DECISION}" == "NO_GO" || "${SP_DECISION}" == "NO_GO" || "${TOK_RUNTIME_READINESS_RESULT}" == "FAIL" || "${SUP_DECISION}" == "NO_GO" ]]; then DECISION="NO_GO" DECISION_REASON="at least one upstream gate is NO_GO" elif [[ "${TOK006_DECISION}" == "GO" && "${SP_DECISION}" == "GO" && "${TOK_RUNTIME_READINESS_RESULT}" == "PASS" && "${SUP_DECISION}" == "GO" ]]; then DECISION="GO" DECISION_REASON="all upstream gates report GO" elif [[ "${has_unknown}" -eq 1 ]]; then DECISION="NO_GO" DECISION_REASON="missing/unknown upstream decision source" fi RECOMMEND_ACTION_1="补齐真实 staging 参数后执行 scripts/supply-gate/staging_precheck_and_run.sh" RECOMMEND_ACTION_2="重跑 scripts/ci/superpowers_stage_validate.sh 并确认 PHASE-07=PASS" RECOMMEND_ACTION_3="更新 reports/supply_gate_review_2026-03-31.md 与 review/final_decision_2026-03-31.md 签署页" cat > "${OUT_FILE}" <