Từ RFC đến ADR: Đạt được Quyết định và Giữ gìn Lý do
Một RFC thường liên quan đến việc đạt được thỏa thuận; một ADR ghi lại thỏa thuận khi đã đạt được — và lý do mà các ADR bị hỏng là vì cuộc tranh luận diễn ra trong các cuộc trò chuyện và bình luận trên pull-request trong khi bản ghi được viết sau đó, từ trí nhớ, bởi một người. Để thực hiện quy trình RFC-to-ADR sao cho bản ghi không bị ảnh hưởng bởi cuộc tranh luận: hãy nêu đề xuất như một tuyên bố gốc (tiêu đề của ADR tương lai); thêm bối cảnh dưới dạng các lập luận ủng hộ riêng biệt để mỗi lực lượng có thể bị thách thức một cách riêng lẻ; cung cấp cho mỗi tùy chọn đã xem xét một nút anh em riêng với các ưu và nhược điểm của nó — bao gồm cả những tùy chọn bị từ chối; thực hiện vòng bình luận RFC dưới dạng chuỗi (chuỗi Q&A để làm rõ, chuỗi Đánh giá cho các phản đối — mỗi chuỗi là một cuộc đối thoại bốn lượt giữa người đánh giá và tác giả tùy chọn, với N người đánh giá có nghĩa là N chuỗi song song; chuỗi Thỏa hiệp để hòa giải các chia rẽ, nơi một chuỗi hoàn thành ghi lại nỗ lực bất kể nó có giải quyết hay không); yêu cầu những người ra quyết định đánh giá các tùy chọn như bằng chứng về vị trí của phòng — việc đánh giá không phải là quyết định, một người cụ thể vẫn sẽ đưa ra quyết định; ghi lại các hậu quả đã chấp nhận như là con cái nhược điểm của tùy chọn đã chọn; và mô hình hóa sự thay thế bằng cách liên kết một quyết định sau đó với quyết định mà nó thay thế, giữ cho quyết định cũ vẫn có thể đọc được. Việc lấy mẫu từ các ADR markdown hiện có hoặc các biên bản có nhiều quyết định hoạt động thông qua việc trích xuất AI với nguồn gốc được đóng dấu. Giới hạn trung thực: điều này không thay thế các ADR được theo dõi trong kho (xuất và cam kết bản ghi); không có trường trạng thái ADR tích hợp sẵn, vì vậy đề xuất/chấp nhận/thay thế là một quy ước mà bạn duy trì; một chuỗi hoàn thành không có nghĩa là các bên đã đồng ý — điều này chính xác là điều làm cho việc không đồng ý và cam kết trở nên rõ ràng.
Một RFC thường liên quan đến việc đạt được thỏa thuận; một ADR ghi lại thỏa thuận khi đã đạt được. Các ADR bị hỏng vì việc đạt được thỏa thuận diễn ra trong cuộc trò chuyện và việc ghi chép diễn ra sau đó, từ trí nhớ. Chạy cả hai trong một cấu trúc:
- Đề xuất là một yêu cầu cơ bản; các lực bối cảnh là riêng biệt, có thể bị thách thức các lập luận ủng hộ; mỗi tùy chọn — bao gồm cả những tùy chọn bị từ chối — đều có nút riêng của nó.
- Vòng RFC là chuỗi: Hỏi & Đáp để làm rõ, Xem xét để phản đối, Thỏa hiệp để hòa giải — các cuộc đối thoại bốn lượt, N người đánh giá = N chuỗi song song
- Đánh giá không phải là quyết định: những người ra quyết định đánh giá như bằng chứng; một người được nêu tên gọi nó — và viết lý do, đặc biệt là chống lại không gian.
- ADR là cây: không có gì được ghi chép, vì vậy không có gì bị mất trong quá trình ghi chép — xuất khẩu đến kho nếu tổ chức của bạn yêu cầu điều đó
Quyết định mà không ai có thể tái tạo lại.
Người lãnh đạo công nghệ mới đặt ra một câu hỏi hợp lý: tại sao mọi dịch vụ lại giao tiếp với hệ thống thanh toán thông qua hàng đợi đó? Có một ADR — ADR-014, bốn câu, được viết cách đây mười một tháng. Ngữ cảnh: "chúng tôi cần tích hợp thanh toán đáng tin cậy." Quyết định: "sử dụng hàng đợi." Hệ quả: "một số độ trễ thêm vào." Về mặt kỹ thuật, đây là một bản ghi. Nó không trả lời được gì.
Bạn đã ở đó, vì vậy bạn biết ADR-014 không nói gì: cuộc tranh luận kéo dài ba tuần qua hai kênh Slack và một chuỗi PR căng thẳng; tùy chọn API đồng bộ đã thua vì một giới hạn tỷ lệ mà sau đó đã được nâng lên; sự phản đối của kỹ sư chính đã được trả lời bằng một bài kiểm tra mà không ai có thể tìm thấy bây giờ. Cuộc tranh luận đã diễn ra. Hồ sơ đã được viết lại sau đó, từ trí nhớ, bởi một người, vào một ngày thứ Sáu.
Đây là chế độ thất bại gần như phổ quát đã được tài liệu hóa của một thực hành thực sự tốt. Hướng dẫn quy định của AWS và tài liệu Well-Architected của Microsoft đều khuyến nghị sử dụng ADR — và cả hai đều lưu ý về nỗi đau: việc giữ cho chúng luôn cập nhật tốn thời gian, và việc quản lý chúng trở nên phức tạp khi các nhóm và lựa chọn gia tăng. Nguyên nhân gốc rễ là cấu trúc: cuộc tranh luận và hồ sơ sống ở những nơi khác nhau, vì vậy hồ sơ luôn là một bản sao không đầy đủ. Giải pháp là làm cho chúng trở thành cùng một nơi. Thực hành này không chỉ dành riêng cho kỹ thuật, hoặc thậm chí là riêng cho ADR. Google yêu cầu một tài liệu thiết kế — vấn đề, phương pháp đề xuất, các lựa chọn đã xem xét, các đánh đổi — được viết và xem xét trước khi công việc kỹ thuật quan trọng bắt đầu, một thực hành được nêu trong Kỹ thuật Phần mềm tại Google của công ty. Nó là cùng một kỷ luật như một ADR, được áp dụng sớm hơn một bước: ADR ghi lại lựa chọn mà tài liệu thiết kế đã lập luận để đạt được. Cả hai đều thất bại theo cùng một cách vì cùng một lý do, và cả hai đều được khắc phục bằng cùng một động thái — giữ cuộc tranh luận ở nơi hồ sơ tồn tại, thay vì sao chép một cái vào cái khác sau đó. Đọc từng bước dưới đây như bao gồm cả hai tài liệu.
Tại sao ADR lại hỏng?
Một câu từ tài liệu của cộng đồng ADR mang theo toàn bộ chẩn đoán: một RFC thường liên quan đến việc đạt được thỏa thuận; một ADR ghi lại thỏa thuận khi đã đạt được. Hai hiện vật, hai khoảnh khắc — và mọi thứ giữa chúng đều bị rò rỉ. Những lựa chọn mà "rõ ràng" là sai không được ghi lại (cho đến khi chúng không còn rõ ràng). Sự phản đối đã hình thành thiết kế cuối cùng chỉ tồn tại như một bình luận PR trên một chủ đề đã đóng. Phần ngữ cảnh được viết cuối cùng, tệ nhất, bởi bất kỳ ai thua trong trò chơi không phải là nó. Các cuộc họp lẽ ra nên đưa ra quyết định lại chỉ sản xuất tóm tắt thay thế, và lý do khiến một quyết định bền vững — điều mà toàn bộ chuỗi chất lượng quyết định phụ thuộc vào — chính là điều mà việc phiên âm bỏ qua.
Những gì bạn cần
Một cuộc thảo luận Argumentree cho mỗi RFC. Nếu bạn có một tập hợp các ADR markdown hiện có hoặc biên bản cuộc họp nặng về quyết định, hãy tải lên — việc trích xuất AI sẽ biến nó thành các lập luận pro/con có cấu trúc với các đoạn nguồn kèm theo, được đóng dấu là đã trích xuất để các tuyên bố nhập khẩu không bao giờ bị nhầm lẫn với các tuyên bố đang hoạt động (cách thức trích xuất hoạt động).
Bước 1–3: Đề xuất, bối cảnh, các tùy chọn
- 1Trình bày đề xuất như là tuyên bố gốc — quyết định được đề xuất, không phải là câu hỏi: "Chúng tôi sẽ chuyển tất cả các ghi chép thanh toán qua một hàng đợi bền vững." Câu này là tiêu đề của ADR trong tương lai. Điểm kiểm tra: gốc tồn tại, một câu, do người đề xuất viết.
- 2Bối cảnh như các lập luận pro tách biệt. Mỗi lực lượng khiến quyết định trở nên cần thiết — yêu cầu độ tin cậy, giới hạn tỷ lệ hệ thống thanh toán, nghĩa vụ kiểm toán — là một lập luận riêng biệt dưới gốc. Một đoạn "Bối cảnh" đơn nhất không thể bị thách thức; ba tuyên bố bối cảnh tách biệt có thể được đặt câu hỏi, xác nhận hoặc bác bỏ từng cái một. Điểm kiểm tra: ≥2 lập luận bối cảnh, mỗi lập luận là một lực lượng.
- 3Mỗi tùy chọn đều có một nút riêng. Hàng đợi, API đồng bộ, công việc theo lô — các đối số anh em, mỗi cái có những ưu và nhược điểm riêng. Ưu/nhược điểm là tương đối so với cha mẹ, vì vậy những nhược điểm của một tùy chọn gắn liền với tùy chọn đó, không phải với quyết định. Bao gồm cả những tùy chọn mà bạn dự kiến sẽ từ chối: đối tượng anh em bị từ chối chính là câu trả lời cho câu hỏi "tại sao chúng ta không chỉ…". Điểm kiểm tra: mỗi tùy chọn mà người đọc có thể hỏi đều tồn tại.
Bước 4–6: Vòng RFC để lại một bản ghi
Bây giờ là vòng đánh giá — thường là phần diễn ra rải rác qua trò chuyện, bình luận và hành lang. Ở đây, nó diễn ra dưới dạng ba loại trao đổi có cấu trúc, mỗi loại là một cuộc đối thoại bốn lượt giữa người đánh giá và tác giả của tùy chọn:
Chuỗi Hỏi & Đáp — làm rõ
"Các khách hàng đồng bộ hiện có sẽ xảy ra điều gì?" Tác giả của tùy chọn trả lời, người đánh giá tiếp tục, tác giả trả lời lại — hoàn tất. Không tùy chọn nào nên mang theo một câu hỏi chưa được trả lời vào quyết định.
Chuỗi đánh giá — đối tượng
Một người đánh giá đánh giá một lựa chọn là không hợp lý; tác giả phản hồi; theo dõi; phản hồi. N người đánh giá = N chuỗi song song trên cùng một lựa chọn — mỗi phản đối là một trao đổi có thể quy cho riêng nó, không phải là một bình luận bị mất trong một chủ đề chung.
Chuỗi thỏa hiệp — hòa giải
Hai trại chia rẽ? Một bên đề xuất phương án trung gian cho tác giả bên kia. Nếu nó được giải quyết, bạn có một nút tùy chọn mới. Nếu không, chuỗi hoàn thành là bằng chứng rằng nó đã được thử — điều này cũng có giá trị gần như vậy.
Hoàn thành ≠ đồng ý
Một chuỗi đạt hoàn thành có nghĩa là cuộc trao đổi đã diễn ra — câu hỏi được đặt ra và trả lời hai lần — không phải là các bên đã đồng ý. Hãy giữ sự phân biệt đó; nó sắp trở nên quan trọng.
Bước 7: Quyết định — và đánh giá không phải là gì
Các nhà ra quyết định đánh giá các tùy chọn: mỗi tùy chọn được gán một mức đánh giá. Sự phân phối là bằng chứng thực sự — nơi mà phòng họp đã đứng, theo hồ sơ, trước cuộc gọi. Nhưng mức đánh giá không phải là quyết định. Một con người cụ thể vẫn sẽ quyết định, và nếu cuộc gọi đi ngược lại với sự phân phối, nút quyết định là nơi điều đó được giải thích. (Ai là con người cụ thể đó, và cách gán vai trò trước cuộc tranh luận thay vì sau, là một lĩnh vực riêng — xem hướng dẫn về quyền quyết định.)
Câu hỏi cho đội của bạn
Ai đã quyết định lựa chọn kiến trúc cuối cùng của bạn — và bạn có thể chứng minh điều đó không? Không phải là ai đã có mặt trong cuộc họp: ai là người sở hữu quyết định đó, và lý do của họ được viết ở đâu?
Bước 8–9: ADR bạn không cần phải viết
Đây là phần thưởng. Hồ sơ không phải là một tài liệu bạn viết sau đó — nó là nút của tùy chọn đã chọn cộng với mọi thứ đã được gắn liền với nó: các lập luận ngữ cảnh (Context), các anh chị em bị từ chối (Options Considered), các chuỗi đã hoàn thành (cuộc thảo luận, với các tác giả), các đánh giá (tình hình của phòng), và lập luận quyết định với lý do của nó (Decision). Không có gì được ghi chép lại, vì vậy không có gì bị mất trong quá trình ghi chép.
- 1Ghi lại những hậu quả mà bạn chấp nhận. Những nhược điểm đã biết — độ trễ thêm, gánh nặng vận hành của hàng đợi — tiếp tục tồn tại như những đứa con của lựa chọn đã chọn, được công nhận bởi người quyết định. Việc ghi chúng lại là điều làm cho đó trở thành một quyết định chứ không phải chỉ là một sở thích. Điểm kiểm tra: ≥1 hậu quả đã chấp nhận được ghi lại.
- 2Xuất nếu tổ chức của bạn yêu cầu các ADR được theo dõi bởi kho lưu trữ. Nhiều tổ chức đúng là như vậy — ADR markdown bên cạnh mã vẫn là tài liệu tuân thủ. Viết tóm tắt bốn phần từ cây (năm phút, không phải thứ Sáu), liên kết trở lại cuộc thảo luận để có cuộc tranh luận đầy đủ. Điểm kiểm tra: ADR của kho lưu trữ trích dẫn cây; cây giữ lý do.
Không đồng ý nhưng vẫn cam kết, trên hồ sơ
Mô hình mà Amazon đã làm nổi tiếng — không đồng ý và cam kết — có một vấn đề về tính rõ ràng: làm thế nào để ai đó biết rằng sự bất đồng đó là có thật, đã được lắng nghe và trả lời, chứ không phải bị áp đảo? Cơ chế chuỗi trả lời cho câu hỏi đó. Một chuỗi Đánh giá đã trải qua đủ bốn lượt và hoàn thành mà không có sự đồng ý chính là biên lai: sự phản đối đã được đưa ra, trả lời, nhấn mạnh, và lại được trả lời, được ghi lại, trước khi người phản đối cam kết. Người phản đối được ghi nhận là đã được lắng nghe — điều này làm cho việc cam kết sau đó trở nên hợp lý chứ không chỉ đơn thuần là tuân theo.
Đừng đọc kết quả hoàn thành như là sự đồng thuận.
Hoàn thành có nghĩa là giao dịch đã kết thúc, không phải là ai đó đã thay đổi ý kiến. Nếu bạn báo cáo việc hoàn thành chuỗi như một sự đồng ý, bạn sẽ tạo ra sự đồng thuận giả và làm mất niềm tin mà cơ chế này tồn tại để xây dựng. Đọc một cách trung thực: đã tham khảo, đã trả lời, vẫn phản đối, vẫn cam kết — tất cả bốn sự thật đều rõ ràng.
Bước 10: Thay thế mà không xóa
Quyết định tuổi. Khi giới hạn tỷ lệ mà đã loại bỏ tùy chọn đồng bộ được nâng lên, bước đi đúng đắn là một quyết định mới tham chiếu đến quyết định mà nó thay thế — một lập luận mới liên kết với nút của ADR-014, nêu rõ điều gì đã thay đổi. Quyết định cũ vẫn có thể đọc được; lý do của nó chính là lý do mà quyết định mới biết được điều gì đang bị lật ngược.
Một khoảng trống cần quản lý một cách rõ ràng: không có trường trạng thái ADR tích hợp sẵn. Đề xuất / chấp nhận / thay thế không phải là trạng thái hàng đầu trong một lập luận — việc thay thế được mô hình hóa bằng cách liên kết, và quy ước là do bạn duy trì. Nêu rõ điều này trong thỏa thuận làm việc của nhóm bạn thay vì giả định rằng sản phẩm sẽ thực thi điều đó.
Giới hạn trung thực
- ✗Điều này không thay thế các ADR trong kho của bạn nếu tổ chức của bạn yêu cầu chúng được kiểm soát phiên bên cạnh mã. Xuất và cam kết tóm tắt; sử dụng cây cho phần mà markdown kém — cuộc tranh luận.
- ✗Không có trường trạng thái ADR. Đề xuất/chấp nhận/thay thế là một quy ước liên kết mà bạn duy trì, không phải là điều mà sản phẩm thực thi.
- ✗Một chuỗi là bốn vòng. Sự bất đồng kiến trúc sâu sắc sẽ cần một cuộc gọi; chuỗi là bản ghi của những gì đã được thử nghiệm trước đó.
- ✗Đánh giá là một giá trị được gán nhãn đơn, không phải là điểm số đa tiêu chí có trọng số.
- ✗Nó không khiến ai viết bối cảnh tốt. Cấu trúc làm giảm chi phí cho một bản ghi tốt; nó không cung cấp sự phán xét.
Bài học thực hành
- ✓Một RFC, một cuộc thảo luận. Chống lại cây mega bao trùm toàn bộ kiến trúc của quý — các liên kết thay thế kết nối các quyết định tốt hơn là việc lồng ghép.
- ✓Hạt giống từ những gì tồn tại. Một bản sao chép nặng nề quyết định hoặc thư mục ADR cũ của bạn, được trích xuất, mang lại cho cuộc tranh luận một khởi đầu thuận lợi — được gán nhãn là nhập khẩu, vì vậy các lập luận trực tiếp vẫn có thể phân biệt được.
- ✓Đặt tên của các nhà phê bình lên chuỗi của họ và để chúng ở đó. Sự ghi nhận là trách nhiệm; những phản đối kiến trúc ẩn danh sẽ trở thành truyền thuyết.
- ✓Phần hậu quả là của người quyết định, không phải của ai khác. Những nhược điểm đã được chấp nhận bởi người đã chấp nhận chúng có trọng lượng khác với những cảnh báo của người đánh giá.
ADR-014, phiên bản trả lời
Quay lại câu hỏi của người dẫn dắt công nghệ mới. Trong phiên bản được xây dựng lại, ADR-014 là một nút: quyết định hàng đợi với lý do của nó, ba lực lượng ngữ cảnh (một hiện đã lỗi thời — rõ ràng), một đồng nghiệp API đồng bộ bị từ chối mà tên gọi của nó chỉ ra giới hạn tỷ lệ cũ, bốn chuỗi Đánh giá đã hoàn thành bao gồm cả của kỹ sư chính, và tiêu chuẩn được đính kèm như bằng chứng. Người dẫn dắt công nghệ đọc trong mười phút, thấy giới hạn tỷ lệ đã thay đổi, và mở một đề xuất thay thế liên kết với nút cũ. Không ai khai thác Slack. Đó là toàn bộ lời hứa: các chuỗi đạt được thỏa thuận, cây ghi lại điều đó — và bản ghi trả lời những câu hỏi mà bạn không biết nó sẽ được hỏi.
Nguồn & tài liệu tham khảo thêm
- Nygard, M. (2011). Ghi lại các quyết định kiến trúc. Blog Cognitect.Bài tiểu luận đã phổ biến ADRs: bối cảnh, quyết định, hậu quả, giữ đúng với quy định.
- Hướng dẫn chỉ dẫn AWS — Hồ sơ quyết định kiến trúc.Khung RFC-vs-ADR và những vấn đề bảo trì đã được ghi chép mà hướng dẫn này tồn tại để khắc phục.
- Microsoft Azure Well-Architected Framework — Hồ sơ quyết định kiến trúc.Thực hành ADR trong bối cảnh đánh giá Well-Architected.
- Tổ chức ADR trên GitHub (adr.github.io).Mẫu, công cụ và các quy ước tích lũy của cộng đồng — bao gồm thực hành trường trạng thái mà hướng dẫn này mô phỏng bằng cách liên kết.
Câu hỏi thường gặp
Sự khác biệt giữa RFC và ADR là gì?
Một RFC (yêu cầu bình luận) là quá trình đạt được sự đồng thuận: một đề xuất được phát tán, các lựa chọn được tranh luận, các phản đối được nêu ra và trả lời. Một ADR (bản ghi quyết định kiến trúc) ghi lại sự đồng thuận khi đã đạt được: bối cảnh, các lựa chọn đã xem xét, quyết định, hậu quả, trạng thái. Chế độ thất bại của việc chạy chúng như những tài liệu riêng biệt là mọi thứ giữa chúng đều bị rò rỉ — cuộc tranh luận diễn ra trong các cuộc trò chuyện và bình luận PR trong khi bản ghi được viết sau đó từ trí nhớ. Việc chạy RFC như một cây lập luận có cấu trúc khiến ADR tách ra khỏi chính cuộc tranh luận: không có gì được ghi chép lại, vì vậy không có gì bị mất mát trong quá trình ghi chép.
Tại sao ADR lại trở nên lỗi thời hoặc ngừng được viết?
Bởi vì việc viết chúng là một công việc phiên âm. Lý do thực sự xảy ra trong các chủ đề Slack, các bình luận xem xét và các cuộc họp; sau đó một người sẽ tái tạo một phần Ngữ cảnh từ trí nhớ, thường là ngắn gọn và cuối cùng. Hướng dẫn của AWS và Microsoft ghi nhận nỗi đau: ADR mất thời gian để viết và cập nhật, và việc quản lý trở nên phức tạp khi các quyết định gia tăng. Các đội không ngừng tin vào ADR — họ ngừng trả thuế phiên âm. Việc làm cho cuộc tranh luận và hồ sơ có cùng một cấu trúc sẽ loại bỏ thuế.
Làm thế nào để bạn tiến hành một vòng xem xét RFC với một bản ghi?
Ba bước đi có cấu trúc, mỗi bước là một cuộc đối thoại bốn lượt với tác giả của tùy chọn. Chuỗi hỏi đáp để làm rõ: câu hỏi, câu trả lời, theo dõi, câu trả lời. Chuỗi xem xét cho các phản đối: đánh giá, phản hồi, theo dõi, phản hồi — với N người đánh giá mở N chuỗi song song trên cùng một tùy chọn thay vì một chủ đề chung, để mọi phản đối đều có thể quy trách nhiệm và được trả lời. Chuỗi thỏa hiệp cho các sự chia rẽ: một bên đề xuất vị trí trung gian cho bên kia, và dù có giải quyết hay không, chuỗi hoàn thành ghi nhận rằng nó đã được thử nghiệm. Điểm kiểm tra trước khi quyết định: không có tùy chọn nào không có câu hỏi chưa được trả lời, và mọi phản đối có nội dung đều tồn tại dưới dạng chuỗi hoàn thành.
Cách 'không đồng ý và cam kết' hoạt động với các bản ghi quyết định như thế nào?
Cơ chế chuỗi làm cho nó có thể đọc được. Một chuỗi đánh giá chạy qua toàn bộ quá trình — phản đối, phản hồi, theo dõi, phản hồi — và hoàn thành mà không có sự đồng ý là biên nhận cho thấy sự bất đồng là có thật, đã được lắng nghe và trả lời trước khi người bất đồng cam kết. Quan trọng là, hoàn thành không có nghĩa là đồng ý: nó có nghĩa là sự trao đổi đã kết thúc. Việc báo cáo hoàn thành như sự đồng thuận tạo ra sự đồng ý giả tạo và phá hủy giá trị của cơ chế. Hồ sơ trung thực cho thấy bốn sự thật cùng một lúc: đã tham khảo, đã trả lời, vẫn phản đối, nhưng vẫn cam kết — điều này chính là lý do khiến việc cam kết sau sự bất đồng trở nên hợp lý.
Có nên thay thế hồ sơ quyết định bằng ADR trong kho mã không?
Không — và hướng dẫn này nói rõ điều đó. Nếu tổ chức của bạn yêu cầu các ADR được kiểm soát phiên bản bên cạnh mã (nhiều tổ chức làm như vậy, đúng, để tuân thủ và truy cập ngoại tuyến), hãy giữ chúng: viết tóm tắt markdown bốn phần từ cây trong năm phút và liên kết lại với cuộc thảo luận. Sự phân chia công việc là rõ ràng: ADR trong repo là tài liệu tuân thủ bền vững; cây giữ những gì markdown không làm tốt — cuộc tranh luận trực tiếp, các tùy chọn bị từ chối cùng với lý do của chúng, các phản đối và câu trả lời của chúng, và các đánh giá.
Làm thế nào để đánh dấu một ADR là đã bị thay thế?
Theo quy ước, không phải theo một lĩnh vực — và cần phải thành thật rằng không có trạng thái đề xuất/chấp nhận/thay thế nào được tích hợp sẵn cho một lập luận. Mô hình thay thế bằng cách tạo ra quyết định mới như một lập luận riêng liên kết với lập luận mà nó thay thế, nêu rõ những gì đã thay đổi (giới hạn tỷ lệ được nâng lên, yêu cầu mới). Quyết định cũ vẫn giữ được tính khả đọc — việc xóa nó sẽ phá hủy chính lý do mà quyết định mới cần tham chiếu. Nêu rõ quy ước trong thỏa thuận làm việc của nhóm bạn để nó được duy trì một cách có chủ đích.
Ngừng ghi chép các quyết định. Bắt đầu lưu giữ chúng.
Chạy RFC tiếp theo của bạn như một cây: các tùy chọn với lý do của chúng, các phản đối dưới dạng chuỗi đã được trả lời, và một ADR tự viết.
Bắt đầu dùng thử miễn phí 14 ngày