Strengthen Note HTML smoke assertions - #93
Conversation
Verify Report — PR #93Engine6-AI ensemble: 5 general-purpose Agents (Claude reviewers, file-based output) + Codex (gpt-5.5 xhigh, run_in_background). All 5 findings files present + non-empty; no Recovery Protocol invoked. AggregatePASS — 0 blocking, 1 in-scope nit, 3 follow-up findings. Merge recommended after the nit fix (or as-is with the message wording change tracked separately). Scope coverage
#86 — strengthen Note→HTML smoke assertions (media/ dir + size floor)Requirements coverage: 2/2 mandatory FULLY addressed; 1/1 optional NOT addressed (reasonable trade-off, documented in issue Key Decisions).
Note on apparent disagreement: Sibling Requirements reviewer marked #1 "FULLY"; Devil's Advocate partially refuted as "PARTIAL" on the grounds the wording-vs-converter mismatch creates a contract/fixture coupling issue. Resolution: the checklist items in #86 are satisfied (PASS), but the assertion message is factually wrong about strokes. Treat as in-scope nit rather than re-classify the Requirements verdict. Scope CheckNo scope creep. Diff strictly adds 3 assertion blocks to one test method in SecurityNo findings. Test-only change, trusted-fixture trust model preserved. Existing Process GapsNone. 5/5 reviewer findings produced; no Recovery Protocol triggered; no sentinel files. RecommendationMerge as-is OR with 1-line message fix. No blocker. Suggested follow-up actions:
|
Strokes are JSON-embedded in index.html via NoteConverter.buildJSON(), never written as files in media/. The media/ count assertion only catches missing audio/image assets — the size-floor assertion is what catches the strokes-drop regression. Refs #86
Summary
media/directory with at least one rendered asset.index.htmlsize floor based on the current.notefixture reference render.Verification
swift test --filter NoteHTMLConvertTestsswift test --filter Notegit diff --checkRefs #86