# ── Root .gitignore (monorepo) ──────────────────────────────────
# 各子项目(novaact_runner/, midscene/)有各自的 .gitignore 管语言特定产物。
# 这里只放跨语言通用、以及仓库级的忽略项。

# ── OS ──
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
Thumbs.db
desktop.ini

# ── Editors / IDE ──
.idea/
*.swp
*.swo
*~
# VS Code: 默认忽略，但保留可共享的工作区设置
.vscode/*
!.vscode/settings.json
!.vscode/extensions.json
!.vscode/launch.json

# ── 环境变量 / 密钥（关键：AWS / Bedrock / Nova Act key 绝不入库）──
.env
.env.*
!.env.example
*.pem
*.key
.aws/
credentials

# ── 测试报告 / 产物（两套引擎都会生成）──
# Midscene 报告
midscene_run/
**/midscene_run/
*.report.html
# Nova Act traces / 录屏 / session 数据
**/nova_act_logs/
**/*.trace
**/traces/
# RunReport / 跑批产物（cli 落 cli/reports/<run_id>/；worker 误落点兜底）——派生品，不入库
reports/
**/reports/
# 通用
*.log
logs/
screenshots/
test-results/
playwright-report/

# ── agent skill 的评测资产（仓库根 skills/，开发期用、不随包发行）──
# 结果工作区（每轮评测的 transcript / 日志 / 舞台残留）是派生品，不入库。
skills/*-workspace/
# fixtures/ 相反：它是入库资产（评测要能直读、diff、与真跑产出同形），但上面的派生品段会**部分**吞掉它
# ——`reports/`、`*.log`、`screenshots/`、`*.report.html` 命中规则，而 Nova 的 evidence 截图不命中；
# 部分吞比全缺更难发现，故整棵反白名单放行。护栏是行为式的：cli/tests/test_skill.py 拿探针路径跑
# `git check-ignore --no-index`，两向都断（派生品形态未被忽略 + 密钥形态仍被忽略）。
!skills/gherkai-evals/fixtures/**
# 反白名单排在密钥块之后，会把密钥规则一起放开，故在此**重列**密钥块的每一条、只作用于这棵子树。
# 改动时以上面的密钥块为准、逐条对照（含那条放行示例文件的反规则——否则 `.env.*` 会把 `.env.example` 吞掉）。
skills/gherkai-evals/fixtures/**/.env
skills/gherkai-evals/fixtures/**/.env.*
!skills/gherkai-evals/fixtures/**/.env.example
skills/gherkai-evals/fixtures/**/*.pem
skills/gherkai-evals/fixtures/**/*.key
skills/gherkai-evals/fixtures/**/.aws/
skills/gherkai-evals/fixtures/**/credentials
# 反白名单也会把这两份 worker 侧日志救回来：它们含产出机器的绝对路径、对评测无用，显式排除。
skills/gherkai-evals/fixtures/**/worker.log
skills/gherkai-evals/fixtures/**/reconcile.log

# ── 通用临时 ──
tmp/
__pycache__/
*.pyc
.tmp/
*.tmp

# Claude 工作流工具（个人/工作流，非本项目框架代码）——只放行 .claude/commands/：那是复盘方法
# （docs/{doc,code}-health-review.md）的 Claude Code 入口、属项目资产；skills / settings 是个人配置，不入库
.claude/*
!.claude/commands/
skills-lock.json
.agents/
# MCP server 个人本地配置（可能含 API KEY 等密钥）
.mcp.json

# ── graphify 知识图谱产物 ──
# 入库三件：GRAPH_REPORT.md（架构文档，人+agent 读）、graph.json（图本体，供
# graphify query/path/explain 直接用，克隆/CI 无需重跑）、manifest.json（增量
# 哈希，缺了会让首跑全量重抽语义层、花 API 钱）。
# 其余是本地缓存与派生品（graph.html 可由 graph.json 重建；日期目录是每次跑
# 新增的滚动备份，入库会无限膨胀），按「派生品不入库」惯例排除。
# wiki/ 是例外：它虽由 graph.json 派生，但是 AI agent 的导航入口（CLAUDE.md graphify 节让 agent 优先读
# wiki/index.md），clone 下来就该能用、不该要求每个环境先跑一次 LLM 重建，故入库。
# （**/ 前缀盖住任意子目录的 graphify-out——如在 core/ 里跑 graphify 的残留缓存；白名单以 / 锚定，只放根那份）
**/graphify-out/*
!/graphify-out/GRAPH_REPORT.md
!/graphify-out/graph.json
!/graphify-out/manifest.json
!/graphify-out/wiki/

# uv build 产物（wheel/sdist），不入库
dist/
