{"version":"2026-10-02.2","taskVersion":"0.2.0","status":"练习输入与验收材料；人工构造，不是现场材料或能力评测成绩","task":"DEV-01","kind":"synthetic_practice","executionStatus":"not_run","title":"串行队列的重复请求与失败重试","scope":"仅本地单进程串行演示；不进行真实退款，不覆盖并发、响应丢失或分布式一致性","input":{"code":"class RefundQueue:\n    def __init__(self):\n        self.seen = set()\n        self.events = []\n\n    def enqueue(self, request_id, cents):\n        if request_id in self.seen:\n            return 'duplicate'\n        self.seen.add(request_id)\n        self.events.append({'id': request_id, 'cents': cents})\n        return 'queued'\n","contract":["金额只接受正整数分，bool不合法","同request_id和同金额重试返回duplicate且不重复事件","同request_id不同金额报错且不改变状态","事件append失败时请求ID不能永久占用，恢复后允许同请求重试"],"outputFiles":["solution.py","validation.txt","limits.md"],"clarifications":[{"question":"是否要求并发与真实退款语义？","answer":"不要求；如无法处理append成功后状态记录失败，说明假设，不声称原子性。"}]},"acceptance":["合法首次请求、同载荷重试及冲突均有实际运行证明","零、负数、浮点及bool被拒，状态不改变","植入append失败后，同请求能在恢复后成功","保存缺陷版失败、修订版通过与未覆盖项；没有输出时保持未验证"],"recovery":"失败后检查事件与请求记录状态，保留代码和验证输出；不在未知生产状态下重发退款。","origin":"既有可复用试评包的软件教学变体；不纳入独立保留评估","environment":{"requirements":["Python 3.12或兼容环境","获准的本地工作目录；不连接支付系统"],"inputMode":"local supplied practice data","networkRequired":false,"fieldValidation":"not_performed"},"files":{"README.md":"# 串行队列的重复请求与失败重试\n\n任务：DEV-01；标准版本：0.2.0；内容版本：2026-10-02.2\n\n练习输入与验收材料；人工构造，不是现场材料或能力评测成绩\n\n## 范围与环境\n仅本地单进程串行演示；不进行真实退款，不覆盖并发、响应丢失或分布式一致性\n- Python 3.12或兼容环境\n- 获准的本地工作目录；不连接支付系统\n\n## 开始与结束\n1. 保存input.json与任务说明，核对既有授权和缺失条件。\n2. 依据说明生成约定产物，保留实际运行或审阅证据；示例不算运行结果。\n3. 逐项填写acceptance-cases.csv及work-receipt.json，未知保持unverified。\n4. 关键未通过项或需要现场确认的部分未完成时，说明阻塞和已完成部分，不能报告现场成功。\n\n## 交付文件\n- solution.py\n- validation.txt\n- limits.md\n\n## 失败与恢复\n失败后检查事件与请求记录状态，保留代码和验证输出；不在未知生产状态下重发退款。\n\n## 验收方式\n- 合法首次请求、同载荷重试及冲突均有实际运行证明\n- 零、负数、浮点及bool被拒，状态不改变\n- 植入append失败后，同请求能在恢复后成功\n- 保存缺陷版失败、修订版通过与未覆盖项；没有输出时保持未验证\n\n下载和复制不会启动执行；材料与回执默认留在自己的工作目录。\n","input.json":"{\n  \"code\": \"class RefundQueue:\\n    def __init__(self):\\n        self.seen = set()\\n        self.events = []\\n\\n    def enqueue(self, request_id, cents):\\n        if request_id in self.seen:\\n            return 'duplicate'\\n        self.seen.add(request_id)\\n        self.events.append({'id': request_id, 'cents': cents})\\n        return 'queued'\\n\",\n  \"contract\": [\n    \"金额只接受正整数分，bool不合法\",\n    \"同request_id和同金额重试返回duplicate且不重复事件\",\n    \"同request_id不同金额报错且不改变状态\",\n    \"事件append失败时请求ID不能永久占用，恢复后允许同请求重试\"\n  ],\n  \"outputFiles\": [\n    \"solution.py\",\n    \"validation.txt\",\n    \"limits.md\"\n  ],\n  \"clarifications\": [\n    {\n      \"question\": \"是否要求并发与真实退款语义？\",\n      \"answer\": \"不要求；如无法处理append成功后状态记录失败，说明假设，不声称原子性。\"\n    }\n  ]\n}\n","acceptance-cases.csv":"case_id,criterion,verification,evidence_path,status\r\nDEV-01-C1,合法首次请求、同载荷重试及冲突均有实际运行证明,独立产物/条款检查；现场确认按范围另记,,unverified\r\nDEV-01-C2,零、负数、浮点及bool被拒，状态不改变,独立产物/条款检查；现场确认按范围另记,,unverified\r\nDEV-01-C3,植入append失败后，同请求能在恢复后成功,独立产物/条款检查；现场确认按范围另记,,unverified\r\nDEV-01-C4,保存缺陷版失败、修订版通过与未覆盖项；没有输出时保持未验证,独立产物/条款检查；现场确认按范围另记,,unverified\r\n","work-receipt.json":"{\n  \"task_id\": \"DEV-01\",\n  \"task_version\": \"0.2.0\",\n  \"content_version\": \"2026-10-02.2\",\n  \"input_kind\": \"synthetic_practice\",\n  \"input_sha256\": null,\n  \"actual_model\": null,\n  \"actual_host\": null,\n  \"tool_versions\": {},\n  \"authorization_scope\": \"仅本地单进程串行演示；不进行真实退款，不覆盖并发、响应丢失或分布式一致性\",\n  \"outputs\": [],\n  \"checks\": [\n    {\n      \"id\": \"DEV-01-C1\",\n      \"criterion\": \"合法首次请求、同载荷重试及冲突均有实际运行证明\",\n      \"status\": \"unverified\",\n      \"evidence\": [],\n      \"reviewer\": null\n    },\n    {\n      \"id\": \"DEV-01-C2\",\n      \"criterion\": \"零、负数、浮点及bool被拒，状态不改变\",\n      \"status\": \"unverified\",\n      \"evidence\": [],\n      \"reviewer\": null\n    },\n    {\n      \"id\": \"DEV-01-C3\",\n      \"criterion\": \"植入append失败后，同请求能在恢复后成功\",\n      \"status\": \"unverified\",\n      \"evidence\": [],\n      \"reviewer\": null\n    },\n    {\n      \"id\": \"DEV-01-C4\",\n      \"criterion\": \"保存缺陷版失败、修订版通过与未覆盖项；没有输出时保持未验证\",\n      \"status\": \"unverified\",\n      \"evidence\": [],\n      \"reviewer\": null\n    }\n  ],\n  \"human_interventions\": [],\n  \"time_seconds\": null,\n  \"reported_cost\": null,\n  \"failures\": [],\n  \"recovery_actions\": [],\n  \"uncovered_conditions\": [],\n  \"field_owner_confirmation\": null,\n  \"overall_status\": \"unverified\",\n  \"sharing\": \"local_only_until_user_authorizes\"\n}\n"},"fileSha256":{"README.md":"411159c89e61a43ce6b7cb1c779aee73aea36fc0c65e1bb9edbad483f3c1e573","input.json":"23c47514a05dfed1bbd94fb4bda54f1ecddb30740a633f7caeb689a6d58e98a8","acceptance-cases.csv":"ceb75b3fb89b20200d7c59d3520cf244dd8ae53c8890301fb360fa3896202c0e","work-receipt.json":"b0fccfff458c399e603528243e9ec01ebcb3e23534d083076b72aed251b6f042"},"readiness":"input_and_review_package; no claim of field validity"}