# 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 an operator-owned Markdown output with one bundle-relative path. A single-report notification maps its published output to each rendered path configured for that report. A batch notification combines mappings for every included published output and rejects duplicate bundle paths. The report source is the output selected for that command; the application does not scan local directories. It renders notification paths after publication; see the [operations guide](../../operations.md) and the [Distributor adapter](../../internal/distributor-adapter.md) for the 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.