適用範囲の書き方
条項の適用範囲が読み手へ届かないと、適用されない条項が課されます。実装マークの規約が扱う「規定が届かない」の裏返しであり、結果は過剰適用です。
実際に、次の事象が起きました(#226)。
| 条項 | 適用範囲の位置 | 起きたこと |
|---|---|---|
| 5.7.3 選択肢の比較 | 本文の先頭1行 | 太字の禁止文だけを読み、限定を落として全体へ課した |
目的を持って条文を探す読み手は、目的に合致する文言を見つけた時点で読むのを止めます。実行主体はとくにそうです。限定が別の段落にあれば、届きません。
1. 節全体に掛かる限定は、見出しへ併記する
Section titled “1. 節全体に掛かる限定は、見出しへ併記する”### 5.7.3 選択肢の比較(適用: R1 の決定・例外承認)書式は (適用: …) です。この注記が台帳の抽出元になります。
2. 個々の規範に掛かる限定は、その規範と同じ行へ書く
Section titled “2. 個々の規範に掛かる限定は、その規範と同じ行へ書く”箇条書きや表の行が限定を持つ場合は、行の中に書きます。
| 段階 | 内容 | 適用 || --- | --- | --- || 強 | 人間が受入基準を事前に定義する | R1 |3. 限定を、規範とは別の段落へ置かない
Section titled “3. 限定を、規範とは別の段落へ置かない”これが本規約の要です。地の文で限定を述べ、直後の箇条書きで規範を述べる形を採りません。箇条書きだけを読んだ読み手に、限定が届かないためです。
検査は、限定表現を地の文へ置いた節を機械的に警告します。該当しない節は src/data/scope-exempt.yaml へ理由付きで登録します。登録そのものが判断の記録になります。
適用範囲には、案件ごとに確定するものと変更ごとに判定するものがあります。取り違えると、適用範囲を機械的に外す誤りが起きます。
| 単位 | 条件の例 | 案件単位で適用外にできるか |
|---|---|---|
| 案件ごと | 安全重要度(CL)、チーム規模、開発形態 | できる |
| 変更ごと | リスク区分(R) | できない |
案件の安全重要度から、リスク区分に依存する条項の適用外を導いてはなりません。CL0 の案件でも、認証・認可・個人データ・外部インタフェースに触れる変更は R1 です(第3章 3.8.1)。
台帳は注記の内容から単位を判定します。リスク区分の記号を含む注記は、変更ごとの判定として扱います。
成果物の様式との関係
Section titled “成果物の様式との関係”成果物テンプレートの欄名は、既存の表記(「比較した選択肢(R1 および例外承認で必須)」など)を維持します。様式は実行層へ降りており、案件が直接読むためです。台帳の抽出対象は標準本文の条項の見出しに限ります。
- 注記を追加・変更したら
npm run scope:writeで台帳(community/scope-ledger.md)を再生成する - 台帳は自動生成である。手で編集しない
npm run checkが台帳の鮮度と、地の文へ置かれた限定を検査する
注記の付いていない条項に、適用範囲が無いとは限りません。検査が見るのは、既知の記号(リスク区分・安全重要度)を含む限定表現だけです。言い換えられた限定、および条件を散文で述べた条項は検出できません。
網羅性を機械的に確かめる手段は現時点でありません。この限界を隠さずに運用します。