HELM × LINEAR · DECISION BRIEF

Sync Architecture

GENERATED 2026-08-11 22:52 JST · HELM GIT @6bd2929 · PANEL: FABLE / GPT-5.6 / GROK-4.5
165
TESTS PASSING
linear-sync suite
2
DIRECTIONS PROVEN
push 17 op · pull [x]
8
DECISIONS PENDING
await owner Q-1..Q-8

ARCHITECTURE — role split

vault (canon) markdown · git · 正典 Siri / Shortcuts / helm-app capture funnel → inbox 直行 reconciler (mini/MBP) 3-way · plan/apply · 収束 assert Linear 成果物タスクの実行面 delegate · 期日 · 完了 pull: done/due push: projection surfaces (Tailscale) 閲覧専用 · 外部送信ゼロ agent runner (mini) allowlist · 監査は mini 一次 private / 健康 / 法務 外部射影 永久禁止 Obsidian Bases (将来) 同一 store の UI · iCloud 後に実測
CURRENT: Linear が唯一の到達可能なモバイル実行面。キャプチャは vault inbox 第一着地・private は永久非射影。TARGET に切替えると iCloud 統合後の Bases(同一 store の構造化 UI・同期消滅)が加わる。

SYNC PIPELINE — deterministic plan → gate → apply → converge

  1. 01lock 取得 · key 解決(env → file → 1Password)
  2. 02state v2 strict load · SCOPE 承認記録の検証
  3. 03vault 全域 lint(task ID · 継続行 · 孤児 · metadata-loss)
  4. 04canon snapshot · 厳密な日付/時刻検証
  5. 05Linear 全量 fetch(includeArchived · cursor 自前集計)
  6. 06free 上限の自前カウント(200 warn / 250 create 拒否)
  7. 07marker 探索 → adopt / create 判定(複数一致は停止)
  8. 08全フィールド 3-way 比較 → 決定的 op plan + hash
  9. 09preflight: error / 未承認 conflict は mutation 前に非0終了
  10. 10apply: canon transaction → 最小 field mutation → 再fetch → state 保存(pull 時は .migration-lock で serve.mjs と調停 — #21 実装済み)
  11. 11再scan · 再fetch · 再plan → op 集合が空 = 収束を assert
  12. 12lock 解放(script は git commit しない)
webhook payload は状態として信用しない(署名検証 + トリガーのみ)。polling が主・稼働帯 60s、SLO: 健全時 p95 ≤ 60s / 常時 p95 ≤ 90s。

FIELD OWNERSHIP — who may write what

FIELDOWNERSHIPNOTES
完了 (checkbox)BIDIRECTIONAL3-way · 競合は canon 勝ち + 明示ログ · standing approval 候補
期日 📅BIDIRECTIONAL実在日のみ · standing approval 候補
優先度S3 · LOSSY NORM4段↔3段は非全単射 · Urgent shadow 保持 · 自動 apply 対象外
title / descriptionCANON → LINEARLinear 側編集は proposed_* として plan に保全(捨てない・自動反映しない)
組織 / Project / LabelCANON → LINEARorg:* namespace のみ差分更新 · 他 Label 不可侵
実行 state (In Progress…)LINEAR = 入力デバイス消費時に canon へ来歴 stamp · 中間 state は上書きしない
cycle / comment / 定期タスクNOT SYNCEDcycle は Linear 固有 · 定期は periodic/daily-log が所有
Goal / Deadline (PROJECT.md)CANON → LINEAR (S5)構造化完了まで射影のみ

PANEL VERDICT — 3 models · 3 rounds · adversarial

合意(3者一致 = 異種モデル収束・強い証拠): ①「単一ハブ」は誤った問い — 役割分担が答え ② 全プロパティ・完全双方向・ノータイムは字面では誤り ③ private/法務/健康/金銭は外部射影しない — データ分類の成文化が先決 ④ Reminders はハブ不可・漏斗のみ(TCC 構造制約)/ Notes は API 皆無で死亡 ⑤ webhook は配送非保証 — トリガー専用 + polling 照合 ⑥ agent は allowlist・未信頼入力・完了自己申告禁止。
LINEAR 継続 (縮小定義)
.82–.88
全双方向の否定
.88–.93
BASES 将来昇格
.55–.72
要望2への回答: 字面で満たす唯一の候補は実は Obsidian Bases(同期が存在しないから)。ただしモバイル経路が iCloud 統合(未完・Q-7)に依存するため、今日の主面は Linear、将来の主面判定は実測ゲート(W5)で。編集は「消える」のではなく「滞留して必ず収束」が正しい約束。

ROADMAP — workstreams & gates

W0 DONE.migration-lock #21 — serve.mjs との canon 書込調停(165 tests · mutation 3種検出済み)
W1 READYstanding approval + launchd 60s sync — モバイル体感の本体。Q-4 承認のみで開始可
W2S2 射影 — org Label + Project(Q-1 の SCOPE 承認後)
W3 OPTwebhook トリガー — W1 だけで SLO 達成可のため保留推奨(Q-5)
W4SLI 観測 — weekly-review / helm-doctor に同期健全性を組込み(承認不要・読取のみ)
W5Bases 評価 — ゲート記録は即開始可(Q-8)· 実測は iCloud 統合後(Q-7)
W6agent 実行面 — OAuth app + allowlist runner · 研究/下書きクラスで shadow 2週間(Q-6)
S3–S5priority 正規化 → capture(漏斗より劣後に再順序)→ Goal/Deadline 射影 — 既存設計のまま

DECISION QUEUE — awaiting owner · nothing executed

不在中は L0(外部送信・canon 書込・インフラ変更)を一切実行していません。各カードの推奨はパネル裁定に基づきます。

Q-1SCOPE 拡大 — どのプロジェクトを Linear に射影するか
推奨: hydrogie を 90日ロードマップの Batch Approval 完了後に最優先で追加(G1 8/21 期限・モバイル可視性の価値最大)。household-finance / icloud-consolidation は Project 射影のみ(タスク行なし)。traffic-accident は射影しない(タイトルすら法務・健康文脈)。seaseed / father-macbook は対象外・self-audit は project-close へ。
実測: vault の未完了 checkbox 784 行中、生きた同期対象は 16 行 — ファイル単位 opt-in の維持が前提。
Q-2データ分類ポリシーの成文化(パネル3者一致の最重要欠落)
推奨: 「外部射影可 = memory/work/** と projects/*(private 案件除く)のみ。private/** · self/health/** · 金額 · 法務は不可」を spec 化し lint で強制。以後の SCOPE 拡大・agent 入力・surface 生成すべての前提になる。
Q-3JUK-1〜4, 21 の削除(5件)
推奨: 全削除。JUK-1〜4 は Linear onboarding サンプル、JUK-21 は archive round-trip テスト成果物("safe to delete" 明記済み)。現在の linear-only 警告 5 件がゼロになる。
Q-4standing approval クラスの常設承認 → W1 解禁
推奨: 承認。対象は「(1) 真の競合でない (2) 損失変換なし (3) 意味・分類・本文を変えない (4) 完了 flip / 期日変更のみ (5) hash・revision 監査可能」の全充足 op のみ。これで mini の launchd が 60 秒周期で自動 sync でき、「Linear で完了 → 90 秒以内に canon 反映」が常時成立。違反 1 件で該当クラスは即レビュー制へ戻す。
Q-5webhook 導入(W3)
推奨: 保留。 W1 の 60s polling で SLO 達成可能・公開エンドポイント(Tailscale Funnel)の追加リスク回避。導入する場合は署名検証 + 無効化検知 SLI をセットで。
Q-6agent 実行面(W6)の開始
推奨: Linear OAuth app(app user)登録 + ガードレール一式(交差 allowlist · 未信頼入力境界 · 証拠付き二段階完了 · 予算/自動停止 · mini ローカル監査)で「研究・下書き」クラスのみ shadow 運用 2 週間。Preview 消滅に備え mini cron + 素 API を常設バックアップ面に。
Q-7iCloud 統合の再開(Bases モバイル化の唯一の前提)
推奨: 既存設計 draft(2026-07-10・切り分けマトリクス §2)の合意プロセス再開。候補E(Bases)がモバイル主面候補になるための唯一の経路。前提: ADP 有効化ほか。
Q-82週間ゲートに「Bases で代替可能だったか」記録列
推奨: 即開始(運用のみ・承認は形式的)。日報に 1 行記録し、W5 の Bases 昇格判定を実データで下す。

METRICS — SLO & weekly SLIs

CONVERGENCE  p95 ≤ 60s (webhook healthy) · ≤ 90s (always, host awake)
LOSS         silent-loss paths = 0 · every diff converges or surfaces
CAPTURE      reaches correct store ≤ 2min (logged)