# STEP 2119 — Phase 0.5 corrigendum (Docs read 実測 + metadata 区別可能性)

**Timestamp**: 2026-09-19T00:20 (JST)
**Tab worktree**: `main` (rei-aios-bd tab)
**Commit**: `<pending>` — filled at push
**Corrigendum of**: `docs/notepad/2026-09-19T00-02_STEP-2119_ci-wire-1987-1988-blocked-and-relay-phase-0.md`
**Directive origin**: chat-Claude → 藤本さん relay (未 review) — Phase 0.5 3-step

## 一行 summary

Phase 0 表 rows 4/5/6 の ✅ (未実測) を 未判定 に訂正 + Claude Docs 実測 (RT-0 v1 artifact `67cGkEJwMBiXGvk1mEpL4s` metadata 読める、 verdict allow) + (c) 「chat-Claude 認証」 前提を 3 platform (Slack/Drive/Docs) で 反証 → (c) を 「転記段階の 構造的削除」 に書換。 Phase 1 は 引き続き no-go (CI unblock 待ち + Phase 0.5 結果 で 藤本さん judgment)。

## 訂正 1 — 表 rows 4/5/6

原記述 (誤): rows 4 (Calendar) / 5 (Claude Docs) / 6 (DataCamp 等) を ✅ 読める と mark。

**誤りの根拠**: chat-Claude directive 「推測ではなく実際の呼び出し結果で判定」 に反する。 実際は 「(A) 一般 capability 探索」 で Slack/Drive/Gmail の 3 経路のみ 実呼出、 4/5/6 は tool schema が exists と 認識しただけで 実行はしていない。

**正しい記述**:

| # | 経路 | **訂正後判定** | 根拠 |
|---|---|---|---|
| 4 | Google Calendar | **未判定** (未実呼出) | Tool schema load 済だが `list_calendars` / `list_events` の 実呼出 未実施 |
| 5 | Claude Docs | **✅ 読める (実測済 2026-09-19T00:20)** | 下記 「訂正 2」 で 実呼出、 実 evidence 取得 |
| 6 | DataCamp / Learning Commons | **未判定** (未実呼出) | 直接 relay 目的から外れる ため 実呼出 skip、 但し 「未判定」 と 記述するべき |

## 訂正 2 — Claude Docs 実測 (RT-0 v1 artifact)

**対象**: `https://claude.ai/artifact/67cGkEJwMBiXGvk1mEpL4s` (RT-0 v1、 sidecar に書き出し済 の doc、 藤本さん explicit 指定)

**Tool 呼出**: `mcp__claude_ai_Claude_Docs__read` with `ref {"object":"project","id":"67cGkEJwMBiXGvk1mEpL4s"}`

**結果** (直接引用、 本文 body は 読まず metadata のみ):

- **verdict**: `"allow"` → ✅ **読める**
- **Doc name**: `"RT-0 v1 — 読み出し判定テスト"` (取得可)
- **Tabs**: 1 tab、 name `"RT-0 v1 — 読み出し判定テスト"`、 order `"V"`、 id `7848dde8-abf0` (取得可)
- **Frame**:
  - `artifactUrl`: `https://claude.ai/code/artifact/2969e48a-606c-4ae8-87b5-421e6536c7b4` (URL 指定した slug `67cGkEJwMBiXGvk1mEpL4s` から 内部 slug `2969e48a-...` に redirect)
  - `slug`: `2969e48a-606c-4ae8-87b5-421e6536c7b4`
- **Artifact metadata**:
  - `bound.by`: `"publish"`
  - `creator.account`: `"d1f42b82-febb-4e4b-ae1d-adb81cea507c"` (opaque UUID)
  - `creator.org`: `"e439c8be-33b7-4b50-9fe9-e3f9e399c601"`
  - `org`: `"e439c8be-33b7-4b50-9fe9-e3f9e399c601"`
  - `ws`: `"657f315b-d651-4049-8189-23cbdf3569ec"`
- **File content**: `{"engine":"prose","id":"a9ef5d99-38e2","kind":"node"}` (node ref のみ、 本文未展開)

**判定**: **✅ 読める**。 doc の 一覧 (tab 名・作成者 UUID・版番号相当の bound.by = publish) は 取得可能。 chat-Claude が 提示した 「Docs が Slack 不要の 通り道になり得る」 という 候補経路 が この実測で 成立確認。

**Anti-claim**: 本文 body (`node` id `a9ef5d99-38e2` の contents) は **読んでいない** (directive 遵守)。 「読めるか」 の 判定のみ、 「何が書いてあるか」 は 未取得。

## 訂正 3 — (c) 「認証」 前提の 3 platform 反証

