{
  "date_jst": "2026-09-02",
  "generated_at": "2026-09-01T23:16:59Z",
  "action": "maintenance",
  "article": null,
  "pr": null,
  "streak": {
    "consecutive_no_article_days": 5,
    "last_article_date_jst": "2026-08-28",
    "last_production_change_date_jst": "2026-08-28",
    "days_since_production_change": 5
  },
  "data_freshness": {
    "bq_export_last_data_date": "2026-08-30",
    "bq_export_days_accumulated": 21,
    "bq_checked": true,
    "manual_snapshot_label": "2026-08-24",
    "$note": "**この環境の bq-preflight は資格情報が無く落ちる**ため、本日 08:05 JST の seo-daily run 33569372663 の Export preflight ログから読んだ（Runbook §0-4 ③）。`fresh — newest data 2026-08-30 (3 days behind, normal is 2–3)` / `21 days of history — a full 28-day window is first possible on 2026-09-06` / `no gaps, no stalled table, no half-finished export attempt`。**穴なし。**28日窓まであと5日。"
  },
  "cost": {
    "month": "2026-09",
    "cap_usd": 280,
    "spent_usd": 22.9465,
    "remaining_usd": null,
    "remaining_usd_upper_bound": 257.0535,
    "spent_usd_is_lower_bound": true,
    "over": false,
    "runs": 2,
    "shipped": 2,
    "usd_per_shipped": 11.4733,
    "by_route": {
      "actions": {
        "runs": 2,
        "spent": 22.94652
      },
      "ccr": {
        "runs": 0,
        "spent": 0
      }
    },
    "ccr_measured": false,
    "run_caps": {
      "overruns": [],
      "unreviewed": [],
      "runs_without_kind": 0
    },
    "models": {
      "counts": {},
      "runs_with_models": 0,
      "runs_without_models": 2
    },
    "anomaly": {
      "enabled": true,
      "judged": true,
      "median": 4.0558038000000005,
      "threshold": 16.223215200000002,
      "samples": 10,
      "anomalies": []
    },
    "cap_set_by": "owner",
    "cap_basis": "extrapolation"
  },
  "runs": {
    "window": {
      "from": "2026-08-11",
      "to": "2026-09-02",
      "days": 23
    },
    "completion_rate": 0.6786,
    "change_failure_rate": 0.3214,
    "human_intervention_rate": 0.25,
    "intervention_by_kind": {
      "artifact": {
        "runs": 0,
        "rate": 0
      },
      "infra": {
        "runs": 4,
        "rate": 0.14285714285714285
      },
      "substitute": {
        "runs": 1,
        "rate": 0.03571428571428571
      },
      "bootstrap": {
        "runs": 1,
        "rate": 0.03571428571428571
      },
      "request": {
        "runs": 1,
        "rate": 0.03571428571428571
      }
    },
    "artifact_autonomy_rate": 1,
    "shipping_day_rate": 0.7391,
    "totals": {
      "runs": 41,
      "attempted": 28,
      "shipped": 19,
      "failed": 9,
      "no_run": 2
    },
    "by_route": {
      "secondary": {
        "runs": 18,
        "attempted": 16,
        "shipped": 14
      },
      "primary": {
        "runs": 23,
        "attempted": 12,
        "shipped": 5
      }
    },
    "primary_ever_shipped": true,
    "no_run_days": [
      "2026-08-16",
      "2026-08-17"
    ],
    "intervention_count": 7,
    "timings": {
      "time_to_detect_hours": {
        "median": 13.424999999999999,
        "max": 70.83333333333333,
        "n": 8
      },
      "time_to_repair_hours": {
        "median": 6.683333333333334,
        "max": 25.633333333333333,
        "n": 6
      },
      "unresolved": [
        {
          "run_id": "ap-20260827-actions",
          "failure_class": null
        },
        {
          "run_id": "ap-20260828-actions",
          "failure_class": null
        },
        {
          "run_id": "ap-20260829-actions",
          "failure_class": null
        },
        {
          "run_id": "ap-20260829-ccr0920",
          "failure_class": "claim_without_completion"
        },
        {
          "run_id": "ap-20260830-actions",
          "failure_class": "usage_limit"
        },
        {
          "run_id": "ap-20260831-actions",
          "failure_class": "usage_limit"
        },
        {
          "run_id": "ap-20260831-ccr0920",
          "failure_class": "usage_limit"
        }
      ]
    }
  },
  "reason": "【連続無記事5日目・本番最終変更 2026-08-28・BQ 21/28日】レーンF（自己修復）。未修理の故障が4件出ており、Runbook §2 の「未修理の故障が残っていれば、その日の最優先アクションは基盤の修理。記事は書かない」に従った。直したのは2つ。(1) **死んだ占有を守っていた** — 08-29 に ccr-0920 が当日ブランチを claim だけ取って死に、同日12:03 JST の主系はブランチの存在だけを見て3秒で success を返し（run 33230445898）、その日の出荷がゼロになった（ap-20260829-ccr0920）。差分0・head PR 0件・最新コミットから90分以上の3条件が揃ったときだけ引き継ぐ判定を入れた（90分は主系のジョブ上限そのもの。出荷まで走り切った回の実測は18〜28分）。**1つでも読めなかったら引き継がない。** (2) **打つ手が無い故障を毎日直そうとしていた** — escalation-rules が `who: owner` と宣言している usage_limit（週次の使用量上限）をレーンFが修理対象に数えていた。規則自身が「連続するなら repair_limit ではなくこちらで拾う」と書いており、repair_of を書くと3回目で --contain が経路を止め、**時間で自然に戻る停止が人待ちの停止に化ける。**一覧・件数からは消さず、行き先だけを owner_requests に変えた。",
  "verified": "scripts/preflight.mjs（CIが回すコマンドをworkflowから機械的に抽出）111本を実行して**0本失敗**（実行前は autopilot-runs --check と check-definitions --check の2本が落ちており、前者は台帳記入で、後者は Runbook を触った noise_floor の checksum を --bump「定義は変えていない」で解消）。autopilot-drill: 新コード run_takeover を含め **gate の16コード全てに演習シナリオがある**（死んだ占有まわりで4件追加）。property-tests: 不変条件2件と変異2件を追加し、「作業の有無を見ずに引き継ぐ」「読めなかった占有を空と読む」を両方とも捕まえることを確認。autopilot-selfheal --selftest: 5件追加（who=owner でも件数・一覧から消えないこと／escalation-rules.json が may_modify に入っていないこと）。**Gate の bash は実 API で突き合わせた**: 事故当日の claude/obsidian-auto-20260829 は files=0/PR=0/5,685分で**引き継ぐ**、本日の作業中ブランチは7分で待つ、出荷済みの 08-28 は files=16/PR=1 で待つ、存在しないブランチ（API 404）は待つ。**ページの変更が無いためブラウザQAは実施していない**（seo-check.js は 267ファイル 0 errors 0 warnings）。",
  "checks": {
    "seo_check": "0 errors 0 warnings（267ファイル）",
    "mobile_qa": "**実施せず。**HTML/CSS/画像の変更が1つも無い回のため（変更は scripts/ と docs/ と data/ のみ）。ブラウザが要る工程を省いた理由はこれで、環境都合ではない。",
    "preflight": "scripts/preflight.mjs 111本すべて通過",
    "drill": "autopilot-drill --check: 全シナリオ期待どおり・gate の16コード全てに状態がある（15→19シナリオ）",
    "property": "property-tests --check: 不変条件すべて成立・反例なし。--selftest 13件中0件失敗（変異2件を追加）",
    "selfheal": "autopilot-selfheal --check: 境界に問題なし。--selftest 7件中0件失敗。修理後の判定は「対象なし（ただし人に上げるべき故障がある）」",
    "other": "check-css-version / check-benchmark / check-url-normalization（248 checks） / check-internal-redirects / sync_constants --check / tag-cta-placements --check / check-experiments（overdue 0） / autopilot-budget --check / autopilot-runs --check / check-authority --check / automation-rate --check / check-pr-facts --check / d-score --check / generate_sitemap.py --dry-run"
  },
  "owner_requests": [
    "【新規・要オーナー判断】**1回あたりの実費上限の超過が1件、未レビューで残っている。**09-01 の主系 run 33454414490 が repair 種別の上限 $3.00 に対し **$9.3726（3.1倍）**、99ターン。本日のセッションがジョブログの result 行から台帳へ入れた（それまで未記録だった）。**この状態のままだと主系の次回runは着手前に止まる。**解除は `node scripts/autopilot-budget.mjs --ack-overrun 33454414490 --why \"…\"` で、**人間のみ**（AIが自分の超過を自分で通せると上限が「お願い」になる、という設計）。止まるのは主系だけで、副系CCRは別経路のため出荷は続く。",
    "【オーナー作業不要・副系CCRへの引き継ぎ】production の Gate（.github/workflows/obsidian-autopilot.yml）への修正は、この経路から push できない（fine-grained PAT に workflow スコープが無く GitHub が remote rejected を返す）。**これは事故ではなく 2026-08-25 の決定どおり**（act-gh-pat-scope-and-rotation: workflow スコープを足すと無人の主系が自分の permissions を書き換えられるようになるため足さない／ワークフローの修理は副系CCRが引き取る）。**適用すべきパッチは AUTOPILOT_LOG.md の本日分にそのまま貼ってある**（git apply できる形）。次に走る副系CCRセッションが当てること。**再提案しない: workflow スコープは足さないと決まっている。**",
    "【オーナー作業不要・情報共有】依頼は data/autopilot-actions.json（アクション台帳）が単一の正で、この owner_requests は日報の読み口として残しているだけ。件数と状態はそちらを見るのが正確。",
    "【外した】GH_PATの回転 — **2026-08-26 にオーナーが実施済み**（act-gh-pat-scope-and-rotation は state: done・closed 2026-08-26。fine-grained PAT「simplememo-autopilot」を発行し有効期限 2026-11-24 を data/credential-expiry.json に記録）。08-29 の status JSON はこれを「継続」として繰り越していたが、**充足済みの依頼だったので外す**（Runbook §1-3）。",
    "【外した】副系A(ccr-0730)・副系B(ccr-0830) の Routine が stopped の件 — check-routine-runs.mjs の本日の出力が「【停止 2026-08-28・意図的】」と表示しており、**故障ではなく意図的な停止**。オーナー判断を仰ぐ対象ではないので外す。",
    "【継続・実測手段なし】usage_limit（週次の使用量上限）で 08-30 / 08-31 の3runが落ちた件。**セッション側に打つ手が1つも無い種別**（escalation-rules: who=owner）なので、本日からレーンFの修理対象ではなく、この欄に載る形にした。打てる手は「待つ」「枠を上げる」「1回あたりの入力量を減らす」で、後ろ2つは人の判断。08-31 23:00 UTC のリセット後は復帰しており（本runがその実測）、**いま止まってはいない。**"
  ],
  "next": "**副系CCRへ: AUTOPILOT_LOG.md 本日分のパッチを .github/workflows/obsidian-autopilot.yml へ当てること。**主系はこのファイルを push できない（決定どおり）。当てるまで、本番の Gate は「ブランチが在れば必ずスキップ」の旧判定のまま。\n\n**主系は次回、1回上限の未レビュー超過で止まる見込み**（上の owner_requests 1件目）。副系は止まらないので出荷は続く。\n\nレーンA/BはBQ28日窓（**2026-09-06**・本日時点で21/28日・穴なし）まで引き続き正当化できない。coverage-queue の pending は26件で、故障が片付いた日はレーンEへ戻れる。\n\n**運転台帳に 2026-09-01 の主系 run（33454414490 / PR #749）の行が無い**（act-ledger-sync）。09:00 JST の日次アクチュエータの reconcile-runs が埋める見込みなので、二重に立てないよう手では足していない。"
}
