Skip to content

Spec: Device-profile base + parallel NOS stacks (SONiC / Cisco IOS-XR) #504

Closed

Description

@steiler

Full spec (canonical copy): .scratch/open/10-device-profile-parallel-stacks-spec.md on branch/worktree used for delivery.

Problem Statement

Device-profile work for gNMI southbound targets is stacked as Cisco IOS-XR (#442) → SONiC (#480). That ordering blocks merging SONiC even though it is further along, while Cisco IOS-XR is not fully working in the lab. The combined stack also mixes shared southbound materialization with two independent NOS encoders and buries generic tree/converter fixes inside the SONiC PR, which makes review, merge order, and dependency tracking harder than they need to be.

Solution

Reshape delivery into three parallel Git lines off a shared device-profile base:

  1. Base PR (device-profile-base → main): Materialization layer, plan types, config/gRPC with both proto enum values, dispatch switch structure for SONiC and Cisco that fail closed until a NOS PR enables that profile. No NOS encoder packages.

  2. SONiC PR → base: SONiC encoder, Get shaping, validation, enable sonic only.

  3. Cisco IOS-XR PR → base (draft): permodule encoder, validation, enable cisco-ios-xr in the same PR when ready to merge.

SONiC and Cisco PRs do not depend on each other. Generic fixes → main first, rebase stack; cherry-pick to base only as documented bridge. config-server stacks on data-server base with both enums; API fails for disabled profiles until NOS PRs land. Supersede #442 / #480 after new PRs exist.

Primary test seams (confirm before split)

Seam Behavior
SBI + config validation Generic OK; sonic/cisco rejected on base, enabled per NOS PR
gRPC CreateDataStore Enum round-trip + same enablement errors
Southbound materialization (BuildPlan) Generic unchanged; disabled profiles error; enabled delegate to encoder

Links

See .scratch/open/10-device-profile-parallel-stacks-spec.md for full user stories, implementation/testing decisions, and out of scope.

Activity

  1. added 12 commits that reference this issue on Sep 24, 2026
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

    enhancementNew feature or requestready-for-agentSpec complete; safe for agent implementation

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions