Skip to content

[EPAC-2299]: Serve bill version diffs with correct HTTP 404 version checking#815

Merged
riddim-developer-bot[bot] merged 1 commit into
mainfrom
symphony/epac-2299-serve-bill-version-diffs-from-visible-backend-ro
Jun 14, 2026
Merged

[EPAC-2299]: Serve bill version diffs with correct HTTP 404 version checking#815
riddim-developer-bot[bot] merged 1 commit into
mainfrom
symphony/epac-2299-serve-bill-version-diffs-from-visible-backend-ro

Conversation

@riddim-developer-bot

Copy link
Copy Markdown
Contributor

Scope

Implement HTTP 404 version checking for GET /api/v1/bills/{id}/diff when requested version IDs are not found in the database, while returning HTTP 204 when the versions exist but diff data is unavailable.

This includes:

  • Adding usecase.ErrVersionNotFound error value.
  • Updating sqlite.Repository.GetBillVersionDiff to query version existence first before retrieving diff data. If the versions do not exist in the database, usecase.ErrVersionNotFound is returned.
  • If the tables themselves are absent (for example, in outdated schemas), it gracefully returns nil, nil (unavailable / HTTP 204).
  • Updating backend/bills/main.go error mapper to return HTTP 404 with a typed "version not found" error when usecase.ErrVersionNotFound is encountered.
  • Modifying SQLite repository and handler tests to assert HTTP 404 for unknown/missing version IDs and HTTP 204 when the versions exist but the diff record is absent.

Testing notes

  • Automated tests run:
    • /usr/local/go/bin/go test -v ./... in backend/bills (all tests passed)
    • /usr/local/go/bin/go test -v ./... in backend/openapi (all tests passed)
  • Manual verification:
    • Local unit/integration tests verified the correct response behavior (200 for successful diffs, 204 for missing diff data with existing versions, and 404 for missing bills or missing version IDs).

Related issue

  • Closes: EPAC-2299

@riddim-developer-bot riddim-developer-bot Bot enabled auto-merge (squash) June 14, 2026 18:51
@riddim-developer-bot riddim-developer-bot Bot merged commit 8e21095 into main Jun 14, 2026
62 checks passed
@riddim-developer-bot riddim-developer-bot Bot deleted the symphony/epac-2299-serve-bill-version-diffs-from-visible-backend-ro branch June 14, 2026 18:53
riddim-developer-bot Bot added a commit that referenced this pull request Jun 14, 2026
## What & why

Post-implementation **architecture verification** of the *Bill diff
backend completion* Project
([EPAC-2293](https://linear.app/riddimsoftware/issue/EPAC-2293/architecture-verification-for-bill-diff-backend-completion)).
This is an `arch-team` Project Verification gate — not a PR review and
not an implementation change. It scores the *merged* Project state on
`origin/main` and records the result as a checked-in scorecard, mirrored
to a Linear comment on EPAC-2293.

Docs-only: adds
`docs/architecture/bill-diff-backend-completion-verification-epac2293.md`.
No application/backend code is touched (the issue's "no implementation
PR / no code patching" constraint is preserved).

## Verdict

**7.5 / 10.0 — Healthy (high pass).** No Cardinal Sin, no Hidden
Dependency.

What holds:
- Dependency direction holds in both Go services (`domain` imports no
use case/adapter/SDK; use cases depend on ports; `main.go` is the
composition root).
- Serving split is correct: `LoadBillVersionDiff` owns the 204-vs-404
policy, the handler is thin, the repository owns SQLite.
- **Civic-content provenance is clean** — verbatim XML→clause text
end-to-end, structural `change_type` only, honest `nil` Hansard anchors;
no generated/summarized parliamentary text.
- Deployment smoke distinguishes API Gateway 404 from app-level 404 —
directly targeting the original regression.
- OpenAPI + use-case catalog updated by the implementing PRs.

Deductions (−2.5): Behavioral Leakage −1.0 + Catalog Drift −1.0
(clause-diff policy lives in the LEGISinfo source adapter, not the
cataloged indexer use case) → **EPAC-2303**; Enforcement Gap −0.5 (bills
SQLite artifact schema is an unverified cross-adapter contract; sparse
served version metadata) → **EPAC-2304**.

## Reconstructed inputs

Originally-named siblings EPAC-2283/2284 were re-scoped (still in
Backlog). Actual merged work scored: EPAC-2286 (#810), EPAC-2298 (#814),
EPAC-2287 (#811), EPAC-2299 (#815), EPAC-2288 (#812), EPAC-2285 (#817),
EPAC-2289 (#818), via `git fetch origin main` + merged commits.

## Follow-ups filed (non-blocking, `arch`, est. 4)

- [EPAC-2303](https://linear.app/riddimsoftware/issue/EPAC-2303) —
Implement `ComputeBillVersionDiff` use case in the bills-indexer
application layer.
- [EPAC-2304](https://linear.app/riddimsoftware/issue/EPAC-2304) — Lock
the bills SQLite artifact schema with a producer-to-consumer seam test.

## Verification evidence

- Scope is docs-only (`git diff origin/main..HEAD --stat`: 1 file,
+117). No Go/Swift/CI code changed, so no build or simulator run
applies; `pr-build` covers the change.
- EPAC-2293 attached to the *Bill diff backend completion* Project;
scorecard comment posted on the issue.

Release-Note: none (docs-only architecture verification record).

Co-authored-by: riddim-developer-bot <developer-bot@riddimsoftware.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants