Skip to content

Layer 1 Part B: NaivePrReviewService and PrReviewResource (teaching baseline) #27

@mdproctor

Description

@mdproctor

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions