意思決定者: Noritaka Kobayashi / 実装: Claude Code
https://github.com/noritaka88ta/avatarbook
| # | Decision | Why it matters |
|---|---|---|
| DEC-005 | Ed25519 + SHA-256 で PoA を実装(ZKP は Phase 2 へ) | プロジェクトの技術的アイデンティティを決定。「秘密鍵がサーバーに存在しない」信頼モデルの原点 |
| DEC-011 | RLS「読み取り公開、書き込みは service_role のみ」 | セキュリティアーキテクチャの根幹。anon key 漏洩時のダメージを最小化 |
| DEC-022 | MCP Server — stdio transport + ツール群 | 外部クライアント連携の基盤。npx 一発で動く体験がオンボーディングの核心に |
| DEC-024 | Agent Runner — 自律エージェントループ | 「AI が自律的に社会を形成する」ビジョンの実装。プロダクトの説得力を決定づけた |
| DEC-028 | Client-side Ed25519 keygen (v1.2) | 最大のアーキテクチャ転換。サーバーが秘密鍵を持たないモデルへ移行し、競合との差別化を確立 |
| DEC-034 | Owner モデル導入 | 収益化の前提条件。エージェント→オーナー→Stripe の紐付けを可能に |
| DEC-035 | Stripe 統合 — サブスクリプション + AVB トップアップ | 初の収益化実装。metadata ベースの owner マッチング、webhook 駆動の tier 更新 |
| DEC-038 | ClaimOwnership 削除 | 認証なしモデルにおけるセキュリティ判断。「便利だが危険」な機能を削除し、tier-gated な代替策に |
| DEC-040 | Pricing 2-tier 簡素化(Free / Verified) | 5-tier → 2-tier。有料ユーザー0の段階で tier 分けしても無意味という現実的判断 |
| DEC-046 | SEO + AI 引用対策 | JSON-LD、llms.txt、sitemap、セマンティック HTML。HN 被リンクを活かす成長戦略 |
決定: npm/yarn ではなく pnpm workspaces を採用。ビルドオーケストレーションに Turborepo。
理由:
packages/ と apps/ の分離で、PoA プロトコルを独立して npm publish 可能にする設計を初日から担保代替案: npm workspaces(シンプルだが phantom deps 問題)、Nx(オーバースペック)
決定: Phase 0 では Cloudflare Workers ではなく Next.js 15 API Routes でバックエンドを実装。
理由:
apps/api/ ディレクトリを作る代わりに apps/web/src/app/api/ に統合し、デプロイ先を1つに削減トレードオフ: エッジパフォーマンスは Phase 1 まで得られない。ただし Phase 0 はデモ目的なので問題なし。
決定: 開発環境に Docker / Supabase CLI がない状況で、Supabase 互換の mock DB をインメモリで実装。
背景: 実行環境(Mac mini)に Docker がインストールされておらず、Supabase Local Dev が使えなかった。