🔧 fix: コミットサイズで正規化していないカウント比較を訂正 - #37
Merged
Merged
Conversation
#36 の見出し「超過は長さでなく本数」は、単位の大きさが違うコホート同士を 生の per-commit カウントで比べた結果だった。冗長側のコミットは追加コード行が 108 → 179 と大きく、blocks/commit がその差をコメント習慣として計上していた。 100 追加コード行あたりで正規化すると 16.0 → 21.0 (+31%) で、長さの 4.31 → 5.68 (+32%) とほぼ同じ。どちらも支配的ではないので、rule の 「count を先に見ろ」という順序指示を落として両方を見る形に直す。 兆候は最初から出ていた: 生の blocks/commit では Fable 5 が両コホートより 多い (24 対 16) が、正規化すると最少 (14.1)。最も簡潔なモデルを最も冗長と 順位付けする指標は、コメント習慣ではなくコミットサイズを測っている。 ツール側は summary から生の blocks/commit を外して密度に置き換え、 --dump に code と density を追加。同じ比較を誤って再現できないようにする。 測定範囲も固定した。初回は HEAD~400..HEAD で測っており、同日の2回の実行で コホートが 124/25 → 123/26 に動いていた。以後 1f8836ef..9a40565a。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXUZckBU1oD6hMoVCdy6iQ
ブロック数の差は分母の選択で答えが変わる: 100 追加コード行あたり +31%、 ファイルあたり +10%、コミットあたり +63%。どれを採るかで結論が動く指標を 見出しに置けない。 Fable 5 が判定材料になる。自己正規化された指標(コメント比 32.1%、 行/ブロック 3.35、密度 14.1)ではすべて最少だが、生のコミット単位 (24 対 16) でもファイル単位 (3.57 対 3.08) でも最多になる。1ファイルに 39.8 行書くため。 最も簡潔なモデルを最も冗長と順位付けする指標は、その分母を測っている。 堅牢なのは構成上すでに比率である2つ — 追加行に占めるコメント比 (43.0% → 55.0%) と行/ブロック (4.31 → 5.68)。こちらを先に出す。 rule からは ~+31% / ~+32% を落とした。常時ロード層に分母依存の数値を 毎ターン配る必要はなく、両方を見るという指示だけで足りる。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXUZckBU1oD6hMoVCdy6iQ
§ "Length is the commoner defect" が「~47% more blocks per commit」を 無条件に主張したままだった。25行下で「その形は分母を測っている」と 宣言している同じ節の中で、撤回した当のものを保持していたことになる。 しかも consumer ミラーは既にこの段落を訂正済みで、正典がミラーより 古い状態だった。一方向照合(kit → consumer)の建前上、次の照合で 古い数値が訂正済みの段落を上書きし得る経路になっていた。 「fix した主張は、それを引用した先を grep しろ」を自分に適用した形。 あわせて Fable レビューの指摘3件: - 比率が買うのはサイズ交絡への免疫だけで、題材構成には第1の訂正と 同じく無防備。固定範囲はそこに効かない旨を明記 - Fable コホートは n=16 なので大きさではなく方向として読む - 共通形は「分母」より広く「コホート間で揃っていない共変量」。 分母は名指ししやすい一種にすぎない trailer を持たない適格コミット72件がどのコホートにも入っていないことも 記録した。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXUZckBU1oD6hMoVCdy6iQ
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
#36 の見出し主張「超過は長さでなく本数」を撤回する。単位の大きさが違うコホート同士を、生の per-commit カウントで比べていた。
固定範囲
1f8836ef..9a40565aで測り直した結果:上2行は分母を固定する必要がない(構成上すでに比率)。ブロック数は割り算する対象で答えが変わる(+31% / +10% / +63%)ので、分母をコード行に固定して初めて比率として読める — 成功判定に使うのはその固定した密度。
※ 比率が買うのはコホートの大きさへの免疫だけで、題材構成には無防備(第1の訂正がその形)。固定範囲もそこには効かない。Fable コホートは n=16 なので方向として読む。trailer を持たない適格コミット72件はどのコホートにも入っていない。
追加行に占めるコメント比 43.0% → 55.0%、行/ブロック +32%。両方が上がっていて、どちらも支配的ではない。
何が交絡していたか
冗長側のコミットは追加コード行の中央値が 108 → 179 と大きい。
blocks/commitはその差をコメント習慣として計上していた。#36 の16 → 26 (+63%)はここから出ている。兆候は最初から出ていた。 Fable 5 は自己正規化された指標(コメント比 32.1%、行/ブロック 3.35、密度 14.1)ではすべて最少なのに、生のコミット単位(24 対 16)でもファイル単位(3.57 対 3.08)でも最多になる。1ファイルに 39.8 行書くため。最も簡潔なモデルを最も冗長と順位付けする指標は、その分母を測っている。 #36 で Fable が簡潔だと書けたのは行/ブロックとコメント比を見ていたからで、本数の指標はその時点で逆を示していた。
これは #35 から数えて3回目の訂正で、3回とも同じ形 — 分母を確かめずに比較した:
@@で分割せず融合)doc にこの3件を並べて記録した。個別の訂正より、繰り返している形のほうが次の読み手に効く。
変更
rules/knowledge-layering.md(常時ロード)— 「count を先に見ろ」の順序指示を落とし、両方を見る形に。分母依存の数値は常時ロード層から落としたdocs/claim-verification.md— 分母を持つ2指標を先に出し、ブロック数は分母依存と明記。撤回した主張とその原因、Fable の反転を交絡の実例として記録。成功判定も密度側に変更(生の per-commit カウントは読むなと明記)scripts/comment-density.py— summary から生のblocks/commitを外しblocks/100 code linesに置換。--dumpにcodeとdensityを追加。同じ比較を誤って再現できないようにする測定範囲を固定した
初回の較正は
HEAD~400..HEADで走らせていた。滑る窓なので、同日の2回の実行でコホートが n=124/25 → 123/26 に動いていた。doc が「実行可能な表明はコミット前に現状に対して走らせる」と説きながら、再現不能な数値を載せていたことになる。以後
1f8836ef..9a40565aに固定し、docstring にも「HEAD~N..HEADではなく SHA で固定しろ」と入れた。影響しない範囲
ゲート3設計の反証はそのまま有効。あれは per-commit / per-block の分離能を見ており、誤爆率はコホート内の分散から出ているので、密度への読み替えで結論は動かない。ブロック長の中央値が両コホートとも 3.0 という事実も変わらない。
Test plan
python3 scripts/comment-density.py --self-test→ PASS (5/5)bash scripts/scrub-check.sh→ PASS+63%が2件(分母の列挙・撤回引用)、~47%が1件(初回測定値として明示的に降格)、count, not lengthが1件(撤回引用)。~60% more blocks/5.9 lines/16 → 26はいずれも0件。残っているものはすべて撤回対象として文脈付きで引用しているもの追随が必要
tyabu12/pastura#1480— kit からの一方向ミラー。本文が+63%/+37%を引用しているので同じ更新が要るRefs #35, #36
🤖 Generated with Claude Code
https://claude.ai/code/session_01EXUZckBU1oD6hMoVCdy6iQ