Tracked follow-ups deferred from PR A (#452, the Venue entity core). Two related venue concerns for later PRs:
1. Share-bundle venue gathering (PR C — display/export)
buildProgramShareBundle (app/lib/src/export/program_share_bundle.dart) embeds a program but does not gather the program's referenced Venue into CompendiumArchive.venues. A shared program's venueId (schema v13) therefore arrives at the receiver without its venue record, and the core importer safely nulls the dangling reference. Once venueId is populated by the editor UI (PR B) and a venue resolver is wired into the share path, gather the referenced venue here — mirroring the dance/choreographer gathering, and applying the same privacy sanitization to venue contact fields.
2. Venue re-import dedupe / provenance key
The community/backup import path (CompendiumArchiveImporter) mints a fresh venue id for every bundled venue (deliberately, so an untrusted bundle can never clobber an existing venue). Venues carry no provenance/dedupe key across imports, so re-importing the same bundle inserts duplicate venue records and orphans the previously-imported ones (the deduped program is repointed to the newly-minted venue). This is accepted for PR A as consistent with the additive-import model, but should be resolved with a venue provenance/dedupe primitive so a re-imported bundle matches existing venues instead of duplicating them.
Note: within-bundle duplicate venue ids are already collapsed in PR A; this issue tracks only the cross-import case.
Refs: PR #452.
Tracked follow-ups deferred from PR A (#452, the Venue entity core). Two related venue concerns for later PRs:
1. Share-bundle venue gathering (PR C — display/export)
buildProgramShareBundle(app/lib/src/export/program_share_bundle.dart) embeds a program but does not gather the program's referencedVenueintoCompendiumArchive.venues. A shared program'svenueId(schema v13) therefore arrives at the receiver without its venue record, and the core importer safely nulls the dangling reference. OncevenueIdis populated by the editor UI (PR B) and a venue resolver is wired into the share path, gather the referenced venue here — mirroring the dance/choreographer gathering, and applying the same privacy sanitization to venue contact fields.2. Venue re-import dedupe / provenance key
The community/backup import path (
CompendiumArchiveImporter) mints a fresh venue id for every bundled venue (deliberately, so an untrusted bundle can never clobber an existing venue). Venues carry no provenance/dedupe key across imports, so re-importing the same bundle inserts duplicate venue records and orphans the previously-imported ones (the deduped program is repointed to the newly-minted venue). This is accepted for PR A as consistent with the additive-import model, but should be resolved with a venue provenance/dedupe primitive so a re-imported bundle matches existing venues instead of duplicating them.Note: within-bundle duplicate venue ids are already collapsed in PR A; this issue tracks only the cross-import case.
Refs: PR #452.