날짜 revision 있어도 맞는 mental model 은 feature detection, version sniffing 아님. Handshake 의 capabilities object 가 — 다른 쪽이 뭘 지원하는지 — source of truth. Revision 번호로 분기 ('if version >= 2025-11-25 then …') 는 fragile; 광고된 capability 로 분기 ('if 'sampling' in capabilities then …') 는 모든 revision 살아남음.
가장 자주 나오는 곳 — transitional feature. Async task 가 2025-11-25 revision 에 도착; long-running tool 호출하고 싶은 host 는 — async path 고르기 전에 — server 가 asyncTasks capability 광고하는지 확인. Async task 알지만 현재 deployment 에서 못 돌리는 server 는 — 광고 안 하면 됨; client 가 deployment 사정 모르고 적응.
같은 모양이 client capability 에도. Sampling 쓰고 싶은 server 는 — sampling request 보내기 전에 — host 가 sampling 광고했는지 MUST 확인. 없이 보내면 protocol 위반; host 가 connection drop 가능. Capability object 를 feature bitmap 처럼, version 번호를 audit trail 처럼 다뤄.