[PR #686] [CLOSED] fix(browser): respect metadata key and overwrite semantics #2167

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

📋 Pull Request Information

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

Base: main ← Head: fix/rea-web-metadata-keys-20261006


📝 Commits (1)

  • f7adcd3 fix(browser): respect metadata key and overwrite semantics

📊 Changes

3 files changed (+51 additions, -7 deletions)

View changed files

📝 src/domain/webBundleAnalyzer.test.ts (+33 -0)
📝 src/domain/webBundleAnalyzerAst.ts (+13 -4)
📝 src/domain/webBundleAnalyzerInspection.ts (+5 -3)

📄 Description

What changed

Captured browser metadata now distinguishes literal property keys from computed identifiers. Route findings and WebMCP schema property names no longer treat an identifier's spelling as its runtime key. WebMCP declaration fields follow object property order: final named values win; uncertain spread/computed writes and accessors invalidate earlier exact values; subsequent exact fields restore them. Known empty-string keys preserve unrelated fields.

Consumer evidence

The complete public CdpBrowserProvider.analyzeBundle on an owned page in actual Chrome 154 previously fabricated /not-a-route from { [path]: ... } where path is "description", reported "old" for a duplicated final name: "new", and invented a schema property named name from [name]. Afterward the false route disappears, the final name is "new", uncertain overwritten names remain null, and the computed literal route and empty-string-key controls survive.

Verification

  • Focused analyzer suite: 8 passed, including computed key, final field, spread/accessor and empty-key controls.
  • npm run check, npm run check:fast, git diff --check: passed.
  • Full npm run verify:browser: passed with actual Chrome and public CLI/stdio browser workflows.
  • Complete public provider capture and metadata assertions: passed.

No new tool, schema or execution authority. Hopper/Ghidra verification was not run because no binary provider behavior changes. AI assistance was used for investigation, implementation and verification. Hosted checks are pending on publication.


🔄 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/686 **Author:** [@rudycelekli](https://github.com/rudycelekli) **Created:** 10/6/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `fix/rea-web-metadata-keys-20261006` --- ### 📝 Commits (1) - [`f7adcd3`](https://github.com/morluto/rea/commit/f7adcd361097ed30c9389d7f516e34a8d645472c) fix(browser): respect metadata key and overwrite semantics ### 📊 Changes **3 files changed** (+51 additions, -7 deletions) <details> <summary>View changed files</summary> 📝 `src/domain/webBundleAnalyzer.test.ts` (+33 -0) 📝 `src/domain/webBundleAnalyzerAst.ts` (+13 -4) 📝 `src/domain/webBundleAnalyzerInspection.ts` (+5 -3) </details> ### 📄 Description ## What changed Captured browser metadata now distinguishes literal property keys from computed identifiers. Route findings and WebMCP schema property names no longer treat an identifier's spelling as its runtime key. WebMCP declaration fields follow object property order: final named values win; uncertain spread/computed writes and accessors invalidate earlier exact values; subsequent exact fields restore them. Known empty-string keys preserve unrelated fields. ## Consumer evidence The complete public `CdpBrowserProvider.analyzeBundle` on an owned page in actual Chrome 154 previously fabricated `/not-a-route` from `{ [path]: ... }` where `path` is `"description"`, reported `"old"` for a duplicated final `name: "new"`, and invented a schema property named `name` from `[name]`. Afterward the false route disappears, the final name is `"new"`, uncertain overwritten names remain null, and the computed literal route and empty-string-key controls survive. ## Verification - Focused analyzer suite: 8 passed, including computed key, final field, spread/accessor and empty-key controls. - `npm run check`, `npm run check:fast`, `git diff --check`: passed. - Full `npm run verify:browser`: passed with actual Chrome and public CLI/stdio browser workflows. - Complete public provider capture and metadata assertions: passed. No new tool, schema or execution authority. Hopper/Ghidra verification was not run because no binary provider behavior changes. AI assistance was used for investigation, implementation and verification. Hosted checks are pending on publication. --- <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:09 +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#2167
No description provided.