Skip to content

[ZEPPELIN-6674] Prove Shared Notebook Core port identity - #5481

Open
voidmatcha wants to merge 1 commit into
apache:masterfrom
voidmatcha:ZEPPELIN-6674-shared-core-port-identity
Open

voidmatcha wants to merge 1 commit into
apache:masterfrom
voidmatcha:ZEPPELIN-6674-shared-core-port-identity

Conversation

@voidmatcha

@voidmatcha voidmatcha commented Sep 14, 2026 •

Copy link
Copy Markdown
Member

What is this PR for?

Prove that separately built Angular host and React remote code receive the exact same host-owned NotebookCorePort object. The build also rejects a React remote that bundles its own Shared Notebook Core runtime.

What type of PR is it?

Improvement

Todos

  • Add the Angular host and React remote proof
  • Reject duplicate Core runtime bundles
  • Add the proof to the frontend build

What is the Jira issue?

ZEPPELIN-6674

How should this be tested?

cd zeppelin-web-angular
npm run typecheck:notebook-core
npm run build:notebook-core-port-proof
npm run test:notebook-core-port-identity

Screenshots (if appropriate)

Not applicable.

Questions:

  • Does the license files need to update? No
  • Is there breaking changes for older versions? No
  • Does this needs documentation? No

@voidmatcha voidmatcha closed this Sep 14, 2026
@voidmatcha voidmatcha reopened this Sep 25, 2026
@voidmatcha
voidmatcha force-pushed the ZEPPELIN-6674-shared-core-port-identity branch from 3df03a5 to c5e9a9b Compare September 25, 2026 16:00
@voidmatcha
voidmatcha force-pushed the ZEPPELIN-6674-shared-core-port-identity branch from e7a0d5d to 56409c1 Compare September 25, 2026 16:09
@voidmatcha

Copy link
Copy Markdown
Member Author

Some context the description leaves out:

Why this PR is needed. This is part of ZEPPELIN-6627 and the second child of ZEPPELIN-6669, after ZEPPELIN-6670 (#5469) and before ZEPPELIN-6675. The React remote has no Module Federation shared scope, so a stateful Core imported by both the host and the remote would be two separate module instances. ZEPPELIN-6669 therefore makes the Angular host the single owner: it creates the port once and passes it to the remote through mount props. This PR proves that the remote receives that exact object across separate builds.

Where the runtime-bundle rejection applies. The webpack plugin that fails a build bundling @zeppelin/notebook-core is used only by the proof remote under e2e/core-contract/react-remote/, not by projects/zeppelin-react. For production React code, the import-boundary check now rejects runtime imports of the Core package. That goes slightly beyond ZEPPELIN-6674, which asks for it on the proof remote, and follows the single-owner rule in ZEPPELIN-6669.

@voidmatcha
voidmatcha marked this pull request as ready for review September 25, 2026 16:11

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant