STEP 2174 · orphan-gauge v0.6.1 · 2026-09-21 · rei-aios-fe
STEP 2171 (v0.6 = D + #1) の site page を chat-Claude が review、 5 items 上げ。 v0.6.1 は うち item 2 (象限 flip 件数 = 決定材料) と item 3 (ctime naming が POSIX ctime と混同) の 対応。 (c) %at/%ct 対応 は empirical evidence なし で 削除 (chat-Claude 自己訂正 accept)。 mtime axis 置換 は 「full-repo flip@30d = 0.021%」 で 影響 極低 と 実測、 依然 実施しない。
| # | 指摘 | 私 verify | v0.6.1 対応 |
|---|---|---|---|
| 1 | 「mtime > commit = checkout reset」 解釈 危うい (uncommitted / rebase も混ざる) | ✅ 深化: raw ms 精度 measurement で mtime < git が dominant (~70%) = 「commit 直後 未 touch」 が 通常 pattern。 v0.6 の 単純化は 完全に不正確 | FIXED direction wording refine、 「heuristic 参考のみ、 分類影響 は flipStats を 参照」 と 明記 |
| 2 | 決定材料 = 象限 flip 件数 (Δ 件数 ではなく) | ✅ verified: full-repo flip@30d = 5 / 23,902 = 0.021%、 src/-only = 2 / 1,894 = 0.11% | IMPLEMENTED (a) CLI + JSON に flip 件数 (7/30/90d 3 threshold) + direction + per-target breakdown 追加 |
| 3 | ctime = POSIX ctime (inode 変更時刻) と混同 |
✅ true | IMPLEMENTED (b) gitCommitTime に統一。 ctime* 名 は deprecated alias で 一時保持 (backward-compat) |
| 4 | test 件数 算数 (25+13=64 は誤り) | ✅ 私 report 誤り: 正しくは 51 assertion + 13 = 64 (T# ラベル 27 個 と assertion 数 51 は 別 concept) | CORRECTED (発話 訂正 済) |
| 5 | exit 1 で 呼出側 壊れる懸念 | ✅ blast radius = zero (`orphan-gauge-append-history.ts` は `gauge()` library API 経由、 `process.exit` 通らず) | NO-OP snapshot pipeline は 影響なし |
%at/%ct 実装 の 根拠 なし」。 v0.6.1 scope から (c) 削除 = %at/%ct 対応。 record のみ 保持。
types.ts: FlipStats / DirectionStats / PerTargetStats 新 interface、 GitCommitTimeDivergence (旧名 CtimeDivergence は @deprecated type alias で保持)、 GaugeReport に 新 field + 旧 field (両方 populate JSON backward-compat)git-ctime.ts: identifier rename (loadGitCtimes → loadGitCommitTimes 等)、 旧名 は export const ... = ... で deprecated alias、 内部 field gitCommitTimeMs + 旧 ctimeMs 同値 populate。 File name 自体 は 保持 (import path 破壊避け)classify.ts: computeFlipStats / computeDirectionStats / computePerTargetStats 追加、 buildReport input signature 拡張、 honestScope 更新 (v0.6.1 実測数値 embed + (c) 削除 根拠 明記)index.ts: gauge() opts に gitCommitTimeDivergenceDays / skipGitCommitTime / flipThresholdsDays (default [7,30,90]) 追加、 旧 opts key は fallback で 受ける (deprecated)。 flip / direction / per-target は in-scope 限定 で 計算 (per-target と 数値 一致 discipline)scripts/orphan-gauge.ts: 3 renderer 追加、 header v0.6 → v0.6.1、 --flip-thresholds 7,30,90 flag 追加、 direction wording refine象限 flip 件数 (mtime → git commit time 置換時 の 分類変化、 各閾値):
threshold | stale→fresh | fresh→stale | total flips | % of in-scope
7d | 0 | 0 | 0 | 0.000%
30d | 0 | 2 | 2 | 0.106% ← default
90d | 0 | 0 | 0 | 0.000%
読み方: total flips が 小さいほど、 mtime 置換の classification impact が 小さい。
mtime vs git commit time 方向 (in-scope tracked、 heuristic 参考のみ):
mtime > gitCommitTime : 564 (最終 commit 後 に触られた: 未 commit 編集 / editor save / 古い repo clone 後 touch)
mtime < gitCommitTime : 1330 (最終 commit 以降 未 touch: 通常 pattern; commit call が file write より 数秒後 の 差)
per-target 内訳 (in-scope、 top-level dir 別):
dir | in-scope | divergent | mtime>c | mtime<c | flip@30d
src | 1894 | 456 | 564 | 1330 | 2
daily-sources.json (mtime 1.3d / git 30.6d), repo-discovery/crawl-log.txt (0.1d / 33.2d), research-radar/ccchallenge-state.json (0.34d / 124.4d), 他 2 件。
| test set | count | domain |
|---|---|---|
| 既存 (T1..T27 + T-V01..T-V20 + T-D01..07 + T-G01..06) | ~65 | v0.6 まで の carry-over (migration: skipGitCtime → skipGitCommitTime 等) |
| 新 T-F01..T-F10 | 10 | computeFlipStats: 3 threshold で synthetic 3-artifact に stale→fresh / fresh→stale / both-side / no-flip pattern verify + T-F10 = 分母 0 divide-by-zero 予防 |
| 新 T-D-DIR-01..03 | 3 | computeDirectionStats: mtimeNewer / ctimeNewer / equal 合算 |
| 新 T-P01..T-P10 | 10 | computePerTargetStats: 2 dir (src + data) 3 artifact での in-scope + divergent + direction + flip@30d 全 field verify |
| 新 T-G07/T-G08 | 2 | alias verify: computeCtimeDivergences === computeGitCommitTimeDivergences / ctimeCoverage === gitCommitTimeCoverage |
ctime → gitCommitTime 改名 = POSIX ctime との 混同 予防、 deprecated alias 一時保持 で backward-compat%at/%ct 区別 は 実装しない — mtime<gitCommitTime 側 から の flip@30d 寄与 = 0 件 = rebase/amend 由来 の 分類 訂正 は 実装根拠 なし (chat-Claude self-correction accept、 record 化)v0.6 release 時 に direction を 「mtime > = checkout reset」 と 単純化した wording を CLI + type JSDoc に埋めた。 chat-Claude item 1 で 「危うい」 指摘後、 empirical verify で mtime < git が dominant (70%) の 通常 pattern と 判明。 単純化した ラベル は 「知っている 気にさせる 誤 heuristic」 = 誤った 決定材料化 の risk。
統計 label の JSDoc + CLI text を 書く前 に 「この direction 単独 で 何 が 決まるか」 を 自問。 決まらない (今回 = flip 件数 が decisive) なら 「heuristic 参考のみ、 分類影響 は X を 参照」 と 明示、 単純解釈 の 埋め込み を 避ける。
直後 の refine で label wording を 訂正 + 「direction ≠ flip」 note を CLI + JSDoc に 追加 (今回 対応)。 過去 record (site page STEP 2171) の wording も 順次 訂正 candidate (但し immutable record 原則 で retroactive edit は しない、 「STEP 2174 で 訂正」 note で forward-only)。
chat-Claude review pattern (「私 の 推測 の 半分 は 外れていました」) の self-correction discipline = 5 items 全 verify 姿勢 の 良い 実例、 私 側 も 見習う。