Files
llm-wiki/raw/blog-topics/sample-fixture-dual-mode-build-matrix-2026-06-25.md
T

96 lines
3.9 KiB
Markdown

---
title: Sample fixture dual-mode build matrix
source_type: blog-topic
status: raw
related_branches: [feature-sample-removal-adoption-contract]
related_projects: [ca-tmpl]
tags: [blog-topic, ca-tmpl, clean-architecture, gradle, template-repository, testing]
created: 2026-06-25
status_label: ready-for-canonical
target_audience: backend-engineer
inspiration_url:
archive_url:
---
# Sample fixture dual-mode build matrix
## Parent
- [[raw/branch-notes/feature-sample-removal-adoption-contract]]
## Angle
템플릿 저장소에서 예제 도메인을 완전히 삭제하지 않고도, production/core 계약이 예제 코드에 의존하지 않음을 증명하는 방법.
## Outline
1. Sample module을 삭제하지 않는 이유: fixture, reference, contract coverage.
2. Runtime toggle이 부적절했던 이유: production app에는 애초에 sample runtime wiring이 없다.
3. Dual-mode를 build/test matrix로 재정의: sample-on과 sample-off.
4. Gradle 구현: declarable fixture configuration, custom source set, dedicated test task.
5. 테스트 정리: core test의 sample import 제거, sample-owned contract는 sample module로 이동.
6. CI release gate: hosted workflow wiring과 local gate matrix verification.
7. 함정: dependency locks, ArchUnit import option, empty corpus, static-analysis policy.
## Outline seed
1. Sample module을 삭제하지 않는 이유를 fixture, reference, contract coverage 관점으로 설명한다.
2. runtime toggle이 아니라 sample-on/sample-off build matrix가 필요한 이유를 정리한다.
3. Gradle fixture configuration, custom source set, dedicated test task의 역할을 나눈다.
4. CI release gate와 local verification에서 sample-off가 실제로 막아야 하는 실패를 기록한다.
## Evidence to cite later
- `src/app-bootstrap/build.gradle` `sampleFixture` / `sampleOffTest`.
- `SampleRemovalSmokeContractTest`.
- `ProductionClassImportOption`.
- `.github/workflows/ci-quality-gates.yml` `sample-off` job.
- [[raw/errors/gradle-custom-source-set-isolation-failures-2026-06-25]].
## 트리거 / Trigger
- 트리거 유형: `branch-work`
- 트리거 날짜: 2026-06-25
- 트리거 연결 노트: [[raw/branch-notes/feature-sample-removal-adoption-contract]]
## 글감 / Topic seed
- 한 문장 요지: sample domain을 runtime toggle이 아니라 sample-on/sample-off build matrix로 격리해 production/core 계약이 sample에 의존하지 않음을 검증한다.
- 예상 제목 후보:
- Sample-off build matrix로 템플릿 의존성 검증하기
- 예제 도메인을 지우지 않고 production 경계를 증명하기
## 핵심 주장 후보 / Claim candidates
- 사실 후보:
- sample fixture source set과 sample-off test task가 sample 의존성 격리를 검증한다.
- 의견/해석 후보:
- template repository에서 sample은 제거 대상이 아니라 contract fixture일 수 있다.
## Canonical 전환 후보 / Canonical extraction candidates
- `wiki/projects/ca-tmpl/sample-fixture-and-adoption.md` 후보:
- sample fixture dual-mode build matrix 글감.
- 필요한 추가 검증:
- 현재 `sampleFixture`, `sampleOffTest`, CI sample-off job 존재 여부.
## Sources / 근거 후보
- [[raw/branch-notes/feature-sample-removal-adoption-contract]]
- [[raw/errors/gradle-custom-source-set-isolation-failures-2026-06-25]]
## 미해결 / Unknown
- 아직 확인해야 할 사실: hosted CI sample-off job 실제 차단 검증 여부.
- 과장하면 안 되는 부분: runtime toggle로 검증한다고 쓰지 않고 build/test matrix로 제한한다.
## Decision / 처리 결정
- 액션: `promote-to-canonical`
- 이유: `wiki/projects/ca-tmpl/sample-fixture-and-adoption.md` 에 sample fixture dual-mode build matrix 글감으로 반영한다.
- 다음 단계: blogify 전 local vs hosted CI evidence를 분리한다.
## Related / 관련
- 관련 branch: [[raw/branch-notes/feature-sample-removal-adoption-contract]]