remove and rollback each render VendorRevertStep in their own loop, and the loops drifted (remove --preserve-state --dry-run previews a full revert)
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 55/100
Direção de pesquisa
Start with crates/socket-patch-cli/src/commands/vendored_backend/mod.rs, then compare the revert handling loops in commands/remove.rs and commands/rollback.rs. Read the vendored rollback and remove tests named in the acceptance criteria, then add coverage for remove --preserve-state --dry-run --json. Done means dry-run and wet-run emit the same event code and preserved count, with the listed vendored tests passing.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
[agent] Filed by the scheduled architecture audit (audit-cli-tests). Register: register comment.
Kind: refactor (with one suspected behavior drift). Register ID: T16.
Problem
Both commands call VendoredBackend's revert for each ledger key and then turn the VendorRevertStep into events, warnings and counters, each in its own loop:
vendor.rs classifies the same steps two more times (L4537-L4610, L4637-L4710).
The loops have drifted in four ways:
1. Dry run with --preserve-state. Core returns WouldRevert before it checks keep_artifact (vendored_backend/mod.rs L380-L384).``
- rollback handles this with a
WouldRevert if preservearm, which counts the key as preserved. - remove has no such arm. It prints "(artifact preserved)" but emits
Verified/vendor_would_revert/ "vendoring would be reverted on remove" and never bumpsleg.preserved. - So a dry run reports a revert, while the wet run reports
skipped/vendor_state_preserved. - I found this by reading the code; I did not run it, and no remove test covers it.
2. Go-undo warnings.
- remove turns them into per-key
Skippedevents. - rollback turns them into run warnings and drops the key.
3. Drift-keep text.
- remove uses
cause.reason(). - rollback writes its own "lockfile wiring drifted…" text.
4. Failures.
- remove stops at the first failed key.
- rollback collects every failure.
Proposed change
- Add a
WouldPreservestep to corerevert_one(opts.dry_run && opts.keep_artifact). - Give
VendoredBackenda typed per-run tally: reverted, preserved, kept-with-cause, failed and warnings. - Leave remove and rollback with rendering only, in their own verb ("remove" / "roll back again").
- Decide in the PR whether remove keeps stop-at-first-failure. If it does, keep it as an explicit option on the tally driver rather than a second loop.
Size
3 files (vendored_backend/mod.rs, remove.rs, rollback.rs), about −150 lines.
Acceptance criteria
- rollback's vendored tests (
in_process_rollback_vendored.rs,rollback_duality_invariants.rs) and remove's vendored e2e tests pass unchanged. - A new test runs
remove --preserve-state --dry-run --jsonover a vendored entry and asserts the same event code and the samepreservedcount as the wet run.
- Linguagem predominante
- Rust
- Estrelas
- 8
- Forks
- 2
- Merge médio
- 18h 47min
- PRs com merge (30d)
- 637
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de SocketDev/socket-patch
-
agent:triaged arch-audit priority:p3 refactor
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 83/100
SocketDev/socket-patch#1860 ·
Mantenedores costumam responder em até 1 dia
-
agent:triaged arch-audit priority:p3 refactor
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
SocketDev/socket-patch#1838 ·
Mantenedores costumam responder em até 1 dia
-
arch-audit refactor
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
SocketDev/socket-patch#1987 ·
Mantenedores costumam responder em até 1 dia
-
agent:triaged arch-audit priority:p3 refactor
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
SocketDev/socket-patch#1983 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
agent:triaged arch-audit bug priority:p3
Dificuldade 3/5 Meio dia Facilidade para iniciantes 55/100
SocketDev/socket-patch#1982 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
Todas as issues de SocketDev/socket-patch
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
libnativeapi/nativeapi#21 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
longbridge/nsh#804 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
Mantenedores costumam responder em até 1 dia