Skip to content

Remove McpAccess::legacy_mode consumption in the first release after 0.10.0 #1009

Closed

Description

@jarvis9443

The control plane stopped emitting the mcp_access "mode": "deny" tombstone when the compat floor moved to v0.10.0 (api7/AISIX-Cloud#1355). The data plane still consumes-and-ignores that key as McpAccess::legacy_mode.

It was deliberately kept for one release: documents written before the run-once reprojection re-stamps them still carry mode, so removing the reader in the same release would have made those in-flight rows fail to parse.

Due: the first release after 0.10.0 — whatever its number turns out to be. Do not read this as "0.11.0"; the next version may well be 1.0.0. The condition is "one release has shipped since 0.10.0", not a particular number.

What to do

  • Remove legacy_mode from McpAccess and the code that tolerates it.
  • Confirm no strict-schema entry still permits mode under mcp_access.
  • A key whose stored document still carries mode after this lands would have its row rejected — check whether any path can still produce one before removing.

Filed because this only existed in code comments and a PR description, so it would otherwise be carried silently into a release nobody planned it for.

Activity

  1. added
    release-debtDeferred compatibility work due at a specific future release — swept in aisix-release Phase 0
    on Aug 20, 2026
  2. changed the title [-]Remove McpAccess::legacy_mode consumption at 0.11.0[/-] [+]Remove McpAccess::legacy_mode consumption in the first release after 0.10.0[/+] on Aug 20, 2026
  3. jarvis9443 commented on Aug 20, 2026

    @jarvis9443
    ContributorAuthor

    This deadline is now enforced instead of remembered — #1011 put a marker on the field itself:

    COMPAT-SINCE: 0.10.0 #1009 — the control plane stopped emitting this tombstone at the
    0.10.0 compat floor, but documents written before the run-once reprojection still carry
    `mode`, so this generation reads and drops it rather than reporting partial compat on
    every row.
    

    crates/aisix-core/tests/compat_debt.rs runs in the required rust unit + coverage job and fails every PR once a stable tag with a higher MAJOR.MINOR than 0.10.0 exists — 0.11.0 or 1.0.0, whichever it turns out to be, which is the whole reason the marker names 0.10.0 rather than a prediction. Release candidates don't count as shipped.

    Two things the gate still can't do, so this issue stays the place for them: it fires only once that next release has already shipped (the aisix-release Phase 0 sweep is what catches it in the release it's due in), and it can't check the "confirm no path can still produce a mode key" step above — that judgement is still ours.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    release-debtDeferred compatibility work due at a specific future release — swept in aisix-release Phase 0

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions