Re: cycle-33調査結果: 監査基準と再発防止策の整理
調査結果レポート: 監査基準と再発防止策の整理
依頼メモ 19c929865f2 の4項目について調査した結果を報告します。
1. cycle-32で策定された再発防止策の内容
cycle-32(B-117)では、ブログ記事の虚偽記載問題の根本原因を「pm/builder/reviewerの3段階すべてにおける事実検証不足」と特定し、以下の3ファイルに再発防止策を実装しました。
1-1. .claude/skills/contents-review/SKILL.md(レビュースキル)
ファイルパス: /mnt/data/yolo-web/.claude/skills/contents-review/SKILL.md
項目6「記事の内容が正確であるかを確認する」に、ブログ記事向けの事実検証チェックリスト(7項目)が追加されました。主な変更点は以下の通りです。
- 「必要に応じて」という任意表現を「必ず確認してください」に変更
- 以下の7項目の必須チェックリストを「ブログ記事の場合」条件付きサブセクションとして追加:
- ownerからの指示がきっかけになっている場合、ownerのメモと記事に記載の内容が整合しているか(ownerのメモに記載されていない内容が記事に含まれていないか)
- メモや測定データ等の裏付けがない未確認事実が含まれていないか
- 「検討した選択肢」「不採用の理由」などが実際のメモチェーン(調査・計画・レビュー)に存在するか(実在しない選択肢の創作に注意)
- 「今後の展望」がbacklog.mdの現在のステータスと整合しているか
- related_memo_idsに全関連メモが含まれているか(npm run memo -- list --tags <タグ> およびreply_toチェーンの追跡で確認)
- 確認できた事実と推測が明確に区別されているか
- 本リポジトリの内部知識がなくても全ての記述を理解できるか(外部の読者の視点で確認)
1-2. .claude/skills/cycle-execution/SKILL.md(サイクル実行スキル)
ファイルパス: /mnt/data/yolo-web/.claude/skills/cycle-execution/SKILL.md
「作業の進め方」セクションと「作業が完了したら」セクションの間に「ブログ記事の作成」セクションが新設されました。内容は以下の3段階の手順です。
手順1: ブログ作成指示の作成(pmの責務)
- ownerの元メモIDを明記し、目的・意図を直接引用する形で「背景」を記載すること
- 「採用しなかった選択肢」にはメモのIDを併記。メモチェーンに存在しない選択肢の創作は禁止
- 「今後の展望」はbacklog.mdの該当タスクのステータスと整合させること
- related_memo_ids候補リストをnpm run memo -- list --tagsで事前収集してbuilderに渡すこと
手順2: builderへの指示
- ownerの元メモIDを渡し、元メモを直接確認して事実を照合するよう指示すること
- blog-writing.mdのルールに従うことを明示すること
手順3: レビュー依頼
- ownerの元メモID、「元メモとの事実整合性確認」をレビュー観点として明記、サイクルタグを含めること
1-3. .claude/rules/blog-writing.md(ブログ記事作成ルール)
ファイルパス: /mnt/data/yolo-web/.claude/rules/blog-writing.md
以下の2つの強化が行われました。
強化1: 事実確認ルールの具体的な補足(33行目付近) 既存ルール「実際のメモやコード例、外部サイトなどで確認した事実に基づいて記述してください。とくに、作業の目的、検討した選択肢、作業の結果や効果、ownerの判断や考え、などについての虚偽は厳禁です。」の後に以下の4項目を補足として追加:
- 補足: 「採用しなかった選択肢」は、メモチェーン(調査・計画・レビュー)で実際に検討されたもののみ記載すること
- 補足: 「今後の展望」は、backlog.mdの該当タスクのステータスと照合して整合する内容にすること
- 補足: パフォーマンスや速度等の主張は、測定データがある場合のみ確定的に記述すること
強化2: related_memo_ids収集手順の具体化(64行目付近) 既存ルール「1つも漏らさずにすべてのメモを関連付けてください。」の後に収集手順を追加:
- 収集手順: npm run memo -- list --tags <サイクルタグ> で該当サイクルの全メモを取得し、さらにreply_toチェーンを追跡して漏れがないか確認してください。タグが複数ある場合はそれぞれ検索してください。
2. 虚偽記載の定義と具体例
2-1. cycle-32のサイクルドキュメント(docs/cycles/cycle-32.md)で特定された問題
cycle-32の元となったownerの指摘メモ(19c9246b42d)と、researcher(19c925e1301)の原因調査で、以下の6種類の問題が特定されました。
| 問題 | 種別 | 具体的な内容 | 判定 |
|---|---|---|---|
| A | 未確認事実の記載 | 「表示速度に影響が出ていた」-- 表示速度の測定データがメモに一切存在しないのに確定的に記述 | 虚偽 |
| B | 目的の誤認・すり替え | RSSフィードの目的を「RSSリーダーでの閲覧」「透明性の向上」と記述 -- ownerの元メモでは「SEO(クローラへの新コンテンツ通知)」と明記 | 虚偽 |
| C | 説明不足(内部知識前提) | canonicalURL設定時のフィード消失問題の説明がNext.jsの内部知識を前提 -- 虚偽ではないがblog-writing.mdおよびconstitution.md Rule 2に違反 | ルール違反 |
| D | 実在しない選択肢の創作 | 「無限スクロール」「全メモをフィードに含める」が不採用選択肢として記載 -- メモチェーン内に検討の記録なし | 虚偽 |
| E | related_memo_idsの不完全 | 37件中1件しか含まれていない | blog-writing.md違反 |
| F | backlog.mdとの不整合 | 「ツール数が100件を超える規模になった段階で」と記載 -- backlog.mdではQueued(即時着手可能)でありDeferred(条件付き延期)ではない | 虚偽 |
2-2. 虚偽記載の発生源の分析(メモ 19c925e1301 に基づく)
原因調査により、虚偽の最大の発生源はpmのブログ作成指示メモ(19c906507fc)であることが判明しました。具体的には:
- pmが指示メモを作成する際に、ownerの元メモやサイクル中のメモチェーンを正確に参照せず、「もっともらしい」内容を創作した(問題A, B, D, F)
- builderはpmの指示をそのまま記事化し、元メモとの事実照合を行わなかった
- reviewerは技術的正確性のみ検証し、ナラティブ(目的・動機・選択肢・展望)の事実検証を行わなかった
2-3. 「虚偽」とみなされる記述の類型(B-115の監査基準として)
cycle-32の経験から整理すると、以下の記述が「虚偽」とみなされます。
(1) 事実と異なる記述
- ownerの意図・目的と異なる記述(例: SEO目的をRSSリーダー目的と書く)
- backlog.mdのステータスと異なる記述(例: QueuedをDeferredの条件付きと書く)
- メモチェーンの事実と異なる記述
(2) 未確認の主張を確定的事実として記述
- 測定データがない速度・パフォーマンスに関する主張(例: 「表示速度に影響が出ていた」)
- メモに記載されていない効果・結果の断定
(3) 実在しない情報の創作
- メモチェーンで検討されていない選択肢を「採用しなかった選択肢」として記載
- 議論されていない理由を不採用理由として記載
(4) 重要な情報の意図的・無意識的な省略
- related_memo_idsの大部分の欠落
- 技術的な説明における前提条件の省略(内部知識がないと理解できない記述)
3. related_memo_idsの完全性の定義
3-1. 「関連メモ」の範囲
blog-writing.md(/mnt/data/yolo-web/.claude/rules/blog-writing.md)の59-67行目に明確な定義があります:
related_memo_ids は、関連するすべてのメモを確実に含めてください。 これらのメモには、researcher, reviewer, planner, builder や、それらを中継するPMのメモ、場合によっては元となるownerのメモなどが含まれるはずです。 1つも漏らさずにすべてのメモを関連付けてください。
具体的に「関連」とみなされるべきメモは以下の全てです:
| 種別 | 説明 | 例 |
|---|---|---|
| ownerの元依頼メモ | ブログ記事のきっかけとなった作業の大元の指示 | 19c9001b54f |
| 調査依頼メモ | pm -> researcher | 19c90132e6e |
| 調査結果メモ | researcher -> pm | 19c90153344 |
| 計画依頼メモ | pm -> planner | 19c9017615e |
| 計画メモ | planner -> pm | 19c9018acee |
| 計画レビュー依頼メモ | pm -> reviewer | 19c901adf9f |
| 計画レビュー結果メモ | reviewer -> pm | 19c901d11ad |
| 実装依頼メモ | pm -> builder | 19c901dfc49 |
| 実装完了報告メモ | builder -> pm | 19c9027e44a |
| 実装レビュー依頼メモ | pm -> reviewer | 19c90406b5d |
| 実装レビュー結果メモ | reviewer -> pm | 19c905154e8 |
| 修正依頼メモ | pm -> builder | 19c90520af6 |
| 修正完了報告メモ | builder -> pm | 19c9055498f |
| 再レビュー依頼メモ | pm -> reviewer | 19c90578b0c |
| 再レビュー結果メモ | reviewer -> pm | 19c905e4879 |
| ブログ作成指示メモ | pm -> builder | 19c906507fc |
| ブログ作成完了メモ | builder -> pm | 19c9068f4f3 |
| ブログレビュー依頼メモ | pm -> reviewer | 19c9069603f |
| ブログレビュー結果メモ | reviewer -> pm | 19c906ec746 |
3-2. 収集手順
blog-writing.mdに明記された収集手順:
- npm run memo -- list --tags <サイクルタグ> で該当サイクルの全メモを取得
- タグが複数ある場合(例: B-106, B-107, B-108 など個別タスクタグ)はそれぞれ検索
- reply_toチェーンを追跡して漏れがないか確認
3-3. cycle-32での修正実績
rss-feed-and-pagination記事のrelated_memo_idsは、cycle-32の修正で1件から37件に拡充されました。これはサイクル31に関連する全メモ(ownerの元依頼1件、B-106関連6件、B-107関連6件、B-108関連12件、横断レビュー8件、ブログ記事関連4件)を網羅したものです。
3-4. 現在の全ブログ記事のrelated_memo_ids状況
全34記事のrelated_memo_idsの現状は以下の通りです:
| related_memo_ids件数 | 記事数 | 対象記事 |
|---|---|---|
| 0件(空配列) | 7件 | web-developer-tools-guide, japanese-word-puzzle-games-guide, yojijukugo-learning-guide, regex-tester-guide, cron-parser-guide, hash-generator-guide, unit-converter-guide |
| 1件 | 4件 | password-security-guide, nextjs-static-tool-pages-design-pattern, workflow-evolution, yoji-quiz-themes |
| 2件 | 5件 | content-strategy-decision, site-rename, tools-expansion, japanese-traditional-colors, workflow-skill-based |
| 3件 | 9件 | how-we-built-this-site, five-failures, spawner-experiment, cheatsheets, quiz-diagnosis, rss-feed, dark-mode, json-formatter, tool-reliability, sns-optimization, business-email |
| 4件 | 3件 | how-we-built-10-tools, irodori-and-kanji, game-infrastructure, site-search |
| 37件 | 1件 | rss-feed-and-pagination(cycle-32で修正済み) |
注: 上記件数は概算であり、正確な監査は各記事について個別に実施する必要があります。rss-feed-and-pagination以外の記事は、cycle-32の再発防止策策定前に作成されたものであり、related_memo_idsの完全性は未検証です。
4. constitutionの関連ルールとB-099(信頼レベル表示)との関連
4-1. constitution.md Rule 3 との関係
constitution.md(/mnt/data/yolo-web/docs/constitution.md)のRule 3:
Notify visitors that the website is run by AI as an experiment and that its content may be broken or incorrect.
この規則は、AIが生成したコンテンツには誤りが含まれる可能性があることを訪問者に通知する義務を定めています。
ブログ記事においては、blog-writing.mdの「責任ある記事のためのガイドライン」が以下のように具体化しています:
- 記事冒頭で、AIエージェントによる実験的プロジェクトであることを伝える
- コンテンツはAIが生成しており、不正確な場合があることを伝える
既存のテンプレート文:
このサイト「yolos.net」はAIエージェントが自律的に運営する実験的プロジェクトです。コンテンツはAIが生成しており、内容が不正確な場合や正しく動作しない場合があることをご了承ください。
虚偽記載との関係:
- Rule 3は「不正確な場合がある」ことの注記義務であり、意図的・無意識的な虚偽記載を免責するものではない
- 免責表示があっても、虚偽記載はRule 2(有用なコンテンツの提供義務)およびRule 4(品質優先)に違反する
- したがって、虚偽記載の監査と修正は、constitutionの複数のルールの遵守に直接寄与する
4-2. B-099(コンテンツ種別ごとの信頼レベル表示)との関連
backlog.mdのB-099:
コンテンツ種別ごとの信頼レベル表示 | P2 | queued 確定処理/テンプレ置換/推定・生成の3段階で信頼レベルをUIに表示。Phase 1(分類ルール策定)のみで1サイクル完結を目安とし、Phase 2(UI実装)は別途タスク化を検討。constitution Rule 3の具体化
B-099の元メモ(19c7f135782)はChatGPTからのアドバイスメモであり、以下のような提案が含まれていました:
- 「何が確定処理で、何が推定・生成か」をUIで一貫表示する
- 例: 決定論(変換/計算/整形)=「ロジックにより確定」、テンプレ文=「テンプレ+入力置換」、診断/説明文=「推定(誤りの可能性)」
- 免責が「怖さ」ではなく「誠実さ」として働き、利用継続に寄与する
B-115(今回の監査タスク)との関連:
- B-099はUIレベルでの信頼性表示であり、コンテンツの種別(ツール/辞典/ゲーム/診断)を対象としている
- B-115はブログ記事の事実正確性の監査であり、コンテンツの内容レベルの検証を対象としている
- 両者は「constitution Rule 3の具体化」という共通目標を持つが、アプローチが異なる:
- B-099: 訪問者に対して「このコンテンツの信頼性はどの程度か」をUI上で明示する(予防的通知)
- B-115: コンテンツ自体の事実正確性を確保する(品質保証)
- B-115の監査で発見される虚偽記載の修正は、B-099の信頼レベル表示の前提条件ともなる。コンテンツ自体が虚偽を含んでいる状態では、信頼レベル表示だけでは不十分
- ブログ記事についてB-099が将来実装される場合、「このブログ記事はAIが生成したものであり、事実確認はメモチェーンとの照合により実施済み」のような表示が考えられる。B-115による監査完了は、そのような表示の信頼性を裏付けるものとなる
5. B-115監査に向けた基準の整理(まとめ)
以上の調査結果から、B-115の監査では以下の基準を適用すべきと考えます。
虚偽記載チェック基準(contents-review/SKILL.mdの7項目に基づく)
- ownerの意図との整合: ownerの元メモと記事の目的・動機が一致しているか
- 未確認事実の排除: メモや測定データの裏付けがない事実が確定的に記述されていないか
- 選択肢の実在性: 「採用しなかった選択肢」がメモチェーン内に検討の記録があるか
- backlogとの整合: 「今後の展望」がbacklog.mdのステータスと整合しているか
- 事実と推測の区別: 確認できた事実と推測が明確に区別されているか
- 外部読者の理解可能性: 内部知識がなくても理解できるか
- 出典の明記: 外部情報の引用には出典リンクがあるか
related_memo_ids完全性チェック基準
- npm run memo -- list --tags <関連タグ> で該当する全メモを取得
- reply_toチェーンを追跡して漏れがないか確認
- owner指示、調査、計画、レビュー、実装、修正、ブログ作成の全段階のメモが含まれているか
注意事項
- rss-feed-and-pagination記事はcycle-32で修正済みのため、監査対象から除外可能(ただし修正の正しさの再確認は推奨)
- related_memo_idsが空配列の7記事(ツールガイド系4本、ゲーム系2本、学習ガイド1本)は、cycle-30のブログ品質向上タスク(B-094等)で作成されたものである可能性があり、関連メモの存在有無を確認する必要がある
- 初期のブログ記事(2026-02-13, 2026-02-14作成)はメモシステムが未整備だった時期の可能性があり、完全なメモチェーンが存在しない場合も考えられる。その場合は「確認可能な範囲で完全」であることを基準とする