Research and verification

調査・検証記録

調査範囲、不整合、未確認事項、生成・描画検証の結果です。

調査基準#

項目記録
リポジトリルート/mnt/hdd8tb/kk/works/bluem/CommunityAI/OKR/mock_okr_cai
ブランチmain
対象コミット30b101f70ea31c11706ea148f7272fbc29053a69
履歴比較基準tag v2026.09.29、commit eba90cd721d3905ae2d09ae05d2e8db94606259f
調査日時2026-10-01 16:33 JSTから開始
重点再確認9月29日時点と現在の業務PostgreSQL read・write・AI Worker処理、対象範囲、lock、CAS、pool admission
開始時git status## main...origin/main、変更なし
既存の未コミット変更なし
本成果物に含む未コミット変更docs/architecture/の資料一式と、デモ一覧の資料リンク定義
実環境へのアクセスなし。外部照会、deploy、migration、メール送信、課金API、DB接続を実施していない
秘密値・実データ読み込んでいない。実 .env.local、Git管理外env、credential、dump、利用者データを対象外にした

ルート以下に追加の AGENTS.md / AGENTS.override.md は見つかりませんでした。submodule entryも確認されませんでした。

調査範囲#

「精読」は該当ファイルの構成判断に必要な範囲を行単位で追跡、「検索確認」は全ファイル名の棚卸しとキーワード/import/entrypoint追跡、「除外」は生成物等を精読対象外にしたことを表します。

