Repository navigation
Research: the alias layer as it actually is, plus a post published today arguing spotlight-spec#20 - #9
Merged
Conversation
Aliases are the format's answer to the JSONPath criticism, and they are barely usable — not because the idea is wrong, but because of where they are scoped. Adds two things, both read from @stoplight/spectral-core 1.23.1 as vendored at v6.16.2 rather than from memory: - research/aliases.md — the evidence, citing files for every claim, and an explicit list of four things the read could not settle. - A post for 2026-09-11 — the argument, pointing at spotlight-spec#20. The finding that matters: aliases do not cross `extends`, deliberately. The test is named `should refuse to resolve externally defined aliases`. An alias is therefore private to the file declaring it, which is why the JSONPath criticism survives a feature built to answer it — and the refusal also buys real collision-freedom, so #20 inherits that problem rather than dodging it. None of this is documented outside a test name. Also: six aliases ship, all in `oas`; AsyncAPI and Arazzo define none, against a standing docs promise otherwise. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Re-dates the post from 2026-09-11 to 2026-08-17 so it goes live on merge instead of waiting three weeks. The three later posts stay queued. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Contributor
Author
|
Re-dated the post from 2026-09-11 to 2026-08-17 — it now publishes on merge rather than waiting three weeks. The three later posts (08-21, 08-28, 09-04) stay queued and are still skipped by the build. Verified with a plain One consequence worth naming — this lands ahead of the 08-21 and 08-28 posts that were written before it, so the blog order is now alias post, then those. Nothing in them depends on reading order. |
kinlane
added a commit
that referenced
this pull request
Aug 17, 2026
… as rulesets A fourth relationship alongside engine / embeds / adjacent, for projects that are not implementations of the format but publications in it — the AEP OpenAPI Linter and the Italian government's national API guidelines rules. Both ship a written guideline as an installable, extendable ruleset, which is the format being used as a distribution medium rather than as one tool's config file. Surfaced on both pages: a "Published as rulesets" section on implementations, and "Rulesets published as standards" on tools. This is the shortest list on either page, and it is the one that matters most to the ruleset conformance class in #9 — these are the documents such a class would have to hold. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a research page on how aliases actually work today, and a post for 2026-09-11 arguing the case in
api-commons/spotlight-spec#20.Both were read from
@stoplight/spectral-core1.23.1 as vendored at v6.16.2, plus the published ruleset schema — not from memory. The research page cites files for every claim so it can be checked and shown wrong.What is here
research/aliases.md→/research/aliases/— the evidence. Both alias forms, the six that ship built-in, theextendsboundary, three behaviours worth knowing, and an explicit list of four things the read could not settle.research/index.md— a fourth card, and a "Format behaviour" note in the Method section._posts/2026-09-11-…— the argument, at a slightly higher altitude, linking out to the research page.The finding that matters
Aliases do not cross
extends, and it is deliberate. A rule resolves against the ruleset it was written in, not the one it runs in. The test is namedshould refuse to resolve externally defined aliases.So an alias is private to the file that declares it — which is why the JSONPath criticism survives a feature built to answer it. Everyone extending the OpenAPI ruleset redeclares
PathItemthemselves or goes back to raw JSONPath.The refusal also buys something real: two extended rulesets can define the same alias name differently and never collide, with a fixture asserting exactly that. Both documents say so. #20 inherits that problem rather than dodging it.
None of this is documented outside a test name.
Also worth noting: six aliases ship, all in
oas. AsyncAPI and Arazzo define none, against a standing promise indocs/guides/4c-aliases.mdthat the core rulesets would ship a common set for both.Notes
--future; the page and post render, and the index card links correctly.