読み取り専用の v0.1 を、helm の iOS/iPadOS/macOS エッジに育てる。Brain dump をアプリから投げ、Claude が朝に振り分け案を作り、承認ひとつで helm が更新される。バッジが「今やるべき数」を常時示し、ダッシュボードの各セクションは詳細ページへ展開する。
| # | 決定 | 理由 |
|---|---|---|
| D1 | triage 済み = inbox/archive/ へファイル移動 | 同日の追加キャプチャが自動で「未 triage」に戻る。カウントはルートの行数だけ |
| D2 | バッジ計算式はサーバ側(/api/status.json の badge) | 式変更に TestFlight 配信が不要。badge = Horizon hot(毎日行を除く)+ 未 triage 数 |
| D3 | capture は append + ローカル commit 成功後に 200 | push・再描画 kickstart はベストエフォート。index.lock は 3 回リトライ |
| D4 | 詳細ページは別レンダラー(render-details.mjs) | 既存 render.mjs とゴールデンテストを触らない。テンプレエンジンは共用 |
| D5 | Routine は提案のみ(L0) | 憲法 §3 の人間ゲート準拠。承認 20 回の実績で L2(全自動)昇格を提案 |
| D6 | iPad = TARGETED_DEVICE_FAMILY "1,2" / Mac = Designed for iPad | ダッシュボードは既に ≥720px 2カラム対応 → iPad/Mac は追加コードほぼゼロで desktop グリッド表示。Catalyst は必要になってから |
lib/serve-lib.mjs 新規 — ルート許可リスト・capture 検証・drain 互換フォーマッタ・未 triage カウント・badge 計算(純関数・テスト対象)serve.mjs 書き換え — GET ルーティング / GET /api/status.json / POST /api/capture(16KB 上限・直列化・トレーラー付き commit)collect.mjs — auto.json に captures 数 + lint 全内訳を追加/s/horizon — obligations 全表(要確認・waiting 含む)/s/memory — lint 全ルール内訳 + Δ + バッチ数/s/today — Today + Briefing の統合詳細/s/triage /s/explainer — 既存サーフェスをルーティングCaptureQueue — 永続オフラインキュー・200 でのみ除去・未送信数をボタンに橙バッジ表示BadgeRefresher — BGAppRefresh + フォアグラウンド時に /api/status.json → アプリバッジ/triage-dump スキル — 分類(task / log / horizon / wiki / discard)→ 承認 → 適用 → archive 移動 → 実績カウントbrain-dump-triage(毎朝 07:15・提案のみ)を /schedule で登録| リスク | 対策 |
|---|---|
| mini 上の git 競合(render pull × capture push) | index.lock リトライ・POST 直列化・小さい commit・autostash pull |
| キャプチャ消失 | 構造的にゼロ — 200 まではキューから消さない・200 は commit 後のみ |
| Info.plist 移行で Xcode Cloud 破損 | push 前のローカル generate + build をゲートに |
| BGAppRefresh の間引き(iOS 仕様) | フォアグラウンド更新が保証線。バックグラウンドは補助 |
| POST の悪用面 | tailnet 限定 + 許可リスト + 16KB 上限 + 検証。HTML 側は読み取り専用のまま |
- [ ] … 📅 形式で対象ページに着地 → badge が基準値へ