399 lines
13 KiB
Markdown
399 lines
13 KiB
Markdown
|
|
# Current Task: Phase 6.15 - Multi-threaded Safety + TLS Performance
|
|||
|
|
|
|||
|
|
**Date**: 2025-10-22
|
|||
|
|
**Status**: ✅ **P1.5完了!** string-builder ブレークスルー達成 🎉
|
|||
|
|
**Goal**: mimalloc-bench 実行 → 実力測定(直リンク400M越え+総合で差をつける)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🚀 **Phase 6.15 P1.5 完了報告** (ChatGPT TLS実装)
|
|||
|
|
|
|||
|
|
### 🎊 **最大の成果: string-builder が実行可能に!**
|
|||
|
|
|
|||
|
|
| Phase | string-builder | 結果 |
|
|||
|
|
|-------|----------------|------|
|
|||
|
|
| **P0** | ❌ タイムアウト | 実行不可 |
|
|||
|
|
| **P1** | ❌ タイムアウト | 実行不可 |
|
|||
|
|
| **P1.5** | **83ns/op (11.9M ops/sec)** ✅ | **動いた!** 🚀 |
|
|||
|
|
|
|||
|
|
**mimalloc 比較**: 14ns/op → **5.9倍遅い** が、実行可能になったことが重要
|
|||
|
|
|
|||
|
|
### 📊 **ベンチマーク結果詳細**
|
|||
|
|
|
|||
|
|
**string-builder (8-64B, 小サイズ)**:
|
|||
|
|
- hakmem P1.5: 83ns/op (11.9M ops/sec)
|
|||
|
|
- mimalloc: 14ns/op (67.8M ops/sec)
|
|||
|
|
- 差: -82.4% ← 遅いが実行可能になった!
|
|||
|
|
|
|||
|
|
**json (64KB, 中サイズ)**:
|
|||
|
|
- hakmem P1.5: 280ns/op (3.56M ops/sec)
|
|||
|
|
- mimalloc: 266ns/op (3.76M ops/sec)
|
|||
|
|
- 差: -5.3% ← ほぼ互角
|
|||
|
|
|
|||
|
|
**mir (256KB, 大サイズ)**:
|
|||
|
|
- hakmem P1.5: 911ns/op (1.10M ops/sec)
|
|||
|
|
- mimalloc: 963ns/op (1.04M ops/sec)
|
|||
|
|
- 差: **+5.7% hakmem が速い!** 🚀
|
|||
|
|
|
|||
|
|
### 🛠️ **P1.5 実装内容** (ChatGPT提供)
|
|||
|
|
|
|||
|
|
1. **グローバルロック完全撤廃** + 再入ガード維持
|
|||
|
|
2. **L2 Pool 細粒度ロック化** + atomic nonempty_mask
|
|||
|
|
3. **L2.5 Pool シャードロック化** + atomic bits
|
|||
|
|
4. **Tiny Pool TLSマガジン化** ← **最重要!**
|
|||
|
|
- 構造: `TinyMagazineEntry[256]` with `{ptr, owner_slab}`
|
|||
|
|
- Lock-free push/pop
|
|||
|
|
- Registry は読み取りロックフリー
|
|||
|
|
5. **64KB ページ/バンドル mmap 化**
|
|||
|
|
6. **BigCache 偽共有削減** (64B alignment)
|
|||
|
|
7. **Site Rules 既定 OFF** (`HAKMEM_SITE_RULES=1`で有効化)
|
|||
|
|
|
|||
|
|
**詳細**: `PHASE_6.15_P1.5_COMPLETION.md`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ✅ Phase 9.3 進捗(mimalloc風 Tiny fast-path)
|
|||
|
|
|
|||
|
|
### 実績(直リンクベンチ)
|
|||
|
|
- Direct (PGO): best 415.75 → 428.62 M ops/sec(環境)
|
|||
|
|
- System malloc: best 412.23 M ops/sec
|
|||
|
|
- 結果: 直リンクPGOで System を上回る帯まで押し上げ
|
|||
|
|
|
|||
|
|
### 変更概要(ホットパス極小化)
|
|||
|
|
- TLS Magazine: 在庫あり時は即pop→return(空時のみ縮小管理)
|
|||
|
|
- SuperSlab試行は magazine 空の時のみ(ホットパスに載せない)
|
|||
|
|
- Tiny fast-pathを hak_alloc_at() の最前段に移動(成功時は即return)
|
|||
|
|
- Tiny命中時はヒストグラム計測もスキップ(ホットパスゼロ負荷)
|
|||
|
|
- free側: Magazine空きありなら即push→return(remote-drainは満杯時のみ)
|
|||
|
|
|
|||
|
|
### 次の最適化(提案)
|
|||
|
|
1) freeホットパスのさらに薄型化(push/returnの一層徹底)
|
|||
|
|
2) 共有ライブラリ版(LD_PRELOAD)のPGO・オーバーヘッド削減
|
|||
|
|
3) ベンチマークモード(観測・学習完全OFF、PGO、Tiny特化)ドキュメント整備
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📈 **Phase 6.15 P1 完了報告** (ChatGPT シャードロック実装)
|
|||
|
|
|
|||
|
|
### ✅ **達成事項**
|
|||
|
|
|
|||
|
|
**json (64KB)**: P0 291ns → P1 279ns (**+4.1%高速化**)
|
|||
|
|
**mir (256KB)**: P0 888ns → P1 880ns (**+0.9%高速化**, mimalloc を **9.4%上回る!**)
|
|||
|
|
|
|||
|
|
### ❌ **問題点**
|
|||
|
|
|
|||
|
|
**string-builder (8-64B)**: 依然としてタイムアウト(P1.5で解決)
|
|||
|
|
|
|||
|
|
**詳細**: `PHASE_6.15_P1_BENCHMARK_RESULTS.md`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎉 **Phase 6.15 P0 完了報告**
|
|||
|
|
|
|||
|
|
### ✅ **P0.3 達成内容** (2025-10-22 最新)
|
|||
|
|
|
|||
|
|
**実装**:
|
|||
|
|
- ✅ EVOLUTION block 復元(`#if 0` → `#if HAKMEM_FEATURE_EVOLUTION`)
|
|||
|
|
- ✅ 環境変数制御追加(`HAKMEM_EVO_SAMPLE`、デフォルト=0で無効)
|
|||
|
|
- ✅ デフォルト無効化でPool ERRORを回避
|
|||
|
|
|
|||
|
|
**ベンチマーク結果** (bench_allocators, 64KB):
|
|||
|
|
|
|||
|
|
| モード | 平均時間 | ops/sec | vs system |
|
|||
|
|
|--------|----------|---------|-----------|
|
|||
|
|
| **hakmem (EVO無効, default)** | 210ns | 4.76M | **+1.0%** ✅ |
|
|||
|
|
| **system malloc** | 208ns | 4.80M | baseline |
|
|||
|
|
| **hakmem (EVO有効, 1024)** | 215ns | 4.64M | **+3.4%** |
|
|||
|
|
|
|||
|
|
**結論**: ✅ **system malloc とほぼ同等の性能を達成!**
|
|||
|
|
|
|||
|
|
**詳細**: `PHASE_6.15_P0.3_COMPLETION.md`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### ✅ **P0.2 発見** (Gemini診断)
|
|||
|
|
|
|||
|
|
**調査**:
|
|||
|
|
- ❌ EVOLUTION無効化で性能悪化(1.05M → 0.62M、-41%)
|
|||
|
|
- ✅ 軽量ベンチマークで system と同等(214ns vs 213ns)
|
|||
|
|
|
|||
|
|
**学び**:
|
|||
|
|
- larson は重すぎて調査に不向き(26分実行)
|
|||
|
|
- bench_allocators で基本性能確認すべき
|
|||
|
|
|
|||
|
|
**詳細**: `PHASE_6.15_P0.2_INVESTIGATION.md`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### ✅ **P0.1 達成内容** (printf制御)
|
|||
|
|
|
|||
|
|
**実装**:
|
|||
|
|
- ✅ HAKMEM_LOG macro 実装(コンパイル時+実行時制御)
|
|||
|
|
- ✅ 15箇所の printf/fprintf → HAKMEM_LOG 置換
|
|||
|
|
- ✅ Release build: zero overhead
|
|||
|
|
|
|||
|
|
**結果**: printf recursion 問題解決
|
|||
|
|
|
|||
|
|
**詳細**: `PHASE_6.15_P0.1_COMPLETION.md`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### ✅ **P0 Safety Lock 達成内容** (Step 2完了)
|
|||
|
|
|
|||
|
|
**実装**:
|
|||
|
|
- ✅ pthread_mutex グローバルロック追加
|
|||
|
|
- ✅ 再帰ガード(`g_hakmem_lock_depth`)実装
|
|||
|
|
- ✅ malloc/free/calloc/realloc wrapper 修正
|
|||
|
|
|
|||
|
|
**性能問題発見**:
|
|||
|
|
- 期待: 13-15M ops/sec
|
|||
|
|
- 実測: 1.2M ops/sec (-92% 😱)
|
|||
|
|
- 原因: printf() recursion → __libc_malloc fallback
|
|||
|
|
|
|||
|
|
**詳細**: `PHASE_6.15_PLAN.md`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📊 **Phase 6.14 完了 + 問題発見**
|
|||
|
|
|
|||
|
|
### ✅ **Phase 6.14 達成内容**
|
|||
|
|
- Registry ON/OFF 切り替え実装(Pattern 2、環境変数 `HAKMEM_USE_REGISTRY`)
|
|||
|
|
- O(N) Sequential が O(1) Hash より 2.9-13.7倍速いことを実証
|
|||
|
|
- デフォルト: `g_use_registry = 0` (O(N)、L1 cache hit 95%+)
|
|||
|
|
|
|||
|
|
### ❌ **重大問題発見**
|
|||
|
|
**hakmem は完全スレッドアンセーフ**(pthread_mutex が一切無い)
|
|||
|
|
|
|||
|
|
**影響**:
|
|||
|
|
- 1-thread: 15.1M ops/sec ✅ 正常
|
|||
|
|
- 4-thread: 3.3M ops/sec ❌ -78% 崩壊(Race Condition)
|
|||
|
|
|
|||
|
|
**Phase 6.14 報告の 67.9M ops/sec**: 再現不可能(測定ミスの可能性)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎯 **Phase 6.15 実装計画**
|
|||
|
|
|
|||
|
|
**3段階アプローチ** (12-13時間、6日間):
|
|||
|
|
|
|||
|
|
### ✅ **Step 1: ドキュメント更新**(完了)
|
|||
|
|
- [x] Phase 6.14 完了レポート修正
|
|||
|
|
- [x] CURRENT_TASK.md 更新(このファイル)
|
|||
|
|
- [x] 検証完了
|
|||
|
|
|
|||
|
|
### ✅ **Step 2: P0 Safety Lock**(完了)
|
|||
|
|
- [x] pthread_mutex グローバルロック実装
|
|||
|
|
- [x] P0.1: printf制御(HAKMEM_LOG macro)
|
|||
|
|
- [x] P0.2: clock_gettime影響調査(Gemini診断)
|
|||
|
|
- [x] P0.3: EVOLUTION復元+環境変数制御
|
|||
|
|
- [x] ベンチマーク検証: system malloc と同等(+1.0%)
|
|||
|
|
|
|||
|
|
**結果**: ✅ **基本性能 system と同等を達成!**
|
|||
|
|
|
|||
|
|
### ⏭️ **Step 3: TLS マルチスレッド対応**(次の目標)
|
|||
|
|
- **P1**: Tiny Pool TLS(2時間)→ 4T = 12-15M ops/sec
|
|||
|
|
- **P2**: L2 Pool TLS(3時間)→ 4T = 15-18M ops/sec
|
|||
|
|
- **P3**: L2.5 Pool TLS(3時間)→ 4T = 18-22M ops/sec
|
|||
|
|
|
|||
|
|
**Phase 6.13 実績**: 15.9M ops/sec (+381%) ✅ **実証済み**
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📁 **関連ドキュメント**
|
|||
|
|
|
|||
|
|
- **完全計画**: `PHASE_6.15_PLAN.md` (1,008行)
|
|||
|
|
- **サマリー**: `PHASE_6.15_SUMMARY.md` (152行)
|
|||
|
|
- **クイックリファレンス**: `PHASE_6.15_QUICK_REF.md` (269行)
|
|||
|
|
- **技術調査**: `THREAD_SAFETY_SOLUTION.md`
|
|||
|
|
- **P1.5 完了**: `PHASE_6.15_P1.5_COMPLETION.md` (TLSマガジン化) ⭐最新
|
|||
|
|
- **P1 完了**: `PHASE_6.15_P1_BENCHMARK_RESULTS.md` (シャードロック化)
|
|||
|
|
- **P0.1 完了**: `PHASE_6.15_P0.1_COMPLETION.md` (printf制御)
|
|||
|
|
- **P0.2 調査**: `PHASE_6.15_P0.2_INVESTIGATION.md` (Gemini診断)
|
|||
|
|
- **P0.3 完了**: `PHASE_6.15_P0.3_COMPLETION.md` (EVOLUTION復元)
|
|||
|
|
- **Phase 6.14 完了**: `PHASE_6.14_COMPLETION_REPORT.md` (修正済み)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔄 **前回完了タスク**
|
|||
|
|
|
|||
|
|
### Phase 6.14 (2025-10-21)
|
|||
|
|
- Registry ON/OFF 切り替え実装(Pattern 2)
|
|||
|
|
- 環境変数 `HAKMEM_USE_REGISTRY` で切替可能
|
|||
|
|
- O(N) vs O(1) 性能比較完了
|
|||
|
|
|
|||
|
|
### Phase 6.13 (2025-10-21)
|
|||
|
|
- TLS 有効性検証(+123-146% 改善)
|
|||
|
|
- larson benchmark 実施(1/4/16 threads)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📊 **hakmem 現在の状況**
|
|||
|
|
|
|||
|
|
> **📌 責務範囲**: このファイルは hakmem 専用です
|
|||
|
|
> - hakmem 実験アプリの進捗・タスク・ベンチマーク結果のみ記載
|
|||
|
|
> - Hakorune 本体の開発タスクは `/CURRENT_TASK.md` へ
|
|||
|
|
> - 横断的な課題も `/CURRENT_TASK.md` へ
|
|||
|
|
|
|||
|
|
**場所**: `/apps/experiments/hakmem-poc/`
|
|||
|
|
|
|||
|
|
**概要**: C言語ABI対応メモリアロケータ(mimalloc/jemalloc対抗)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ✅ **過去の主要完了フェーズ**
|
|||
|
|
|
|||
|
|
### Phase 6.12.1 完了(2025-10-21)
|
|||
|
|
**実装完了**: ChatGPT Pro (gpt-5) 推奨 Plan A の Step 1+2 完了
|
|||
|
|
|
|||
|
|
**Step 1: SlabTag完全削除** (15分)
|
|||
|
|
- 期待: 18,832ns → 9,400ns (2倍)
|
|||
|
|
- 実測: 18,832ns → 7,355ns (2.56倍) ✨ **予想より22%良い!**
|
|||
|
|
|
|||
|
|
**Step 2: Slab Registry実装** (1時間)
|
|||
|
|
- 期待: 7,355ns → 1,500ns (5倍)
|
|||
|
|
- 実測: 7,355ns → 10,471ns ❌ **43%悪化**
|
|||
|
|
|
|||
|
|
**技術的発見**: slab数が少ない(8-16個)→ O(N)探索で十分速い
|
|||
|
|
|
|||
|
|
### Phase 6.11.3 完了(2025-10-22)
|
|||
|
|
**実装完了**: Profiling Infrastructure (オーバーヘッド可視化)
|
|||
|
|
|
|||
|
|
**測定結果** (vm scenario, 10 iterations):
|
|||
|
|
```
|
|||
|
|
syscall_munmap: 131,666 cycles (41.3%) ← #1 既知のボトルネック
|
|||
|
|
hak_alloc: 126,479 cycles (39.6%) ← #2 新発見! 🔥
|
|||
|
|
hak_free: 48,206 cycles (15.1%)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Phase 6.11.2 完了(2025-10-21)
|
|||
|
|
**実装完了**: Region Cache (Keep-Map + MADV_DONTNEED) 戦略
|
|||
|
|
|
|||
|
|
**測定結果**:
|
|||
|
|
```
|
|||
|
|
Phase 6.11.1 (Whale only): 19,132 ns/op
|
|||
|
|
Phase 6.11.2 (Region Cache): 15,021 ns/op
|
|||
|
|
追加改善: -4,111 ns (-21.5%)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Phase 6.11.1 完了(2025-10-21)
|
|||
|
|
**実装完了**: Whale Fast-Path (≥2MB allocations) + Timing Infrastructure
|
|||
|
|
|
|||
|
|
**測定結果**:
|
|||
|
|
```
|
|||
|
|
Before: 48,052 ns/op
|
|||
|
|
After: 19,132 ns/op (-60.2%, -28,920ns)
|
|||
|
|
Whale: 99 hits / 1 miss / 100 puts (99% hit rate!)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Phase 6.10.1 完了(2025-10-21)
|
|||
|
|
**実装完了**: ChatGPT Pro 推奨の4つの最適化
|
|||
|
|
|
|||
|
|
**ベンチマーク結果** (vs mimalloc):
|
|||
|
|
- **json** (64KB): 298 ns (+0.3%) ← ✅ **ほぼ互角!**
|
|||
|
|
- **mir** (256KB): 1698 ns (+47.8%)
|
|||
|
|
- **vm** (2MB): 41312 ns (+142.8%)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔧 環境変数
|
|||
|
|
|
|||
|
|
### Phase 6.4-6.10.1(実装済み)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# P1: Freeポリシー
|
|||
|
|
HAKMEM_FREE_POLICY=batch|keep|adaptive
|
|||
|
|
|
|||
|
|
# P4: THP
|
|||
|
|
HAKMEM_THP=off|auto|on
|
|||
|
|
|
|||
|
|
# Registry ON/OFF (Phase 6.14)
|
|||
|
|
HAKMEM_USE_REGISTRY=0|1
|
|||
|
|
|
|||
|
|
# Profiling (Phase 6.11.3)
|
|||
|
|
HAKMEM_DEBUG_TIMING=1 # Build-time
|
|||
|
|
HAKMEM_TIMING=1 # Runtime
|
|||
|
|
|
|||
|
|
# デバッグ
|
|||
|
|
HAKMEM_VERBOSE=1
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📈 ベンチマーク実行方法
|
|||
|
|
|
|||
|
|
### ビルド
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd /home/tomoaki/git/hakorune-selfhost/apps/experiments/hakmem-poc
|
|||
|
|
make clean
|
|||
|
|
make bench_allocators
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 実行
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 個別ベンチマーク
|
|||
|
|
./bench_allocators --allocator hakmem-baseline --scenario json
|
|||
|
|
|
|||
|
|
# 全ベンチマーク(8種類)
|
|||
|
|
for scenario in json mir vm mixed cold-churn burst phase-change realistic; do
|
|||
|
|
./bench_allocators --allocator hakmem-baseline --scenario "$scenario"
|
|||
|
|
done
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### larson benchmark(Multi-threaded)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# mimalloc-bench から larson をビルド
|
|||
|
|
cd /path/to/mimalloc-bench/bench/larson
|
|||
|
|
make
|
|||
|
|
|
|||
|
|
# hakmem preload で実行
|
|||
|
|
LD_PRELOAD=/home/tomoaki/git/hakorune-selfhost/apps/experiments/hakmem-poc/libhakmem.so \
|
|||
|
|
./larson 1 1000 8 1024 100
|
|||
|
|
|
|||
|
|
# 4-thread
|
|||
|
|
LD_PRELOAD=.../libhakmem.so ./larson 4 1000 8 1024 100
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📚 ドキュメント一覧
|
|||
|
|
|
|||
|
|
### Phase 6関連
|
|||
|
|
|
|||
|
|
| ファイル | 内容 |
|
|||
|
|
|---------|------|
|
|||
|
|
| [PHASE_6.15_PLAN.md](PHASE_6.15_PLAN.md) | Phase 6.15 完全計画 ⭐最新 |
|
|||
|
|
| [PHASE_6.15_SUMMARY.md](PHASE_6.15_SUMMARY.md) | Phase 6.15 サマリー ⭐最新 |
|
|||
|
|
| [PHASE_6.14_COMPLETION_REPORT.md](PHASE_6.14_COMPLETION_REPORT.md) | Registry ON/OFF + Thread Safety Issue |
|
|||
|
|
| [PHASE_6.13_INITIAL_RESULTS.md](PHASE_6.13_INITIAL_RESULTS.md) | TLS 有効性検証 |
|
|||
|
|
| [PHASE_6.12.1_COMPLETION_REPORT.md](PHASE_6.12.1_COMPLETION_REPORT.md) | Tiny Pool P0最適化 |
|
|||
|
|
| [PHASE_6.12_COMPLETION_REPORT.md](PHASE_6.12_COMPLETION_REPORT.md) | Tiny Pool 基本実装 |
|
|||
|
|
| [PHASE_6.11.3_COMPLETION_REPORT.md](PHASE_6.11.3_COMPLETION_REPORT.md) | Profiling Infrastructure |
|
|||
|
|
| [PHASE_6.11.2_COMPLETION_REPORT.md](PHASE_6.11.2_COMPLETION_REPORT.md) | Region Cache |
|
|||
|
|
| [PHASE_6.11.1_COMPLETION_REPORT.md](PHASE_6.11.1_COMPLETION_REPORT.md) | Whale Fast-Path |
|
|||
|
|
| [PHASE_6.10.1_COMPLETION_REPORT.md](PHASE_6.10.1_COMPLETION_REPORT.md) | Site Rules MVP + L2最適化 |
|
|||
|
|
| [THREAD_SAFETY_SOLUTION.md](THREAD_SAFETY_SOLUTION.md) | スレッドセーフ化技術調査 ⭐最新 |
|
|||
|
|
|
|||
|
|
### 設計・論文
|
|||
|
|
|
|||
|
|
| ファイル | 内容 |
|
|||
|
|
|---------|------|
|
|||
|
|
| [BENCHMARK_DESIGN.md](BENCHMARK_DESIGN.md) | ベンチマーク設計 |
|
|||
|
|
| [PAPER_SUMMARY.md](PAPER_SUMMARY.md) | 論文サマリー |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ⏭️ **次のアクション**
|
|||
|
|
|
|||
|
|
1. ✅ Step 1.1 完了(Phase 6.14 完了レポート修正完了)
|
|||
|
|
2. ✅ Step 1.2 完了(CURRENT_TASK.md 更新完了)
|
|||
|
|
3. ▶️ Step 1.3 検証(README.md 確認、検証コマンド実行)
|
|||
|
|
4. ▶️ Step 2 P0 実装開始(Safety Lock、2-3時間)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**最終更新**: 2025-10-22
|
|||
|
|
**担当**: Claude + ChatGPT Pro協調開発
|