# Distributor Source Bundle Mapping Weatherreporter uses the source-bundle format through Distributor's `pkg/upload.UploadFiles` helper. It does not create bundle directories or call `pkg/bundle` directly. The helper creates a temporary bundle, writes and validates `manifest.json`, archives it, and removes the temporary bundle when the upload call returns. ## File Mappings Every mapping pairs a managed Markdown report source with one bundle-relative path. A single-report notification maps its one managed report to each rendered path configured for that report. A batch notification combines mappings for every included managed report and rejects duplicate bundle paths. The report source is never an `--out` copy or an arbitrary workspace scan. The application selects it and renders notification paths; see the [operations guide](../../operations.md) for the managed-upload rule and the [Distributor adapter](../../internal/distributor-adapter.md) for the adapter boundary. Bundle paths must be clean, relative, slash-separated paths. They cannot be empty or absolute, contain backslashes, empty segments, `.` or `..`, or use `manifest.json` or `.distributor.json` as a basename. The mapped source must be a regular file. File mapping order is preserved and affects the bundle digest. The bundle manifest uses schema version `1`, carries the rendered bundle ID and creation time, and records each mapped file's path, SHA-256 digest, and size. Destination routing, publication, and Distributor-managed destination state are not source-bundle fields. ## Compatibility Reference The upstream canonical file-format contract is `docs/integrations/source-bundle.md` in the Distributor repository. It defines the complete manifest and archive format; this page records only the mapping and path constraints Weatherreporter relies on.