47 lines
1.9 KiB
Markdown
47 lines
1.9 KiB
Markdown
|
|
# Box-First Enforcement Kit(運用メモ)
|
|||
|
|
|
|||
|
|
このプロジェクトでは「箱を先に積む(Box-First)」を最優先にし、実装速度のボトルネックを“下の箱(境界・足場)不足”で詰まらせない方針を採用します。
|
|||
|
|
|
|||
|
|
## PR テンプレ(.github/pull_request_template.md)
|
|||
|
|
PR で以下のチェックを通すことを習慣化します。
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
### Box-First Check
|
|||
|
|
- [ ] 境界は1箇所に集約(変換はここだけ)
|
|||
|
|
- [ ] 設定は JitConfigBox 経由(env直読みなし)
|
|||
|
|
- [ ] フォールバック常設(panic→VM/CPython)
|
|||
|
|
- [ ] 観測追加(stats.jsonl / CFG dot)
|
|||
|
|
|
|||
|
|
### DoD(完了条件)
|
|||
|
|
- [ ] ゴールデン3件(成功/失敗/境界)更新
|
|||
|
|
- [ ] 回帰CI green(env直読み検出なし)
|
|||
|
|
- [ ] stats: fallback率・理由が記録される
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## CI ガード(.github/workflows/box_first_guard.yml)
|
|||
|
|
現状は「アドバイザリ(continue-on-error)」で運用。違反箇所を可視化します。
|
|||
|
|
|
|||
|
|
- 直の `std::env::var(` を `src/jit/config.rs` と `src/jit/rt.rs` 以外で禁止(アドバイザリ)
|
|||
|
|
- B1 署名のスイッチ箇所以外での `B1` 文字列の出現を禁止(アドバイザリ)
|
|||
|
|
- 将来的に `stats.jsonl` 出力の有無も検査予定
|
|||
|
|
|
|||
|
|
必要になったら `continue-on-error: false` にして強制化します。
|
|||
|
|
|
|||
|
|
## “下の箱”不足の早期警報(運用ルール)
|
|||
|
|
進みが悪い/壊れやすい兆候が出たら、まず以下から最小1個だけ足して再挑戦:
|
|||
|
|
|
|||
|
|
- BoundaryBox(変換一本化)
|
|||
|
|
- JitConfigBox(設定の箱)
|
|||
|
|
- ObservabilityBox(json/dot出力)
|
|||
|
|
- Effect Token(副作用の明示)
|
|||
|
|
|
|||
|
|
## Box-Fitness ミニ指標(PRに1行)
|
|||
|
|
|
|||
|
|
- `boundary_changes=1`(変換点の個数)
|
|||
|
|
- `env_reads=0`(env直読の個数)
|
|||
|
|
- `fallback_paths>=1`(逃げ道の数)
|
|||
|
|
- `stats_fields>=5`(記録の粒度)
|
|||
|
|
|
|||
|
|
この4つを満たせていれば「箱の足場は十分」の合図。
|
|||
|
|
|