feat(records): define archive transfer provider contract
This commit is contained in:
@@ -11,6 +11,8 @@ revision.
|
||||
- `records.filing` is supplied by the enabled Records module.
|
||||
- `records.source.<module>` is supplied by an enabled source module, for
|
||||
example `records.source.files` or `records.source.cases`.
|
||||
- `records.archive.<provider>` is supplied by an enabled archive-transfer
|
||||
adapter. Discovery does not imply conformance or current health.
|
||||
|
||||
Callers discover capabilities through the module registry. They must not
|
||||
import optional source-module internals.
|
||||
@@ -59,3 +61,24 @@ additional optional metadata remains backward compatible.
|
||||
|
||||
Provider-specific selection UI belongs to the source module. The generic
|
||||
Records dialog remains a diagnostic/manual fallback for exact identifiers.
|
||||
|
||||
## Archive Transfer Boundary
|
||||
|
||||
`RecordTransferPackage` binds a stable package ID, record revision, provider
|
||||
profile, canonical manifest, and manifest SHA-256. An archive provider exposes
|
||||
`RecordArchiveProviderState` before dispatch and accepts only a
|
||||
`RecordArchiveTransferRequest` for a declared healthy profile. Its receipt must
|
||||
identify the same package and provider and return one bounded outcome:
|
||||
`accepted`, `rejected`, or `outcome_unknown`.
|
||||
|
||||
An unknown outcome is never retry-safe. Callers must retain the intent and
|
||||
reconcile it against the provider before another effect. Provider state also
|
||||
declares authority mode, freshness, limitations, and whether the provider is a
|
||||
simulation. Credentials, transport configuration, archive-specific package
|
||||
schemas, and custody semantics remain provider-owned.
|
||||
|
||||
Records includes `records.archive.simulation` to prove package and receipt
|
||||
handling. The simulation is explicitly non-conformant, transfers no custody,
|
||||
and cannot be used as evidence of an archive handoff. A real provider requires
|
||||
a selected target/profile, provider-specific recovery declaration, and target
|
||||
test evidence.
|
||||
|
||||
Reference in New Issue
Block a user