{ "assetKey": "a05-f033-jpa-flyway-migration-run", "kind": "terminal", "command": "mkdir -p /tmp/probe\nset -e\necho '# 카드의 생산자 태스크를 재실행 강제로 돌린다'\ngit status --short | head -3\necho \"작업 트리 변경: $(git status --short | wc -l) 줄\"\ntimeout 900 ./gradlew :adapter:outbound:persistence-jpa:postgresqlMigrationIntegrationTest \\\n --rerun-tasks --console=plain 2>&1 \\\n | grep -E 'FAILED|tests completed|BUILD|AssertionFailedError' | head -10 || true\n\necho\necho '# 두 실패의 단언 메시지'\ncat > /tmp/probe/failmsg.py <<'PYEOF'\n\"\"\"실패한 단언 메시지만 뽑는다. 메서드 이름은 Gradle 출력이 이미 말한다.\"\"\"\nimport glob, html, re\nfor path in sorted(glob.glob(\n 'adapter/outbound/persistence-jpa/build/test-results/'\n 'postgresqlMigrationIntegrationTest/TEST-*.xml')):\n for failure in re.findall(r']*>(.*?)',\n open(path, encoding='utf-8').read(), re.S):\n print(html.unescape(failure).split('\\tat ')[0].strip())\n print()\nPYEOF\npython3 /tmp/probe/failmsg.py", "cwd": "/shared/codebase/clean-architecture-backend-template/src", "exitCode": 0, "executedAt": "2026-09-02T06:09:54+00:00", "sourceRevision": "21234e38cdb9a926cbc92bb97a2aee2e4a7d2916", "raw": "evidence/raw/a05-f033-jpa-flyway-migration-run.txt", "svg": "evidence/rendered/a05-f033-jpa-flyway-migration-run.svg", "rawSha256": "dea9bf696f6b245e6a11ab0d1412be0971fc994a5da3c9f4a95be2ba1df5c8f3", "lines": 27, "redaction": "none — 빌드 출력, 자격증명 없음" }