Skip to content

[EPAC-2287]: Serve bill version diff endpoint#811

Merged
riddim-developer-bot[bot] merged 1 commit into
mainfrom
symphony/epac-2287-loadbillversiondiff-serve-the-bill-diff-endpoint
Jun 14, 2026
Merged

[EPAC-2287]: Serve bill version diff endpoint#811
riddim-developer-bot[bot] merged 1 commit into
mainfrom
symphony/epac-2287-loadbillversiondiff-serve-the-bill-diff-endpoint

Conversation

@riddim-developer-bot

Copy link
Copy Markdown
Contributor

Scope

  • Adds the backend LoadBillVersionDiff use case and domain response types for BillVersionDiff / BillClauseDiff.
  • Serves GET /api/v1/bills/{id}/diff?from=...&to=... from the bills Lambda with 400 query validation, 404 unknown-bill handling, and 204 unavailable handling for unknown version pairs or missing diff rows.
  • Maps bill_diffs and bill_clause_diffs from the SQLite bills artifact, preserving clause sort_order, and keeps version metadata compatible with both the existing handler fixture columns and the current indexer artifact columns.
  • Updates OpenAPI and the architecture use-case catalog for the backend serving path.

Release-Note: Adds backend support for the bill version diff endpoint used by the bill diff viewer.

Bugfix SPEC

Testing notes

  • Automated tests run:
    • /usr/local/go/bin/go test ./... in backend/bills
    • /usr/local/go/bin/go test -tags integration ./... in backend/bills
    • jq empty backend/openapi/openapi.json
    • /usr/local/go/bin/go test ./... in backend/bills-indexer
    • /usr/local/go/bin/go test ./... in backend/members-indexer
    • /usr/local/go/bin/go test ./... in backend/push-notification-dispatcher
    • /usr/local/go/bin/go test ./... in backend/lobbying-index
  • Manual verification: Not run. Backend API-only change; deterministic Lambda/repository tests cover the route behavior. iOS simulator verification is out of scope for this backend serving issue.

Screenshots

N/A - no visible UI changes.

Related issue

  • Closes: EPAC-2287

@riddim-developer-bot riddim-developer-bot Bot enabled auto-merge (squash) June 14, 2026 17:20
@riddim-developer-bot riddim-developer-bot Bot merged commit 5e2c4a5 into main Jun 14, 2026
62 checks passed
@riddim-developer-bot riddim-developer-bot Bot deleted the symphony/epac-2287-loadbillversiondiff-serve-the-bill-diff-endpoint branch June 14, 2026 17:23
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