test(e2e): spec-version lifecycle infrastructure for the 2026-07-28 release (#2226)

This commit is contained in:
Felix Weinberger 2026-06-02 12:26:25 +01:00 • committed by GitHub
commit 600ba75f34
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -5,8 +5,16 @@
export const ALL_TRANSPORTS = ['inMemory', 'stdio', 'streamableHttp', 'streamableHttpStateless', 'sse'] as const;
export type Transport = (typeof ALL_TRANSPORTS)[number];
export const ALL_SPEC_VERSIONS = ['2025-11-25'] as const;
export type SpecVersion = (typeof ALL_SPEC_VERSIONS)[number];
/**
* Every spec version the manifest may reference — used for typing
* `addedInSpecVersion` / `removedInSpecVersion` bounds and knownFailure
* scoping. Includes versions that are not yet part of the active matrix.
*/
export const KNOWN_SPEC_VERSIONS = ['2025-11-25', '2026-07-28'] as const;
export type SpecVersion = (typeof KNOWN_SPEC_VERSIONS)[number];
/** The spec versions cells are registered for (the active matrix axis). */
export const ALL_SPEC_VERSIONS = ['2025-11-25'] as const satisfies readonly SpecVersion[];
/**
* Arguments every test body receives. Expand with new matrix axes here so
@ -31,12 +39,21 @@ export interface Requirement {
/** Free-form rationale for how the entry is set up (e.g. why certain transports are excluded). */
note?: string;
/** First / last spec versions a requirement applies to; changed behaviors are sibling entries linked via `supersedes`. */
/** First / last spec versions a requirement applies to; changed behaviors are sibling entries linked via `supersedes`/`supersededBy`. */
addedInSpecVersion?: SpecVersion;
removedInSpecVersion?: SpecVersion;
/** Requirement id this entry replaces (for behaviors changed by a spec release). */
supersedes?: string;
/**
* Requirement ids this (new) entry replaces. The structural link from a superseding entry to the
* retired entries it covers: each listed id's `supersededBy` points back at this entry. Semantic
* context about how/why the behavior changed belongs in `note`, not here.
*/
supersedes?: readonly string[];
/**
* Requirement id of the entry that replaces this (retired) one. The structural link from a retired
* entry to its successor: that entry's `supersedes` array includes this id. Semantic context about
* how/why the behavior changed belongs in `note`, not here.
*/
supersededBy?: string;
knownFailures?: readonly KnownFailure[];
deferred?: string;