---
title: Tech debt
summary: CRITICAL and HIGH severity findings from analysis.
status: draft
owner: SAIF.Core documentation
last_reviewed: 2026-09-24
---

# Tech debt

The only call site has no failure handling at any layer, a mid-loop failure leaves partial fax delivery unreported, and a failed call leaks the temp fax document.

## CRITICAL

No CRITICAL findings were identified for this proxy.

## HIGH

| Finding | Component | Impact | Recommended action |
| --- | --- | --- | --- |
| Neither `FaxServiceProxy.SendFax` nor `FaxService.SendFax` wraps the call in a `try`/`catch`; `FaultException`, `CommunicationException`, and `TimeoutException` all propagate raw | `Services/SAIF.Services.Web.Proxies/FaxServiceProxy.cs:43`; `Services/SAIF.Services.WCF/Services/FaxService.cs:42` | With multiple recipients, a failure mid-loop leaves earlier recipients faxed and later ones not, with no indication of which | Not prescribed |
| `FaxService.SendFax` deletes the temp file only after its recipient loop completes; a failure mid-loop skips the delete | `Services/SAIF.Services.WCF/Services/FaxService.cs:38-45` | The fax document content is orphaned in the shared temp storage folder | Not prescribed |
| `Dispose()` calls `Close()` with no `Abort()` fallback on a faulted `ClientBase<T>` | `FaxServiceProxy.cs:57-65` | `Close()` on a faulted channel throws `CommunicationObjectFaultedException`, masking the original failure | Not prescribed |
| No retry, no explicit timeout, and no cancellation exist at any layer | `FaxServiceProxy.cs:34-44`; `FaxService.cs:30-46` | A slow or unreachable remote service blocks the calling thread for up to the default binding timeout with no recovery path | Not prescribed |
| Three different endpoint hosts appear across the repository (`websvcprod` at runtime and generation time, `api.saif.com` in the unused `app.config`) with no reconciliation | `Services/SAIF.Services.WebApi/EnvironmentApi/App_Data/environments.xml`; `Services/SAIF.Services.Web.Proxies/app.config:60` | A reader cannot determine from configuration alone which host is authoritative without tracing the code path | Not prescribed |

## Related documentation
- [Client index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Contract](contract.md)
- [Operation map](operation-map.md)
- [Client reference](reference.md)
- [Consumption](consumption.md)
- [Dependencies](dependencies.md)

## Sources
- `Services/SAIF.Services.Web.Proxies/FaxServiceProxy.cs`
- `Services/SAIF.Services.WCF/Services/FaxService.cs`
