ENG-1858 Materialize Obsidian-origin markdown into Roam#1224
Draft
sid597 wants to merge 1 commit into
Conversation
|
This pull request has been ignored for the connected project Preview Branches by Supabase. |
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
CrossAppNode.data.page.fromMarkdownAPI.Why
Roam could discover shared Obsidian nodes and store imported source identity, but it could not materialize the shared markdown into local pages. Re-importing also needs to update the page matched by stable source RID rather than creating a duplicate.
Behavior
First import
Re-import
Scope
This is intentionally a materializer API only. ENG-1859 will connect the discovery selection UI and multi-node import reporting.
This PR is stacked on ENG-1856 v2 because source-identity lookup and persistence are direct dependencies.
Validation
pnpm --filter roam test -- materializeObsidianNode.test.ts— 12 test files / 56 tests passedpnpm --filter roam check-types— passedpnpm --filter roam build— built with 0 errorsgit diff --check— passedThe repository declares Node 22+, while the validation shell used Node 20.20.2. This produced an engine warning but no test, type-check, lint, or build failure.
Runtime demo status
A throwaway developer-extension bundle exposing the real materializer and source-identity functions is prepared at
/mnt/data/projects/dg-test-eng-1858. The temporary exposure was removed from source before this commit.The live Roam graph dry run is still pending because no configured Playwright Roam profile was available in the implementation environment. Do not treat the mocked unit tests as proof of real Datalog/block-props/fromMarkdown behavior until that manual run is completed.
Residual runtime boundary
Roam mutations are not transactional. If replacement markdown is imported successfully but deletion of a previous child fails, the structured result reports
replace-page-contentand preserves source identity, but the page can temporarily contain both replacement content and remaining old blocks.