実装マークの規約
本標準の規定は、案件の実行層へ降りて初めて実行主体へ届きます。降りていない規定は、案件からは「規定がない」ものとして扱われます。
実際に、次の事象が続きました。
| 案件からの申し立て | 実際 |
|---|---|
| ロールとセッションの対応づけの規定がない | 第3章 3.5.1 にあった |
| 段階的なエスカレーションの規定がない | 第7章 7.6 と D-0 第4節にあった |
| 強制層の変更が事業決裁者へ直行してしまう | state:needs-platform という経路があった |
いずれも公開されており、リンクも通っていました。読まれる場所に無かっただけです。
本規約は、規定と降ろし先の対応をマークして追跡可能にする書式を定めます。
何を追跡するか
Section titled “何を追跡するか”対象は「実行主体の挙動を制約する規定」です。全条項を対象にしません。維持できない台帳は、それ自体が降りていない規定になります。
| 対象にする | 対象にしない |
|---|---|
| 実行主体が守るべき禁止・権限・経路 | 背景・根拠・比較の記述 |
| 案件の構成へ反映すべき判断 | 組織の制度設計に関する規定 |
| 案件のエージェントが起動時に知る必要のある内容 | 読者の理解のための解説 |
規定の直後へ、HTML コメントとして置きます。読者には表示されません。開示ではなく追跡のためのマークであり、根拠水準のマークとは目的が異なります。
<!-- impl IMPL-0001 target=config-roles state=delivered check=presence note="兼務の禁止を構成へ出力する" -->| 要素 | 規則 |
|---|---|
| 識別子 | IMPL- + 4桁の連番。再利用しない。マークを削除しても番号を空けたままにする |
target |
降ろし先の識別子。src/data/impl-targets.yaml に登録されたものだけを使う |
state |
delivered(降りている)または undelivered(降りていない) |
check |
規定の中身を何が確かめるか。machine・presence・manual のいずれか(次節)。新しく付けるマークには必ず書く |
note |
何の規定かを1行で。台帳の見出しになる。空白を含む場合は引用符で囲む |
「降ろし先がある」ことと、「規定の中身を検査している」ことは、別の事実です。state は前者だけを示します。後者は check で示します(ADR-0061)。
check の値 |
台帳の表示 | 意味 |
|---|---|---|
machine |
機械が確かめる | 機械が規定の中身を検査し、違反を止めるか件数で出す |
presence |
実在だけ確かめる | 機械が確かめるのは、記録・欄・ファイル・キーの有無までである |
manual |
人が確かめる | 機械は確かめない。確かめる者と時点を note に書く |
| (書いていない) | 未分類 | 検査の手段を棚卸ししていない |
stateの値は増やさない。stateとcheckは独立に書くcheckを欠くマークを、検査は落とさない。台帳の冒頭に、未分類の件数を出すcheck=machineを書くのは、機械が違反を検出することを実行して確かめた規定に限る。降ろし先の実在だけを確かめたものはpresenceと書く
降ろし先の登録簿
Section titled “降ろし先の登録簿”src/data/impl-targets.yaml が降ろし先の正本です。登録されていない target を書くと検査が失敗します。
| 種別 | 意味 | 検査の内容 |
|---|---|---|
config-key |
準拠テンプレートが生成する process.config.json のキー |
サンプル回答から構成を生成し、キーの存在を確かめる |
template-file |
準拠テンプレートに置くファイル | 存在を確かめる |
降ろし先の実在を機械的に確かめます。台帳が「降ろしたつもり」の一覧になると、降りていない規定を隠すためです。
降りていない規定の扱い
Section titled “降りていない規定の扱い”state=undelivered は削除の対象ではありません。降りていない事実を表示し続けます。未達のゲートと同じ扱いです。
台帳は降りていない規定を冒頭に置きます。下位の節へ送りません。
- マークを追加・変更したら
npm run impl:writeで台帳(community/implementation-ledger.md)を再生成する - 台帳は自動生成である。手で編集しない
npm run checkが台帳の鮮度と降ろし先の実在を検査する
マークの付いていない規定は検出できません。本規約が保証するのは、マークを付けた規定について降ろし先が実在することだけです。網羅性は保証しません。
網羅性を機械的に確かめる手段は現時点でありません。この限界を隠さずに運用します。
逆流を検出できない
Section titled “逆流を検出できない”本規約が見るのは「規定 → 降ろし先」の一方向だけです。逆向き、すなわち実行層にしか存在しない規定を検出できません。
#223 で、この形の破れが実際に起きました。ゲートを閉じる手続と判定の語彙が標準本文に無く、準拠テンプレートのスキルと様式が事実上の正本になっていました。案件からは「標準に規定がない」と見えます。
| 破れの向き | 見え方 | 検出 |
|---|---|---|
| 規定はあるが降りていない | 案件が規定に気づかない | 本規約のマークで追跡する |
| 実行層にしかない | テンプレートが正本になる | スキルの文の、要求と禁止の文末を持つものだけを検査する(次節)。それ以外は手段がない |
逆流は、ADR-0010が定める正本の向きを崩します。テンプレートは案件が改変できるため、統制の根拠になりません。テンプレートへ規定を足すときは、標準本文の対応箇所を必ず確かめます。
スキルの文については、次節の検査が、要求と禁止の文末を持つ文に限って逆流を検出します。それ以外の文の逆流を検出する手段は、ありません。
準拠テンプレートのスキルの文
Section titled “準拠テンプレートのスキルの文”準拠テンプレートのスキルと補助ファイルは、本標準の実装です。本標準と食い違う場合は、本標準によります。
スキルの文のうち、要求または禁止の文末を持つものには、次のどちらかを付けます(ADR-0064)。
| 印 | 書くこと |
|---|---|
<!-- 根拠: 標準 第5章 5.8.5 --> |
本標準の所在。複数は「、」で区切る |
<!-- テンプレート独自: 理由 --> |
本標準に対応する規定が無い文。足した理由を書く |
- テンプレート独自の文は、本標準の要求事項を弱めない。本標準と逆の指示を書かない
- 本標準が限定つきで定める事項を、限定を外して書かない
- 所在に書けるのは、本文の節(
第N章 a.b、第4章 G-N、第N章「節の名前」)、規定の附属書の節(附属書B、附属書H H.6)、実装マークの番号(IMPL-NNNN)である。参考の附属書は根拠にならない
npm run check が scripts/check-skill-provisions.mjs を実行します(単独では npm run lint:skills)。対象は、template/.claude/skills/ の Markdown のうち、次の文です。
| # | 対象 | 印を書く場所 |
|---|---|---|
| 1 | 文末が「〜なければなりません」「〜なければならない」「〜てはなりません」「〜てはならない」の行 | その行 |
| 2 | 見出しに「〜てはならない」「禁止事項」を含む節の、箇条書きと表の行 | その行。または、節の見出しの行か、見出しの直後の行 |
検査は、印の有無と、所在の実在を確かめます。
| 確かめないこと | 補う手段 |
|---|---|
| 引いた節の内容と、スキルの文が合っているか | 条項を改めるときに、その節を根拠に持つスキルの行を検索して読む |
| 本標準の要求を、スキルが落としていること | 「規定 → 降ろし先」の向きの実装マーク |
| 平叙の文(「〜します」「〜しない」)と依頼の形(「〜しないでください」)で書いた規則 | 手段は無い。スキルの文を改めるときに、人が本標準と突き合わせる |
様式(template/templates/)とスクリプトの文 |
様式の必須欄は npm run test:fields。スクリプトの文は対象外である |
検査が通ることは、スキルが本標準と一致していることを意味しません。