Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Lanes are never pruned after their PR merges (76 lanes / ~128 GB locally)

Offen
#529 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
35/100
Issue-Typ
Feature
Klarheit
Größtenteils klar
Aktivitätsstatus
Aktiv
Tech-Stack
git, github, typescript

Rechercherichtung

Start with apps/host/src/manage.ts and apps/app/src/git.ts, then read packages/channel/src/lanes.ts and the lane CLI guidance in AGENTS.md. Trace how channel removal and PR state are handled, and check how git fetch --prune and lane prune report lanes they retain. Done when merged lanes are pruned by the host and retained lanes have a visible reason.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Summary

Lanes are never removed after their PR merges. On one dev machine, ace2 had built up 76 lanes taking about 128 GB, and 59 of them belonged to PRs that had already merged. The lane lifecycle (https://lane.lukeed.com/usage/) expects lane prune to remove landed lanes. In practice, nothing in Ace runs it, and with our merge setup it can't recognise most of our lanes as landed anyway.

What's happening

1. Nothing runs lane prune.

  • The only mention is in agent instructions: AGENTS.md:71 and AGENTS.md:109 say to run lane prune "once it merges".
  • The agent's turn ends at gh pr create. The merge happens later on GitHub, and nobody comes back afterwards.
  • remove() in apps/host/src/manage.ts:278 removes only the older worktrees kept in the channel directory, and only when a channel is deleted. Lanes created by lane new are deliberately left "for lane prune or lane rm". Channels that are archived or simply kept retain all their lanes.

2. lane prune didn't treat our merged lanes as landed.

  • Per AGENTS.md:71, prune removes a lane once its remote branch is gone or local main contains its work.
  • Until today githubnext/ace had delete_branch_on_merge: false, and AGENTS.md says to merge without --delete-branch, so remote branches stayed after merging. Example: fair-ember/canary-0-0-13 (#115, merged Oct 5) was still on origin.
  • PRs are squash-merged, so main never contains the lane's commits.
  • Lanes from before Ace adopted the lane CLI (in ~/.local/state/ace*/channels/*/lanes, created before about Oct 13) have no landing record from lane push, so prune reports landed outside lane.
  • As a result, lane ls showed 63 lanes as pushed and none as landed. lane prune --dry-run listed 6 skipped lanes and said nothing about the other 70, so they were invisible as well as kept.

Breakdown at the time:

Kind Count PR status
Lanes in the channel directory (pre-lane CLI) 70 57 merged, 2 closed, 11 never had a PR
lane new lanes, .lane/trees 6 2 closed, 4 never had a PR

Done so far

  • "Automatically delete head branches" is now on for githubnext/ace. Merges from now on should delete the remote branch, so git fetch --prune && lane prune ought to catch them. This hasn't been verified yet on a lane that merged after the change.
  • One-off local cleanup: I removed 51 merged lanes from the channel directory with git worktree remove. Each one was clean, and its HEAD equalled the merged PR's headRefOid.

Proposal

  • Have the host run git fetch --prune + lane prune itself.
    • On host start, or periodically.
    • When it sees a channel's PR become merged. apps/app/src/git.ts already tracks PR state.
    • In remove() when a channel is deleted, instead of leaving its lanes behind.
  • Surface lanes prune refuses. The landed outside lane and commits main does not have cases should appear somewhere visible, so they aren't left on disk indefinitely.
  • Retire the pre-lane-CLI path. After a one-time migration that drops merged lanes from the channel directory, the lanes loop in remove() and the recorded?.path fallback in packages/channel/src/lanes.ts can go.
  • Possibly upstream in lane: have lane prune --dry-run list every lane it keeps and why, not only some of them. A lane that is pushed with an existing remote branch is currently omitted silently.
Vorherrschende Sprache
TypeScript
Sterne
1
Forks
0
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Entwicklungsumgebung

  • Kein Dockerfile und keine Docker-Compose-Datei
  • Hat eine Pull-Request-Vorlage
  • Kein Beitragsleitfaden

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus githubnext/ace2

Alle Issues in githubnext/ace2

Ähnliche Issues

Weitere Issues zu TypeScript

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.