Route `get <uuid>` agent mode through download_and_apply_patches_into instead of a second copy of the engine

Ouverte
#1,835 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
1-2 jours
Accessibilité débutants
45/100
Type d'issue
Refactorisation
Clarté
Clairement spécifiée
Activité
Active
Stack technique
rust
Domaine
cli

Piste de recherche

Start in crates/socket-patch-cli/src/commands/get.rs at the UUID agent-mode path and compare it with download_and_apply_patches_into in crates/socket-patch-cli/src/commands/agent_download.rs. Read the existing UUID tests in get.rs and tests/get/, then route the fetched patch through the shared engine and remove the duplicate helpers. Done when the listed output, save-only, dry-run, and nested-apply behaviors meet the acceptance criteria and the UUID tests pass.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

agent:triaged arch-audit priority:p3 refactor

[agent] Filed by the scheduled architecture audit (audit-cli-tests). Register: register comment.

Kind: refactor. Register ID: T01.

Problem

get <uuid> in agent mode does not use the shared download engine. Instead, save_patch_record plus save_and_apply_patch (get.rs L1931-L2172, about 240 lines) repeat, for a single patch, every step of download_and_apply_patches_into (agent_download.rs L1700-L1886):``

  • the lock acquire;
  • the fail-closed manifest read-modify-write;
  • the files_for_manifest guard;
  • decide_patch_action;
  • write_all_patch_blobs and the unwind on failure;
  • the uuid-drift and gitignore warnings;
  • the lock hand-off and the nested apply;
  • record_apply_outcome.

The copies have already drifted:

  • No-files message: "Patch X has no applicable files; nothing to apply" in get.rs L1951, against "patch has no applicable files" in the engine.```
  • Blob failure: get prints its own "Error: Blob decode or write failed for patch" line and builds a different envelope (L1976-L1995).
  • Unchanged record: the uuid path re-applies a record that hasn't changed (L2064-L2068). The engine applies only added or updated records.
  • persist_blobs: the uuid path ignores DownloadParams.persist_blobs.

The engine already supports a pre-fetched patch: fetch_selected_patches takes a prefetched map, and the vendored arm of the uuid path already goes through download_patch_records_preflighted with it.

Proposed change

  • Build the one-element prefetched map from the PatchResponse that get <uuid> fetched, and call download_and_apply_patches_into, as the vendored arm does.
  • Delete save_patch_record and save_and_apply_patch.
  • If the re-apply of an unchanged record (#454) is still wanted, make it an engine rule for every caller, not a get-only branch.

Size

get.rs and possibly agent_download.rs. About −230 / +30 lines.

Acceptance criteria

  • get <uuid> human and --json output stay the same, except the no-files and blob-failure wording, which takes the engine's form.
  • The existing get uuid tests in get.rs mod tests and tests/get/ stay green, and they are updated only where they pinned the drifted wording.
  • --save-only, --dry-run and the nested-apply exit codes are unchanged.
Langage dominant
Rust
Étoiles
8
Forks
2
Merge moyen
18 h 47 min
PR mergées (30 j)
637

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de SocketDev/socket-patch

Toutes les issues de SocketDev/socket-patch

Issues similaires

Plus d'issues Rust

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.