Skip to content

chore: post-v2.5 review — docs, screenshots, cluster hardening, roadmap#19

Merged
haliskilic merged 1 commit into
mainfrom
chore-review-v2.5
Jun 11, 2026
Merged

chore: post-v2.5 review — docs, screenshots, cluster hardening, roadmap#19
haliskilic merged 1 commit into
mainfrom
chore-review-v2.5

Conversation

@haliskilic

Copy link
Copy Markdown
Owner

Full review pass after the v2.5 LAN-cluster release: documentation audited against the code, screenshots refreshed, two cluster fixes from the code review, and the roadmap brought up to date.

Documentation accuracy

  • bootstrap.py: docstring said "Python 3.11+" — corrected to 3.10+ (CI + requirements.txt ship 3.10 backports; the matrix is 3.10–3.13).
  • README (TR/EN): the data-file permission line claimed config.json is 0600 on POSIX. The code locks the data directory to 0700 (POSIX) / icacls (Windows); files inside inherit that. Reworded to match.
  • ROADMAP: the "Planned" section still listed already-shipped work. Moved to Shipped: OIDC SSO, REST token roles, light/dark theme, xterm fit-to-window, packaging, LAN cluster. Rewrote the forward plan (v2.6 cluster depth + hardening, v2.7 IIoT/Modbus-write/Sparkplug, v2.8 packaging/migration, CI Node-24 maintenance).

Screenshots

  • Regenerated all shots from the running UI. The capture tool now starts a second cluster node, so the dashboard's LAN-cluster panel shows a genuine multi-host fleet view (each row tagged with host name + IP, remote rows with an "Open" link).
  • Added docs/screenshots/06-cluster.png; surfaced it (and the cluster panel) in both READMEs.

Cluster code-review fixes

  • cluster.py: close the UDP socket if create_datagram_endpoint() fails after bind (avoids a socket leak on repeated enable/disable).
  • config.py: ClusterSettings.validate() now raises a clean ConfigError on a non-numeric discovery_port instead of a raw ValueError.

Other review findings (peer-IP SSRF guard, TLS pinning for peer fetch, IPv6 discovery, a rate-limit on /api/cluster/local) are lower-severity / require the shared key to exploit; they're captured as the v2.6 cluster-hardening backlog in ROADMAP.

Verification

  • Full suite 32/32 pass (run_all.py --socat); ruff clean.

…roadmap

Documentation accuracy:
- bootstrap.py: "Python 3.11+" -> "3.10+" (CI/requirements support 3.10).
- README (TR/EN): correct the data-file permission wording (the data DIR is
  locked 0700/icacls, not each file to 0600).
- ROADMAP: move shipped items out of "Planned" (OIDC SSO, REST token roles,
  light/dark theme, xterm fit-to-window, packaging, LAN cluster) into Shipped;
  rewrite the forward plan (cluster depth/hardening, IIoT, packaging, CI Node-24).

Screenshots:
- Regenerate from the running UI; the capture tool now starts a second cluster
  node so the dashboard's LAN-cluster panel shows a real multi-host fleet view.
- Add docs/screenshots/06-cluster.png; show it + the cluster panel in both READMEs.

Cluster code-review fixes (from the v2.5 review):
- cluster.py: close the UDP socket if create_datagram_endpoint() fails (no leak).
- config.py: ClusterSettings.validate raises a clean ConfigError on a non-numeric
  discovery_port instead of a raw ValueError.
@haliskilic
haliskilic merged commit 9d92ae4 into main Jun 11, 2026
18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant