chore/project-setup で完了(2026-10-02).solo モード
SHA256SUMS 付き)を直送.所見は種類の定義+ JSON 値で持ち,種類の追加で表を作り直さないssh labpc で操作し,研究室 PC では編集しない.研究室 PC に uv 0.12.22・Python 3.12.15 を導入済み.検証プロファイルは作らない(CLI はテストと tiasdata check で確認する)main がまだ存在しない(GitHub・GitBucket とも空).取り込み後に研究室 PC へ clone する(ENV_02).次は PLAN_02 Step 1DeepTIAS後_ID_番号.xlsx)と件数だけで照合し,1085 枚が約 450 人分(2 枚以上の患者 239 人・874 枚)と判明(2026-10-03).取り込みで対応表を読み,患者単位で症例をまとめる設計に直した(PLAN_01・PLAN_02・SPEC_01〜03・ENV_01)
patient_id にしており,同じ患者の画像が学習と評価に分かれている可能性がある.基盤経由に切り替える Step 8 で患者単位の分割に直し,成績の差を記録するimport)にし,使う側には入れないDeepTIAS_TIASJudgeModel\<番号>\ へ移し(同じドライブ内の移動.約 40.6 GB),使わない出力(約 8.1 GB)を削除した(2026-10-03.空き 9.5 GB).元のデータは研究室のサーバにある
2-cropped × 3-resized の作り直しが舌色データセットの画像と画素で一致するかで確認.対応表どおりで引けない 192 件(撮影日等の下位フォルダ・ID と合わないフォルダ名・何枚目の誤り等)は画素の一致で探して全件特定した.Claude は件数だけを見て,番号以外の名前・患者 ID は表示していない.移動・削除はユーザーが実行LabImg × 4-mask は撮影画像全体の大きさで,データセットの画像(枠の大きさ)とは一致しないC:\Users\Papin\clinical-data\ 全体(26,268 ファイル・45.30GB)を E:\clinical-data\ へコピーし,SHA-256 と構成の照合の後に C 側を削除した(2026-10-06.C の空き 53.5GB).docs・.claude/repo-access.json・lab-pc-operation.md のパスを書き換えた
shutil.rmtree の WinError 5).属性を外して再試行する onexc で解決.コピー済み・照合済みだったためデータの欠損は無しtiasdata init を実装(2026-10-06)
src/tiasdata/catalog/migrations/)に置く(サブモジュール・パッケージとして使ったときも見つけられるようにするため).目録と対応表は別系列で版を管理する.凍結した版・所見の書き換え禁止,種類の整合,書式(日時は秒まで)を SQL の CHECK・トリガで強制する(SPEC_02「スキーマで強制する規則」)value_schema_version >= 1 が NULL ですり抜けた/② INTEGER 以外の主キーに NULL が入った → どちらも IS NOT NULL・NOT NULL を明示して解決.③ Windows でパイプ・SSH 越しの出力が cp932 で化けた → CLI の入口で標準出力・標準エラーを UTF-8 に切り替えた.④ ruff format . が docs/ の Markdown 内のコード例を整形した → extend-exclude に docs を追加check で書き込み可能なファイルの数として報告するholds/tiasjudgemodel.toml に 9 枚(122・184・548・566・381・382・515・516・509)を載せ,取り込みで飛ばして件数を報告する(SPEC_03「保留リスト」).508/509 は DeepTIAS の出力と完全一致する 508 を残す
tiasdata import・stats・check を実装(2026-10-06)
holds/ をパッケージの位置から辿って読むdatasets/tongue_color.toml),定義の当てはめと版の作成(freeze),manifest.csv の生成(純関数),tiasdata dataset list・show・freeze,check での全版の manifest の照合を実装(2026-10-06)
assets.kind)や撮影の症例(captures.subject_id)は書き換えられ,書き換えると過去の版の manifest が変わる(check は不一致として見つける).書き換えをトリガで禁止し,症例の誤りは訂正の行で直す仕組みにするかを決める(保留中の 122/184 の患者の確定で関係する)tiasdata export.export.py)と,目録に依存しない読み込み・検証(tiasdata.load・open_bundle・Bundle.verify・fingerprint.bundle.py)を実装(2026-10-08)
import tiasdata で目録まわり(catalog・store・config・sqlite3)を読み込まない(計算サーバで使うため).共有する純関数は manifest.py に集めた.dataset.json に書き出した日時を入れず同じ版から同じバイト列にする(既存のバンドルをバイト単位で照合できる).バンドルは読み取り専用にしない(作り直せて消す前提).load の版はキーワード必須.エラーにバンドルの場所を出さないBundleRow.annotations の入れ子の値が書き換えられる(使う側の誤りを防ぐなら読み取り専用にする).書き出しに失敗すると空の bundles/<名前>/ が残る(害はない)holds/.飛ばす)を要確認リスト(reviews/.印を付けて取り込む)に変え,所見の種類 review(catalog/0002)を追加.同じ中身ですべて要確認の番号は,ファイルを 1 つだけ撮影にひも付けずに登録する.データセットは撮影にひも付かないファイルを除いて件数を報告する.あわせて tiasdata backup(目録と対応表をそれぞれの backups に複製・integrity_check)を実装
git pull → uv sync --no-dev --extra import → tiasdata init(0002 を適用)→ tiasdata import tiasjudgemodel(既存 1076 枚は飛ばし 9 枚を追加)→ check・stats → 版 1 → backupimporters/tongue_color_folders.py が約 1000 行(走査・計画と照合・登録でモジュールを分けるとよい).別の媒体への退避は未定.書き出し先のパスが Windows の上限(260 文字)を超えると export がスタックトレースで落ちる(研究室 PC のパスでは当たらない見込み)