70 lines
3.0 KiB
Markdown
70 lines
3.0 KiB
Markdown
---
|
|
title: error / ca-tmpl-preexisting-check-baseline-failures-2026-07-20
|
|
source_type: error-note
|
|
status: raw
|
|
related_branches: [chore-harness-policy-engine-alignment]
|
|
related_projects: [ca-skeleton]
|
|
tags: [error, ca-skeleton, testing, build-tooling]
|
|
created: 2026-07-20
|
|
status_label: open
|
|
---
|
|
|
|
# error: ca-tmpl-preexisting-check-baseline-failures-2026-07-20
|
|
|
|
> Layer: `raw/errors/` — 하네스 구현 검증 중 확인한 HEAD-identical production baseline 실패 기록.
|
|
|
|
## 부모
|
|
|
|
- [[raw/branch-notes/chore-harness-policy-engine-alignment]]
|
|
|
|
## 증상
|
|
|
|
- 에러 메시지 (원문 그대로):
|
|
```text
|
|
CleanArchitectureTest.PERSISTENCE_RDBMS_ENTITIES_DO_NOT_PIN_VENDOR_COLUMN_DEFINITIONS
|
|
'if' construct must use '{}'s. [NeedBraces]
|
|
```
|
|
- 발생 컨텍스트: focused CleanArchitectureTest, `./gradlew check`, app-bootstrap test 제외 check.
|
|
- 발생 시점: 2026-07-20 KST
|
|
- 발생 환경: local
|
|
- 재현 가능 여부: `always`
|
|
|
|
## 재현 절차
|
|
|
|
1. `cd src && ./gradlew :app-bootstrap:test --tests '*CleanArchitectureTest' --console=plain`
|
|
2. `cd src && ./gradlew check -x :app-bootstrap:test --console=plain`
|
|
3. 기대: 모두 PASS. 실제: JPA vendor column definition 1건과 domain NeedBraces 3건으로 각각 FAIL.
|
|
|
|
## 조사 단계
|
|
|
|
- 2026-07-20 — `git diff HEAD --`로 failing entity/test/domain files를 대조 → 모두 working-tree diff 없음.
|
|
- 2026-07-20 — `git show HEAD:`로 `columnDefinition = "char(64)"`와 enforcing ArchUnit rule 확인 → 하네스 변경 이전 baseline임을 확인.
|
|
- 2026-07-20 — app-bootstrap test 제외 check 실행 → `Page.java`, `User.java`, `FeedItem.java`의 별도 Checkstyle 실패 확인.
|
|
|
|
## 근본 원인
|
|
|
|
- 직접 원인: `IdempotencyRecordEntity.requestHash`가 vendor SQL `char(64)`를 annotation에 고정했고 domain 세 파일의 단일-line `if`가 NeedBraces rule과 충돌한다.
|
|
- 근본 원인: 현재 HEAD 자체가 architecture/checkstyle guardrail과 정합하지 않다.
|
|
- 트리거 조건: 전체 architecture test 또는 Checkstyle task 실행.
|
|
|
|
## 근거
|
|
|
|
- [[raw/branch-notes/chore-harness-policy-engine-alignment]] §검증 결과 — 실행 명령, 범위 분리, review verdict.
|
|
|
|
## 해결
|
|
|
|
- 적용한 조치: 본 harness branch에서는 production 파일을 수정하지 않고 실패를 범위 밖 baseline으로 분리했다.
|
|
- 검증 방법: failing files의 `git diff HEAD`가 비어 있음을 확인했다.
|
|
- 잔여 위험 / 후속 작업: persistence mapping/migration 정합과 domain brace 수정을 별도 production-fix branch에서 수행하고 전체 `check`를 재실행해야 한다.
|
|
|
|
## 회고
|
|
|
|
- 빨리 감지하는 신호: dependency verifier PASS 뒤 focused ArchUnit와 Checkstyle가 별도로 FAIL할 수 있다.
|
|
- 예방 체크리스트 항목 후보: harness change 전 baseline `check` 결과를 캡처하고 diff-caused와 HEAD-identical failure를 분리한다.
|
|
- wiki로 끌어올릴 가치: baseline-aware verification과 diff identity 구분 패턴.
|
|
|
|
## 관련
|
|
|
|
- [[raw/branch-notes/chore-harness-policy-engine-alignment]]
|
|
|