This document tracks breaking backend API changes that may impact this frontend. Keep entries brief, actionable, and linked to implementation artifacts.
- Provide a single source of truth for backend API breaking changes.
- Help frontend engineers plan migrations before backend deploys.
- Record rollout status and required frontend action.
Add an entry when any backend change can break existing clients, including:
- Endpoint path or HTTP method changes.
- Required request field changes (rename, type change, removal).
- Response contract changes (field removal/rename/type change).
- Auth, permission, or signature requirements that invalidate prior calls.
- Error code/shape changes relied on by clients.
- Open a changelog entry in the same PR as the backend breaking change.
- Mark
StatusasPlanned, then update toReleasedwhen deployed. - Link migration notes and owning team.
- Frontend owner updates
Frontend Impactand marksFrontend Ready.
Copy this block for each new change:
## YYYY-MM-DD — <Short Change Title>
- **Status:** Planned | Released | Rolled Back
- **Effective Date:** YYYY-MM-DD
- **API Surface:** <endpoint(s) / webhook(s) / contract area>
- **Change Type:** Breaking
- **Owner:** <team/person>
- **Tracking:** <PR/issue/incident link>
### What Changed
- <concise list of contract-level changes>
### Frontend Impact
- <what breaks and where in frontend>
### Required Frontend Action
- [ ] <migration step 1>
- [ ] <migration step 2>
### Migration Notes
- <request/response before/after summary>
- <fallback/rollout notes if any>- Status: Released
- Effective Date: 2026-02-25
- API Surface: Process / Documentation
- Change Type: Breaking-change governance
- Owner: Frontend + Backend maintainers
- Tracking: docs/backend-changelog.md
- Added a dedicated process for recording backend API breaking changes.
- Standardized a single entry template for migration planning.
- None to runtime behavior.
- Future breaking backend updates now require this document to be updated.
- Add changelog process documentation.
- Enforce changelog updates in backend PR template (follow-up).
- This is a non-runtime governance entry that establishes the baseline process.
- Status: Released
- Effective Date: 2026-02-25
- API Surface: Existing documented frontend-consumed APIs
- Change Type: Baseline
- Owner: Frontend + Backend maintainers
- Tracking: docs/backend-changelog.md
- Recorded the starting point for changelog adoption.
- No known pending breaking changes at the time of baseline creation.
- Use this baseline as reference for all future breaking-change entries.
- First true backend contract break after this date must be added as a new dated entry.
- Status: Released
- Effective Date: 2026-05-28
- API Surface: Contracts service (src/lib/backend/services/contracts.ts)
- Change Type: Bug fix (data consistency)
- Owner: Frontend team
- Tracking: Internal issue
- Fixed compliance score scaling asymmetry in the contracts service
- Previously:
recordAttestationOnChaindivided scores by 100 before sending on-chain, butparseChainCommitmentandparseAttestationResultdid not re-scale when reading back - Now: Both write and read paths consistently use ANALYTICS_SCALE (100) for scaling
- Added comprehensive documentation for the ANALYTICS_SCALE constant
- Added round-trip scaling tests covering boundary values (0, 50, 100)
- Compliance scores displayed to users will now show correct values (e.g., 85 instead of 0.85)
- Previously corrupted scores from blockchain reads will now display correctly
- No API contract changes - this is an internal implementation fix
- Fix scaling in parseChainCommitment (multiply by ANALYTICS_SCALE)
- Fix scaling in parseAttestationResult (multiply by ANALYTICS_SCALE)
- Add documentation for ANALYTICS_SCALE constant
- Add round-trip scaling tests with boundary values
- This fix corrects a data consistency bug where compliance scores were incorrectly displayed
- The scaling convention is now: divide by 100 on write, multiply by 100 on read
- Example: Score 85 → 0.85 on-chain → 85 in application (correct round-trip)
- Tests verify no float precision loss for typical scores (0, 25, 50, 75, 85, 92, 100)