feat: manifest do stamp do harness + imp fix — restauração com plano e consentimento - #23
Merged
Merged
Conversation
… consentimento e trilho no git
Duas entregas que fecham o ciclo doctor→fix:
1) imp/.harness-manifest.json — o setupHarness grava sha1 por arquivo do
clone adaptado (symlinks como link:<alvo>); arquivos que o merge manteve
registram o sha do harness de propósito ("difere do stamp" é a verdade).
Best-effort: falha no manifest nunca aborta a instalação. Com ele, a
classificação faltando/intocado/modificado vale para o harness — o mesmo
contrato que o runtime-manifest já dava ao imp/ + .pi/.
2) imp fix — remediação restore-only com as normas de mercado (cargo fix,
ng update, expo install, copier): plano impresso + um y/N antes de
aplicar (--yes pula; sem TTY imprime o plano e sai 1 — CI-safe);
--dry-run/--json nunca mutam; fixes de projeto exigem árvore git limpa
(--allow-dirty é o escape nomeado; --commit faz um commit por fix);
idempotente com re-plano no final. Fixers: -y nos MCPs npx, skills do
lock (npx skills experimental_install), poda de cópias .pi/skills,
arquivos de runtime do manifest sumidos do disco (restaura do template
embarcado — nunca adiciona arquivo fora do manifest, para não misturar
versões), arquivos de harness sumidos (re-download da API, copia SÓ o
que falta) e o bloco do AGENTS.md por marker. Arquivo existente com
conteúdo diferente NUNCA é sobrescrito — vira nota.
doctor: nova checagem do stamp do harness (faltando → warn com `imp fix`;
modificado → info) + rodapé apontando o imp fix quando há achados.
Registrado em imp help, README e DOCS §14.3.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
elberrd
added a commit
that referenced
this pull request
Aug 16, 2026
…-y (#24) Publica as PRs #21/#22/#23: o fix do "Connection closed" do Playwright no Windows (npx -y no registro do MCP), o checkup somente-leitura `imp doctor` (assinaturas, CLIs, Pi e projeto, com --json) e o `imp fix` restore-only (plano + consentimento, gate de git, manifest do stamp do harness gravado pelo instalador). Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
O que entra
Fecha o ciclo doctor→fix desenhado na avaliação (normas de cargo fix, ng update, expo install e copier):
1.
imp/.harness-manifest.json(o pré-requisito)O
setupHarnessagora grava, logo após o merge, o sha1 de cada arquivo que o clone adaptado trouxe (symlinks registrados comolink:<alvo>). Arquivos que o merge manteve (a versão do projeto venceu) registram o sha do harness de propósito: leem como "difere do stamp", que é a verdade — e impedem o fix de sobrescrevê-los. Best-effort: falha aqui nunca aborta a instalação. É o análogo exato doimp/.runtime-manifest.json, agora para o harness — e é o mesmo manifesto que destrava o uninstall no futuro.2.
imp fix— remediação restore-only--yespula; sem TTY imprime o plano e sai 1 (CI-safe).--dry-run/--jsonparam no plano, sempre.--allow-dirtyé o escape nomeado);--commit= um commit por fix (estilong update --create-commits).--update-runtime; adotar a versão do harness continua no--agent-files replace).Fixers v1:
-ynos MCPs npx do.mcp.json; skills do lock ausentes (npx skills experimental_install); poda de cópias.pi/skills; arquivos de runtime registrados no manifest e sumidos do disco (restaura do template embarcado — nunca adiciona arquivo fora do manifest, para não misturar versões de runtime); arquivos de harness sumidos (re-download da API comunitária, copia só o que falta, symlinks recriados pelo alvo registrado); bloco do AGENTS.md por marker; pacotes de extensão do Pi ausentes (tier máquina, sem gate de git).3. doctor integrado
Nova checagem do stamp do harness (faltando → warn apontando
imp fix; modificado → info; intacto → ok; instalação antiga sem manifest → dica de como gravar um) e rodapé apontando oimp fixquando há achados.Checagens
npm test: 746 pass (14 novos: manifest collect/roundtrip/classify + plano/apply/convergência do fix)npm run lint: limpo--yesaplica → re-run "Nothing to fix"; gate de árvore suja recusa com o escape impresso🤖 Generated with Claude Code