merge: app deletion — the trash, the 30-day cooloff, and the ceremonial purge (#56)
App deletion: trash, 30-day cooloff, purge — and the console remembers tombstones
29 files changed,
+5419
−42
apimode.go+72 −0apps.go+318 −0apps_test.go+370 −0docs/superpowers/plans/2026-08-04-deletion-policy.md+697 −0docs/superpowers/specs/2026-08-04-deletion-policy-design.md+321 −0internal/console/apicli.go+200 −2internal/console/apicli_test.go+401 −0internal/console/authcli.go+6 −0internal/console/deletion_test.go+306 −0internal/console/materialize.go+221 −16internal/console/materialize_test.go+311 −0internal/console/ownership.go+232 −3internal/console/server.go+17 −0internal/console/store.go+218 −9internal/console/store_test.go+239 −0internal/console/templates/apps.html+2 −0internal/console/templates/trash.html+54 −0internal/console/view.go+46 −0internal/domains/reconcile.go+123 −3internal/domains/reconcile_test.go+443 −0internal/host/agent.go+35 −4internal/host/host_test.go+72 −5internal/provision/reconcile.go+34 −0internal/provision/reconcile_test.go+79 −0internal/release/production.go+14 −0internal/release/production_test.go+64 −0internal/release/trash.go+165 −0internal/release/trash_test.go+347 −0main.go+12 −0
apimode.goLoading diff…
apps.goLoading diff…
apps_test.goLoading diff…
docs/superpowers/plans/2026-08-04-deletion-policy.mdLoading diff…
docs/superpowers/specs/2026-08-04-deletion-policy-design.mdLoading diff…
internal/console/apicli.goLoading diff…
internal/console/apicli_test.goLoading diff…
internal/console/authcli.goLoading diff…
internal/console/deletion_test.goLoading diff…
internal/console/materialize.goLoading diff…
internal/console/materialize_test.goLoading diff…
internal/console/ownership.goLoading diff…
internal/console/server.goLoading diff…
internal/console/store.goLoading diff…
internal/console/store_test.goLoading diff…
internal/console/templates/apps.htmlLoading diff…
internal/console/templates/trash.htmlLoading diff…
internal/console/view.goLoading diff…
internal/domains/reconcile.goLoading diff…
internal/domains/reconcile_test.goLoading diff…
internal/host/agent.goLoading diff…
internal/host/host_test.goLoading diff…
internal/provision/reconcile.goLoading diff…
internal/provision/reconcile_test.goLoading diff…
internal/release/production.goLoading diff…
internal/release/production_test.goLoading diff…
internal/release/trash.goLoading diff…
internal/release/trash_test.goLoading diff…
main.goLoading diff…