[PR #4956] [CLOSED] fix(analysis): preserve evidence and identity across recovery paths #6693

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

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/4956
Author: @whitebaphomet1-star
Created: 10/18/2026
Status: ❌ Closed

Base: main ← Head: qualification/rea-engine-repairs-20261017


📝 Commits (3)

  • 2eea800 fix(javascript): retain uncertainty in esbuild wrapper recovery
  • a1cd2cd fix(reverse): preserve process ownership preflight diagnostics
  • d9ac7c6 fix(browser): bind storage principals and verify viewport stability

📊 Changes

19 files changed (+1273 additions, -71 deletions)

View changed files

📝 docs/javascript-artifact-reconstruction.md (+12 -0)
📝 scripts/lib/browser-screenshot-e2e.mjs (+27 -4)
📝 scripts/lib/browser-socket-e2e.mjs (+7 -1)
📝 scripts/verify-real-browser.mjs (+137 -11)
📝 src/application/javascript/JavaScriptArtifactGraphBundlers.ts (+136 -33)
📝 src/application/javascript/JavaScriptArtifactGraphContext.ts (+16 -0)
📝 src/application/javascript/JavaScriptArtifactGraphFindings.ts (+129 -10)
➕ src/application/javascript/JavaScriptEsbuildCandidateEvidence.test.ts (+223 -0)
📝 src/application/reverse/ReverseEngineeringService.ts (+10 -0)
📝 src/browser/CdpScreenshot.ts (+57 -1)
📝 src/browser/PlaywrightScenarioStorage.test.ts (+135 -2)
📝 src/browser/PlaywrightScenarioStorage.ts (+53 -9)
➕ src/domain/javascript/javascriptEsbuildCandidateContract.test.ts (+67 -0)
📝 src/domain/javascript/javascriptStaticAnalysisBundler.ts (+1 -0)
📝 src/domain/javascript/javascriptStaticAnalysisTypes.ts (+9 -0)
📝 src/javascript/analysis/JavaScriptAnalysisWorkerSchemas.ts (+1 -0)
📝 tests/boundary/browser/cdpScreenshotDocumentIdentity.test.ts (+129 -0)
➕ tests/composition/reverseEngineeringOwnershipPreflight.test.ts (+115 -0)
📝 tests/fixtures/fakeCdpBrowserResults.ts (+9 -0)

📄 Description

Closed: this draft targeted the wrong repository. The corrected delivery is Theory OS MCP draft PR #270, which carries the engine registration, qualified source patch and evidence. No changes were merged from this draft.


Summary

Preserve uncertainty and runtime identity when REA recovers JavaScript structure, prepares owned reverse-engineering processes, and observes browser state.

  • Treat esbuild-shaped helper tables as candidate interpretations instead of confirmed bundler provenance, including module-derived relationships and older retained records.
  • Preserve the typed process-ownership preflight failure instead of relabeling it as a selected-engine launch failure.
  • Bind browser storage seeds to the document principal and reject screenshots whose viewport changes during capture.

This draft contains three commits and 19 authored files. No issue is linked: these failures were found in a local source audit and real CLI/MCP qualification campaign.

Problem and expected behavior

  1. A literal __commonJS or __esm table establishes observable syntax, but its helper name does not prove esbuild origin. Candidate nodes, containment and module-derived relationships must retain inferred/low-confidence evidence and the helper-origin limitation, including summary output and older records.
  2. An owned-process preflight failure occurs before Rizin/objdump executes. Its process-ownership provider identity, prepare_owned_process operation and remediation must survive the service boundary; an already-aborted caller must retain cancellation precedence.
  3. Chromium can report an empty origin for the private world used to initialize scenario storage. Selecting seeds from that origin silently skips initialization before the first inline script. The same-frame default document context supplies the principal; ambiguous or replaced identities must reject initialization.
  4. A page can scroll or resize during native screenshot capture. Returning pixels across different viewport geometries misstates the observation. Capture must reject detected geometry drift while preserving the original native capture options and accepting negative RTL offsets.

Change and scope

The existing application services, evidence model and browser owners retain responsibility. The patch adds candidate-interpretation propagation, preserves the existing ownership error, verifies the storage principal before injection, and compares CSS visual viewport geometry before/after screenshot capture.

The real-browser verifier now selects a committed owned document, closes only its stale owned startup pages, and disconnects fixture setup before production attachment. Its large-PNG fixture uses native window bounds while retaining the exact 2048×1536 assertions. Its script oracle checks exact retained identities and hashes while preserving global unknown when the only gaps are explicit unattributed-origin omissions. The production comparator is unchanged.

Contribution-scope decision: not applicable to routine corrections within existing static-analysis, owned-process and browser boundaries. No new provider, execution authority, bypass behavior or public operation is introduced. Local engine installations, host-specific launcher configuration and Theory OS workspace deployment are qualification context, not changes in this PR.

Contract and boundary impact

  • Semantic owner and earliest changed stage: JavaScript artifact graph interpretation/derived evidence; reverse-engineering ownership-preflight error projection; paused browser storage initialization; native screenshot observation.
  • Contribution scope fit and linked maintainer decision: routine fixes within existing boundaries; no separate advance decision requested.
  • CLI and MCP/tool-catalog contract: existing operations remain. Candidate interpretation and limitations remain explicit; the worker schema carries the candidate information. No new public operation or required caller argument.
  • Provider, bridge, target-format, or platform compatibility: browser behavior exercised on macOS ARM64 with Brave Chromium 155; native screenshot controls also exercised with Chrome for Testing 155. Other browser/OS combinations remain unqualified by these runs.
  • Evidence, artifact, provenance, or reconstruction contract: observable syntax remains separate from inferred bundler origin; uncertainty is preserved in derived relationships and summaries; screenshots reject detected viewport drift.
  • Target selection, authority, upstream behavior, and cleanup: existing caller target selection and run-token ownership remain. Storage still owns its private injection script and rechecks context identity after the awaited storage-key lookup. Screenshots add no evaluation, emulation, clipping or scroll mutation. Owned verifier fixtures use loopback services and ordinary declared browser operations.
  • Generated metadata, package, or installation impact: no package/lockfile/install change and no generated build outputs committed. CI should generate and validate ignored catalogs as usual.

Expected effects of the affected existing workflows and their regression fixtures:

  • 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. Storage initialization and owned test fixture files are the relevant existing effects; this is not a new memory/register mutation capability.
  • Contact network services. Owned browser fixtures use loopback 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 cover candidate evidence/legacy records, domain and worker contracts, typed ownership-preflight diagnostics and cancellation, unique/stale storage contexts, and screenshot document/viewport identity.
  • Real public storage reproduction: before the repair, first-inline code sees an unseeded value. The repaired default CLI/MCP paths seed it correctly. Removing only the origin binding in an isolated copied runtime restores the public failure.
  • Real public screenshot control: an owned page moving during capture returns target_changed without an image. Removing only the post-capture geometry comparison returns pixels, causing the same public canary assertion to fail.
  • Native normal, scrolled, negative-RTL and startup-DPR-2 screenshot controls passed CLI/MCP with independent pixel-hash comparisons on the tested browsers.
  • The full real-browser workflow passed at this head, including storage first-inline initialization, cancellation/cleanup, service-worker policy, popup isolation, network evidence and 9,467,940-byte PNG CLI/MCP delivery and recovery.

Representative real verifier output, abbreviated without changing claim scope:

{
  "verified": true,
  "largeScreenshot": {"mocked": false, "cli": true, "stdio_mcp": true, "png_bytes": 9467940},
  "scenarioStorage": {"firstInlineScriptSeeded": true, "externalTargetSurvives": true, "cancellationCleanup": true},
  "stableScriptIdentity": {"retained_identities_equal": true, "retained_script_count": 4, "global_inventory_status": "unknown", "unattributed_origin_omissions": [6, 6]},
  "process_lineage": {"status": "verified", "descendants": []}
}

The broad verifier includes additional direct production-provider integration checks; those are not substitutes for its public CLI/MCP tests. Declared fixture inputs and isolated ablation runtimes are controls, not fabricated production evidence. Long raw receipts remain local and are not uploaded in this draft.

Remaining proof gaps: upstream CI and the full local check/docs:check gates are pending. The merge-tree check against upstream main 2c4338db1 found no conflicts, but that does not qualify the merged tree. No universal browser/DPR parity, platform-wide or scientific-validity claim is made.

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

At head d9ac7c623787c7277b21ed78939462be3c3b524f:

  • Under pinned Node 24.18.0, vitest run src/application/javascript/JavaScriptEsbuildCandidateEvidence.test.ts src/domain/javascript/javascriptEsbuildCandidateContract.test.ts tests/composition/reverseEngineeringOwnershipPreflight.test.ts src/browser/PlaywrightScenarioStorage.test.ts tests/boundary/browser/cdpScreenshotDocumentIdentity.test.ts — 50/50 tests passed across five files.
  • Under pinned Node 24.18.0, npm run check:fast — typecheck and lint passed, two successful tasks.
  • With supported runtime Node 24.19.0 and Brave Chromium 155.0.8059.40, npm run verify:browser — full real workflow passed, with the public CLI/MCP results above and zero owned descendants at completion.
  • npm run verify:browser:runtime — eight real public cases passed.
  • npm run verify:inspector — eight real Inspector cases passed; unverifiable-file-location cases retain their explicit uncertainty.
  • npm run verify:frida — real local spawn/script marker passed; cleanup_error was null.
  • Installed default CLI and fresh MCP JavaScript/HAR calls passed from an unrelated working directory without per-engine environment injection. GNU objdump/Rizin and configured Ghidra/JADX/Kuna public controls also passed; these bound the current host, not universal provider behavior.
  • Formatting of the eight browser-related changed files, JavaScript syntax checks and git diff --check passed.
  • npm run check, npm run docs:check, cross-platform coverage and upstream CI — not claimed as passing; pending for this draft.

Compatibility, safety, and release

  • Breaking changes or migration steps: no new required caller field or migration. Some previously overconfident recovery output now carries candidate evidence; ownership-preflight errors retain their actual provider; detected viewport drift now produces an explicit failure.
  • Real Hopper/Ghidra, browser, or OS coverage: macOS ARM64 browser and configured Ghidra controls ran. Hopper and other unconfigured proprietary providers were not exercised. Linux ARM64 engine controls ran separately; they do not qualify browser behavior on Linux.
  • Package or release metadata impact: none authored. This draft does not merge or publish a release.
  • Security, privacy, process, or containment review: existing target-selection, cancellation, run-token ownership and process cleanup boundaries remain. No host security setting was weakened. Failed controls and unresolved historical cleanup evidence were not rewritten as successful cleanup.

Author readiness

Human owner: @whitebaphomet1-star (draft; human review and readiness declarations pending)

  • 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.

🔄 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/4956 **Author:** [@whitebaphomet1-star](https://github.com/whitebaphomet1-star) **Created:** 10/18/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `qualification/rea-engine-repairs-20261017` --- ### 📝 Commits (3) - [`2eea800`](https://github.com/morluto/rea/commit/2eea8007dd4c702807b750024ee04b280ae44bed) fix(javascript): retain uncertainty in esbuild wrapper recovery - [`a1cd2cd`](https://github.com/morluto/rea/commit/a1cd2cd33edb198634d1611061a68c650122258f) fix(reverse): preserve process ownership preflight diagnostics - [`d9ac7c6`](https://github.com/morluto/rea/commit/d9ac7c623787c7277b21ed78939462be3c3b524f) fix(browser): bind storage principals and verify viewport stability ### 📊 Changes **19 files changed** (+1273 additions, -71 deletions) <details> <summary>View changed files</summary> 📝 `docs/javascript-artifact-reconstruction.md` (+12 -0) 📝 `scripts/lib/browser-screenshot-e2e.mjs` (+27 -4) 📝 `scripts/lib/browser-socket-e2e.mjs` (+7 -1) 📝 `scripts/verify-real-browser.mjs` (+137 -11) 📝 `src/application/javascript/JavaScriptArtifactGraphBundlers.ts` (+136 -33) 📝 `src/application/javascript/JavaScriptArtifactGraphContext.ts` (+16 -0) 📝 `src/application/javascript/JavaScriptArtifactGraphFindings.ts` (+129 -10) ➕ `src/application/javascript/JavaScriptEsbuildCandidateEvidence.test.ts` (+223 -0) 📝 `src/application/reverse/ReverseEngineeringService.ts` (+10 -0) 📝 `src/browser/CdpScreenshot.ts` (+57 -1) 📝 `src/browser/PlaywrightScenarioStorage.test.ts` (+135 -2) 📝 `src/browser/PlaywrightScenarioStorage.ts` (+53 -9) ➕ `src/domain/javascript/javascriptEsbuildCandidateContract.test.ts` (+67 -0) 📝 `src/domain/javascript/javascriptStaticAnalysisBundler.ts` (+1 -0) 📝 `src/domain/javascript/javascriptStaticAnalysisTypes.ts` (+9 -0) 📝 `src/javascript/analysis/JavaScriptAnalysisWorkerSchemas.ts` (+1 -0) 📝 `tests/boundary/browser/cdpScreenshotDocumentIdentity.test.ts` (+129 -0) ➕ `tests/composition/reverseEngineeringOwnershipPreflight.test.ts` (+115 -0) 📝 `tests/fixtures/fakeCdpBrowserResults.ts` (+9 -0) </details> ### 📄 Description **Closed: this draft targeted the wrong repository.** The corrected delivery is [Theory OS MCP draft PR #270](https://github.com/whitebaphomet1-star/theory-os-formal-tools-mcp/pull/270), which carries the engine registration, qualified source patch and evidence. No changes were merged from this draft. --- ## Summary Preserve uncertainty and runtime identity when REA recovers JavaScript structure, prepares owned reverse-engineering processes, and observes browser state. - Treat esbuild-shaped helper tables as candidate interpretations instead of confirmed bundler provenance, including module-derived relationships and older retained records. - Preserve the typed process-ownership preflight failure instead of relabeling it as a selected-engine launch failure. - Bind browser storage seeds to the document principal and reject screenshots whose viewport changes during capture. This draft contains three commits and 19 authored files. No issue is linked: these failures were found in a local source audit and real CLI/MCP qualification campaign. ## Problem and expected behavior 1. A literal `__commonJS` or `__esm` table establishes observable syntax, but its helper name does not prove esbuild origin. Candidate nodes, containment and module-derived relationships must retain inferred/low-confidence evidence and the helper-origin limitation, including summary output and older records. 2. An owned-process preflight failure occurs before Rizin/objdump executes. Its `process-ownership` provider identity, `prepare_owned_process` operation and remediation must survive the service boundary; an already-aborted caller must retain cancellation precedence. 3. Chromium can report an empty origin for the private world used to initialize scenario storage. Selecting seeds from that origin silently skips initialization before the first inline script. The same-frame default document context supplies the principal; ambiguous or replaced identities must reject initialization. 4. A page can scroll or resize during native screenshot capture. Returning pixels across different viewport geometries misstates the observation. Capture must reject detected geometry drift while preserving the original native capture options and accepting negative RTL offsets. ## Change and scope The existing application services, evidence model and browser owners retain responsibility. The patch adds candidate-interpretation propagation, preserves the existing ownership error, verifies the storage principal before injection, and compares CSS visual viewport geometry before/after screenshot capture. The real-browser verifier now selects a committed owned document, closes only its stale owned startup pages, and disconnects fixture setup before production attachment. Its large-PNG fixture uses native window bounds while retaining the exact 2048×1536 assertions. Its script oracle checks exact retained identities and hashes while preserving global `unknown` when the only gaps are explicit unattributed-origin omissions. The production comparator is unchanged. Contribution-scope decision: not applicable to routine corrections within existing static-analysis, owned-process and browser boundaries. No new provider, execution authority, bypass behavior or public operation is introduced. Local engine installations, host-specific launcher configuration and Theory OS workspace deployment are qualification context, not changes in this PR. ## Contract and boundary impact - Semantic owner and earliest changed stage: JavaScript artifact graph interpretation/derived evidence; reverse-engineering ownership-preflight error projection; paused browser storage initialization; native screenshot observation. - Contribution scope fit and linked maintainer decision: routine fixes within existing boundaries; no separate advance decision requested. - CLI and MCP/tool-catalog contract: existing operations remain. Candidate interpretation and limitations remain explicit; the worker schema carries the candidate information. No new public operation or required caller argument. - Provider, bridge, target-format, or platform compatibility: browser behavior exercised on macOS ARM64 with Brave Chromium 155; native screenshot controls also exercised with Chrome for Testing 155. Other browser/OS combinations remain unqualified by these runs. - Evidence, artifact, provenance, or reconstruction contract: observable syntax remains separate from inferred bundler origin; uncertainty is preserved in derived relationships and summaries; screenshots reject detected viewport drift. - Target selection, authority, upstream behavior, and cleanup: existing caller target selection and run-token ownership remain. Storage still owns its private injection script and rechecks context identity after the awaited storage-key lookup. Screenshots add no evaluation, emulation, clipping or scroll mutation. Owned verifier fixtures use loopback services and ordinary declared browser operations. - Generated metadata, package, or installation impact: no package/lockfile/install change and no generated build outputs committed. CI should generate and validate ignored catalogs as usual. Expected effects of the affected existing workflows and their regression fixtures: - [x] Read existing files or captured data. - [x] Launch or attach to a process. - [x] Inject instrumentation or run scripts/code. - [x] Change process memory, registers, files, or configuration. Storage initialization and owned test fixture files are the relevant existing effects; this is not a new memory/register mutation capability. - [x] Contact network services. Owned browser fixtures use loopback 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 cover candidate evidence/legacy records, domain and worker contracts, typed ownership-preflight diagnostics and cancellation, unique/stale storage contexts, and screenshot document/viewport identity. - Real public storage reproduction: before the repair, first-inline code sees an unseeded value. The repaired default CLI/MCP paths seed it correctly. Removing only the origin binding in an isolated copied runtime restores the public failure. - Real public screenshot control: an owned page moving during capture returns `target_changed` without an image. Removing only the post-capture geometry comparison returns pixels, causing the same public canary assertion to fail. - Native normal, scrolled, negative-RTL and startup-DPR-2 screenshot controls passed CLI/MCP with independent pixel-hash comparisons on the tested browsers. - The full real-browser workflow passed at this head, including storage first-inline initialization, cancellation/cleanup, service-worker policy, popup isolation, network evidence and 9,467,940-byte PNG CLI/MCP delivery and recovery. Representative real verifier output, abbreviated without changing claim scope: ```json { "verified": true, "largeScreenshot": {"mocked": false, "cli": true, "stdio_mcp": true, "png_bytes": 9467940}, "scenarioStorage": {"firstInlineScriptSeeded": true, "externalTargetSurvives": true, "cancellationCleanup": true}, "stableScriptIdentity": {"retained_identities_equal": true, "retained_script_count": 4, "global_inventory_status": "unknown", "unattributed_origin_omissions": [6, 6]}, "process_lineage": {"status": "verified", "descendants": []} } ``` The broad verifier includes additional direct production-provider integration checks; those are not substitutes for its public CLI/MCP tests. Declared fixture inputs and isolated ablation runtimes are controls, not fabricated production evidence. Long raw receipts remain local and are not uploaded in this draft. Remaining proof gaps: upstream CI and the full local `check`/`docs:check` gates are pending. The merge-tree check against upstream main `2c4338db1` found no conflicts, but that does not qualify the merged tree. No universal browser/DPR parity, platform-wide or scientific-validity claim is made. 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 At head `d9ac7c623787c7277b21ed78939462be3c3b524f`: - Under pinned Node 24.18.0, `vitest run src/application/javascript/JavaScriptEsbuildCandidateEvidence.test.ts src/domain/javascript/javascriptEsbuildCandidateContract.test.ts tests/composition/reverseEngineeringOwnershipPreflight.test.ts src/browser/PlaywrightScenarioStorage.test.ts tests/boundary/browser/cdpScreenshotDocumentIdentity.test.ts` — 50/50 tests passed across five files. - Under pinned Node 24.18.0, `npm run check:fast` — typecheck and lint passed, two successful tasks. - With supported runtime Node 24.19.0 and Brave Chromium 155.0.8059.40, `npm run verify:browser` — full real workflow passed, with the public CLI/MCP results above and zero owned descendants at completion. - `npm run verify:browser:runtime` — eight real public cases passed. - `npm run verify:inspector` — eight real Inspector cases passed; unverifiable-file-location cases retain their explicit uncertainty. - `npm run verify:frida` — real local spawn/script marker passed; `cleanup_error` was null. - Installed default CLI and fresh MCP JavaScript/HAR calls passed from an unrelated working directory without per-engine environment injection. GNU objdump/Rizin and configured Ghidra/JADX/Kuna public controls also passed; these bound the current host, not universal provider behavior. - Formatting of the eight browser-related changed files, JavaScript syntax checks and `git diff --check` passed. - `npm run check`, `npm run docs:check`, cross-platform coverage and upstream CI — not claimed as passing; pending for this draft. ## Compatibility, safety, and release - Breaking changes or migration steps: no new required caller field or migration. Some previously overconfident recovery output now carries candidate evidence; ownership-preflight errors retain their actual provider; detected viewport drift now produces an explicit failure. - Real Hopper/Ghidra, browser, or OS coverage: macOS ARM64 browser and configured Ghidra controls ran. Hopper and other unconfigured proprietary providers were not exercised. Linux ARM64 engine controls ran separately; they do not qualify browser behavior on Linux. - Package or release metadata impact: none authored. This draft does not merge or publish a release. - Security, privacy, process, or containment review: existing target-selection, cancellation, run-token ownership and process cleanup boundaries remain. No host security setting was weakened. Failed controls and unresolved historical cleanup evidence were not rewritten as successful cleanup. ## Author readiness Human owner: @whitebaphomet1-star (draft; human review and readiness declarations pending) - [ ] 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. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-11-01 21:42:20 +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#6693
No description provided.