refactor: Phase 1+2 — project-level output structure, 78→79 sync, gitignore fixes#179
Merged
Conversation
added 8 commits
June 3, 2026 01:48
- CLAUDE.md: add hard AI agent STOP gate with 3 Do-NOT rules - CLAUDE.md: document standalone CLI (tagent) as first-class path - install.py: add copy_runtime to deploy MCP/CLI modules - install.py: restructure workspace dirs — remove 执行日志/charters, flatten into 测试报告/ + 截图/ - install.py: finish() shows both CLI and AI collaboration paths
Systematic path normalization across entire codebase (86 files): - Eliminate legacy workspace/执行日志/ directory; all outputs under workspace/测试报告/ - install.py: 截图/ → screenshots/ under 测试报告/ - .gitignore: update ignore/whitelist rules for new paths - Add AGENTS.md (Cursor/Windsurf) and .github/copilot-instructions.md for multi-AI-tool compatibility - Update all agent docs, skill docs, config files, runtime orchestrator, and utils
…esting All workspace output now organized by project: baselines/history at project level (persistent), everything else per-run (isolated via current_run_id). Created utils/paths.py as canonical path helper. 79 files changed across Python utils, runtime orchestrator, markdown docs, CI/CD, and config.
15 files updated — AGENTS.md, CLAUDE.md, README (en+zh), copilot-instructions, 6 charter/getting-started docs, web-demo README, .pre-commit-config.yaml error message.
Added to .gitignore: - .claude/agents/, .claude/skills/ — deployment copies, not source - workspace/测试用例/, 测试计划/, 需求分析/, 执行日志/, audit/ — outputs - workspace/测试报告/*/ → workspace/测试报告/** — catch root-level files too
…erns /** pattern cannot be overridden by ! negation in git. Replaced with explicit directory names for root files, legacy dirs, run_id dirs, and project-level output subdirectories. Baselines naturally excluded from ignore rules (they should be tracked).
…output Removed from tracking (kept locally): - .vscode/ — IDE config with machine-specific paths - workspace/audit/V1.43-health-check.md — auto-generated health check - workspace/automotive/can_plan.json — test output data Added workspace/automotive/ to .gitignore.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
workspace/测试报告/{PROJECT_NAME}/{run_id}/viautils/paths.pycanonical path helper执行日志/into测试报告/(single output root)sys.path.insert(0, ...)for utils that run outside pytest/**+!negation with explicit directory patterns; exclude.claude/agents/,.claude/skills/,workspace/automotive/, and 7 other untracked workspace dirs.vscode/(IDE config),workspace/audit/V1.43-health-check.md(auto-generated),workspace/automotive/can_plan.json(test output data)Test plan
git check-ignoreverified:.vscode/,workspace/测试报告/subdirectories,workspace/automotive/all excluded.pre-commit-config.yamlutils count check uses 79 (expected + actual match)PROJECT_NAME=myapp pytest --collect-onlyreturns 0 errorspython -c "from utils.paths import get_output_dir, current_run_id; print(get_output_dir('test'))"producesworkspace/测试报告/default/test