CluPilotCloud/app
nexxo d321719180 Only a real zones array counts as an answer
Measured on the live server: a token with read AND write, the zone
clupilot.cloud present with fifteen records — and the console insisting the
account held no zones at all. Both screenshots contradict the message, so the
message was wrong, and the previous fix did not go far enough.

successful() is not enough. Something in the middle — a portal, a filter, a
proxy — answers with 200 and an HTML page. That body has no `zones` key, `??
[]` turned it into no zones, and the display concluded the Hetzner account was
empty. A 200 is not a promise about who answered.

So the body has to answer the question, not merely arrive: `{"zones": [...]}`
with an actual array, or it is reported as something else having spoken, with
the status and the first 120 characters of what came back. That last part is
what turns it from a verdict into a diagnosis — an operator who sees "Blocked by
policy" knows in one line what nothing else here could have told them.

A genuine `{"zones": []}` still means what it always meant.

2053 tests pass, assets build.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 15:42:31 +02:00
..
Actions Stop charging VAT to the customers who owe us none 2026-07-30 02:15:41 +02:00
Console Fill the hostname page from the installation, not from a blank form 2026-07-31 00:53:12 +02:00
Exceptions Refuse the sale instead of reaching Stripe without a key 2026-07-30 11:58:01 +02:00
Http Rebuild Add host as a page with one job, and let downloads through the gate 2026-07-30 21:51:30 +02:00
Jobs Let the export have as many destinations as somebody wants 2026-07-29 02:43:15 +02:00
Listeners Keep a register of what was sent, and answer the customer from here 2026-07-29 21:02:36 +02:00
Livewire Fill the hostname page from the installation, not from a blank form 2026-07-31 00:53:12 +02:00
Mail Merge main into the operating-mode branch 2026-07-30 17:53:20 +02:00
Models Fill the hostname page from the installation, not from a blank form 2026-07-31 00:53:12 +02:00
Notifications Add the SSH identity to the vault, and give deployment config a console page 2026-07-29 00:52:44 +02:00
Observers Say the same thing to the customer, the register and the bank 2026-07-30 01:30:24 +02:00
Policies Move the console's identity out of the customer table 2026-07-28 10:31:43 +02:00
Providers Subtract only what was counted, not everything a singleton adopted 2026-07-30 18:20:27 +02:00
Provisioning Keep the platform on .com and the customers on .cloud 2026-07-30 21:04:08 +02:00
Services Only a real zones array counts as an answer 2026-07-31 15:42:31 +02:00
Support Keep IP addresses out of a certificate overview 2026-07-31 01:01:47 +02:00