{"results":[{"id":"backup-and-state-operational-durability","text":"FTL2 achieves operational durability through complementary persistence mechanisms: the state file tracks resource identity and enables crash recovery (control plane), while the backup subsystem preserves file contents before destructive changes (data plane) — together they protect both what exists and what it contains.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"backup-comprehensive-subsystem","text":"FTL2's backup subsystem is comprehensive and safe by default: automatic backups are enabled for destructive operations, two-phase protocol (discover paths, then create backups) ensures correctness, two storage modes (adjacent and central) provide deployment flexibility, consistent naming convention enables discovery, and fail-safe semantics abort operations rather than proceeding without a backup.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"backup-failsafe-aborts-on-failure","text":"If backup creation fails, FTL2 aborts the destructive operation rather than proceeding without a backup (fail-safe behavior).","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"backup-naming-convention","text":"FTL2 backup files are named `{original_path}.ftl2-backup-{YYYYMMDD}-{HHMMSS}`.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"backup-paths-by-game-type","text":"Backup discovery uses game-type-specific paths: `~/data/minecraft/backups/` for Minecraft/NeoForge and `~/data/terraria/backups/` for Terraria, sorted newest-first by mtime.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"backup-two-phase-protocol","text":"FTL2 backups use a two-phase protocol: Phase 1 discovers paths needing backup (`_ftl2_discover_backups: true`), Phase 2 executes with `_ftl2_backups_created` metadata attached.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"backup-two-storage-modes","text":"FTL2 backups support two storage modes: adjacent (default, next to original file) and central (configured via `backup.central_dir` or `--backup-dir`).","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"backups-enabled-by-default","text":"FTL2 automatic backups are enabled by default for destructive module operations; use `--no-backup` to disable them.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"comprehensive-crash-resilience","text":"FTL2 achieves comprehensive crash resilience through three independent mechanisms: persistent state files enable re-run recovery from any interruption, automatic backups protect filesystem changes with fail-safe abort, and dual error modes capture failures without halting — every failure path leads to a recoverable state.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"crash-and-error-resilient-autonomy","text":"FTL2 combines crash recovery and error-resilient AI-loop operations to support autonomous recovery from many failure scenarios without manual intervention: three independent crash recovery mechanisms (persistent state files for re-run recovery, automatic backups with fail-safe abort, and dual error modes for failure capture) complement the AI-loop's self-healing capabilities (observe/condition/action with state-file-mediated coordination and structured error collection), providing multiple recovery paths for both unplanned crashes and runtime errors.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"destructive-ops-always-recoverable","text":"All destructive module operations are recoverable via automatic backups: backups are enabled by default, the two-phase protocol ensures correct backup creation before any modification, and fail-safe semantics abort the operation if backup creation fails.","truth_value":"OUT","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"diverse-application-hosting-platform","text":"FTL2 serves as a hosting platform for diverse application types: long-lived daemon contexts with event/gate/SSH infrastructure support game server lifecycle management (servercraft with watchdog, TUI, backup), while the same provisioning pipeline supports hot-reload web applications (catbeez arcade) where publishing is purely file upload with no restart.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"ftl-copy-backup-preserves-previous","text":"`ftl_copy` with `backup=True` preserves the previous version of the destination file before overwriting.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"ftl-fetch-module-remote-to-local","text":"The `fetch` module copies files FROM remote hosts TO the control machine — the reverse of `copy`. Used for downloading backups and logs.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"gate-creates-backups-not-module","text":"The gate's `BackupManager` creates backups, not individual modules — modules only declare backup capability via docstring metadata (`Backup-Capable`, `Backup-Paths`, `Backup-Trigger`).","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"polymorphic-resilient-game-servers","text":"Each game server type in servercraft gets both custom lifecycle behavior through the 8-function script interface (provision, start, verify, backup, restore, stop, get_player_count, reconfigure) and unified resilience monitoring through the watchdog's warmup/threshold/grace-period chain — the polymorphism handles game-specific differences while the watchdog provides game-agnostic operational safety.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"safe-recoverable-resource-lifecycle","text":"FTL2 resource lifecycle completion is both orderly and recoverable: state-managed teardown uses label lookup and reverse dependency ordering for clean multi-resource removal with state file cleanup, while the backup subsystem ensures destructive operations are recoverable via the two-phase protocol (discover then backup) with fail-safe abort on backup failure.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"script-interface-eight-functions","text":"The ftl2-servercraft script interface defines exactly 8 functions: `provision`, `start_server`, `verify_server`, `restore_world`, `backup_world`, `get_player_count`, `save_and_stop`, `destroy`.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"servercraft-game-server-polymorphism","text":"Servercraft implements game server polymorphism: the `script` field in servers.yml selects a Python module implementing the 8-function script interface, with game-specific variations (NeoForge: 7-step provision, 30s backup poll, \"minecraft\" tmux session; Terraria: 5s backup wait, port 7777, \"terraria\" host group, regex-based player count) all conforming to the same lifecycle contract.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"servercraft-intelligent-lifecycle-management","text":"Servercraft implements intelligent lifecycle management: automated watchdog paths (warmup grace, consecutive-failure threshold, player-join reset) and manual stop paths adapt teardown behavior based on operational context — watchdog aborts on backup failure to preserve data, while manual stop continues past backup failure because the user explicitly chose to shut down.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null}],"count":29,"limit":20,"offset":0}