# PR 29466 runtime transcript: findEasProjectId before/after

Before `c8a601c0dfa5c7626e51e06d727076f6b840a005` (main, merge-base) · After `9544eafae3b4db17e3e826cb3a7fb90612746f45` (PR head) · Node v26.13.0 · linux x64 6.1.102 · captured 2026-11-02T20:31:12.302Z

A = app.json's top-level `expo.extra.eas.projectId`; B = a different id nested elsewhere in app.json. Synthetic fixtures only.

| Row | Fixture | Before | After | Expected |
|---|---|---|---|---|
| F01 | Typed variant, nested objects and plugin array | None | Some(A) | ✓ |
| F02 | First keyed object spread only | None | Some(A) | ✓ |
| F03 | First array spread only | None | Some(A) | ✓ |
| F04 | Quoted key, optional deep path and filler | None | None | ✓ |
| F05 | One-line JSDoc type only | None | Some(A) | ✓ |
| F06 | Multi-line JSDoc type only | None | Some(A) | ✓ |
| F07 | Line-comment type only | None | Some(A) | ✓ |
| F08 | TypeScript type, double quote and whitespace | None | Some(A) | ✓ |
| F09 | Top-level config part may replace extra | None | None | ✓ |
| F10 | Config method call is not a part | None | None | ✓ |
| F11 | Part spread later in keyed object | None | None | ✓ |
| F12 | Part spread later in array | None | None | ✓ |
| F13 | Bracket part is unsupported | None | None | ✓ |
| F14 | Only config-part spread, no whole-config spread | None | None | ✓ |
| F15 | Protected holder replaced with another part | None | None | ✓ |
| F16 | Other dynamic import remains unknown | None | None | ✓ |
| F17 | Expo import without capitalized member remains unknown | None | None | ✓ |
| F18 | Template line looks like a comment but assigns extra | None | None | ✓ |
| F19 | Static JSON success control | Some(A) | Some(A) | ✓ |
| F20 | Whole-config inheritance success control | Some(A) | Some(A) | ✓ |
| F21 | Literal ID is read without executing config | Some(A) | Some(A) | ✓ |
| F22 | Existing extra/eas preservation | Some(A) | Some(A) | ✓ |
| F23 | Changed app plus disagreeing second app | None | None | ✓ |
| F24 | Changed app plus agreeing second app | None | Some(A) | ✓ |
| F25 | Stale project ID comment remains ambiguous | None | None | ✓ |
| F26 | Expo wrapper around config.preview (new head regression row) | None | None | ✓ |
| F27 | Part spread into an expo entry with a matching name (round-3 finding) | None | None | ✓ |
| F28 | Part spread into a computed key (round-3 finding) | None | None | ✓ |
