fix(artifacts): preserve path identity and exclusion applicability

Normalize path facts once at the owning filesystem boundary, preserve caller spelling and unavailable inventory members, and retain typed read failures. Record exclusion entry kinds so only proven directories can establish descendant symlink targets; omitted legacy kinds stay unknown.

Reviewed fixes include #1969, #2642, #2759, and #2994.

Validation: 26 reference graph source tests passed; prior artifact checks passed 275 tests with one Windows-only skip. Updated compiled import workflows are included in final validation after regeneration.
This commit is contained in:
morluto
2026-10-14 08:31:03 +08:00
parent 55dd21a5e2
commit ec271121e4
41 changed files with 2022 additions and 122 deletions
+5
View File
@@ -167,6 +167,11 @@ export const snapshotRecoveryInputs = async (
? "bundle.js"
: relative(commonDirectory, resolve(path)).split(sep).join("/");
try {
// Wakaru's multi-input public paths interpret backslashes as separators.
if (relativePath.includes("\\"))
throw new TypeError(
"Wakaru cannot preserve literal backslashes in input paths",
);
if (normalizeArtifactPath(relativePath) !== relativePath)
throw new TypeError(
"Input names must already use NFC Unicode spelling",