./app-bootstrap/src/test/java/dev/caskeleton/bootstrap/architecture/CleanArchitectureTest.java:178: // org.springframework.data..) from ..domain.., so @CreatedDate / @Column / AuditableEntity ./app-bootstrap/src/test/java/dev/caskeleton/bootstrap/architecture/CleanArchitectureTest.java:181: // created/modified is an adapter-persistence concern (AuditableEntity @MappedSuperclass), ./app-bootstrap/src/test/java/dev/caskeleton/bootstrap/architecture/CleanArchitectureTest.java:193: + "metadata lives only on the adapter-persistence AuditableEntity " ./app-bootstrap/src/test/java/dev/caskeleton/bootstrap/architecture/CleanArchitectureTest.java:2681: + "AuditableEntity @MappedSuperclass, not on a domain class " ./sample-portfolio/src/main/java/dev/caskeleton/sample/portfolio/adapter/outbound/persistence/entity/WorkLogEntity.java:3:import dev.caskeleton.adapter.outbound.persistence.audit.AuditableEntity; ./sample-portfolio/src/main/java/dev/caskeleton/sample/portfolio/adapter/outbound/persistence/entity/WorkLogEntity.java:24:// Extends AuditableEntity to inherit the created/updated audit columns; the domain WorkLog ./sample-portfolio/src/main/java/dev/caskeleton/sample/portfolio/adapter/outbound/persistence/entity/WorkLogEntity.java:28:public class WorkLogEntity extends AuditableEntity { ./sample-portfolio/src/main/java/dev/caskeleton/sample/portfolio/adapter/outbound/persistence/entity/PosterEntity.java:3:import dev.caskeleton.adapter.outbound.persistence.audit.AuditableEntity; ./sample-portfolio/src/main/java/dev/caskeleton/sample/portfolio/adapter/outbound/persistence/entity/PosterEntity.java:16:// Extends AuditableEntity to inherit the created/updated audit columns; the domain Poster carries ./sample-portfolio/src/main/java/dev/caskeleton/sample/portfolio/adapter/outbound/persistence/entity/PosterEntity.java:20:public class PosterEntity extends AuditableEntity { ./adapter/outbound/persistence-jpa/src/test/java/dev/caskeleton/adapter/outbound/persistence/audit/AuditableEntityTest.java:10: * Unit contract for the manual-capture {@link AuditableEntity} base ./adapter/outbound/persistence-jpa/src/test/java/dev/caskeleton/adapter/outbound/persistence/audit/AuditableEntityTest.java:13: *

Exercised through a tiny concrete subclass because {@link AuditableEntity} is a ./adapter/outbound/persistence-jpa/src/test/java/dev/caskeleton/adapter/outbound/persistence/audit/AuditableEntityTest.java:17:class AuditableEntityTest { ./adapter/outbound/persistence-jpa/src/test/java/dev/caskeleton/adapter/outbound/persistence/audit/AuditableEntityTest.java:23: static final class Probe extends AuditableEntity {} ./adapter/outbound/persistence-jpa/src/test/java/dev/caskeleton/adapter/outbound/persistence/auditing/AuditingCandidateStatusTest.java:5:import dev.caskeleton.adapter.outbound.persistence.audit.AuditableEntity; ./adapter/outbound/persistence-jpa/src/test/java/dev/caskeleton/adapter/outbound/persistence/auditing/AuditingCandidateStatusTest.java:21: * actor length and on when the stamp is captured, and the canonical one is {@link AuditableEntity} ./adapter/outbound/persistence-jpa/src/test/java/dev/caskeleton/adapter/outbound/persistence/auditing/AuditingCandidateStatusTest.java:56: assertThat(columnOf(AuditableEntity.class, "updatedAt")) ./adapter/outbound/persistence-jpa/src/test/java/dev/caskeleton/adapter/outbound/persistence/auditing/AuditingCandidateStatusTest.java:64: assertThat(lengthOf(AuditableEntity.class, "updatedBy")).isEqualTo(256); ./adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/outbox/entity/OutboxEventEntity.java:13: * V3__outbox_event.sql}). Does not extend {@code AuditableEntity} (infra record, not a domain ./adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/audit/AuditableEntity.java:14:public abstract class AuditableEntity { ./adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/audit/AuditableEntity.java:28: protected AuditableEntity() {} ./adapter/outbound/persistence-jpa/src/testkit/java/dev/caskeleton/adapter/outbound/persistence/testkit/arch/JpaAuditMechanismRule.java:24: *

Two exist. {@code audit/AuditableEntity} stamps {@code created_*}/{@code updated_*} explicitly ./adapter/outbound/persistence-jpa/src/testkit/java/dev/caskeleton/adapter/outbound/persistence/testkit/arch/JpaAuditMechanismRule.java:36: "dev.caskeleton.adapter.outbound.persistence.audit.AuditableEntity"; ./adapter/outbound/persistence-jpa/src/testkit/java/dev/caskeleton/adapter/outbound/persistence/testkit/arch/JpaAuditMechanismRule.java:100: private static boolean extendsAuditableEntity(JavaClass entity) { ./adapter/outbound/persistence-jpa/src/testkit/java/dev/caskeleton/adapter/outbound/persistence/testkit/arch/JpaAuditMechanismRule.java:113: return extendsAuditableEntity(entity) ./adapter/outbound/persistence-jpa/src/testkit/java/dev/caskeleton/adapter/outbound/persistence/testkit/arch/JpaAuditMechanismRule.java:199: boolean explicit = extendsAuditableEntity(entity); ./adapter/outbound/persistence-jpa/src/testkit/java/dev/caskeleton/adapter/outbound/persistence/testkit/arch/JpaAuditMechanismRule.java:209: + " extends AuditableEntity and embeds AuditMetadata: one fact, two writers,"