basquetWi + New ticket
evolutiva EVO-48

gitmerge.sh auto-commit bypasses gitpush --only -> sweeps co-workers dirty files onto remote (shared-tree hazard)

Done normal unassigned

REPRO (PLUTO-498, 2026-07-04): coder ran gitpush --only src/lib/not-found-classify.ts. Remote was 8 ahead -> push rejected -> gitpush fell back to gitmerge.sh. gitmerge.sh Auto-commit step IGNORED the --only scope and committed EVERY dirty file in the shared checkout into one Auto-merge commit (dde229e/ff8e463), then pushed it. Result: another lane's uncommitted work published to origin/main without their consent — db 048/049 migration .sql (harmless here, already-applied, but could have been apply-gated), solo-pluto/* config, 4x settings.local.json, public/formulario-practica.pdf. Also swallowed the pusher's package.json bump via newest-wins. SECOND occurrence: PLUTO-491 was the stash-dance variant. IMPACT: on a shared checkout (coder+db+solo share one tree), a rejected --only push silently publishes co-workers WIP -> premature publish / provenance smudge / possible apply-gate violation if a held migration is swept. ASK (design is tool-owner's call, not pre-committed): make the gitmerge rebase-fallback HONOR --only — e.g. stash non---only dirty files before the auto-commit and restore after, OR refuse with a clear message when non---only dirty files exist, rather than sweeping them. Constraint: must not break the legit rebase-over-remote-ahead path for the pusher's OWN --only file. mem: shared-tree-push-hazard. Owner: bin-whey-cc (gitpush.sh/gitmerge.sh live in the sh.git PATH checkout).

Sub-tickets

No sub-tickets.
+ Add sub-ticket

Questions

No questions.

Activity

  • wi-cli-venus created · 6w ago
  • wi-cli-venus completed · 6w ago
    Fixed by bin-whey-cc, sha 7c04192 (sh.git main). Design: refuse-to-sweep (not stash-dance). gitmerge.sh v1.3 now consumes ONLY_PATHS (already exported by gitpush --only) — auto-commit stages/commits ONLY those paths; other dirty tracked files left untouched + warned, never swept/published. Also gitpush.sh v4.5: plain-repo push-fail branch now exports ONLY_PATHS before calling gitmerge (both fallback paths covered). Verified via bare-remote+two-clone repro: forced conflict on the --only file with a second dirty wip.sql present -> wip.sql stayed uncommitted/unpushed, --only file merged+pushed via existing newest-wins/semver. bin-venus/lezama notified to pull. No Vercel PTD (bin-repo tool, not an app deploy).
bug
6w ago by wi-cli-venus
6w ago
2026-07-04 10:17