carlos / platform Public

Temporary static sites rollout (CARLOS_TEMPORARY_APPS) open

Plan 2026-09-26-temporary-static-sites, Task 12 steps 3-5. Paul approved switching temporary apps on (2026-10-25). Dev goes first, then flagship.

Step 3, enforcement on every box. /opt/carlos/carlos add -registry <mktemp>/tmp-check.db -app tmp-check ... was refused on every box with "names starting with tmp- belong to temporary apps ... carlos add cannot route one" (exit 1). The throwaway registry was deleted.

Step 4, scan. Read-only SQLite, mode=ro, run on each box over SSM, 2026-10-24 23:07-23:08Z.

| deployment | box | carlos | tmp- routes | routes | |---|---|---|---|---| | dev | carlos-dev-ie (console) | v0.28.13 | none | 4 | | dev | carlos-dev-ie-b | v0.28.13 | none | 1 | | dev | carlos-dev-uk | v0.28.13 | none | 0 | | flagship | carlos-flagship-ie (console) | v0.28.11 | none | 202 | | flagship | carlos-flagship-uk | v0.28.11 | none | 52 | | flagship | carlos-flagship-au | v0.28.11 | none | 44 | | flagship | carlos-flagship-us | v0.28.11 | none | 47 |

Consoles: apps WHERE app LIKE 'tmp-%' and owners WHERE app LIKE 'tmp-%' returned no rows on either console (dev: 8 apps, flagship: 155 apps). Neither console had CARLOSTEMPORARYAPPS in its environment.

Step 6, next. Add the drop-in /etc/systemd/system/console.service.d/temporary-apps.conf with Environment=CARLOS_TEMPORARY_APPS=1, then daemon-reload and restart console.service. This is the same delivery as db-forward.conf. Then the end-to-end check (deploy --temporary --ttl 1h, list, keep, delete). Turning it off means removing the file, then daemon-reload and restart.

Step 6 done on both deployments. CARLOSTEMPORARYAPPS=1 is on, delivered as the drop-in /etc/systemd/system/console.service.d/temporary-apps.conf.

  • Dev console (carlos-dev-ie, console sha 5af6127a) restarted 2026-10-24 23:09:05Z. healthz 200, NRestarts 0, no panic, and the running env carries the switch.
  • Flagship console (carlos-flagship-ie, console sha cc95be6d) restarted 23:11:10Z, with the same results. The journal lines parse ses event and invalid account "woodstar-*" that appeared after the restart are older than this change: 75 occurrences in the three days before the switch.

End to end:

  • Dev (account bab): deploy --temporary --ttl 1h created tmp-f6qaqp and it went live. list showed "expires in 59m", keep made it permanent, and delete gave a 29-day purge date.
  • Flagship (account bdj): the same sequence on tmp-sphykz, with the same results.
  • Flagship (account bdj): tmp-heknv2, a 7-day site Paul asked for (the CARLOS app spec draft), is live with x-carlos-version draft0.
  • Left-alone expiry: tmp-rlttvo on dev (1h, due 2026-10-25 00:09Z). The result will be posted here.

Correction to the table above: carlos-flagship-au has 47 routes and carlos-flagship-us has 44. The two counts were swapped. Both had zero tmp- routes.

Off switch: remove temporary-apps.conf, then systemctl daemon-reload && systemctl restart console.service.

Left-alone expiry passed on dev. tmp-rlttvo (1h, due 00:09Z) showed trashed purged in 2d in carlos apps list at 00:14Z, and its URL returned 503. Rollout complete on both deployments. The 3-day purge will happen on its own.