適合性テスト v0.1
「エージェント向け誘導の定義」の確認用 · English
基準は、誰が測っても同じ判定になって初めて基準になる。 この一式は、あなたの実装がこの定義と同じ判定に到達するかを確かめるためのものである。
使い方
node run.mjs <あなたの実装のパス>
実装は次のいずれかの形の関数を export する(default / scan / scanHtml のいずれか)。
(html) => ({ findings: [{ severity: "info" | "warn" | "high" }] })
({ html }) => ({ findings: [{ severity: "info" | "warn" | "high" }] })
どちらでも構わない。 引数の受け取り方も、findings の並び順も、定義の一部ではない。重大度は findings の最大値で比較する。
依存パッケージはない。Node 18以上で動く。終了コードは、全一致で 0、不一致があれば 1。
中身
cases.json に23件。「検出すべき」と「検出してはならない」の両方が入っている。
| 群 | 件数 | 何を固定するか |
|---|---|---|
| 4象限 | 5 | 領域×可視性から重大度が機械的に決まること |
| 検出しないもの | 15 | 広告表現、構造化データ、AI言及、隠れた無害テキスト、本物のレビュー、条件付きCSS |
| 格上げしないもの | 1 | 編集部レビューが first_party に留まり high にならないこと |
| 断定しないもの | 2 | 外部CSSを解決できないとき hidden と断定しないこと |
| 合計 | 23 |
23件のうち18件が「何も検出しない」ことを期待する。この偏りは意図的である。 この基準の実体は「何を検出するか」より「何を検出しないか」にある。誤検知は、この種の判定にとって唯一の致命傷である。
英日の両方を検査する
各ケースは lang を持ち、ランナーが言語別の内訳を出す。
Definition v0.1 conformance: 23 / 23 agree (call form: scan(html))
by language: ja 8/8 en 13/13 ja+en 1/1 n/a 1/1
第1版は、いくつかの規則を日本語でしか検査していなかった。 英語だけの実装は、検査されないまま通るか、自分のせいでない理由で quadrant-fp-hidden に落ちるかのどちらかだった。第2版で英語版を補っている。定義が英日の両方を対象としている以上、テストもそうあるべきである。
参照実装を同梱している
reference/scan.mjs は、依存なしの1ファイルで定義を実装し、23ケース全てを通る。不一致が出たら、これと突き合わせてほしい。
curl -s https://example.com | node reference/scan.mjs
正本ではない。 定義と食い違った場合、バグは参照実装の側にある。
不一致が出たら
あなたの実装が誤っているとは限らない。
不一致は、定義の解釈が割れている箇所を示している。cases.json の clause と why に、その条項が何を守ろうとしているかを書いてある。読んだうえで納得できなければ、定義のほうが悪い可能性が高いので指摘してほしい。
ファイル
cases.json— 23ケース。期待判定と、その条項の意図run.mjs— 実行スクリプト。依存なしREADME.md— この内容のテキスト版