Date: 2026-09-02 · STEPs: 1677 (+ 3 follow-up) / 1678 (+ 1 corrigendum) · Repo: fc0web/rei-aios · Review: chat-Claude 4 round 独立検証
『学問・技術 総合一覧』(2026-08-19、 藤本伸樹 単独著作) 446 項目の 構造化 索引データを 公開 URL 1 本 (通常版) + 1 本 (軽量版) として 発行。 chat-Claude 4 round 独立 review で 3 系統の 隠れた 設計欠陥 (immutable 手前警告 / 手書き keyConcepts drift / 契約分岐 過剰) を 発見・修正。 副産物として 3 本の 再利用可能 discipline (write-once / derive-from-data / mutable-only fix mode) を feedback memory に 記録。
| 種類 | URL | サイズ | 用途 |
|---|---|---|---|
| 通常版 (mutable) | catalog.json | ~162KB | プログラムから 読む |
| 通常版 (pinned) | catalog-2.0.0.json | ~162KB | 論文引用 (immutable) |
| 軽量版 (mutable) | catalog-lite.json | ~28KB | AI テキスト欄に 貼る |
| 軽量版 (pinned) | catalog-lite-2.0.0.json | ~28KB | 論文引用 (immutable) |
| README | README.md | ~5KB | 命名規約 + 完全性 SHA-256 |
読者が catalog-lite.json を 開いて 実際に 数えられる 数字。 keyConcepts は generator が 実データから 導出 するので drift しない。
| # | chapter | 件数 | # | chapter | 件数 |
|---|---|---|---|---|---|
| 01 | 学校の教科 | 36 | 09 | 装置 | 34 |
| 02 | 学問分野 | 37 | 10 | 回路 | 52 |
| 03 | 資格 | 51 | 11 | コネクタ | 48 |
| 04 | 教育学 | 15 | 12 | ソフトウェア | 57 |
| 05 | 哲学 | 23 | 13 | PC完結メーター一覧 (付録 A) | 5 |
| 06 | 理論 | 31 | 14 | 空気中からの発電 (付録 B) | 3 |
| 07 | 思想 | 25 | 15 | Rei 向けコネクタ候補 (付録 C) | 10 |
| 08 | 倫理 | 19 | TOTAL | 446 |
36 + 37 + 51 + 15 + 23 + 31 + 25 + 19 + 34 + 52 + 48 + 57 + 5 + 3 + 10 = 446
| STEP | commit | 内容 |
|---|---|---|
| 1677 initial | e77443712 | catalog.json + catalog-2.0.0.json + README.md + _headers + test 44/44 PASS。 STEP 1676 自己記述契約 の 初 外部 instance |
| 1677 hardening | 6ad4089dc | chat-Claude 観察 ② 応答: verifier 型 check 実測命題化 (test §9 8 型 mismatch 追加、 44→56 PASS)、 章別内訳独立検算 §10 追加 |
| 1677 immutable | a806efcee | chat-Claude 3rd round 警告応答: generator write-once discipline + README 命名規約 lock (56→71 PASS) |
| 1678 initial | eda100167 | catalog-lite (40KB 未満 列形式) + immutable template first reuse (72 PASS) |
| 1678 corrigendum | 65ef01abd | chat-Claude 4th round drift 応答: keyConcepts を 実データ Counter(items[].chapter) から 導出、 mutable のみ 更新 pinned 生涯保存、 STEP 1677 71→102 + STEP 1678 72→104 PASS |
『学問・技術 総合一覧』 の 索引データ 1 本を 「実行されない 静的 JSON」 として 公開。 Python コネクタ 本体 (446 file) は 非公開。 STEP 1676 で 定義した 自己記述契約 8 field (name/version/step/purpose/publicApi/keyConcepts/relatedModules/honestScope) を 外部公開データに 適用する 初回。
scripts/publish-sougou-catalog/generate-catalog.py (Python stdlib only、 tools/sougou-connectors/catalog.json 読込 + moduleInfo/license/copyright/generatedAt/itemCount 頭付与 + 4 出力 バイト一致){public,dist-renderer}/data/sougou-connectors/catalog{,-2.0.0}.json (dist-renderer = CF Pages mirror force-track)_headers: catalog.json = no-cache、 catalog-*.json = max-age=31536000 immutable (両 dir 更新)catalog-2.0.0.json の keyConcepts に 追記 検討」 提案 を 直接警告 — 「immutable として 公開、 SHA を README に 記載、 note で 公約済、 追記すると 公開約束破り」。 加えて 契約分岐 (evolutionKind: 'external-instance') は 却下、 sourceVersion field 追加を 推奨 (「契約は 分岐が 増えるほど 適合判定 が 読みにくい」)
catalog-2.0.1.json 代替提案 / first-write の 3 分岐)immutable_artifact_write_once_discipline.md = 再利用 template patterncatalog.json (162KB / 14 万字) は 添付は 可能だが AI テキスト欄 貼付には 重すぎる (無料プラン ChatGPT / Gemini で 止まる)。 note を 除外 + 列形式化 で 27,627 bytes / 17,321 chars の 軽量版を 発行、 catalog-2.0.0.json から 機械派生。
| 形式 | bytes | 可読性 | 採用 |
|---|---|---|---|
純 indent=2 (spec 案 A オブジェクト形式) | ~50KB | 高 | ✗ 40KB 超 |
純 indent=None (compact 1 line) | ~24KB | 低 (1 line) | ✗ 読解不能 |
純 indent=2 列形式 (fields+rows) | ~42KB | 高 | ✗ 40KB 超 |
| hybrid (top pretty + rows 1 行/row compact) | 27.6KB | 高 | ✓ 採用 |
bytes < 40,960 (現状 27,627、 margin 13,333) chars < 40,000 (現状 17,321、 margin 22,679)
spec §0 の 目的 (「AI 貼付可能」) を 意図ではなく 検証可能な命題 として test 化。 目的が サイズ そのもの の 場合、 目的を 測らないと 「作った」 としか 言えない。
Counter(items[].chapter) から derive、 手書き literal 削除 (chat-Claude 助言 「実データから 導出すれば ずれようがありません」)SOUGOU_CATALOG_MUTABLE_ONLY=1 環境変数 追加: バグ fix workflow で pinned に 触らない 経路 明示化keyConcepts labels ⊆ actual chapter set + drift 語句 (「学校教科 N」 「付録 A-C N」 単独出現) negative| file | SHA-256 (先頭 16 桁) | 状態 |
|---|---|---|
| catalog-2.0.0.json (pinned) | 1bab78389e2332bb… | 公開初日 (STEP 1677 initial commit) から 生涯不変 = drifted keyConcepts 保存 |
| catalog-lite-2.0.0.json (pinned) | dcfcdb11e1fd75e8… | 公開初日 (STEP 1678 initial commit) から 生涯不変 = drifted keyConcepts 保存 |
| catalog.json (mutable) | 直近 = cf599cf7a59d607d… | derive-from-data 修正済、 各回 生成で 更新 |
| catalog-lite.json (mutable) | 直近 = cf599cf7a59d607d… | derive-from-data 修正済、 各回 生成で 更新 |
pinned に 修正版が 必要なら catalog-2.0.1.json / catalog-lite-2.0.1.json を 別 file 名で 新規発行 (別 STEP 判断)。 現状 は 公開初日の drift bug が 文書化されて 残る = STEP 1677 immutable discipline が 「retroactively 修正 不能」 を 型 level で 実演。
| test | assertion 数 | 結果 |
|---|---|---|
| step1676 (self-description contract) | 35 | 35/35 PASS (regression 全通過) |
| step1677 (catalog publish) | 102 (初 44) | 102/102 PASS |
| step1678 (catalog-lite) | 104 (初 72) | 104/104 PASS |
feedback_immutable_artifact_write_once_discipline.md — 版番号 file 名埋込 + SHA 公開 の pattern を 保護、 generator template 化 (STEP 1678 で 再利用 first success)feedback_contract_version_semantics_external_instance.md — 内部 module (「自身の版」) vs 外部 instance (「元データ版」) の 意味論分岐、 判定基準 3 段feedback_independent_review_detects_hand_written_data_drift.md — 手書き要約と 実データ の drift は 作者側で 検出不能、 chat-Claude review + generator derive-from-data の 相補 discipline| 症状 | Prevention |
|---|---|
| immutable 公開 file の 中身が 「便利な追記」 の 名目で 書き換わる | generator level SystemExit + README で 公約明記 + test §11 で 3 経路 subprocess 検証 |
| 手書き keyConcepts と 実データ の 表記 ズレ | generator で Counter(items) 導出 + test で labels ⊆ actual chapter set assert + drift 語句 negative assert |
| 「作った」 と 言いたい 目的 が サイズ の 場合、 意図だけで assert 無し | bytes/chars 上限を test §2 で 実測 assert、 目的 = 検証可能命題 化 |
| 4 file バイト一致 test が corrigendum で 破綻 | pair invariants (mutable pair + pinned pair) + pair 間 分岐 許容 + pinned first-write 生涯一致 assert に refactor |
catalog-publish-spec.md + catalog-lite-spec.md (2026-09-02)
Generated 2026-09-02 · Rei-AIOS · fc0web/rei-aios · Claude Opus 4.7 (Claude Code session)
公開 URL: https://rei-aios.pages.dev/tools/research-log-2026-09-02-sougou-catalog-arc/