Admin report metadata advertises diagnostic archives as available, but ten older unexpired reports return HTTP 404 from the diagnostic download endpoint while their report detail remains readable. Newer archives download successfully. No report IDs, contact details, archive contents, or credentials are included here.
The current summary derives hasDiagnostics only from the database object key. FileObjects.Get returns not-found when the encrypted file is absent. This makes a missing storage object indistinguishable from a missing report and leaves a broken download action visible.
Acceptance criteria:
- Distinguish unavailable diagnostic storage from unavailable report metadata.
- Show accurate attachment availability in the admin interface without exposing object keys or private data.
- Add deterministic missing-object and storage-error tests.
- Verify persistent object storage survives production redeploys and matches database retention. Missing files must not be presented as recovered without evidence.
The cause of the missing production objects is not yet established; the API inconsistency is confirmed.
Admin report metadata advertises diagnostic archives as available, but ten older unexpired reports return HTTP 404 from the diagnostic download endpoint while their report detail remains readable. Newer archives download successfully. No report IDs, contact details, archive contents, or credentials are included here.
The current summary derives hasDiagnostics only from the database object key. FileObjects.Get returns not-found when the encrypted file is absent. This makes a missing storage object indistinguishable from a missing report and leaves a broken download action visible.
Acceptance criteria:
The cause of the missing production objects is not yet established; the API inconsistency is confirmed.