Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Self-hosted platform: no command clears the local install record after its database is gone

Aberta Para iniciantes
#428 0 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
1/5
Tempo estimado
1-3 horas
Facilidade para iniciantes
78/100
Tipo de issue
Documentação
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
postgresql, typescript
Domínio
backend, cli

Direção de pesquisa

Leia docs/guide/platform/installation/uninstall.md, especialmente as orientações em torno da linha 92 e a lista “Remove retained resources”. Documente como limpar o registro de instalação local e os arquivos adjacentes de recuperação e de segredos quando o banco de dados tiver sido perdido permanentemente; em seguida, explique como remover manualmente os recursos do Cloudflare mantidos. O trabalho estará concluído quando as etapas de recuperação estiverem claras e consistentes com a lista de recursos existente.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

bug

Problem

If the platform PostgreSQL database is deleted or can no longer be reached, the local
installation record stays, and no Void command can clear it. The installation name stays
blocked on this machine.

database deleted / unreachable
        │
        ▼
void platform uninstall <id>  ──▶ needs the database lifecycle lock first ──▶ fails
void platform install --resume ──▶ reads the saved checkpoint from the database ──▶ fails
void platform install (same name) ──▶ "Installation <id> already uses this name.
                                       Resume it with void platform install --resume" ──▶ loop

A user can still pick a new name, so this is a cleanup dead end, not a full block. The Cloudflare
resources of that installation also stay, and uninstall cannot list them.

Repro (code reading; base 23ddc6e35)

  1. Install a platform (or stop an install after the database claim).
  2. Delete the PostgreSQL database at the provider.
  3. Run void platform uninstall <id>: it stops at the database lock.
  4. Run void platform install --name <same-name>: refused, points to --resume.
  5. Run void platform install --resume --name <id>: it stops at the database read.

Cause

  • Every lifecycle command, uninstall included, takes the database lifecycle lock before any change:
    packages/void/src/cli/platform-management.ts:591-606 (acquirePlatformDatabaseLifecycleLock).
    uninstall --plan reads project Zero Trust state and projects from the database:
    platform-management.ts:311-323.
  • A non-draft resume reads the authoritative manifest from the database first:
    packages/void/src/cli/platform-lifecycle.ts:476-486 (readPlatformDatabaseLifecycleManifest).
  • The name check blocks any record that is not uninstalled:
    packages/void/src/cli/platform-registry.ts:256-268.
  • docs/guide/platform/installation/uninstall.md:92 says uninstall stops when the database cannot
    be reached, with no next step. Deleting ~/.void/platforms/<account>/<id>.json is only mentioned
    for after a finished uninstall (uninstall.md:38).

Options

  1. Docs only: say that when the database is gone for good, the user can delete
    ~/.void/platforms/<account>/<id>.json (and the .recovery.enc / .secrets.enc next to it),
    then remove the Cloudflare resources by hand (the list in "Remove retained resources").
    Smallest; no code risk.
  2. A void platform forget <id> command that removes only the local record after a typed
    confirmation, prints the recorded Cloudflare resources first, and refuses while the database
    is reachable. Needs CLI help, docs and interactive hints.
  3. Let uninstall --purge-resources run without the database when the user passes an explicit
    flag (for example --database-gone). Largest: the database lock and the Zero Trust guard exist
    to stop races with the API, so this needs a careful design of what is still safe to delete.

Recommendation: option 1 now; option 2 if users hit it more than once.

🤖 Generated with Claude Code

https://claude.ai/code/session_0123r5HnanmW2VUrZ7VWDufH

Linguagem predominante
TypeScript
Estrelas
402
Forks
32
Merge médio
12h 28min
PRs com merge (30d)
77

Preparar o ambiente

Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de voidzero-dev/void

Todas as issues de voidzero-dev/void

Issues semelhantes

Mais issues de TypeScript

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.