コンテンツにスキップ

実装マークの規約

本標準の規定は、案件の実行層へ降りて初めて実行主体へ届きます。降りていない規定は、案件からは「規定がない」ものとして扱われます。

実際に、次の事象が続きました。

案件からの申し立て 実際
ロールとセッションの対応づけの規定がない 第3章 3.5.1 にあった
段階的なエスカレーションの規定がない 第7章 7.6 と D-0 第4節にあった
強制層の変更が事業決裁者へ直行してしまう state:needs-platform という経路があった

いずれも公開されており、リンクも通っていました。読まれる場所に無かっただけです。

本規約は、規定と降ろし先の対応をマークして追跡可能にする書式を定めます。

対象は「実行主体の挙動を制約する規定」です。全条項を対象にしません。維持できない台帳は、それ自体が降りていない規定になります。

対象にする 対象にしない
実行主体が守るべき禁止・権限・経路 背景・根拠・比較の記述
案件の構成へ反映すべき判断 組織の制度設計に関する規定
案件のエージェントが起動時に知る必要のある内容 読者の理解のための解説

規定の直後へ、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 と書く

src/data/impl-targets.yaml が降ろし先の正本です。登録されていない target を書くと検査が失敗します。

種別 意味 検査の内容
config-key 準拠テンプレートが生成する process.config.json のキー サンプル回答から構成を生成し、キーの存在を確かめる
template-file 準拠テンプレートに置くファイル 存在を確かめる

降ろし先の実在を機械的に確かめます。台帳が「降ろしたつもり」の一覧になると、降りていない規定を隠すためです。

state=undelivered は削除の対象ではありません。降りていない事実を表示し続けます。未達のゲートと同じ扱いです。

台帳は降りていない規定を冒頭に置きます。下位の節へ送りません。

  • マークを追加・変更したら npm run impl:write で台帳(community/implementation-ledger.md)を再生成する
  • 台帳は自動生成である。手で編集しない
  • npm run check が台帳の鮮度と降ろし先の実在を検査する

マークの付いていない規定は検出できません。本規約が保証するのは、マークを付けた規定について降ろし先が実在することだけです。網羅性は保証しません。

網羅性を機械的に確かめる手段は現時点でありません。この限界を隠さずに運用します。

本規約が見るのは「規定 → 降ろし先」の一方向だけです。逆向き、すなわち実行層にしか存在しない規定を検出できません。

#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。スクリプトの文は対象外である

検査が通ることは、スキルが本標準と一致していることを意味しません。