Skip to content

Implementar o coordenador e a interface de progresso do boot no TIBS #87

Description

@coffeeispower

Objetivo

Fazer do TIBS a interface gráfica ativa durante a inicialização do userspace, mostrando quais serviços ainda estão a iniciar e impedindo a transição prematura para OOBE/login.

Ordem de boot

  1. O init de segundo estágio inicia Shift e TIBS.
  2. TIBS autentica-se no Shift e apresenta imediatamente o ecrã de boot.
  3. O init inicia os restantes serviços segundo o grafo de dependências.
  4. Cada serviço publica transições de estado no coordenador de boot.
  5. TIBS atualiza a barra e a lista de estado.
  6. Quando os serviços obrigatórios ficam prontos, TIBS muda para OOBE ou login.

Contrato de estado

  • pending: ainda não iniciado;
  • starting: inicialização em curso;
  • ready: serviço localmente utilizável;
  • degraded: utilizável com funcionalidade limitada;
  • failed: falhou após a política de recuperação;
  • progresso opcional dentro de starting, sem inventar percentagens quando o serviço não as consegue medir.

Cada atualização inclui identificador estável do serviço, nome para apresentação, estado, detalhe sanitizado e monotonic sequence para rejeitar eventos antigos.

Política

  • A barra representa progresso real dos serviços, não um temporizador ou animação artificial.
  • Serviços obrigatórios bloqueiam a transição; serviços opcionais não bloqueiam e podem aparecer como degradados.
  • Timeouts e falhas seguem uma política explícita por serviço.
  • Conectividade externa não equivale à prontidão local do serviço de rede e não bloqueia login.
  • Mensagens expostas pelo TIBS não revelam credenciais, tokens ou detalhes sensíveis.

Critérios de aceitação

  • TIBS aparece antes de os serviços permanentes começarem a inicializar.
  • A interface mostra serviço atual, progresso agregado e falhas relevantes.
  • Eventos duplicados ou fora de ordem não fazem o progresso recuar.
  • O login só aparece depois de todos os serviços obrigatórios atingirem um estado permitido.
  • O sistema consegue chegar ao login offline quando os serviços locais estão prontos.
  • Reinício de um serviço durante o boot é refletido sem reiniciar TIBS.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions