Skip to content

Add bounded runtime-state inspection - #175

Closed
bjdodson-openai wants to merge 1 commit into
bjd/debugger-component-property-editfrom
bjd/debugger-runtime-state
Closed

Add bounded runtime-state inspection#175
bjdodson-openai wants to merge 1 commit into
bjd/debugger-component-property-editfrom
bjd/debugger-runtime-state

Conversation

@bjdodson-openai

Copy link
Copy Markdown
Collaborator

Description

Adds bounded runtime-state capture and browsing as the final core debugger-stack capability.

  • Captures exact component-instance state through own data descriptors under hierarchy-wide byte, projection, and reflection budgets.
  • Strictly parses escaped web JSON while keeping structurally untrusted native state escaped and raw-only.
  • Uses collision-free row identities, fail-closed Inspect targeting, and focus-safe refresh deferral.

Type of Change

  • Bug fix (non-breaking change that fixes an issue)
  • Documentation improvement
  • Performance optimization
  • Test improvement
  • Other (new debugger capability)

Testing

  • Tests pass locally (bazel test //...)
  • Added/updated tests for changes (if applicable)
  • Tested on multiple platforms (iOS/Android/Web/macOS as applicable)
  • Manual testing performed (describe below)

Testing Details

  • Runtime State passed 21/21; integrated DevTools passed 66/66; combined coverage passed 87/87.
  • Full CLI passed 436/436 and the production build passed.
  • Focused //src/valdi_modules/src/valdi/web_renderer:test passed after 11,519 actions.
  • bazel query //... passed.
  • The broad Valdi suite reproduced the established 12 unrelated failures; all runtime-state and property-edit specs passed.
  • Two final independent audits were clean at frozen patch fingerprint 9607de6e04b2d332e1573ae450488f7f1bfa5274633e4a432e00c89e96618fd0.

Checklist

  • Code follows project style guidelines
  • Documentation updated (if needed)
  • No breaking changes (or documented in description)
  • Commit messages follow conventional format
  • No secrets, API keys, or internal URLs included

Related Issues

Relates to #154

Additional Context

Stack 22/22. Stacked on #174 (bjd/debugger-component-property-edit). Review this PR as the single incremental commit 8334cd63 against that base; do not merge it before its parent.

@github-actions

Copy link
Copy Markdown

📊 PR Size: size/XL

Total changes: 3081 lines (11 files)

Top files changed:

  • npm_modules/cli/src/debugger/devtoolsRuntimeState.spec.ts: +916 -0
  • npm_modules/cli/debugger/devtools-panel.js: +757 -23
  • src/valdi_modules/src/valdi/web_renderer/test/LegacyWebDebuggerAdapter.spec.ts: +427 -43
  • src/valdi_modules/src/valdi/web_renderer/src/debug/ComponentHierarchySnapshot.ts: +236 -4
  • npm_modules/cli/debugger/devtools-panel.css: +183 -0
  • src/valdi_modules/src/valdi/web_renderer/src/debug/DebuggerValueSnapshot.ts: +114 -2
  • src/valdi_modules/src/valdi/web_renderer/test/DebuggerValueSnapshot.spec.ts: +110 -0
  • npm_modules/cli/src/debugger/devtoolsPanel.spec.ts: +88 -13
  • npm_modules/cli/debugger/devtools-panel.html: +84 -4
  • npm_modules/cli/debugger/README.md: +40 -1

...and 1 more files

Size calculated as additions + deletions. Labels: XS (<10), S (<50), M (<250), L (<1000), XL (1000+)

@github-actions

Copy link
Copy Markdown

⚠️ Bazel & CI Test Results

Test Suite Result
Valdi Smoke Tests ✅ success
API Surface Check ✅ success
Linux: Module Tests ✅ success
valdi_web Integration Test ✅ success
Linux: Build Compiler ✅ success
macOS: C++ & Platform Tests ❌ failure
Test Coverage Delta ✅ success
Snapshot Tests ✅ success
Linux: C++ Tests ❌ failure
Linux: Registry Validation ✅ success
Linux: Build & Export ✅ success
Linux: Hotreload Smoke ✅ success

Some tests failed. Please check the workflow logs for details.

🚀 Bazel remote cache is now enabled - future builds will be faster!

Workflow: Valdi CI

@clholgat clholgat left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Review of bounded runtime-state inspection. Capture budgets and read-only semantics look consistent with the property-inspection path. One low-severity performance note:

  • 🟢 Low — renderRuntimeStateSection calls parseRuntimeState(record.source) for every filtered component (including collapsed rows) on every stateFilter input keystroke. With up to the hierarchy cap of stateful components each holding up to ~64 KiB of captured state, each keystroke re-parses all of them → UI jank on large hierarchies. Suggested fix: memoize the parsed result per record (keyed by source identity/revision) and/or parse lazily only for expanded/visible rows, so filtering doesn't re-parse the whole tree on each keystroke.

Note for the squash: please carry this feedback into the squashed PR that contains runtime-state inspection.

@bjdodson-openai

Copy link
Copy Markdown
Collaborator Author

Superseded by #180, which consolidates this patch into the reviewed debugger capabilities landing unit. The replacement carries forward the feedback and fixes discussed here. Closing this draft to reduce the active stack; this PR and its discussion remain the historical review record.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants