data-set terminate calls synapse.storage.terminateService({ dataSetId, skipProvider: true }) (src/data-set/run.ts:314). skipProvider: true is filecoin-pin's explicit choice, not the SDK default. This issue tracks confirming it as the right default.
Both paths invoke the same on-chain call, FWSS.terminateService(dataSetId), so the fund wind-down (endEpoch, lockup-period settlement) is identical:
skipProvider: true (current): the owner wallet submits the tx directly and always returns a tx hash.
- provider-relayed (SDK default): the owner signs an EIP-712 payload, the provider submits the same tx, and the SDK refuses when the account cannot settle its lockup in full (
debt > 0).
Differences that matter for the CLI:
- Gas: direct, the owner pays; relayed, the provider pays.
- Debt gate: relayed refuses under outstanding lockup debt; direct always runs.
- Reliability: relayed needs the provider's HTTP endpoint up and willing; direct only needs the chain.
- tx hash: direct returns one immediately (the
--wait UX depends on it); relayed polls the provider status endpoint and can come back empty.
For a self-service CLI, direct is the deterministic, provider-independent path that always yields a confirmable tx hash, so it stays the default. The one thing it gives up is letting the provider cover termination gas.
Decision to confirm: keep skipProvider: true as the default, and optionally expose provider-relayed termination behind a flag for users who want gasless wind-down.
Verified against synapse-sdk v1.0.1 and synapse-core v0.7.0 (storage/terminate.js, warm-storage/terminate-service.js, sp/terminate-service.js).
Context: PR #574 review thread #574 (comment) (noted as an out-of-scope follow-up in the PR body).
cc @juliangruber
data-set terminatecallssynapse.storage.terminateService({ dataSetId, skipProvider: true })(src/data-set/run.ts:314).skipProvider: trueis filecoin-pin's explicit choice, not the SDK default. This issue tracks confirming it as the right default.Both paths invoke the same on-chain call,
FWSS.terminateService(dataSetId), so the fund wind-down (endEpoch, lockup-period settlement) is identical:skipProvider: true(current): the owner wallet submits the tx directly and always returns a tx hash.debt > 0).Differences that matter for the CLI:
--waitUX depends on it); relayed polls the provider status endpoint and can come back empty.For a self-service CLI, direct is the deterministic, provider-independent path that always yields a confirmable tx hash, so it stays the default. The one thing it gives up is letting the provider cover termination gas.
Decision to confirm: keep
skipProvider: trueas the default, and optionally expose provider-relayed termination behind a flag for users who want gasless wind-down.Verified against synapse-sdk v1.0.1 and synapse-core v0.7.0 (
storage/terminate.js,warm-storage/terminate-service.js,sp/terminate-service.js).Context: PR #574 review thread #574 (comment) (noted as an out-of-scope follow-up in the PR body).
cc @juliangruber