Skip to main content

grift — AI時代に痩せない証拠

日本語 | English

Method = TEP / Tool = grift(CodeScene 型の二層。方法論名は TEP、コマンドは grift)。 Named after the Grift product line.

量は誰でも作れる。残るものと、検証が伴った変更を測る。技量スコアではない。

利用規範(norms)

「TEP 準拠」を名乗る利用の条件を docs/norms.md に定める(不在を負に読まない・単独足切り禁止・申告を負に読まない・同意なき第三者プロファイリング禁止・監視転用非準拠・選択性の明示・重み付け禁止の7条・日英併記)。本規範への適合を「TEP」の名の使用条件とする。

コミット数・行数・「活動量」は、エージェントと生成コードの時代に簡単に膨らむ。grift は git だけから、TEP の帰属(誰の仕事か)と検証層(test co-change ほか)を決定論的に出す。LLM は使わない。合成スコアも等級語彙も出さない。

5分で始める(2語で基本操作)

pipx install grift-cli
cd your-repo
grift analyze     # 分析結果を stdout に表示(repo スコープ)
grift verify      # .grift/report.json を現在のリポジトリで再計算・突合

基本操作はすべて grift <動詞> の2語で完結します。動詞の意味は「analyze = 表示(stdout)・report = 記録(.grift/)」です:

2語コマンド 動作
grift analyze カレントリポジトリをstdout に表示(repo スコープ・.grift/ は作らない)
grift report 分析して .grift/report.{json,md} に記録(常に現在の HEAD を再分析・既定 repo スコープ・--scope tenant 可)
grift verify .grift/report.json を同条件で再計算し改ざんを検出(VERIFIED / MISMATCH / CANNOT_VERIFY)
grift contribute .grift/report.json から opt-in 提出 payload を組む(何も送信しない・同意後に .grift/contribution.json を書き提出手順を表示)。--open で payload と meta ファイルをコミット済みブランチを fork に push し、ブラウザで PR 作成ページを開きます(残る操作は「Create pull request」ボタンのみ・gh CLI 利用・grift 自身はネット送信なし)
grift update grift-cli 自身を更新(--check は最新版の表示のみ・読み取り専用)。対話実行時に新しいバージョンがあれば1行のお知らせが出ます(GRIFT_NO_UPDATE_NOTICE=1 で非表示・CI/非TTYでは出ません)
  • .grift/ は出力専用ディレクトリです(無ければ自動作成)。リポジトリの .gitignore に .grift/ を追加することを推奨します
  • カスタム指定(対象パス・スコープ・出力先を明示)は従来どおり引数・オプションで: grift analyze path --scope tenant --identity .tep/identity.toml --out dir
  • --scope tenant(既定): .tep/identity.toml に載った人の仕事 = 証拠用/--scope repo: bot 以外の全人間コミット = プロセス観測・参照分布用

参照分布 v2026.09 は repo スコープ同士でのみ照合する。tenant の値を repo 分布に載せない(混ぜたら分布が嘘になる)。

実レポート例

自リポで grift analyze . --format md を実行する。各数値に単位と provenance(method=TEP・tool=grift・定義版・分析 SHA・analysis_scope)が付く。

終了コードと stdout / stderr 規約

終了コード 意味
0 成功
2 使用法エラー、または指定パスが git リポジトリでない
1 その他の予期しない失敗(詳細は stderr)

--format json の stdout は JSON 1 件のみ(機械消費向けの純度保証)。--format md は markdown のみ、--format both は markdown → 空行 → JSON の順。診断とエラーは常に stderr。--out DIR を使っても stdout 規約は変わらない(report.md / report.json の追記のみ)。

report.json の全フィールド定義は docs/report-schema.md(schema report-v1・凍結済み・追加互換)。

機械取込用 export(opt-in)

grift analyze <repo> --export <dir> で commits.ndjson(1行=1コミット・origin/actor/cochange)・actors.json(canonical_id ごとの帰属と活動)・export-meta.json(config_digest つき)を書く。生メールアドレス・生 author 文字列は一切出力しない。顧客向け叙述に載る数値は report.json の集計値が正。詳細は docs/export-schema.md。

データ提出(grift contribute・明示的 opt-in)

TEP Report 集計と参照分布 vNext への提出は、次の3段階で完結します:

grift report                                  # ① repo スコープの report を作る
grift contribute --out .grift/contribution.json  # ② payload を組み・全文を確認
# ③ payload を [tep-contributions](https://github.com/Cor-Incorporated/tep-contributions) に PR で提出
  • 測定コマンド(analyze/report/verify)はネットワークに触れず、contribute は自動送信をしない(こちらへの自動送信は恒久にありません)。payload 全文が表示され、「この提出は公開コーパスに載る」ことが明示されます。--open は本人の GitHub 権限で本人の fork にブランチを push し、最終ボタンは本人が押します
  • payload は repo スコープ集計値 + context_profile(クラス級)+ 定義版のみ。canonical_id・メール・パス・repo 名・tenant スコープ値は含まれません。payload には metrics.provenance.analyzed_commit_sha(分析時点のコミット SHA)と analyzed_at(分析時刻)が含まれます — SHA は中身を復元できない不透明値ですが、公開 repo では対象の特定に使えるため、推測リスク開示と同旨です
  • 受け口リポ(tep-contributions)の CI が schema(tep-contribution-v1)と個人情報形状(メール等)を機械検証します
  • 用途は「TEP Report 集計と参照分布 vNext」に限定。保持期間は次回年次 Report まで・撤回は issue で受け付けます(docs/norms.md 保持・削除条項)

