Skip to content

Native artifact acceptance: CDP harness, A01-A12 execution, two defects found - #87

Merged
rogerdigital merged 5 commits into
mainfrom
acceptance/1.0-native-retry
Sep 18, 2026
Merged

rogerdigital merged 5 commits into
mainfrom
acceptance/1.0-native-retry

Conversation

@rogerdigital

@rogerdigital rogerdigital commented Sep 17, 2026 •

Copy link
Copy Markdown
Owner

Summary

Executes the native artifact acceptance (T6) for 1.0.0 on macOS and records the results.

The two previous automation attempts were blocked because macOS Obsidian defaults to native (Electron) context menus when nativeMenus is unset, so right-click menus never appear in the DOM and neither accessibility-level nor DOM-level automation could drive them. This attempt launches Obsidian with a DevTools debugging port and drives the real export dialog through trusted renderer input (real context menus, real modal, real export pipeline; no mocks).

What's included

  • scripts/native-acceptance/: the CDP harness (case runners A01–A12, disk-state re-verification, T6.3 independent-tool inspections) with a README documenting the two required environment accommodations (DOM menus for the test vault; anti-throttling launch flags so native-render batches match foreground-user conditions).
  • docs/releases/1.0.0/readiness.md: the Native artifacts row moves from BLOCKED to executed, with evidence for all twelve cases and two defects that block the gate:
    • D1 — EPUB export of a note containing a task list produces invalid XHTML: the fallback renderer emits a bare <li class="task"> without a <ul> wrapper (src/formats/html-document.ts:138), failing EPUBCheck RSC-005.
    • D2 — HTML batch export writes nested notes' attachment src relative to the batch root (nested/part.html → assets/landscape.png), so images 404 from nested pages; the Markdown bundle writes the correct ../assets/ form.
  • Corrections to the prior session's record: the vault had not actually been restored (candidate build still installed, plus a typo'd workspace folder inside the vault); both cleaned up, original plugin and config restored and hash-verified.

Verification

  • All A01–A12 cases executed natively in Obsidian 1.13.7 on macOS 27 with evidence JSON/screenshots retained in the QA workspace (path recorded in readiness).
  • Independent tool checks: EPUBCheck 5.2.1 --failonwarnings (A01/A02 clean; A11 fails with D1), LibreOffice 26.8 opens all sampled DOCX, unzip -t, PDFKit page/sentinel checks, Chrome headless renders.
  • Both defects are fixed on this branch with regression tests (full suite 413/413, lint and build clean), and the affected native cases were rerun in real Obsidian against the fixed build: the task-list EPUB passes EPUBCheck --failonwarnings 0/0/0, and nested HTML batch pages reference shared assets from their own directory (verified in Chrome).

Release impact: the Native artifacts gate is PASS on macOS. T9/T10 remain blocked on the non-macOS platform rows per the plan's rules.

Drives the real Obsidian export dialog over the DevTools protocol with
trusted renderer input. Documented accommodations: switching the test
vault from macOS default native menus to DOM menus, and launching with
anti-throttling flags so native-render batches match foreground-user
conditions. Includes the A01-A12 case runners, A03/A04 disk-state
re-verification, and the T6.3 independent-tool inspection script.
Third native attempt executed A01-A12 in real Obsidian 1.13.7 via the
CDP harness; prior blockers were macOS defaulting to native Electron
menus. All twelve cases collected evidence. Two defects block the
Native artifacts gate: EPUB export of task lists emits a bare <li>
(invalid XHTML, EPUBCheck RSC-005), and HTML batch export writes
nested-note attachment paths relative to the batch root, breaking
images in nested documents. Vault restoration from the prior session
was completed and hash-verified.
…ument

Two defects found by the native acceptance run (T6, A11/A02):

- The fallback converter emitted a bare <li class="task"> for task-list
  items, which is invalid XHTML in EPUB chapters (EPUBCheck RSC-005:
  element "li" not allowed in body). Consecutive task lines now form a
  single <ul class="task-list">.

- HTML batch exports rewrote app:// attachment URLs to paths relative to
  the shared assets root, so nested documents referenced assets that
  only resolve from the batch root. rewriteAppProtocolUrls now accepts
  the rendered file's location and resolves references from it; the
  Markdown bundle already did this correctly.

Regression tests: EPUB chapter content-model check (every li in a list,
checkbox glyphs preserved), fallback HTML task-list structure, and
per-file asset path resolution at three nesting depths.
…PASS

D1/D2 fixed with regression tests (413/413 tests, lint and build clean).
Affected native cases rerun in real Obsidian against build e371765a:
A11 EPUB passes EPUBCheck 0/0/0 with the task list wrapped in a ul;
A02/A03 HTML batches reference shared assets from each document's own
directory and the nested page renders its image in Chrome. Vault
restored and hash-verified after the run. Remaining native scope is
the non-macOS platform rows.
@rogerdigital
rogerdigital merged commit 237b661 into main Sep 18, 2026
1 check passed
@rogerdigital
rogerdigital deleted the acceptance/1.0-native-retry branch September 18, 2026 03:54
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