---
id: fb-10014-connection-priority
title: FB-10014 Connection Priority
doc_type: design-record
status: in-dev
target_release: "8.3"
last_updated: 2026-06-15
sources:
  - { type: jira, ref: "FB-10014", url: "https://tvunetworks.atlassian.net/browse/FB-10014" }
  - { type: slack, ref: "Trevor Yao Connection Priority thread 2026-06-15" }
figma:
  file: rJJjWWs51n2iFOlCIC7aYG
  nodes:
    - { id: "7070:2", label: "Connection Priority page (PRD / BEFORE / modal)", url: "https://www.figma.com/design/rJJjWWs51n2iFOlCIC7aYG/Config-T---Local-UI---v7.7---8.0--20240220?node-id=7070-2" }
---

# Feature Design Record — FB-10014 Connection Priority

> Status: requirement analyzed; latest Slack logic from 2026-06-15 thread incorporated; Figma PRD + baseline/modal draft exist; AFTER section and UX/dev handoff cards still need to be completed in Figma.

- **JIRA**: FB-10014
- **Scope**: Config-T Local UI, V3 / TM930
- **Source**: Jira FB-10014 + Slack Trevor Yao, 2026-06-11; Slack thread latest logic, 2026-06-15
- **Figma**: Config-T Local UI v7.7 / 8.0, page `< FB-10014 > Connection Priority 20260612`, canvas node `7070:2`
- **Date**: 2026-06-15

## 1. Problem

A customer purchase of 30 TM930 units depends on Config-T providing the same **Connection Priority** capability that exists in RPS Link. Today Config-T only shows live Network connection status; traffic weight is controlled by the existing backend **Data priority** feature from TPC and is not visible or editable in the local GUI.

The missing product capability is therefore not a new Network status column. It is a configuration entry that lets users inspect and adjust traffic preference per connection type, with behavior matching RPS Link.

Latest Slack decision:

- Add a general TPC feature control named **Connection Priority**.
- If the feature is authorized, users can set priorities by themselves in the local GUI.
- If the feature is not authorized, support continues to configure data weight in TPC, same as today.
- This keeps the old Data priority path downward compatible while enabling RPS Link-like self-service control for authorized devices.
- Davion confirmed that when this feature is added, the device should use the RPS Link priority logic.

## 2. Goals

- Add an entry in the Config-T Home -> Network module to open **Connection Priority**.
- Gate the local GUI by the new TPC **Connection Priority** feature authorization.
- When authorized, read the device's current local/RPS Link-style priority state as the modal's initial display.
- Let users set priority per connection type with values `1`, `2`, or `3`; `1` means highest priority.
- Apply changes dynamically without reboot.
- Retain configuration after reboot.
- Generate the visible connection list from readable device slots.

## 3. Non-goals

- Do not add priority values to the Network status table.
- Do not change existing Network live-status columns: Slot, Type, Status, Carrier, Speed, Access Tec., IP Address, RTT.
- Do not expose low-level bonding algorithms in the UI.
- Do not expose the legacy TPC **Data priority** editor in the local GUI.
- Do not let local GUI edits conflict with TPC Data priority when the new feature is not authorized.

## 4. Baseline

Current Config-T Home -> Network shows connection rows only. There is no user-facing priority entry.

Figma current state:

| Node | Meaning | Status |
|---|---|---|
| `7070:3` | `FB-10014 · PRD` | Exists |
| `7099:314` | `FB-10014 · BEFORE — Config-T Network (V3 baseline)` | Exists, but currently also contains AFTER-like draft content |
| `7111:343` | `btn · Connection Priority` inside Network header | Drafted |
| `7102:314` | `Connection Priority (modal)` | Drafted |

Important delivery issue: the page currently has PRD + BEFORE sections only. The modified Network page and modal should be moved or cloned into an independent **AFTER** section, per project convention.

## 5. UI Design

### Entry

Place a compact **Connection Priority** button in the Network module header, aligned to the right before the collapse arrow.

Rationale:
- Keeps this as a Network-level configuration, not a per-row action.
- Avoids adding table columns or row controls that could imply priority is live status.
- Reuses the existing Config-T dense module layout.

### Modal

Modal title: `Connection Priority`

Note:

```text
*Note: Setting to "1" means the highest priority.
```

Rows:

| Row label | Initial value source |
|---|---|
| Internal Cellular | Current local/RPS Link-style priority state when feature is authorized |
| Ethernet | Current local/RPS Link-style priority state when feature is authorized |
| WiFi | Current local/RPS Link-style priority state when feature is authorized |
| USB 1 | Current local/RPS Link-style priority state when feature is authorized |
| USB 2 | Current local/RPS Link-style priority state when feature is authorized |
| USB 3 | Current local/RPS Link-style priority state when feature is authorized |
| USB 4 | Current local/RPS Link-style priority state when feature is authorized |

Each row uses a select control with options:

```text
1
2
3
```

Footer actions:
- `Cancel`: close modal and discard unapplied edits.
- `Apply`: submit all current row priorities.
- Close icon: same behavior as `Cancel`.

