[PR #1379] [CLOSED] fix(setup): reject nonregular client configuration before reading #2840

Closed
opened 2026-10-17 21:10:55 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/1379
Author: @rudycelekli
Created: 10/9/2026
Status: ❌ Closed

Base: main ← Head: fix/client-config-regular-file-20261009


📝 Commits (1)

  • e1d6001 fix(setup): reject nonregular client configuration before reading

📊 Changes

6 files changed (+172 additions, -13 deletions)

View changed files

➕ src/application/ClientConfigurationFile.ts (+22 -0)
📝 src/application/ClientRegistrationStatus.ts (+11 -3)
📝 src/application/SetupClientConfiguration.ts (+12 -6)
📝 src/application/Uninstall.ts (+9 -3)
📝 src/application/UpdateMaintenance.ts (+2 -1)
➕ tests/acceptance/applications/clientConfigurationNonregular.test.ts (+116 -0)

📄 Description

Problem

A client configuration path can be a FIFO, or a symlink to one. doctor, setup and uninstall open it with ordinary readFile and wait indefinitely for a writer. The command never reaches its diagnostic or planned-action result.

Change

Use the existing regular-file admission/read primitive for all client configuration reads, including maintenance rereads and setup readback. It opens nonblocking, validates the same descriptor and closes it after reading. Project nonregular configuration into actionable client diagnostics. Preserve missing-file creation, ordinary files, owned symlink lifecycle, backups and disabled registrations.

Verification

  • Exact current main a9f5dad5 compiled runtime: actual writer-free mkfifo inputs time out in doctor/setup/uninstall at 5s; regular symlink setup/doctor/uninstall control passes.
  • Unchanged frozen public CLI regression: all four cases pass after. Nonregular fixtures remain intact and no backup is created; regular symlink and its unrelated setting are preserved.
  • Nine existing configuration/lifecycle owners: 146 pass / one platform skip.
  • npm run check, test discovery, npm pack --dry-run and installed npm run verify:package pass. Package verification includes planned/idempotent setup, backup/readback, failure recovery, symlink lifecycle, read-only update and MCP startup.
  • One combined after run had two startup deadline failures, including the regular control; unchanged isolated rerun passed. Both results retained; host contention is an inference, not proven cause.
  • Native FIFO proof is macOS arm64. Windows FIFO cases are explicitly skipped. Package fake-provider integration does not prove real Hopper/Ghidra behavior.
  • Later main through 39dabd06 does not modify these production owners. Hosted checks may still be pending.

AI assistance was used for investigation, implementation and verification.


🔄 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/1379 **Author:** [@rudycelekli](https://github.com/rudycelekli) **Created:** 10/9/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `fix/client-config-regular-file-20261009` --- ### 📝 Commits (1) - [`e1d6001`](https://github.com/morluto/rea/commit/e1d60011edcb6f186a18ca244d22655e8302fe76) fix(setup): reject nonregular client configuration before reading ### 📊 Changes **6 files changed** (+172 additions, -13 deletions) <details> <summary>View changed files</summary> ➕ `src/application/ClientConfigurationFile.ts` (+22 -0) 📝 `src/application/ClientRegistrationStatus.ts` (+11 -3) 📝 `src/application/SetupClientConfiguration.ts` (+12 -6) 📝 `src/application/Uninstall.ts` (+9 -3) 📝 `src/application/UpdateMaintenance.ts` (+2 -1) ➕ `tests/acceptance/applications/clientConfigurationNonregular.test.ts` (+116 -0) </details> ### 📄 Description ## Problem A client configuration path can be a FIFO, or a symlink to one. `doctor`, `setup` and `uninstall` open it with ordinary readFile and wait indefinitely for a writer. The command never reaches its diagnostic or planned-action result. ## Change Use the existing regular-file admission/read primitive for all client configuration reads, including maintenance rereads and setup readback. It opens nonblocking, validates the same descriptor and closes it after reading. Project nonregular configuration into actionable client diagnostics. Preserve missing-file creation, ordinary files, owned symlink lifecycle, backups and disabled registrations. ## Verification - Exact current main a9f5dad5 compiled runtime: actual writer-free mkfifo inputs time out in doctor/setup/uninstall at 5s; regular symlink setup/doctor/uninstall control passes. - Unchanged frozen public CLI regression: all four cases pass after. Nonregular fixtures remain intact and no backup is created; regular symlink and its unrelated setting are preserved. - Nine existing configuration/lifecycle owners: 146 pass / one platform skip. - `npm run check`, test discovery, `npm pack --dry-run` and installed `npm run verify:package` pass. Package verification includes planned/idempotent setup, backup/readback, failure recovery, symlink lifecycle, read-only update and MCP startup. - One combined after run had two startup deadline failures, including the regular control; unchanged isolated rerun passed. Both results retained; host contention is an inference, not proven cause. - Native FIFO proof is macOS arm64. Windows FIFO cases are explicitly skipped. Package fake-provider integration does not prove real Hopper/Ghidra behavior. - Later main through 39dabd06 does not modify these production owners. Hosted checks may still be pending. AI assistance was used for investigation, implementation and verification. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-17 21:10:55 +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#2840
No description provided.