{
  "schema": "folio-e2e-observations/v1",
  "req": "REQ-VER-012 (+ ADR-0007 context injection)",
  "method": "fresh-session SessionStart injection 観察 (agent-driven、 runbook S-F)。 Edit/Write 操作でなく fresh cld session を spawn し、 起動時 SessionStart hook が Tier 1 digest を context に注入するかを spawn agent に報告させる。 SessionStart hook は session 起動時のみ発火するため既存 session では観察不可。",
  "session": {
    "date": "2026-05-25",
    "host": "ipatho-server-2",
    "spawn_window": "e2e-ss",
    "cwd": "/home/shuu5/projects/local-projects/folio",
    "plugin_load": "~/.claude/plugins/folio symlink -> main repo (母艦 deploy fix 後に復旧、 9 plugins / 10 hooks load)。 fresh spawn が folio plugin を load し SessionStart hook を発火。",
    "primary_assertion": "fresh session の初期 context に folio Tier 1 inventory digest が注入されているか (spawn agent が digest header + 件数 + entries を引用できるか)。",
    "note": "read-only 観察。 spawn は編集せず初期 context の報告のみ。 SessionStart source = startup を検証 (compact source = post-compaction は別観察 S-F-compact で 2026-05-25 実 compaction により検証済)。"
  },
  "hooks_under_test": [
    "SessionStart (matcher 省略 = startup/resume/clear/compact 全 source) -> inject-inventory.sh -> folio prime"
  ],
  "observations": [
    {
      "id": "S-F",
      "name": "SessionStart context injection (Tier 1 digest が fresh session の context に出るか)",
      "operation": "folio repo を cwd に fresh cld session を spawn → 起動時 SessionStart hook 発火 → spawn agent に初期 context の folio digest を報告させる",
      "expected": {
        "digest_injected": true,
        "header_first_line": "# folio inventory digest — Tier 1 (progressive disclosure)",
        "spec_count": 15,
        "entry_format": "## <@id-path> + title + doc-type·status + summary"
      },
      "observed": {
        "digest_injected": true,
        "header_quoted": [
          "# folio inventory digest — Tier 1 (progressive disclosure)",
          "# 15 specs · folio 0.4.2-draft",
          "# Tier 1 = @id + title + doc-type/status + summary. Read Tier 2 / Tier 3 on demand."
        ],
        "spec_count": 15,
        "first_entries_quoted": [
          "## specs/README.html (title: folio framework spec index / cluster-readme · active)",
          "## specs/folio-self-spec.html (title: folio self-spec / self-spec · draft)",
          "## specs/relations.html (title: folio relations spec / spec · draft)"
        ],
        "hook_source": "SessionStart:startup hook success (folio digest 1 件、 他 plugin の SessionStart 注入は本 folio-loaded fresh session では非観測)",
        "agent_note": "spawn は @id が URI 形式でない点を指摘したが、 folio の @id は相対 path (relations §4.1) で `## <path>` 見出しがまさに @id = 正しい (misread)"
      },
      "result": "PASS",
      "interpretation": "fresh folio session の起動時、 SessionStart hook → inject-inventory.sh → folio prime stdout → context 注入の full chain が動作。 spawn agent が Tier 1 digest header + 15 specs + entries を初期 context から引用できた。 = folio の signature 機能 (architect への文脈注入) が実 session で動く実証 (user の『道具として動くか』への YES)。"
    },
    {
      "id": "S-F-compact",
      "name": "SessionStart:compact context injection (実 compaction 後に Tier 1 digest が再注入されるか)",
      "operation": "folio-loaded session で実 /compact を実行 → 圧縮後の SessionStart:compact hook 発火 → inject-inventory.sh → folio prime stdout が post-compaction context に注入されるかを session 自身が観察 (S-F の fresh-spawn とは別 method = 実 compaction trigger)",
      "expected": {
        "digest_injected": true,
        "source": "compact",
        "header_first_line": "# folio inventory digest — Tier 1 (progressive disclosure)"
      },
      "observed": {
        "digest_injected": true,
        "source": "SessionStart:compact",
        "header_quoted": [
          "# folio inventory digest — Tier 1 (progressive disclosure)",
          "# 15 specs · folio 0.4.2-draft"
        ],
        "spec_count": 15,
        "evidence": "/compact 出力末尾の 'SessionStart:compact hook success: # folio inventory digest …' system reminder に digest header + 15 specs + entries が出現。 ADR-0017 起票前の観察のため 15 specs。",
        "caveat": "本 session は ADR-0007 amend (commit 4430e22) で hooks.json から PreCompact 除去済だが live session は除去前 hooks をメモリ保持しており、 /compact 時に folio PreCompact も inject-inventory.sh を発火 (transitional、 次 reload で SessionStart 単一に収束)。 SessionStart は PreCompact 除去と無関係のため本 compact-source 注入の検証は汚染されない。"
      },
      "result": "PASS",
      "interpretation": "実 compaction の SessionStart:compact source が Tier 1 digest を post-compaction context に注入することをライブ実証。 ADR-0007 §2.1 が docs-canonical としていた compact-source 再注入が e2e-verified に昇格。 context injection 機能の integration-only な半分 (ADR-0017 §2.4) が startup + compact 両 source で被覆された。"
    }
  ],
  "summary": {
    "observation_points": 2,
    "pass": 2,
    "fail": 0,
    "verdict": "SessionStart context injection が startup (S-F) + compact (S-F-compact) 両 source で実 session 動作を実証 (Tier 1 digest 注入 PASS×2)。 Track 2 の signature 機能をライブ被覆。 compact source は 2026-05-25 の実 /compact で検証し ADR-0007 §2.1 を docs-canonical → e2e-verified に格上げ (ADR-0017 §2.4 の integration-only 半分)。 PreCompact hook は stdout 非注入で除去済 (live session の stale 登録は次 reload で収束)。"
  },
  "revalidation_2026_06_01": {
    "date": "2026-06-01",
    "trigger": "in-session SessionStart:compact (本 continued session の起動時に実発火)",
    "observed": "本 session 起動時の SessionStart:compact hook が inject-inventory.sh → folio prime stdout を context に注入。 注入実体は『# 33 specs · folio 0.5.0-draft』+ Tier 1 digest に加え『# object-graph index — 86 canonical objects (ADR-0034)』section (id [class] ssot-location の一覧) を含む (256 行)。 ※86 は #117 (REQ-VER-020 追加) 前の session-start 時点値、 現在は 87。",
    "interpretation": "SessionStart 注入機構 (inject-inventory.sh = exec folio prime) は xref SHIP で不変だが、 注入 payload が xref AI-graph projection (object-graph index) を運ぶようになった。 旧 observation (2026-05-25、 15 specs・object-graph 無し) から、 xref の AI-graph が SessionStart 経路で実際に agent context へ到達することを live (本 session) で確認。 mechanism は not stale (script 不変)、 payload 成長を被覆。 #118。"
  }
}