例(click、tenant スコープ。ゴールデン G1):

  • test co-change: 0.2664 ratio(73 of 274)
  • corrective rework: 0.0109 ratio(3 of 274)— 観測値。証拠主張ではない
  • path retouch: 0.573 ratio — 観測のみ

母数 20 未満では率も分布位置も出さない(insufficient_population。件数の生表示のみ)。

指標の読み方(非エンジニア向け)

すべての指標について「何を測っているか・高い/低いで何がわかるか・公開リポジトリ117件の分布上の目安」を docs/metrics-guide.md に平易にまとめています。初めてレポートを見る方はまずこちらを。誤読しやすい点(例: corrective rework はバグ件数ではない、dormant は放置ではない)も表にしてあります。

指標と限界

指標 何の証拠か 限界
origin / 帰属 誰の仕事か identity 未設定は unresolved。Cor 実メールは同梱しない
test co-change 本番変更にテストが伴うか テスト基盤なしは not_observed。母数<20 は率も十分位も出さない(insufficient_population)
corrective rework 件名が fix/revert の直近パス回帰(観測) 証拠主張から降格。件名規約依存の交絡あり。バグ件数ではない。再挑戦は v0.6 行レベル
path retouch 同一ファイル再接触 観測のみ。証拠主張に使わない
survival (τ=180d) 行の残り方 --survival のみ。参照分布は v2027 予定。今回の公開分布には含めない

参照位置は「第N十分位」の1行だけ。n<30 の指標は位置を出さない(reference_too_small)。現行 v2026.11 の観測 n: test co-change 68 / corrective rework 101(観測)/ survival 0(v2027 予定)。旧 v2026.09 は不変のまま --reference-version で選択可能。

判別力の現況(repo スコープ・基準 5f2665e)

出典: corpus/DISCRIMINANT-v2026.11.md(n=117・v2026.09 全行 + v2026.11 admission 70 件)。verdict はファイルから逐語。

  • test_cochange A vs D → separated(median_A 0.2379, median_other 0.0718, gap 0.1661, Cliff δ 0.9198, n 18/18)— 初めて n が立った分離。「量は誰でも作れる」テーゼの最初の強い実証
  • test_cochange A vs C → fail_tier2(median_A 0.2379, median_other 0.0769, gap 0.161, Cliff δ 0.291, n 18/21)— v2026.09 では separated(δ 0.7143)だったが、C 群が「tests を持つ AI 駆動 repo」に広がり分離が低下。登録済み基準は下げず転回をそのまま公開する
  • corrective_rework A vs C / A vs D → 方向要件なし(観測専用・v0.5.0 から不変)。A vs C δ -0.8333 / A vs D δ 0.0139
  • 母数の正直な記録: C narratable = 14(目標 30 に不足・admission 実測で訂正)/ D total 29(目標 20 達成)
  • survival: 参照分布は v2027 予定

v2026.09 の記録(Run 2: A vs C separated ほか)は corpus/DISCRIMINANT-v2026.09.md に履歴として残してある。

GitHub Action(観測のみ)

uses: Cor-Incorporated/grift-cli@v0.5.4
with:
  scope: repo
  • grift analyze を実行し、$GITHUB_STEP_SUMMARY に共有ブロックを出力、report.md / report.json を artifact に upload
  • 合否・閾値・fail は実装しない(観測のみ・ゲート化は恒久にしない)
  • PR コメント投稿は comment: true の明示オプトインのみ(既定 off)
  • permissions は最小限(contents: read を推奨。comment: true のみ pull-requests: write が必要)

サポート / Support

  • golden identity(再現検証用の公開コミットメタデータ由来メール)の削除依頼などは public リポの issue でお知らせください(非公開を希望される場合は private door の連絡先を tep-contributions の README で確認してください)
  • Removal requests (e.g. for golden identity emails derived from public commit metadata): please open an issue on the public repository; see the tep-contributions README for the private contact channel.

倫理

  • 実在個人のスコアカード・順位表は公開も内部共有も禁止
  • 等級語彙(シニア/ジュニア/素晴らしい)を出さない
  • コーパスの manifest(リポ名+SHA)は再現用に公開してよい。個別リポ値のリーグテーブルは公開しない
  • 対照群 E(私的 ground truth)はこのリポに入れない

公開状態

License

MIT. See LICENSE.

Metadata

Release files for grift-cli 0.5.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for grift-cli 0.5.8
File Size Uploaded
grift_cli-0.5.8.tar.gz 167.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for grift-cli 0.5.8
File Interpreter ABI Platform
grift_cli-0.5.8-py3-none-any.whl Python 3 none any Details

Total release size: 225.1 kB

Release files / grift_cli-0.5.8.tar.gz

Download URL grift_cli-0.5.8.tar.gz
Size 167.8 kB
Tags Source
SHA-256 checksum
How to use checksums
4c34057579fa1bc60c7133dd4914e85abdc7c4f2778e88442964f10b5aabb3e4
BLAKE2b-256 checksum
How to use checksums
205d90bcbc743d7fcdc9240787f1be06b635678e046a1b614e6510eabf6afcf4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / grift_cli-0.5.8-py3-none-any.whl

Download URL grift_cli-0.5.8-py3-none-any.whl
Size 57.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8b15847980eae0dd4f59e0377e3c9c4f85a208fc26115194d0ebb1af989af20b
BLAKE2b-256 checksum
How to use checksums
1f05862bb193232016113da531b49a338e01fcbd294c0a1631b41fe3b2a403c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

0.7.2

2 release files

0.5.9

2 release files

This release

0.5.8 This release

2 release files

0.5.6

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page