# Change Log (AI/Human Curated) ## Entry Template ``` date: YYYY-MM-DD author: scope: type: change rationale: impact: status: completed|rolled-back|partial Summary: Validation: Follow-ups: ``` --- ### CL-001: TASK22211 endpoint search-document contract consistency slice date: 2026-03-23 author: Cline scope: `pages/api/endpoint/{getsearchdocumenthistory_api,getsearchdocumenthistorypaged_api,getsearchdocumentdetails_api,getsearchdocumentdetailspaged_api,getsearchdocumentTypes_api}.js`, `tests/phase21/endpoint-handler-contract.test.cjs` type: change rationale: Continue the endpoint contract-consistency stream by normalizing a coherent search-document handler cluster that still used raw error passthrough and noisy legacy logging patterns. impact: Improved negative-path consistency and safer error contract handling in search-document endpoints while preserving success payload behavior. status: completed Summary: - Branch created from `SIPS-Development`: `TASK22211-endpoint-search-document-contract-consistency`. - Standardized five search-document handlers to `respondError`/`respondSuccess` usage. - Added explicit required-input guards: - `DOCUMENT_ID_REQUIRED` for history/historypaged - `INCIDENT_ID_REQUIRED` for details/detailspaged/types - `ORDER_BY_REQUIRED`, `FIELD_SORT_REQUIRED`, `SHOW_NUMBER_OF_RECORDS_REQUIRED` for details-paged query requirements - Removed noisy direct logging in paged/details code paths. - Preserved success contract patterns (pass-through or transformed payloads where already established). - Expanded phase21 endpoint tests with missing-input, catch-path, and success parity assertions for this cluster. Validation: - `node tests/phase21/api-contract-slice1.test.cjs` -> pass - helper: 4/4 - file-handler: 11/11 - email-handler: 12/12 - endpoint-handler: 53/53 - `npm run lint` -> warnings only (pre-existing `react-hooks/exhaustive-deps` warnings; no new lint errors) Follow-ups: - Continue the next endpoint cluster using the same pattern (bounded slice + phase21 test expansion). - Keep response success payloads contract-stable and avoid broad relay/auth refactors in this stream. ### CL-002: TASK22211 endpoint token handler contract consistency slice date: 2026-03-23 author: Cline scope: `pages/api/endpoint/getToken.js`, `tests/phase21/endpoint-handler-contract.test.cjs` type: change rationale: Close out remaining non-standard endpoint contract handling by normalizing the legacy token endpoint to shared API response helpers and explicit error coding. impact: Improved endpoint error consistency and test coverage for token acquisition failures while preserving successful token payload passthrough. status: completed Summary: - Refactored `getToken.js` to use `respondSuccess` and `respondError` from `pages/api/middleware/apiResponse`. - Removed legacy raw `res.status(...).json(...)`/bare status assignment pattern and dead logging artifacts. - Added explicit catch-path contract: `TOKEN_FETCH_FAILED` with 400 status. - Added endpoint phase21 tests for: - success token payload passthrough - catch-path error contract assertion Validation: - `node tests/phase21/api-contract-slice1.test.cjs` -> pass - helper: 4/4 - file-handler: 11/11 - email-handler: 12/12 - endpoint-handler: 147/147 - `npm run lint` -> warnings only (pre-existing `react-hooks/exhaustive-deps` warnings; no new lint errors) Follow-ups: - Remaining outlier API handler for this consistency stream is `pages/api/file/generateappealpdfcopy.js` (not yet on shared response helpers). ### CL-003: TASK22211 endpoint contract-hardening stream backfill (all known slices) date: 2026-03-23 author: Cline scope: `pages/api/endpoint/*_api.js`, `pages/api/endpoint/getToken.js`, `tests/phase21/endpoint-handler-contract.test.cjs` type: change rationale: Backfill memory-bank traceability so the complete known TASK22211 contract-consistency stream is documented in one place now that memory-bank is being versioned. impact: Improves governance/auditability of API contract hardening, makes rollout and rollback analysis easier, and records exactly which endpoint clusters were normalized. status: completed Summary: - Backfilled all known TASK22211 slices currently on branch (in commit order): - `b57f3de` search-document endpoint contracts + phase21 coverage - `9af541a` my-portal retrieval endpoint contracts - `b880364` basic search endpoint contracts - `a106dea` DNS basic search endpoint contracts - `b5a3a62` portal module + LPA case endpoint contracts - `4601d7c` case detail endpoint contracts - `2959c7d` delete/watched-case endpoint contracts - `b59f13a` metadata + linked-case endpoint contracts - `bcf03a6` form + publication endpoint contracts - `e0e91c8` DNS + representation endpoint contracts - `98e159d` case creation + media endpoint contracts - `88e4586` advanced-search-paged endpoint contract - `cb69bbe` case update + CRM task endpoint contracts - `722ef98` hash + metadata endpoint contracts - `134f99c` address-search endpoint contract - `8b6ed73` new-appeal appeal-types endpoint contract - `eec59e8` token endpoint contract handling - Across the stream, handlers were standardized toward `respondSuccess`/`respondError`, required-input guards, and explicit negative-path error codes while preserving success payload compatibility. - Phase21 endpoint contract suite was expanded incrementally alongside each slice. Validation: - Stream validation baseline (latest known run): - `node tests/phase21/api-contract-slice1.test.cjs` -> pass (endpoint-handler 147/147) - `npm run lint` -> warnings only (pre-existing `react-hooks/exhaustive-deps`; no new lint errors) Follow-ups: - Continue with remaining non-standard API outlier(s), notably `pages/api/file/generateappealpdfcopy.js`. - Keep future slices logged in this file at commit-time now that memory-bank is versioned.