Merge pull request 'fix/codex-model-gate' (#48) from fix/codex-model-gate into develop
Reviewed-on: #48
This commit was merged in pull request #48.
This commit is contained in:
@@ -760,6 +760,46 @@ if [ "$action" = smoke ]; then
|
||||
smoke_one sdlc-gate.sh "wp-check prompt"
|
||||
smoke_one sdlc-gate.sh "wp-check skill"
|
||||
|
||||
smoke_model_case() { # $1=情境 $2=來源模式 $3=預期來源片段
|
||||
_name="$1"; _mode="$2"; _want="$3"
|
||||
_home=$(mktemp -d 2>/dev/null) || {
|
||||
smoke_fails=$((smoke_fails + 1))
|
||||
printf '[jsc] sdlc-gate.sh model:建不出暫存目錄,模型來源判定沒驗到。\n' >> "$smoke_out"
|
||||
return
|
||||
}
|
||||
mkdir -p "$_home/sessions" "$_home/codex/sessions/2026/08/28" 2>/dev/null
|
||||
printf 'stage\tplan\treasoning-max\nmodel\tgpt-5.x\treasoning-max,reasoning-high,coding\nmodel\tgpt-5.x-mini\tcoding,fast,cheap\n' > "$_home/model-tags.tsv"
|
||||
_tp="$_home/transcript.jsonl"
|
||||
_cf="$_home/codex/sessions/2026/08/28/rollout-2026-08-28T00-00-00-smoke-model.jsonl"
|
||||
printf '{"type":"assistant","model":"gpt-5.x"}\n' > "$_tp"
|
||||
printf '{"type":"turn_context","payload":{"model":"gpt-5.x"}}\n' > "$_cf"
|
||||
case "$_mode" in
|
||||
transcript) _json='{"transcript_path":"'"$_tp"'","session_id":"smoke-model"}'; _env="" ;;
|
||||
codex) _json='{"session_id":"smoke-model"}'; _env="" ;;
|
||||
stdin) _json='{"model":"gpt-5.x","session_id":"smoke-model-stdin"}'; _env="" ;;
|
||||
override) _json='{"session_id":"smoke-model-override"}'; _env="JSC_MODEL=gpt-5.x" ;;
|
||||
esac
|
||||
if [ "$_mode" = override ]; then
|
||||
_out=$(printf '%s' "$_json" | JSC_HOME="$_home" CODEX_HOME="$_home/codex" JSC_CLI="$cli" JSC_MODEL="gpt-5.x" sh "$HOOKS/sdlc-gate.sh" lock plan 2>&1); _rc=$?
|
||||
else
|
||||
_out=$(printf '%s' "$_json" | JSC_HOME="$_home" CODEX_HOME="$_home/codex" JSC_CLI="$cli" sh "$HOOKS/sdlc-gate.sh" lock plan 2>&1); _rc=$?
|
||||
fi
|
||||
_rep=$(JSC_HOME="$_home" CODEX_HOME="$_home/codex" JSC_CLI="$cli" \
|
||||
sh "$HOOKS/sdlc-gate.sh" report </dev/null 2>/dev/null)
|
||||
if [ "$_rc" -eq 0 ] && printf '%s\n%s' "$_out" "$_rep" | grep -qF "$_want"; then
|
||||
printf '[jsc] sdlc-gate.sh model(%s):exit 0,來源含 %s,與預期相同。\n' "$_name" "$_want" >> "$smoke_out"
|
||||
else
|
||||
smoke_fails=$((smoke_fails + 1))
|
||||
printf '[jsc] sdlc-gate.sh model(%s):exit %s,來源未命中 %s,輸出:%s\n' \
|
||||
"$_name" "$_rc" "$_want" "$(printf '%s %s' "$_out" "$_rep" | tr '\n' ' ' | cut -c1-200)" >> "$smoke_out"
|
||||
fi
|
||||
rm -rf "$_home"
|
||||
}
|
||||
smoke_model_case "transcript 實查" transcript "transcript:"
|
||||
smoke_model_case "Codex session 記錄" codex "codex-session:"
|
||||
smoke_model_case "stdin model 欄位" stdin "hook-stdin"
|
||||
smoke_model_case "JSC_MODEL 人工覆寫" override "人工覆寫:JSC_MODEL"
|
||||
|
||||
# 工作包歸屬判定(wp-check 的第二段):上面兩支清空技能名,只走得到「沒有未結清 PR」與
|
||||
# 「取不到技能名」兩條捷徑,歸屬比對整段都沒跑到。這裡自備一份暫時的 $JSC_HOME 狀態檔,
|
||||
# 把每條判定路徑各跑一次,驗的是判定結果本身,不只是腳本跑得完。用暫時目錄是為了不動到
|
||||
|
||||
Reference in New Issue
Block a user