Contribution¶
Git と GitHub が system of record です。repository AGENTS.md を読み、該当 Issue を使用または
作成し、registered Issue-linked worktree だけで tracked change を作ります。通常変更は Pull Request
経由で main に入ります。
Verification¶
Quality CLI process lifetime¶
直接起動した quality CLI は、各チェックの処理が停止するまでプロセスを所有します。 Linux では既存の有限な Quality descendant owner を利用し、別セッションの子孫プロセスも回収します。新しい常駐監視処理や 子孫プロセス台帳は追加しません。Ctrl-C は後始末を要求し、子プロセスの回収後に 元の中断を伝えます。成功とは報告しません。通常の終了コード、ログ保持、 タイムアウト結果は維持します。親の通常終了後、共有の所有者は子孫の自然終了を 最大1秒待ちます(例: パイプの EOF に応答する Python forkserver の補助プロセス)。 中断時はこの待機を省略します。終了済みの子孫は回収し、待機後も稼働する子孫は 強制回収してコマンドをエラーとします。
終了シグナルの対象は、その実行が所有する正確な子プロセスだけです。 Linux の所有者による後始末は最大5秒、CLI の終了待ちは最大7秒、 所有者の強制終了後の回収待ちは最大2秒です。必要な機能や所有情報、 後始末の完了応答がない場合、成功や完全回収を主張せず containment error とします。 所有者自身への強制終了やカーネル障害は保証範囲外です。プロセス名による一括終了、 再試行、サービス、認証情報、リポジトリ削除の権限は与えません。 Linux 以外は既存のプロセスグループ/ツリーの範囲を中断時にも適用し、 終了コマンドと回収待ちをそれぞれ最大5秒に制限します。 Linux の別セッション回収保証を他のプラットフォームに適用しません。
後始末が未完了の場合はエラーを保存し、正確に所有していたプロセスを確認してから 検証を再実行します。無関係なプロセスへ終了対象を広げません。永続データの移行は不要で、 ロールバックは CLI の実行経路と共有所有者の終了判定を元に戻します。 回帰テストは実際の CLI 入口と SIGINT を使い、別セッションの PID が消えること、 無関係な sentinel が生存することを独立に確認します。通常成功、タイムアウト、 所有境界が利用できない場合も検証します。保持ログの管理は引き続き利用者が所有します。
python3 scripts/verification_policy.py で artifact を分類し、反復中は focused check を使います。
特定の test module を実行するには、repository-relative な test path を指定して focused profile を使います。例:
python3 scripts/quality_gate.py run --profile focused --test tests/test_docs.py
tests/ は import package ではないため、python3 -m unittest tests.test_docs のような
module invocation は使いません。focused profile は canonical な discovery-based test invocation を
維持します。
review-stable な code、configuration、packaging、installation contract、security、CI、test candidate は 次を実行します。
python3 scripts/quality_gate.py run --profile required
Python の code または test candidate を push する前に、--candidate-stage pre_push で
分類します。coverage owner の runtime と pinned quick validator が利用可能なら、coverage
report を含む CI-equivalent preflight を 1 回選択します。
python3 scripts/verification_policy.py \
--task-effect repository_change --artifact-class code --candidate-stage pre_push
python3 scripts/quality_gate.py run --profile ci --python python3.11
preflight が実行不能または失敗した場合は push せず、bounded handoff を解消します。local preflight の成功は hosted acceptance ではありません。
ci-capacity-insufficient では、失敗したジョブ自身の数値診断を保存します。
任意の cgroup_stat_bytes は匿名メモリ、ファイルキャッシュ、tmpfs の内訳を示し、
shmem はすでに file に含まれています。取得できない内訳は unavailable と表示します。
キャッシュを 6 GiB の容量条件から差し引いたり、後の待機時サンプルを失敗時の内訳として
扱ったりしないでください。
リポジトリの runner は cold cache の実測負荷を収めるため 9 GiB を確保し、登録前にも
同量の空きメモリを要求します。ジョブ内の 6 GiB 条件は維持します。既存サービスへの
適用は、別途承認された待機時の更新と、その後の hosted 検証で確認します。
merge には exact-head hosted validate が必要です。failed、skipped、stale、unavailable の場合は
新しい exact-head hosted run が成功するまで acceptance を block し、local result で代替しません。
Linux の Quality MCP は、別セッションを開始した子孫プロセスも終了・回収します。 タイムアウト、キャンセル、出力量超過、子孫を残したコマンド終了はエラーになります。 専用の一時領域は削除しますが、リポジトリ内のファイルは一括削除しません。 終了処理を開始できない、または完了できない場合はエラーを保存し、対象プロセスの状態を 確認してから再実行してください。他の OS は既存のプロセスツリー・グループ処理を維持します。 これはプロセスの終了管理であり、セキュリティサンドボックスではありません。
無人 RC 公開の事前判定¶
Issue #988 はリポジトリ所有の読み取り専用の日次判定を導入します。
実行は python3 scripts/rc_window.py --input observation.json です。
入力は現在の activation と独立した設定、専用 runner の証拠、候補とチェックの
正確な識別子、完全性を確認した上限付きの試行一覧です。古い観測、hold、使用済み・
結果不明の公開識別子、同じ日本時間の日付での二つ目の候補を拒否します。
入力上限は 64 KiB であり、出力は公開権限を与えません。
使い捨て KVM ゲストの作成と単一ジョブの起動処理も提供します。 イメージ検証、認証情報なしの動作確認、ジョブ開始前の判定、別途承認する登録については 公開 runner の手順を参照してください。 定期公開処理はインストール・有効化しません。実 provider からの観測、workflow の 排他制御、公開 adapter、認証情報を分離した 10 窓の pilot は #988 の残りの完了条件です。 これらと明示的な activation が整うまでは、既存の手動公開経路を使います。 権限・復旧・失敗時の規則は 公開契約 が所有します。
Evaluation artifacts¶
評価ファイルを追加する前に評価資料の方針を確認します。
既存の評価 family を拡張し、evaluations/lifecycle.json に lifecycle と実際の利用先を宣言して、
固有の過去の証拠を保護します。python3 scripts/evaluation_lifecycle.py で検証してください。
通常の test discovery でも、model や external API を呼ばずカタログを検証します。
Documentation change¶
Documentation Governanceに従い、English canonical と official Japanese translation を同時更新し、machine-derived page を再生成します。
python3 scripts/docs.py generate
python3 scripts/docs.py check
check は strict MkDocs build を含みます。site/ の generated HTML は disposable/ignored です。