[PR #4930] [MERGED] fix(ci): restore plist, verifier, and TOML capacity checks #6682

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

📋 Pull Request Information

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

Base: main ← Head: fix/ci-main-regressions-20261018


📝 Commits (2)

  • 8e10350 test(ci): align plist expectations and Ghidra prerequisites
  • c6664e3 fix(clients): trim TOML line endings without backtracking

📊 Changes

4 files changed (+21 additions, -9 deletions)

View changed files

📝 src/application/ClientConfigurationDocument.ts (+11 -4)
📝 src/domain/propertyListXml.test.ts (+3 -1)
📝 tests/boundary/filesystem/keyedArchiveSelection.test.ts (+5 -3)
📝 tests/boundary/process/verifierFileResources.test.ts (+2 -1)

📄 Description

Summary

Restore four main CI failures: plist formatting, a stale keyed-archive value assertion, a Ghidra prerequisite fixture, and quadratic TOML newline cleanup. Fixes #4931.

Problem and expected behavior

Main CI at 2183c9598 fails formatting and two deterministic boundary assertions. It also times out on Codex setup with 140,000 internal blank lines. The Codex timeout reproduces locally; a diagnostic CPU profile spends about 31.2 seconds in the trailing-LF regex.

Known NaN must retain its canonical observed identity; the Ghidra fixture must reach its deliberately missing JDK/install; and large valid TOML configuration must preserve caller text without repeated scans of internal blank-line runs.

Change and scope

  • Apply the pinned XML-test formatter and assert the existing typed NaN value, scalar/observed metadata, and current limitation.
  • Preserve host inspector PATH while retaining explicit absent JDK/install selections, isolated home directories, and the verifier's unavailable/malformed-output checks.
  • Replace both terminal-LF regex scans in the shared TOML serializer with one backward-scanning helper. Preserve existing LF/CRLF handling, source text, backups, and idempotence.

The scalar and process-ownership producers already implement their contracts; their test consumers were stale. The TOML performance correction is at the shared application owner used by setup/uninstall. No timeout, retry policy, test size, public schema, or installation authority changes. This is an ordinary bug fix; no new capability or maintainer scope decision is needed. All changes fit one main-CI recovery outcome; #4931 records the independently confirmed product cost.

Evidence and validation

Based on refreshed main 52b73ee85:

  • Original clean selection: 74 passed / 2 failed; the formatter separately returns exit 1. All 14 descriptor cleanup cases already pass on main; no additional descriptor fix is included.
  • Unchanged TOML capacity acceptance file before the correction: Codex times out at 30,136 ms, Grok passes. The 140,000-line fixtures and original 30-second test deadlines remain intact.
  • Final focused selection: 218/218 tests passed in 16 files, covering scalar/XML projection, archive selection, artifact/descriptor cleanup, Java probing, compiled verifier boundaries, actual integrity CLI workflows, BOM/dialect/transaction preservation, large inline/multiline TOML values, and public setup/uninstall workflows.
  • npm run check:ci — all eight tasks and architecture guards across 1,504 source files passed.
  • npm run docs:check — passed, including five README consistency tests.
  • git diff --check, normal commit hooks, and pre-push checks — passed.

Equivalent completed serializer work on the same 140,000-LF document:

Phase Before wall / CPU After wall / CPU
First call after module import 26.819 s / 26.636 s 85.4 ms / 120.1 ms
Warm repeat 22.601 s / 22.672 s 60.8 ms / 98.9 ms

Both runs parse the actual serializer output, verify the desired document and preserved source prefix, and produce the same 140,128-byte SHA-256 output. This measures the shared serializer rather than whole-process startup. Actual REA CLI Codex setup/uninstall completes under the original deadline after the fix (13.7 s in the final integrated run).

A separate baseline unknown-flag CLI case timed out once on GitHub; its unchanged seven-case CLI file passes locally, including the final selection. Its hosted timeout cause remains unconfirmed, with no speculative timing change included. Current-head CI remains the integration gate.

Current-head CI passed on c6664e30: 13 selected jobs succeeded, 18 policy-selected skips, attempt 1, no reruns. All five test shards, source/static checks, and Linux package verification passed. The unchanged capacity acceptance cases ran in hosted CI: Codex 4,233 ms and Grok 4,048 ms; the formerly timed-out unknown-flag CLI case passed in 986 ms. Codex reviewed this exact head with no findings; Greptile confidence is 5/5, with no unresolved threads.

Post-merge main CI at 1accac27: 36/36 jobs passed, attempt 1, no reruns or skips, including all five shards, native package lanes, Windows capability checks, and real Apple CLI/MCP E2E.

Compatibility and verification limits

Heavy local checks ran serially on two CPUs with 3 GiB Node heaps and a 7 GiB sampled family-RSS guard. Final focused run: 41.6 s wall / 68.7 s reaped CPU / 1.55 GiB sampled peak RSS. Complete static gate: 70.0 s / 103.4 s / 4.72 GiB. No guard stop or OOM. Measurements are on a shared host; sampled RSS may miss peaks or count shared pages more than once. Agent tokens and hosted CPU/memory are unmeasured.

Linux executes the compiled Ghidra prerequisite script against deliberately absent dependencies; this does not establish real disassembly behavior. Actual compiled REA CLI processes exercise authored ASAR and TOML workflows. Raw logs, profiles, and the English recap are retained under /tmp/rea-main-ci-repair-20261018/.

Author readiness

Human owner: @N0zoM1z0

These declarations record the human owner's explicit standing task instruction: “後續審閱,承擔,聲明 都同意!不用問我了”. No separate new human-review event is asserted.

  • 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

  • Concrete CI failures and their producing contracts are identified; the change has one maintenance outcome.
  • Scope and authority are resolved; no new provider or execution capability.
  • Regression checks retain meaningful evidence, uncertainty, rejection, and cleanup coverage.
  • Final diff checked for unrelated changes and unsupported claims.
  • Current-head CI and actionable automated review findings are resolved.

🔄 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/4930 **Author:** [@N0zoM1z0](https://github.com/N0zoM1z0) **Created:** 10/18/2026 **Status:** ✅ Merged **Merged:** 10/18/2026 **Merged by:** [@N0zoM1z0](https://github.com/N0zoM1z0) **Base:** `main` ← **Head:** `fix/ci-main-regressions-20261018` --- ### 📝 Commits (2) - [`8e10350`](https://github.com/morluto/rea/commit/8e103505be8d74db9bd5b383af0a11067647fb08) test(ci): align plist expectations and Ghidra prerequisites - [`c6664e3`](https://github.com/morluto/rea/commit/c6664e30c8fcf406f13e4275c93a81b3f470c0bd) fix(clients): trim TOML line endings without backtracking ### 📊 Changes **4 files changed** (+21 additions, -9 deletions) <details> <summary>View changed files</summary> 📝 `src/application/ClientConfigurationDocument.ts` (+11 -4) 📝 `src/domain/propertyListXml.test.ts` (+3 -1) 📝 `tests/boundary/filesystem/keyedArchiveSelection.test.ts` (+5 -3) 📝 `tests/boundary/process/verifierFileResources.test.ts` (+2 -1) </details> ### 📄 Description ## Summary Restore four main CI failures: plist formatting, a stale keyed-archive value assertion, a Ghidra prerequisite fixture, and quadratic TOML newline cleanup. Fixes #4931. ## Problem and expected behavior [Main CI at `2183c9598`](https://github.com/morluto/rea/actions/runs/39083000773) fails formatting and two deterministic boundary assertions. It also times out on Codex setup with 140,000 internal blank lines. The Codex timeout reproduces locally; a diagnostic CPU profile spends about 31.2 seconds in the trailing-LF regex. Known NaN must retain its canonical observed identity; the Ghidra fixture must reach its deliberately missing JDK/install; and large valid TOML configuration must preserve caller text without repeated scans of internal blank-line runs. ## Change and scope - Apply the pinned XML-test formatter and assert the existing typed NaN value, scalar/observed metadata, and current limitation. - Preserve host inspector PATH while retaining explicit absent JDK/install selections, isolated home directories, and the verifier's unavailable/malformed-output checks. - Replace both terminal-LF regex scans in the shared TOML serializer with one backward-scanning helper. Preserve existing LF/CRLF handling, source text, backups, and idempotence. The scalar and process-ownership producers already implement their contracts; their test consumers were stale. The TOML performance correction is at the shared application owner used by setup/uninstall. No timeout, retry policy, test size, public schema, or installation authority changes. This is an ordinary bug fix; no new capability or maintainer scope decision is needed. All changes fit one main-CI recovery outcome; #4931 records the independently confirmed product cost. ## Evidence and validation Based on refreshed main **`52b73ee85`**: - Original clean selection: **74 passed / 2 failed**; the formatter separately returns exit 1. All 14 descriptor cleanup cases already pass on main; no additional descriptor fix is included. - Unchanged TOML capacity acceptance file before the correction: Codex times out at **30,136 ms**, Grok passes. The 140,000-line fixtures and original 30-second test deadlines remain intact. - Final focused selection: **218/218 tests passed in 16 files**, covering scalar/XML projection, archive selection, artifact/descriptor cleanup, Java probing, compiled verifier boundaries, actual integrity CLI workflows, BOM/dialect/transaction preservation, large inline/multiline TOML values, and public setup/uninstall workflows. - `npm run check:ci` — all eight tasks and architecture guards across 1,504 source files passed. - `npm run docs:check` — passed, including five README consistency tests. - `git diff --check`, normal commit hooks, and pre-push checks — passed. Equivalent completed serializer work on the same 140,000-LF document: | Phase | Before wall / CPU | After wall / CPU | | --- | --- | --- | | First call after module import | 26.819 s / 26.636 s | 85.4 ms / 120.1 ms | | Warm repeat | 22.601 s / 22.672 s | 60.8 ms / 98.9 ms | Both runs parse the actual serializer output, verify the desired document and preserved source prefix, and produce the **same 140,128-byte SHA-256 output**. This measures the shared serializer rather than whole-process startup. Actual REA CLI Codex setup/uninstall completes under the original deadline after the fix (13.7 s in the final integrated run). A separate baseline unknown-flag CLI case timed out once on GitHub; its unchanged seven-case CLI file passes locally, including the final selection. Its hosted timeout cause remains unconfirmed, with no speculative timing change included. Current-head CI remains the integration gate. Current-head [CI](https://github.com/morluto/rea/actions/runs/39085222036) passed on `c6664e30`: **13 selected jobs succeeded, 18 policy-selected skips, attempt 1, no reruns**. All five test shards, source/static checks, and Linux package verification passed. The unchanged capacity acceptance cases ran in hosted CI: Codex 4,233 ms and Grok 4,048 ms; the formerly timed-out unknown-flag CLI case passed in 986 ms. Codex reviewed this exact head with no findings; Greptile confidence is 5/5, with no unresolved threads. Post-merge [main CI](https://github.com/morluto/rea/actions/runs/39086146739) at `1accac27`: **36/36 jobs passed, attempt 1, no reruns or skips**, including all five shards, native package lanes, Windows capability checks, and real Apple CLI/MCP E2E. ## Compatibility and verification limits Heavy local checks ran serially on two CPUs with 3 GiB Node heaps and a 7 GiB sampled family-RSS guard. Final focused run: **41.6 s wall / 68.7 s reaped CPU / 1.55 GiB sampled peak RSS**. Complete static gate: **70.0 s / 103.4 s / 4.72 GiB**. No guard stop or OOM. Measurements are on a shared host; sampled RSS may miss peaks or count shared pages more than once. Agent tokens and hosted CPU/memory are unmeasured. Linux executes the compiled Ghidra prerequisite script against deliberately absent dependencies; this does not establish real disassembly behavior. Actual compiled REA CLI processes exercise authored ASAR and TOML workflows. Raw logs, profiles, and the English recap are retained under `/tmp/rea-main-ci-repair-20261018/`. ## Author readiness Human owner: @N0zoM1z0 These declarations record the human owner's explicit standing task instruction: “後續審閱,承擔,聲明 都同意!不用問我了”. No separate new human-review event is asserted. - [x] I reviewed the final diff and relevant existing code, understand the change and its edge cases, and take responsibility for the complete PR, including AI-assisted work. - [x] I checked the evidence above, confirmed it supports the current change, and recorded meaningful validation gaps. - [x] I declare this PR ready for initial maintainer review. ## Before merge - [x] Concrete CI failures and their producing contracts are identified; the change has one maintenance outcome. - [x] Scope and authority are resolved; no new provider or execution capability. - [x] Regression checks retain meaningful evidence, uncertainty, rejection, and cleanup coverage. - [x] Final diff checked for unrelated changes and unsupported claims. - [x] Current-head CI and actionable automated review findings are resolved. --- <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:16 +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#6682
No description provided.