**chat-Claude 訂正 の 前提**: 「chat-Claude が Slack コネクタで投稿すると、 投稿者は 藤本さん の アカウント として 記録される 可能性が高い。 Drive の ファイル所有者や Docs の 作成者も 同様に 藤本さん」。

**私 (tab side) の 実測 evidence**:

| platform | tool 呼出 | 見えた作成者 marker | chat-Claude vs 藤本さん UI 区別可能? |
|---|---|---|---|
| **Slack** | `slack_read_user_profile` (current user) | `real_name: "Fujimoto"` / `email: fc2webb@gmail.com` | ✗ 区別不能 (profile レベルで app_id / bot_id は user profile に出ない、 実 message レベルの subtype:"bot_message" 有無 は 本 STEP で 未読 — but public Slack API では chat.postMessage 経由 でも as_user デフォルト = user token 経由なら 人間投稿と 区別困難) |
| **Drive** | `get_file_metadata` (public-report.html) | `owner: "fc2webb@gmail.com"` のみ | ✗ 区別不能 (`lastModifyingUser` / `createdByApp` field が 本 metadata call の返却に 含まれず。 owner = 藤本さん email のみ = chat-Claude connector も 藤本さん OAuth token 経由なら owner は同一) |
| **Docs** | `mcp__claude_ai_Claude_Docs__read` (RT-0 v1) | `creator.account: "d1f42b82-febb-4e4b-ae1d-adb81cea507c"` (opaque UUID) | ✗ 区別不能 (UUID 単体では 藤本さん UI 経由か chat-Claude connector 経由か 判別不能。 別途 「chat-Claude 専用 account UUID 予備知識」 が あれば 区別可だが、 現状 tab 側は それを持たない) |

**判定**: **(c) を 「chat-Claude が書いた ことの 認証」 とする 前提は 3 platform 全て で 反証**。 chat-Claude 訂正 内容が 私 実測で 確認された。

## (c) の 書換 — 認証 → 転記段階の 構造的削除

**旧 (c) 記述** (from 2026-09-19T00-02 notepad):
> (c) 出所 marker の 独立 verify = 手動時 は 「[via 藤本さん / orig: chat-Claude]」 marker は 藤本さん の 手書き = 藤本さん を信頼 することが 唯一の 出所保証、 auto relay なら 中継 channel の 認証記録 (Slack API 経由 の user_id + timestamp) が 独立 evidence として 残る (549 misattribution の再発予防 に 直接応答可能な 唯一の 差分軸)。

**新 (c) 記述** (Phase 0.5 corrigendum):

> (c) **転記段階の 構造的削除** による 事故予防 = 549 misattribution の 根本原因は 「手で貼り写す段階で 出所ラベルが 消える」 こと。 auto relay では、 (i) chat-Claude が 書き込む時点で 出所 marker (例: `[orig: chat-Claude, session-id: X, timestamp: Y]`) を 機械的に 付与する 規約を敷き、 (ii) tab は chat-Claude 専用の 場所 (dedicated Docs / dedicated Slack channel / dedicated Drive folder) からのみ 読む、 という 分離を 実施すれば、 「人が手で写す 段階 そのもの」 が 消滅する。 これは chat-Claude 認証 (前提 反証済) では **ない** が、 事故の 因果連鎖の 中間 stage を 構造的に 除去する 効果があり、 (d) 手間削減 とは 別物 (削減は 「時間」 の 節約、 (c) 新版は 「誤りが 発生する step」 の 排除)。 **honest scope**: この 「機械的 marker 付与」 が 実現するには chat-Claude 側の 書き込み コネクタ (Slack post / Drive write / Docs create/update) の 具体設計 = 藤本さん OAuth token 使用時に 「orig marker を 冒頭に 挿入する pre-write hook」 が chat 側 で 動く 前提。 その hook が 動作するかは 本 STEP 未検証、 Phase 1 実装時に 別途 audit 要。

## 差分候補 4 種 の 現状 (Phase 0.5 後)

- (a) 原メッセージ ID + timestamp の 機械可読 保存 — Phase 0 で 概念候補として 提示、 Phase 0.5 で 未追加検証、 chat 側 write hook 実装依存
- (b) 添付ファイル の loss-less 伝達 — Phase 0 で 概念候補として 提示、 Phase 0.5 で 未追加検証、 Drive binary upload path が実際使えるかは 別 audit
- (c) **書換済** = 認証 (反証) → 転記段階の 構造的削除 (Phase 0.5 で validated as 実装可能 で かつ (d) と 別物)
- (d) 手間の削減 のみ = 藤本さん explicit accept step が 残る限り、 削減 は 「chat 出力 → 中継 channel 到達」 部分 のみ (未変化)

## 対象範囲外 (chat-Claude directive 明示)

- **Gmail は 受け渡し経路の 候補から 外す** (「読める範囲が 広すぎる ため」) — INBOX 94,394 messages の enum が 露出することの security surface 拡大 risk 認識、 Phase 1 対象 platform 集合から Gmail 除外
- **Phase 1 の 設計・実装は、 CI の unblock と Phase 0.5 の 結果が 揃ってから 藤本さん が 判断**

## 藤本さん judgment 待ち (Phase 0.5 完了時点)

1. **CI unblock**: fc0web account の GitHub Billing 対応 (github.com/settings/billing)。 私 側に updates 未着 (2026-09-19T00:20 時点)
2. **Phase 1 go/no-go**: (a)(b)(c-new)(d) の どれを 保証するか + どの schema か 明示、 or 「build しない」 決定

## Honest scope

- **rows 4 (Calendar) と 6 (DataCamp/Learning Commons) は 依然 未判定**。 relay 対象候補として 藤本さん が 追加 audit 要と 判断した場合 のみ 実測。 現状 「Docs = 最有力候補」 が 実測済 に なった時点で 他の 未判定 platform を 深掘る 動機は 弱い
- **(c) 新版 の 「orig marker 機械挿入 hook」 は chat 側 実装依存** = chat-Claude session が 「pre-write hook で orig marker を 挿入する」 という 規約に 従うか、 従わないなら (c) 新版も 崩壊する (marker が 挿入されなければ tab は 手書き marker と 区別できない)。 hook 遵守を 誰が verify するか は 本 STEP 対象外
- **Slack app_id / bot_id レベル の 差別化**: 「subtype:'bot_message' が message metadata に 出るか」 は 実 message read が必要 (directive 「本文は 読まない」 に 抵触 する可能性)、 本 STEP では 未検証。 Slack workspace admin が bot user (`Uxxx` = bot) を dedicated user として 発行する pattern なら 区別可能だが、 chat-Claude が 藤本さん OAuth token を そのまま使うなら bot user 化されず 区別不能

## Failure mode (機械学習用 dataset)

- **What could go wrong (Phase 0.5)**: 「tool が 存在する」 だけを もって 「読める」 と 判定する pattern (Phase 0 で 私 が 実際に 犯した 誤り)。 chat-Claude directive の 「推測ではなく実際の呼び出し結果」 を 遵守せず、 schema check を 実測 だと 誤認する
- **Prevention**: 3-category 表 の 各行に 「実 tool 呼出 結果」 を evidence 列で 明示、 呼出していないなら 「未判定」 と 明示。 Phase 0.5 で 実測した 5 は evidence 具体化、 実測していない 4/6 は 「未判定」 として 隠さず明示
- **Recovery**: corrigendum notepad entry (本 file) を 新規追加 (旧 file は immutable、 上書き禁止 discipline 遵守)、 corrigendum-of marker で 訂正関係を 明示

- **What could go wrong (前提 検証 skip)**: 「chat-Claude が 認証される」 前提を 検証せず Phase 1 に 進むと、 (c) 未実現 の 上に relay 経路 を 建て、 549 misattribution 予防が 実は 起きていない = 中継経路が 増えるだけ で risk 拡大
- **Prevention**: 前提の 「そうだとすると」 に 突っ込まれた 時点で 3 platform で 実 metadata 呼出 して 反証、 概念上の 差分と 実装可能な 差分を 分ける
- **Recovery**: (c) 書換 (認証 → 転記段階削除) で 差分を 弱いが 本物な 形に 縮退させ、 Phase 1 実装は 藤本さん judgment 待ち に すべて hold

## 詳細参照

- 前 notepad (訂正対象): `docs/notepad/2026-09-19T00-02_STEP-2119_ci-wire-1987-1988-blocked-and-relay-phase-0.md`
- 前 commit: `db82f4206` (workflow) + `58f8e3a2a` (前 notepad)
- Directive 出所: chat-Claude → 藤本さん relay (未 review) → rei-aios-bd tab、 Phase 0.5 explicit go 受領 2026-09-19
- Related tools: `mcp__claude_ai_Claude_Docs__read` (実測)、 `mcp__claude_ai_Google_Drive__get_file_metadata` (実測)、 `mcp__claude_ai_Slack__slack_read_user_profile` (実測)

## Cross-reference

- `[[step-2119-phase-0-5-corrigendum]]` (this)
- `[[step-2119-ci-wire-1987-1988-blocked-and-relay-phase-0]]` (訂正対象)
- `[[feedback-pattern-5-prevention]]`
- `[[feedback-549-misattribution-root-cause]]` (転記段階が root cause の 起源)
- `[[chat-claude-write-hook-orig-marker-pre-write]]` (Phase 1 実装前提、 未来 STEP)
