LearnNewsExamplesServices
Frontmatter
id14830
titleFix NeuralLinkChildappConnect hidden viewport proof
stateClosed
labels
bugaitesting
assigneesneo-gpt
createdAt6:43 AM
updatedAt1:17 PM
githubUrlhttps://github.com/neomjs/neo/issues/14830
authorneo-gpt
commentsCount0
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAt1:17 PM

Fix NeuralLinkChildappConnect hidden viewport proof

Closed Backlog/active-chunk-4 bugaitesting
neo-gpt
neo-gpt commented on 6:43 AM

Context

PR #14828 merged the operator-directed removal of the constrained-blueprint create spine from apps/agentos and closed #14826. During exact-head review of f5e81c857fd8fd91a8455988bc9a102f5bcf8926, the removal shape was mostly correct, but the replacement childapp-connect e2e proof failed locally after the PR moved NeuralLinkChildappConnect.spec.mjs from the removed AgentOS widget fixture to apps/colors/childapps/widget.

This ticket captures the post-merge test repair requested after #14828 merged. It is intentionally narrow: restore the Neural Link childapp-connect proof without reopening the removed create-spine product direction.

The Problem

test/playwright/e2e/NeuralLinkChildappConnect.spec.mjs now navigates to /apps/colors/childapps/widget/index.html and waits for .neo-viewport to be visible before connecting through the Neural Link fixture. On exact-head local e2e, that wait times out:

TimeoutError: page.waitForSelector: Timeout 30000ms exceeded.
waiting for locator('.neo-viewport') to be visible
locator resolved to hidden <div id="colors-widget-viewport" class="neo-viewport ..."></div>

The failure occurs before neuralLink.connectToApp('colors') and before the getComponent('colors-widget-viewport', ['className', 'ntype']) assertion. That means the intended replacement proof for childapp connection did not actually execute, even though the production removal PR was otherwise mergeable.

Related evidence from the same exact-head review run:

  • NeuralLinkCreateGrid.spec.mjs passed.
  • NeuralLinkWindowOps.spec.mjs passed, proving the restored bare apps/agentos/childapps/widget popup host still supports the multi-window path.
  • NeuralLinkChildappConnect.spec.mjs failed on the visibility wait above.

The Architectural Reality

The childapp-connect test is a Neural Link / SharedWorker topology proof, not a visual-layout proof. The important contract is that a childapp sharing a worker can be reached through neuralLink.connectToApp(...) and that a live component can be read back through the session.

The colors childapp now provides a stable root id:

  • apps/colors/childapps/widget/view/Viewport.mjs declares id: 'colors-widget-viewport'.
  • apps/colors/childapps/widget/neo-config.json enables useAiClient.
  • test/playwright/e2e/NeuralLinkChildappConnect.spec.mjs reads back ColorsWidget.view.Viewport by id.

An empty viewport may be attached but not visible. If the test is proving Neural Link childapp connectivity, it should wait for the stable component/DOM anchor that represents app boot and then assert engine truth through Neural Link. If visible viewport layout is intended to be part of the contract, the fixture should be made visibly mounted and the reason documented in the test.

The Fix

Repair test/playwright/e2e/NeuralLinkChildappConnect.spec.mjs so it passes against the merged #14828 tree while preserving the original proof:

  • Prefer a whitebox-friendly boot wait such as #colors-widget-viewport attached before the Neural Link readback, unless visibility is intentionally part of the proof.
  • Keep the Neural Link assertion against colors-widget-viewport and ColorsWidget.view.Viewport.
  • Avoid reusing the deleted apps/agentos/childapps/widget funnel content or restoring any create-spine fixture.
  • If the colors childapp should be visibly mounted, make the minimal fixture-side change and document why visibility is part of this e2e contract.

Contract Ledger

Target Surface Source of Authority Proposed Behavior Fallback Docs Evidence
test/playwright/e2e/NeuralLinkChildappConnect.spec.mjs #14828 review evidence + #14826 coverage-preservation intent Prove connectToApp resolves a childapp and reads the live colors widget viewport If visibility is required, make the fixture visible and document that contract Test JSDoc in the spec Focused e2e pass
apps/colors/childapps/widget/view/Viewport.mjs #14828 moved fixture Stable root id remains available for Neural Link readback Use another non-funnel childapp fixture only if colors cannot satisfy the contract Existing JSDoc Focused e2e pass

Decision Record impact

none. This is a post-merge e2e repair for an existing Neural Link proof; it does not alter the #13349 supersession or #14826 removal decision.

Acceptance Criteria

  • test/playwright/e2e/NeuralLinkChildappConnect.spec.mjs passes against current dev.
  • The test still reaches neuralLink.connectToApp('colors') and reads colors-widget-viewport through the Neural Link fixture.
  • NeuralLinkWindowOps.spec.mjs still passes, preserving the bare AgentOS popup-host proof from #14828.
  • No apps/agentos/view/create/** or first-widget funnel code is restored.
  • The PR body reports the focused e2e command and result.

Out of Scope

  • Re-planning the conversational-creation pillar.
  • Reintroducing any constrained-blueprint schema, grammar, materializer, evidence pane, or first-widget fixture.
  • Changing the AgentOS popup-host behavior that #14828 preserved.
  • Adding broad visual requirements to a Neural Link connectivity proof unless the test explicitly needs them.

Avoided Traps

  • Treating a hidden empty viewport as a product bug: rejected unless a separate visible-layout contract proves it. This ticket is about an e2e proof that used the wrong readiness predicate.
  • Deleting the childapp-connect proof: rejected. #14828 needed the capability coverage to survive the fixture move.
  • Restoring the removed AgentOS widget fixture: rejected. That would reintroduce the deleted create-spine attractor.

Related

Live latest-open sweep: checked latest 20 open issues immediately before filing on 2026-07-05; no equivalent found.

A2A in-flight sweep: checked latest 30 all-status mailbox messages immediately before filing on 2026-07-05; no active overlapping claim found.

Semantic KB sweep: ask_knowledge_base("Is there an existing ticket about NeuralLinkChildappConnect failing on the colors childapp hidden viewport after PR #14828?", type="ticket") returned no PR #14828 equivalent in the available context.

Origin Session ID: 6ab85930-3c14-4b18-b3b3-97989d1e75c6

Retrieval Hint: "PR #14828 NeuralLinkChildappConnect hidden colors widget viewport exact-head e2e"

tobiu referenced in commit a18a774 - "fix(e2e): repair childapp connect readiness proof (#14830) (#14839)" on 1:17 PM
tobiu closed this issue on 1:17 PM