Skip to content

Replace specVersions list with introducedIn/removedIn range tagging #256

@pcarleton

Description

@pcarleton

Problem

Scenarios are tagged with an explicit list of every spec version they apply to:

specVersions = ['2025-06-18', '2025-11-25']

Two failure modes:

  1. Every release touches every scenario. When 2026-XX-XX ships, every carried-forward scenario needs its specVersions array extended. Easy to miss one; the spec-version test only catches scenarios with no versions, not scenarios missing the latest version.
  2. No way to express removal/tightening. feat: support "draft" as a first-class spec version target #255 makes --spec-version draft select latest ∪ draft-tagged, but there's no subtraction arm. A SEP that narrows an existing requirement (SEP-986 tightened tool-name format) can't mark the old scenario as "no longer valid in draft" — you'd have to delete it and lose coverage for the dated releases where it still applies.

Proposal

Replace specVersions: SpecVersion[] with a range:

introducedIn: DatedSpecVersion | 'draft'
removedIn?: DatedSpecVersion | 'draft'

matchesSpecVersion(scenario, target) becomes introducedIn <= target && (removedIn === undefined || target < removedIn). 'draft' sorts after all dated versions. The seam is already in place from #255.

Separately, pull 'extension' out of SpecVersion — it's a scenario category, not a point on the timeline (see TODO in specVersionToProtocolVersion). Probably becomes an orthogonal extension?: string field.

Scope

Mechanical migration across ~40 scenario declarations + matchesSpecVersion logic + the spec-version tests. No CLI surface change (--spec-version still takes the same values).

One scenario I'm thinking of in this category is the 2025-03 auth backcompat scenarios

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions