carlos / platform Public

Clone
git clone https://amadan.net/carlos/platform

Plain git — no account needed to clone.

Download

Download this file

1# Approved copy: temporary static sites
2
3Approved by Paul in copy review on 2026-10-02 (105 strings, approved as drafted). Ids match the plan's `COPY-REVIEW` markers.
4Where the plan joined variants under one id, they are split here with letter suffixes (C9.5a/b, C10.13a/b/c, C11.20a/b/c, C11.26a/b); use each part at its own call site.
5Placeholders (`<app>`, `<date>`, `<in>`, `<action>`, `%s` and the like) are filled at run time. Apply text byte for byte.
6
7| id | approved text |
8|---|---|
9| C11.21 | create a new temporary app for this static site: named tmp-..., it moves to the Trash after --ttl and is purged 3 days later |
10| C11.22 | how long a temporary app lives, 1h to 30d (default 7d); implies --temporary |
11| C11.23 | [--temporary] [--ttl 7d] |
12| C11.2 | "<input>" cannot name a temporary app: it would be <name>, and a temporary app's name is tmp- followed by lowercase letters, digits and dashes, 32 characters in all, ending in a letter or digit |
13| C11.3 | --temporary cannot be used with --host. A temporary app is served only at its own platform address |
14| C11.4 | --temporary deploys a static site, so it cannot be used with --kind binary |
15| C11.5 | --temporary needs the site directory to deploy, for example: carlos deploy --temporary ./dist |
16| C11.6 | <n> generated names in a row were taken. Try again, or name the app with --app |
17| C11.7 | <app> is temporary. It moves to the Trash <in>, at <date>. This deploy does not change that |
18| C11.16 | this console does not offer temporary apps, or the account was not found (it answered 404). Nothing was created |
19| C11.17 | that name is taken: <name> |
20| C11.19 | the console created <app> but did not confirm it is temporary, so nothing was shipped. If you do not want it, delete it with: carlos apps delete <app> |
21| C11.24 | created <app>, a temporary app. It moves to the Trash <in>, at <date> |
22| C11.25 | carlos apps keep --app <app> makes it permanent |
23| C5.1 | ttl_seconds must be between 1 hour (3600) and 30 days (2592000) |
24| C5.2 | this account already has <n> temporary apps, the most it can hold. Make one permanent with carlos apps keep, or delete one with carlos apps delete. They are: |
25| C5.3 | <app> expires <date> |
26| C5.4 | app creation limit reached for today. Try again tomorrow, or deploy to an app you already have |
27| C5.5 | a temporary app's name is tmp- followed by lowercase letters, digits and dashes, 32 characters in all, ending in a letter or digit |
28| C5.6 | this console has no deployment bucket, so it cannot create a temporary app |
29| C5.7 | could not count this account's temporary apps. Nothing was created. Try again |
30| C5.8 | could not check the routes for that name, so nothing was created. Try again |
31| C5.9 | a route in this account already serves <app>, so it cannot be a temporary app. Choose another name |
32| C5.10 | could not check the release store. Nothing was created. Try again |
33| C5.11 | could not create the app. Try again |
34| C5.12 | the app was created but its expiry could not be read back. Check carlos apps list before you ship to it |
35| C3.2 | names starting with tmp- are kept for temporary sites. Use carlos deploy --temporary, or choose another name |
36| C3.4 | --app <app>: names starting with tmp- belong to temporary apps, which get their routes from the console. carlos add cannot route one |
37| C6.1 | Could not check whether <app> is temporary. Nothing was changed. Try again. |
38| C6.2 | <app> is temporary, so you cannot <action>. Make it permanent first with: carlos apps keep --app <app> |
39| C6.3 | ship a binary release to it |
40| C6.4 | serve anything but a static site at <app>'s own platform address |
41| C6.5 | give its instances private storage |
42| C6.6 | give it object storage |
43| C6.7 | attach a domain to it |
44| C6.8 | give it email |
45| C6.9 | mark it as production |
46| C6.10 | turn its safety delay on |
47| C6.11 | rename it |
48| C6.12 | move it to another account |
49| C6.13 | mark it as the control plane |
50| C6.14 | This app is temporary, so it cannot be renamed. Make it permanent first with carlos apps keep. |
51| C6.15 | This app is temporary, so it cannot move. Make it permanent first with carlos apps keep. |
52| C9.1 | <app> is in the Trash. Restore it first with: carlos apps restore <app> |
53| C9.2 | <app> is permanent. It has no expiry to move or keep |
54| C9.3 | could not change <app>. Nothing was changed. Try again |
55| C9.4 | too many requests. Wait a minute and try again |
56| C9.7 | could not load apps |
57| C3.3 | names starting with tmp- belong to temporary apps. A grant, a rename or a permanent claim cannot create one |
58| C6.16 | the app is temporary. Make it permanent first with carlos apps keep |
59| C11.1 | a temporary app lives from 1h to 30d. Give a whole number of days like 3d, or a duration like 36h or 90m |
60| C11.9 | carlos apps <verb> works through a console, and this shell is in direct bucket mode (CARLOS_DEPLOYMENT_BUCKET or CARLOS_DEPLOYMENT_DIR is set). Temporary apps are recorded by the console, which direct mode never reads. Unset the store variables and run: carlos auth login --console <url> |
61| C11.10 | usage: carlos apps ttl --app <name> <1h to 30d, e.g. 5d> [--account <sqid\|name>] [--console <origin>] |
62| C11.11 | expiry set <app> moves to the Trash <in>, at <date> |
63| C11.12 | usage: carlos apps keep --app <name> [--account <sqid\|name>] [--console <origin>] |
64| C11.13 | kept <app> is permanent now. It keeps its name |
65| C11.14 | usage: carlos apps list [--account <sqid\|name>] [--console <origin>] |
66| C11.15 | no apps in this account |
67| C11.8 | live / trashed / expires <in> / purged <in> |
68| C11.18 | this console does not offer carlos apps list yet (it answered 404). The console needs upgrading first |
69| C11.20a | ttl --app <name> <1h to 30d> move a temporary app's expiry to that long from now, e.g. 5d or 36h. Temporary apps only. |
70| C11.20b | keep --app <name> make a temporary app permanent. It keeps its tmp- name, and everything a temporary app cannot do (custom domains, binaries, storage, email) opens up. |
71| C11.20c | list every app in the account, the Trash included: live or trashed, and when it expires or is purged. |
72| C10.5 | soon |
73| C10.6 | trashed <app>. It is purged <in>, at <date>. Until then, carlos apps restore <app> brings it back. |
74| C10.7 | restoring brings back its releases and channels, but no routes. carlos add <host> serves it again |
75| C10.8 | may be purged at any time |
76| C10.9 | is purged at <date> |
77| C10.10 | <app> has been in the Trash since <date>. |
78| C10.11 | If it is a temporary app it <C10.8 or C10.9>. If not, it <C10.8 or C10.9>. |
79| C10.12 | carlos apps list against the console shows which. |
80| C10.13a | restorable for 30 days, or 3 for a temporary app |
81| C10.13b | Headless deployments wait out the window: 30 days, or 3 for a temporary app |
82| C10.13c | A tmp- app needs none of that: its instance records are kept in the Trash, so hosts bring its routes back on their next pass. |
83| C10.16 | restoring brings back its releases and channels, and hosts bring its routes back from its instance records |
84| C10.18 | <app> is restored with its releases and channels intact. Its instance records were kept, so hosts bring its routes back on their next pass |
85| C7.3 | <app> is restored with its releases and channels intact. Its instance records were kept, so hosts bring its routes back on their next pass. |
86| C7.1 | Could not confirm the trash marker. Nothing was changed. Try again. |
87| C7.2 | <app> no longer exists. |
88| C8.1 | did not move <app> to the trash: it is marked as the control plane |
89| C8.2 | moved <app> to the trash: it reached its expiry |
90| C8.3 | did not delete <app>: it is marked as the control plane |
91| C8.4 | did not delete <app>: it has email set up. Delete it from the Trash page |
92| C8.5 | deleted <app> permanently, 3 days after it went to the trash |
93| C9.5a | made <app> permanent (cli) |
94| C9.5b | made <app> permanent |
95| C9.6 | set <app> to expire <date> (cli) |
96| C5.13 | created temporary app <app>, expiring <date> (cli) |
97| C3.1 | Names starting with tmp- are kept for temporary sites. Choose another name. |
98| C9.8 | <app> is already permanent. |
99| C9.9 | <app> is in the Trash. Restore it from the Trash page first. |
100| C9.10 | Could not keep <app>. Nothing was changed. Try again. |
101| C9.11 | <app> is permanent now. It will not expire. |
102| C9.12 | Temporary. It moves to the Trash on <date>, and is deleted 3 days after that. |
103| C9.13 | Keep this app |
104| C10.1 | Left alone, the platform destroys a trashed app on its own on the date in the last column: 30 days after it was deleted, or 3 days for a temporary app. That is permanent. The objects go, and the name is free for anyone in this account to claim again. |
105| C10.2 | Deleting now does what the wait would do on its own, immediately and permanently: every object the app owns is destroyed and its name is freed. There is no undo and no copy anywhere. Type the app's name to confirm, then confirm with your passkey. A signed-in browser on its own is not enough. An app still marked as production cannot be permanently deleted, whatever you type. Turn its safety delay off first. |
106| C10.3 | Nothing here. An app deleted with carlos apps delete waits in this Trash, restorable the whole time, until the platform destroys it: 30 days for most apps, 3 days for a temporary one. |
107| C10.4 | Moved <app> to the trash. You can restore it there until <date>. Hosts stop serving it on their next pass. |
108| C10.15 | Trash (<n>): deleted apps you can still restore, each until the date shown there. |
109| C10.17 | A temporary app (named tmp-...) needs no carlos add: its instance records are kept in the Trash, so hosts serve it again on their own once it is restored. |
110| C10.14 | ...it is restorable for <3 or 30> days before the platform destroys its releases for good. It is a temporary app, so its window is shorter than usual. |
111| C11.26a | carlos apps delete moves an app to the Trash. Every route drops, custom domains included, the name stays reserved, and you have thirty days to carlos apps restore it, or three for a temporary app. Restoring brings back releases, channels and the production flag exactly as they were, but no routes at all, not even the platform apex, so plan on adding those again. A temporary app is different: its instance records are kept in the Trash, so its hosts put its routes back on their next pass after a restore, with nothing to add by hand. Delete is refused while the app is flagged production. Clear the flag first. |
112| C11.26b | A temporary app is one carlos deploy --temporary created. When its time is up it moves to the Trash, and it is purged 3 days later instead of 30. carlos apps ttl moves its expiry, anywhere from an hour to 30 days from now. carlos apps keep makes it permanent, and it keeps its tmp- name. |
113| C11.27 | --temporary creates a new app for a static site that cleans up after itself. It is named tmp- plus six random letters and digits, or tmp-<name> with --app <name>, and lives 7 days unless --ttl says otherwise (1h to 30d). --ttl on its own implies --temporary. A temporary app is served only at its own platform address, so --host and --kind binary are refused with it, and an account holds at most 20 of them. |
114