Summary
reconcileReporting() implements the reporting ledger/receipt loop, but requires every adopter to implement options.inspect(context). The callback must perform the most security-sensitive and interoperability-sensitive part of the workflow: retrieving and validating the actual delivered resource.
That leaves the SDK short of the intended “SDK-managed polling, deduplication, file retrieval, validation, and retries” product contract and makes two JavaScript adopters likely to implement incompatible S3/manifest behavior.
What is missing from the built-in path
- manifest/resource retrieval with destination credentials;
- manifest SHA-256 and per-object size/checksum verification;
- manifest-last completeness checks;
- declared format/compression parsing;
- pinned row-schema and report-definition validation;
- row-count, control-total, and RFC 8785 canonical-content-digest recomputation;
- safe contract fetching and local-only reference resolution;
- typed retryable versus permanent integrity failures.
Proposed SDK surface
- Keep
inspect as an advanced override.
- Provide a default manifest/file inspector backed by a pluggable
ReportingResourceReader/credential provider.
- Reuse the SDK's canonical-reference resolver security controls rather than introducing raw fetches.
- Add ordinary HTTPS/object-store readers first; expose warehouse/native-commit adapters as interfaces or optional packages.
- Add a shared conformance fixture used by both JS and Python SDKs: valid manifest, missing file, checksum mismatch, row/control-total mismatch, canonical digest mismatch, retry, checkpoint, and accepted/rejected receipt.
Discovered while validating adcontextprotocol/adcp#6953 in #2726.
Summary
reconcileReporting()implements the reporting ledger/receipt loop, but requires every adopter to implementoptions.inspect(context). The callback must perform the most security-sensitive and interoperability-sensitive part of the workflow: retrieving and validating the actual delivered resource.That leaves the SDK short of the intended “SDK-managed polling, deduplication, file retrieval, validation, and retries” product contract and makes two JavaScript adopters likely to implement incompatible S3/manifest behavior.
What is missing from the built-in path
Proposed SDK surface
inspectas an advanced override.ReportingResourceReader/credential provider.Discovered while validating adcontextprotocol/adcp#6953 in #2726.