See https://docs.meshery.io/project/releases
Marks the completion of Phase 1 of the identifier-naming migration. Phase 1 is governance- and tooling-only: no wire-format changes are made in this release. The validator, advisory baseline, CI jobs, and docs have been realigned so that every subsequent per-resource rollout (Phase 2 non-breaking alignment, Phase 3 versioned migrations) has a single source of truth and a single rule surface to reason against.
In one sentence: wire is camelCase everywhere; DB is snake_case; Go fields follow Go
idiom; the ORM layer is the sole translation boundary. Concretely, every JSON tag and
every OpenAPI schema property — DB-backed or not — is camelCase; the snake_case DB
column name lives only in x-oapi-codegen-extra-tags.db. URL path and query parameters
are camelCase with an Id suffix ({orgId}, ?userId=...). The earlier conditional
rule "JSON tag matches db: tag when the field is DB-backed" has been retired. Legacy
resources retain their published wire casing until their next API-version bump; new
API versions adopt the canonical contract uniformly.
See docs/identifier-naming-migration.md §1 for
the full contract table and AGENTS.md § Casing rules at a glance for the
per-layer rules enforced by the validator.
- 1.A —
AGENTS.mdidentifier-naming amendment (#788): Replaced the "DB-backed = snake on the wire" rule with the canonical camelCase-on-wire contract; convertedpage_size/total_countfrom a perpetual exception to a deprecation list; added§ Identifier-naming migrationpointing at the executable plan. - 1.B — Rule 6 inversion / Rule 32 retirement (#791): Rewrote the schema-property casing rule to require camelCase unconditionally; removed the DB-backing exception path and retired the superseded rule that enforced snake-on-DB-backed tags.
- 1.C — "Partial casing migrations forbidden" rule (Rule 45) (#792): New rule
walks every
components/schemas/<Entity>and fails any struct that mixes JSON-tag conventions across its properties (camel + snake +ID). Catches theOrgID/workspace_id/user_iddrift class on a single struct. - 1.D — "Sibling-endpoint parameter parity" rule (Rule 46) (#793): New rule
flags
GET /api/<entity>siblings that omitorgIdQuerywhen their peers declare it — the class of drift that produced the workspaces-400 incident. - 1.E — Query-parameter casing (Rule 4 extension) (#794): Extended the path-param
casing rule to query parameters so
user_id,organizationId, and anyorgIDthat slips intoparameters: [{in: query}]is flagged at the same severity as path parameters. - 1.F — TypeScript consumer auditor (#795): Added
validation/consumer_ts.goand wired it intomake consumer-audit. Parses RTK Querybuilder.query/builder.mutationcall sites acrossmeshery/meshery/ui,meshery-cloud/ui, andmeshery-extensions/meshmapand reports three finding classes (case-flip,snake-case-wrapper,snake-case-param) against the schemas endpoint index. - 1.G — Advisory baseline refresh (#796): Regenerated
build/validate-schemas.advisory-baseline.txtagainst the new rule surface so theadvisory-auditCI job stays green while Phases 2–3 migrate each resource. The baseline is subtractive — any new violation introduced after this snapshot blocks CI. - 1.H — CI workflow wiring (#797): Adds a non-blocking
consumer-auditjob to.github/workflows/schema-audit.ymlthat checks out the downstream repos and runsmake consumer-auditon every PR, posting divergence counts per downstream repo. Advisory-only; lands alongside this 1.I release.
Every Phase 2 agent pins its target repo's @meshery/schemas dependency to this
version — no Phase 2 PR runs until this release is available on npm and as a Go module
tag. The Phase 3 per-resource rollouts (22 resources in parallel) likewise depend on
consumers reaching this version. Downstream repositories pin as follows:
# TypeScript / npm consumers (meshery, meshery-cloud, meshery-extensions UI):
npm install @meshery/schemas@1.1.0
# Go module consumers (meshery server, meshery-cloud server):
go mod edit -require github.com/meshery/schemas@v1.1.0
go mod tidyAfter merging this release, downstream repos can begin Phase 2 non-breaking alignment work (handler query-param casing, outbound URL alignment, local-type displacement) and Phase 3 per-resource API-version authoring. See the orchestration DAG in §11 of the plan for the dependency ordering.
None. Phase 1 is a governance and tooling release; all wire contracts published in
prior releases remain accepted. Existing json:"snake_case" tags on DB-backed fields
in already-published API versions remain valid until their resource is migrated to a
new API version under Phase 3.