Skip to content

fix(dvk): preserve quoted names ending in =, and stop doubling accessibility events. Principle VIII. - #6264

Merged
ten9876 merged 2 commits into
mainfrom
fix/dvk-quoted-trailing-equals
Oct 7, 2026
Merged

ten9876 merged 2 commits into
mainfrom
fix/dvk-quoted-trailing-equals

Conversation

@ten9876

@ten9876 ten9876 commented Oct 7, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Fixes the quoted-name regression introduced by #6262, which its review found, and folds in that review's accessibility finding (maintainer call).

Parser. Given id=1 name="CQ a=" duration=1000, the parser read a=" as the start of another quoted field, and the DVK model displayed CQ.

Accessibility. setAccessibleName() and QLabel::setText() emit NameChanged themselves, and the panel was adding events of its own on top. The review measured 2 events for a single rename and 12–24 for a slot load or disconnect.

  • The panel no longer adds any events of its own.
  • F-key and row names are set only when they change.
  • The status line's accessible name holds the last announced state. Each state change is now one event, and the 10 Hz elapsed-time text and transfer progress add none.

Constitution principle honored

Principle VIII. Each claim is backed by a test that fails without the change. FlexLib's DVK status parsing keeps everything between the quotes, equals signs included (Principle I).

Validation

  • Parser: against the merged bc1d7b80f, the new assertions fail 6 of 55, one per name ending in =. With this fix, dvk_model_status_test passes 56/56, with each looped assertion naming its value.

  • Accessibility events: dvk_panel_admission_test (11/11) counts NameChanged events through QAccessible::installUpdateHandler:

    • reloading unchanged slots: no F-key events
    • a rename: exactly one
    • a state change: one status event, and nothing from the following ticks
    • a disconnect: one status event plus one for the renamed slot

    Against the previous panel, three of these fail.

  • dvk_panel_theme_test passes 33/33.

  • Full ctest: passes except control_receive_test. Its fix (fix(tests): RTL tests follow the qualified-WFM gate and build without the RTL backend. Principle XI. #6263) landed on main after this branch's base.

  • Static gates: engine boundary, capability records, command plane, touchpoint manifest, test registration and the CI gate read identically on the merge base and the head. check_a11y reports nothing on DvkPanel.

  • Not verified: socket-free and offscreen only. No live radio, no transmitting, and no real screen reader.

Checklist

  • Signed commits
  • Socket-free regression coverage, and each guard checked by inverting it
  • No new settings keys, dependencies or ratchet changes
  • No CHANGELOG change

Authored with OpenAI Codex. Landed with Claude Code.

🤖 Generated with Claude Code

@ten9876
ten9876 requested a review from a team as a code owner October 7, 2026 22:33
@ten9876 ten9876 self-assigned this Oct 7, 2026
…ssibility events stand alone. Principle VIII.

Landing pass on #6264.

Parser (maintainer: keep the token rule, tighten it)
- The closing-quote test is a named predicate: a token closes the open
  value unless it opens another quoted field, and a token whose only quote
  is its last character always closes (endsWith && count == 1, which
  states what the first-quote-position test meant).
- The function comment now describes that rule, including the one shape it
  cannot tell apart: on a malformed line a lone `label="` reads as the
  close, exactly as a valid name ending in '=' does. A new test pins that
  case, and that the keys after it survive.
- The looped `=`-name assertions carry the name in their label, so a
  failure says which name broke.

Accessibility (maintainer: fold the #6262 review finding into #6264)
- setAccessibleName() and QLabel::setText() emit NameChanged themselves.
  The panel's extra coalesced F-key event and its manual status events are
  gone; F-key and row names are set only when they change.
- The status label's accessible name carries the last announced state, so
  each state change is one NameChanged and the 10 Hz elapsed-time text and
  transfer progress add none.
- dvk_panel_admission_test counts NameChanged through
  QAccessible::installUpdateHandler: a load of unchanged slots emits none
  on the F-keys, a rename emits one, a state change is one status event
  with no tick events after it, and disconnect emits one status event plus
  one for the renamed slot. Against the previous panel, three of those
  checks fail.

dvk_model_status_test 56/56, dvk_panel_admission_test 11/11,
dvk_panel_theme_test 33/33. Full ctest passes except control_receive_test,
whose fix (#6263) landed on main after this branch's base. Architecture
gates read the same on base and head.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@ten9876 ten9876 changed the title fix(dvk): preserve quoted names ending in = fix(dvk): preserve quoted names ending in =, and stop doubling accessibility events. Principle VIII. Oct 7, 2026
@ten9876
ten9876 merged commit 4b9be49 into main Oct 7, 2026
7 checks passed
@ten9876
ten9876 deleted the fix/dvk-quoted-trailing-equals branch October 7, 2026 23:01
@aethersdr-agent aethersdr-agent Bot mentioned this pull request Oct 12, 2026
2 tasks
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