Skip to content
Français

RecoveryRetentionPlan

import type { RecoveryRetentionPlan } from "@elie-laloum/outpost";
  • sourceOptional
    "transport" | undefined
    transport for a plan built with a transporter; absent for a local plan. pruneRecoveryRetention() then requires the same transporter.
  • repositoryRequired
    string
    Top-level path of the inspected checkout; for a transport plan, the repository option as given, or an empty string.
  • policyRequired
    RecoveryRetentionPolicy
    Copy of the validated policy; pruning and its after plan reuse it.
  • inspectedAtRequired
    string
    ISO timestamp taken after the inventory; entry ages are measured from it.
  • inspectionRequired
    RecoveryInspection
    Inventory the plan is based on, with Git worktree, lock and resource activity reports for a local plan.
  • entriesRequired
    readonly RecoveryRetentionEntry[]
    One entry per inventoried item, each with eligibility, reason code and bytes.
  • completeRequired
    boolean
    Whether the inventory, Git worktree checks and journal object sizes were all read within maxEntries. When false, no entry is eligible, quota is unknown and pruneRecoveryRetention() rejects the plan.
  • usageBytesRequired
    number
    Bytes observed at inspection: file sizes under .outpost, or object sizes in the transport.
  • projectedBytesRequired
    number
    usageBytes minus the bytes of eligible entries: the usage left if every candidate is removed.
  • quotaRequired
    "unknown" | "within" | "exceeded"
    exceeded when projectedBytes is above maxBytes or the remaining worktrees are above maxWorkspaces, unknown when the inventory is incomplete, otherwise within.
export interface RecoveryRetentionPlan {
  readonly source?: "transport";
  readonly repository: string;
  readonly policy: RecoveryRetentionPolicy;
  readonly inspectedAt: string;
  readonly inspection: RecoveryInspection;
  readonly entries: readonly RecoveryRetentionEntry[];
  readonly complete: boolean;
  readonly usageBytes: number;
  readonly projectedBytes: number;
  readonly quota: "within" | "exceeded" | "unknown";
}