レポート仕様 v1 · リリースワークフロー

ターミナル性能を、主張の安全性を守るリリース成果物へ。

バージョン付きJSONベンチマークを実行して主張を検証し、比較前にペアごとの適格性を確認できます。

TerminalBenchを試す

記録するのはプロセスとPTYの観測境界です。画面上のピクセルや、物理キー押下から表示までの遅延ではありません。

最初のコマンド

bin/tbench run --output results/report-a.json

登録済み計測 · プロファイル v1.0.0

主張境界を示す抜粋
{
  "classification": "proxy",
  "scope": "pty-output-pipeline",
  "observed_boundary":
    "fixture-write-start-to-producer-exit",
  "limitations": [
    "Measures producer-side PTY write completion; terminal parsing, final-frame presentation, and frame skipping are not observed."
  ],
  "excluded_claims": [
    "On-screen rendering throughput"
  ]
}

登録済み計測の抜粋には、観測境界と対象外の主張が含まれます。

ベンチマークは、その主張がゲートを通過して初めて役立ちます。

TerminalBenchは各実行をバージョン付きJSONとして記録します。バリデーターは各指標が主張できる範囲を検証し、適格性ゲートが2つのレポートを比較へ進められるか判定します。

安全な手順

実行。検証。適格性確認。その後に比較。

  1. 01 / 実行

    観測結果を記録する

    各ターミナルエミュレーター内でTerminalBenchを実行します。各レポートには、環境、手法、観測境界、制約、対象外の主張が記録されます。

    bin/tbench run --output results/report-a.json
  2. 02 / 検証

    安全でないレポートを拒否する

    両方のJSONファイルを検証します。構造だけでは不十分です。意味的検証により、登録済みプロファイル、数値の不変条件、主張の境界を強制します。

    bin/tbench-validate validate results/report-a.json
    bin/tbench-validate validate results/report-b.json
  3. 03 / 適格性確認

    ペアを比較へ進められるか判定する

    ペアごとのゲートが、計測とワークロードの同一性、必須の既知制御条件を確認します。判定は3種類です。不明な値をワイルドカードとして扱うことはありません。

    bin/tbench-validate compare results/report-a.json results/report-b.json
  4. 04 / 比較

    COMPARABLEの後にだけ値を提示する

    コンパレーターはMarkdownテーブル、または--format htmlで自己完結型のチャートレポート(--baselineで基準を選べるベースライン比オーバービュー、中央値と方向考慮型competition rankを示すResults at a glanceテーブル(中央値が完全に同値なら同順位)、指標別dot-and-intervalチャート(サンプルありではbootstrap 95% CI、なしでは中央値からp95までのwhisker)、勝敗集計)として値を提示します。検証や適格性判定の代わりにはなりません。

    bin/tbench compare results/report-a.json results/report-b.json --format html

NOT_COMPARABLEまたはUNDETERMINEDの場合は、最後のコマンドを実行する前に停止してください。

クイックスタート

最初のレポートを作成する。

まず、TerminalBenchリポジトリをクローンするか開き、リポジトリルートへ移動します。

リポジトリルートで次を実行します。

bin/tbench run --output results/report-a.json

ランナーは自己完結の単一Rustバイナリです。bin/tbenchが初回利用時にビルドするため、Rustツールチェーン(cargo)はビルド時のみ必要です。検証、適格性確認、値の比較も同じバイナリに内蔵されています。ターミナル向け計測には制御端末が必要です。未対応のコンテキストでは、文書どおりに警告、スキップ、または精度低下が発生します。

安全な比較手順をすべて表示
set -e

# Run once inside each terminal emulator.
bin/tbench run --output results/report-a.json &&
bin/tbench run --output results/report-b.json &&

# Validate both reports, then require COMPARABLE.
bin/tbench-validate validate results/report-a.json &&
bin/tbench-validate validate results/report-b.json &&
bin/tbench-validate compare results/report-a.json results/report-b.json &&

# Present values only after the gate exits 0.
bin/tbench compare results/report-a.json results/report-b.json

NOT_COMPARABLE(終了コード7)またはUNDETERMINED(終了コード8)で停止します。

ペアごとの適格性

3つの判定。推測による同一視はしません。

ゲートが決めるのは比較の可否です。勝者は計算しません。

COMPARABLE

終了コード0

両レポートが適合し、必須の既知制御条件と計測契約がv1のペア比較ルールを満たしています。

NOT_COMPARABLE

終了コード7

既知の不一致により比較できません。理由をレポートとともに保持し、勝者を提示しないでください。

UNDETERMINED

終了コード8

