Skip to content

test: rationalize Work-Notes cancel/fence E2E coverage - #220

Draft
Fooftilly wants to merge 1 commit into
masterfrom
cursor/e2e-work-notes-rationalization-4f32
Draft

Fooftilly wants to merge 1 commit into
masterfrom
cursor/e2e-work-notes-rationalization-4f32

Conversation

@Fooftilly

@Fooftilly Fooftilly commented Sep 25, 2026 •

Copy link
Copy Markdown
Owner

Goal

Continue the E2E KEEP / SPLIT / MOVE wave after Work Opens (#211) for the next high-value cancel/fence family: Work Notes.

What changes

1. Map (E2E → KEEP / SPLIT / MOVE → replacement)

Former browser scenario Decision Replacement
Offline research note survives reload + Concept on ACK KEEP Node research ACK/fence; Python concept/index — Chromium owns CodeMirror remount
Private + research independent across reload KEEP Node scopes + private non-fence; Python private isolation — Chromium owns dual-editor remount
Editing back to acknowledged body cancels pending op MOVE Node coalescingFor(RESEARCH) A→B→A + mutationTestAtoBtoA; static mutation pin
Private ACK does not fence Concepts MOVE Node reconciliation() Private ACK must not fence Concepts/Arguments/Graph
Stale research revision is a conflict SPLIT Compact no-body shape → Node handlerContract + Python compact/stale conflict; thin Chromium keeps reconnect park

2. Fast-layer gap check

Confirmed already present before removal — no new Node/Python scenarios required.

3. Retained browser boundaries (3 scenarios)

  • research note survives CodeMirror remount and creates Concept on ACK
  • research + private editors independent across reload (private markup must not create Concepts)
  • thin stale-base reconnect parks REVISION_CONFLICT and leaves peer body on the server

4. Tip-clear

Retained pending() / conflicts() now use harness wait_for_async (same vacuous-risk fix as #204 / #211).

5. Docs

docs/e2e-performance.md records the Work-Notes map under §12. Does not restate the AGENTS.md KEEP/SPLIT/MOVE policy owned by #204.

Expected impact

Removes 2 of 5 Work-Notes Chromium scenarios and narrows the conflict scenario; contracts remain in Node/Python.

Validation

  • node tests/browser/run_work_note_sync_selftest.js — 101 checks PASS
  • python3 -m unittest tests.test_frontend_work_note_sync tests.test_work_note_sync — PASS
  • Targeted E2E: python3 tests/e2e/run.py --jobs 2 --no-pointer-capture tests.e2e.test_work_notes_offline — 3 tests PASS
  • Feature E2E: --feature notes — 3 tests PASS
  • Affected (scripts/e2e agent → notes+work-detail, 111 tests): worker hang mid-suite on unrelated metadata path after ~4 min productive work; suspect test_acknowledgement_patches_every_cached_representation PASSes alone (4.3s). Ambient/pre-existing under parallel affected blast; not caused by this Notes module change. Notes feature is the coherent affected substitute for the changed surface.
  • Full E2E gate: python3 tests/e2e/run.py --jobs 4 — 743 tests PASS in 842s

Non-goals

Work Tags (#204), Work Source, Work Metadata, Work Opens (#211). Harness changes beyond tip-clear in this module. Folders / playlists / person-groups / browse / graph cache matrices.

Audit: Project store internal/ws-other-offline-families.md §2; progress internal/ws-work-notes-rationalization.md.

Open in Web Open in Cursor 

Move A→B→A cancel and private-ACK non-fence out of Chromium (already proven
in Node/Python). Split stale-revision conflict: keep thin reconnect park,
drop compact-body field asserts. Tip-clear pending/conflicts via wait_for_async.

Co-authored-by: Nikola Perović <Fooftilly@users.noreply.github.com>
@coderabbitai

coderabbitai Bot commented Sep 25, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Comment @coderabbitai help to get the list of available commands.

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.

2 participants