[PR #315] [MERGED] feat(process): compare repeatable paired experiments #1950

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

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/315
Author: @morluto
Created: 7/20/2026
Status: ✅ Merged
Merged: 7/20/2026
Merged by: @morluto

Base: main ← Head: codex/process-paired-experiments


📝 Commits (2)

  • 9ab7aa3 feat(process): compare repeatable paired experiments
  • a222327 docs: update paired process experiment API

📊 Changes

46 files changed (+1327 additions, -62 deletions)

View changed files

📝 docs/api/assets/hierarchy.js (+1 -1)
📝 docs/api/assets/navigation.js (+1 -1)
📝 docs/api/assets/search.js (+1 -1)
📝 docs/api/classes/application_BinarySession.BinarySession.html (+1 -1)
📝 docs/api/classes/application_BinarySessionRecords.BinarySessionRecords.html (+1 -1)
📝 docs/api/classes/application_PermissionAuthority.PermissionPathError.html (+1 -1)
📝 docs/api/classes/application_ProcessCaptureError.ProcessCaptureError.html (+1 -1)
📝 docs/api/classes/application_ProjectPermissionStore.ProjectPermissionStoreError.html (+1 -1)
📝 docs/api/classes/browser_BrowserProcessStartup.BrowserStartupError.html (+1 -1)
📝 docs/api/classes/ghidra_GhidraLauncher.GhidraLaunchError.html (+1 -1)
📝 docs/api/classes/ghidra_GhidraSessionError.GhidraSessionError.html (+1 -1)
📝 docs/api/classes/ghidra_protocol.GhidraRemoteError.html (+1 -1)
➕ docs/api/functions/application_ProcessPairedExperiment.runPairedProcessExperiment.html (+46 -0)
📝 docs/api/functions/domain_processComparison.compareProcessCaptures.html (+1 -1)
➕ docs/api/functions/domain_processComparison.processDimensionObservations.html (+45 -0)
➕ docs/api/functions/domain_processPairedExperiment.analyzeProcessRepeatability.html (+45 -0)
➕ docs/api/functions/domain_processPairedExperiment.bindProcessScenario.html (+45 -0)
📝 docs/api/hierarchy.html (+31 -31)
📝 docs/api/index.html (+2 -2)
📝 docs/api/interfaces/application_AnalysisProvider.AnalysisClient.html (+1 -1)

...and 26 more files

📄 Description

Description

Add a repeatability-first workflow for comparing an authority process with a candidate under one parsed scenario contract. Each side is captured repeatedly through the existing process-capture seam; a full cross-side comparison is returned only when every reported dimension is required and stable on both sides.

The workflow distinguishes timing-only variance from semantic drift using schema-owned timing fields, propagates cancellation through the capture seam, and selects the newest stable captures for freshness-gated comparison. It does not add a CLI or MCP command in this slice.

This is a focused current-main replacement slice from draft #311.

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)
  • 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)

Focused validation passed: 36 tests across processPairedExperiment.test.ts and processCapture.test.ts, plus npm run knip and generated-document checks.

The full suite was attempted and reached unrelated integration timeout failures in runtime.test.ts, browserCli.test.ts, and sessionMcp.test.ts; those files are unchanged here and are addressed by #312.

Real Hopper and browser verification were not required because this slice composes the existing process-capture seam and changes neither provider.

Tool Contract Impact

None. No MCP tool is added or changed.

Refs #311


🔄 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/315 **Author:** [@morluto](https://github.com/morluto) **Created:** 7/20/2026 **Status:** ✅ Merged **Merged:** 7/20/2026 **Merged by:** [@morluto](https://github.com/morluto) **Base:** `main` ← **Head:** `codex/process-paired-experiments` --- ### 📝 Commits (2) - [`9ab7aa3`](https://github.com/morluto/rea/commit/9ab7aa320c2f234e86d16ff8535b11768a0e080e) feat(process): compare repeatable paired experiments - [`a222327`](https://github.com/morluto/rea/commit/a222327f304555104b51370d0955dc6c8ca4d0ce) docs: update paired process experiment API ### 📊 Changes **46 files changed** (+1327 additions, -62 deletions) <details> <summary>View changed files</summary> 📝 `docs/api/assets/hierarchy.js` (+1 -1) 📝 `docs/api/assets/navigation.js` (+1 -1) 📝 `docs/api/assets/search.js` (+1 -1) 📝 `docs/api/classes/application_BinarySession.BinarySession.html` (+1 -1) 📝 `docs/api/classes/application_BinarySessionRecords.BinarySessionRecords.html` (+1 -1) 📝 `docs/api/classes/application_PermissionAuthority.PermissionPathError.html` (+1 -1) 📝 `docs/api/classes/application_ProcessCaptureError.ProcessCaptureError.html` (+1 -1) 📝 `docs/api/classes/application_ProjectPermissionStore.ProjectPermissionStoreError.html` (+1 -1) 📝 `docs/api/classes/browser_BrowserProcessStartup.BrowserStartupError.html` (+1 -1) 📝 `docs/api/classes/ghidra_GhidraLauncher.GhidraLaunchError.html` (+1 -1) 📝 `docs/api/classes/ghidra_GhidraSessionError.GhidraSessionError.html` (+1 -1) 📝 `docs/api/classes/ghidra_protocol.GhidraRemoteError.html` (+1 -1) ➕ `docs/api/functions/application_ProcessPairedExperiment.runPairedProcessExperiment.html` (+46 -0) 📝 `docs/api/functions/domain_processComparison.compareProcessCaptures.html` (+1 -1) ➕ `docs/api/functions/domain_processComparison.processDimensionObservations.html` (+45 -0) ➕ `docs/api/functions/domain_processPairedExperiment.analyzeProcessRepeatability.html` (+45 -0) ➕ `docs/api/functions/domain_processPairedExperiment.bindProcessScenario.html` (+45 -0) 📝 `docs/api/hierarchy.html` (+31 -31) 📝 `docs/api/index.html` (+2 -2) 📝 `docs/api/interfaces/application_AnalysisProvider.AnalysisClient.html` (+1 -1) _...and 26 more files_ </details> ### 📄 Description ## Description Add a repeatability-first workflow for comparing an authority process with a candidate under one parsed scenario contract. Each side is captured repeatedly through the existing process-capture seam; a full cross-side comparison is returned only when every reported dimension is required and stable on both sides. The workflow distinguishes timing-only variance from semantic drift using schema-owned timing fields, propagates cancellation through the capture seam, and selects the newest stable captures for freshness-gated comparison. It does not add a CLI or MCP command in this slice. This is a focused current-main replacement slice from draft #311. ## Type of Change - [ ] Bug fix - [x] New feature - [x] Documentation update - [ ] Performance improvement - [ ] 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`) - [ ] Full test suite passes (`npm test`) - [ ] 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`) Focused validation passed: 36 tests across `processPairedExperiment.test.ts` and `processCapture.test.ts`, plus `npm run knip` and generated-document checks. The full suite was attempted and reached unrelated integration timeout failures in `runtime.test.ts`, `browserCli.test.ts`, and `sessionMcp.test.ts`; those files are unchanged here and are addressed by #312. Real Hopper and browser verification were not required because this slice composes the existing process-capture seam and changes neither provider. ## Tool Contract Impact None. No MCP tool is added or changed. ## Related Issues Refs #311 --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-16 21:12:48 +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#1950
No description provided.