Expand Notion cyclic e2e coverage#18
Conversation
|
Verification update: normal PR CI is green on Linux/macOS. I also dispatched |
|
Follow-up verification update: added mounted database-row cyclic coverage. The live mounted workflow now hydrates an existing database row, no-op pushes with unchanged Notion state, edits row frontmatter/body and verifies through the Notion API, then creates a new row from a Markdown file under the database directory. Local |
|
Follow-up verification update: bookmark and embed blocks now render as editable Markdown links instead of AFS directives. Existing bookmark/embed blocks preserve their Notion block kind when the Markdown link label or URL is edited. Local |
|
Updated this PR with external media URL block edit support. Existing image/video/file/pdf/audio blocks now round-trip as Markdown image/link syntax and can be edited/pushed back as Notion external media URLs.\n\nVerification on commit |
|
Follow-up pushed as |
|
Follow-up pushed as |
|
Follow-up pushed as |
|
Follow-up pushed as Verification on latest head:
|
|
Follow-up pushed as Verification on latest head:
|
|
Follow-up pushed as Verification on latest head:
|
|
Follow-up pushed as Verification on latest head:
|
|
Follow-up pushed as This also adds a specific guardrail for Verification on latest head:
|
|
Remote verification update for |
|
Follow-up pushed as Verification before push:
I dispatched CI and will dispatch/watch the remote live workflow for this new head as well. |
|
Remote verification update for |
|
Follow-up pushed as Verification before push:
The live supported-edit cycle now appends a real row to a Notion table and verifies it from a fresh Notion render. |
|
Remote verification update for |
|
Update pushed: Verification:
|
|
Update pushed: Verification:
|
|
Update pushed: Remote Linux/macOS PR CI passes for |
Summary
link_to_pageblocks and page/database mentions as normal Markdown links to Notion URLs instead of internal AFS directives.bookmark,embed,link_preview, and URL-backed media blocks.bookmark/embedURL blocks, existing URL-backedimage/video/file/pdf/audiomedia blocks, existing stable-width/header-mode Notion tables with row add/delete, external URLfilesproperties, explicit-IDpeopleproperties, explicit-IDrelationproperties, explicit@date(...)and@user(...)mentions, explicit@page(...)/@database(...)typed page/database mentions, and rich-text properties using the same inline Markdown parser as page bodies.link_to_pagetarget edits blocked with a specific guardrail after live testing showed Notion accepts direct target PATCHes but returns the original target unchanged.mention.link_previewin page child rich-text write payloads.link_to_pagetarget PATCH behavior.Markdown Contract Examples
[Linked page](https://www.notion.so/<page-id>)[Tasks](https://www.notion.so/<database-id>)@page(<notion-page-id>)or@page(Name <notion-page-id>)@database(<notion-database-id>)or@database(Name <notion-database-id>)@date(2026-06-14)or@date(2026-06-14 to 2026-06-21, tz=America/Chicago)@user(<notion-user-id>)or@user(Name <notion-user-id>)Notes: "Created **row** notes and [docs](https://example.com/created-notes)"[Caption](https://example.com/resource)[Caption](https://example.com/file.pdf)Media uploads and appending new media blocks are still deferred; this PR only supports edits to existing URL-backed media blocks and external URL file properties. People property writes and explicit user mentions require explicit Notion user IDs; name/email lookup is deferred. Relation writes require explicit Notion page IDs; path/title resolution is deferred. Plain Notion URLs remain ambiguous for newly-authored database mentions without a preimage, so
@database(...)is the canonical creation syntax. Directlink_to_pageretargeting remains blocked until AFS has undo-aware block replacement. Link-preview blocks and rich-text link-preview mentions are read-only because live Notion write validation rejected those shapes. Table width changes and header-mode changes are still blocked.Verification
Local:
cargo fmt --all -- --checkcargo test --workspace --all-targetscargo test -p afs-core --test block_diffcargo test -p afs-notion --test apply -p afs-notion --test fetch_rendercargo test -p afs-cli --test e2e_push_workflowcargo test -p afs-cli --test e2e_push_workflow live_cyclic_supported_block_edits_push_and_verify_notion -- --ignored --test-threads=1 --nocapturecargo test -p afs-cli --test e2e_push_workflow live_cyclic_database_rows_mount_edit_create_and_verify_notion -- --ignored --test-threads=1 --nocaptureLive Notion scratch workspace:
cargo test -p afs-cli --test e2e_push_workflow live_ -- --ignored --test-threads=1 --nocapturecargo test -p afs-notion --test live_integrity -- --ignored --test-threads=1 --nocaptureRemote:
a843025.notion-live-e2eworkflow dispatch passes fore2e/notion-cyclic-coverageat code head4a03c31(run27469672789); the newera843025commit is documentation-only.Notes
@database(...).link_to_pagetarget replacement is intentionally deferred because it requires append/delete replacement and journal/undo support for changed block identity.