Problem
PinningService.pin() returns null on failure with no logging and no distinction between "pinning disabled" and "actual error" (pinning.service.ts:41-64). Callers proceed as if the CID was pinned — metadata is stored in the DB pointing to content that was never pinned, causing silent data loss.
Fix
Throw a typed error on failure, add structured logging per attempt, and let callers decide whether to abort or continue degraded.
File: backend/src/services/pinning.service.ts:41-64
Problem
PinningService.pin()returnsnullon failure with no logging and no distinction between "pinning disabled" and "actual error" (pinning.service.ts:41-64). Callers proceed as if the CID was pinned — metadata is stored in the DB pointing to content that was never pinned, causing silent data loss.Fix
Throw a typed error on failure, add structured logging per attempt, and let callers decide whether to abort or continue degraded.
File:
backend/src/services/pinning.service.ts:41-64