fix(wire-format): flip sistent consumer reads of meshery wire to canonical camelCase (Phase 7c)#1445
Conversation
…nical camelCase (Phase 7c)
Sistent components consume meshery / meshery-cloud wire payloads. Per the
ecosystem identifier-naming contract (TypeScript property: camelCase
everywhere, see meshery/schemas docs/identifier-naming-contributor-guide.md),
the consumer reads must match the canonical camelCase wire keys that
meshery-cloud emits post Phase 4. This change is a surgical field-rename
sweep — no behavioural or structural change.
Flipped (45 sites across 20 files):
Catalog / design wire (Pattern, MesheryPattern, CatalogContent):
catalog_data → catalogData
content_class → contentClass
published_version → publishedVersion
pattern_file → patternFile
Pagination wire (MesheryViewPage / TeamsPage / EnvironmentsPage /
DesignsPage / UsersPage / EventsPage):
total_count → totalCount
Role wire (Role):
role_name → roleName (response read in InviteUserModal only;
the `order: 'role_name asc'` request
parameter is left as-is until the cloud
server adds dual-accept on the sort key)
Component / model wire (Component):
display_name → displayName
Files touched:
• src/custom/CustomCatalog/CustomCard.tsx — Pattern interface
• src/custom/CustomCatalog/Helper.ts — getVersion() reads
• src/custom/CatalogDetail/OverviewSection.tsx
• src/custom/CatalogDetail/RelatedDesigns.tsx
• src/custom/CatalogDetail/LeftPanel.tsx
• src/custom/CatalogDetail/CaveatsSection.tsx
• src/custom/CatalogDetail/ActionButton.tsx
• src/custom/CatalogCard/CatalogCard.tsx
• src/custom/PerformersSection/PerformersSection.tsx
• src/custom/Workspaces/WorkspaceTeamsTable.tsx
• src/custom/Workspaces/WorkspaceViewsTable.tsx
• src/custom/Workspaces/EnvironmentTable.tsx
• src/custom/Workspaces/WorkspaceRecentActivityModal.tsx
(also flipped
EventsResponse type)
• src/custom/Workspaces/DesignTable.tsx
• src/custom/Workspaces/hooks/useDesignAssignment.tsx
• src/custom/Workspaces/hooks/useEnvironmentAssignment.tsx
• src/custom/Workspaces/hooks/useTeamAssignment.tsx
• src/custom/Workspaces/hooks/useViewsAssignment.tsx
• src/custom/UsersTable/UsersTable.tsx — totalCount only
• src/custom/DashboardWidgets/GettingStartedWidget/InviteUserModal.tsx
Intentionally retained (sistent-internal contracts, not meshery wire):
• src/hooks/useRoomActivity.ts — `provider_url`, `data.user_map` are
sistent's collaboration WebSocket signaling protocol identifiers, not
meshery wire fields. The signaling server (meshery-cloud collaboration
endpoint) speaks this protocol with sistent and is independent of the
REST API wire-format contract.
• src/custom/CollaboratorAvatarGroup/CollaboratorAvatarGroup.tsx
`User.border_color` is part of sistent's exported `Users` prop shape
(the sistent API surface that consumers pass in). Flipping this would
be a public API break, not a wire-format alignment.
Already retained-as-deferred per prior phases (still deferred, no change):
• src/custom/UsersTable/UsersTable.tsx — `fullUser.organization_with_user_roles?.role_names`
deferred until the containing response type is migrated upstream
(existing inline TODO).
• src/custom/TeamTable/TeamTableConfiguration.tsx — `team_names` /
`team_name` deferred until meshery-cloud bulk-delete handler lands
dual-accept on the request body (existing PR #1431 / cascade-10
decision).
Verified locally: tsc --noEmit (no new errors vs baseline of 105
pre-existing errors), npm run lint (clean), npm test (21/21 passing),
npm run build (success).
Refs: meshery/schemas docs/identifier-naming-contributor-guide.md
Signed-off-by: Lee Calcote <leecalcote@gmail.com>
|
Warning You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again! |
Phase 8a Post-Release Integration Validation Results — 2026-04-28Ran an end-to-end validation against the v1.0.14 / sistent v0.20.1 / meshkit v1.0.7 / schemas v1.2.6 ecosystem. Overall: GREEN with two follow-up findings, neither blocking. What passed
Two findings (both follow-up, neither blocking)Finding #1 — Schemas pin drift (HIGH-COORDINATION): All three Go modules ( Runtime is fine — the canonical-casing migration was implemented in consumers via local-flip PRs and v1.2.3..v1.2.6 doesn't break the v1.2.2 ABI — but the schema-driven contract demands consumers track the latest. Suggested hotfix: one PR per Go repo bumping Finding #2 — Seeder-bypass NULL Out-of-scope follow-ups (not regressions)
VerdictShip v1.0.14 as-is. Plan a v1.0.15 hotfix bundling the schemas-pin bump and the SQL-function fix. Both fixes total <20 lines each. The canonical-casing migration is clean per the consumer-audit — the most important contract gate the user-facing audit could check. Full report: |
Summary
Sistent components consume meshery / meshery-cloud wire payloads. Per the ecosystem identifier-naming contract (
TypeScript property: camelCaseeverywhere, seemeshery/schemasdocs/identifier-naming-contributor-guide.md), consumer reads must match the canonical camelCase wire keys that meshery-cloud emits post Phase 4. This change is a surgical field-rename sweep — no behavioural or structural changes.This is the sistent half of Phase 7c.
Flipped (45 sites across 20 files)
Catalog / design wire (
Pattern,MesheryPattern,CatalogContent):catalog_data→catalogDatacontent_class→contentClasspublished_version→publishedVersionpattern_file→patternFilePagination wire (
MesheryViewPage/TeamsPage/EnvironmentsPage/DesignsPage/UsersPage/EventsPage):total_count→totalCountRole wire (
Role):role_name→roleName— response read inInviteUserModalonly. Theorder: 'role_name asc'request parameter is left as-is until the cloud server adds dual-accept on the sort key.Component / model wire (
Component):display_name→displayNameFiles changed
src/custom/CustomCatalog/CustomCard.tsx—Patterninterface and readssrc/custom/CustomCatalog/Helper.ts—getVersion()readssrc/custom/CatalogDetail/OverviewSection.tsxsrc/custom/CatalogDetail/RelatedDesigns.tsxsrc/custom/CatalogDetail/LeftPanel.tsxsrc/custom/CatalogDetail/CaveatsSection.tsxsrc/custom/CatalogDetail/ActionButton.tsxsrc/custom/CatalogCard/CatalogCard.tsxsrc/custom/PerformersSection/PerformersSection.tsxsrc/custom/Workspaces/WorkspaceTeamsTable.tsxsrc/custom/Workspaces/WorkspaceViewsTable.tsxsrc/custom/Workspaces/EnvironmentTable.tsxsrc/custom/Workspaces/WorkspaceRecentActivityModal.tsx— also flipped localEventsResponsetypesrc/custom/Workspaces/DesignTable.tsxsrc/custom/Workspaces/hooks/useDesignAssignment.tsxsrc/custom/Workspaces/hooks/useEnvironmentAssignment.tsxsrc/custom/Workspaces/hooks/useTeamAssignment.tsxsrc/custom/Workspaces/hooks/useViewsAssignment.tsxsrc/custom/UsersTable/UsersTable.tsx—totalCountonlysrc/custom/DashboardWidgets/GettingStartedWidget/InviteUserModal.tsxIntentionally retained as sistent-internal contract (not meshery wire)
src/hooks/useRoomActivity.ts—provider_url,data.user_mapare sistent's collaboration WebSocket signaling protocol identifiers, not meshery wire fields. The signaling server (meshery-cloud collaboration endpoint) speaks this protocol with sistent and is independent of the REST API wire-format contract.src/custom/CollaboratorAvatarGroup/CollaboratorAvatarGroup.tsx—User.border_coloris part of sistent's exportedUsersprop shape (the sistent API surface that consumers pass in). Flipping this would be a public API break, not a wire-format alignment.Already retained-as-deferred per prior phases (no change in this PR)
src/custom/UsersTable/UsersTable.tsx—fullUser.organization_with_user_roles?.role_namesdeferred until the containing response type is migrated upstream (existing inline TODO).src/custom/TeamTable/TeamTableConfiguration.tsx—team_names/team_namedeferred until meshery-cloud bulk-delete handler lands dual-accept on the request body (existing decision from PR fix(schemas): Phase 2.K — align Sistent with canonical camelCase wire format #1431 / cascade-10).Test plan
npx tsc --noEmit— no new errors vs baseline of 105 pre-existing errors (all unrelated: missing@types/jest,@types/node,@types/js-yaml,@sistent/mui-datatablesdeclaration, etc.).npm run lint— clean.npm test— 21/21 tests passing across 7 suites.npm run build—tsupbuild succeeds (CJS + ESM + DTS).useRoomActivityuser_map,CollaboratorAvatarGroupborder_color,UsersTableorganization_with_user_roles.role_names,TeamTableConfigurationteam_names/team_name) are documented above with rationale.Refs
meshery/schemasdocs/identifier-naming-contributor-guide.md— the 26-row canonical naming directory