Baseline and relation to #2678/#2680
Minimal reproductions
- Real SQL self-referencing seed dataset (
employee.manager) with one injected fetch failed on Alice insert, Bob insert, or update mode: each target operation is attempted once.
- Import protocol exposing
createData but no createManyData, with one injected fetch failed: the create is attempted once and reported failed.
Each scenario reproduced 2/2 on fresh state.
Expected / actual
- Expected: preserving sequential ordering/compatibility does not exempt the individual write from transient retry.
- Actual:
SeedLoaderService.writeRecord and the import fallback call the engine/protocol directly, bypassing withTransientRetry.
Impact
Self-referencing seeds and compatible third-party/minimal protocols can still drop rows on a one-off network error—the exact reliability failure #2678 set out to remove.
Evidence and exclusions
- Seed source:
packages/metadata-protocol/src/seed-loader.ts self-ref branch → writeRecord.
- Import source:
packages/rest/src/import-runner.ts no-createManyData inline fallback.
- Normal bulk seed/import paths and import updates passed transient retry QA.
- Sequential ordering and the no-bulk protocol fallback should remain; only retry coverage is missing.
Required regression tests
- Self-ref insert/update transient failure retries and preserves reference order.
- No-
createManyData import transient create retries without changing per-row compatibility semantics.
- Persistent and logical failures retain bounded attempts and row-level errors.
Baseline and relation to #2678/#2680
98874656ffc50ce1531af52346228ffcdda73fba.withTransientRetry, but deliberately preserved two sequential compatibility paths without wrapping their writes: self-referencing seed datasets and import protocols withoutcreateManyData.Minimal reproductions
employee.manager) with one injectedfetch failedon Alice insert, Bob insert, or update mode: each target operation is attempted once.createDatabut nocreateManyData, with one injectedfetch failed: the create is attempted once and reported failed.Each scenario reproduced 2/2 on fresh state.
Expected / actual
SeedLoaderService.writeRecordand the import fallback call the engine/protocol directly, bypassingwithTransientRetry.Impact
Self-referencing seeds and compatible third-party/minimal protocols can still drop rows on a one-off network error—the exact reliability failure #2678 set out to remove.
Evidence and exclusions
packages/metadata-protocol/src/seed-loader.tsself-ref branch →writeRecord.packages/rest/src/import-runner.tsno-createManyDatainline fallback.Required regression tests
createManyDataimport transient create retries without changing per-row compatibility semantics.