決定的な事実またはワークロードの同一性が不明です。不足しているコンテキストを収集してください。不明は「同じ」を意味しません。

主張の境界

レポートが境界を保持し、バリデーターが強制します。

レポートが主張できること

レンダリングスループットについて、登録済みプロキシはフィクスチャの書き込み開始からプロデューサーの終了までを観測します。レポートは、そのスコープ、制約、対象外の主張を保持します。

{
  "classification": "proxy",
  "scope": "pty-output-pipeline",
  "observed_boundary":
    "fixture-write-start-to-producer-exit",
  "excluded_claims": [
    "On-screen rendering throughput"
  ]
}

バリデーターが拒否すること

同じプロキシを画面への直接提示としてラベル付けし直すと、安定したルールID、JSON Pointer、期待値、実際の値、修正方法を示してフェイルクローズになります。

{
  "rule_id": "TBV-CLAIM-BOUNDARY",
  "pointer": "/results/0/measurement/observed_boundary",
  "expected": "fixture-write-start-to-producer-exit",
  "actual": "final-frame-presented-to-display",
  "remediation": "Copy the immutable profile field exactly;
    choose a different profile for different semantics."
}

スキーマは構造を確認します。意味的バリデーターは、適合性と主張の安全性を判定します。

安定したプロセス結果

すべての停止に明示的な終了コードがあります。

終了ステータスを使い、未対応の比較結果が提示段階へ到達する前に自動処理を停止できます。

終了コード意味
0適合またはCOMPARABLE
2使用方法エラー
3I/O、UTF-8、strict JSON、または重複キーのエラー
4適合性または主張の安全性の検証失敗
5未対応のワイヤーバージョン
6未対応のプロファイルIDまたはバージョン
7NOT_COMPARABLE
8UNDETERMINED

v1が立証すること、しないこと

適合性は具体的に。信頼の範囲は限定的に。

適合するv1レポートが立証すること

  • レポートが必須のワイヤー構造に従っている。
  • 指標プロファイルが登録済みの手法、スコープ、制約、対象外項目を保持している。
  • 意味的バリデーターが不変条件と主張の境界を受理している。

そのレポートが立証しないこと

  • 計測の絶対的な正確性
  • 画面上のレンダリングまたはフレーム提示
  • 物理キー押下から表示までの遅延
  • すべてのマシンや環境における再現性
  • 独立した中立性、外部での採用、市場でのリーダーシップ
  • 適格性ゲートがCOMPARABLEを返す前のペア比較可能性

TerminalBenchはレポートと比較可能性のためのプロトコルであり、最速ターミナルのランキングではありません。

よくある質問

最初の実行前に確認しておきたいこと。

TerminalBenchは何を計測しますか?

シェルプロセスの時間と、PTY出力、合成PTYエコー、プロセスリソースに対するターミナルエミュレーターのプロキシまたはサンプリング観測を記録します。v1の各指標には、手法、スコープ、観測境界、制約、対象外の主張が記載されます。

画面に表示される内容を計測しますか?

いいえ。プロデューサー側のPTY完了では、ターミナル解析、最終フレーム提示、ピクセル、フレームスキップを観測しません。renderとscrollのプロファイルは画面上の主張を対象外とします。

input.latencyは物理キー押下を計測しますか?

いいえ。合成PTYエコーの往復を計測します。キーボード、GUIイベントルーティング、レンダリング、ディスプレイ提示、物理キー押下から表示までの遅延は対象外です。

どの2つのレポートでも比較できますか?

いいえ。両方のレポートを検証してから、ペアごとの適格性ゲートを実行してください。COMPARABLEが返された後にだけ値を比較します。既知の不一致はNOT_COMPARABLE、決定的なコンテキストの不足はUNDETERMINEDを返します。

最速ターミナルのランキングですか?

いいえ。このプロトコルは範囲を限定した観測を記録し、ペアごとの適格性を判定します。ランキングを運用したり、普遍的な勝者を認定したりはしません。

環境情報が不足している場合はどうなりますか?

レポートは必須の事実を既知または不明として記録します。既知の不一致がすでにペアを拒否しておらず、決定的な事実が不明なままの場合、適格性はUNDETERMINEDです。プラットフォームから検出できない場合、CIから文書化された安定制御条件を提供できます。

最初の実行には何が必要ですか?

初回のみRustツールチェーン(cargo)で単一の自己完結バイナリをビルドします。以降のランタイム依存はありません。ターミナル向けシナリオには制御端末、input latencyには利用可能なPTYが必要です。

Terminal-BenchというAIエージェント向けベンチマークですか?

いいえ。このプロジェクトは、ターミナルエミュレーター性能のレポートと比較可能性のためのプロトコルです。