[PR #2994] [CLOSED] fix(artifacts): preserve literal POSIX backslash names #5549

Closed
opened 2026-10-31 01:07:30 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/2994
Author: @maxazure
Created: 10/13/2026
Status: ❌ Closed

Base: main ← Head: fix/artifacts-literal-backslash-2619


📝 Commits (8)

  • bb9c156 fix(artifacts): preserve literal POSIX backslash names
  • 405ffc2 fix(browser): retain Windows saved-source path admission
  • 7826656 fix(javascript): preserve literal artifact names across graph consumers
  • 3e75ad4 fix(artifacts): preserve owning paths through joins and runtime mappings
  • 7b74f88 fix(javascript): retain raw loadFile runtime path authority
  • 61e77b0 fix(artifacts): scope renderer mappings and retain historical names
  • 3bc87ca fix(artifacts): retain inventoried symlink and URL path semantics
  • aadbe63 fix(wakaru): retain multi-input filename refusal

📊 Changes

23 files changed (+1484 additions, -81 deletions)

View changed files

📝 src/artifacts/ArtifactPaths.ts (+3 -8)
📝 src/artifacts/SafeOutputTree.ts (+5 -0)
📝 src/browser/assets/LocalWebScriptArtifacts.ts (+5 -0)
📝 src/domain/artifactGraph.ts (+0 -1)
📝 src/domain/artifactIdentity.ts (+1 -3)
📝 src/domain/javascript/javascriptApplicationEvidenceSchemas.ts (+1 -1)
📝 src/domain/javascript/javascriptRuntimeReconciliationMatching.ts (+43 -7)
📝 src/domain/javascript/javascriptRuntimeReconciliationSchemas.ts (+2 -2)
📝 src/domain/javascript/javascriptRuntimeStaticCandidates.ts (+155 -9)
📝 src/domain/javascript/javascriptSemanticGraphSchemas.ts (+0 -1)
📝 src/domain/javascript/javascriptSourceMapPaths.ts (+11 -10)
📝 src/domain/javascript/sourceToBundleComparison.test.ts (+7 -5)
📝 src/domain/javascript/sourceToBundleSignals.ts (+42 -13)
📝 src/domain/referenceSourceGraph.test.ts (+51 -0)
📝 src/domain/referenceSourceGraph.ts (+18 -15)
📝 src/javascript/recovery/RecoveryFiles.ts (+5 -0)
📝 tests/boundary/cli/referenceSourceUtf8.test.ts (+146 -2)
➕ tests/boundary/filesystem/artifactLiteralBackslash.test.ts (+222 -0)
📝 tests/boundary/filesystem/javascript-applications/javascriptRuntimeReconciliation.test.ts (+482 -0)
➕ tests/boundary/filesystem/recoveryInputPaths.test.ts (+72 -0)

...and 3 more files

📄 Description

Summary

Fixes #2619. Preserve supported POSIX filenames containing literal backslashes through inventory, extraction, JavaScript graphs, runtime mapping, and historical reference import.

Problem and expected behavior

Directory and ASAR readers return a member such as literal\name.js intact, but shared path admission rejects the inventory. Downstream graph validators also reject that spelling, while several graph consumers reinterpret it as literal/name.js, causing false location matches or source-map paths. A recorded artifact name must retain the reader's identity.

Change and scope

Keep slash-separated logical names in the shared normalizer and inventory/application/semantic result validators. Refuse backslash interpretation at Windows output and saved-source read boundaries before host joins.

Artifact joins preserve an inventoried importer base, so a valid relative import resolves to its literal directory rather than a slash-named decoy. Runtime matching preserves owned artifact facts and POSIX paths. Raw loadFile declarations use application-root semantics and the captured native file format; their source-relative static inference is not promoted to an owned runtime target. Genuine resolved artifact facts suppress competing raw aliases. Runtime mappings accept safe logical backslash prefixes without decoding them. Native declaration lookup retains the mapped file-root suffix and uses source provenance only to constrain the selected application prefix; overlapping mapping interpretations remain uncertain. Source comparison uses resolved artifact facts instead of reinterpreting their raw declarations. Explicit scheme:// observation metadata keeps URL query/fragment handling, while canonical and resolved artifact identities remain exact. Source-map resolution preserves its exact artifact base and checks encoded separators in the parsed declaration pathname, keeping Windows, URL authority, and query semantics separate.

The runtime view leaves the existing static source-relative loadFile inference in the supplied graph and does not treat that derivation as owning target identity. This corrects existing inventory/reconstruction workflows; no separate maintainer scope decision is applicable. Historical entry and observed symlink-target validation accepts literal backslashes while retaining NUL, traversal, absolute-target, and membership checks. Internal symlink classification first verifies the exact or uniquely Unicode-equivalent relative inventory target, so an inventoried POSIX name resembling a Windows UNC path remains internal; unproven Windows external targets retain their existing classification. The reader already preserves these names; CLI failures on original base 729ca2ab6 prove this is a pre-existing contract gap. Raw import-specifier parsing, module/URL admission, and symlink authority/IO remain unchanged.

Contract and boundary impact

  • Semantic owners: logical artifact path admission, graph path contracts, host materialization/read boundaries, runtime/source comparison interpretation, and historical path result validation.
  • CLI/MCP: tool names and schema shapes unchanged; logical result validation accepts the preserved spelling.
  • Platform/Evidence: names, digests, and distinct slash/backslash identities remain intact. Windows ASAR component restrictions remain unchanged; host reads/writes reject literal backslashes before path interpretation. Wakaru multi-input snapshots retain the existing tool-specific refusal because the pinned engine folds these names into separators; single-input bundle.js snapshot naming is preserved.
  • Authority/cleanup: existing local reads and extraction output; no target execution, injection, or network effect added. Refused output streams close and owned trees roll back.
  • Generated metadata, package, installation, and breaking changes: none.

Expected effects:

  • Read existing files or captured data.
  • Change files through the existing extraction operation.

Evidence and regression coverage

Red regressions establish each affected boundary:

  • Base 729ca2ab6: directory and packed-ASAR inventory reject supported literal names with ArtifactReaderFailure reason path.
  • Saved-source loading accepts Windows backslash interpretation before the host guard.
  • Directory/ASAR JavaScript analysis throws on application/semantic graph path validation.
  • Runtime matching falsely matches a slash path to the literal name, or creates ambiguity when both exist.
  • Source comparison falsely correlates distinct historical/current names; root and nested literal source-map bases invent or change a directory.
  • Directory/ASAR imports under a literal-backslash directory select the slash-directory decoy.
  • A recorded Windows loadFile declaration fails to match; suppressing its raw declaration in favor of a source-relative inference also drops a legitimate application-root match from a nested module (compared against exact earlier head 7826656).
  • Logical backslash mapping prefixes are rejected; format-wide absolute-path admission drops a leading-backslash POSIX declaration.
  • Native renderer lookup misses nonempty prefixes or includes another application; an admitted decomposed Unicode prefix loses its candidate.
  • Historical import fails entry/observed-target validation for literal names on both this branch and original base 729ca2ab6. After admission, a real internal symlink to a UNC-looking POSIX filename fails target-state validation.
  • CI exposed two URL observation comparison regressions: unchanged original-base cases pass, this branch initially drops their candidates, and the format-owner correction restores them. The ZIP error fixture now uses genuine ../outside.js traversal; a positive inventory control keeps literal and slash names distinct.

Controls cover embedded/leading/doubled/nested backslashes, ordinary names, distinct slash paths, verified digests, extraction readback, cleanup, containment/collisions, recorded Windows roots, URL prefixes, UNC/source-map declarations, encoded URI authority data, and Windows native literal percent sequences, application-prefix isolation, overlapping mapping ambiguity, Unicode prefix equivalence, historical exact digests, input bytes unchanged, and observed symlink targets.

Built public CLI inspection/extraction and CLI/pinned-SDK MCP application analysis preserve literal\name.js; extraction readback matches, input bytes remain unchanged, and MCP ping succeeds afterward. Fresh independent agent review of the final diff found no remaining issue; remote CI and PR automatic review remain separate checks.

Validation performed

  • Expanded final regression suite, 85 related files: 915 passed, 47 explicit skips; 82 files passed, three skipped. Includes the exact failing CI files, all native artifact-provider tests, relevant ZIP/filesystem/CLI/MCP comparisons, and recovery/Wakaru contracts. Linux-only Wakaru integration/configuration/MCP tests were skipped on macOS; they were not counted as execution evidence.
  • The prior 73-file suite passed 760 tests with four platform skips. Wakaru snapshot red: one failed/two passed; owner correction: three passed, using real POSIX input bytes and a slash-named decoy. The existing Linux CI refusal test remains unchanged.
  • Focused symlink/CLI controls: 28 passed; URL/provider controls: 24 passed; unchanged original-base CI cases: 21 passed.
  • npm run build:cached, npm run typecheck, npm run knip, module-boundary and architecture guards: passed.
  • npm run verify:test-discovery: all 1,124 files discovered exactly once.
  • Changed-file lint, repository formatting, and git diff --check: passed.
  • npm run check: unchanged baseline lint error in src/dotnet/ManagedCilDecoding.test.ts:248 (162 function lines, maximum 150), reproduced on clean base.
  • npm run docs:check: unchanged Turkish README link drift, independently reproduced with prepared prerequisites on clean base.
  • Normal pre-commit formatting/lint passed. Normal pre-push fails on the same baseline managed-code lint error; publishing uses command-scoped HUSKY=0, without hook/global configuration changes.

macOS, Node 24.18.0/npm 11.16.0. Windows destination checks use the writer's explicit platform parameter; saved-source tests simulate Windows admission. Recorded Windows/runtime fixtures verify interpretation, not native Windows IO or live Electron behavior. Real Hopper/Ghidra were not run. The pinned Wakaru binary was not run locally; its audited source explicitly folds multi-input public names and importer bases from backslashes to slashes. The local snapshot refusal preserves the existing prelaunch contract without claiming engine support. No performance claim is made. OpenAI Codex prepared the implementation and automated verification; no human-authored implementation or human review is claimed.

Latest-head CI evidence

Head aadbe63d0c1c77fccfad1643453f1f4a0e28d85b: the final local related suite passed 915 tests with 47 explicit platform skips (82 files passed / three skipped). CI run 38478453214 completed with failing required checks; build, static checks, docs and the Windows lane passed. Real Linux recovery verified 12 CLI/MCP fixtures with Wakaru 1.14.0; this did not exercise a literal-backslash engine input. The real source-map lane also passed.

The executed merge was 8c0702e90f70a8aa13d24d1176b30d5dc8905f8d into base cd740a6764d24e466f31613c2cef3368c3f64cba. The remaining test failures have clean-base controls:

  • Source tests: nativeTypeBindings.test.ts:42 fails with a worker-startup ProviderAdapterError. Reproduced after locked installation on clean 4d98123279c5a6f5442c458307f5a3ec678fd49e, mirroring the source CI job's no-dist layout. The test, worker, workflow and package/config inputs are identical at the current base; the baseline comparison is public.
  • Shard 3: ciTestReports.test.ts:471 expects diagnostic stdout but receives an empty string. Reproduced on clean cd740a6 with GITHUB_STEP_SUMMARY directed to a temporary file: the unchanged report script writes the summary instead of stdout. One selected test failed; seven others were unselected, not platform skips.

The partial aggregate contains 7,974 passed / two failed / 30 skipped. Four sibling shards were cancelled by fail-fast and are absent from that report, so it is not complete all-green coverage. Required checks remain failing pending these upstream corrections.

Before merge

  • Concrete linked problem, focused outcome, and Conventional Commit title.
  • Scope and authority resolved within existing inventory/reconstruction behavior.
  • Observable behavior and meaningful refusal/cleanup paths covered.
  • Owning result contracts updated; no generated outputs committed.
  • Final diff checked for unrelated changes, secrets, 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/2994 **Author:** [@maxazure](https://github.com/maxazure) **Created:** 10/13/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `fix/artifacts-literal-backslash-2619` --- ### 📝 Commits (8) - [`bb9c156`](https://github.com/morluto/rea/commit/bb9c156adc180915c9a947502f54a55b4cd20ef5) fix(artifacts): preserve literal POSIX backslash names - [`405ffc2`](https://github.com/morluto/rea/commit/405ffc2767c32695b91d17867c6e381df2e9161a) fix(browser): retain Windows saved-source path admission - [`7826656`](https://github.com/morluto/rea/commit/782665630ce308882c40c27f3ac7a8fc1c6ef355) fix(javascript): preserve literal artifact names across graph consumers - [`3e75ad4`](https://github.com/morluto/rea/commit/3e75ad47bb1c2f71358d73aeab2eca67aa505bdf) fix(artifacts): preserve owning paths through joins and runtime mappings - [`7b74f88`](https://github.com/morluto/rea/commit/7b74f88d310734d3b2fcfb3bd5bf50b257e58cc0) fix(javascript): retain raw loadFile runtime path authority - [`61e77b0`](https://github.com/morluto/rea/commit/61e77b07880afe2668dd41252ba859fdb5580da6) fix(artifacts): scope renderer mappings and retain historical names - [`3bc87ca`](https://github.com/morluto/rea/commit/3bc87ca9fa18c8e75cabdda83702ffed881e798d) fix(artifacts): retain inventoried symlink and URL path semantics - [`aadbe63`](https://github.com/morluto/rea/commit/aadbe63d0c1c77fccfad1643453f1f4a0e28d85b) fix(wakaru): retain multi-input filename refusal ### 📊 Changes **23 files changed** (+1484 additions, -81 deletions) <details> <summary>View changed files</summary> 📝 `src/artifacts/ArtifactPaths.ts` (+3 -8) 📝 `src/artifacts/SafeOutputTree.ts` (+5 -0) 📝 `src/browser/assets/LocalWebScriptArtifacts.ts` (+5 -0) 📝 `src/domain/artifactGraph.ts` (+0 -1) 📝 `src/domain/artifactIdentity.ts` (+1 -3) 📝 `src/domain/javascript/javascriptApplicationEvidenceSchemas.ts` (+1 -1) 📝 `src/domain/javascript/javascriptRuntimeReconciliationMatching.ts` (+43 -7) 📝 `src/domain/javascript/javascriptRuntimeReconciliationSchemas.ts` (+2 -2) 📝 `src/domain/javascript/javascriptRuntimeStaticCandidates.ts` (+155 -9) 📝 `src/domain/javascript/javascriptSemanticGraphSchemas.ts` (+0 -1) 📝 `src/domain/javascript/javascriptSourceMapPaths.ts` (+11 -10) 📝 `src/domain/javascript/sourceToBundleComparison.test.ts` (+7 -5) 📝 `src/domain/javascript/sourceToBundleSignals.ts` (+42 -13) 📝 `src/domain/referenceSourceGraph.test.ts` (+51 -0) 📝 `src/domain/referenceSourceGraph.ts` (+18 -15) 📝 `src/javascript/recovery/RecoveryFiles.ts` (+5 -0) 📝 `tests/boundary/cli/referenceSourceUtf8.test.ts` (+146 -2) ➕ `tests/boundary/filesystem/artifactLiteralBackslash.test.ts` (+222 -0) 📝 `tests/boundary/filesystem/javascript-applications/javascriptRuntimeReconciliation.test.ts` (+482 -0) ➕ `tests/boundary/filesystem/recoveryInputPaths.test.ts` (+72 -0) _...and 3 more files_ </details> ### 📄 Description ## Summary Fixes #2619. Preserve supported POSIX filenames containing literal backslashes through inventory, extraction, JavaScript graphs, runtime mapping, and historical reference import. ## Problem and expected behavior Directory and ASAR readers return a member such as `literal\name.js` intact, but shared path admission rejects the inventory. Downstream graph validators also reject that spelling, while several graph consumers reinterpret it as `literal/name.js`, causing false location matches or source-map paths. A recorded artifact name must retain the reader's identity. ## Change and scope Keep slash-separated logical names in the shared normalizer and inventory/application/semantic result validators. Refuse backslash interpretation at Windows output and saved-source read boundaries before host joins. Artifact joins preserve an inventoried importer base, so a valid relative import resolves to its literal directory rather than a slash-named decoy. Runtime matching preserves owned artifact facts and POSIX paths. Raw `loadFile` declarations use application-root semantics and the captured native file format; their source-relative static inference is not promoted to an owned runtime target. Genuine resolved artifact facts suppress competing raw aliases. Runtime mappings accept safe logical backslash prefixes without decoding them. Native declaration lookup retains the mapped file-root suffix and uses source provenance only to constrain the selected application prefix; overlapping mapping interpretations remain uncertain. Source comparison uses resolved artifact facts instead of reinterpreting their raw declarations. Explicit `scheme://` observation metadata keeps URL query/fragment handling, while canonical and resolved artifact identities remain exact. Source-map resolution preserves its exact artifact base and checks encoded separators in the parsed declaration pathname, keeping Windows, URL authority, and query semantics separate. The runtime view leaves the existing static source-relative `loadFile` inference in the supplied graph and does not treat that derivation as owning target identity. This corrects existing inventory/reconstruction workflows; no separate maintainer scope decision is applicable. Historical entry and observed symlink-target validation accepts literal backslashes while retaining NUL, traversal, absolute-target, and membership checks. Internal symlink classification first verifies the exact or uniquely Unicode-equivalent relative inventory target, so an inventoried POSIX name resembling a Windows UNC path remains internal; unproven Windows external targets retain their existing classification. The reader already preserves these names; CLI failures on original base `729ca2ab6` prove this is a pre-existing contract gap. Raw import-specifier parsing, module/URL admission, and symlink authority/IO remain unchanged. ## Contract and boundary impact - Semantic owners: logical artifact path admission, graph path contracts, host materialization/read boundaries, runtime/source comparison interpretation, and historical path result validation. - CLI/MCP: tool names and schema shapes unchanged; logical result validation accepts the preserved spelling. - Platform/Evidence: names, digests, and distinct slash/backslash identities remain intact. Windows ASAR component restrictions remain unchanged; host reads/writes reject literal backslashes before path interpretation. Wakaru multi-input snapshots retain the existing tool-specific refusal because the pinned engine folds these names into separators; single-input `bundle.js` snapshot naming is preserved. - Authority/cleanup: existing local reads and extraction output; no target execution, injection, or network effect added. Refused output streams close and owned trees roll back. - Generated metadata, package, installation, and breaking changes: none. Expected effects: - [x] Read existing files or captured data. - [x] Change files through the existing extraction operation. ## Evidence and regression coverage Red regressions establish each affected boundary: - Base `729ca2ab6`: directory and packed-ASAR inventory reject supported literal names with `ArtifactReaderFailure` reason `path`. - Saved-source loading accepts Windows backslash interpretation before the host guard. - Directory/ASAR JavaScript analysis throws on application/semantic graph path validation. - Runtime matching falsely matches a slash path to the literal name, or creates ambiguity when both exist. - Source comparison falsely correlates distinct historical/current names; root and nested literal source-map bases invent or change a directory. - Directory/ASAR imports under a literal-backslash directory select the slash-directory decoy. - A recorded Windows `loadFile` declaration fails to match; suppressing its raw declaration in favor of a source-relative inference also drops a legitimate application-root match from a nested module (compared against exact earlier head `7826656`). - Logical backslash mapping prefixes are rejected; format-wide absolute-path admission drops a leading-backslash POSIX declaration. - Native renderer lookup misses nonempty prefixes or includes another application; an admitted decomposed Unicode prefix loses its candidate. - Historical import fails entry/observed-target validation for literal names on both this branch and original base `729ca2ab6`. After admission, a real internal symlink to a UNC-looking POSIX filename fails target-state validation. - CI exposed two URL observation comparison regressions: unchanged original-base cases pass, this branch initially drops their candidates, and the format-owner correction restores them. The ZIP error fixture now uses genuine `../outside.js` traversal; a positive inventory control keeps literal and slash names distinct. Controls cover embedded/leading/doubled/nested backslashes, ordinary names, distinct slash paths, verified digests, extraction readback, cleanup, containment/collisions, recorded Windows roots, URL prefixes, UNC/source-map declarations, encoded URI authority data, and Windows native literal percent sequences, application-prefix isolation, overlapping mapping ambiguity, Unicode prefix equivalence, historical exact digests, input bytes unchanged, and observed symlink targets. Built public CLI inspection/extraction and CLI/pinned-SDK MCP application analysis preserve `literal\name.js`; extraction readback matches, input bytes remain unchanged, and MCP ping succeeds afterward. Fresh independent agent review of the final diff found no remaining issue; remote CI and PR automatic review remain separate checks. ## Validation performed - Expanded final regression suite, 85 related files: **915 passed, 47 explicit skips; 82 files passed, three skipped**. Includes the exact failing CI files, all native artifact-provider tests, relevant ZIP/filesystem/CLI/MCP comparisons, and recovery/Wakaru contracts. Linux-only Wakaru integration/configuration/MCP tests were skipped on macOS; they were not counted as execution evidence. - The prior 73-file suite passed 760 tests with four platform skips. Wakaru snapshot red: one failed/two passed; owner correction: three passed, using real POSIX input bytes and a slash-named decoy. The existing Linux CI refusal test remains unchanged. - Focused symlink/CLI controls: 28 passed; URL/provider controls: 24 passed; unchanged original-base CI cases: 21 passed. - `npm run build:cached`, `npm run typecheck`, `npm run knip`, module-boundary and architecture guards: passed. - `npm run verify:test-discovery`: all 1,124 files discovered exactly once. - Changed-file lint, repository formatting, and `git diff --check`: passed. - `npm run check`: unchanged baseline lint error in `src/dotnet/ManagedCilDecoding.test.ts:248` (162 function lines, maximum 150), reproduced on clean base. - `npm run docs:check`: unchanged Turkish README link drift, independently reproduced with prepared prerequisites on clean base. - Normal pre-commit formatting/lint passed. Normal pre-push fails on the same baseline managed-code lint error; publishing uses command-scoped `HUSKY=0`, without hook/global configuration changes. macOS, Node 24.18.0/npm 11.16.0. Windows destination checks use the writer's explicit platform parameter; saved-source tests simulate Windows admission. Recorded Windows/runtime fixtures verify interpretation, not native Windows IO or live Electron behavior. Real Hopper/Ghidra were not run. The pinned Wakaru binary was not run locally; its audited source explicitly folds multi-input public names and importer bases from backslashes to slashes. The local snapshot refusal preserves the existing prelaunch contract without claiming engine support. No performance claim is made. OpenAI Codex prepared the implementation and automated verification; no human-authored implementation or human review is claimed. ## Latest-head CI evidence Head `aadbe63d0c1c77fccfad1643453f1f4a0e28d85b`: the final local related suite passed 915 tests with 47 explicit platform skips (82 files passed / three skipped). [CI run 38478453214](https://github.com/morluto/rea/actions/runs/38478453214) completed with failing required checks; build, static checks, docs and the [Windows lane](https://github.com/morluto/rea/actions/runs/38478453214/job/115577840012) passed. Real [Linux recovery](https://github.com/morluto/rea/actions/runs/38478453214/job/115576248658) verified 12 CLI/MCP fixtures with Wakaru 1.14.0; this did not exercise a literal-backslash engine input. The [real source-map lane](https://github.com/morluto/rea/actions/runs/38478453214/job/115576248831) also passed. The executed merge was `8c0702e90f70a8aa13d24d1176b30d5dc8905f8d` into base `cd740a6764d24e466f31613c2cef3368c3f64cba`. The remaining test failures have clean-base controls: - [Source tests](https://github.com/morluto/rea/actions/runs/38478453214/job/115575295668): [nativeTypeBindings.test.ts:42](https://github.com/morluto/rea/blob/cd740a6764d24e466f31613c2cef3368c3f64cba/src/application/javascript/nativeTypeBindings.test.ts#L42) fails with a worker-startup `ProviderAdapterError`. Reproduced after locked installation on clean `4d98123279c5a6f5442c458307f5a3ec678fd49e`, mirroring the source CI job's no-dist layout. The test, worker, workflow and package/config inputs are identical at the current base; the [baseline comparison](https://github.com/morluto/rea/compare/4d98123279c5a6f5442c458307f5a3ec678fd49e...cd740a6764d24e466f31613c2cef3368c3f64cba) is public. - [Shard 3](https://github.com/morluto/rea/actions/runs/38478453214/job/115576084720): [ciTestReports.test.ts:471](https://github.com/morluto/rea/blob/cd740a6764d24e466f31613c2cef3368c3f64cba/tests/boundary/filesystem/ciTestReports.test.ts#L471) expects diagnostic stdout but receives an empty string. Reproduced on clean `cd740a6` with `GITHUB_STEP_SUMMARY` directed to a temporary file: the unchanged [report script](https://github.com/morluto/rea/blob/cd740a6764d24e466f31613c2cef3368c3f64cba/scripts/ci/test-report.mjs#L140) writes the summary instead of stdout. One selected test failed; seven others were unselected, not platform skips. The partial aggregate contains 7,974 passed / two failed / 30 skipped. Four sibling shards were cancelled by fail-fast and are absent from that report, so it is not complete all-green coverage. Required checks remain failing pending these upstream corrections. ## Before merge - [x] Concrete linked problem, focused outcome, and Conventional Commit title. - [x] Scope and authority resolved within existing inventory/reconstruction behavior. - [x] Observable behavior and meaningful refusal/cleanup paths covered. - [x] Owning result contracts updated; no generated outputs committed. - [x] Final diff checked for unrelated changes, secrets, and unsupported claims. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-31 01:07:30 +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#5549
No description provided.