{"results":[{"id":"add-host-persists-immediately","text":"`add_host()` persists to the state file immediately (not deferred to context exit).","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"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-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-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-results-categorized-changed-ok-failed","text":"Task results in the automation context are categorized as `changed`, `ok`, or `failed`.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"complete-developer-to-production-continuity","text":"FTL2 provides continuity from development to production: the same automation() context manager, module addressing, and error handling API used during development also drives production deployments — production scripts add parameters like state_file, fail_fast, and secret_bindings but use the same core API surface, with no separate deployment-specific interface required.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"developer-to-autonomous-operations-continuum","text":"FTL2 bridges the complete spectrum from developer onboarding to autonomous production operations: zero-setup scripts with familiar APIs and full observability enable rapid development, which seamlessly transitions to autonomous self-healing production through the same unified API surface — the identical async context manager, module addressing, and state management work at every stage of the journey.","truth_value":"IN","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":"frictionless-full-ecosystem-experience","text":"Developers get a frictionless full-ecosystem experience: zero-setup PEP 723/uv scripts eliminate project scaffolding while the dual-mode architecture provides native speed and Ansible ecosystem breadth, all accessed through a unified async context manager with four addressing syntaxes and dual error handling.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"ftl-results-tracks-all-executions","text":"The automation context tracks all module executions in `ftl.results` — each entry has `.success`, `.changed`, and `.module` attributes.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null}],"count":45,"limit":20,"offset":0}