[PR #5633] [MERGED] fix(errors): name fixed allowances in resource-constraint recovery #7007

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

📋 Pull Request Information

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

Base: main ← Head: cursor/fixed-allowance-remediation-e4bd


📝 Commits (10+)

  • cdcf981 fix(errors): name fixed allowances in resource-constraint recovery
  • 461c836 fix(il2cpp): keep a closing metadata reader non-retryable
  • 1d1bec7 fix(errors): align fixed-cap recovery with retained facts
  • eb8c31f fix(errors): call byte caps a byte allowance
  • 2aea136 merge(main): take non-retryable invalid requests
  • d98025b test(ida): keep unresolved procedure lookups non-retryable
  • e7c2bfd fix(errors): qualify capture recovery for live output
  • 99fc090 fix(adb): keep a truncated live capture retryable
  • a7ccb97 fix(adb): keep truncated mutations non-retryable
  • 5e053db fix(errors): keep live capture recovery off deterministic limits

📊 Changes

40 files changed (+888 additions, -51 deletions)

View changed files

📝 src/adb/AdbCommand.test.ts (+37 -0)
📝 src/adb/AdbCommand.ts (+15 -2)
📝 src/adb/AdbConfiguration.ts (+8 -1)
📝 src/adb/AdbProvider.ts (+15 -3)
📝 src/apktool/ApktoolProvider.ts (+5 -0)
📝 src/application/wasm/WasmInterfaceComparisonService.test.ts (+72 -1)
📝 src/application/wasm/WasmInterfaceComparisonService.ts (+5 -0)
📝 src/captures/TsharkCaptureProvider.ts (+12 -1)
📝 src/domain/analysisView/WebNetworkProjectionAccumulator.ts (+5 -0)
➕ src/domain/fixedAllowanceRemediation.test.ts (+67 -0)
➕ src/domain/fixedAllowanceRemediation.ts (+49 -0)
📝 src/dotnet/ManagedSnapshot.ts (+2 -0)
📝 src/electron/ElectronFuseFailures.ts (+10 -1)
📝 src/electron/ElectronFuseProvider.test.ts (+11 -0)
📝 src/flutter/FlutterBuildProvider.ts (+22 -1)
📝 src/go/GoBinaryProvider.ts (+13 -1)
📝 src/il2cpp/Il2cppGhidraSeeds.ts (+39 -9)
📝 src/il2cpp/Il2cppMetadataProvider.ts (+41 -3)
📝 src/native/AppleDispatchMetadata.ts (+5 -0)
📝 src/native/NativeMacOSProvider.ts (+8 -1)

...and 20 more files

📄 Description

Summary

Fixed inspection, report, and capture refusals told callers to add memory, wait and retry, or recover Evidence that the refusal never produced. The allowances stay fixed. Recovery now names the allowance that was exceeded.

Fixes #5556, #5405, #5456, #5459, #5460, #5504, #5505, #5506, #5537, #5628, #5630, #5631, #5632.

Problem and expected behavior

A fixed parser, count, report, input, or capture allowance was thrown as AnalysisResourceConstraintError without remediationAction. Shared projection then used the resource-kind fallback:

  • memory: review worker and host memory
  • capacity: wait for an active analysis, and retryable: true
  • transport: retrieve retained Evidence or use complete CLI JSON
  • file-size: raise the evidence-reply file-size allowance

Those actions cannot admit the same input. Occupied IL2CPP reader capacity was also classified as memory, so a second inspection looked non-retryable.

Callers should still be refused. Recovery should name the fixed allowance. Deterministic caps stay retryable: false. A second IL2CPP inspection stays retryable only while that reader remains open. Once close() has stopped admission, the reader is capability_unavailable and non-retryable, including a second inspect that arrives while the active inspection is still finishing.

Change and scope

fixedAllowanceRemediation owns the recovery sentences. Each producer that enforces a fixed allowance sets that recovery when it constructs the error. PE resource metadata refusals also report maximum_metadata_bytes. IL2CPP reader occupancy uses capacity and tells the caller to retry after the active inspection only when the reader has not started closing. close() records that admission has stopped before it waits for the active inspection, and later inspects use that fact.

The IL2CPP complete-report refusal keeps source facts already observed on the error. Its recovery says no complete inventory is retained and does not deny that source observation. Command-output overruns use the retained command-output allowance. Ghidra seed recovery names the seed-name, seed-file, or seed-entry allowance that was exceeded. Byte budgets, including the WASM representation caps and the Ghidra seed-file cap, say they are a fixed byte allowance. Count limits stay a fixed count.

The generic fallback remains for genuine host, worker, or process resource failures that do not set their own recovery. Flutter snapshot-storage errors that forward an arbitrary filesystem code are unchanged.

Follow the contribution scope.
This is an ordinary recovery-text fix inside existing inspection and capture boundaries. No new provider, target execution, injection, mutation, or protection recovery. Maintainer scope decision: not applicable.

Contract and boundary impact

  • Semantic owner and earliest changed stage: each producer that constructs the resource-constraint error, before shared presentation. IL2CPP close records stopped admission before the occupancy check. Command-output recovery is owned by ArtifactAnalysisResources.commandFailure.
  • Contribution scope fit and linked maintainer decision: existing error contract; maintainer scope decision not applicable.
  • CLI and MCP/tool-catalog contract: same resource_constraint code and resource kinds, except IL2CPP reader occupancy changes from memory to capacity and stays retryable while the reader is open. A closing or closed reader projects capability_unavailable with retryable: false. Recovery text and retryable change for the fixed allowances listed in the linked issues. No catalog schema change.
  • Provider, bridge, target-format, or platform compatibility: none for engine selection. Refusal text changes for the listed producers.
  • Evidence, artifact, provenance, or reconstruction contract: an IL2CPP complete-report refusal still attaches the source observation already made. Other report allowances still say the refusal did not produce a completed report or Evidence record.
  • Target selection, authority, upstream behavior, and cleanup details (if applicable): unchanged, except a closed IL2CPP reader no longer describes itself as occupied capacity.
  • 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.

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: domain wording projection, including the byte-allowance sentence; Go build-info and header-search recovery; Rust hash-count and input-size recovery; Electron fuse sentinel and input recovery; Flutter APK snapshot recovery; PE metadata allowance and maximum_metadata_bytes; IL2CPP occupied-open retryable capacity, closing/closed non-retryable admission, and complete-report source facts; Ghidra seed-file byte allowance and seed-name count; typed WASM interface inventory and a comparison of two inventories that together exceed the cap; command-output allowance in ArtifactAnalysisResources and the tshark and sigrok provider simulators.
  • Base reproduction or other evidence: the linked issues record independent CLI replays of the original text. This change was checked with focused provider and source tests, not by replaying every issue script.
  • User-visible CLI/MCP output (if applicable): projected remediation.action and, for deterministic capacity caps, retryable: false. An open occupied IL2CPP reader projects retryable: true and resource: "capacity". A closing or closed reader projects capability_unavailable and retryable: false. A fixed command-output cap names the retained command-output allowance. Byte caps say fixed byte allowance.
  • Remaining proof gaps: apktool, adb, pcap, and native-command capture paths were source-checked and given the same helper. Their public CLI refusals were not replayed here. TShark and sigrok coverage uses the command-boundary simulators, not the real tools.

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 test:local -- src/domain/fixedAllowanceRemediation.test.ts src/wasm/WasmInterfaceBudget.test.ts src/electron/ElectronFuseProvider.test.ts src/native/pe/PeResourcesProvider.test.ts — 38 passed, then the PE file again with the helper test: 14 passed.
  • npm run test:focused -- tests/boundary/go/goBinaryProvider.test.ts tests/boundary/rust/rustBinaryBudget.test.ts tests/boundary/il2cpp/il2cppMetadataProvider.test.ts tests/boundary/filesystem/flutterBuildProvider.test.ts — 125 passed on an earlier head.
  • On 1d1bec7ad: npm run test:local -- src/process/ArtifactAnalysisResources.test.ts src/application/wasm/WasmInterfaceComparisonService.test.ts — 23 passed and 7 passed. npm run test:focused -- tests/boundary/il2cpp/il2cppMetadataProvider.test.ts tests/boundary/il2cpp/il2cppGhidraSeeds.test.ts tests/boundary/captures/captureProvider.test.ts tests/boundary/signals/recordingProvider.test.ts — 19, 8, 37, and 36 passed.
  • On eb8c31fd0: npm run test:local -- src/domain/fixedAllowanceRemediation.test.ts src/wasm/WasmInterfaceBudget.test.ts src/application/wasm/WasmInterfaceComparisonService.test.ts — 7, 1, and 7 passed. npm run test:focused -- tests/boundary/il2cpp/il2cppGhidraSeeds.test.ts — 8 passed.
  • npm run check:fast — typecheck and lint passed on this head.

Not run: npm run check:pr, real apktool/adb/tshark/sigrok/Ghidra/Hopper workflows, or the original issue CLI scripts.

Compatibility, safety, and release

  • Breaking changes or migration steps: none for request shape. Callers that branched on the old recovery sentence, or on IL2CPP occupancy as resource: "memory" / retryable: false, will see the new text and, for an open occupied reader, capacity with retryable: true. A closing or closed reader is capability_unavailable with retryable: false instead of retryable capacity. Deterministic capacity caps that were retryable: true are now retryable: false.
  • Real Hopper/Ghidra, browser, or OS coverage: not run. These refusals are local budget guards.
  • Package or release metadata impact: none.
  • Security, privacy, process, or containment review: recovery text and closed-reader classification only. No new process authority.

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/5633 **Author:** [@morluto](https://github.com/morluto) **Created:** 10/20/2026 **Status:** ✅ Merged **Merged:** 10/20/2026 **Merged by:** [@morluto](https://github.com/morluto) **Base:** `main` ← **Head:** `cursor/fixed-allowance-remediation-e4bd` --- ### 📝 Commits (10+) - [`cdcf981`](https://github.com/morluto/rea/commit/cdcf981673b537a019caf6df00816e70a63b8e66) fix(errors): name fixed allowances in resource-constraint recovery - [`461c836`](https://github.com/morluto/rea/commit/461c83652f10f38e3d55863272fc93f868a1c48c) fix(il2cpp): keep a closing metadata reader non-retryable - [`1d1bec7`](https://github.com/morluto/rea/commit/1d1bec7ad8614819c2e85fb6053c18da8fb221be) fix(errors): align fixed-cap recovery with retained facts - [`eb8c31f`](https://github.com/morluto/rea/commit/eb8c31fd0a7e7fd885113a97958a03bcd5ccc5a3) fix(errors): call byte caps a byte allowance - [`2aea136`](https://github.com/morluto/rea/commit/2aea136c1018e49e88955b255b9d46274c9fc5f0) merge(main): take non-retryable invalid requests - [`d98025b`](https://github.com/morluto/rea/commit/d98025bf9507dd5f4744dc19d8e112b2ba457e09) test(ida): keep unresolved procedure lookups non-retryable - [`e7c2bfd`](https://github.com/morluto/rea/commit/e7c2bfdcd0aa19f43c10905029bb6916c5708f75) fix(errors): qualify capture recovery for live output - [`99fc090`](https://github.com/morluto/rea/commit/99fc0900b3b2cca70f60a324b3ff098684c8227c) fix(adb): keep a truncated live capture retryable - [`a7ccb97`](https://github.com/morluto/rea/commit/a7ccb97fe69f740e13e4436e5467de95b53de1d5) fix(adb): keep truncated mutations non-retryable - [`5e053db`](https://github.com/morluto/rea/commit/5e053db4714834e805f117d0074db06d0985fac1) fix(errors): keep live capture recovery off deterministic limits ### 📊 Changes **40 files changed** (+888 additions, -51 deletions) <details> <summary>View changed files</summary> 📝 `src/adb/AdbCommand.test.ts` (+37 -0) 📝 `src/adb/AdbCommand.ts` (+15 -2) 📝 `src/adb/AdbConfiguration.ts` (+8 -1) 📝 `src/adb/AdbProvider.ts` (+15 -3) 📝 `src/apktool/ApktoolProvider.ts` (+5 -0) 📝 `src/application/wasm/WasmInterfaceComparisonService.test.ts` (+72 -1) 📝 `src/application/wasm/WasmInterfaceComparisonService.ts` (+5 -0) 📝 `src/captures/TsharkCaptureProvider.ts` (+12 -1) 📝 `src/domain/analysisView/WebNetworkProjectionAccumulator.ts` (+5 -0) ➕ `src/domain/fixedAllowanceRemediation.test.ts` (+67 -0) ➕ `src/domain/fixedAllowanceRemediation.ts` (+49 -0) 📝 `src/dotnet/ManagedSnapshot.ts` (+2 -0) 📝 `src/electron/ElectronFuseFailures.ts` (+10 -1) 📝 `src/electron/ElectronFuseProvider.test.ts` (+11 -0) 📝 `src/flutter/FlutterBuildProvider.ts` (+22 -1) 📝 `src/go/GoBinaryProvider.ts` (+13 -1) 📝 `src/il2cpp/Il2cppGhidraSeeds.ts` (+39 -9) 📝 `src/il2cpp/Il2cppMetadataProvider.ts` (+41 -3) 📝 `src/native/AppleDispatchMetadata.ts` (+5 -0) 📝 `src/native/NativeMacOSProvider.ts` (+8 -1) _...and 20 more files_ </details> ### 📄 Description <!-- CURSOR_AGENT_PR_BODY_BEGIN --> ## Summary Fixed inspection, report, and capture refusals told callers to add memory, wait and retry, or recover Evidence that the refusal never produced. The allowances stay fixed. Recovery now names the allowance that was exceeded. Fixes #5556, #5405, #5456, #5459, #5460, #5504, #5505, #5506, #5537, #5628, #5630, #5631, #5632. ## Problem and expected behavior A fixed parser, count, report, input, or capture allowance was thrown as `AnalysisResourceConstraintError` without `remediationAction`. Shared projection then used the resource-kind fallback: - `memory`: review worker and host memory - `capacity`: wait for an active analysis, and `retryable: true` - `transport`: retrieve retained Evidence or use complete CLI JSON - `file-size`: raise the evidence-reply file-size allowance Those actions cannot admit the same input. Occupied IL2CPP reader capacity was also classified as memory, so a second inspection looked non-retryable. Callers should still be refused. Recovery should name the fixed allowance. Deterministic caps stay `retryable: false`. A second IL2CPP inspection stays retryable only while that reader remains open. Once `close()` has stopped admission, the reader is `capability_unavailable` and non-retryable, including a second inspect that arrives while the active inspection is still finishing. ## Change and scope `fixedAllowanceRemediation` owns the recovery sentences. Each producer that enforces a fixed allowance sets that recovery when it constructs the error. PE resource metadata refusals also report `maximum_metadata_bytes`. IL2CPP reader occupancy uses capacity and tells the caller to retry after the active inspection only when the reader has not started closing. `close()` records that admission has stopped before it waits for the active inspection, and later inspects use that fact. The IL2CPP complete-report refusal keeps source facts already observed on the error. Its recovery says no complete inventory is retained and does not deny that source observation. Command-output overruns use the retained command-output allowance. Ghidra seed recovery names the seed-name, seed-file, or seed-entry allowance that was exceeded. Byte budgets, including the WASM representation caps and the Ghidra seed-file cap, say they are a fixed byte allowance. Count limits stay a fixed count. The generic fallback remains for genuine host, worker, or process resource failures that do not set their own recovery. Flutter snapshot-storage errors that forward an arbitrary filesystem code are unchanged. Follow the [contribution scope](https://github.com/morluto/rea/blob/main/CONTRIBUTING.md#contribution-scope). This is an ordinary recovery-text fix inside existing inspection and capture boundaries. No new provider, target execution, injection, mutation, or protection recovery. Maintainer scope decision: not applicable. ## Contract and boundary impact - Semantic owner and earliest changed stage: each producer that constructs the resource-constraint error, before shared presentation. IL2CPP close records stopped admission before the occupancy check. Command-output recovery is owned by `ArtifactAnalysisResources.commandFailure`. - Contribution scope fit and linked maintainer decision: existing error contract; maintainer scope decision not applicable. - CLI and MCP/tool-catalog contract: same `resource_constraint` code and resource kinds, except IL2CPP reader occupancy changes from `memory` to `capacity` and stays retryable while the reader is open. A closing or closed reader projects `capability_unavailable` with `retryable: false`. Recovery text and `retryable` change for the fixed allowances listed in the linked issues. No catalog schema change. - Provider, bridge, target-format, or platform compatibility: none for engine selection. Refusal text changes for the listed producers. - Evidence, artifact, provenance, or reconstruction contract: an IL2CPP complete-report refusal still attaches the source observation already made. Other report allowances still say the refusal did not produce a completed report or Evidence record. - Target selection, authority, upstream behavior, and cleanup details (if applicable): unchanged, except a closed IL2CPP reader no longer describes itself as occupied capacity. - 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. 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: domain wording projection, including the byte-allowance sentence; Go build-info and header-search recovery; Rust hash-count and input-size recovery; Electron fuse sentinel and input recovery; Flutter APK snapshot recovery; PE metadata allowance and `maximum_metadata_bytes`; IL2CPP occupied-open retryable capacity, closing/closed non-retryable admission, and complete-report source facts; Ghidra seed-file byte allowance and seed-name count; typed WASM interface inventory and a comparison of two inventories that together exceed the cap; command-output allowance in `ArtifactAnalysisResources` and the tshark and sigrok provider simulators. - Base reproduction or other evidence: the linked issues record independent CLI replays of the original text. This change was checked with focused provider and source tests, not by replaying every issue script. - User-visible CLI/MCP output (if applicable): projected `remediation.action` and, for deterministic capacity caps, `retryable: false`. An open occupied IL2CPP reader projects `retryable: true` and `resource: "capacity"`. A closing or closed reader projects `capability_unavailable` and `retryable: false`. A fixed command-output cap names the retained command-output allowance. Byte caps say `fixed byte allowance`. - Remaining proof gaps: apktool, adb, pcap, and native-command capture paths were source-checked and given the same helper. Their public CLI refusals were not replayed here. TShark and sigrok coverage uses the command-boundary simulators, not the real tools. 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 test:local -- src/domain/fixedAllowanceRemediation.test.ts src/wasm/WasmInterfaceBudget.test.ts src/electron/ElectronFuseProvider.test.ts src/native/pe/PeResourcesProvider.test.ts` — 38 passed, then the PE file again with the helper test: 14 passed. - `npm run test:focused -- tests/boundary/go/goBinaryProvider.test.ts tests/boundary/rust/rustBinaryBudget.test.ts tests/boundary/il2cpp/il2cppMetadataProvider.test.ts tests/boundary/filesystem/flutterBuildProvider.test.ts` — 125 passed on an earlier head. - On `1d1bec7ad`: `npm run test:local -- src/process/ArtifactAnalysisResources.test.ts src/application/wasm/WasmInterfaceComparisonService.test.ts` — 23 passed and 7 passed. `npm run test:focused -- tests/boundary/il2cpp/il2cppMetadataProvider.test.ts tests/boundary/il2cpp/il2cppGhidraSeeds.test.ts tests/boundary/captures/captureProvider.test.ts tests/boundary/signals/recordingProvider.test.ts` — 19, 8, 37, and 36 passed. - On `eb8c31fd0`: `npm run test:local -- src/domain/fixedAllowanceRemediation.test.ts src/wasm/WasmInterfaceBudget.test.ts src/application/wasm/WasmInterfaceComparisonService.test.ts` — 7, 1, and 7 passed. `npm run test:focused -- tests/boundary/il2cpp/il2cppGhidraSeeds.test.ts` — 8 passed. - `npm run check:fast` — typecheck and lint passed on this head. Not run: `npm run check:pr`, real apktool/adb/tshark/sigrok/Ghidra/Hopper workflows, or the original issue CLI scripts. ## Compatibility, safety, and release - Breaking changes or migration steps: none for request shape. Callers that branched on the old recovery sentence, or on IL2CPP occupancy as `resource: "memory"` / `retryable: false`, will see the new text and, for an open occupied reader, `capacity` with `retryable: true`. A closing or closed reader is `capability_unavailable` with `retryable: false` instead of retryable capacity. Deterministic capacity caps that were `retryable: true` are now `retryable: false`. - Real Hopper/Ghidra, browser, or OS coverage: not run. These refusals are local budget guards. - Package or release metadata impact: none. - Security, privacy, process, or containment review: recovery text and closed-reader classification only. No new process authority. ## 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 - [ ] 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. <!-- CURSOR_AGENT_PR_BODY_END --> <div><a href="https://cursor.com/agents/bc-f251f1d2-5415-56d7-87ce-a081d5e5e4bd?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-f251f1d2-5415-56d7-87ce-a081d5e5e4bd&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:44:39 +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#7007
No description provided.