Nó bắt đầu với một cảnh báo mà lẽ ra không nên quan trọng.
Một người giám sát đã đánh dấu một sự không khớp giữa trạng thái dự kiến và trạng thái quan sát được trên Fabric Foundation. Không có gì nghiêm trọng. Chỉ là một sự sai lệch nhỏ trong một quy trình xác minh liên quan đến $ROBO transfers.
Logic giao thức nói rằng mọi thứ đều ổn.
Hệ thống giám sát nói rằng nó không phải vậy.
Lúc đầu, chúng tôi đã tin tưởng vào giao thức.
Các điều kiện hợp đồng đã được thỏa mãn. Chữ ký hợp lệ. Các chuyển đổi trạng thái chính xác. Từ góc độ thực thi nghiêm ngặt, không có gì thất bại.
Vì vậy, chúng tôi đã phớt lờ cảnh báo.
Sau đó, mẫu giống như vậy lại xuất hiện.
Và một lần nữa.
Không giống hệt nhau, nhưng đủ tương tự. Những sự không nhất quán nhỏ. Những độ trễ nhẹ. Những sự đảo ngược thỉnh thoảng tự sửa chữa vài phút sau đó.
Một cách riêng lẻ, chúng trông có vẻ vô hại.
Cùng nhau, họ đã không.
Kỳ vọng là giao thức xác định tính đúng đắn.
Giám sát chỉ là quan sát. Một lớp thụ động. Hữu ích cho khả năng hiển thị, nhưng không có thẩm quyền.
Sự tách biệt đó không giữ vững.
Những gì chúng tôi thấy trong sản xuất là khác biệt.
Giao thức sẽ chấp nhận một chuyển đổi trạng thái, nhưng các hệ thống hạ nguồn—các chỉ mục, các trình chuyển tiếp, thậm chí các dịch vụ nội bộ—sẽ diễn giải trạng thái đó khác nhau tùy thuộc vào thời gian.
Một số thành phần đã thấy trạng thái mới ngay lập tức.
Những người khác đã bị chậm lại.
Một vài người đã không đồng ý trong thời gian ngắn.
Vì vậy, trong khi giao thức nói "đã xong", thì hệ thống như một tổng thể vẫn chưa được đồng bộ.
Khoảng cách đó bắt đầu gây ra vấn đề.
Không phải là sự cố theo nghĩa nghiêm ngặt. Nhưng là những sự không nhất quán ảnh hưởng đến hành vi. Các lần thử lại bị kích hoạt không cần thiết. Các công việc bị đình trệ chờ đợi xác nhận mà về mặt kỹ thuật đã tồn tại.
Vì vậy, chúng tôi đã thêm các kiểm tra.
Không trong giao thức.
Xung quanh nó.
Các quy tắc giám sát trở nên nghiêm ngặt hơn. Nếu một chuyển đổi trạng thái không được lan truyền trong một khoảng thời gian nhất định, nó sẽ bị đánh dấu. Nếu nhiều quan sát viên không đồng ý, chúng tôi tạm dừng các quy trình phụ thuộc.
Những điều này không phải là quy tắc giao thức.
Nhưng họ bắt đầu ảnh hưởng đến việc thực thi.
Sau đó, đã có các phản hồi tự động.
Các công việc quan sát không chỉ cảnh báo nữa. Họ đã hành động. Kích hoạt lại các nhiệm vụ. Ép các bước đồng bộ lại. Hoãn các bước hạ nguồn cho đến khi các tín hiệu được căn chỉnh.
Chúng tôi đã nói với chính mình rằng đây là tạm thời.
Nó không phải vậy.
Theo thời gian, nhiều logic đã chuyển vào giám sát.
Ngưỡng sức khỏe.
Cửa sổ lan truyền.
Các kiểm tra tính nhất quán giữa các nút.
Giao thức vẫn thực thi các giao dịch.
Nhưng giám sát đã quyết định khi những giao dịch đó là "an toàn" để xây dựng.
Sự phân biệt đó trở nên quan trọng.
Sau đó, chúng tôi đã thêm các độ trễ bảo vệ.
Ngay cả sau khi xác minh thành công, chúng tôi sẽ chờ. Không phải vì giao thức yêu cầu, mà vì dữ liệu giám sát gợi ý rằng hệ thống chưa hoàn toàn hội tụ.
Vì vậy, chúng tôi đã đợi.
Vài giây. Đôi khi lâu hơn.
Đủ cho các quan sát viên theo kịp.
Đủ để cảnh báo giữ im lặng.
Sau đó làm mới các đường ống.
Trước khi hành động dựa trên trạng thái "đã xác nhận", chúng tôi đã yêu cầu lại nhiều nguồn. So sánh phản hồi. Tìm kiếm sự đồng thuận, không chỉ tính hợp lệ.
Một lần nữa, không phải là một phần của thiết kế ban đầu.
Nhưng cần thiết.
Và cuối cùng, các kiểm tra thủ công.
Khi các tín hiệu giám sát mâu thuẫn hoặc vẫn ồn ào quá lâu, các kỹ sư đã can thiệp. Không phải để sửa chữa giao thức, mà để diễn giải hệ thống.
Để quyết định xem có điều gì đó thực sự sai hoặc chỉ tạm thời không nhất quán.
Tại thời điểm đó, thật khó để bỏ qua những gì đã xảy ra.
Giám sát không còn thụ động nữa.
Nó đang xác định hành vi.
Giao thức đã nói điều gì có thể xảy ra.
Giám sát quyết định những gì nên xảy ra tiếp theo.
Lặng lẽ, không có sự công nhận chính thức, nó trở thành lớp phối hợp.
Không phải vì chúng tôi thiết kế nó theo cách đó.
Bởi vì chúng tôi cần một cái gì đó để xử lý sự không chắc chắn mà giao thức không nắm bắt.
Nhìn lại, Fabric Foundation không chỉ thực thi các quy tắc xung quanh $ROBO.
Nó đang quản lý sự bất đồng.
Giữa các nút.
Giữa các quan sát viên.
Giữa những khoảnh khắc trong thời gian.
Giao thức cho chúng tôi một bức ảnh chụp.
Giám sát cho chúng tôi biết liệu bức ảnh chụp đó có thể được tin tưởng hay không.
Đó là một trách nhiệm khác.
Và một cái nặng hơn.
Bởi vì bây giờ tính đúng đắn không chỉ liên quan đến các chuyển đổi trạng thái hợp lệ.
Nó liên quan đến khi hệ thống đồng ý rằng chúng hợp lệ.
Chúng tôi vẫn mô tả hệ thống bằng các điều khoản đảm bảo giao thức.
Thực thi xác định. Các quy tắc rõ ràng. Kết quả xác định.
Nhưng trên thực tế, chúng tôi không tiến lên chỉ dựa vào giao thức.
Chúng tôi chờ đợi giám sát ổn định.
Điều đó có nghĩa là hệ thống thực không chỉ thực thi các quy tắc.
Nó đang chờ đợi sự tự tin.
Và điều đó không thoải mái.
Bởi vì sự tự tin không phải là điều mà giao thức xác định.
Đó là điều mà chúng tôi suy ra, vá lại, và từ từ xây dựng xung quanh các cạnh.
Cho đến khi nó trở thành điều mà chúng tôi tin tưởng hơn cả giao thức.

