Context
Layer 1 of the devtown tutorial has two parts. Part A (Epics 1–2) established the domain vocabulary and scaffold. Part B — the naive PR review service — is the teaching baseline that every subsequent layer displaces.
This issue covers Part B. It is a prerequisite for Epic 3 (casehub-engine, Layer 5): the Layer 5 LAYER-LOG gap comments reference code in `NaivePrReviewService` by design, and the `@DefaultBean` displacement pattern requires a bean to displace.
What to build
`app/src/main/java/io/casehub/devtown/app/NaivePrReviewService.java`
- `@ApplicationScoped @DefaultBean` implementing `PrReviewApplicationService` (interface to define)
- Direct calls to stub specialist services — no CaseHub, no obligations, no audit
- Gap comments on every compliance gap:
- No attribution — which agent reviewed this?
- No response SLA — reviewer can sit indefinitely
- No formal DECLINE — scope boundaries not structurally captured
- No tamper-evident audit trail
- No trust weighting
`app/src/main/java/io/casehub/devtown/app/PrReviewResource.java`
- `POST /api/reviews` — thin REST dispatcher injecting the port interface
- Auth-retrofit ready: no auth logic in the resource body
Test
- Plain `new`, no Quarkus — verify the naive service executes and gap comments are exercisable
Reference
- Layer 1 full spec: `LAYER-LOG.md` §Layer 1 Part B
- Displacement pattern: `@DefaultBean` yielded by any non-default `@ApplicationScoped` impl
- Tutorial teaching objective: `../parent/docs/tutorial-strategy.md §7.5.1` Layer 1
- Epic 3 (Layer 5): devtown#10 — depends on this issue
Refs devtown#8, devtown#9
Context
Layer 1 of the devtown tutorial has two parts. Part A (Epics 1–2) established the domain vocabulary and scaffold. Part B — the naive PR review service — is the teaching baseline that every subsequent layer displaces.
This issue covers Part B. It is a prerequisite for Epic 3 (casehub-engine, Layer 5): the Layer 5 LAYER-LOG gap comments reference code in `NaivePrReviewService` by design, and the `@DefaultBean` displacement pattern requires a bean to displace.
What to build
`app/src/main/java/io/casehub/devtown/app/NaivePrReviewService.java`
`app/src/main/java/io/casehub/devtown/app/PrReviewResource.java`
Test
Reference
Refs devtown#8, devtown#9