{"results":[{"id":"api-architecture-tripartite-incompatible-auth","text":"Hetzner's API architecture spans three distinct endpoints (Cloud API, Robot API, Storage Box) with two different authentication mechanisms (Bearer tokens for Cloud/Robot, separate credentials for Storage Box), requiring separate credential management for each product line.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"async-api-poll-convergence-pattern","text":"Hetzner Cloud API operations are asynchronous with action tracking — the CLI polls at 500ms intervals and the Go SDK requires explicit `WaitFor()` calls, establishing a converge-and-poll pattern as the standard automation idiom.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"async-credential-explosion-compounds-operations","text":"Multi-project automation faces compound operational complexity — async convergence must be tracked per-action while credentials must be managed per-project-per-API, making error handling a cross-product of two independent complexity dimensions.","truth_value":"OUT","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"async-propagates-through-automation-stack","text":"Hetzner's asynchronous API design propagates through the entire automation stack — CLI polls at 500ms intervals, Go SDK requires explicit WaitFor() calls, and Terraform (built on hcloud-go) inherits the same async convergence requirement — making action completion handling a universal automation concern.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"automation-must-bridge-api-paradigm-gap","text":"Full Hetzner automation requires tools that bridge fundamentally different API paradigms — modern JSON/Bearer token (Cloud) vs legacy URL-encoded/Basic Auth (Robot) — across three toolchain layers (CLI, SDK, IaC), making unified abstraction a prerequisite for multi-product management.","truth_value":"OUT","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"automation-toolchain-stable-when-experimental-avoided","text":"Hetzner's three-layer automation toolchain (CLI, Go/Python SDKs, Terraform/OpenTofu provider) with uniform resource identity patterns provides a production-stable foundation for infrastructure-as-code — when experimental features are avoided, as both hcloud-go and hcloud-python may introduce breaking changes in minor releases for experimental APIs.","truth_value":"OUT","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"ccm-integrates-cloud-and-robot-api","text":"The Hetzner Cloud Controller Manager integrates Kubernetes with both the Hetzner Cloud API and the Robot API (dedicated servers).","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"ccm-kubernetes-integration-production-ready","text":"The Hetzner Cloud Controller Manager provides production-ready Kubernetes integration with both Cloud and Robot APIs, including annotation-driven load balancer configuration.","truth_value":"OUT","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"ccm-robot-env-vars","text":"Robot API integration requires `ROBOT_ENABLED=true`, `ROBOT_USER`, and `ROBOT_PASSWORD` environment variables.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"ccm-v1-30-0-crash-july-2026","text":"CCM versions <= v1.30.0 will panic and crash after July 2026 due to removal of the `server.datacenter` API field; minimum safe version is v1.30.1.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"cli-context-project-scoped-isolation","text":"The hcloud CLI enforces project-scoped isolation — each context binds to a single API token/project, only one is active at a time, switching is explicit (use/unset), and creation is interactive — establishing a single-project-at-a-time operational model that prevents accidental cross-project mutations.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"datacenter-to-location-deprecation-wave","text":"Hetzner is systematically deprecating datacenter-level resource placement in favor of location-level across servers, Primary IPs, and resource attributes — a coordinated API migration signaling that datacenter IDs will become internal implementation details.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"ftl2-enables-hybrid-convergence-when-native-modules-land","text":"FTL2 could provide unified hybrid Hetzner orchestration — combining 250x-faster native module execution with Ansible collection modules to bridge the Cloud/Robot API paradigm gap in a single async Python tool, eliminating the need for multi-protocol automation wrappers.","truth_value":"OUT","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"ftl2-hcloud-collection-fqcn","text":"FTL2 can run hetzner.hcloud collection modules via FQCN syntax (e.g., `ftl.hetzner.hcloud.server(...)`) for all Cloud API resources.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"governance-gap-widens-at-scale","text":"Hetzner's governance gap widens super-linearly with deployment complexity — single-project deployments face shallow protection and billing traps, but multi-project deployments compound credential explosion with API paradigm bridging requirements, demanding progressively heavier external governance infrastructure as scope grows.","truth_value":"OUT","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"governance-must-bridge-api-paradigms","text":"External governance tooling for Hetzner must itself bridge the API paradigm gap — resource protection gaps (predominantly delete-only, no RBAC) and billing transparency issues span both the Cloud API (modern Bearer/JSON) and Robot API (legacy Basic/URL-encoded), meaning governance cannot be implemented against a single API surface and no unified governance integration point exists within the platform.","truth_value":"OUT","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"hcloud-api-default-endpoint","text":"The default Hetzner Cloud API endpoint is `https://api.hetzner.cloud/v1`; the separate Hetzner endpoint is `https://api.hetzner.com/v1`.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"hcloud-api-endpoint","text":"The default Hetzner API endpoint is `https://api.hetzner.com/v1`.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"hcloud-api-endpoints","text":"The default Hetzner Cloud API endpoint is `https://api.hetzner.cloud/v1` and the default Hetzner (non-cloud) API endpoint is `https://api.hetzner.com/v1`.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null},{"id":"hcloud-cloud-api-endpoint","text":"The default Hetzner Cloud API endpoint is `https://api.hetzner.cloud/v1`.","truth_value":"IN","justification_count":0,"dependent_count":0,"challenges":[],"last_reviewed":null,"review_result":null}],"count":74,"limit":20,"offset":0}