Goldpath.FileExchange
0.1.0-preview.8
dotnet add package Goldpath.FileExchange --version 0.1.0-preview.8
NuGet\Install-Package Goldpath.FileExchange -Version 0.1.0-preview.8
<PackageReference Include="Goldpath.FileExchange" Version="0.1.0-preview.8" />
<PackageVersion Include="Goldpath.FileExchange" Version="0.1.0-preview.8" />
<PackageReference Include="Goldpath.FileExchange" />
paket add Goldpath.FileExchange --version 0.1.0-preview.8
#r "nuget: Goldpath.FileExchange, 0.1.0-preview.8"
#:package Goldpath.FileExchange@0.1.0-preview.8
#addin nuget:?package=Goldpath.FileExchange&version=0.1.0-preview.8&prerelease
#tool nuget:?package=Goldpath.FileExchange&version=0.1.0-preview.8&prerelease
Goldpath.FileExchange
File-based integration rails as a unit: rails declared as data with baked,
compile-checked closures — file-level contracts, idempotent (file, line) ingestion,
per-row quarantine that never stops the batch, zero-duplicate replay/reprocess, and
archive marks — with the lifecycle published as integration events. Jobs+Bulk cover the
pieces; the recurring hand-written glue around them (validate → dedup → quarantine →
archive → reprocess) is this module.
builder.AddGoldpathFileExchange(files => files
.AddRail<RegistryRow>("registry-daily", rail => rail
.Header(1)
.ValidateFile(lines => TrailerCountMatches(lines) ? null : "truncated")
.ParseLine(line => RegistryRow.Parse(line))
.ValidateRow(row => row.Amount > 0 ? null : "non-positive amount")
.Handle((row, ct) => ApplyAsync(row, ct))));
- File contract —
ValidateFilerejects the WHOLE file (truncation, trailer mismatch); a rejected file ingests nothing and publishesGoldpathFileRejected. - Idempotent ingestion — the
(rail, file, line)key: a re-delivered or replayed file applies zero duplicates. - Quarantine — a bad row (parse throw, row-contract failure, handler throw)
quarantines with its reason; the batch CONTINUES.
GoldpathRowsQuarantinedfires once per run. - Reprocess — run the file again: good rows dedup, fixed rows apply and their quarantine records clear.
- Archive mark — every completed run marks the file archived; retention/purge is the Archival module's business.
Progress lives behind IGoldpathFileLedger; the in-memory ledger ships for tests and
single-node hosts, a database-backed ledger composes through the seam. Scheduled pick-up
and drop ride the Jobs module; transports (SFTP, share, object store) are composed
adapters, never rewritten (RFC §1).
Console — MapGoldpathFileExchangeAdmin() mounts the read-only admin surface
(/goldpath/admin/fileexchange, contract §7.1: rails with live counts, files newest-first,
the quarantine with each row's reason and age) and the operations console federates on it
as its seventh module. Behind the ops floor by default; exposeUnsecured: true is the
visible opt-out. There are no verbs: re-delivering a file IS the reprocess. The reads need
a ledger that implements IGoldpathFileLedgerQueries (both shipped ledgers do).
Boundary with qorpe.sync: Sync migrates and reconciles STORES during a transformation; FileExchange is the PERMANENT integration surface with counterparties (RFC D4).
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Goldpath.Abstractions (>= 0.1.0-preview.8)
- Goldpath.Messaging (>= 0.1.0-preview.8)
- Goldpath.Sdk (>= 0.1.0-preview.8)
- Microsoft.EntityFrameworkCore.Relational (>= 10.0.9)
-
net8.0
- Goldpath.Abstractions (>= 0.1.0-preview.8)
- Goldpath.Messaging (>= 0.1.0-preview.8)
- Goldpath.Sdk (>= 0.1.0-preview.8)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.11)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-preview.8 | 63 | 9/7/2026 |
| 0.1.0-preview.7 | 68 | 9/1/2026 |