[codex] remove dead canvas HTTP path and add PR template#12
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
Pull request overview
This PR removes the now-dead HTTP surface area from canvas-service so durable canvas operations are exposed only via gRPC, and updates backend documentation accordingly. It also adds a repo PR template to standardize change/why/lesson capture.
Changes:
- Remove the canvas HTTP controller and HTTP port configuration, keeping canvas durable operations gRPC-only.
- Update backend docs/architecture diagrams to reflect the single gRPC boundary for
canvas-service. - Add
.github/PULL_REQUEST_TEMPLATE.md.
Reviewed changes
Copilot reviewed 11 out of 11 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| services/canvas/src/main/resources/application.properties | Removes the HTTP server.port and keeps the gRPC port configuration. |
| services/canvas/src/main/java/com/leetdoodle/canvas/service/CanvasService.java | Updates service boundary documentation comment to reflect current collab integration. |
| services/canvas/src/main/java/com/leetdoodle/canvas/grpc/CanvasGrpcService.java | Updates gRPC adapter documentation to reflect gRPC-only boundary. |
| services/canvas/src/main/java/com/leetdoodle/canvas/controller/CanvasController.java | Deletes the HTTP debug controller entirely. |
| services/canvas/pom.xml | Removes the servlet web starter; keeps only the minimal Spring web dependency currently used for status/exception types. |
| docs/backend/README.md | Updates service inventory to remove the canvas HTTP port. |
| docs/backend/operations/local-runtime-and-runbooks.md | Removes canvas HTTP port and updates constraints to match current routing. |
| docs/backend/contracts/rest-api.md | Removes the Canvas REST API contract section and base URL. |
| docs/backend/architecture/containers.md | Updates container diagram + responsibilities to remove HTTP surface. |
| docs/backend/architecture/components.md | Updates component diagram + bullets to remove the HTTP controller. |
| .github/PULL_REQUEST_TEMPLATE.md | Adds a PR template for consistent PR writeups. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| ## What does this PR do? | ||
| > Briefly describe the changes. (e.g., "Added a user authentication form" or "Refactored the API fetching logic.") | ||
| - | ||
| - | ||
|
|
There was a problem hiding this comment.
The template currently includes empty list items (- with no content). These render as blank bullets and can be confusing to fill out (and may be flagged by Markdown linters if added later). Consider replacing them with clearer placeholders (e.g., HTML comments, or checkbox items like - [ ] ...) so authors know what to write without leaving empty bullets.
| <dependency> | ||
| <groupId>org.springframework.boot</groupId> | ||
| <artifactId>spring-boot-starter-web</artifactId> | ||
| <groupId>org.springframework</groupId> | ||
| <artifactId>spring-web</artifactId> | ||
| </dependency> |
There was a problem hiding this comment.
services/canvas is now gRPC-only, but the module still depends on spring-web primarily for HttpStatus/ResponseStatusException usage. If the goal is to trim all HTTP-centric dependencies from canvas-service, consider introducing transport-agnostic/domain exceptions and mapping them to gRPC Status in the adapter, which would let you drop spring-web entirely.
| * <p>This is the only service-to-service transport for durable canvas state. | ||
| * Keeping the boundary on gRPC avoids a second parallel contract drifting away | ||
| * from the real persistence and sequencing path. |
There was a problem hiding this comment.
The service is positioned as a gRPC-only boundary, but errors are still represented via ResponseStatusException/HttpStatus and then mapped to gRPC Status. If you want to keep the gRPC boundary free of HTTP semantics, consider switching to domain exceptions (or gRPC-native exceptions) and mapping those to Status instead of relying on ResponseStatusException.
What does this PR do?
Why is this necessary?
collab -> canvas-servicetraffic to gRPC. Leaving that extra transport path and its docs in place made the architecture harder to trust, increased maintenance surface area, and kept an unnecessary web stack in the canvas service.🧠 What did I learn? (The most important part!)