---
name: Site Activity Log 永続原則 — 「メモみたいな感じで site にも残す」
description: ★★★★★ 2026-05-11 STEP 1056 確立. 全 commit + STEP + publish + invention 承認 を data/activity-log/latest.json として site visible 化. 将来 audit-friendly 「memo layer」
type: feedback
originSessionId: 42f100d8-b702-4b4b-a14f-b23a9209d888
---
# Site Activity Log 永続原則

## 原則

**全 commit + STEP milestone + publish + invention 承認 を `data/activity-log/latest.json` に集約し、 site で常時閲覧可能にする.**

理由 (藤本さん 2026-05-11 指摘):

> 「ページにする必要の無い程度でも、 メモみたいな感じで、 今後はサイトにも残していったほうが良いのでは無いでしょうか？」

これは:
- formal な page (oukc/ 等) ほど整っていなくて良い
- 軽量 = 機械的 generate
- 将来 audit + grep 可能な永続記録
- 私 (藤本さん) や Claude が 細部を忘れた時の「引き出し」

## How to apply

### 自動 generate (推奨 path)

```bash
# 単発
npm run activity:refresh

# dev:build chain で auto-generate (build-site-stats と並ぶ pipeline step)
npm run dev:build
```

### Site visible 確認

```bash
# JSON file 直接 fetch
curl https://rei-aios.pages.dev/data/activity-log/latest.json | jq .summary

# UI viewer
open https://rei-aios.pages.dev/#/activity-log
```

## Activity Log の構造

```json
{
  "generatedAt": "2026-05-11T...",
  "totalCommitsAllTime": 1864,
  "recentCommits": [...200 件],   // 直近 commit (公開可能 subject 全部)
  "stepMilestones": [...34 件],    // STEP NNNN 含む milestone commits
  "publishHistory": [...30 件],    // Paper publish records (DOI + platforms)
  "inventionHistory": [...14 件],  // invention 承認 record (date + 承認 / 却下 / SEED Δ)
  "summary": {
    "siteVisibleStepsCount": ...,
    "backendOnlyStepsCount": ...,
    "publishedPapersCount": ...,
    "totalInventionApprovals": ...,
    "totalInventionRejections": ...,
    "latestSeedKernel": ...,
    "latestStep": ...
  }
}
```

## なぜこの形が良いか

| 観点 | 説明 |
|---|---|
| **機械的 generate** | git log + data/publications/* + data/invention/approvals/* から自動集約. 新規 source 追加なし |
| **public-safe** | token / secret / 内部 memory は含まない. 全 commit subject は既 public (GitHub) |
| **軽量** | ~70 KB JSON. lens は ~250 行 React component |
| **将来 audit-friendly** | 「STEP 1xxx は何だった?」 / 「Paper N の publish は何 platform?」 を grep 1 発で答えられる |
| **memo 的** | formal paper / charter ほど整えなくて良い. 「メモ」 layer として位置づけ |
| **削除容易** | 1 commit で revert 可能. scope-bound |

## 内部 memory との関係

| 軸 | memory file (.claude/projects/.../memory/) | activity log (data/activity-log/latest.json) |
|---|---|---|
| 配布 | user-local persistent context | public site mirror (CC-BY-4.0 等) |
| 内容 | 私的 honest correction / chat Claude review / 永続原則 | public-safe な commit / publish / invention 履歴 |
| 媒体 | `.md` file | `.json` (machine-readable) |
| 用途 | Claude session 横断 context 復元 | 公開 audit + 藤本さん 確認 |
| 永続性 | Claude session 内永久 | site 永続 (CF Pages CDN) |

両者は **相補的** — memory が私的詳細を持ち、 activity log が公的 summary を持つ.

## 永久原則

### Rule 1: 新 STEP commit subject に「Site visible」 explicit 記載

```
Site visible: [#/activity-log] / Backend-only: [memory/...] / 反映 verified: ...
```

これが activity log generator で classify 可能 + filter 可能.

### Rule 2: dev:build chain に generate-activity-log.ts 含む

`npm run dev:build` が走れば activity log が必ず最新化.
package.json の dev:build chain に組み込み済 (STEP 1056).

### Rule 3: SITE_COVERAGE_MAP.md の補完

- SITE_COVERAGE_MAP.md = 反映状態 mapping (human-readable)
- activity log = commit / STEP / publish / invention 集約 (machine-readable + UI 表示)

両者を併用で完全 audit-trail.

### Rule 4: Activity Log は **memo layer** であって **paper layer ではない**

- 「メモみたいな感じ」 framing 維持
- formal な学術 page (oukc/ 等) と区別
- scope-bound (削除可能)

## 過去 incident の防止 (本原則の operational value)

### Case 1: 「あの STEP 何だったっけ?」 問題

将来 私 (藤本さん) が 「STEP 1052 は何だった?」 と聞いた時:
- 旧: CLAUDE.md / git log を Claude が手動 grep → 時間かかる
- 新: `#/activity-log` で view=steps + filter=site-visible で即表示 → 1 click

### Case 2: 「Paper N の publish 状態は?」 問題

将来 「Paper 145 は何 platform で公開済?」 と聞いた時:
- 旧: data/publications/publish-log-paper145-* を手動 cat → 複数 file
- 新: `#/activity-log` view=publishes で filter → 即一覧

### Case 3: chat Claude が「最新情報」 主張した時の対応

chat Claude が 「Rei は STEP X で Y 実装している」 と主張した時:
- 旧: `feedback_chat_claude_hallucination_warning.md` Pattern 5 protocol で grep src/
- 新: `#/activity-log` で STEP X 直接確認 → fact-check 簡素化

## 関連

- `docs/SITE_COVERAGE_MAP.md` (反映状態 mapping, human-readable)
- `scripts/generate-activity-log.ts` (本原則の operational deliverable)
- `data/activity-log/latest.json` (実際の activity log JSON)
- `src/renderer/components/activity-log/ActivityLogObservatory.tsx` (UI viewer)
- `feedback_site_coverage_map_protocol.md` (姉妹原則 — STEP 1055)
- `feedback_chat_claude_hallucination_warning.md` (Pattern 5 fact-check 補助)

## 検証

```bash
# 1. activity log 生成確認
npm run activity:refresh
ls data/activity-log/latest.json

# 2. summary 確認
cat data/activity-log/latest.json | jq .summary

# 3. STEP 一覧
cat data/activity-log/latest.json | jq '.stepMilestones[] | {step, date, type, title}'

# 4. UI 確認
open https://rei-aios.pages.dev/#/activity-log
```

これで「全部 site にもメモとして残す」 が永続的に operational.
