[PR #467] [MERGED] fix: harden structured configuration comparisons #2013

Closed
opened 2026-10-16 21:13:22 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/467
Author: @morluto
Created: 8/9/2026
Status: ✅ Merged
Merged: 8/9/2026
Merged by: @morluto

Base: main ← Head: agent/audit-reliability-hotspots


📝 Commits (4)

  • f0d47dc refactor(process): split ownership observation helpers
  • 6a18630 fix: compare structured configuration canonically
  • a84eb55 test(conformance): tolerate Markdown line wrapping
  • 4def3c9 refactor: name caught values explicitly

📊 Changes

15 files changed (+319 additions, -199 deletions)

View changed files

📝 src/application/ReferenceSourceImport.ts (+2 -2)
📝 src/application/SetupClientConfiguration.ts (+6 -2)
📝 src/browser/PlaywrightBrowserScenarioProvider.ts (+2 -2)
📝 src/browser/PlaywrightScenarioBrowser.ts (+4 -4)
📝 src/browser/PlaywrightScenarioSession.ts (+4 -4)
📝 src/domain/processComparison.ts (+16 -6)
📝 src/domain/referenceSourceImportParsing.ts (+2 -2)
📝 src/process/ProcessOwnership.ts (+24 -173)
➕ src/process/ProcessOwnershipIdentity.ts (+25 -0)
➕ src/process/ProcessOwnershipObservation.ts (+117 -0)
➕ src/process/ProcessOwnershipProcessTree.ts (+30 -0)
📝 tests/acceptance/setup/setupLifecycle.test.ts (+26 -0)
📝 tests/boundary/process/processCaptureComparison.test.ts (+20 -0)
📝 tests/composition/setup-lifecycle/setupConfig.test.ts (+33 -0)
📝 tests/conformance/readmeConsistency.test.ts (+8 -4)

📄 Description

Description

Prevent equivalent structured values with different member order from being treated as configuration or process-capture changes. The setup transaction now uses canonical JSON, so reordered environment keys do not rewrite client configuration or create a backup; process-capture comparison uses the same semantic equality for normalization and observation records.

The process-ownership facade is split into identity, process-tree, and observation helpers without changing its public API. The conformance test now normalizes prose whitespace before checking documentation phrases, avoiding failures caused only by Markdown line wrapping. Caught values in the touched parsing and browser paths are explicitly typed as unknown.

Type of Change

  • Bug fix
  • New feature
  • Documentation update
  • Performance improvement
  • Refactoring (no functional change)
  • Tool contract change (MCP schema modification)

Testing Performed

  • Unit tests added or updated
  • TypeScript typecheck passes (npm run typecheck)
  • Linting passes (npm run lint)
  • Full test suite passes (npm test) — 326 files, 1,669 tests
  • Real Hopper verification performed (npm run verify:hopper)
  • Linux real Hopper verification performed (npm run verify:hopper:linux) or unavailability explained
  • Real browser verification performed (npm run verify:browser) or unavailability explained
  • Package verification performed (npm run verify:package)

Tool Contract Impact

None.

None.


🔄 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/467 **Author:** [@morluto](https://github.com/morluto) **Created:** 8/9/2026 **Status:** ✅ Merged **Merged:** 8/9/2026 **Merged by:** [@morluto](https://github.com/morluto) **Base:** `main` ← **Head:** `agent/audit-reliability-hotspots` --- ### 📝 Commits (4) - [`f0d47dc`](https://github.com/morluto/rea/commit/f0d47dc34981f089b04b6d443ebd1b25c63626c3) refactor(process): split ownership observation helpers - [`6a18630`](https://github.com/morluto/rea/commit/6a18630b835437cde8705bf115e63d4760968f2e) fix: compare structured configuration canonically - [`a84eb55`](https://github.com/morluto/rea/commit/a84eb554841657bc8db1f4662becb4292d020742) test(conformance): tolerate Markdown line wrapping - [`4def3c9`](https://github.com/morluto/rea/commit/4def3c9606a7f1a9cd1a6dd2e990261e3209e11b) refactor: name caught values explicitly ### 📊 Changes **15 files changed** (+319 additions, -199 deletions) <details> <summary>View changed files</summary> 📝 `src/application/ReferenceSourceImport.ts` (+2 -2) 📝 `src/application/SetupClientConfiguration.ts` (+6 -2) 📝 `src/browser/PlaywrightBrowserScenarioProvider.ts` (+2 -2) 📝 `src/browser/PlaywrightScenarioBrowser.ts` (+4 -4) 📝 `src/browser/PlaywrightScenarioSession.ts` (+4 -4) 📝 `src/domain/processComparison.ts` (+16 -6) 📝 `src/domain/referenceSourceImportParsing.ts` (+2 -2) 📝 `src/process/ProcessOwnership.ts` (+24 -173) ➕ `src/process/ProcessOwnershipIdentity.ts` (+25 -0) ➕ `src/process/ProcessOwnershipObservation.ts` (+117 -0) ➕ `src/process/ProcessOwnershipProcessTree.ts` (+30 -0) 📝 `tests/acceptance/setup/setupLifecycle.test.ts` (+26 -0) 📝 `tests/boundary/process/processCaptureComparison.test.ts` (+20 -0) 📝 `tests/composition/setup-lifecycle/setupConfig.test.ts` (+33 -0) 📝 `tests/conformance/readmeConsistency.test.ts` (+8 -4) </details> ### 📄 Description ## Description Prevent equivalent structured values with different member order from being treated as configuration or process-capture changes. The setup transaction now uses canonical JSON, so reordered environment keys do not rewrite client configuration or create a backup; process-capture comparison uses the same semantic equality for normalization and observation records. The process-ownership facade is split into identity, process-tree, and observation helpers without changing its public API. The conformance test now normalizes prose whitespace before checking documentation phrases, avoiding failures caused only by Markdown line wrapping. Caught values in the touched parsing and browser paths are explicitly typed as `unknown`. ## Type of Change - [x] Bug fix - [ ] New feature - [ ] Documentation update - [ ] Performance improvement - [x] Refactoring (no functional change) - [ ] Tool contract change (MCP schema modification) ## Testing Performed - [x] Unit tests added or updated - [x] TypeScript typecheck passes (`npm run typecheck`) - [x] Linting passes (`npm run lint`) - [x] Full test suite passes (`npm test`) — 326 files, 1,669 tests - [ ] Real Hopper verification performed (`npm run verify:hopper`) - [ ] Linux real Hopper verification performed (`npm run verify:hopper:linux`) or unavailability explained - [ ] Real browser verification performed (`npm run verify:browser`) or unavailability explained - [ ] Package verification performed (`npm run verify:package`) ## Tool Contract Impact None. ## Related Issues None. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-16 21:13:22 +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#2013
No description provided.