import type { FilesystemFixture } from "./types.js";

export const atomicReplacementKnownBad: FilesystemFixture = {
  fixtureId: "filesystem/atomic-replacement-known-bad",
  filesystemVersion: "1.0",
  scenarios: [
    {
      scenarioId: "partial-write-visible-to-readers",
      kind: "atomic-replacement",
      targetPath: "/srv/app/config/settings.json",
      readersRequireWholeFileConsistency: true,
      replaceStrategy: "in-place-write",
      atomicOrTransactional: false,
      partialCanonicalStateObserved: true,
    },
    {
      scenarioId: "truncate-then-write",
      kind: "atomic-replacement",
      targetPath: "/srv/app/state/manifest.json",
      readersRequireWholeFileConsistency: true,
      replaceStrategy: "truncate-write",
      atomicOrTransactional: false,
      partialCanonicalStateObserved: true,
    },
    {
      scenarioId: "copy-without-atomic-finish",
      kind: "atomic-replacement",
      targetPath: "/srv/app/cache/index.db",
      readersRequireWholeFileConsistency: true,
      replaceStrategy: "copy-then-rename",
      atomicOrTransactional: false,
      partialCanonicalStateObserved: true,
    },
    {
      scenarioId: "readers-see-stale-mixed-content",
      kind: "atomic-replacement",
      targetPath: "/srv/app/releases/current.json",
      readersRequireWholeFileConsistency: true,
      replaceStrategy: "in-place-write",
      atomicOrTransactional: false,
      partialCanonicalStateObserved: true,
    },
  ],
};
