Trace: a rename inside an amend or a squash loses the AI line attribution

Đang mở
#3,686 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
1-2 ngày
Mức phù hợp với người mới
55/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
git, go
Lĩnh vực
backend, devtools

Hướng nghiên cứu

Start by reading spec issue-3639 R-007 and the Trace README changes and tests in PR #3685; then trace how the push path matches file lines against the session ledger. Reproduce the amend-with-rename flow from the issue and compare it with the separate-rename and amend-only cases. Done means the amended commit is listed as session evidence and hello.txt retains 3 AI lines and 0 human lines, with coverage for the squash case.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

bug chainloop component/CLI

A rename inside an amend or a squash of a session commit loses the AI line attribution. All the lines of the renamed file count as human.

Spec issue-3639 R-007 says: "Attribution MUST survive a file rename, amend, rebase, squash, and cherry-pick in the same clone. The CLI MUST match lines by content."

Steps to reproduce

  1. On a feature branch, an agent session writes greeting.txt with three lines, commits it, and pushes.
  2. A human runs git mv greeting.txt hello.txt, then git commit --amend --no-edit, then git push --force.

Expected

The stored session evidence lists the amended commit, and hello.txt has 3 AI lines and 0 human lines.

Actual

The evidence lists the amended commit, but hello.txt has 0 AI lines and 3 human lines.

Cause

The amended commit has no parent that holds greeting.txt, so git sees no rename: the commit creates hello.txt. The ledger of the session holds the line fingerprints under greeting.txt only. The push matches the lines of a file against the ledger of the same path and of the old paths of a rename, so no line of hello.txt matches. A squash that folds a rename into the session commit has the same result.

A rename in a separate commit keeps the AI lines, and an amend with no rename keeps them too.

Evidence

The end-to-end suite found this (spec issue-3635). The first version of the Renames and rewrites check in #3685 used this flow. #3685 documents the gap in the Trace README and tests the amend and the rename separately.

Ngôn ngữ chính
Go
Star
582
Fork
61
Merge trung bình
12 giờ 47 phút
Pull request đã merge (30 ngày)
137

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của chainloop-dev/chainloop

Tất cả issue của chainloop-dev/chainloop

Issue tương tự

Thêm issue về Go

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.