[PR #6307] test(correlation): cover contradictory findings and retained evidence #7271

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

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/6307
Author: @ZFzuofeng
Created: 10/22/2026
Status: 🔄 Open

Base: main ← Head: fix/static-runtime-contradictions


📝 Commits (6)

  • b460b59 fix(correlation): keep contradictory evidence unresolved
  • 924b893 test(correlation): cover ASAR integrity through MCP
  • b5bc2c8 test(correlation): consolidate contradiction regressions on main
  • 3a0cc98 test(correlation): sync regression coverage with main
  • 65f2ddf test(correlation): preserve added and removed ASAR coverage
  • ce1d969 chore: sync main for correlation regression imports

📊 Changes

2 files changed (+376 additions, -14 deletions)

View changed files

📝 src/domain/staticRuntimeCorrelation.test.ts (+224 -1)
📝 tests/boundary/mcp/artifactMcp.test.ts (+152 -13)

📄 Description

Summary

Related to #6217. Main now includes the correlation fix in e76f308d. After synchronizing main, this PR keeps independent regression coverage for contradictory findings, truncation precedence, and retained MCP Evidence; it has no production-code difference from main.

Problem and expected behavior

Contradictory source findings cannot establish a supporting cochange. They remain unknown / unresolved_branch, with original statuses and citations intact. Here a correlation contradiction means a complete observed pattern refutes the caller's expectation; contradictory source evidence cannot establish that refutation. A genuine content change alongside a terminal change still supports a hypothesis.

Change and scope

Reuse main's real-ASAR MCP workflow instead of retaining a duplicate three-ASAR setup. Add a real compare_process_captures changed-runtime control, residual-unknown accounting, and citation/Evidence retention assertions. Domain cases cover a provider-dependent function conclusion, truncation precedence, and a schema-valid contradictory runtime dimension. The current capture producer does not naturally emit that last value; this is consumer-contract coverage.

The original MCP regression and independent macOS verification came from @gongfpp in 924b893. That original authored commit remains in the branch history; its assertions are now consolidated into the upstream ASAR workflow. Runtime aggregate validation remains separate (#6218 / #6298).

Follow the contribution scope.
Unresolved scope, authority, side effects, or required verification block
integration. Link the required maintainer scope decision for new providers or
capabilities involving target execution, injection, mutation, or protection
recovery; ordinary fixes within existing boundaries may state "not applicable".
Draft PRs may leave the scope decision pending and the readiness and merge checklists
unchecked. Maintainers can help resolve open questions.

Contract and boundary impact

  • Semantic owner and earliest changed stage: Existing correlation selection and classification owner; production implementation matches main. Only domain and MCP tests change.
  • Contribution scope fit and linked maintainer decision: Focused regression coverage inside existing evidence-analysis boundaries; a new provider/capability scope decision is not applicable.
  • CLI and MCP/tool-catalog contract: No contract or schema changes. Tests use production MCP registration over an in-memory transport.
  • Provider, bridge, target-format, or platform compatibility: Real ArtifactProvider inspection/comparison of packed ASARs; canonical process-capture fixtures, no live capture.
  • Evidence, artifact, provenance, or reconstruction contract: Original findings, direct and transitive citations, retained session Evidence, and residual unknowns stay visible.
  • Target selection, authority, upstream behavior, and cleanup details (if applicable): Tests own temporary archives and close the MCP session; no target execution, attachment, injection, or mutation.
  • 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; no tracked generated files or dependency changes.

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: Three distinct domain regressions and extended assertions in the existing ASAR MCP workflow; remove the superseded standalone MCP test and its private helper declaration.
  • Base reproduction or other evidence: Guard-removal controls fail at their intended assertions. Main already contains the original fix, so failure on current unmodified main is not claimed.
  • User-visible CLI/MCP output (if applicable): Integrity-only contradiction + changed terminal: unknown, unresolved_branch, hypotheses=0, unresolved=1. Genuine content + changed terminal: correlated, cochanged, hypothesis, hypotheses=1, unresolved=0.
  • Remaining proof gaps: No live target, stdio/installed-client, full-suite, deep-provider, or performance verification. Current macOS revision not rerun; Linux runtime/build limits are explicit below.

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

Current verification (2026-10-27): Windows x64, Node 24.22.1 / npm 11.16.0; synchronized with main b8cdbdf0. The import conflict follows main's functionDossierSchema migration to domain/native/functionDossier. Relative to the previous PR head, the two contribution test files differ by that single import line; MCP assertions are unchanged. Relative to main, only the same two test files differ, with no production-code change.

  • The same five-file npm run test:focused command below passed: 72 tests passed, with 2 existing Windows-gated cases skipped; required runtime/skill build preparation succeeded.
  • npm run check:fast passed (typecheck and lint); node node_modules/lint-staged/bin/lint-staged.js --diff=origin/main passed for the two contribution files. The existing matching published 6.8.0 Windows native artifact also passed verification; no native binary was committed.
  • Repository formatting, architecture guards, production reachability, and typed lint passed; typed lint reported 0 errors and 3,760 warnings across 5,675 files. Test discovery found all 2,671 test files exactly once. These independently completed checks do not turn the failed complete gate into a pass.
  • The complete npm run check did not pass: Knip reports staticFileUrlPath, AndroidManifestComponentInventory, and ObjcClassImportBindingCoverage as unused exports/types in three unchanged main files. An exact main source baseline (both contribution test files replaced with main's originals; no other tracked differences) and the restored PR source each ran Knip without cache. Both exited 1 with identical diagnostic JSON. The contribution files and staged tree were restored and verified unchanged. This is a reproduced main baseline limitation, not a full-gate success.

The earlier verification below is historical; its full-check success does not apply to this new synchronized tree.

Historical Windows verification (2026-10-26): Windows x64, Node 24.22.1 / npm 11.16.0; synchronized with main 1173c0a9. Preserve upstream's expanded four-ASAR/eight-pair workflow and added/removed member identities. The changed-runtime cochange checks remain limited to the representative contradictory and genuine-content pairs; all source Evidence and unknown-retention assertions remain. Only the same two test files differ from main; production source is unchanged.

  • npm run test:focused -- src/domain/staticRuntimeCorrelation.test.ts tests/boundary/mcp/investigationAnalysisMcp.test.ts tests/boundary/mcp/processEvidenceIdentityMcp.test.ts tests/boundary/mcp/artifactMcp.test.ts tests/boundary/mcp/artifactInspectionCoverageMcp.test.ts — 72 passed; 2 existing Windows-gated cases skipped. Required build preparation passed.
  • npm run check — passed: types, formatting, ordinary lint (0 errors, 2,869 warnings) and typed lint (0 errors, 3,668 warnings), module boundaries, unused-code/metadata checks, architecture guards, and production reachability.
  • npm run verify:test-discovery — all 2,496 test files discovered exactly once.
  • Historical guard-removal controls on 96ad94f6: removing only the runtime-contradiction guard makes only its new domain regression fail; removing only the conclusion-kind guard makes only the function regression fail. Restoring production source gives 17/17 domain tests passing.
  • Historical Linux source-boundary verification on 96ad94f6 (not rerun for this synchronization): node scripts/run-exact-tests.mjs run tests/boundary/firmware/firmwareIntegration.test.ts tests/boundary/mcp/firmwareMcp.test.ts tests/boundary/firmware/firmwareWorkspaceRecovery.test.ts src/firmware/FirmwareCommand.test.ts — 55 passed across 4 files, including all 39 integration tests. Ubuntu 22.04 WSL1, non-root UID 1000; local Node 24.22.1 copy has only ELF segment alignment adjusted for WSL1. The official binary is preserved. The full test:focused entry stopped before tests because its native tsrs build helper cannot execute on WSL1 (ENOEXEC); this source run is not an Ubuntu 26.04 CI/build-equivalence claim.
  • git diff --check and staged diff check — passed.
  • Before the current Windows focused run, the old ignored 6.7 native artifact was rejected by the 6.8 version gate. Restore of the matching published rea-agents@6.8.0 artifact followed the repository guide; npm SHA512, addon SHA256 and the native-artifact verifier passed. It was not rebuilt locally, and no manifest or binary was committed. The initial prerequisite failure is not counted as a test result.

Previous CI run 39783479207 failed nine firmware cases with the synthetic Unblob banner admitted as Binwalk; it tested the old merge base. Main's 3ba19426 replaces the fixture's executable-name inference with owned producer commands and real limits. This branch incorporates that fix without another firmware patch. New required CI still needs to complete on the updated head.

Historical contributor evidence: @gongfpp reported 61 passing tests on macOS arm64 on the original 924b893 revision, with an expected failure on its affected parent. That report has not been rerun on this consolidated revision. No full-suite green claim is made.

Compatibility, safety, and release

  • Breaking changes or migration steps: None; test-only change relative to synchronized main.
  • Real Hopper/Ghidra, browser, or OS coverage: Native Windows MCP workflow and limited WSL1 Linux source tests as recorded above. No Hopper/Ghidra, browser, or real OS capture.
  • Package or release metadata impact: None.
  • Security, privacy, process, or containment review: Production behavior and authority are unchanged. No tracked local archives, binaries, credentials, caches, or generated outputs.

Author readiness

Human owner: @ZFzuofeng

  • 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/6307 **Author:** [@ZFzuofeng](https://github.com/ZFzuofeng) **Created:** 10/22/2026 **Status:** 🔄 Open **Base:** `main` ← **Head:** `fix/static-runtime-contradictions` --- ### 📝 Commits (6) - [`b460b59`](https://github.com/morluto/rea/commit/b460b59e6b792f4b5320c4289bdc4ba82a7bd2e2) fix(correlation): keep contradictory evidence unresolved - [`924b893`](https://github.com/morluto/rea/commit/924b893e3750637d759fbf07d7f5ff4c95d052cb) test(correlation): cover ASAR integrity through MCP - [`b5bc2c8`](https://github.com/morluto/rea/commit/b5bc2c8cb3d3c69f7a1664977eadc9b43f1ef307) test(correlation): consolidate contradiction regressions on main - [`3a0cc98`](https://github.com/morluto/rea/commit/3a0cc980395a0379d903f1ede7550fc1eda38f12) test(correlation): sync regression coverage with main - [`65f2ddf`](https://github.com/morluto/rea/commit/65f2ddf4af7b4ff081ee060f36c8a8f208cf6766) test(correlation): preserve added and removed ASAR coverage - [`ce1d969`](https://github.com/morluto/rea/commit/ce1d969723515ce3f87bbedbb787e50abafe25db) chore: sync main for correlation regression imports ### 📊 Changes **2 files changed** (+376 additions, -14 deletions) <details> <summary>View changed files</summary> 📝 `src/domain/staticRuntimeCorrelation.test.ts` (+224 -1) 📝 `tests/boundary/mcp/artifactMcp.test.ts` (+152 -13) </details> ### 📄 Description <!-- PR title: type(optional-scope): imperative outcome The title becomes the squash-merge commit subject and generated changelog entry. --> ## Summary Related to #6217. Main now includes the correlation fix in e76f308d. After synchronizing main, this PR keeps independent regression coverage for contradictory findings, truncation precedence, and retained MCP Evidence; it has no production-code difference from main. <!-- What user, agent, or maintainer problem does this solve? Link the issue with "Fixes #123" when applicable. Keep the prior behavior, expected contract, and new behavior understandable without private context. --> ## Problem and expected behavior Contradictory source findings cannot establish a supporting cochange. They remain `unknown` / `unresolved_branch`, with original statuses and citations intact. Here a correlation `contradiction` means a complete observed pattern refutes the caller's expectation; contradictory source evidence cannot establish that refutation. A genuine content change alongside a terminal change still supports a hypothesis. <!-- For fixes, give the smallest trigger and violated invariant. For features, describe the use case and observable outcome. --> ## Change and scope Reuse main's real-ASAR MCP workflow instead of retaining a duplicate three-ASAR setup. Add a real `compare_process_captures` changed-runtime control, residual-unknown accounting, and citation/Evidence retention assertions. Domain cases cover a provider-dependent function conclusion, truncation precedence, and a schema-valid contradictory runtime dimension. The current capture producer does not naturally emit that last value; this is consumer-contract coverage. The original MCP regression and independent macOS verification came from @gongfpp in [924b893](https://github.com/gongfpp/rea/commit/924b893e3750637d759fbf07d7f5ff4c95d052cb). That original authored commit remains in the branch history; its assertions are now consolidated into the upstream ASAR workflow. Runtime aggregate validation remains separate (#6218 / #6298). <!-- Explain the chosen approach, why it fits REA's architecture, and what is intentionally not included. If adding complexity for a speculative or vanishingly unlikely race or security edge case, record the concrete failure mode, likelihood, complexity cost, and the user's buy-in obtained before implementation. Do not silently expand scope for theoretical robustness. --> Follow the [contribution scope](https://github.com/morluto/rea/blob/main/CONTRIBUTING.md#contribution-scope). Unresolved scope, authority, side effects, or required verification block integration. Link the required maintainer scope decision for new providers or capabilities involving target execution, injection, mutation, or protection recovery; ordinary fixes within existing boundaries may state "not applicable". Draft PRs may leave the scope decision pending and the readiness and merge checklists unchecked. Maintainers can help resolve open questions. ## Contract and boundary impact <!-- Short answers are welcome. Complete applicable lines; mark unresolved facts as "unknown". Use "none" or "not applicable" only when established. --> - Semantic owner and earliest changed stage: Existing correlation selection and classification owner; production implementation matches main. Only domain and MCP tests change. - Contribution scope fit and linked maintainer decision: Focused regression coverage inside existing evidence-analysis boundaries; a new provider/capability scope decision is not applicable. - CLI and MCP/tool-catalog contract: No contract or schema changes. Tests use production MCP registration over an in-memory transport. - Provider, bridge, target-format, or platform compatibility: Real ArtifactProvider inspection/comparison of packed ASARs; canonical process-capture fixtures, no live capture. - Evidence, artifact, provenance, or reconstruction contract: Original findings, direct and transitive citations, retained session Evidence, and residual unknowns stay visible. - Target selection, authority, upstream behavior, and cleanup details (if applicable): Tests own temporary archives and close the MCP session; no target execution, attachment, injection, or mutation. - 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; no tracked generated files or dependency changes. 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 <!-- State whether evidence is executed, source-derived, or proposed. For fixes, show the original failure and explain how the regression would fail on the affected base revision when practical. Include the most useful proof inline; link long logs or artifacts, or put them in optional details. Documentation-only changes can use source, link, or rendered-document checks. --> - Tests added or updated: Three distinct domain regressions and extended assertions in the existing ASAR MCP workflow; remove the superseded standalone MCP test and its private helper declaration. - Base reproduction or other evidence: Guard-removal controls fail at their intended assertions. Main already contains the original fix, so failure on current unmodified main is not claimed. - User-visible CLI/MCP output (if applicable): Integrity-only contradiction + changed terminal: `unknown`, `unresolved_branch`, hypotheses=0, unresolved=1. Genuine content + changed terminal: `correlated`, `cochanged`, `hypothesis`, hypotheses=1, unresolved=0. - Remaining proof gaps: No live target, stdio/installed-client, full-suite, deep-provider, or performance verification. Current macOS revision not rerun; Linux runtime/build limits are explicit below. 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 Current verification (2026-10-27): Windows x64, Node 24.22.1 / npm 11.16.0; synchronized with main `b8cdbdf0`. The import conflict follows main's `functionDossierSchema` migration to `domain/native/functionDossier`. Relative to the previous PR head, the two contribution test files differ by that single import line; MCP assertions are unchanged. Relative to main, only the same two test files differ, with no production-code change. - The same five-file `npm run test:focused` command below passed: 72 tests passed, with 2 existing Windows-gated cases skipped; required runtime/skill build preparation succeeded. - `npm run check:fast` passed (typecheck and lint); `node node_modules/lint-staged/bin/lint-staged.js --diff=origin/main` passed for the two contribution files. The existing matching published 6.8.0 Windows native artifact also passed verification; no native binary was committed. - Repository formatting, architecture guards, production reachability, and typed lint passed; typed lint reported 0 errors and 3,760 warnings across 5,675 files. Test discovery found all 2,671 test files exactly once. These independently completed checks do not turn the failed complete gate into a pass. - The complete `npm run check` did **not** pass: Knip reports `staticFileUrlPath`, `AndroidManifestComponentInventory`, and `ObjcClassImportBindingCoverage` as unused exports/types in three unchanged main files. An exact main source baseline (both contribution test files replaced with main's originals; no other tracked differences) and the restored PR source each ran Knip without cache. Both exited 1 with identical diagnostic JSON. The contribution files and staged tree were restored and verified unchanged. This is a reproduced main baseline limitation, not a full-gate success. The earlier verification below is historical; its full-check success does not apply to this new synchronized tree. Historical Windows verification (2026-10-26): Windows x64, Node 24.22.1 / npm 11.16.0; synchronized with main `1173c0a9`. Preserve upstream's expanded four-ASAR/eight-pair workflow and added/removed member identities. The changed-runtime cochange checks remain limited to the representative contradictory and genuine-content pairs; all source Evidence and unknown-retention assertions remain. Only the same two test files differ from main; production source is unchanged. - `npm run test:focused -- src/domain/staticRuntimeCorrelation.test.ts tests/boundary/mcp/investigationAnalysisMcp.test.ts tests/boundary/mcp/processEvidenceIdentityMcp.test.ts tests/boundary/mcp/artifactMcp.test.ts tests/boundary/mcp/artifactInspectionCoverageMcp.test.ts` — 72 passed; 2 existing Windows-gated cases skipped. Required build preparation passed. - `npm run check` — passed: types, formatting, ordinary lint (0 errors, 2,869 warnings) and typed lint (0 errors, 3,668 warnings), module boundaries, unused-code/metadata checks, architecture guards, and production reachability. - `npm run verify:test-discovery` — all 2,496 test files discovered exactly once. - Historical guard-removal controls on `96ad94f6`: removing only the runtime-contradiction guard makes only its new domain regression fail; removing only the conclusion-kind guard makes only the function regression fail. Restoring production source gives 17/17 domain tests passing. - Historical Linux source-boundary verification on `96ad94f6` (not rerun for this synchronization): `node scripts/run-exact-tests.mjs run tests/boundary/firmware/firmwareIntegration.test.ts tests/boundary/mcp/firmwareMcp.test.ts tests/boundary/firmware/firmwareWorkspaceRecovery.test.ts src/firmware/FirmwareCommand.test.ts` — 55 passed across 4 files, including all 39 integration tests. Ubuntu 22.04 WSL1, non-root UID 1000; local Node 24.22.1 copy has only ELF segment alignment adjusted for WSL1. The official binary is preserved. The full `test:focused` entry stopped before tests because its native tsrs build helper cannot execute on WSL1 (ENOEXEC); this source run is not an Ubuntu 26.04 CI/build-equivalence claim. - `git diff --check` and staged diff check — passed. - Before the current Windows focused run, the old ignored 6.7 native artifact was rejected by the 6.8 version gate. Restore of the matching published `rea-agents@6.8.0` artifact followed the repository guide; npm SHA512, addon SHA256 and the native-artifact verifier passed. It was not rebuilt locally, and no manifest or binary was committed. The initial prerequisite failure is not counted as a test result. Previous CI run [39783479207](https://github.com/morluto/rea/actions/runs/39783479207) failed nine firmware cases with the synthetic Unblob banner admitted as Binwalk; it tested the old merge base. Main's `3ba19426` replaces the fixture's executable-name inference with owned producer commands and real limits. This branch incorporates that fix without another firmware patch. New required CI still needs to complete on the updated head. Historical contributor evidence: @gongfpp reported [61 passing tests on macOS arm64](https://github.com/morluto/rea/pull/6307#issuecomment-6339342660) on the original 924b893 revision, with an expected failure on its affected parent. That report has not been rerun on this consolidated revision. No full-suite green claim is made. <!-- List only commands that actually ran, with observed results. Include the relevant real-provider or platform workflow, or explain why it was unavailable. Keep these results current after changes; a command without its result is incomplete. --> ## Compatibility, safety, and release <!-- Call out breaking changes, migrations, package effects, platform/provider limits, security/privacy/containment implications, and meaningful proof gaps. --> - Breaking changes or migration steps: None; test-only change relative to synchronized main. <!-- For ! / BREAKING CHANGE: show a previously valid call/configuration, its new behavior and migration, and why compatibility/deprecation cannot preserve it. Every release increments minor, including breaking changes; keep breaking markers and migration notes so callers can assess compatibility. See docs/releasing.md. --> - Real Hopper/Ghidra, browser, or OS coverage: Native Windows MCP workflow and limited WSL1 Linux source tests as recorded above. No Hopper/Ghidra, browser, or real OS capture. - Package or release metadata impact: None. - Security, privacy, process, or containment review: Production behavior and authority are unchanged. No tracked local archives, binaries, credentials, caches, or generated outputs. ## Author readiness <!-- The human owner completes these declarations before requesting review. The PR author is the owner by default. A different owner must explicitly accept ownership on this PR. AI agents must leave these declarations to a human to dictate to them or there could be catastrophic consequences for many users of REA. Draft PRs may leave them unchecked. These declarations record initial readiness when opening the PR for review; later pushes do not require a new human sign-off. Keep the description and validation evidence current as the work changes. See CONTRIBUTING.md#pull-request-ownership-and-readiness. --> Human owner: @ZFzuofeng - [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 <!-- Draft PRs may leave pending items unchecked. Resolve material scope and authority questions before integration. --> - [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. - [ ] 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>
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#7271
No description provided.