STEP 1798 の 「cms-plugin class は WordPress 1 probe のみ で spread N/A」 状態を、
Drupal を 追加して 1.20× spread verdict TRUE に 昇格 させます。
ただし Drupal は count を 数値 field で 公表していないため、
probe 層 に countMode: "last-page-index" 抽出 mode を 追加し、
「registry が declared した」 と 「URL 構造 から arithmetic で 導出 した」 の 差を 隠さず 出します。
| 定義クラス | probe | 計測成功 | min | max | spread | verdict | STEP 1798 との差 |
|---|---|---|---|---|---|---|---|
| mcp-server | 3 | 3 | 2,716 | 70,519 | 25.96× | TRUE | probe 一覧 変更なし、 npm 側 の 世界変化 |
| editor-extension | 2 | 2 | 121 | 17,446 | 144.18× | TRUE | 変更なし |
| cms-plugin | 2 | 2 | 56,276 | 67,532 | 1.20× | TRUE | N/A → 数値 (probe 追加 由来、 世界変化 ではない) |
| control | 1 | 1 | — | — | — | N/A | 変更なし |
last 欄 が ...&page=56275 という pagination URL で、 limit=1 と 0-indexed page 前提 の 下 で count = 56,275 + 1 = 56,276 を 私 の 側 が 算術 で 導きました。 これは 推定 ではなく 厳密 導出 ですが、 「registry が publish した 数値 field」 とは 別 の 形式 です。 差 は probe 表 の last-page-index badge と derivation 欄 で 見える 形 に して あります。
| probe id | クラス | countMode | countPath | 件数 | verdict |
|---|---|---|---|---|---|
npm:keywords:mcp |
mcp-server | json-path | total |
70,519 | TRUE |
npm:keywords:mcp-server |
mcp-server | json-path | total |
8,209 | TRUE |
npm:keywords:modelcontextprotocol |
mcp-server | json-path | total |
2,716 | TRUE |
openvsx:all |
editor-extension | json-path | totalSize |
17,446 | TRUE |
npm:keywords:vscode-extension |
editor-extension | json-path | total |
121 | TRUE |
wordpress:plugins |
cms-plugin | json-path | info.results |
67,532 | TRUE |
drupal:project-module NEW |
cms-plugin | last-page-index | last |
56,276 | TRUE |
cratesio:all (control) |
control | json-path | num_crates |
328,980 | TRUE |
countMode?: "json-path" | "last-page-index" // default "json-path" derivation?: string // "last-page-index" 時 必須
"json-path" (default): 従来 通り、 countPath が 数値 field を 指す"last-page-index": countPath が RFC 5988 rel=last pagination URL を 指す、 URL の page=N parameter を 抽出 → N + 1 を count とする、 url field に limit=1 pin 前提derivation: "last-page-index" 時 必須。 算術 formula を 一文 で 明記 (Drupal の 場合: "The `last` field carries an RFC 5988 rel=last pagination URL of the form ...&page=N. With limit=1 pinned in the request URL and pages 0-indexed (Drupal API convention), the total count is N + 1. This is exact arithmetic, not an estimate; it is NOT a number the registry declared as a field.")validateProbeSpec(spec) で spec bug を 事前検出 — "last-page-index" 時 derivation 未設定 なら reject、 "json-path" 時 derivation 設定 も reject (「意味の無い field を 埋めた 誤 spec」 検知)
Joomla Extension Directory (JED) は extensions.joomla.org/api/v1/extensions GET が 中身 を 返さず、
count を 数値 field でも pagination link でも 取れません。 現行 の probe 層 (GET → JSON → 数値 抽出 or URL 導出) では 数えられません。
Microsoft VS Code marketplace (POST 必須) と同じ扱いで 不在とします。 「小さい」 の 証拠 ではなく、 この経路 では 数えられない という 事実 の 記録 です。
tsc --strict scripts/comparator/gauges/plugin_census.ts \
scripts/comparator/lib/registry-probe.ts \
scripts/comparator/run-plugin-census.ts \
test/step1798-plugin-census-test.ts
→ 0 error
npm run test:step1798
→ 67 passed, 0 failed
(STEP 1798 元 46 + STEP 1814 追加 21 = 67)
npm run comparator:plugin-census
→ 8 probes counted; cms-plugin class spread=1.20×
Not every count is a value the registry declared. A probe whosecountModeis notjson-pathproduces its number by exact arithmetic over URL structure — see thederivationfield for the specific formula. Changing that formula reads as an edit, not as a change in the world; the schema fingerprint on the daily inspection sheet is meant to make that visible.
ReiResearchRadar (daily 06:30) の tail に comparator 4 gauge の class-only summary + probe list fingerprint を 生成 → 検査票 v2 の 実体化