## 6. Priority Semantics

- `1` is highest priority.
- Equal values mean equal load balancing among available connections.
- A connection with a lower numeric value should be favored over connections with higher numeric values.
- Any `1` / `2` / `3` combination is allowed; do not force uniqueness.
- Priority affects bonding traffic selection only; it does not change the connection's live status.

Examples:

| Values | Expected traffic behavior |
|---|---|
| All `1` | Equal load balance |
| Ethernet `1`, others `2` or `3` | Traffic favors Ethernet when available |
| WiFi `1`, USB `1`, Ethernet `3` | WiFi and USB share preferred tier; Ethernet is demoted |

## 7. Feature Gate & Data Contract

Latest decision replaces the earlier open assumption about reading from and not writing back to Data priority.

### Feature Authorization

TPC adds a general feature control:

```text
Connection Priority
```

Nickname can be longer if needed in TPC; Slack discussed **Self-serviced Connection Priority** as a clearer nickname. TransporterT code has no strict feature-name length limit, but actual feature names are usually kept short.

Behavior:

| Authorization state | Behavior |
|---|---|
| Authorized | Show the local GUI entry and allow users to self-set priorities. Use RPS Link priority logic. |
| Not authorized | Do not expose self-service priority editing in local GUI. Support continues to configure data weight in TPC, same as today. |

### Read

On modal open, Config-T reads the current local/RPS Link-style priority state. This applies only when the **Connection Priority** feature is authorized.

### Write

On `Apply`, Config-T sends the edited priority map to the device's RPS Link-style connection-priority logic and applies it immediately.

Compatibility rule:

- Authorized feature -> local GUI controls priority through the RPS Link-style logic.
- Unauthorized feature -> legacy TPC Data priority / data weight configuration remains the active support path.
- Avoid mixing local user-edited priorities with TPC Data priority for the same active control path.

### Suggested Logical Shape

This is not an API contract; it is a handoff shape for discussion:

```json
{
  "internalCellular": 2,
  "ethernet": 1,
  "wifi": 1,
  "usb1": 1,
  "usb2": 3,
  "usb3": 2,
  "usb4": 1
}
```

## 8. Edge Cases

- If a slot is not readable, omit that row from the modal instead of showing a disabled placeholder.
- If **Connection Priority** is not authorized, hide or disable the local GUI entry according to Config-T's existing feature-gating pattern; do not open the modal for editing.
- If priority read fails, show the existing Config-T error pattern and keep `Apply` unavailable until values are loaded.
- If apply fails, keep the modal open and show the existing Config-T failure feedback.
- If values change outside the modal while it is open, the product should either lock the modal snapshot until close or refresh on reopen; avoid silently changing selected values mid-edit.
- If only one connection type is readable, the modal may still show it for transparency, but changing priority has no practical traffic effect.

## 9. Acceptance Criteria

- Network module has a clear entry for Connection Priority.
- Entry is available only when the TPC **Connection Priority** feature is authorized, or follows the existing Config-T pattern for unauthorized features.
- Clicking the entry opens the modal.
- Modal rows match the readable connection set for the device: Internal Cellular, Ethernet, WiFi, USB 1-4 for the target TM930 scenario.
- Each visible row can select `1`, `2`, or `3`.
- `1` is documented as highest priority in the modal.
- `Cancel` and close discard unapplied edits.
- `Apply` submits the full edited priority map.
- Changes take effect without reboot.
- Configuration is retained after reboot.
- Modal interaction and priority semantics match RPS Link.
- If the feature is not authorized, support can still configure data weight in TPC as before.

## 10. Figma Completion Checklist

- Create independent section `FB-10014 · AFTER — Config-T Network (V3 / TM930)`.
- Move or clone the modified Network page with `btn · Connection Priority` into AFTER.
- Keep the untouched baseline in `FB-10014 · BEFORE — Config-T Network (V3 baseline)`.
- Place the modal in AFTER near the modified Network page, not inside BEFORE.
- Add a small UX/dev handoff card covering:
  - Entry location
  - Modal row source and order
  - `1 = highest`
  - Equal-priority behavior
  - TPC feature gate: authorized = local self-service, unauthorized = TPC support data weight
  - RPS Link-style logic when authorized
  - Dynamic apply and reboot retention
  - Remaining backend/API open items
- Add final labels for BEFORE / AFTER if not already visible at zoomed-out review scale.

## 11. Open Items

| Item | Owner | Current assumption |
|---|---|---|
| Exact feature name vs TPC nickname | PM + backend | Feature control = `Connection Priority`; nickname may be `Self-serviced Connection Priority` |
| Exact API endpoint / payload | Backend | Priority map by connection type |
| Whether Internal Cellular represents one grouped row or three modem rows | PM + backend | One grouped `Internal Cellular` row, matching current Figma modal |
| Behavior when external USB slots are absent | PM + backend | Generate rows from readable slots |

## 12. Routing

- Product / PM: Trevor Yao
- Target release: V3 software, aiming for 8.3
- Development handoff should include Figma AFTER section link, the TPC feature gate logic, and the remaining backend/API open items explicitly.
