{"results":[{"id":"ansible-migration-with-full-speedup","text":"Teams migrating from Ansible gain FTL2's full compound speed advantage (3-21x: in-process execution, gate caching, default parallelism) while retaining access to their existing module ecosystem through FQCN dot-notation and Ansible-compatible bundled execution — migration preserves investment in existing modules without sacrificing performance.","truth_value":"OUT","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"automation-context-default-print-summary-true","text":"`automation()` defaults to `print_summary=True` and `print_errors=True`, printing a per-host task summary with error details when the async context manager exits.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"automation-default-fail-fast-false","text":"FTL2's default behavior is `fail_fast=False` — a failing task does not halt subsequent tasks in the same automation context.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"automation-default-target-localhost","text":"When no inventory is specified, `automation()` defaults to targeting `localhost`.","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-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":"default-error-behavior-continue-on-error","text":"FTL2's default behavior is continue-on-error: all operations execute regardless of individual failures, with errors collected and inspectable after the run.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"default-output-shows-errors-only","text":"Default output mode shows nothing for successful operations — only errors surface.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"default-state-file-is-ftl2-state-json","text":"The default state file path is `.ftl2-state.json`; it enables crash recovery by persisting dynamically added hosts.","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":"error-handling-dual-mode","text":"FTL2 provides two error handling modes: continue-on-error (default) collects all failures in ftl.errors for post-run analysis, while fail-fast raises AutomationError on first failure with module identification via the .result attribute.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"fail-fast-false-collects-errors-default","text":"By default (`fail_fast=False`), errors are collected in `ftl.errors` and execution continues; `fail_fast=True` raises `AutomationError` on first failure.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"fast-resilient-fleet-execution","text":"FTL2 fleet operations are simultaneously fast and resilient: SSH connection pooling with async I/O and gate caching minimize per-host overhead, default parallelism bounds execution to the slowest host, and failure isolation ensures fleet execution continues and collects structured errors even when individual hosts fail.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"ftl2-error-checking-failed-and-errors","text":"Error checking in FTL2 uses `ftl.failed` (boolean flag) and `ftl.errors` (structured error objects with `.module` and `.error` fields) — not exceptions by default.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"ftl2-full-performance-stack","text":"FTL2's speed advantage derives from three independent optimization sources: in-process native module execution (up to 250x per-call speedup for native modules), gate-based remote delivery (pre-built zipapps cached on remote hosts, JSON-only parameter protocol), and default parallel host targeting (asyncio.gather fan-out, total time bounded by slowest host).","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"ftl2-parallel-execution-by-default","text":"FTL2 executes modules concurrently across all targeted hosts by default, with no flag needed to enable parallelism.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"ftl2-scalable-beyond-ansible-limits","text":"FTL2 reliably scales to 25+ hosts where Ansible drops unreachable hosts, thanks to persistent gate connections and default parallel execution.","truth_value":"OUT","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"ftl2-speed-compound-advantage","text":"FTL2's 2-21x speed advantage derives from three independent sources: in-process module execution (up to 250x per-call for native modules), default parallel host targeting, and gate pre-building that eliminates per-task bundling overhead.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"gcp-two-auth-methods","text":"GCP authentication in FTL2 supports two methods via `GCP_AUTH_KIND`: `serviceaccount` (with `GCP_SERVICE_ACCOUNT_FILE`) and `application` (via `gcloud auth application-default login`).","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null}],"count":36,"limit":20,"offset":0}