{ "sourceDirectory": "C:/Users/Connor/.codex/visualizations/2026/10/20/01a15834-7508-7352-9e5a-782bc5c4e6f5/flowcv-research", "manifest": { "schema_version": 1, "scope": "Curated research package; excludes raw session ledger and original personal document observation", "source_commit": "b2a9fd68b081a8cc1701b1c58eaea7e1070274af", "checkpoint_count": 37, "files": [ { "file": "01-flowcv-audit.md", "bytes": 59272, "sha256": "7e28275cd6c5d06a0e527fa7ccb60f140fa4a1d845a338497393927a092c6869" }, { "file": "02-component-interaction-inventory.md", "bytes": 8033, "sha256": "b73e9fe403bc88acde17ebd97f6afd17df08ee647764ec67847c7a0b8af2ff8a" }, { "file": "03-jobjakt-gap-analysis.md", "bytes": 11702, "sha256": "a9cab0d5fc231c9539b4df51720927ebb658f48d86b5235f0b4f5757d26fc46d" }, { "file": "04-jobjakt-design-proposal.md", "bytes": 11012, "sha256": "aed573784ad0dacd6c5f040946d0601b1c2e87257cb2f81dd957ff2c15a4ce28" }, { "file": "05-desktop-mobile-wireframes.md", "bytes": 13871, "sha256": "ae3ecf57e6aab3790f57b0de3c05d64cf9b0d007cf65d317916df01c06e646f7" }, { "file": "06-phased-implementation-plan.md", "bytes": 21933, "sha256": "550517db7581071e7a488f0ec2b927dff45ec790995b24ad59b8a217643ea4fb" }, { "file": "07-acceptance-and-test-plan.md", "bytes": 11886, "sha256": "d818dc6bfb23b5b30cbf4928ff1be6ffeb835f1d5b68042beddd69834ddb7400" }, { "file": "D1-dashboard-evidence.json", "bytes": 205077, "sha256": "62d52df44f43a6d2b7b081fcd68b976787b2fb0e68d2ac1430b26d35973e5fdf" }, { "file": "D1-dashboard.png", "bytes": 68771, "sha256": "3bdb50cd7cab638ecbe37d700f98c07a9394550bb694aeb24d286ce4ea91f246" }, { "file": "D2-card-menu-evidence.json", "bytes": 228974, "sha256": "99c15236f3ba3c170795f2f29f31a803b27d9d438c49381b130876a45e561ea5" }, { "file": "D2-card-menu.png", "bytes": 72264, "sha256": "ff46bb8b0302505a48eed228000e880805125ba7c38d78f709047e3fe2d0b264" }, { "file": "E1-editor-evidence.json", "bytes": 77182, "sha256": "7dbe850e73361aed0fbba6e337b0bc5c0a6ad582ca608df4654a55d6124e0449" }, { "file": "E1-editor.png", "bytes": 124118, "sha256": "ff1f8c8d1c9d66c66493ac4c315e85a4f37d045f12f1a96fa33167972c7f617b" }, { "file": "E10-template-applied-evidence.json", "bytes": 129555, "sha256": "bd601114e866fbb546af85df94a3ca7e97be3fc52897d1e75cc233049b8f3b38" }, { "file": "E10-template-applied.png", "bytes": 147051, "sha256": "f98fad9d9a6e305a143f90c429f94d35cc5ae7c733b392e90f00d534c7629431" }, { "file": "E11-template-undo-evidence.json", "bytes": 128361, "sha256": "a908746d9d9289820936d716119582a620848d18f47e5959347385916e571f94" }, { "file": "E11-template-undo.png", "bytes": 146290, "sha256": "6b81c237c305328c04eeb13a55044c65659c57099cf4c3b280edd471f98bf052" }, { "file": "E12-redo-layout-evidence.json", "bytes": 129872, "sha256": "da1b4c8243639e41cda3a93c54764f80e78fb2028f07623995624e4e14efc287" }, { "file": "E12-redo-layout.png", "bytes": 125612, "sha256": "40c49b450c682f27676320499981bc8575cc9d002bee6d4b7a0d949c7ea30e6e" }, { "file": "E13-sections-reordered-evidence.json", "bytes": 132151, "sha256": "b3787ecb307e99fd0c8322370a5b0007c6cbe44de039bbdd5e3ede81c24c9367" }, { "file": "E13-sections-reordered.png", "bytes": 131055, "sha256": "5c55733499bd65ba66eeb9774824fc449002f0405bf076e3ce7f0d758dee7c0a" }, { "file": "E14-font-size-pagination-evidence.json", "bytes": 132213, "sha256": "a5073db5172cbc957f8a99929ad3b16cf627349960417baef0e771a6fafb371d" }, { "file": "E14-font-size-pagination.png", "bytes": 104188, "sha256": "6657f98ad7d3c284dd40dc4504eed47bf71a746006f550dc0e5e39a4b08f7fcd" }, { "file": "E15-body-font-picker-evidence.json", "bytes": 148877, "sha256": "766c00058b4173bfbbd34f01d4b8bbf42627233628024c9f3888efe538551366" }, { "file": "E15-body-font-picker.png", "bytes": 122072, "sha256": "b39c33f535cca948120c22ad00eda9f645a372cd6c766ff43f120d9db9782f2d" }, { "file": "E16-ai-tools-evidence.json", "bytes": 39859, "sha256": "ac133147783bca212333060a2e63e854e139476c90356bd65e50fff7fa4ed398" }, { "file": "E16-ai-tools.png", "bytes": 137485, "sha256": "1ce84e46bdf1a34b599d14ccfffcb8704862fd5e380200ffecaeca3fbb667cf5" }, { "file": "E17-ai-plan-gate-evidence.json", "bytes": 41886, "sha256": "b049bf14e0d627cf54185efa39fa767282960ed7c726df1970cbab5de8e81790" }, { "file": "E17-ai-plan-gate.png", "bytes": 146002, "sha256": "e6909536a947b79241dc8ba349db3220f1b07868440ea29a83b0673053b1d842" }, { "file": "E18-pdf-export-success-evidence.json", "bytes": 43482, "sha256": "79e027909cb6fd359fb6d3062dd8942cb03be67f049572d655dec680d0efbb5f" }, { "file": "E18-pdf-export-success.png", "bytes": 149368, "sha256": "17abe6237e490bfd057ea0a9b5f1e03bbe28a540109f1e8eabd13f29d9bfab4b" }, { "file": "E19-editor-menu-evidence.json", "bytes": 5516, "sha256": "831defbebd36b7eb3d1c0e1489d6f53df56ecb38c75f9e1520edc8d89ab219a5" }, { "file": "E19-editor-menu.png", "bytes": 147609, "sha256": "5b08cf78215c03e1d51b69bd5ec67568550eab18c127ccdd2f20b99c01440e4a" }, { "file": "E2-experience-form-evidence.json", "bytes": 37378, "sha256": "62cb86256281c74e3a139ce4215bffc79ee37556e6e6c364b1b9f3a92d0d41f9" }, { "file": "E2-experience-form.png", "bytes": 138901, "sha256": "50096bc3066e19254a411d14624be775b4eaa5bfcdde8b98314f2c65c4d64fa7" }, { "file": "E20-document-switcher-evidence.json", "bytes": 41168, "sha256": "ec423706cf48041d60ceda77990daefa48f763e9c175b813c0f54fa74ded11d2" }, { "file": "E20-document-switcher.png", "bytes": 154221, "sha256": "36f1da74dc6c4ba1d7b4e37bfd01adc53f953ac519e7bfe8f01ba0f6f337a3b1" }, { "file": "E21-duplicate-limit-evidence.json", "bytes": 41064, "sha256": "45e6a1eedadd51af79edaf270e5568946e4b998cb4e7115a3301b74985a180d5" }, { "file": "E21-duplicate-limit.png", "bytes": 140711, "sha256": "93c8dc26fc373872be5aec9e982d1e91fa4cf40397dc554ecd66a0324847df86" }, { "file": "E3-network-metadata.json", "bytes": 990, "sha256": "348e50bcc6796803a8ad817e03ee4cfca20a6d78d430eecb7145f8b78efd9844" }, { "file": "E3-title-edit-evidence.json", "bytes": 37530, "sha256": "8f3bf69615d0ef14a68d82bad80096807656864d0e8ca03be56b3c2b2d3cd298" }, { "file": "E3-title-edit.png", "bytes": 140840, "sha256": "7fe2f690844381c0dbf68f236a08f89f7a3b53e01121418e648c1748b8f5c33b" }, { "file": "E4-section-customizations-evidence.json", "bytes": 41382, "sha256": "f0b993254a994c1ec41d94689af9c6e1a0b1c575eafbb8e7e2879cdf9e3c9dcc" }, { "file": "E4-section-customizations.png", "bytes": 146083, "sha256": "71ffdf9a2964f43e33bfea28c5c738fd2cbbe8ffe33fccc4cd315554032ed2b0" }, { "file": "E5-add-content-evidence.json", "bytes": 74572, "sha256": "e9284d4e0a9ea410050ce0fbdb03dd98212852f02b49ce4f1071c052c318d6ee" }, { "file": "E5-add-content.png", "bytes": 138763, "sha256": "df06316e02f46c30d66d0413892456a80bf56c1604fa6e2be5d57d3d7ed0ebb0" }, { "file": "E6-new-project-evidence.json", "bytes": 34816, "sha256": "481c5f186b046d9f3a4f3c40a980a4b5b8ac410fb9114bcc3ea2b08983a98fb6" }, { "file": "E6-new-project.png", "bytes": 123580, "sha256": "b3e32e7f509c656989794d58fec7aaf6123959858846ef604c0220b58c359eda" }, { "file": "E7-customize-overview-evidence.json", "bytes": 129310, "sha256": "57fc528513148062b5b1e65206d14941b977200a208a56b87cf0121604f5b2e3" }, { "file": "E7-customize-overview.png", "bytes": 146916, "sha256": "89333b9c4dbd702c0b7f86c9ffa394df94d9dfe67053813bc75a1e090b817f46" }, { "file": "E8-template-gallery-evidence.json", "bytes": 281794, "sha256": "4ef788154122d77f9c8a19a8bc11364209546d12748f0bf23a75d3a88a91f814" }, { "file": "E8-template-gallery.png", "bytes": 457728, "sha256": "c72301c8103b07af1fc171cb18e4eeaf61ae352d9884e49effd4e7c053129b6c" }, { "file": "E9-template-detail-evidence.json", "bytes": 212185, "sha256": "bdbb114d6ea497b998b0de867a0f995ff7f9d28fc39131d223b33ce494e93b78" }, { "file": "E9-template-detail.png", "bytes": 233838, "sha256": "8a1d987ff4cb9598cac3c6dd6d5a2e49ce68eae3fabcc6e8bfe7d7bfbaaee46a" }, { "file": "L1-cover-letter-creation-gallery-evidence.json", "bytes": 47932, "sha256": "5a022be86ea8aaf52cfb8158357e55a4dd01f304760a530a8ec351912ff70412" }, { "file": "L1-cover-letter-creation-gallery.png", "bytes": 209961, "sha256": "3bc0da7b4ed9e26a8e233f28f856cf13f2aeb0ee147cae8aa77dcfd2ac1c80f1" }, { "file": "L10-letter-export-dashboard-evidence.json", "bytes": 17982, "sha256": "43f49c20af8e181dcb46eed02b25833a37fec84d94f4581c5ef29a9caf4c1f23" }, { "file": "L10-letter-export-dashboard.png", "bytes": 53840, "sha256": "6f1f6139fdfb0a9584ffa41607edb6e4f45e3b9f635fab96b5cd172d63ba9823" }, { "file": "L2-blank-cover-letter-editor-evidence.json", "bytes": 11450, "sha256": "24e17900e9ffdec33d708d2320f1a852679184ff72b38871d8b8952e985dfe3a" }, { "file": "L2-blank-cover-letter-editor.png", "bytes": 52649, "sha256": "a1f7b7d572a5b2c048d3d355fcdf3a092bea4231b839ca514142f85b6abb9925" }, { "file": "L3-letter-sender-form-evidence.json", "bytes": 20675, "sha256": "18c9cc6af92d59f6a9d4ffdcde0036009f1e6bb884e374e8d2c4b400fa3ec223" }, { "file": "L3-letter-sender-form.png", "bytes": 78047, "sha256": "67f697c4a071272b1efff91d0c214de555e71d66e18f1dc2b735d5a8f4e1200d" }, { "file": "L4-copy-sender-prompt-evidence.json", "bytes": 23806, "sha256": "0e8ada0babb90c6da000315dd1e6cc92f06480fd4f6d91def81d98ca2afb7f9a" }, { "file": "L4-copy-sender-prompt.png", "bytes": 89341, "sha256": "ef18e6875b7460d4b90489d5776f28f38f9fef21e935e3cc408167cff0ef6fff" }, { "file": "L5-sender-copied-evidence.json", "bytes": 44353, "sha256": "dba8eb01cab922d1be7de997a1ae7dbe55385a737b8922e7329d170b3abdcd63" }, { "file": "L5-sender-copied.png", "bytes": 90619, "sha256": "be4daa001bab79a9901d0ce6965b860d646e632d52959768248727672f472eff" }, { "file": "L6-letter-body-autosave-evidence.json", "bytes": 22202, "sha256": "58f00115ba817b8c6f50593db12a5743bdfc44432748145e83ac9d5675345239" }, { "file": "L6-letter-body-autosave.png", "bytes": 71580, "sha256": "a3128281f496e5119eef1bf705d146b3a86fd7cce89efed401edc2e7d81b42e5" }, { "file": "L7-letter-customize-evidence.json", "bytes": 85510, "sha256": "868e83f3f221845df8aa15455d41dfc810fb493f50251393598c3b57f0eb5b91" }, { "file": "L7-letter-customize.png", "bytes": 105060, "sha256": "1e6a0120a92483d9d6ca4140960c9210045456049bd91b8d47b09536ea0d35ed" }, { "file": "L8-copy-resume-design-prompt-evidence.json", "bytes": 88233, "sha256": "bdd8fae2893f4adb87bd6b6ea4df4accb3c85c0173e30fc532660505e4ce2e34" }, { "file": "L8-copy-resume-design-prompt.png", "bytes": 111317, "sha256": "5b005149588941e56625c36e6798c77d621dfc0ce02f02eee199d3c1fd5f6cca" }, { "file": "L9-resume-design-copied-evidence.json", "bytes": 85536, "sha256": "24d3bdcd2581c6668749a6c7f4965e82b9e1b8140537e09f370b690c1f70470a" }, { "file": "L9-resume-design-copied.png", "bytes": 106643, "sha256": "846db77a81092dbf6fde869a6b12ddd52105df5b4fa5ba1057fab35e83fd2e11" }, { "file": "M1-mobile-content-evidence.json", "bytes": 43219, "sha256": "ca7cd07ad839edd60286d0b93a6b1fa2d1865f5b6c880fd7f770174ec8fab1b9" }, { "file": "M1-mobile-content.png", "bytes": 41597, "sha256": "ab9e4988445075c7367cf71db9a5102705bee7e3712c66cbccedc5e9961e2816" }, { "file": "M2-mobile-preview-evidence.json", "bytes": 63210, "sha256": "ea6252ea2e15638256af7575224f74e465e744164d48b98e417972089d3a993d" }, { "file": "M2-mobile-preview.png", "bytes": 39402, "sha256": "a07671cac5369a20604cfb40a6fdf4069569425c9357aa232a1807437cd955a3" }, { "file": "M3-mobile-experience-form-evidence.json", "bytes": 19666, "sha256": "6adb05dfcfe717fd59deca710aeffadf05bcdfdb2eb2e7954510897c11dcfd29" }, { "file": "M3-mobile-experience-form.png", "bytes": 39140, "sha256": "fe1a927f9aa17bad227d7c0e708f6724fbc69621f0085360e87f19d07d20b44e" }, { "file": "M4-date-range-edge-evidence.json", "bytes": 24889, "sha256": "3b24b2b8abf0b4d1171f71ecd09414095bde18562028a043b64b744ba70f66c0" }, { "file": "M4-date-range-edge.png", "bytes": 44335, "sha256": "e28603ed3698de744d13dad404f1cdfe123c0bab9013b8054a49fe677e6e8b1b" }, { "file": "README.md", "bytes": 4748, "sha256": "7bd00ed1a59ea390a2b29400bcab49524bbffc0ab674bf6c23b63709505ef615" } ] }, "checkpoints": [ { "file": "D1-dashboard-evidence.json", "sha256": "62d52df44f43a6d2b7b081fcd68b976787b2fb0e68d2ac1430b26d35973e5fdf", "checkpoint": "D1", "manualAction": "User prepared synthetic Resume 1 before capture; creation actions not observed.", "viewport": { "width": 1912, "height": 948 }, "accessibilityNodes": 468, "findings": [ { "status": "Verified", "finding": "Navigation links, New resume button, A4 document preview, relative edited time, card overflow." }, { "status": "Verified", "finding": "Focusable overflow button has empty accessible name.", "node_id": "1662" }, { "status": "Not Tested", "finding": "Creation, overflow actions, keyboard behavior and autosave." } ], "namedInteractiveControls": [] }, { "file": "D2-card-menu-evidence.json", "sha256": "99c15236f3ba3c170795f2f29f31a803b27d9d438c49381b130876a45e561ea5", "checkpoint": "D2", "manualAction": "User clicked the Resume 1 card overflow control and left it open.", "viewport": { "width": 1912, "height": 948 }, "accessibilityNodes": 494, "findings": [ { "status": "Verified", "finding": "Overflow opens a panel positioned upward over the card preview, with Edit title, Duplicate, AI translate Beta, Download and Delete." }, { "status": "Verified", "finding": "Panel actions are exposed as buttons; no menu or menuitem role appears in this accessibility snapshot. Trigger remains focused; expanded state is not reported." }, { "status": "Not Tested", "finding": "Successful duplication, translation, download, deletion, rename validation, keyboard navigation, focus trapping/restoration and versions." } ], "namedInteractiveControls": [] }, { "file": "E1-editor-evidence.json", "sha256": "7dbe850e73361aed0fbba6e337b0bc5c0a6ad582ca608df4654a55d6124e0449", "checkpoint": "E1", "manualAction": "User opened Resume 1 editor and reports adding one of every content type. Add operations happened before capture.", "viewport": { "width": 1912, "height": 948 }, "accessibilityNodes": 346, "findings": [ { "status": "Verified", "finding": "Content editor is at /resume/content. Header links: Overview, Content, Customize, AI Tools; document switcher, Download and overflow control." }, { "status": "Verified", "finding": "Desktop split view: section accordions left, document preview right. Current screenshot is scrolled near bottom of content list." }, { "status": "Verified", "finding": "15 headings: Summary, Skills, Languages, Professional Experience, Education, Certificates, Awards, Courses, Projects, Interests, References, Declaration, Publications, Organisations, Custom. Add Content control present." }, { "status": "Verified", "finding": "Entry drag buttons expose instructions for Space to lift, arrow keys to move and Escape to cancel. Add Entry and Delete section controls exist." }, { "status": "Not Tested", "finding": "Keyboard reorder success, section reorder, add workflow, save state, preview update timing, undo/redo and zoom. No save indicator text observed in this snapshot; this does not prove absence." } ], "namedInteractiveControls": [] }, { "file": "E10-template-applied-evidence.json", "sha256": "bd601114e866fbb546af85df94a3ca7e97be3fc52897d1e75cc233049b8f3b38", "checkpoint": "E10", "manualAction": "User clicked Use this template; returned to editor.", "viewport": { "width": 1912, "height": 948 }, "accessibilityNodes": 622, "findings": [ { "status": "Verified", "finding": "Use this template closes modal and returns to Customize. Layout changed from Two to One; preview changed to single column, centered header, uppercase ruled headings and Alegreya body font." }, { "status": "Verified", "finding": "Synthetic experience title, original section content and new Project B remain in AX/preview after application. No field-by-field export or backend comparison performed." }, { "status": "Verified", "finding": "Template changes a bundle of settings: section order, typography, spacing, margins, color/header choices and entry layout. Base font remains 10.5pt; line height is now 1.15 and margins 22mm/12mm." }, { "status": "Not Tested", "finding": "Undo/redo reversibility, template persistence after reload, full data equivalence, original design recovery and pagination/export fidelity." } ], "namedInteractiveControls": [] }, { "file": "E11-template-undo-evidence.json", "sha256": "a908746d9d9289820936d716119582a620848d18f47e5959347385916e571f94", "checkpoint": "E11", "manualAction": "User clicked left curved arrow once and reported previous design returned.", "viewport": { "width": 1912, "height": 948 }, "accessibilityNodes": 617, "findings": [ { "status": "Verified", "finding": "One click on left curved-arrow control restores observed two-column layout, left header, Zilla Slab font, previous spacing/margins, color settings and section ordering after template application." }, { "status": "Verified", "finding": "New synthetic Project B remains present after undo; title and content edits predate template change." }, { "status": "Verified", "finding": "Right curved arrow changes from visually muted to active-looking. Both controls remain unnamed in AX; actual redo still needs testing." }, { "status": "Not Tested", "finding": "Redo, history depth, content-edit undo scope, cross-route history and persistence across reload." } ], "namedInteractiveControls": [] }, { "file": "E12-redo-layout-evidence.json", "sha256": "da1b4c8243639e41cda3a93c54764f80e78fb2028f07623995624e4e14efc287", "checkpoint": "E12", "manualAction": "User clicked right curved arrow and Layout anchor; reported single-column design returned.", "viewport": { "width": 1912, "height": 948 }, "accessibilityNodes": 622, "findings": [ { "status": "Verified", "finding": "Right curved-arrow restores applied single-column template: One selected, Alegreya font, template settings and reordered sections; synthetic content remains observed." }, { "status": "Verified", "finding": "Layout anchor scrolls controls into view while fixed top navigation remains. Section layout uses a vertical list of draggable labeled rows with grip icons and a fixed Personal Details block above." }, { "status": "Verified", "finding": "Current section order starts Summary, Professional Experience, Education, Skills, Certificates, Languages. Rows expose keyboard drag instructions." }, { "status": "Not Tested", "finding": "Actual section reorder, column reassignment, mixed columns, page-break placement, undo beyond this template change and layout save errors." } ], "namedInteractiveControls": [] }, { "file": "E13-sections-reordered-evidence.json", "sha256": "b3787ecb307e99fd0c8322370a5b0007c6cbe44de039bbdd5e3ede81c24c9367", "checkpoint": "E13", "manualAction": "User dragged Skills grip above Education and reported rows moving aside with no confirmation.", "viewport": { "width": 1912, "height": 948 }, "accessibilityNodes": 639, "findings": [ { "status": "Verified", "finding": "Mouse drag moves Skills above Education in both section layout list and document preview; neighboring rows shifted during dragging per user report; no visible confirmation reported." }, { "status": "Verified", "finding": "AX contains drop announcement: You have dropped the item. You have moved the item from position 3 to position 3." }, { "status": "Inferred", "finding": "Drop announcement may be misleading because before/after section order changed while reported source/destination positions are equal. Needs keyboard/screen-reader reproduction before treating as general defect." }, { "status": "Not Tested", "finding": "Keyboard drop success/cancel, drag across columns, entry reorder, persistence after reload and multi-page page-break behavior." } ], "namedInteractiveControls": [] }, { "file": "E14-font-size-pagination-evidence.json", "sha256": "a5073db5172cbc957f8a99929ad3b16cf627349960417baef0e771a6fafb371d", "checkpoint": "E14", "manualAction": "User clicked Font Size anchor and Base Font Size plus once; reported 11pt and preview update.", "viewport": { "width": 1912, "height": 948 }, "accessibilityNodes": 639, "findings": [ { "status": "Verified", "finding": "One plus click increases Base Font Size from 10.5pt to 11pt. User observed preview update; final screenshot shows changed typography and two physical page surfaces separated by a gap." }, { "status": "Verified", "finding": "Font Size card offers base size and relative offsets for Full Name, Professional Title, Section Headings and Entry Header using segmented-looking tracks plus minus/plus controls." }, { "status": "Verified", "finding": "Spacing card begins with Line Height and Space Between Elements; line height remains 1.15. Increment/decrement buttons are unnamed in AX, and no slider role appears in this snapshot." }, { "status": "Not Tested", "finding": "Whether 11pt caused page count to increase, numeric ranges/limits, keyboard slider operation, zoom, typography persistence and export pagination parity." } ], "namedInteractiveControls": [] }, { "file": "E15-body-font-picker-evidence.json", "sha256": "766c00058b4173bfbbd34f01d4b8bbf42627233628024c9f3888efe538551366", "checkpoint": "E15", "manualAction": "User opened Font anchor and Body Font selector, leaving list open.", "viewport": { "width": 1912, "height": 948 }, "accessibilityNodes": 751, "findings": [ { "status": "Verified", "finding": "Body Font opens scrollable option list grouped SERIF, SANS and MONO, with each font name rendered as a sample. Current Alegreya has visible checkmark." }, { "status": "Verified", "finding": "AX exposes 35 font options in this capture, including Source Sans Pro, Roboto, Lora, EB Garamond and Courier Prime. Body Font trigger expanded=true with listbox popup semantics." }, { "status": "Verified", "finding": "No search field observed in this captured picker. Do not infer font upload is unsupported from this view." }, { "status": "Not Tested", "finding": "Changing body/name font, keyboard selection, multilingual glyph coverage, font embedding and export matching." } ], "namedInteractiveControls": [] }, { "file": "E16-ai-tools-evidence.json", "sha256": "ac133147783bca212333060a2e63e854e139476c90356bd65e50fff7fa4ed398", "checkpoint": "E16", "manualAction": "User selected Source Sans Pro, reported preview also changes on hover, then opened AI Tools without submitting.", "viewport": { "width": 1912, "height": 948 }, "accessibilityNodes": 254, "findings": [ { "status": "Verified", "finding": "AI Tools route /resume/ai-tools shows Pro-plan notice and Upgrade to Pro action, plus Translate resume, Improve writing, Draft Cover Letter, Generate Summary, Check spelling & grammar cards." }, { "status": "Verified", "finding": "Draft Cover Letter copy says it uses resume and target job description. Grammar check copy distinguishes checking from rewriting. These are interface claims; resulting behavior not tested." }, { "status": "Verified", "finding": "Document preview remains alongside AI tool navigation." }, { "status": "Inferred", "finding": "User reports choosing Source Sans Pro changes preview, including temporary preview on font hover. Current screenshot is visibly sans serif; selected font value and hover cancellation not independently captured." }, { "status": "Not Tested", "finding": "AI input forms, gating enforcement, privacy disclosure, quota, generation latency/result quality, apply/reject/undo behavior and AI network requests." } ], "namedInteractiveControls": [] }, { "file": "E17-ai-plan-gate-evidence.json", "sha256": "b049bf14e0d627cf54185efa39fa767282960ed7c726df1970cbab5de8e81790", "checkpoint": "E17", "manualAction": "User clicked Draft now and paused; resulting screen is a Pro-plan gate.", "viewport": { "width": 1912, "height": 948 }, "accessibilityNodes": 268, "findings": [ { "status": "Verified", "finding": "Draft now opens a plan gate stating AI features are available on Pro, with Stay on Free, Upgrade to Pro and close controls. No drafting form or generation result observed." }, { "status": "Verified", "finding": "Gate copy advertises unlimited PDF downloads, all resume templates and design options on free plan. This verifies messaging, not unlimited use or export behavior." }, { "status": "Not Tested", "finding": "Paid AI input fields, generation, resume/job data use, privacy options, quotas and apply/reject results. No upgrade or generation requested." } ], "namedInteractiveControls": [] }, { "file": "E18-pdf-export-success-evidence.json", "sha256": "79e027909cb6fd359fb6d3062dd8942cb03be67f049572d655dec680d0efbb5f", "checkpoint": "E18", "manualAction": "User dismissed Pro gate and clicked Download; observed spinner popup then download. Passive 45-second window captured export metadata and final success state.", "viewport": { "width": 1912, "height": 948 }, "accessibilityNodes": 273, "findings": [ { "status": "Verified", "finding": "Manual Download observed successful GET /api/resumes/download with 200 application/pdf. No response body, query identifiers, cookies or raw headers retained." }, { "status": "Verified", "finding": "Final AX/screenshot shows Resume downloaded success popup with encouragement and return-to-editing action. User reports spinner popup then completed download; spinner pixels not captured." }, { "status": "Not Tested", "finding": "Actual local PDF contents, page size/count, font embedding, selectable text, output accessibility, retry/failure path and alternative export formats." } ], "namedInteractiveControls": [] }, { "file": "E19-editor-menu-evidence.json", "sha256": "831defbebd36b7eb3d1c0e1489d6f53df56ecb38c75f9e1520edc8d89ab219a5", "checkpoint": "E19", "manualAction": "User closed export success popup and opened top-right editor overflow.", "viewport": { "width": 1912, "height": 948 }, "accessibilityNodes": 9, "findings": [ { "status": "Verified", "finding": "Top-right editor overflow exposes two menuitems: Download via email and Get shareable link. No version/history/zoom control appears in this menu state." }, { "status": "Verified", "finding": "Unlike earlier custom dialogs, current AX snapshot is restricted to menu content with menuitem roles. No keyboard navigation test performed." }, { "status": "Not Tested", "finding": "Email delivery, publishing/sharing, link permissions, revocation and history/version availability elsewhere. Neither action was invoked." } ], "namedInteractiveControls": [ [ "menuitem", "Download via email" ], [ "menuitem", "Get shareable link" ] ] }, { "file": "E2-experience-form-evidence.json", "sha256": "62cb86256281c74e3a139ce4215bffc79ee37556e6e6c364b1b9f3a92d0d41f9", "checkpoint": "E2", "manualAction": "User expanded Professional Experience and opened the synthetic entry; no edits made during capture.", "viewport": { "width": 1912, "height": 948 }, "accessibilityNodes": 213, "findings": [ { "status": "Verified", "finding": "Experience editing replaces the left accordion pane with an Edit Entry form while the resume preview remains alongside." }, { "status": "Verified", "finding": "Employer autocomplete combobox plus Link button; Job Title and Location text inputs; Start Date/End Date inputs with Clear date controls; richtext Description." }, { "status": "Verified", "finding": "Richtext tools: Bold, Italic, Underline, Bulleted list, Insert link, left/center/right/justified alignment. AI shortcuts: Improve Writing, Suggest Content, Grammar Check, Shorter." }, { "status": "Verified", "finding": "Done button, Get Tips, eye and trash icons, section customization disclosure. Eye/trash buttons have empty names in this snapshot." }, { "status": "Verified", "finding": "Both date inputs expose accessible name MM/YYYY despite separate visible Start Date and End Date labels." }, { "status": "Not Tested", "finding": "Autocomplete suggestions, date validation, AI results, hide/delete effects, Done semantics and autosave." } ], "namedInteractiveControls": [ [ "textbox", "Job Title" ], [ "textbox", "MM/YYYY" ], [ "textbox", "MM/YYYY" ], [ "textbox", "Location" ], [ "textbox", "Description" ] ] }, { "file": "E20-document-switcher-evidence.json", "sha256": "ec423706cf48041d60ceda77990daefa48f763e9c175b813c0f54fa74ded11d2", "checkpoint": "E20", "manualAction": "User opened Resume 1 dropdown beside Download.", "viewport": { "width": 1912, "height": 948 }, "accessibilityNodes": 266, "findings": [ { "status": "Verified", "finding": "Resume selector opens My Resumes popover listing Resume 1 with Switch to Resume 1, Duplicate, More actions and Add new resume controls." }, { "status": "Verified", "finding": "Duplicate and More actions controls are named in AX, unlike the editor top-level overflow. No revision or version selector appears in current popover." }, { "status": "Not Tested", "finding": "Switching between distinct documents, duplication result, per-document actions, creation limit and revision/history availability elsewhere." } ], "namedInteractiveControls": [] }, { "file": "E21-duplicate-limit-evidence.json", "sha256": "45e6a1eedadd51af79edaf270e5568946e4b998cb4e7115a3301b74985a180d5", "checkpoint": "E21", "manualAction": "User clicked Duplicate beside Resume 1 and paused at the free-plan limit prompt.", "viewport": { "width": 1912, "height": 948 }, "accessibilityNodes": 265, "findings": [ { "status": "Verified", "finding": "Duplicate opens Need more than one resume? gate stating free plan includes one resume and upgrade is required to create another. No successful duplicate observed." }, { "status": "Verified", "finding": "Gate offers upgrade and close; no purchase or upgrade performed." }, { "status": "Not Tested", "finding": "Copy naming, independent editing, copied content/design ownership, version history and duplicate behavior on paid plan." } ], "namedInteractiveControls": [] }, { "file": "E3-title-edit-evidence.json", "sha256": "8f3bf69615d0ef14a68d82bad80096807656864d0e8ca03be56b3c2b2d3cd298", "checkpoint": "E3", "manualAction": "User replaced Job Title with UX Test Engineer, paused without clicking Done and reported no visible feedback.", "viewport": { "width": 1912, "height": 948 }, "accessibilityNodes": 215, "findings": [ { "status": "Verified", "finding": "UX Test Engineer appears in document preview while entry form remains open; user did not click Done." }, { "status": "Verified", "finding": "45-second attach window observed GET /api/resumes/:document-id 200, PATCH /api/resumes/save_entry 200 and POST /clientlog 200. No payloads or raw headers captured." }, { "status": "Inferred", "finding": "Successful save_entry PATCH during the manual title edit is consistent with automatic saving before Done; no reload persistence or conflict behavior tested." }, { "status": "Verified", "finding": "User reported seeing no feedback; final AX snapshot has no saving/saved text. Transient visual indicators may have been missed." }, { "status": "Not Tested", "finding": "Reload persistence, exact debounce timing, error/retry, offline behavior, undo/redo, whether Done triggers additional saves." } ], "namedInteractiveControls": [ [ "textbox", "Job Title" ], [ "textbox", "MM/YYYY" ], [ "textbox", "MM/YYYY" ], [ "textbox", "Location" ], [ "textbox", "Description" ] ] }, { "file": "E4-section-customizations-evidence.json", "sha256": "f0b993254a994c1ec41d94689af9c6e1a0b1c575eafbb8e7e2879cdf9e3c9dcc", "checkpoint": "E4", "manualAction": "User clicked Done, reopened experience, confirmed title retention and expanded section customizations.", "viewport": { "width": 1912, "height": 948 }, "accessibilityNodes": 237, "findings": [ { "status": "Verified", "finding": "UX Test Engineer remains visible after user reports Done then reopening the same entry. This verifies in-app reopen retention, not browser reload persistence." }, { "status": "Verified", "finding": "Section disclosure expands and changes name to Hide customizations for this section with expanded=true." }, { "status": "Verified", "finding": "Work Experience customizations show two Title/Subtitle Order choices: Job Title - Employer and Employer - Job Title; latter visibly selected. Group promotions checkbox is unchecked." }, { "status": "Verified", "finding": "Hint links to Customize > Entry Layout for more options." }, { "status": "Not Tested", "finding": "Applying order choice, grouping multiple promotions, history/undo, reload persistence and date validation." } ], "namedInteractiveControls": [ [ "textbox", "Job Title" ], [ "textbox", "MM/YYYY" ], [ "textbox", "MM/YYYY" ], [ "textbox", "Location" ], [ "textbox", "Description" ] ] }, { "file": "E5-add-content-evidence.json", "sha256": "e9284d4e0a9ea410050ce0fbdb03dd98212852f02b49ce4f1071c052c318d6ee", "checkpoint": "E5", "manualAction": "User chose Job Title - Employer and reported preview order swapped; clicked Done and Add Content, leaving chooser open.", "viewport": { "width": 1912, "height": 948 }, "accessibilityNodes": 441, "findings": [ { "status": "Verified", "finding": "Add Content opens a large modal with icon/title/help-text tiles in four columns at this desktop viewport." }, { "status": "Verified", "finding": "Current chooser lists Education, Professional Experience, Skills, Languages, Certificates, Interests, Projects, Courses, Awards, Organisations, Publications, References and two Custom tiles (existing custom section and add-custom tile)." }, { "status": "Verified", "finding": "Summary and Declaration exist in this document but are not offered in this captured chooser state. Do not infer they are unsupported or why they are omitted." }, { "status": "Verified", "finding": "Dialog has modal=true but an empty accessible name. Close icon is an unnamed button. Background controls remain in the captured AX tree; focus is reported on Add Content. Keyboard containment was not tested." }, { "status": "Verified", "finding": "Experience entry name now reads UX Test Engineer, employer after presentation change; user reports preview swapped their order." }, { "status": "Not Tested", "finding": "Choosing a new section, duplicate section rules, custom schema editing, modal keyboard behavior and add cancellation." } ], "namedInteractiveControls": [] }, { "file": "E6-new-project-evidence.json", "sha256": "481c5f186b046d9f3a4f3c40a980a4b5b8ac410fb9114bcc3ea2b08983a98fb6", "checkpoint": "E6", "manualAction": "User selected Projects from Add Content and left the blank form untouched.", "viewport": { "width": 1912, "height": 948 }, "accessibilityNodes": 203, "findings": [ { "status": "Verified", "finding": "Choosing Projects when a Projects section already exists opens a blank Edit Entry form at /resume/content/edit/project/:entry-id. The existing project remains visible in the preview." }, { "status": "Verified", "finding": "Project fields: Project title with Link, Sub title, Start Date, End Date and richtext Description. Project title is focused; exposed required states are false. Done, hide/delete icons, AI shortcuts and customization disclosure are present." }, { "status": "Inferred", "finding": "Chooser appears to add a new entry to the existing typed section; successful completion and section count still need corroboration." }, { "status": "Not Tested", "finding": "Empty-submit validation, date validation, new entry persistence, cancellation and reordering." } ], "namedInteractiveControls": [ [ "textbox", "Project title" ], [ "textbox", "Sub title" ], [ "textbox", "MM/YYYY" ], [ "textbox", "MM/YYYY" ], [ "textbox", "Description" ] ] }, { "file": "E7-customize-overview-evidence.json", "sha256": "57fc528513148062b5b1e65206d14941b977200a208a56b87cf0121604f5b2e3", "checkpoint": "E7", "manualAction": "User completed new synthetic Project B, clicked Done and opened Customize; reported no save feedback.", "viewport": { "width": 1912, "height": 948 }, "accessibilityNodes": 617, "findings": [ { "status": "Verified", "finding": "Customize route /resume/customization retains preview and shows anchor navigation: Document, Templates, Layout, Font Size, Spacing, Entries, Headings, Font, Colors, Header, Photo, Links, Footer, Sections." }, { "status": "Verified", "finding": "Document defaults currently English (UK), DD/MM/YYYY, A4; Browse templates control present. Existing and new UX Test Project B appear together under Projects in preview." }, { "status": "Verified", "finding": "Layout controls include One/Two/Mix columns, Top/Left/Right header, section drag list with page breaks and 45%/55% column widths. Two and Left currently selected." }, { "status": "Verified", "finding": "AX exposes font size offsets, line height, spacing, margins, entry/date layout, heading styles, fonts, color area/modes, accent targets, header alignment/icon styling, photo options, link styling, footer fields and section customizations. Presence only; effects not tested." }, { "status": "Verified", "finding": "Current fonts: Zilla Slab body and Same as body font for name. Color modes Single/Multi/Image; current Multi. Photo controls explain options appear after photo added." }, { "status": "Inferred", "finding": "Floating curved-arrow pair resembles undo/redo; both are unnamed buttons in AX, so function and scope need testing." }, { "status": "Verified", "finding": "User reports no save feedback while adding project and moving to Customize." }, { "status": "Not Tested", "finding": "Template selection effects, typography changes, page format/language effects, undo/redo, drag/drop success, preview zoom and pagination behavior." } ], "namedInteractiveControls": [] }, { "file": "E8-template-gallery-evidence.json", "sha256": "4ef788154122d77f9c8a19a8bc11364209546d12748f0bf23a75d3a88a91f814", "checkpoint": "E8", "manualAction": "User clicked Browse templates and left gallery open without selecting a design.", "viewport": { "width": 1912, "height": 948 }, "accessibilityNodes": 964, "findings": [ { "status": "Verified", "finding": "Browse templates opens Apply a design template modal at ?modal=resume-templates. Four preview cards per row at 1912px, labeled names beneath; gallery extends below viewport." }, { "status": "Verified", "finding": "Filter controls All Templates, Popular, Simple, Modern, Creative are exposed as checkboxes, All Templates checked. Their filtering behavior is not yet tested." }, { "status": "Verified", "finding": "Gallery previews show sample content rather than the current synthetic resume content. Original assets are retained only in audit screenshots; no template or asset extraction/reuse." }, { "status": "Verified", "finding": "Modal and close button have empty accessible names in this snapshot. Underlying Browse templates remains the reported focused control; keyboard behavior not tested." }, { "status": "Not Tested", "finding": "Template application/confirmation, content retention, filter combinations, paywalls, undo and persistence." } ], "namedInteractiveControls": [] }, { "file": "E9-template-detail-evidence.json", "sha256": "bdbb114d6ea497b998b0de867a0f995ff7f9d28fc39131d223b33ce494e93b78", "checkpoint": "E9", "manualAction": "User selected CLASSIC CLEAR; observed larger preview/details and Use this template action.", "viewport": { "width": 1912, "height": 948 }, "accessibilityNodes": 649, "findings": [ { "status": "Verified", "finding": "Selecting Classic Clear opens a larger sample preview and detail modal, preserving underlying editor design until Use this template is chosen. URL gains template=classic-clear." }, { "status": "Verified", "finding": "Use this template is a named button. Detail copy advertises A4/US-Letter, editable text, customization, print readiness and online sharing. Only copy presence is verified; exported output/sharing not tested." }, { "status": "Verified", "finding": "Selected design preview uses sample content, not the synthetic current document. No confirmation warning observed before this intermediate screen." }, { "status": "Not Tested", "finding": "Applying design, data retention, undo/redo, export format and online sharing." } ], "namedInteractiveControls": [] }, { "file": "L1-cover-letter-creation-gallery-evidence.json", "sha256": "5a022be86ea8aaf52cfb8158357e55a4dd01f304760a530a8ec351912ff70412", "checkpoint": "L1", "manualAction": "User restored synthetic experience date per report, returned desktop width and opened cover-letters landing page.", "viewport": { "width": 1661, "height": 948 }, "accessibilityNodes": 263, "findings": [ { "status": "Verified", "finding": "At /cover-letters with no user letters displayed, landing state is Create a cover letter with New blank tile and template gallery. Sidebar includes Resume, Cover Letter and Job Tracker." }, { "status": "Verified", "finding": "Filters All Templates/Simple/Modern/Creative appear as checkboxes; All Templates selected. At observed 1661x948, first row has New blank and two named template previews." }, { "status": "Verified", "finding": "Copy promises first cover letter free, all features and unlimited downloads. This verifies messaging, not paid-plan behavior or download limits." }, { "status": "Not Tested", "finding": "Blank/template creation, populated document card dashboard, letter limits, resume data reuse and matching design." } ], "namedInteractiveControls": [] }, { "file": "L10-letter-export-dashboard-evidence.json", "sha256": "43f49c20af8e181dcb46eed02b25833a37fec84d94f4581c5ef29a9caf4c1f23", "checkpoint": "L10", "manualAction": "User downloaded letter, dismissed any success popup and clicked Overview; 45-second passive window observed export and final dashboard.", "viewport": { "width": 1912, "height": 948 }, "accessibilityNodes": 98, "findings": [ { "status": "Verified", "finding": "Letter Download returned200 application/pdf from GET /api/letters/download. User reports completed export; no PDF body or local file inspected." }, { "status": "Verified", "finding": "Overview opens populated My Cover Letters dashboard at /cover-letters with New letter tile, Letter1 thumbnail, relative edit time, A4 metadata and unnamed overflow button." }, { "status": "Verified", "finding": "Dashboard thumbnail and AX retain copied sender, edited synthetic paragraph and new design after returning from editor." }, { "status": "Not Tested", "finding": "Local PDF fidelity/accessibility, letter duplication/versions/overflow actions, letter mobile behavior, multiple-letter limit and live resume synchronization." } ], "namedInteractiveControls": [] }, { "file": "L2-blank-cover-letter-editor-evidence.json", "sha256": "24e17900e9ffdec33d708d2320f1a852679184ff72b38871d8b8952e985dfe3a", "checkpoint": "L2", "manualAction": "User clicked New blank in cover-letter gallery and left initial editor untouched.", "viewport": { "width": 1661, "height": 948 }, "accessibilityNodes": 55, "findings": [ { "status": "Verified", "finding": "New blank creates Letter 1 and opens /cover-letter/write with desktop content/preview split and Overview, Content, Customize, letter selector and Download controls." }, { "status": "Verified", "finding": "Content cards: Sender details (Modern header), Date, Recipient details, Subject, Body, Signature. Cards have named Edit controls in AX." }, { "status": "Verified", "finding": "Initial date is 21st October 2026; sender/recipient/subject/body/signature show Not added. Preview includes date and default greeting/signoff placeholders." }, { "status": "Verified", "finding": "Existing resume contact data was not automatically populated into this initial blank letter state. No resume-data/design prompt observed after New blank." }, { "status": "Not Tested", "finding": "Explicit resume-data import, sender editing, body formatting, signature input, letter autosave, matching designs, export and mobile letter editing." } ], "namedInteractiveControls": [] }, { "file": "L3-letter-sender-form-evidence.json", "sha256": "18c9cc6af92d59f6a9d4ffdcde0036009f1e6bb884e374e8d2c4b400fa3ec223", "checkpoint": "L3", "manualAction": "User opened Sender details without entering personal information.", "viewport": { "width": 1661, "height": 948 }, "accessibilityNodes": 92, "findings": [ { "status": "Verified", "finding": "Sender editor provides explicit Copy from resume button with accessible name Copy sender details from resume." }, { "status": "Verified", "finding": "Sender style radios Modern Header (selected) and Classic Sender; fields Full name, Professional title, Email, Phone, Location; photo affordance and reorder grips for contact details." }, { "status": "Verified", "finding": "Add details options include LinkedIn, Website, Nationality, Date of Birth, Visa, Passport or Id, Availability and Show More. Presence does not establish data validation or privacy defaults." }, { "status": "Not Tested", "finding": "Copy source selection, which fields copy, one-time copy versus live synchronization, sender style change, photo upload and reorder behavior." } ], "namedInteractiveControls": [ [ "textbox", "Full name" ], [ "textbox", "Professional title" ], [ "textbox", "Email" ], [ "textbox", "Phone" ], [ "textbox", "Location" ] ] }, { "file": "L4-copy-sender-prompt-evidence.json", "sha256": "0e8ada0babb90c6da000315dd1e6cc92f06480fd4f6d91def81d98ca2afb7f9a", "checkpoint": "L4", "manualAction": "User clicked Copy from resume and paused at source-selection prompt.", "viewport": { "width": 1661, "height": 948 }, "accessibilityNodes": 110, "findings": [ { "status": "Verified", "finding": "Copy from resume opens source selector and explicit warning that current personal details and photo will be replaced." }, { "status": "Verified", "finding": "Resume dropdown initially Select resume; Copy sender details disabled until source chosen. Cancel action present." }, { "status": "Inferred", "finding": "Wording describes replacement/copy, suggesting snapshot semantics rather than live synchronization; actual cross-document update behavior remains untested." }, { "status": "Not Tested", "finding": "Source selection list, successful import, copied field completeness, overwrite behavior with populated sender and later resume edits." } ], "namedInteractiveControls": [ [ "textbox", "Full name" ], [ "textbox", "Professional title" ], [ "textbox", "Email" ], [ "textbox", "Phone" ], [ "textbox", "Location" ] ] }, { "file": "L5-sender-copied-evidence.json", "sha256": "dba8eb01cab922d1be7de997a1ae7dbe55385a737b8922e7329d170b3abdcd63", "checkpoint": "L5", "manualAction": "User selected synthetic Resume 1 and confirmed Copy sender details; populated sender form and preview observed.", "viewport": { "width": 1661, "height": 948 }, "accessibilityNodes": 219, "findings": [ { "status": "Verified", "finding": "Copying from synthetic Resume 1 populates name, professional title, email, phone, location and optional website/nationality/ID/LinkedIn/birth-date/visa/availability fields. Those details appear in letter preview." }, { "status": "Verified", "finding": "Modern Header remains selected and letter body stays blank with default greeting/signoff. Copy did not import experience or project paragraphs into body." }, { "status": "Inferred", "finding": "Copy imports optional personal fields broadly rather than only core contact fields; a design recommendation should make this scope clear before replacement." }, { "status": "Not Tested", "finding": "Photo copying, omitted-field removal, data synchronization after later edits, copy rollback, source provenance display and server persistence." } ], "namedInteractiveControls": [ [ "textbox", "Full name" ], [ "textbox", "Professional title" ], [ "textbox", "Email" ], [ "textbox", "Phone" ], [ "textbox", "Location" ], [ "textbox", "Website" ], [ "textbox", "Nationality" ], [ "textbox", "ID Number" ], [ "textbox", "LinkedIn" ], [ "textbox", "Date of Birth" ], [ "textbox", "Visa Status" ], [ "textbox", "Availability" ] ] }, { "file": "L6-letter-body-autosave-evidence.json", "sha256": "58f00115ba817b8c6f50593db12a5743bdfc44432748145e83ac9d5675345239", "checkpoint": "L6", "manualAction": "User clicked sender Done, opened Body, entered synthetic paragraph and paused without Done.", "viewport": { "width": 1661, "height": 948 }, "accessibilityNodes": 118, "findings": [ { "status": "Verified", "finding": "Body editor has Bold, Italic, Underline, Bulleted list, Insert link and four text alignment controls. Synthetic paragraph appears in editor and document preview before Done." }, { "status": "Verified", "finding": "45-second window recorded two successful POST /api/letters/save_body requests, both 200 application/json. No content bodies, credential headers or query values retained." }, { "status": "Inferred", "finding": "Save requests while form remains open are consistent with automatic saving before Done. Exact debounce, duplicate-request cause, storage semantics and reload durability remain unknown." }, { "status": "Not Tested", "finding": "Richtext formatting effects, preview latency, request-error feedback, undo/redo for body content, grammar/AI assistance, signature image input and backend persistence after reload." }, { "status": "Verified", "finding": "Body richtext textbox has an empty accessible name. Screenshot and AX show paragraph in bold in editor and preview; direct toolbar action sequence was not observed." } ], "namedInteractiveControls": [] }, { "file": "L7-letter-customize-evidence.json", "sha256": "868e83f3f221845df8aa15455d41dfc810fb493f50251393598c3b57f0eb5b91", "checkpoint": "L7", "manualAction": "User clicked body Done and opened letter Customize.", "viewport": { "width": 1912, "height": 948 }, "accessibilityNodes": 413, "findings": [ { "status": "Verified", "finding": "Letter Customize at /cover-letter/design has Copy resume design and Browse templates, plus anchor navigation for document, templates, layout, header, photo, font size, spacing, font, colors, links and footer." }, { "status": "Verified", "finding": "Letter-specific controls include sender style, date/recipient drag reorder, position choices, declaration position/line and name emphasis; common typography/color/header/link/footer controls also appear." }, { "status": "Verified", "finding": "Current design shows Modern Header, Source Sans Pro body, name Same as body font, base 11pt, line height1.5 and 16mm margins. Letter remains alongside controls; synthetic body and copied sender retained." }, { "status": "Not Tested", "finding": "Copy resume design mapping/confirmation, letter template application, reordering letter blocks, photo/signature behavior, cover-letter undo/redo and matching export." } ], "namedInteractiveControls": [] }, { "file": "L8-copy-resume-design-prompt-evidence.json", "sha256": "bdd8fae2893f4adb87bd6b6ea4df4accb3c85c0173e30fc532660505e4ce2e34", "checkpoint": "L8", "manualAction": "User opened Copy resume design and selected Resume 1, pausing before Copy design.", "viewport": { "width": 1912, "height": 948 }, "accessibilityNodes": 430, "findings": [ { "status": "Verified", "finding": "Copy resume design opens source selector with explicit scope: matching colors, typography, spacing, layout, header and footer settings will be replaced." }, { "status": "Verified", "finding": "Selected synthetic Resume 1 is shown; Copy design enabled and Cancel available. Data import is separate from design import." }, { "status": "Not Tested", "finding": "Which settings map exactly, copied sender style, content preservation after apply, undo and continued synchronization." } ], "namedInteractiveControls": [] }, { "file": "L9-resume-design-copied-evidence.json", "sha256": "24d3bdcd2581c6668749a6c7f4965e82b9e1b8140537e09f370b690c1f70470a", "checkpoint": "L9", "manualAction": "User confirmed Copy design from synthetic Resume 1 and left resulting letter Customize visible.", "viewport": { "width": 1912, "height": 948 }, "accessibilityNodes": 413, "findings": [ { "status": "Verified", "finding": "Copy design closes dialog and updates letter preview/settings while retaining synthetic body and copied sender." }, { "status": "Verified", "finding": "Name/professional-title offsets change +8/+2 to +11/+5; margins change from16mm to22mm horizontal/12mm vertical. Link icon becomes checked. Base11pt, Source Sans Pro and centered Modern Header remain." }, { "status": "Verified", "finding": "Letter line-height now displays1.2, while captured resume line-height was1.15. This is a mapped compatible design, not demonstrated pixel-identical settings." }, { "status": "Inferred", "finding": "Line-height difference may be rounding, clamping or document-specific mapping; implementation unknown and not inferred from pixels alone." }, { "status": "Not Tested", "finding": "Live synchronization after resume changes, complete copied-setting equivalence, design-copy undo, export matching and letter-specific layout edge cases." } ], "namedInteractiveControls": [] }, { "file": "M1-mobile-content-evidence.json", "sha256": "ca7cd07ad839edd60286d0b93a6b1fa2d1865f5b6c880fd7f770174ec8fab1b9", "checkpoint": "M1", "manualAction": "User opened Content and manually configured narrow responsive viewport, then scrolled top. REA observed 390x840.", "viewport": { "width": 390, "height": 840 }, "accessibilityNodes": 228, "findings": [ { "status": "Verified", "finding": "At observed 390x840 viewport desktop split view becomes a single editing column. Top bar contains FlowCV logo and Menu; content cards remain full-width." }, { "status": "Verified", "finding": "Fixed bottom action bar exposes Preview and Add Content. Preview document text is absent from current AX snapshot; content editor remains available." }, { "status": "Verified", "finding": "Section order retains Skills above Education; synthetic new project remains in section inventory. Resume data survives the tested route and viewport transitions." }, { "status": "Not Tested", "finding": "Real phone input/touch, mobile keyboard, screen rotation, horizontal overflow measurements, focus containment, mobile form editing, preview zoom and responsive breakpoints between desktop/mobile." } ], "namedInteractiveControls": [] }, { "file": "M2-mobile-preview-evidence.json", "sha256": "ea6252ea2e15638256af7575224f74e465e744164d48b98e417972089d3a993d", "checkpoint": "M2", "manualAction": "User tapped Preview from mobile bottom action bar and left overlay open without zooming.", "viewport": { "width": 390, "height": 840 }, "accessibilityNodes": 380, "findings": [ { "status": "Verified", "finding": "Preview opens an overlay with document pages scaled to narrow viewport width and stacked vertically. Keep editing and Download remain fixed at bottom." }, { "status": "Verified", "finding": "Two page surfaces are visible, showing synthetic content and manual section order. No dedicated zoom or page-jump control is visible or named in current AX snapshot." }, { "status": "Verified", "finding": "Underlying content controls remain in AX with Preview reported focused; overlay has no dialog role in this capture. Keyboard/focus behavior needs direct testing." }, { "status": "Not Tested", "finding": "Pinch zoom, keyboard zoom, scroll-to-page behavior, background scroll lock, focus restoration, mobile export success and real-device viewport behavior." } ], "namedInteractiveControls": [] }, { "file": "M3-mobile-experience-form-evidence.json", "sha256": "6adb05dfcfe717fd59deca710aeffadf05bcdfdb2eb2e7954510897c11dcfd29", "checkpoint": "M3", "manualAction": "User returned from Preview and opened synthetic experience entry at mobile viewport.", "viewport": { "width": 390, "height": 840 }, "accessibilityNodes": 81, "findings": [ { "status": "Verified", "finding": "At 390x840, experience form stacks Job Title/Employer/Location/Description; Start Date and End Date remain side by side. Fixed bottom Preview and Done actions replace desktop Done card." }, { "status": "Verified", "finding": "Richtext alignment changes from four separate desktop alignment buttons to named Text alignment: left dropdown. Bold/Italic/Underline/Bullets/Link remain visible." }, { "status": "Verified", "finding": "Mobile top bar provides Content back navigation and Menu. Tips, hide and delete icons remain; date inputs still have identical MM/YYYY accessible names." }, { "status": "Not Tested", "finding": "On-screen keyboard occlusion, typing/autosave on real phone, date validation, touch target sizes, mobile richtext editing and focus behavior." } ], "namedInteractiveControls": [ [ "textbox", "Job Title" ], [ "textbox", "MM/YYYY" ], [ "textbox", "MM/YYYY" ], [ "textbox", "Location" ], [ "textbox", "Description" ] ] }, { "file": "M4-date-range-edge-evidence.json", "sha256": "3b24b2b8abf0b4d1171f71ecd09414095bde18562028a043b64b744ba70f66c0", "checkpoint": "M4", "manualAction": "User tried earlier end date via picker, reported earlier year unavailable, and selected Jan 2026 while start remained Feb 2026. No Done/submit performed.", "viewport": { "width": 390, "height": 840 }, "accessibilityNodes": 105, "findings": [ { "status": "Verified", "finding": "Captured form simultaneously displays Start Date 02/2026 and End Date 01/2026, with Done available, no visible error and both AX textbox invalid states false." }, { "status": "Verified", "finding": "Open end-date picker has Present (Current) unchecked, month selector including Jan-Dec/Remove month, and year option 2026/Remove year in captured AX." }, { "status": "Inferred", "finding": "Likely month-level date-range validation gap: picker appears to restrict year but permits end month before start in same year. User could not choose 2025; server-side validation and persistence of invalid range not tested." }, { "status": "Not Tested", "finding": "Done/submit behavior for invalid range, backend acceptance, direct typed values, current-date upper bound, year-only semantics, localization, validation after start-date change and exported invalid range." } ], "namedInteractiveControls": [ [ "textbox", "Job Title" ], [ "textbox", "MM/YYYY" ], [ "textbox", "MM/YYYY" ], [ "textbox", "Location" ], [ "textbox", "Description" ] ] } ], "limits": "Original third-party PNG and DOM remain external research references. Contact-sheet visual inspection and selected DOM/AX inspection do not establish human/device testing." }