Skip to content

[ci] CI の隔離の probe が UNVERIFIED・判定なしでも job が success になる #680

Open

Description

@Kewton

背景

#677(PR #679)で、CI の commandagent-guardrails の job は dev.tty.legacy_tiocsti=1 を設定してから試験を流すようになりました。隔離の probe の判定は COMMANDAGENT_PROBE_VERDICT_FILE に書かれ、Report isolation probe verdicts の step で表示されます。PR #679 の CI では、すべての判定が BLOCKED でした(issue667/tiocsti: blocked; legacy_tiocsti=1)。

ただし、この step は UNVERIFIED の行やファイルの欠落を ::warning:: にするだけで、job を落としません(.github/workflows/ci.yml:77 の「This step never fails the job」)。warning は PR の画面で見落としやすく、CI が green のまま「拒否を測れていない」状態に戻りえます。

GitHub の ubuntu-latest は 2026-10-19 から Ubuntu 26 に移ります。新しい image でも sysctl が書けるかは確かめていません。書けなければ TIOCSTI の probe は UNVERIFIED になりますが、今の形では気づけません。
関連:#667、#677

問題

根拠(develop 7c969603)

  • .github/workflows/ci.yml:59〜:65:sudo sysctl -w dev.tty.legacy_tiocsti=1(失敗しても job を落とさない)。
  • .github/workflows/ci.yml:70〜:91:判定の表示。UNVERIFIED と欠落は ::warning:: だけで exit 0。

対処の方向

  1. Report isolation probe verdicts の step で、UNVERIFIED の行が 1 行でもあるとき、またはファイルが無い・空のときは、::error:: を出して job を失敗にする。BLOCKED などの判定だけなら今までどおり成功にする。
  2. 失敗にするのは CI の step だけにする。試験の判定(record_unverified など)や、手元の cargo test の挙動は変えない。
  3. runner の image が sysctl を受け付けなくなったときは、失敗の message に「dev.tty.legacy_tiocsti を設定できなかった」ことと、その時の sysctl の値が分かるようにする(前の step のログを参照する形でよい)。
  4. 将来、正当な理由で UNVERIFIED を許す必要が出たときは、この Issue の範囲では仕組みを入れず、その時に別の Issue で決める(黙って許す仕組みを先に作らない)。

受け入れ条件

  • step の判定を scripts/check-probe-verdicts.sh(新規)に切り出し、workflow はそれを呼ぶ。tests/probe_verdicts_script.rs(新規)の試験で、UNVERIFIED の行を含むファイル、空のファイル、ファイルなしの 3 つで script が 0 以外で終わり ::error:: を出すことを確かめる
  • 同じ試験で、BLOCKED だけのファイルでは script が 0 で終わることを確かめる
  • PR の CI で job が success(今の runner では全部 BLOCKED のため)
  • 試験の判定・期待、手元の cargo test の挙動を変えていない。検証のゲートを緩めていない

対象ファイル

  • .github/workflows/ci.yml
  • scripts/check-probe-verdicts.sh(新規)
  • tests/probe_verdicts_script.rs(新規)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions