FOCAS: duplicate sibling axis names make the Axes/ fixed-tree subtree untrustworthy (#540 residual) #548

Closed
opened 2026-08-06 20:47:16 -04:00 by dohertj2 · 1 comment
Owner

Split out of #540's "Still open, recorded rather than fixed" section so closing that issue does not lose it.

Problem

A CNC can report duplicate sibling axis names — the wonder Makino (Fanuc 30i, 10.201.31.5:8193) returns two axis folders both called AA. Two consequences:

  • Commit-time: collision detection refuses to author both (same RawPath), so nothing silently binds wrong — but the second axis is simply unauthorable.
  • Runtime: the fixed-tree cache is keyed by the same display name, so even if a second AA could be authored, its values would overwrite the first's. The Axes/ subtree is therefore not trustworthy on such a machine — documented as a caveat in docs/drivers/FOCAS.md since the #540 fix (4e22f024).

This is why Axes/ was excluded from the wonder deployment: the box reads 20/20 Good on the non-axis fixed tree, with the axis surface deliberately left unauthored.

Decision needed

Disambiguation is a design call, not a bug fix: suffix duplicate siblings by ordinal index? by the CNC's own axis number (cnc_rdaxisdata slot)? Whichever is chosen must be stable across browses — an index that shifts when the machine adds an axis would rename existing RawPaths, which the v3 model exists to prevent (compare the DataSet row-index rationale in #515, where the row index is always present precisely so a growing table never renames existing tags).

Both the emitter (FocasDriver fixed-tree cache key) and commit-time collision handling need to agree on the scheme.

Split out of #540's "Still open, recorded rather than fixed" section so closing that issue does not lose it. ## Problem A CNC can report **duplicate sibling axis names** — the wonder Makino (Fanuc 30i, `10.201.31.5:8193`) returns two axis folders both called `AA`. Two consequences: - **Commit-time**: collision detection refuses to author both (same RawPath), so nothing silently binds wrong — but the second axis is simply unauthorable. - **Runtime**: the fixed-tree cache is keyed by the same display name, so even if a second `AA` could be authored, its values would overwrite the first's. The `Axes/` subtree is therefore **not trustworthy on such a machine** — documented as a caveat in `docs/drivers/FOCAS.md` since the #540 fix (`4e22f024`). This is why `Axes/` was excluded from the wonder deployment: the box reads 20/20 Good on the non-axis fixed tree, with the axis surface deliberately left unauthored. ## Decision needed Disambiguation is a design call, not a bug fix: suffix duplicate siblings by ordinal index? by the CNC's own axis number (`cnc_rdaxisdata` slot)? Whichever is chosen must be **stable across browses** — an index that shifts when the machine adds an axis would rename existing RawPaths, which the v3 model exists to prevent (compare the DataSet row-index rationale in #515, where the row index is always present precisely so a growing table never renames existing tags). Both the emitter (`FocasDriver` fixed-tree cache key) and commit-time collision handling need to agree on the scheme.
Author
Owner

One operational note beyond the merge (8b5c478c): the fix is in master but not yet on wonder-app-vd03 (the box runs 4e22f024). Authoring the Makino's Axes/ subtree there needs a deployment of this build followed by a re-browse + commit — the tree will then offer AA_1/AA_2 alongside the bare-named unique axes. The 20 existing non-axis fixed-tree tags are untouched by this change (their segments were never duplicated, and unique names keep their bare form by design).

One operational note beyond the merge (`8b5c478c`): the fix is in `master` but **not yet on `wonder-app-vd03`** (the box runs `4e22f024`). Authoring the Makino's `Axes/` subtree there needs a deployment of this build followed by a re-browse + commit — the tree will then offer `AA_1`/`AA_2` alongside the bare-named unique axes. The 20 existing non-axis fixed-tree tags are untouched by this change (their segments were never duplicated, and unique names keep their bare form by design).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dohertj2/lmxopcua#548