Skip to content
This repository was archived by the owner on Oct 19, 2026. It is now read-only.

v12.0.0

Choose a tag to compare

@ANcpLua ANcpLua released this 11 Oct 15:25
e7a29bb

Contract 12.0.0 (#51), the breaking cleanup decided as Contract 12.0.0 in the 2026-10-11 qyl-dev audit. The revision is sha256:b29439eba28e752b (11.6.0: sha256:d926c3c6ab829cbf); the digest payload tag moves to qyl-contract-revision-v4 because info.version is no longer hashed.

  • Problems (SCH-14, SCH-20): ProblemDetails is RFC 9457 (type, title, status, detail, instance) plus the extension code. ProblemType enumerates the type URIs https://qyl.at/problems/<name> (served by qyl.at) and ProblemCode the stable codes. Headers are declared on the operations that send them (X-Trace-Id on collector 500s, WWW-Authenticate on workbench 401s); the body members trace_id, request_id, timestamp and InternalServerError.error_code are gone.
  • Paging (SCH-10): next_cursor is an opaque Cursor marked @continuationToken; prev_cursor is deleted; the last page omits next_cursor. Every list operation is @list and spreads CursorPageQuery (limit, cursor).
  • One PageLimit (SCH-16): 1 to 1000, default 100, on all 14 list routes and SavedQueryRunRequest.limit.
  • Removed unused templates (SCH-11): CursorPaginationParams, SortOrder, OffsetPaginationParams, OffsetPage<T>, TimeRangeParams, TimeRangePage<T>, StreamParams, StreamEvent<T>, the ApiError union, RateLimitError, AggregationParams, TimeBucket, OTel.Traces.SpanQueryFilters.
  • Release-stamped info.version (SCH-6): prepack stamps the release version into the packed OpenAPI document and postpack restores 0.0.0; the digest excludes info.version.

Consumer migration is listed in #51. Because the revision changes, the ripple order applies: the qyl Collector adopts 12.0.0 and deploys first, api.qyl.at must serve sha256:b29439eba28e752b, then qyl.mcp re-pins.