52 lines
2.1 KiB
Markdown
52 lines
2.1 KiB
Markdown
# adapter:outbound:identifier — non-IO infrastructure-capability adapter
|
|
|
|
## Registered identity
|
|
|
|
- Module ID: `adapter-outbound-identifier`
|
|
- Gradle path: `:adapter:outbound:identifier`
|
|
- Focused test: `./gradlew :adapter:outbound:identifier:test --console=plain`
|
|
- Runtime baseline: Java 21; repository framework baseline: Spring Boot 4.0.0.
|
|
- Registry SSOT: `.harness/project/modules.yaml`.
|
|
|
|
Package root: `dev.caskeleton.adapter.outbound.identifier`.
|
|
|
|
Design decisions previously kept as code comments (algorithm SSOT, salt origin,
|
|
build choices) live in [README.md](README.md).
|
|
|
|
## Responsibility
|
|
|
|
- Driven adapters for capabilities with **no external-system integration**:
|
|
identifier generation/encoding today, and clock / crypto/random sources by the
|
|
same rationale (feature-resource-identifier-contract §4 taxonomy).
|
|
- `UuidCodec` — UUID handling on top of the JDK `java.util.UUID` (RFC 9562 UUIDv7):
|
|
`normalize(String)` accepts a case-insensitive canonical UUID and returns the
|
|
canonical 36-character lowercase form (D3); `toUuid` / `fromUuid` convert between
|
|
the UUID string and the 128-bit `UUID` stored in the PostgreSQL `uuid` column (D10).
|
|
- Kept out of `adapter-outbound` on purpose: a UUID id/codec capability is
|
|
infrastructure, not an outbound integration point, so `adapter-outbound` keeps its
|
|
documented meaning (external HTTP / messaging / cache / notifications).
|
|
|
|
## Allowed
|
|
|
|
- `:application-core`, `:domain-core`, `:shared-contract` (Gradle matrix). Currently
|
|
only `:domain-core` + `com.github.f4b6a3:uuid-creator` are declared in
|
|
[build.gradle](build.gradle).
|
|
|
|
## Forbidden
|
|
|
|
- Persistence or web technology (JPA/Hibernate/Spring Data/Spring Web) — ArchUnit
|
|
`identifier_adapter_does_not_depend_on_other_adapters_or_bootstrap`;
|
|
`.claude/hooks/ca_import_gate.py` G4 가 쓰기 시점에 차단.
|
|
- inbound adapters, persistence adapters, other outbound leaves, `app-bootstrap`,
|
|
`sample-portfolio`.
|
|
- External IO (HTTP / messaging / cache / DB) — that belongs in `adapter-outbound`.
|
|
|
|
## Test
|
|
|
|
Pure unit tests, no Spring context (`UuidCodecSpec`).
|
|
|
|
```bash
|
|
cd src
|
|
./gradlew :adapter:outbound:identifier:test --console=plain
|
|
```
|