09/07/2026
GENERATE MỜ HỒ, LOCK KHÔNG CHẶT. ĐÓ LÀ LÍ DO MERGE LUÔN BẤT NGỜ
Trong quy trình contract-first với Midi Coder, hai bước dễ bị coi là thủ tục nhưng thực sự quyết định chất lượng toàn bộ luồng làm việc là Generate Contract và Lock Contract.
Generate Contract biến brief thành mô tả có cấu trúc: phạm vi thay đổi, module liên quan, điều kiện chấp nhận, ràng buộc không được phá vỡ. Một contract tốt phải trả lời được: phần nào bị tác động, phần nào tuyệt đối không động, tiêu chí hoàn thành là gì, rủi ro nằm ở đâu.
Nếu generate quá mơ hồ, đội triển khai hiểu khác nhau. Review sau đó sẽ thành tranh cãi vì không ai cùng đọc một chuẩn.
Lock Contract là cơ chế giữ cho phạm vi không trôi. Khi contract đã khóa, mọi thay đổi vượt ra ngoài phải quay lại bước cập nhật brief hoặc tạo contract mới. Cơ chế này ngăn tình trạng tiện tay sửa thêm, đang làm luôn phần kế bên, thấy bug nhỏ vá luôn.
Những thay đổi ngoài luồng thường vô hại ở bề mặt nhưng làm mất traceability. Khi contract bị mở quá lâu hoặc bị chỉnh liên tục trong lúc triển khai, khả năng đối chiếu giữa yêu cầu, mã nguồn và kết quả review suy giảm nhanh.
Generate tạo ra cấu trúc. Lock bảo vệ cấu trúc đó khỏi bị xói mòn. Thiếu một trong hai, quy trình trượt khỏi contract-first và quay lại kiểu làm việc phụ thuộc trí nhớ, trao đổi miệng và chỉnh sửa khó kiểm soát.
Cách cắt version cũng ảnh hưởng trực tiếp. Một contract chỉ nên ôm một mục tiêu rõ ràng: thêm trường API, cập nhật UI, bổ sung test. Không gom tiện. Mỗi merge request bám một contract. Khi có phát sinh, tạo contract mới.
Midi Coder hoạt động tốt nhất khi con người ra quyết định ở đúng điểm khóa: xác nhận brief, xác nhận contract, duyệt ngoại lệ. Hệ thống gánh phần index, phân tích tác động, sinh IR và gợi ý patch.
Một quy trình tốt không làm giảm tốc độ. Nó giảm bất ngờ.