DashboardcraftCraft publishState.ts: filename missing…

Craft publishState.ts: filename missing workspace key causes cross-workspace collision

Category: gotcha
Confidence: 1.00
ID: 01a06d19-21c0-7941-aa13-c2a1e4c8fef8
Project ID: e16af391-c497-4837-b681-c849a5514499
Cross-project: No
Recalled in other projects: 0
Source session: 0goKXKlJTHOVwC4wG
Created: 2026-07-22 11:38:18
Updated: 2026-09-04 15:45:58

Content

Trap: keying publish-resume state by sanitized version looks stable because filenames need safe characters, but distinct valid SemVer build metadata such as 4.2.6+sentry1 and 4.2.6+Sentry1 collapse to one state file and silently skip targets. Fix: preserve legacy filenames for versions unchanged by sanitization; when sanitization changes a version, use a lossless Base64URL version component. Apply the identical rule in Craft publishState.ts and Publish Set targets; retain lossless Base64URL workspace isolation and never read repository-local state.

Move to: