Skip to content

[EPAC-2298]: Persist clause-level bill diff data for backend route#814

Merged
riddim-developer-bot[bot] merged 1 commit into
mainfrom
symphony/epac-2298-persist-clause-level-bill-diff-data-for-backend
Jun 14, 2026
Merged

[EPAC-2298]: Persist clause-level bill diff data for backend route#814
riddim-developer-bot[bot] merged 1 commit into
mainfrom
symphony/epac-2298-persist-clause-level-bill-diff-data-for-backend

Conversation

@riddim-developer-bot

Copy link
Copy Markdown
Contributor

Scope

Fixes the XML and PDF URL discovery gap in the bills-indexer fetcher. When processing intermediate bill versions (e.g. "As amended by committee" or "As passed by the House of Commons"), parl.ca's DocumentViewer URLs return 302 redirects to an error page, which prevented the indexer from locating and ingesting the XML text of these intermediate stages.

To resolve this, we programmatically construct the XML and PDF URLs for subsequent versions based on the successfully-resolved first-reading document URLs, substituting the version numbers. This ensures all bill versions have their text fetched, enabling the clause-level diff algorithm to run and persist clause diff data in bill_clause_diffs for the backend /diff endpoint.

Bugfix SPEC

Testing notes

  • Automated tests run:

    • Ran go test ./... in backend/bills-indexer (passed)
    • Ran go test ./... in backend/bills (passed)
    • Ran python3 -m pytest scripts/ci/test_backend_staging_smoke.py (passed)
    • Added new unit test cases to fetcher_test.go covering constructXMLURL and constructPDFURL
  • Manual verification:

    • None required (backend-only indexer change)

Screenshots

N/A

Related issue

  • Closes: EPAC-2298

@riddim-developer-bot riddim-developer-bot Bot enabled auto-merge (squash) June 14, 2026 18:44
@riddim-developer-bot riddim-developer-bot Bot merged commit 3bbab7b into main Jun 14, 2026
62 checks passed
@riddim-developer-bot riddim-developer-bot Bot deleted the symphony/epac-2298-persist-clause-level-bill-diff-data-for-backend branch June 14, 2026 18:47
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