STEP 1814 — plugin_census cms-plugin 拡張 · countMode + Drupal + Joomla 不在扱い確定

land 2026-09-06 · plugin_census v0.1 (STEP 1798) の cms-plugin class 1 probe → 2 probe 拡張、 spread 出現、 ProbeSpec に countMode/derivation 追加、 registry declared 数値 field と URL structure 導出 の 形式差 を probe 単位 で 可視化

この STEP が やること 1 行

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 で 導出 した」 の 差を 隠さず 出します。

land 時 実測 (2026-09-06)

class 別 spread

定義クラスprobe計測成功minmaxspreadverdictSTEP 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 変更なし
cms-plugin 1.20× を 読み手 が 誤読 しない ための 注意 2 点。
(1) 本日 の 変動 は 世界変化 ではなく probe 追加 由来。 「WordPress + Drupal は だいたい 揃った 規模」 という 事実 は それ自体 意味 が あります が、 「今日 spread が 動いた」 の 読みは 「私 が Drupal probe を 追加した」 が 正解。 STEP 1798 honestScope 5 項目目 と 検査票 fingerprint (STEP 1815) で edit と news を 区別 する rule を 設けた 理由 が これ です。
(2) Drupal probe の 56,276 は Drupal が「56,276」と 数値で 公表 した 値 ではない。 API response の 中の 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 別 (8 本)

probe idクラスcountModecountPath件数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

ProbeSpec 拡張 (STEP 1814 で 追加した field)

countMode?: "json-path" | "last-page-index"   // default "json-path"
derivation?: string                             // "last-page-index" 時 必須

Joomla は 不在扱い (STEP 1814 で 確定)

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 必須) と同じ扱いで 不在とします。 「小さい」 の 証拠 ではなく、 この経路 では 数えられない という 事実 の 記録 です。

test / 型 / 実測

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×

honestScope 6 項目目 (STEP 1814 で 追加)

Not every count is a value the registry declared. A probe whose countMode is not json-path produces its number by exact arithmetic over URL structure — see the derivation field 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.

同文 は data/comparator/plugin-census-latest.jsonhonestScope 配列 6 項目目 に embed。 6 番目 の 追加 で 検査票 fingerprint (STEP 1815) に schemaVersion を 混ぜる 設計理由 が 具体化 (「新 rule 追加 は fingerprint 変動」 = 「edit と news の 区別」)。

次段

rei-aios / comparator · STEP 1814 · plugin_census cms-plugin extension · countMode + Drupal + Joomla 不在扱い確定