jangala-dev / jangala-dev/devicecode-lua

Track functional differences from devicecode v0.9.x and devicecode-lua v0.10.6 to v0.11.2

Đang mở
#329 0 bình luận 0 reaction 2 người được giao Được @rslater-cs nhận Xem trên GitHub
Ngôn ngữ chính
Lua
Star
1
Fork
0
Merge trung bình
6 ngày 8 giờ
Pull request đã merge (30 ngày)
6

Mô tả

## Summary

Document functional differences and remaining parity work for the prospective `devicecode-lua v0.11.2`.

Baselines:

- `devicecode v0.9.x`
- Get Box production baseline: `v0.9.2`
- Big Box SS legacy baseline: `v0.9.0`
- `devicecode-lua v0.10.6`
- Current OCW Big Box SS baseline
- Prospective `devicecode-lua v0.11.2`
- `dev` at `3328ef0` on 2026-09-03
- No `v0.11.2` tag exists yet

Immediate rollout scope is CM/CM2 and OCW Big Box SS. Get Box differences are recorded as intentionally deferred work. Switch migration is excluded.

## Status

- ✅ Resolved in current `dev`
- ⚠️ Remaining difference requiring action or approval
- ⏳ Intentionally deferred until Get Box migration
- ℹ️ Architectural/interface change

## `devicecode v0.9.x` → `devicecode-lua v0.11.2`

### Get Box parity — deferred

There is currently no Get Box product configuration or service profile in `devicecode-lua`.

- ⏳ **Target and hardware support**
- Add a `getbox-v1` configuration.
- Configure the ath79 platform, EC25 modem path, Ethernet ports and 2.4 GHz radio.
- Define the Get Box service set and builder startup configuration.

- ⏳ **Network configuration**
- Preserve `jng` and `adm` networks and their existing addressing.
- Preserve wired WAN and cellular WAN behavior.
- Preserve advertisement filtering on the user network.
- Preserve `config.getbox.home`, the Unifi record and Starlink administration route.
- Port Get Box shaping: 2/8 Mbit upload and 1.5/6 Mbit download.

- ⏳ **SIM PIN management**
- Port the automatic SIM lock/unlock lifecycle.
- Preserve deterministic PIN generation from ICCID and build salt.
- Preserve `/data/configs/locked_iccids.json`.
- Preserve cloud `simcheck`, offline deferral and post-connect reconciliation.
- Preserve SIM PIN attempts and lock/unlock failure telemetry.
- This was released only on Get Box and is not a `v0.11.2` blocker.

- ⏳ **SIM balance reporting**
- Port the O2 `BALANCE` SMS request.
- Preserve balance/expiry parsing and SMS cleanup.

- ⏳ **Get Box LEDs**
- Port offline, wired-online and cellular signal-strength patterns.

- ⏳ **Device identity**
- Preserve the MAC-derived `GetBox-` hostname and SSID behavior.

- ⏳ **Wi-Fi recovery**
- Decide whether to port or formally retire the watchdog that restarts Wi-Fi after RX traffic remains stalled for five minutes while clients are connected.

- ⏳ **Persistent configuration and profiles**
- Decide how legacy `/data/configs/user.cfg` and `remote.cfg` are migrated.
- Decide whether time-of-day `addn` profiles remain supported.

### Shared and Big Box SS behavior

- ✅ **Big Box SS shaping restored**
- PR #319 restores the legacy 400 kbit sustained, 2 Mbit peak and 200 k burst policy.
- Included in `dev` as `a43fb3f`.

- ✅ **APN selection without GID1**
- PR #328 makes GID1 optional again.
- Included in `dev` as `8283b5b`.

- ✅ **Transient modem initialization recovery**
- PR #325 adds bounded modem reset/retry behavior and tests.
- Included in `dev` as `e6bd25e`.

- ✅ **Big Box SS USB3 handling**
- The VL805 firmware guard, device migration checks and rollback behavior are preserved.

- ⚠️ **System telemetry**
- `board_revision` is emitted but has no SS metrics pipeline and is silently dropped.
- `temp` is emitted, but SS still configures the obsolete `temperature` pipeline key.
- The legacy `system.heartbeat` metric has no direct replacement.
- Decide whether heartbeat removal is intentional.

- ⚠️ **General configuration persistence**
- Startup reads the packaged `configs/.json`.
- `cmd/config/set` writes to the `state` filesystem capability.
- Product configurations map `state` to `/tmp/devicecode-state`.
- Nothing loads that snapshot during the next startup, so accepted changes do not survive reboot.
- No in-repository caller currently uses `cmd/config/set`, making this latent for the immediate OCW release but important before exposing runtime configuration.

## `devicecode-lua v0.10.6` → `devicecode-lua v0.11.2`

### Remaining behavioral differences

- ⚠️ **OCW system telemetry regression**

The following `v0.10.6` cloud metrics are absent in current `dev`:

- `system.board_revision`
- `system.temp`
- `system.power_undervoltage`
- `system.power_under_voltage_occurred`
- `system.power_arm_frequency_capped`
- `system.power_currently_throttled`

`board_revision` and `temp` have producers but lack matching SS pipelines. The four Raspberry Pi power/throttling metrics no longer have producers.

- ⚠️ **IPv6 policy changed**
- `v0.10.6` configured `firewall.defaults.disable_ipv6=1`.
- The new fw4-compatible configuration removes that setting.
- The OpenWrt network renderer defaults `network.globals.ula_prefix` to `auto`.
- Confirm whether local IPv6/ULA should be enabled on OCW.

- ⚠️ **DNS cache size changed**
- `v0.10.6`: 1,000 entries.
- Current `dev`: 10,000 entries.
- Confirm this increase is intentional for Big Box SS.

- ⚠️ **Speed-test freshness changed**
- `v0.10.6` reused results for 10 minutes following a WAN-online transition.
- Current `dev` uses path-aware results with a six-hour freshness interval and retry backoff.
- Confirm the longer interval is intended.

- ⚠️ **Configuration persistence**
- `v0.10.6` did not expose general persistent runtime configuration.
- Current `dev` exposes `cmd/config/set`, but its persisted snapshot is not loaded after reboot.
- Either implement a durable seed-plus-overlay model or document/remove the persistence claim.

### Intended or resolved changes

- ✅ SS shaping changes from the `v0.10.6` 6/24 Mbit download and 3/12 Mbit upload values to the corrected 400 kbit/2 Mbit symmetric policy.
- ✅ GID1 is optional during APN selection.
- ✅ Modem initialization now has bounded recovery attempts.
- ✅ SNR telemetry is added.
- ✅ Custom APNs are managed through the persistent GSM control store.
- ✅ HTTPS MWAN stickiness remains, but is now explicit in product configuration.
- ✅ Dynamic WAN weighting and speed tests are generation-aware and path-aware.
- ✅ Daily reboot and USB3 policy remain configured.
- ℹ️ Network configuration moved to the versioned declarative intent model.
- ℹ️ Configuration topics now use `cfg/` with `{rev, data}` envelopes.
- ℹ️ Metrics moved from collection subscriptions to `obs/v1//metric/`.
- ℹ️ HAL access moved from direct UCI/driver topics to managed capabilities.
- ℹ️ Device, HTTP, monitor, UI and wired services were added or substantially rewritten.
- ℹ️ Development/test target configurations were removed from the production config set; CM2 was added.

## Acceptance criteria for `v0.11.2`

- [x] GID1-unavailable APN test passes.
- [x] Big Box SS shaping matches the approved 400 kbit/2 Mbit policy.
- [x] Modem initialization recovery from PR #325 is merged.
- [ ] Restore or explicitly approve removal of the six OCW system metrics.
- [ ] Confirm the intended IPv6 policy.
- [ ] Confirm DNS cache and speed-test freshness changes.
- [ ] Decide the contract for `cmd/config/set` persistence.
- [ ] Compare generated `v0.11.2` SS UCI against `v0.10.6` for VLANs, DHCP, DNS filtering, firewall rules, MWAN, Starlink routing and shaping.
- [ ] Compare cloud SenML output between `v0.10.6` and `v0.11.2`.
- [ ] Run an OCW hardware smoke test covering both modems, USB3 migration, wired WAN, MWAN weighting, shaping and telemetry.
- [ ] Keep Get Box parity tasks tracked but explicitly excluded from the `v0.11.2` release gate.

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.