Fission-AI/OpenSpec · error · Error

The archived delta for

Error message

The archived delta for '${proposed.update.id}' changed during the final move.

What it means

Thrown after the change directory has been moved to the archive, when the archived copy of a delta's content fingerprint differs from the fingerprint recorded before the move. Means the move itself (or concurrent access) corrupted or altered the archived delta; detects incomplete or unstable directory moves that need rollback.

Solutions

  1. Re-run the archive with the tree stable
  2. Verify the archived copy is complete if the abort happened mid-move
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src/core/archive.ts:1950 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of Fission-AI/OpenSpec@6926ccb18a (2026-08-25). Data as JSON: /api/errors/91fa9028d0b720c5. Report an issue: GitHub.

Appendix: source

Thrown at src/core/archive.ts:1950

                  { verifyMarker: false }
                );
                if (stagedSource) {
                  await assertRetirementAuthorization(
                    stagedSource,
                    retirementAuthorizationFingerprint!
                  );
                }
              }
              for (const proposed of prepared) {
                const archivedSource = path.join(
                  archivePath,
                  path.relative(changeDir, proposed.update.source)
                );
                if (
                  (await fingerprintPortableContent(archivedSource)) !==
                  proposed.sourceContentFingerprint
                ) {
                  throw new Error(
                    `The archived delta for '${proposed.update.id}' changed during the final move.`
                  );
                }
                if (stagedSource) {
                  const stagedDelta = path.join(
                    stagedSource,
                    path.relative(changeDir, proposed.update.source)
                  );
                  if (
                    (await fingerprintPortableContent(stagedDelta)) !==
                    proposed.sourceContentFingerprint
                  ) {
                    throw new Error(
                      `The active delta for '${proposed.update.id}' changed during the fallback copy.`
                    );
                  }
                }
              }

View on GitHub (pinned to 6926ccb18a)