Skip to content

Workbench Reports UX: replace opaque MMS struct strings with bounded, expandable typed rows - #219

Open
masarray wants to merge 29 commits into
mainfrom
feat/workbench-report-readable-tree-20261017
Open

masarray wants to merge 29 commits into
mainfrom
feat/workbench-report-readable-tree-20261017

Conversation

@masarray

Copy link
Copy Markdown
Owner

Reproduced problem (actual operator screenshots, 2026-10-17)

The screenshot of ARStack's live GR_X_7SX85 Reports inspector shows dense one-line serialized MMS { {...}, 0, ..., unix-ms=... (q=0x3F)} values, tiny labels, every auxiliary RCB bit section expanded, and a scroll position that obscures the basic control-block/active data. The IEDScout reference shows readable, expandable hierarchical member data and clear process values. This is a GUI usability defect, not a transport/CI readiness question.

Implementation

  • Extend existing BrowserReportMemberProjection.hpp (same canonical report runtime and shared MmsEngineeringEvidence type decoder) to produce a bounded structured MMS hierarchy, preserving original member ordinal, exact full reference, struct/array/scalar type, and source value. Limit: 256 top-level report members; 192 additional child rows; 4 levels; bounded scalar text.
  • Do not guess IEC DO/DA child names from the position inside an MMS Structure; such children explicitly show Field N until SCL-typed correspondence can be proven. Direct Quality/TimeQuality values use the existing strict shared decoder only if the complete source reference is not truncated. Never convert false or missing/failed value into a fabricated state.
  • Build the deep tree only once for the newest projected report frame. Prior report frame previews remain lightweight; the existing worker-side idle fast path and all RCB provenance checks are retained.
  • QML gets clean, expandable top-level report member rows with on-demand child rows, consistent 12px readable type, scroll reset on RCB selection, and optional protocol bits and event history initially collapsed. Preserve existing RCB attribute inspector and evidence checks; no new Write or polling.

Regression

Existing native ied_report_workspace_qa now asserts the live report frame carries typed rows and a synthetic direct test of structured values, legitimate Boolean false, valid Quality, failed Read, excessive child count, and truncated-identity fail-closed behavior. Browser convergence static guards enforce bounds and UI consumption; native Qt QML build/smoke/rendered flows run exact-head.

Important scope limitation

MMS report structures do not intrinsically provide typed labels for positional children. This PR makes the real values readable without inventing stVal/origin/q/t. The next semantic parity milestone must bind each decoded nested child against the canonical, verified SCL FCDA type tree (source authority), so that IEDScout-style named descendants and their enum labels can be displayed honestly. CI success will not imply full visual/real-relay acceptance.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-17T03:30:36.798681Z 3d8edd4 Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3245070eed

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/ied_simulator/qml/BrowserReportPane.qml
Comment thread apps/ied_simulator/qml/BrowserReportPane.qml
Comment thread apps/ied_simulator/src/BrowserReportMemberProjection.hpp Outdated

Copy link
Copy Markdown
Owner Author

Addressed all three source-backed findings at a297b24c137fdd0d21f4f2d5730b9cc44ea9314f: P1: native valueTree now embeds the existing canonical shared-decoder typedEvidence per exact top-level q/t member, and expanded rows show the full Quality/TimeQuality flag panel inline. P2: bounded source reason_for_inclusion.names attached to each actual top-level member and visible on expansion (no invented events). P2: depth-limited nonempty containers now explicitly set treeNestedTruncated; native QA covers >4 deep structures, GI reasons, flags, false, failed fields, and hostile oversized structure. Read-only RCB bit options now use high-contrast passive labels rather than misleading disabled checkboxes. Existing single MMS report owner, wire guards and 100ms idle fast path remain. @codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a297b24c13

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/ied_simulator/src/BrowserReportMemberProjection.hpp

Copy link
Copy Markdown
Owner Author

Fixed the newly reported P2 on latest head 2ed5668bb97e67855993ff603459a3fa834a6af9: both successful and failed Report AccessResult paths now attach the same bounded wire ReasonForInclusion from the authoritative MMS member. Native QA explicitly asserts failed member + data-change reason. Previously corrected q/t details, inclusion reasons, and depth truncation remain covered. Also fixed the previous exact-head compiler failure (local QA name shadow). Please review latest HEAD. @codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2ed5668bb9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/ied_simulator/src/MmsReportController.cpp Outdated

Copy link
Copy Markdown
Owner Author

Fixed latest reviewer P2 at exact head 149f9821dc7abb4398451a0ef3066c1b9931dfd2: the legacy 96-entry q/t valueEvidenceTruncated warning is now only visible when no new native valueTree is present; direct typed q/t evidence of all up-to-256 visible tree members stays accessible inline. The existing first-256-member/nested-bounds warnings still accurately report limited previews. Added regression guard; reviewer thread resolved after inspecting source. @codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 149f9821dc

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/ied_simulator/qml/BrowserReportPane.qml

Copy link
Copy Markdown
Owner Author

Fixed latest P2 on exact head 3d8edd4449ecb9371c85a7f7f86c8905d919dbb7: projectBrowserReportTree now separately reports typedEvidenceOmitted for a direct q/t member whose reference exceeds bounded identity preview; MmsReportController publishes treeTypedEvidenceOmitted; GUI shows a concise warning only for those actual omissions, not for legacy 96-row evidence limit. Native QA covers both long .q omitted and normal .q decoded good. Please review latest head. @codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Keep it up!

Reviewed commit: 3d8edd4449

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

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