Skip to content

feat: note symbol-less caller frames in pause-point responses - #2298

Merged
hatayama merged 1 commit into
v3-betafrom
feat/pause-point-caller-frame-note
Aug 20, 2026
Merged

hatayama merged 1 commit into
v3-betafrom
feat/pause-point-caller-frame-note

Conversation

@hatayama

@hatayama hatayama commented Aug 20, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • Pause-point caller frames that omit File/Line now include a Note that names why those fields are missing.

User Impact

  • Previously a method-only caller frame looked the same whether it was a hot-reload or pause-point dynamic method, an assembly without debug symbols, or a source path outside the Unity project.
  • Callers can now tell those cases apart from Note instead of treating every missing path as "outside the project".

Changes

  • Selector sets one of three constant notes: dynamic method (hot reload or pause-point instrumentation), missing debug symbols, or outside the Unity project. Empty FileName is classified before path normalization.
  • Status and enable/clear caller-frame DTOs copy Note (NullValueHandling.Ignore). Go mirrors Note with omitempty. The shared status contract fixture is unchanged.

Verification

  • scripts/check-go-cli.sh pass
  • uloop compile: Success, ErrorCount: 0
  • EditMode regex PausePointCallerFrameSelectorTests|PausePointStatusCallerFrameTests|PausePointStatusResponse_WhenSerialized: 49 passed

Review in cubic

File and Line omissions had three causes that looked identical on the wire. Name the cause on Note so a missing debug-symbol path is not labeled as outside the project.

Co-authored-by: Cursor <cursoragent@cursor.com>
@coderabbitai

coderabbitai Bot commented Aug 20, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 68f5775f-1281-4485-9f7a-8d6c0a960333

📥 Commits

Reviewing files that changed from the base of the PR and between 4b9b156 and 1f6bdcc.

⛔ Files ignored due to path filters (1)
  • Assets/Tests/Editor/PausePointStatusCallerFrameTests.cs.meta is excluded by none and included by none
📒 Files selected for processing (16)
  • .agents/skills/uloop-pause-point/SKILL.md
  • .agents/skills/uloop-pause-point/references/captured-variables.md
  • .claude/skills/uloop-pause-point/SKILL.md
  • .claude/skills/uloop-pause-point/references/captured-variables.md
  • Assets/Tests/Editor/PausePointCallerFrameSelectorTests.cs
  • Assets/Tests/Editor/PausePointStatusCallerFrameTests.cs
  • Assets/Tests/Editor/PausePointTests.cs
  • Packages/src/Editor/CliOnlyTools~/PausePoint/Skill/SKILL.md
  • Packages/src/Editor/CliOnlyTools~/PausePoint/Skill/references/captured-variables.md
  • Packages/src/Editor/FirstPartyTools/PausePoint/PausePointTools.cs
  • Packages/src/Editor/FirstPartyTools/PausePoint/SourcePausePointCallerFrameSelector.cs
  • Packages/src/Editor/FirstPartyTools/PausePoint/SourcePausePointConstants.cs
  • Packages/src/Editor/Infrastructure/Api/PausePointStatusBridgeCommand.cs
  • Packages/src/Runtime/PausePoints/UloopPausePointCallerFrame.cs
  • cli/project-runner/internal/projectrunner/pause_point_caller_frame_note_test.go
  • cli/project-runner/internal/projectrunner/pause_point_types.go

Included review availability: Your plan provides up to 4 included reviews per hour; 1 remains after this review.


📝 Walkthrough

Walkthrough

Caller-frame handling now reports why file and line data are absent. Notes identify dynamic methods, missing debug symbols, and source files outside the project. The notes propagate through runtime, editor status, and CLI JSON models with test coverage.

Changes

Caller-frame diagnostic notes

Layer / File(s) Summary
Diagnostic contract and frame model
.agents/skills/uloop-pause-point/..., .claude/skills/uloop-pause-point/..., Packages/src/Editor/.../SourcePausePointConstants.cs, Packages/src/Runtime/.../UloopPausePointCallerFrame.cs
Added constants and a nullable Note property for caller-frame omission reasons. Updated pause-point documentation.
Caller-frame note selection
Packages/src/Editor/FirstPartyTools/PausePoint/SourcePausePointCallerFrameSelector.cs, Assets/Tests/Editor/PausePointCallerFrameSelectorTests.cs
Dynamic methods, missing debug symbols, and outside-project paths receive distinct notes. Valid project files retain their source line without a note.
Response propagation and serialization
Packages/src/Editor/FirstPartyTools/PausePoint/PausePointTools.cs, Packages/src/Editor/Infrastructure/Api/PausePointStatusBridgeCommand.cs, cli/project-runner/internal/projectrunner/*, Assets/Tests/Editor/PausePointStatusCallerFrameTests.cs, Assets/Tests/Editor/PausePointTests.cs
Editor and CLI response models copy notes and omit null or empty values. Tests cover mapping, JSON serialization, and updated frame construction.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Merge Risk: ⚪ Minimal · up to 1f6bd

The PR adds explanatory notes for symbol-less pause-point caller frames and propagates them through the response contracts without a current merge-blocking risk; it is merge-ready after normal checks and review.

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 76.92% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: adding notes for caller frames without source symbols.
Description check ✅ Passed The description directly explains the caller-frame Note behavior, affected DTOs, and verification results.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/pause-point-caller-frame-note

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@hatayama
hatayama merged commit e5b4b8e into v3-beta Aug 20, 2026
15 checks passed
@hatayama
hatayama deleted the feat/pause-point-caller-frame-note branch August 20, 2026 12:48
@github-actions github-actions Bot mentioned this pull request Aug 20, 2026
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