# Drive Transport HTTPS — Spec Delta (drive-transport-https-port) ## ADDED Requirements ### TRANSPORT-HTTPS-01 — DriveTransport contract `httpsTransport(options)` MUST return an object satisfying the `DriveTransport` interface from `@suaveplan/drive-mesh`. `advertise` and `onAdvertisement` MUST be no-ops (HTTPS is unidirectional). `peers()` MUST return a single synthetic `PeerInfo` representing the server. **Verified by:** `src/transport.spec-conformance.test.ts` (`TRANSPORT-HTTPS-01`). ### TRANSPORT-HTTPS-02 — Chunk fetch URL and body `requestChunk(peerId, fileId, chunkId)` MUST issue `GET /v1/chunks//` via the injected `fetch` and yield the response body as `AsyncIterable`. Response body bytes MUST be passed through unmodified (the chunks plugin's sig-verify will validate them). **Verified by:** `src/transport.spec-conformance.test.ts` (`TRANSPORT-HTTPS-02`). ### TRANSPORT-HTTPS-03 — Range requests for partial reads When `requestChunk` is called with a byte range, the transport MUST issue an HTTP `Range: bytes=-` header. Responses with status `206 Partial Content` MUST be honoured. **Verified by:** `src/transport.spec-conformance.test.ts` (`TRANSPORT-HTTPS-03`). ### TRANSPORT-HTTPS-04 — Error code mapping HTTP `404` MUST surface as `MeshError(MESH.MANIFEST_FETCH_FAILED)` for manifest endpoints or `MeshError(MESH.NO_PEERS_AVAILABLE)` for chunk endpoints. `5xx` MUST surface as `MeshError(MESH.TRANSPORT_ERROR)`. `401`/`403` MUST surface as `MeshError(MESH.TRANSPORT_ERROR)` with code-string `auth-failed` in the cause. **Verified by:** `src/transport.spec-conformance.test.ts` (`TRANSPORT-HTTPS-04`).