{"results":[{"id":"auto-install-deps-parameter","text":"The `automation()` context manager accepts `auto_install_deps=True` to automatically install required Ansible collections if they are missing.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"automation-complete-developer-experience","text":"The AutomationContext serves as a unified entry point (async context manager) that combines module access through four addressing syntaxes (dot, bracket, FQCN, proxy) with configurable error semantics (continue-on-error or fail-fast with introspectable exceptions), providing a cohesive developer interface for FTL2 automation.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"automation-context-accepts-check-mode","text":"`automation(check_mode=True)` enables dry-run mode that previews changes without applying them; output is annotated with `[CHECK MODE]`.","truth_value":"IN","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-context-is-primary-user-class","text":"`AutomationContext` is the primary user-facing class in FTL2's automation framework, providing the `async with automation() as ftl:` pattern.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"automation-context-manager-async-with","text":"The `automation()` context manager is the entry point for all FTL2 remote operations, used with `async with`.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"automation-context-manager-entry-point","text":"`async with automation() as ftl:` is the entry point for all FTL2 automation scripts, providing module access, inventory, secrets, and result tracking.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"automation-context-manager-pattern","text":"FTL2 scripts use `async with automation(state_file=..., secret_bindings=...) as ftl:` as the core entry point — this context manager sets up inventory, state, and secrets.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"automation-context-unified-api","text":"AutomationContext is the primary user-facing class for FTL2 automation, providing an async context manager entry point, module access via attributes, secret binding and access, categorized result tracking (changed/ok/failed), and dual error handling modes (continue-on-error or fail-fast).","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"automation-context-usable-as-object-or-context-manager","text":"`AutomationContext` can be used both as a regular object (`ctx = AutomationContext(...)`) and as an async context manager (`async with AutomationContext(...) as ftl`).","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":"automation-error-has-result-attribute","text":"`AutomationError` has `message` (str) and `result` (the failed `ExecuteResult`) attributes, enabling granular error inspection per host and module.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"automation-factory-wraps-automation-context","text":"The `automation()` function is an async context manager factory that wraps `AutomationContext` — all real logic lives in `AutomationContext`.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"automation-fail-fast-raises-automationerror","text":"`automation(fail_fast=True)` raises `AutomationError` on first module failure; the exception has `.result.module` to identify the failing module.","truth_value":"IN","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-inventory-parameter","text":"The `inventory` parameter on `automation()` loads a YAML inventory file for host/group definitions, used alongside `add_host()` for hybrid static+dynamic inventory.","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}],"count":60,"limit":20,"offset":0}