[PR #706] [MERGED] fix(evidence): admit current process provider identity #2186

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

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/706
Author: @kaoru0822-kitauji
Created: 10/6/2026
Status: ✅ Merged
Merged: 10/6/2026
Merged by: @kaoru0822-kitauji

Base: main ← Head: fix/process-evidence-provider-identity


📝 Commits (1)

  • d311940 fix(evidence): admit current process provider identity

📊 Changes

7 files changed (+419 additions, -23 deletions)

View changed files

📝 src/application/ProcessEvidence.ts (+2 -6)
📝 src/domain/changedBehavior.ts (+10 -6)
➕ src/domain/processEvidenceProvider.test.ts (+32 -0)
➕ src/domain/processEvidenceProvider.ts (+17 -0)
📝 src/domain/reconstructionVerification.ts (+10 -5)
📝 src/domain/staticRuntimeCorrelation.ts (+11 -6)
➕ tests/boundary/mcp/processEvidenceIdentityMcp.test.ts (+337 -0)

📄 Description

Summary

Allow the public process-comparison producer's current provider identity through the three investigation consumers, while preserving exact legacy v3 compatibility.

No separate issue: this is a reproduced producer/consumer contract mismatch.

Problem and expected behavior

#572 renamed the process provider to REA process capture while retaining rea-process, version 3, and the process-comparison predicate. Three consumers still require REA deterministic process harness.

As a result, the exact Evidence returned by public compare_process_captures is rejected as invalid_request by find_changed_behavior, correlate_static_and_runtime, and verify_reconstruction. Changing only the name to the legacy spelling and correctly recomputing the Evidence ID makes that same valid comparison pass.

Change and scope

Move the canonical process identity into the domain layer, keeping the existing application PROCESS_PROVIDER export as a re-export.

Use one process-specific matcher in the three admission branches: exact provider ID, version 3, and either the exact current name or exact legacy name. Other provider matching remains unchanged.

This is compatibility for records satisfying the current v3 schema and admission rules; it does not restore removed replay features or introduce prefix/generalized provider matching.

Contract and boundary impact

  • Semantic owner: process-comparison Evidence identity shared by producer and domain consumers.
  • CLI/MCP: actual public comparison results can be composed through all three investigation tools; no schemas or tools change.
  • Layering/API: canonical identity moves inward; the existing application export retains the same public object/value.
  • Evidence/provenance: operation, predicate, ID/version, authority/confidence, null-subject, result-schema, semantic digest, citation, parameter, source-coverage and session-closure checks remain enforced.
  • Process/authorization/cleanup: no provider execution or new authority.
  • Generated metadata/package: unchanged.

Evidence and regression coverage

The new MCP suite fails two current-name cases on unchanged main cf06115, while 22 controls pass. A separate baseline reproducer checks rejection through each of the three routes independently.

Tests use owned valid capture JSON fixtures, the public file-comparison workflow, and an in-memory MCP SDK client/server. CLI-service and MCP comparison Evidence are equal, then the exact returned Evidence is consumed by all three tools.

Both exact provider names are covered. Ten independently rehashed invalid identity/authority variants per name are rejected across all three routes: unrelated name/ID, old/future/missing version, wrong predicate/operation, non-null subject, wrong confidence and wrong authority. Separate digest tampering is rejected before admission through validator/session/bundle boundaries.

Validation performed

  • Focused identity, domain, application and MCP suites: 83 tests passed across 12 files.
  • Build and npm run check: passed; all five tasks succeeded (106 warnings, no errors).
  • npm run jscpd, npm run scan:todos, and git diff --check: passed.
  • Built application provider export is the same object as the domain identity, with unchanged public values.
  • Independent review completed before publication with no blocking findings.

Node.js 24.19.0, npm 11.9.0, exact locked dependencies. Hosted CI is tracked separately; no full local suite pass is claimed.

Compatibility, safety, and release

No schema, dependency, packaging, runtime-ownership or execution-authority changes. Fixtures contain synthetic valid capture data; no binary provider or browser was launched. Package-install and real-provider lanes were not rerun for this identity-admission correction.

Prepared with AI assistance.


🔄 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/706 **Author:** [@kaoru0822-kitauji](https://github.com/kaoru0822-kitauji) **Created:** 10/6/2026 **Status:** ✅ Merged **Merged:** 10/6/2026 **Merged by:** [@kaoru0822-kitauji](https://github.com/kaoru0822-kitauji) **Base:** `main` ← **Head:** `fix/process-evidence-provider-identity` --- ### 📝 Commits (1) - [`d311940`](https://github.com/morluto/rea/commit/d311940f2414fe5cceb750de4464b681bb44ae1e) fix(evidence): admit current process provider identity ### 📊 Changes **7 files changed** (+419 additions, -23 deletions) <details> <summary>View changed files</summary> 📝 `src/application/ProcessEvidence.ts` (+2 -6) 📝 `src/domain/changedBehavior.ts` (+10 -6) ➕ `src/domain/processEvidenceProvider.test.ts` (+32 -0) ➕ `src/domain/processEvidenceProvider.ts` (+17 -0) 📝 `src/domain/reconstructionVerification.ts` (+10 -5) 📝 `src/domain/staticRuntimeCorrelation.ts` (+11 -6) ➕ `tests/boundary/mcp/processEvidenceIdentityMcp.test.ts` (+337 -0) </details> ### 📄 Description ## Summary Allow the public process-comparison producer's current provider identity through the three investigation consumers, while preserving exact legacy v3 compatibility. No separate issue: this is a reproduced producer/consumer contract mismatch. ## Problem and expected behavior #572 renamed the process provider to `REA process capture` while retaining `rea-process`, version `3`, and the process-comparison predicate. Three consumers still require `REA deterministic process harness`. As a result, the exact Evidence returned by public `compare_process_captures` is rejected as `invalid_request` by `find_changed_behavior`, `correlate_static_and_runtime`, and `verify_reconstruction`. Changing only the name to the legacy spelling and correctly recomputing the Evidence ID makes that same valid comparison pass. ## Change and scope Move the canonical process identity into the domain layer, keeping the existing application `PROCESS_PROVIDER` export as a re-export. Use one process-specific matcher in the three admission branches: exact provider ID, version 3, and either the exact current name or exact legacy name. Other provider matching remains unchanged. This is compatibility for records satisfying the current v3 schema and admission rules; it does not restore removed replay features or introduce prefix/generalized provider matching. ## Contract and boundary impact - Semantic owner: process-comparison Evidence identity shared by producer and domain consumers. - CLI/MCP: actual public comparison results can be composed through all three investigation tools; no schemas or tools change. - Layering/API: canonical identity moves inward; the existing application export retains the same public object/value. - Evidence/provenance: operation, predicate, ID/version, authority/confidence, null-subject, result-schema, semantic digest, citation, parameter, source-coverage and session-closure checks remain enforced. - Process/authorization/cleanup: no provider execution or new authority. - Generated metadata/package: unchanged. ## Evidence and regression coverage The new MCP suite fails two current-name cases on unchanged main `cf06115`, while 22 controls pass. A separate baseline reproducer checks rejection through each of the three routes independently. Tests use owned valid capture JSON fixtures, the public file-comparison workflow, and an in-memory MCP SDK client/server. CLI-service and MCP comparison Evidence are equal, then the exact returned Evidence is consumed by all three tools. Both exact provider names are covered. Ten independently rehashed invalid identity/authority variants per name are rejected across all three routes: unrelated name/ID, old/future/missing version, wrong predicate/operation, non-null subject, wrong confidence and wrong authority. Separate digest tampering is rejected before admission through validator/session/bundle boundaries. ## Validation performed - Focused identity, domain, application and MCP suites: 83 tests passed across 12 files. - Build and `npm run check`: passed; all five tasks succeeded (106 warnings, no errors). - `npm run jscpd`, `npm run scan:todos`, and `git diff --check`: passed. - Built application provider export is the same object as the domain identity, with unchanged public values. - Independent review completed before publication with no blocking findings. Node.js 24.19.0, npm 11.9.0, exact locked dependencies. Hosted CI is tracked separately; no full local suite pass is claimed. ## Compatibility, safety, and release No schema, dependency, packaging, runtime-ownership or execution-authority changes. Fixtures contain synthetic valid capture data; no binary provider or browser was launched. Package-install and real-provider lanes were not rerun for this identity-admission correction. Prepared with AI assistance. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-16 21:15:24 +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#2186
No description provided.