Files
llm-wiki/raw/errors/onboarding-fixture-package-path-mismatch-2026-06-25.md
T

60 lines
2.2 KiB
Markdown

---
title: onboarding fixture package path mismatch
source_type: error-note
status: raw
tags: [error, ca-skeleton, gradle, test-fixture, package-layout]
created: 2026-06-25
---
# onboarding fixture package path mismatch
## Parent
- [[raw/branch-notes/feature-domain-feature-onboarding-contract]]
## Symptom
`./gradlew check` failed at `:app-bootstrap:compileSampleOffTestJava` after renaming the onboarding dry-run fixture from `Ticket*` to `FeatureAggregate*`.
Compiler errors said packages such as `dev.caskeleton.onboarding.domain.feature` and `dev.caskeleton.onboarding.adapter.persistence.entity` did not exist, even though focused `:app-bootstrap:test` had previously passed.
## Root Cause
Some fixture files lived under:
```text
src/app-bootstrap/src/test/java/dev/caskeleton/bootstrap/architecture/allowed/onboarding/**
```
while declaring:
```text
package dev.caskeleton.onboarding...
```
The logical package was intentionally chosen to avoid ArchUnit false positives from `bootstrap` in package names, but leaving the files under the `bootstrap/architecture/allowed` path created IDE/source-set confusion and exposed stale or incomplete compile output under `sampleOffTest`.
## Fix
Move the onboarding positive fixture to a path that matches its package:
```text
src/app-bootstrap/src/test/java/dev/caskeleton/onboarding/**
```
Keep the package declarations as:
```text
dev.caskeleton.onboarding.*
```
## Verification
- `./gradlew :app-bootstrap:compileTestJava :app-bootstrap:compileSampleOffTestJava --rerun-tasks``BUILD SUCCESSFUL`
- `./gradlew :app-bootstrap:test --tests '*DomainFeatureOnboardingContractTest' --tests '*ArchitectureViolationFixtureTest' :app-bootstrap:sampleOffTest --tests '*DomainFeatureOnboardingContractTest' --tests '*ArchitectureViolationFixtureTest'``BUILD SUCCESSFUL`
- `./gradlew check``BUILD SUCCESSFUL`
## Prevention
For architecture positive fixtures that intentionally use a synthetic package, make the source path match the synthetic package. Avoid putting synthetic production-like fixtures under `dev/caskeleton/bootstrap/architecture/allowed/**` unless the package also starts with `dev.caskeleton.bootstrap.architecture.allowed`.