{"results":[{"id":"ai-loop-modules-are-idempotent","text":"Module calls in AI-loop actions (user, file, copy, lineinfile, service) are idempotent — safe to re-run even if the condition gate fails to prevent unnecessary executions.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"ansible-ecosystem-fully-compatible","text":"All Ansible collection modules work seamlessly in FTL2 via FQCN dot-notation addressing and community accessors.","truth_value":"OUT","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"ansible-familiarity-across-layers","text":"FTL2 preserves Ansible familiarity at every interaction layer: CLI flags mirror `-m -i -a`, variable precedence follows group < host < argument ordering, inventory groups map directly to Ansible groups, and modules support both short names and FQCNs.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"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":"ansible-migration-zero-friction","text":"Teams migrating from Ansible experience zero-friction adoption: familiar CLI flags, variable precedence, inventory groups, and FQCN naming transfer directly while the dual-mode execution architecture runs existing Ansible modules without modification.","truth_value":"OUT","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"automation-fqcn-via-namespace-proxy-chaining","text":"FQCN modules use `NamespaceProxy` chaining: `ftl.amazon.aws.ec2_instance(...)` chains `NamespaceProxy(\"amazon\")` → `.aws` → `NamespaceProxy(\"amazon.aws\")` → `.ec2_instance()` executes `\"amazon.aws.ec2_instance\"`.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"automation-module-restriction-raises-attributeerror","text":"`automation(modules=[\"file\", \"copy\"])` restricts which modules can be called; accessing a disallowed module raises `AttributeError`, not a runtime module error.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"automation-modules-as-attributes","text":"Modules are called as attributes on the automation context: `await ftl.module_name(param=value)` — no string lookups or dictionaries needed.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"automation-modules-parameter-restricts-available","text":"`automation(modules=[\"file\", \"copy\"])` restricts which modules are available; calling an unlisted module raises `AttributeError`.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"builtin-modules-in-process-collection-subprocess","text":"FTL2 builtin modules (file, copy, shell, command, service, dnf) run in-process as native implementations; collection modules fall back to subprocess execution.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"bundled-ansible-modules-can-emit-ftl2-events","text":"Bundled Ansible modules running inside FTL2 can import `ftl2.events` and emit events using `emit_progress()`, `emit_log()`, `emit_data()` — this is an FTL2-specific extension, not standard Ansible.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"check-mode-not-all-modules-support","text":"Not all modules fully support check mode — some may still create files or execute commands despite check mode being enabled.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"community-modules-called-on-ftl-directly","text":"Community modules are called on the `ftl` object directly (not on a host) — e.g., `ftl.community.general.linode_v4(...)`, `ftl.community.general.cloudflare_dns(...)` — because they target external APIs, not a specific managed host.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"dynamic-infrastructure-fully-portable","text":"Dynamically provisioned infrastructure is fully portable across the entire Ansible-compatible module ecosystem: add_host registration feeds into the dual-mode execution architecture supporting both native and bundled modules — unless stdlib shadowing in certain Ansible modules causes import failures in FTL2's in-process runtime.","truth_value":"OUT","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"end-to-end-remote-execution-optimization","text":"FTL2 optimizes remote execution end-to-end from connection to result: the SSH layer pools and reuses connections via asyncssh for async non-blocking I/O, while the gate layer pre-builds modules into cached zipapps that communicate via length-prefixed JSON — eliminating overhead at both the transport and module delivery layers.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"events-are-json-on-stderr","text":"Modules emit events as JSON objects to stderr, one per line. Stdout is reserved for the final result JSON — events on stdout would corrupt the result.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"execution-dual-mode-architecture","text":"FTL2 provides a dual-mode execution architecture: native in-process modules for speed and Ansible-compatible bundled modules for ecosystem breadth, with the same API surface for both.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"fqcn-module-names-supported","text":"FTL2 supports Ansible-style fully qualified collection names (FQCN) for modules, e.g., `ftl.local.ansible.builtin.ping()`.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"fqcn-modules-require-ansible-collection-installed","text":"FQCN modules (e.g., `amazon.aws.ec2_instance`) require the corresponding Ansible collection to be installed to function.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"ftl-ansible-compat-requires-packages","text":"Ansible module compatibility in FTL2 requires the `ftl_builtin_modules` and `ftl_module_utils` packages to be installed.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null}],"count":76,"limit":20,"offset":0}