対象ディレクトリ/主なファイル方法確認内容または除外理由
ルート README.md、package.json、package-lock.json、Dockerfile、Compose群精読・検索確認4 workspace、build/run target、通常SaaS/demo/ops、production DBとruntime設定
.github/workflows/、.github/release/精読・検索確認CI、immutable image、staging evidence、production approval、監視契約。production deploy本体は外部実行
config/精読production/staging blue/green、PC deploy入力例、秘密値ではなく設定名と役割だけを利用
deploy/local-bluegreen/精読systemd、HAProxy生成、cloudflared起動、Web/Worker container、drain/reaper
deploy/production/、scripts/production/検索確認・関連箇所精読既存の単一runtime、PostgreSQL構築、isolated restore試験。blue/greenとの併存を記録
docker/精読runtime secret file loadingとentrypoint。値は読まず契約だけ確認
okr-cai-saas/src/app/(188 files、82 route.ts、48 page.tsx)全ファイル名棚卸し・route検索・主要route精読公開/保護画面、auth、artifact、workflow、AI job、admin APIの入口からservice/storeまで追跡
okr-cai-saas/src/lib/import/通信/永続化を横断検索・主要実装精読proxy、session、Access、認可、PostgreSQL、AI job、OpenAI、最小化、diagnostics
v2026.09.29のpostgres-request-store.ts、db/postgres/repository.ts、reader.ts、AI job実装git showで履歴精読revision別snapshot cache、組織共通advisory lock、全量read/clone、変更aggregate書込、AI文脈・結果反映のsnapshot依存
現在のdashboard-reader.ts、profile.ts、workflow-collaboration.ts、ai-workflow.ts、ai-generation-jobs.ts、pool-admission.ts精読対象別read、entity transaction、row lock/CAS、対象AI graph、provider I/O分離、bounded admission
okr-cai-saas/db/postgres/migrations/(50 files)全migration名確認・主要schema精読業務、session、artifact、workflow、AI、command/lease、file URL、auth floor、runtime制御
okr-cai-saas/deploy/、.env.local.example、package.json、next.config.ts精読public host、Tunnel例、production/dev flags、PostgreSQL-only境界、依存関係
okr-cai-auth-worker/src/ と migrations/(16 files)全ファイル確認・entry/auth/storage/email精読Hono routes、password/OTP/reset、JWT/JWKS、D1、Email、Cron、rate limit
okr-cai-auth-worker/wrangler.jsonc精読(値を成果物へ転載せず)env別Worker、D1/Email binding、Cron、observability。実resourceは未照会
okr-cai-saas-demo/manifest/entrypoint/flag検索別workspace・build・sample runtimeであることを確認し、production主図から分離
docs/(2085 files)全ファイル名・構成語検索、関連資料精読deployment、data inventory、backup試算、security、auth、規約/プライバシー、課題記録、旧構成資料を照合
scripts/全ファイル名・deploy/backup/restore/CI語を検索、関連script精読production準備、promotion evidence、restore trial。定常backup jobは発見できず
reference/除外(名称と目的だけ確認)過去mock/design referenceで現行runtime根拠にしない
.staging-rollbacks/、ルートtmp/、各種.next*、coverage、storybook-static、test-results、e2e-results除外過去作業退避、build/cache、生成物、試験結果。現行構成の一次ソースではない
node_modules/、各workspaceのnode_modules/除外vendor codeは精読しない。manifest/lockfileで宣言を確認し、ローカル描画用の既存sharpだけ実行
.git/内部除外、履歴を限定確認branch/SHA/statusと直近履歴だけ確認。最新commitだけを採用理由にはせず実装・設定も照合
実 .env.local、config/*.inputs.env、.dev.vars、credential、DB dump/volumeアクセスしない秘密値・実環境識別子・個人情報を取得しないため。example/schemaだけを使用

資料と実装の不整合#

C01: Cloudflareの取扱範囲#

  • 資料: docs/legal/terms/02_かけあい_プライバシーポリシー_v1.6.md:103-113 は、Cloudflare利用を認証関連に限定し、相談内容・成果物の通信はCloudflareを経由しないと記載します。
  • 実装・設定: okr-cai-saas/deploy/cloudflared-config.example.yml:6-15 はapp/admin両hostを同じlocal Next.js originへ中継し、docs/operations/bluegreen/local-bluegreen-deployment.md:3-21 は既存TunnelをHAProxyへ接続します。
  • 図での扱い: 通常のWeb/API本文もCloudflare Edge/Tunnelを通るものとして描きました。Accessによる認証はadmin hostだけと分けています。
  • 未解決: 法務文書を実装に合わせるか、ネットワーク経路を文書に合わせるかの判断が必要です。

C02: backup保持#

  • 資料: プライバシーポリシー :147-157 は復旧backupを3暦月保持とします。
  • 設定例: config/pc-deploy.inputs.example.env:62-73 は30日です。
  • 実装確認: isolated restore trialとbackup要件/evidence contractはありますが、定常 pg_dump、base backup、WAL archive、schedulerに相当するproduction jobは見つかりませんでした。
  • 図での扱い: backup storeを確定ノードにせず、データ表で「方針の不一致・実装/稼働未確認」としました。

C03: production runtime方式の併存#

  • 既存経路: compose.yaml:1-121 は単一の通常SaaS containerを定義します。
  • 新経路: deploy/local-bluegreen/ と docs/operations/bluegreen/local-bluegreen-deployment.md:3-56 はWeb/Workerをblue/green分離し、HAProxyを固定originにします。
  • 図での扱い: 直近追加のproduction用blue/greenを、実装とsystemd/configが揃った主対象として採用しました。ただし実配備は未確認で、単一runtimeを削除済みとは扱いません。

C04: policy上の地域・provider保持とrepository証明範囲#

  • policyは国内自社server、D1 APAC、OpenAIの米国を含む処理、Access log 24時間、OpenAI abuse log最長30日等を説明します。
  • repositoryから確認できるのは、接続先種別、store:false、D1 binding、minimization、設定名までです。実ホスト所在地、D1 jurisdiction、Access plan/log retention、OpenAI project data controls/DPAは管理画面・契約でしか確認できません。
  • 図での扱い: 自社管理hostの国内所在やprovider保持を確定ラベルにせず、注記とデータ表で未確認にしました。

未確認事項と確認に必要な証跡#

未確認事項断定できない理由確認に必要な資料・管理画面項目
productionがblue/greenか単一runtimeか、active slot/台数両方式の設定がrepoに併存し、hostへ接続していないsystemd status、稼働container一覧、承認済みplatform/release JSON(秘密値除外)、HAProxy state
production hostの所在地・所有責任policy記述だけで物理/VM配置を証明できないhosting/asset台帳、契約、datacenter所在地、責任分界
Cloudflare Tunnel route、Access application/policyconfig例と検証コードだけでdashboard実値を証明できないTunnel public hostname→origin、Access app hostname/AUD、IdP/OTP、allowlist、MFA、session duration、plan
Auth Worker/D1/Emailのdeployed versionとresource分離wrangler.jsonc はdeploy結果ではないWorker version/route、D1 binding/migration list/location、Cron、Email verified sender、secret namesの存在(値不要)
OpenAI project設定・契約・保持・学習利用store:false はAPI request設定で、provider account/contract全体ではないproject data controls、data sharing off、retention/ZDR/MAM status、DPA、subprocessor/region、key scope
PostgreSQL backup/PITR/offsite/復元実績入力例・容量試算・trial scriptは定常運用を証明しないbackup scheduler、repository、暗号化、retention、WAL/PITR、直近成功記録、restore test、RPO/RTO
集中log/alert/pagerの実運用contractとoptional operations profileはあるが外部manifestがないlog sink、retention、redaction sample、alert state、pager/on-call manifest、稼働agent
外部ファイルのprovider/保持/権限アプリは任意HTTPS URLしか保持しない導入機関の保管サービス、ACL、保持/削除、リンク共有方針
実トラフィックでブラウザが行う外部通信sourceではsame-origin fetchと任意リンクを確認したが、実ブラウザ/CSP/拡張/外部設定は未観測production HAR/CSP report(個人情報除去)、DNS/Tunnel/edge log sample

生成・機械検証#

以下は成果物完成後に実行した結果です。

検査コマンド結果
SVG/PNG・Markdown HTML再生成node docs/architecture/tools/generate.mjs成功。SVG 7枚、PNG 7枚、Markdown由来HTML 7ページを生成
モデル・根拠・layout・安全性node docs/architecture/tools/verify.mjs成功。主図14 node/15 edge、8 stakeholder connection、補助図5 runtime view、62 evidenceのID・集約・endpoint、根拠path/line、node overlap、SVG metadata、PNG寸法、必須file、全ローカルlink/image、credential-like patternを検査
PNG寸法verifier内のsharp.metadata()stakeholder 2560×1440、engineer 2560×1600、5枚の補足図は各2560×1440
JSON構文node -e / verifierのJSON parse成功
ローカルHTMLGoogle Chrome 153.0.8010.36でindex.html、データフローHTML、DB方式比較HTMLを開き、console/page error、画像、表、横overflow、見出しを検査1440×1000、390×844でconsole/page error 0、root overflow 0、画像欠落0。mobileでは広幅の図と表だけを各枠内で横スクロール
文書ナビゲーションindex.htmlの「データフロー」「DB方式比較」リンクから各説明ページへ移動各ページのtitleとH1が「データの流れと保存先|構成資料」「DB操作・処理の新旧比較|構成資料」で一致することを確認
ブラウザ実行制約最初のsandbox内Chrome起動と、承認後のローカル限定再実行初回はCrashpadのsetsockopt制約でSIGTRAP。承認済みの昇格実行で、外部通信を行わず成功
視覚確認engineer、Blue-Green Deployment、データフロー、DB新旧図の生成PNGとHTML screenshotを実際に開いて確認成功。文字化け、箱・文字の重なり、切れた矢印、曖昧な終点がないことを確認
デモ資料同期・回帰試験npm --prefix okr-cai-saas run sync:architecture-documents、npm --prefix okr-cai-saas-demo test同期成功。demo構造検査とVitest 4 files/44 testsが全て成功
変更範囲git diff --check、git status --shortdocs/architecture/、デモ資料一覧、デモ設計資料だけを変更

初版の主図トップページの目視記録は verification-assets/index-desktop.png と verification-assets/index-mobile.png です。今回のトップ/データフロー/DB方式比較ページのデスクトップ・モバイル確認画像は、リポジトリ外の /home/tb/codex-tmp/architecture-data-flow-2026-10-01/ と /home/tb/codex-tmp/architecture-db-comparison-2026-10-01/ に保存しました。

2026-09-29のデモ統合時には、build済みstandaloneでデモ一覧と構成資料トップを確認済みです。2026-10-01の更新では、資料同期とデモ回帰試験を実行し、生成HTMLはfile URLで再確認しました。検証scriptは文字の実レンダリング幅を完全には証明できないため、機械検査だけで完了とはせず、SVG/PNGとHTMLの視覚確認を別に実施しました。

再生成#

node docs/architecture/tools/generate.mjs
node docs/architecture/tools/verify.mjs

外部ネットワークは不要です。共通内容は architecture-model.json、配置は sources/layouts.mjs、描画規則は tools/generate.mjs、Markdown HTML変換規則は tools/render-markdown.mjs にあります。