Dashboard › craft › Distillation
962b7c07-0c18-4d06-9b38-2f9fbb26713a["lore_tm_v1_NGK2ji5qcKkZ-0P7KZQYpNeQvNMeUfzVSd4V9QQHQHU","lore_tm_v1_db37Pm2Q3fYuJ2bmgxRc02BBBjoqezfDbMShfB4s9gs","lore_tm_v1_A0CPV6SCJkD-_6iqKWVgRiGXUCB-3Qq1YGzHUgE9v-o"]
Date: Sep 8, 2026
ses_f7dfd0a94ffeFo9yAHzdIeQDqO completed with DO-NOT-MERGE for the Craft PR #872 broken-symlink repair.src/config.ts:253-258: an unconditional catch around realpathSync suppresses all resolution errors, including EACCES, EPERM, ELOOP, and unexpected I/O errors, rather than only disappeared/broken candidates. Non-disappearance errors must be rethrown.realpathSync errors are unconditionally swallowed never receive lexical or physical containment validation or diagnostics; this can hide unsafe or ambiguous filesystem state, although it cannot admit an unchecked candidate.src/__tests__/config.test.ts:504-523: the broken-symlink regression does not prove the symlink candidate reaches globSync, so it passes both if globSync emits and the filter skips the link and if globSync omits it before the filter. The test must assert fixture inclusion in globSync output or use a deterministic mock/spy seam that makes realpathSync throw ENOENT for a glob candidate.realpathSync failures must propagate; a candidate removed between globbing and realpathSync must be skipped; and the test must prove the baseline f174ce…:src/config.ts:252 behavior fails.isSafeWorkspacePath() enforce lexical containment at src/config.ts:235-239,260; successfully resolved candidates receive physical containment checks at src/config.ts:263-265; output remains deterministic through .sort() at src/config.ts:268; callers for selection (:197), listing (:210, :628-635), and remote config loading (src/commands/prepare.ts:805-815) use getWorkspaceGlobMatches().src/config.ts and src/__tests__/config.test.ts changed, and git diff --check passed. Focused src/__tests__/config.test.ts suite passed 68 tests, but coverage was insufficient.realpathSync error guard and add mocked realpathSync tests for both skip-on-ENOENT and propagation behavior.vi.spyOn(logger, 'warn').mockImplementation(() => {}) matches in /home/byk/Code/getsentry/craft-workspace-action-propagation/src/__tests__/config.test.ts, at lines 251, 258, 268, and 279.