Skip to main content

mcp_trace_validator/checks/inventory/
draft_rows.rs

1// SPDX-License-Identifier: MIT
2// Copyright 2026 Tom F. (https://github.com/tomtom215)
3
4//! The `2026-07-28` half of the check inventory.
5//!
6//! Split from [`super`] when the combined list crossed the 500-line cap, at the
7//! seam that will keep holding: one revision's rows per file, concatenated into
8//! `ALL` at compile time. Empty without the `draft-2026-07-28` feature, which is
9//! what keeps a default build free of the revision entirely.
10
11use super::Check;
12#[cfg(feature = "draft-2026-07-28")]
13use crate::checks::draft;
14
15#[cfg(feature = "draft-2026-07-28")]
16macro_rules! check {
17    ($id:literal, $run:path) => {
18        Check { id: $id, run: $run }
19    };
20}
21
22/// The revision's rows, in stable order.
23#[cfg(feature = "draft-2026-07-28")]
24pub(super) const DRAFT: &[Check] = &[
25    check!(
26        "base.result-type-present",
27        draft::envelope::result_type_present
28    ),
29    check!(
30        "base.request-id-unique-in-flight",
31        draft::envelope::request_id_unique_in_flight
32    ),
33    check!(
34        "base.error-code-legacy-subrange",
35        draft::envelope::error_code_legacy_subrange
36    ),
37    check!(
38        "base.error-code-reserved-subrange",
39        draft::envelope::error_code_reserved_subrange
40    ),
41    check!(
42        "base.error-code-withdrawn",
43        draft::envelope::error_code_withdrawn
44    ),
45    check!(
46        "base.error-code-application-range",
47        draft::envelope::error_code_application_range
48    ),
49    check!(
50        "meta.required-request-fields",
51        draft::meta::required_request_fields
52    ),
53    check!(
54        "meta.missing-required-field-rejected",
55        draft::meta::missing_required_field_rejected
56    ),
57    check!(
58        "meta.missing-required-field-http-status",
59        draft::meta::missing_required_field_http_status
60    ),
61    check!(
62        "meta.missing-capability-error",
63        draft::meta::missing_capability_error
64    ),
65    check!(
66        "meta.missing-capability-http-status",
67        draft::meta::missing_capability_http_status
68    ),
69    check!(
70        "meta.no-undeclared-capability-reliance",
71        draft::meta::no_undeclared_capability_reliance
72    ),
73    check!(
74        "meta.subscription-id-present",
75        draft::meta::subscription_id_present
76    ),
77    check!(
78        "meta.trace-context-format",
79        draft::meta::trace_context_format
80    ),
81    check!(
82        "transport.protocol-version-header-present",
83        draft::transport::protocol_version_header_present
84    ),
85    check!(
86        "transport.protocol-version-header-matches-body",
87        draft::transport::protocol_version_header_matches_body
88    ),
89    check!(
90        "transport.request-metadata-headers",
91        draft::transport::request_metadata_headers
92    ),
93    check!(
94        "transport.client-no-responses",
95        draft::transport::client_no_responses
96    ),
97    check!(
98        "transport.no-independent-server-requests",
99        draft::transport::no_independent_server_requests
100    ),
101    check!(
102        "transport.accel-buffering-header",
103        draft::transport::accel_buffering_header
104    ),
105    check!(
106        "transport.no-messages-after-cancellation",
107        draft::transport::no_messages_after_cancellation
108    ),
109    check!(
110        "transport.version-mismatch-rejected",
111        draft::transport::version_mismatch_rejected
112    ),
113    check!(
114        "transport.invalid-param-header-rejected",
115        draft::transport::invalid_param_header_rejected
116    ),
117    check!(
118        "transport.header-mismatch-status",
119        draft::transport::header_mismatch_status
120    ),
121    check!(
122        "transport.header-body-match-validated",
123        draft::transport::header_body_match_validated
124    ),
125    check!(
126        "transport.unsupported-version-error",
127        draft::transport::unsupported_version_error
128    ),
129    check!(
130        "transport.unsupported-version-status",
131        draft::transport::unsupported_version_status
132    ),
133    check!(
134        "transport.unknown-method-404",
135        draft::transport::unknown_method_404
136    ),
137    check!(
138        "transport.header-value-encoding",
139        draft::transport::header_value_encoding
140    ),
141    check!(
142        "transport.sentinel-marker-case",
143        draft::transport::sentinel_marker_case
144    ),
145    check!(
146        "transport.sentinel-pattern-encoded",
147        draft::transport::sentinel_pattern_encoded
148    ),
149    check!(
150        "transport.x-mcp-header-mirrored",
151        draft::transport::x_mcp_header_mirrored
152    ),
153    check!(
154        "transport.x-mcp-header-name-valid",
155        draft::transport::x_mcp_header_name_valid
156    ),
157    check!("discover.implemented", draft::discovery::implemented),
158    check!(
159        "discover.dual-era-probe-first",
160        draft::discovery::dual_era_probe_first
161    ),
162    check!(
163        "versioning.retry-uses-supported-version",
164        draft::versioning::retry_uses_supported_version
165    ),
166    check!(
167        "versioning.extension-identifier-format",
168        draft::versioning::extension_identifier_format
169    ),
170    check!(
171        "versioning.initialize-error-names-versions",
172        draft::versioning::initialize_error_names_versions
173    ),
174    check!(
175        "transport.cancel-notification-references-request",
176        draft::transport::cancel_notification_references_request
177    ),
178    check!(
179        "transport.no-messages-after-cancel-notification",
180        draft::transport::no_messages_after_cancel_notification
181    ),
182    check!(
183        "mrtr.input-required-supported-methods",
184        draft::mrtr::input_required_supported_methods
185    ),
186    check!(
187        "mrtr.input-request-methods",
188        draft::mrtr::input_request_methods
189    ),
190    check!(
191        "mrtr.input-required-has-content",
192        draft::mrtr::input_required_has_content
193    ),
194    check!(
195        "mrtr.retry-carries-input-responses",
196        draft::mrtr::retry_carries_input_responses
197    ),
198    check!(
199        "mrtr.request-state-echoed",
200        draft::mrtr::request_state_echoed
201    ),
202    check!(
203        "mrtr.no-unsolicited-request-state",
204        draft::mrtr::no_unsolicited_request_state
205    ),
206    check!("mrtr.retry-id-differs", draft::mrtr::retry_id_differs),
207    check!(
208        "mrtr.request-state-scoped-to-retry",
209        draft::mrtr::request_state_scoped_to_retry
210    ),
211    check!(
212        "mrtr.missing-input-reasked",
213        draft::mrtr::missing_input_reasked
214    ),
215    check!(
216        "subscriptions.only-requested-notifications",
217        draft::subscriptions::only_requested_notifications
218    ),
219    check!(
220        "subscriptions.acknowledgment-first",
221        draft::subscriptions::acknowledgment_first
222    ),
223    check!(
224        "subscriptions.graceful-close-result-shape",
225        draft::subscriptions::graceful_close_result_shape
226    ),
227    check!(
228        "caching.hints-on-cacheable-results",
229        draft::caching::hints_on_cacheable_results
230    ),
231    check!("caching.ttl-non-negative", draft::caching::ttl_non_negative),
232    check!(
233        "caching.page-scope-consistent",
234        draft::caching::page_scope_consistent
235    ),
236    check!(
237        "capabilities.completions-declared",
238        draft::capabilities::completions_declared
239    ),
240    check!(
241        "capabilities.logging-declared",
242        draft::capabilities::logging_declared
243    ),
244    check!("logging.level-requested", draft::logging::level_requested),
245    check!(
246        "logging.not-on-subscription",
247        draft::logging::not_on_subscription
248    ),
249    check!(
250        "logging.invalid-level-rejected",
251        draft::logging::invalid_level_rejected
252    ),
253    check!(
254        "capabilities.tools-declared",
255        draft::capabilities::tools_declared
256    ),
257    check!(
258        "capabilities.resources-declared",
259        draft::capabilities::resources_declared
260    ),
261    check!(
262        "capabilities.prompts-declared",
263        draft::capabilities::prompts_declared
264    ),
265    check!(
266        "capabilities.tools-list-implemented",
267        draft::capabilities::tools_list_implemented
268    ),
269    check!(
270        "capabilities.resources-list-implemented",
271        draft::capabilities::resources_list_implemented
272    ),
273    check!(
274        "capabilities.prompts-list-implemented",
275        draft::capabilities::prompts_list_implemented
276    ),
277    check!(
278        "capabilities.embedded-resource-declared",
279        draft::capabilities::embedded_resource_declared
280    ),
281    check!(
282        "tools.deterministic-order",
283        draft::features::deterministic_order
284    ),
285    check!(
286        "tools.x-mcp-header-integer-range",
287        draft::features::x_mcp_header_integer_range
288    ),
289    check!(
290        "resources.read-contents-non-empty",
291        draft::features::read_contents_non_empty
292    ),
293];
294
295/// Nothing to register without the feature.
296#[cfg(not(feature = "draft-2026-07-28"))]
297pub(super) const DRAFT: &[Check] = &[];