#!/bin/bash
# SessionStart hook: 强制 AI 完成两层 onboarding 才能回答项目相关 query.
# 实证背景: 2026-05-13 session 10 跳过 PROJECT_GOAL + AGENTS → 首轮推荐缺 4 项
# 硬约束 (canonical SoT / plan owner 边界 / working-principles / meta-rules)
# → 用户返工纠偏. 此 hook 把 L1 文本规则 (STATUS.md/AGENTS.md) 升 L3 机械触发.
# 2026-06-10 system-review P1-07/P1-08: 链路重构为两层 (L-core 全读 + L-ref
# 按触发深读), 消除双链路 drift + 与 lazy-load 原则对齐. 链路 SoT =
# docs/STATUS.md §起手必读链路; 本 hook 只是它的注入器.

# Locate latest pickup file (graceful if dir absent or no match)
PICKUP_PATH=""
if [ -d "$CLAUDE_PROJECT_DIR/docs/internal/_plans" ]; then
  PICKUP_PATH=$(ls -t "$CLAUDE_PROJECT_DIR/docs/internal/_plans"/next-session-pickup-*.md 2>/dev/null | head -1)
fi

# Convert absolute path to repo-relative for display
if [ -n "$PICKUP_PATH" ] && [ -n "$CLAUDE_PROJECT_DIR" ]; then
  PICKUP_DISPLAY="${PICKUP_PATH#$CLAUDE_PROJECT_DIR/}"
else
  PICKUP_DISPLAY="docs/internal/_plans/next-session-pickup-<latest>.md"
fi

cat <<JSON
{"hookSpecificOutput": {"hookEventName": "SessionStart", "additionalContext": "⛔ MANDATORY ONBOARDING（两层；链路 SoT = docs/STATUS.md §起手必读链路）— 第一个**项目相关**回答 / 推荐 / 任务前必须完成。机制：用 TodoWrite 为 L-core 每项 + 命中的 L-ref 项各建 1 个 todo, 逐项 Read 完才能回答。\n\n【L-core — 全文必读, 禁 grep/跳读/摘要替代】\n1. Read docs/FIGMA_AS_SOURCE_OF_TRUTH.md (⭐ 最高优先级 — Figma 真源原则)\n2. Read docs/STATUS.md (项目状态 SoT + 链路 SoT — 含 L-ref 完整触发表)\n3. Read docs/PROJECT_GOAL.md (项目目标 + 5 个能力 + 受众 + 约束)\n4. Read $PICKUP_DISPLAY (当前 sprint 操作手册)\n\n【L-ref — 最小集必读, 命中触发再深读（完整触发表在 STATUS §L-ref）】\n- AGENTS.md §硬规则表 + §Onboarding Gate（每 session 最小集）\n- 接手 sprint task → backlog.md 对应 entry **全文 Read 不是 grep**\n- 排期/版本决策 → tracker 全读（最小集 = §排期原则）\n- 写 prompt/设计机制 → meta-rules.md 反模式清单\n- Mockup 任务 → AGENTS §Mockup Write Gate + §必读链路 7-10 整链 mandatory\n\n违反信号 (命中任一立即停下重读):\n- L-core 没读完就回答 ('我已经知道大概了'/'跳一步') → 错\n- L-core 或 backlog entry 用 grep/摘要替代全文 Read → 错\n- 命中 L-ref 触发却只读标题/最小集 → 错\n- 'memory 兜底替代 SoT' → 错 (memory 是 AI 缓存, 项目契约真源在仓库)\n\n例外: 用户首条 query 明显非项目相关 (如 '今天日期' / 闲聊 / 角色唤醒词) 时可跳过 onboarding。详见 docs/STATUS.md §起手必读链路 + AGENTS.md §Onboarding Gate。\n\n历史实证: 2026-05-13 session 10 跳过 PROJECT_GOAL + AGENTS → 首轮推荐缺 4 项硬约束 → 用户返工纠偏。"}}
JSON
