## 1. OpenSpec 规范 - [x] 1.1 创建 openspec/changes/add-upload-syntax-check/ 变更目录 - [x] 1.2 编写 proposal.md(Why / What Changes / Impact) - [x] 1.3 编写 specs/object-lifecycle/spec.md(ADDED: Source Code Upload、Syntax Check) - [x] 1.4 编写 tasks.md 任务清单 ## 2. TDD 测试(先写测试,必须 RED) - [x] 2.1 TestUploadCommand:test_upload_success(断言 syntax_check/activate 未被调用) - [x] 2.2 TestUploadCommand:test_upload_nonexistent_object(ObjectNotFoundError) - [x] 2.3 TestUploadCommand:test_upload_type_without_source(InvalidNameError) - [x] 2.4 TestUploadCommand:test_upload_with_corr_nr(通过 --corr_nr 指定) - [x] 2.5 TestUploadCommand:test_upload_file_not_found(ConfigError) - [x] 2.6 TestSyntaxCheckCommand:test_syntax_check_passed(输出含"通过") - [x] 2.7 TestSyntaxCheckCommand:test_syntax_check_failed(输出含错误行号) - [x] 2.8 TestSyntaxCheckCommand:test_syntax_check_nonexistent(ObjectNotFoundError) - [x] 2.9 TestSyntaxCheckCommand:test_syntax_check_type_without_source(InvalidNameError) - [x] 2.10 运行测试确认全部 RED(9 个测试 ModuleNotFoundError 失败) ## 3. 实现命令 - [x] 3.1 实现 sapcli/commands/upload.py(cmd_upload,参照 activate.py 结构) - [x] 3.2 实现 sapcli/commands/syntax_check.py(cmd_syntax_check) ## 4. Parser 注册 + App 路由 - [x] 4.1 parser.py 注册 upload_parser(--name/--type/--path/--corr_nr) - [x] 4.2 parser.py 注册 syntax-check 的 sc_parser(--name/--type) - [x] 4.3 commands/__init__.py 导出 cmd_upload / cmd_syntax_check - [x] 4.4 app.py 导入并路由 upload / syntax-check ## 5. 验证(必须 GREEN) - [x] 5.1 运行 pytest tests/unit/ 全部通过(363 passed) - [x] 5.2 python main.py upload --help / syntax-check --help 正常 - [x] 5.3 python main.py --help 出现两个新命令 - [x] 5.4 python main.py sync --help 参数未变(回归验证通过) - [x] 5.5 openspec validate add-upload-syntax-check → valid ## 6. 收尾 - [x] 6.1 tasks.md 所有 checkbox 标记为 [x] - [x] 6.2 .openspec.yaml status 改为 completed