Skip to content

[P0][Workspace] Zerar acessos diretos legados e tornar o audit gate realmente bloqueante #318

Description

@wesleysimplicio

Parent: #315
Follow-up de: #49, #108 e docs/ARCHITECTURE.md.

Problema

A documentação ainda enumera violações produtivas em fluxos auxiliares de anexos, indexação, árvore e status do workspace. Enquanto existirem tokio::fs, walkers/ripgrep ou metadata locais fora do boundary autorizado, o Code não pode afirmar que Runtime é a autoridade integral de filesystem.

Objetivo

Fazer todo acesso produtivo ao workspace passar por interfaces tipadas Runtime-backed, com sandbox e receipt, e promover scripts/audit_workspace_access.py a gate de release com zero violações não classificadas.

Caminho mais rápido

  1. Gerar inventário exato antes de editar.
  2. Classificar cada ocorrência como produtiva, fixture/teste, build-time ou terceiro imutável.
  3. Migrar por família: stat/list/tree → search/index → attachments/status.
  4. Reusar SimplicioRuntimeFs/resources existentes; não criar adapters paralelos.
  5. Ativar gate hard-fail somente após baseline revisada e exata.

Passo a passo

  1. Executar audit em source, tests, examples, scripts e artefatos empacotados.
  2. Registrar path, função, chamada, superfície, motivo, owner e substituto para cada finding.
  3. Proibir exclusões amplas por diretório/glob.
  4. Ligar tree/list/stat ao backend compartilhado.
  5. Ligar indexação e busca ao AsyncSearch/SearchBackend canônico.
  6. Converter attachments para handles limitados validados pelo Runtime.
  7. Remover leitura local do status de workspace; consumir read model/receipt.
  8. Garantir que rebuild/reconnect preserve os resources injetados.
  9. Proibir fallback para rg/walker/fs após erro do Runtime quando sessão produtiva estiver ativa.
  10. Manter backend local somente em fixtures explicitamente marcadas.
  11. Adicionar lint para novas importações/chamadas proibidas em escopo produtivo.
  12. Escanear binário/package para writers/readers legados.
  13. Atualizar arquitetura e capability inventory a partir do resultado, não manualmente.
  14. Rodar E2E com path traversal, symlink, case folding e races.
  15. Medir impacto de list/search/tree cold/warm.

Testes obrigatórios

  • arquivo/diretório normal;
  • path absoluto e ..;
  • symlink/junction escape;
  • rename/delete concorrente;
  • árvore grande;
  • glob malicioso;
  • attachment oversized/truncado;
  • Runtime ausente/restart/incompatível;
  • reconnect durante list/search;
  • backend local de teste não alcançável em build produtivo;
  • TUI/headless/workspace/ACP;
  • Linux/macOS/Windows.

Evidência para fechar

Inventário before/after, saída do audit, diff, testes adversariais, receipts, package scan, benchmark e SHAs das dependências.

Execução

  • Implementar o objetivo descrito.
  • Fazer a implantação aplicável.
  • Executar e registrar os testes.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    Status
    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions