{ "_doc": "L2 contract_mismatch: round 1 fails (auth-be 500 vs auth-fe expects 401), round 2 passes after Architect patches SDD + L1 reruns.", "sequence": [ { "_variant": "round1-fail", "chunks": [ "## step 0 · 读 units.json + integration/spec.json\n", "## step 1-4 · 起 be 进程,跑 case-add-list\n", "case 失败: POST /todos 返 500, 期望 201/400 (contract 不一致)\n" ], "result": "mock-ok devloop-integrator[round1] FAILED: contract mismatch", "files": [ { "path": "integration/runs/run-mock-l2-1/result.json", "content": "{\n \"ok\": false,\n \"crashed\": false,\n \"run_id\": \"run-mock-l2-1\",\n \"summary\": { \"total\": 1, \"passed\": 0, \"failed\": 1 },\n \"failures\": [{\n \"case_id\": \"case-add-list\",\n \"failed_step\": 0,\n \"involves\": [\"todo-be\", \"todo-fe\"],\n \"got\": { \"status\": 500, \"body\": {} },\n \"expected\": { \"status\": 201 },\n \"stderr_excerpt\": \"TypeError: cannot read property text\"\n }],\n \"duration_ms\": 1234\n}\n" }, { "path": "integration/runs/run-mock-l2-1/process.log", "content": "[todo-be] starting on :18001\n[todo-be] TypeError at server.js:8\n[todo-be] exited code 1\n" }, { "path": "integration/runs/run-mock-l2-1/http-trace.ndjson", "content": "{\"ts\":1747139000,\"unit\":\"todo-be\",\"method\":\"POST\",\"url\":\"http://127.0.0.1:18001/todos\",\"status\":500}\n" } ] }, { "_variant": "round2-pass", "chunks": [ "## L2 round 2 (after SDD patched + L1 reran)\n", "case-add-list 通过 ✓\n" ], "result": "mock-ok devloop-integrator[round2] PASS: integration green", "files": [ { "path": "integration/runs/run-mock-l2-2/result.json", "content": "{\n \"ok\": true,\n \"crashed\": false,\n \"run_id\": \"run-mock-l2-2\",\n \"summary\": { \"total\": 1, \"passed\": 1, \"failed\": 0 },\n \"failures\": [],\n \"duration_ms\": 980\n}\n" } ] } ] }