[PR #6059] [MERGED] fix(native): recover macOS command deadlines #7136

Closed
opened 2026-11-01 21:45:40 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/6059
Author: @morluto
Created: 10/21/2026
Status: ✅ Merged
Merged: 10/21/2026
Merged by: @morluto

Base: main ← Head: cursor/native-macos-deadlines-9c89


📝 Commits (5)

  • 4803c81 fix(native): recover macOS command deadlines
  • 321eded Merge remote-tracking branch 'origin/main' into cursor/native-macos-deadlines-9c89
  • 4bd8cbe fix(native): report the deadline that actually expired
  • d5916a3 Merge remote-tracking branch 'origin/main' into cursor/native-macos-deadlines-9c89
  • 4fc3dc8 fix(native): honor the selected deadline on helper stages

📊 Changes

55 files changed (+1365 additions, -169 deletions)

View changed files

📝 docs/native-investigation.md (+4 -2)
📝 src/application/AppBundleOpenStepDepth.test.ts (+2 -1)
📝 src/application/binaryDiagnostics/BinaryLayoutService.ts (+6 -1)
📝 src/application/binaryDiagnostics/RecordedCrashService.ts (+7 -1)
📝 src/application/native/NativeMatchingAdmission.ts (+7 -1)
📝 src/application/native/NativeValueTrace.ts (+2 -2)
📝 src/artifacts/apple/KeyedArchiveReader.test.ts (+6 -3)
📝 src/cli/binaryDiagnosticsCommands.ts (+18 -2)
📝 src/cli/utilityCommands.ts (+49 -8)
📝 src/contracts/native/binaryDiagnosticsToolContracts.ts (+2 -2)
📝 src/contracts/native/nativeToolContracts.ts (+17 -9)
📝 src/domain/apple/keyedArchive.test.ts (+2 -2)
📝 src/domain/apple/plistValue.ts (+5 -3)
📝 src/domain/native/binaryLayout.ts (+2 -0)
➕ src/domain/native/nativeDeadlines.test.ts (+50 -0)
➕ src/domain/native/nativeDeadlines.ts (+108 -0)
📝 src/domain/native/nativeUiObservation.ts (+8 -2)
📝 src/domain/native/recordedCrash.ts (+2 -0)
📝 src/domain/propertyListKeys.test.ts (+5 -4)
📝 src/domain/propertyListKeys.ts (+5 -4)

...and 35 more files

📄 Description

Summary

Part of #5910 (parent #5808). macOS native commands, native UI observation, and offline pwntools commands now take a validated per-call deadline at today's default. Fixed byte, CPU, LLDB grace, and plist probe caps stay at the same numbers and say there is no runtime override.

The native command setting is native_command_timeout_ms, not command_timeout_ms. That name already means the separate objdump/rizin deadline (default 120000) and is also used by WABT.

Review follow-up on this branch: xcrun --find uses the selected native command deadline; pwndbg failure text uses the selected pwntools deadline; UI limitations state that deadline and the fixed 180000 ms wait-step cap separately; SIGXFSZ/EFBIG recovery names outputBytes and file_size_bytes. The UI helper compile and capture subprocesses use the selected native_ui_deadline_ms, and an exec timeout is reported as that deadline. A Darwin ownership-helper preparation timeout uses the selected native_command_timeout_ms and the same recovery as a later command timeout, including cleanup details. Memory resource-constraint recovery names memory. The Darwin plist input-allowance CLI expectation matches the byte-counted allowance.

Problem and expected behavior

Those three wall clocks were fixed constants. A caller who needed a longer command, UI observation, or pwntools run could not raise them, and the failure text did not name a setting, the effective milliseconds, the range, or the sibling caps that stay fixed.

Omitted values stay 60000, 180000, and 30000 ms. An integer from 1 to 2147483647 applies on the next call. CLI flags are --native-command-timeout-ms, --native-ui-deadline-ms, and --pwntools-timeout-ms.

Change and scope

Domain schemas own the three fields. Native macOS command dispatch, UI interruption, and the pwntools decoder read the selected deadline. Recovery names the setting, the effective milliseconds, the range, the omitted default, and that a change applies on the next call.

resolveXcrunTool receives the same timeoutMs as the resolved tool, so a short deadline cannot spend 60000 ms in xcrun --find and a long deadline is not reported as if resolution had waited for it. inspectPwndbgCore puts that effective pwntools_timeout_ms on its failure context. Successful UI observations name the selected native_ui_deadline_ms and, separately, the fixed wait-step cap. File-size recovery names the reported file_size_bytes when present and the outputBytes cap (67108864), including when a tighter inherited limit applies. Both UI helper stages receive that same UI deadline. Preparation failure reports the selected command deadline. Memory recovery keeps the budget sentence and includes the word memory.

Follow the contribution scope. Maintainer scope decision: not applicable. This stays inside existing native inspection, UI observation, and offline pwntools boundaries. It does not add target execution, injection, mutation, or protection recovery.

Intentionally not included: MCP transport, provider engines, JavaScript, Android, browser, swiftc, ASAR/hdiutil, and objdump/rizin command_timeout_ms.

Contract and boundary impact

  • Semantic owner and earliest changed stage: native command, UI, and pwntools input schemas validate the deadline before the owned command starts. Tool resolution and both UI helper subprocesses use that selected deadline.
  • Contribution scope fit and linked maintainer decision: ordinary recovery inside existing operations; not applicable.
  • CLI and MCP/tool-catalog contract: optional input fields and matching CLI flags. Omission keeps the previous deadline. Catalog JSON is generated in CI.
  • Provider, bridge, target-format, or platform compatibility: macOS Xcode tools and Linux pwntools use the same numeric defaults. No bridge protocol change.
  • Evidence, artifact, provenance, or reconstruction contract: UI observation limitations state the selected deadline. Evidence parameters omit an unspecified deadline.
  • Target selection, authority, upstream behavior, and cleanup details (if applicable): none. The deadline does not raise output, CPU, address-space, or plist allowances. Preparation timeout still retains an owned cleanup marker.
  • Generated metadata (docs/public/product-catalog.json), package, or installation impact (CI generates and validates ignored catalogs and skills/; edit authored instructions in .agents/skills/reverse-engineer-anything/ and never commit build outputs): none authored. CI regenerates catalogs from the tool contracts.

Expected effects (check known effects; use documentation-only on its own).
Unchecked items do not establish absence; leave uncertainties visible.

  • Read existing files or captured data.
  • Launch or attach to a process.
  • Inject instrumentation or run scripts/code.
  • Change process memory, registers, files, or configuration.
  • Contact network services.
  • Recover protected code or work around protections.
  • Documentation or usability only; no target interaction.
  • Not sure yet; investigation or maintainer guidance needed.

Evidence and regression coverage

  • Tests added or updated: deadline schema and omitted defaults; list_architectures passes 60000 or the selected native_command_timeout_ms and rejects 0 before launch; production XcrunCommandRunner resolution records 120000 or the omitted 60000 on xcrun --find; UI timeout text names native_ui_deadline_ms and --native-ui-deadline-ms; successful UI evidence states 2500 ms or the omitted 180000 ms and the fixed 180000 ms wait-step cap; both helper subprocesses receive 250000 ms or the omitted 180000 ms; an ETIMEDOUT helper failure reports 2500 ms; a preparation timeout at 1500 ms reports that deadline and keeps cleanup incomplete until the marker resolves; pwntools timeout text names pwntools_timeout_ms and leaves cpuSeconds 30 fixed; a pwndbg timeout at 60000 ms and a recorded-crash debugger timeout at 1500 ms report that deadline; SIGXFSZ/EFBIG remediation names file_size_bytes and outputBytes (67108864); memory marker and resource-limit replies include memory and the address-space allowance; CLI help advertises the three flags; plist allowance names include no runtime override, including the Darwin input-allowance CLI expectation.
  • Base reproduction or other evidence: source inspection of NATIVE_COMMAND_TIMEOUT_MS 60000, NATIVE_UI_DEADLINE_MS 180000, and PWNTOOLS_LIMITS.timeoutMs 30000. Those defaults are unchanged. The Python worker file cap is outputBytes (67108864), not addressSpaceBytes. On head 4bd8cbed, CI required failed because binary_layout / real-binary-layout required the word memory in a memory resource_constraint remediation, and Real Apple artifact CLI/MCP E2E expected the shorter plist input-allowance sentence. Both failures come from this PR's wording.
  • User-visible CLI/MCP output (if applicable): rea inspect-macho --help prints --native-command-timeout-ms and states the omitted 60000 ms default, the 1..2147483647 range, and that it is distinct from objdump/rizin command_timeout_ms. A successful UI observation limitation names the selected native_ui_deadline_ms and the fixed wait-step cap.
  • Remaining proof gaps: darwin-only plist CLI cases were not executed on this Linux host. The scripts/verify-binary-layout.mjs memory case was not re-run here; it needs pwntools and prlimit. No real Xcode, LLDB, or pwntools process was timed out. The recorded-crash debugger timeout used a fixture launcher. CI on this push was not waited on.

For evidence-bearing changes:

  • Observed, derived, and inferred claims remain distinguishable.
  • Artifact identity, source provenance, and failed attempts remain preserved.
  • Unsupported, incomplete, unavailable, or uncertain outcomes remain visible.

Validation performed

  • npm run check:fast — passed (typecheck and lint) on this revision, after merging origin/main (a0214e0e0).
  • npx oxfmt --check on the edited files — passed.
  • npm run test:focused for src/native/NativeUiHelperRuntime.test.ts, src/native/NativeUiObservation.test.ts, src/native/NativeUiInterruptionControl.test.ts, src/native/pwntools/PwntoolsFailures.test.ts, tests/boundary/providers/native/nativeProvider.test.ts, tests/boundary/binaryDiagnostics/pwntoolsLayoutProvider.test.ts, and tests/boundary/cli/nativePlistSelectionFailureCli.test.ts — 6 files passed, 1 skipped; 139 passed, 13 skipped. The plist CLI file skipped on this Linux host. NativeUiObservation.test.ts was rerun after the lint move: 30 passed.

Compatibility, safety, and release

  • Breaking changes or migration steps: none. Omitted arguments keep the previous deadlines. New fields are optional.
  • Real Hopper/Ghidra, browser, or OS coverage: not run. Deadline selection is covered by fixture command runners and projected timeout errors. Resolution, both helper stages, and the following tool command each receive the full selected deadline.
  • Package or release metadata impact: none.
  • Security, privacy, process, or containment review: a longer deadline only extends the existing owned-command wall clock. It does not raise cpuSeconds 30, byte allowances, address space, or plist caps.

Author readiness

Human owner: @morluto

  • I reviewed the final diff and relevant existing code, understand the change and its edge cases, and take responsibility for the complete PR, including AI-assisted work.
  • I checked the evidence above, confirmed it supports the current change, and recorded meaningful validation gaps.
  • I declare this PR ready for initial maintainer review.

Before merge

  • This PR addresses a concrete problem or an agreed enhancement.
  • Material scope and authority questions are resolved, and any required maintainer scope decision covers the final diff.
  • The PR has one focused outcome and the title follows type(scope): outcome.
  • Related issue is linked, or the reason for not linking one is stated above.
  • Tests cover changed observable behavior and meaningful failure paths.
  • Owning docs, contracts, and generated metadata are updated where needed.
  • User-visible CLI/MCP changes include representative output.
  • I checked the final diff for secrets, unrelated cleanup, and unsupported claims.
Open in Web Open in Cursor 

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/morluto/rea/pull/6059 **Author:** [@morluto](https://github.com/morluto) **Created:** 10/21/2026 **Status:** ✅ Merged **Merged:** 10/21/2026 **Merged by:** [@morluto](https://github.com/morluto) **Base:** `main` ← **Head:** `cursor/native-macos-deadlines-9c89` --- ### 📝 Commits (5) - [`4803c81`](https://github.com/morluto/rea/commit/4803c8107194aa0577257f2d6c595acce40408fb) fix(native): recover macOS command deadlines - [`321eded`](https://github.com/morluto/rea/commit/321ededd30b784ec8928c6d160eacce770201614) Merge remote-tracking branch 'origin/main' into cursor/native-macos-deadlines-9c89 - [`4bd8cbe`](https://github.com/morluto/rea/commit/4bd8cbed550136617f027b99dbda97941da67ebb) fix(native): report the deadline that actually expired - [`d5916a3`](https://github.com/morluto/rea/commit/d5916a3a7ec4403e331ca253b87e7917784a0897) Merge remote-tracking branch 'origin/main' into cursor/native-macos-deadlines-9c89 - [`4fc3dc8`](https://github.com/morluto/rea/commit/4fc3dc8c549c931ed1da51dc8e5f7fc5e1d7a3e0) fix(native): honor the selected deadline on helper stages ### 📊 Changes **55 files changed** (+1365 additions, -169 deletions) <details> <summary>View changed files</summary> 📝 `docs/native-investigation.md` (+4 -2) 📝 `src/application/AppBundleOpenStepDepth.test.ts` (+2 -1) 📝 `src/application/binaryDiagnostics/BinaryLayoutService.ts` (+6 -1) 📝 `src/application/binaryDiagnostics/RecordedCrashService.ts` (+7 -1) 📝 `src/application/native/NativeMatchingAdmission.ts` (+7 -1) 📝 `src/application/native/NativeValueTrace.ts` (+2 -2) 📝 `src/artifacts/apple/KeyedArchiveReader.test.ts` (+6 -3) 📝 `src/cli/binaryDiagnosticsCommands.ts` (+18 -2) 📝 `src/cli/utilityCommands.ts` (+49 -8) 📝 `src/contracts/native/binaryDiagnosticsToolContracts.ts` (+2 -2) 📝 `src/contracts/native/nativeToolContracts.ts` (+17 -9) 📝 `src/domain/apple/keyedArchive.test.ts` (+2 -2) 📝 `src/domain/apple/plistValue.ts` (+5 -3) 📝 `src/domain/native/binaryLayout.ts` (+2 -0) ➕ `src/domain/native/nativeDeadlines.test.ts` (+50 -0) ➕ `src/domain/native/nativeDeadlines.ts` (+108 -0) 📝 `src/domain/native/nativeUiObservation.ts` (+8 -2) 📝 `src/domain/native/recordedCrash.ts` (+2 -0) 📝 `src/domain/propertyListKeys.test.ts` (+5 -4) 📝 `src/domain/propertyListKeys.ts` (+5 -4) _...and 35 more files_ </details> ### 📄 Description <!-- CURSOR_AGENT_PR_BODY_BEGIN --> ## Summary Part of #5910 (parent #5808). macOS native commands, native UI observation, and offline pwntools commands now take a validated per-call deadline at today's default. Fixed byte, CPU, LLDB grace, and plist probe caps stay at the same numbers and say there is no runtime override. The native command setting is `native_command_timeout_ms`, not `command_timeout_ms`. That name already means the separate objdump/rizin deadline (default 120000) and is also used by WABT. Review follow-up on this branch: `xcrun --find` uses the selected native command deadline; pwndbg failure text uses the selected pwntools deadline; UI limitations state that deadline and the fixed 180000 ms wait-step cap separately; SIGXFSZ/EFBIG recovery names `outputBytes` and `file_size_bytes`. The UI helper compile and capture subprocesses use the selected `native_ui_deadline_ms`, and an exec timeout is reported as that deadline. A Darwin ownership-helper preparation timeout uses the selected `native_command_timeout_ms` and the same recovery as a later command timeout, including cleanup details. Memory resource-constraint recovery names memory. The Darwin plist input-allowance CLI expectation matches the byte-counted allowance. ## Problem and expected behavior Those three wall clocks were fixed constants. A caller who needed a longer command, UI observation, or pwntools run could not raise them, and the failure text did not name a setting, the effective milliseconds, the range, or the sibling caps that stay fixed. Omitted values stay 60000, 180000, and 30000 ms. An integer from 1 to 2147483647 applies on the next call. CLI flags are `--native-command-timeout-ms`, `--native-ui-deadline-ms`, and `--pwntools-timeout-ms`. ## Change and scope Domain schemas own the three fields. Native macOS command dispatch, UI interruption, and the pwntools decoder read the selected deadline. Recovery names the setting, the effective milliseconds, the range, the omitted default, and that a change applies on the next call. `resolveXcrunTool` receives the same `timeoutMs` as the resolved tool, so a short deadline cannot spend 60000 ms in `xcrun --find` and a long deadline is not reported as if resolution had waited for it. `inspectPwndbgCore` puts that effective `pwntools_timeout_ms` on its failure context. Successful UI observations name the selected `native_ui_deadline_ms` and, separately, the fixed wait-step cap. File-size recovery names the reported `file_size_bytes` when present and the `outputBytes` cap (67108864), including when a tighter inherited limit applies. Both UI helper stages receive that same UI deadline. Preparation failure reports the selected command deadline. Memory recovery keeps the budget sentence and includes the word memory. Follow the [contribution scope](https://github.com/morluto/rea/blob/main/CONTRIBUTING.md#contribution-scope). Maintainer scope decision: not applicable. This stays inside existing native inspection, UI observation, and offline pwntools boundaries. It does not add target execution, injection, mutation, or protection recovery. Intentionally not included: MCP transport, provider engines, JavaScript, Android, browser, swiftc, ASAR/hdiutil, and objdump/rizin `command_timeout_ms`. ## Contract and boundary impact - Semantic owner and earliest changed stage: native command, UI, and pwntools input schemas validate the deadline before the owned command starts. Tool resolution and both UI helper subprocesses use that selected deadline. - Contribution scope fit and linked maintainer decision: ordinary recovery inside existing operations; not applicable. - CLI and MCP/tool-catalog contract: optional input fields and matching CLI flags. Omission keeps the previous deadline. Catalog JSON is generated in CI. - Provider, bridge, target-format, or platform compatibility: macOS Xcode tools and Linux pwntools use the same numeric defaults. No bridge protocol change. - Evidence, artifact, provenance, or reconstruction contract: UI observation limitations state the selected deadline. Evidence parameters omit an unspecified deadline. - Target selection, authority, upstream behavior, and cleanup details (if applicable): none. The deadline does not raise output, CPU, address-space, or plist allowances. Preparation timeout still retains an owned cleanup marker. - Generated metadata (`docs/public/product-catalog.json`), package, or installation impact (CI generates and validates ignored catalogs and `skills/`; edit authored instructions in `.agents/skills/reverse-engineer-anything/` and never commit build outputs): none authored. CI regenerates catalogs from the tool contracts. Expected effects (check known effects; use documentation-only on its own). Unchecked items do not establish absence; leave uncertainties visible. - [x] Read existing files or captured data. - [ ] Launch or attach to a process. - [ ] Inject instrumentation or run scripts/code. - [ ] Change process memory, registers, files, or configuration. - [ ] Contact network services. - [ ] Recover protected code or work around protections. - [ ] Documentation or usability only; no target interaction. - [ ] Not sure yet; investigation or maintainer guidance needed. ## Evidence and regression coverage - Tests added or updated: deadline schema and omitted defaults; `list_architectures` passes 60000 or the selected `native_command_timeout_ms` and rejects 0 before launch; production `XcrunCommandRunner` resolution records 120000 or the omitted 60000 on `xcrun --find`; UI timeout text names `native_ui_deadline_ms` and `--native-ui-deadline-ms`; successful UI evidence states 2500 ms or the omitted 180000 ms and the fixed 180000 ms wait-step cap; both helper subprocesses receive 250000 ms or the omitted 180000 ms; an `ETIMEDOUT` helper failure reports 2500 ms; a preparation timeout at 1500 ms reports that deadline and keeps cleanup incomplete until the marker resolves; pwntools timeout text names `pwntools_timeout_ms` and leaves cpuSeconds 30 fixed; a pwndbg timeout at 60000 ms and a recorded-crash debugger timeout at 1500 ms report that deadline; SIGXFSZ/EFBIG remediation names `file_size_bytes` and `outputBytes` (67108864); memory marker and resource-limit replies include memory and the address-space allowance; CLI help advertises the three flags; plist allowance names include no runtime override, including the Darwin input-allowance CLI expectation. - Base reproduction or other evidence: source inspection of `NATIVE_COMMAND_TIMEOUT_MS` 60000, `NATIVE_UI_DEADLINE_MS` 180000, and `PWNTOOLS_LIMITS.timeoutMs` 30000. Those defaults are unchanged. The Python worker file cap is `outputBytes` (67108864), not `addressSpaceBytes`. On head `4bd8cbed`, CI required failed because `binary_layout / real-binary-layout` required the word memory in a memory `resource_constraint` remediation, and Real Apple artifact CLI/MCP E2E expected the shorter plist input-allowance sentence. Both failures come from this PR's wording. - User-visible CLI/MCP output (if applicable): `rea inspect-macho --help` prints `--native-command-timeout-ms` and states the omitted 60000 ms default, the 1..2147483647 range, and that it is distinct from objdump/rizin `command_timeout_ms`. A successful UI observation limitation names the selected `native_ui_deadline_ms` and the fixed wait-step cap. - Remaining proof gaps: darwin-only plist CLI cases were not executed on this Linux host. The `scripts/verify-binary-layout.mjs` memory case was not re-run here; it needs pwntools and `prlimit`. No real Xcode, LLDB, or pwntools process was timed out. The recorded-crash debugger timeout used a fixture launcher. CI on this push was not waited on. For evidence-bearing changes: - [x] Observed, derived, and inferred claims remain distinguishable. - [x] Artifact identity, source provenance, and failed attempts remain preserved. - [x] Unsupported, incomplete, unavailable, or uncertain outcomes remain visible. ## Validation performed - `npm run check:fast` — passed (typecheck and lint) on this revision, after merging `origin/main` (`a0214e0e0`). - `npx oxfmt --check` on the edited files — passed. - `npm run test:focused` for `src/native/NativeUiHelperRuntime.test.ts`, `src/native/NativeUiObservation.test.ts`, `src/native/NativeUiInterruptionControl.test.ts`, `src/native/pwntools/PwntoolsFailures.test.ts`, `tests/boundary/providers/native/nativeProvider.test.ts`, `tests/boundary/binaryDiagnostics/pwntoolsLayoutProvider.test.ts`, and `tests/boundary/cli/nativePlistSelectionFailureCli.test.ts` — 6 files passed, 1 skipped; 139 passed, 13 skipped. The plist CLI file skipped on this Linux host. `NativeUiObservation.test.ts` was rerun after the lint move: 30 passed. ## Compatibility, safety, and release - Breaking changes or migration steps: none. Omitted arguments keep the previous deadlines. New fields are optional. - Real Hopper/Ghidra, browser, or OS coverage: not run. Deadline selection is covered by fixture command runners and projected timeout errors. Resolution, both helper stages, and the following tool command each receive the full selected deadline. - Package or release metadata impact: none. - Security, privacy, process, or containment review: a longer deadline only extends the existing owned-command wall clock. It does not raise cpuSeconds 30, byte allowances, address space, or plist caps. ## Author readiness Human owner: @morluto - [x] I reviewed the final diff and relevant existing code, understand the change and its edge cases, and take responsibility for the complete PR, including AI-assisted work. - [x] I checked the evidence above, confirmed it supports the current change, and recorded meaningful validation gaps. - [x] I declare this PR ready for initial maintainer review. ## Before merge - [x] This PR addresses a concrete problem or an agreed enhancement. - [x] Material scope and authority questions are resolved, and any required maintainer scope decision covers the final diff. - [x] The PR has one focused outcome and the title follows `type(scope): outcome`. - [x] Related issue is linked, or the reason for not linking one is stated above. - [x] Tests cover changed observable behavior and meaningful failure paths. - [x] Owning docs, contracts, and generated metadata are updated where needed. - [x] User-visible CLI/MCP changes include representative output. - [x] I checked the final diff for secrets, unrelated cleanup, and unsupported claims. <!-- CURSOR_AGENT_PR_BODY_END --> <div><a href="https://cursor.com/agents/bc-8d254072-4a8a-51f1-b56c-d08218c39c89?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a>&nbsp;<a href="https://cursor.com/background-agent?bcId=bc-8d254072-4a8a-51f1-b56c-d08218c39c89&cursor_ref=pr_footer&cursor_cta=open_in_cursor"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img alt="Open in Cursor" width="131" height="28" src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a>&nbsp;</div> --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-11-01 21:45:40 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
morluto/rea#7136
No description provided.