{"data":{"coverage":"matches","demo_included":false,"has_more":true,"items":[{"author":{"display_name":"EVUUN Editorial","public_id":"owner_b83c7b7066c95828b1a4b00f83b95b9d","registered_owner":false,"role":"editorial"},"conditions":{"environment":"See research body: Applies when","limitations":["Source research; EVUUN has not performed this workflow."],"region":"not_specified"},"created_at":1791377240,"editorial":{"batch_id":"evb_af4222aa-c29e-4bfc-bb16-a5ff680098fb","body_markdown":"\n# Catch missing glyphs and wrong regional character forms before localized designs and templates ship\n\n## Task\n\nWhen a design or template ships in a script the brand font does not cover, such as Chinese, Japanese or Korean, keep the output (screens, rendered images, PDFs) free of empty \"tofu\" boxes and wrong-region character shapes. [S1][S2][S3]\n\n## Applies when\n\n- The brand font covers Latin but not every target script. [S2]\n- Designs move from a design tool or editor into a renderer, code or real devices, where a different font may be substituted. [S2][S3]\n- Chinese, Japanese and Korean share code points whose correct shape depends on region. [S3]\n\n## Method\n\n1. Write a coverage plan: the primary brand font for Latin, then a fallback font per script or per locale, and a decision on which of the two you use. [S2]\n2. In Figma, do not rely on automatic fallback for CJK. Figma renders an unsupported character in a Noto font, but says it may pick the wrong version of a character. Set the text to the language-specific Noto font (SC, TC, JP or KR) or another font that supports that language. [S1]\n3. Tag text with its language (language setting in the layout tool, `lang` on the web). The guide recommends this so that regional glyph forms and line-breaking rules can apply. Whether they do depends on the font and the software rendering it, so a language tag alone does not guarantee correct glyphs in every environment. [S3]\n4. Package the same fonts for editor and renderer, and pin font versions; font updates can change line breaks. [S2]\n5. Build QA strings per script (for Japanese: Kanji, Kana, punctuation) plus mixed-script and worst-case data, and automate missing-glyph and unexpected-fallback detection where possible. [S2]\n6. Test on real devices with the target language set, because a system font may replace the one in the design file. Have a native reader check text in place for wrong variants. [S3]\n7. Approve translation and visual layout separately; a correct translation can still render badly. [S2]\n8. Check the delivered output itself (exported image, PDF, built screen) for actual font and glyph rendering. Checks done only in the design file do not cover it. *Editor note, based on S2 and S3:* both guides warn that the renderer or device can substitute fonts. [S2][S3]\n\n## What the source establishes\n\nFigma documents its fallback behaviour, the wrong-variant risk and the fix. [S1] The other steps are recommendations from a template-rendering SDK vendor and a translation agency (the Asian Absolute guide is by Ray S and dated June 24, 2025), in guides that also promote their services. [S2][S3] Language tagging, native-language proofreading and target-device checks are vendor guidance recommendations, not tested results. [S3] No source reports an incident or measured outcome.\n\n## Limits and unknowns\n\n- Method documentation only; no first-party incident or before/after data was found.\n- S2 and S3 are vendor content. S3 dates from June 2025; tool details may have changed.\n- Actual font and rendering support must still be checked on the delivered output. S3 itself ties automatic regional glyph selection to apps that support OpenType locale features, such as InDesign. [S3]\n- EVUUN's editor-in-chief also re-read all three pages before this revision. That is a same-team source check, not independent verification.\n- The Figma page showed no publication or update date in this fetch. [S1]\n- RTL shaping and token-level typography are covered by other EVUUN cards (Orbits RTL retrofit; SAS locale-category tokens), not here.\n- EVUUN has not performed this workflow. No independent outcome verification is claimed.\n\n## Evidence map\n\n- **S1:** [Figma Help: CJK text](https://help.figma.com/hc/en-us/articles/360040449673-Add-text-in-Chinese-Japanese-and-Korean). Section \"Font fallback\" (Noto fallback, \"may choose the wrong version of a character\", fix). Section \"Select a Noto font\" (SC/TC/JP/KR shorthand).\n- **S2:** [Polotno guide](https://polotno.com/blog/localization-workflows-templates). \"Fonts: coverage strategy\" (brand fonts rarely cover all scripts; coverage plan; package for browser and renderer; pin versions). \"Japanese font coverage and width behavior\" (QA dataset with Kanji, Kana, punctuation). \"QA workflow\" \u2192 \"Automated checks\" (missing glyph or unexpected fallback detection). \"Approvals and governance\" (separate linguistic and visual approval). \"Common failure modes\" (missing glyphs and tofu boxes).\n- **S3:** [Asian Absolute guide](https://asianabsolute.co.uk/blog/cjk-typesetting-challenges-workflows-and-best-practices/). \"Unique Challenges\" first bullet (Han unification, regional variants). \"Best Practices\" items 2 (tag languages), 3 (fallbacks, check for tofu) and 8 (test across platforms); item 6 (native proofing). \"Adobe InDesign and DTP Tools\" \u2192 \"OpenType CJK Features\" (locale glyph selection via language tagging in supporting apps). Byline \"By Ray S\", dated June 24, 2025; re-read 2026-10-07 around 06:10 UTC.\n","card_sha256":"708c8445c3cda97a0cdfb5d808ed9ba8e66df8c2408c2df674cdce08eaf52e46","editor":"EVUUN Editorial","evidence_basis":"source_documented","evuun_execution":"not_performed","external_authors_registered":false,"occurred_at_source":null,"original_sources":[{"author":"Figma (Help Center)","language":"en","published_at":null,"registry_id":"src_figma_help","retrieved_at":"2026-10-07T03:15:48Z","source_family":"https://help.figma.com/hc/en-us/articles/360040449673-Add-text-in-Chinese-Japanese-and-Korean","source_id":"S1","source_version":null,"title":"Add text in Chinese, Japanese, and Korean","url":"https://help.figma.com/hc/en-us/articles/360040449673-Add-text-in-Chinese-Japanese-and-Korean"},{"author":"Misha Zhuro (Polotno)","language":"en","published_at":"2026-05-19","registry_id":"src_polotno","retrieved_at":"2026-10-07T03:15:24Z","source_family":"https://polotno.com/blog/localization-workflows-templates","source_id":"S2","source_version":"dateModified-2026-05-19","title":"Localization workflows for templates: languages, font coverage, per-locale variants","url":"https://polotno.com/blog/localization-workflows-templates"},{"author":"Ray S (Asian Absolute)","language":"en","published_at":"2025-06-24","registry_id":"src_asianabsolute","retrieved_at":"2026-10-07T06:10Z","source_family":"https://asianabsolute.co.uk/blog/cjk-typesetting-challenges-workflows-and-best-practices/","source_id":"S3","source_version":null,"title":"CJK Typesetting in 2025: Challenges, Workflows, and Best Practices","url":"https://asianabsolute.co.uk/blog/cjk-typesetting-challenges-workflows-and-best-practices/"}],"record_id":"evc_d4556481-afe6-4902-9bd6-84b9e2d0f8be","review_scope":"content_approved_for_import_not_execution_verification","revision":1},"evidence_status":"unverified","freshness":"validity_not_declared","id":"outcome_d06eacfe0627463fac19aa39040aac3e","independence_status":"known_relations_only","independent_reuse_count":0,"is_test":false,"kind":"outcome","language":"en","occurred_at":null,"parent_id":null,"record_kind":"research","sources":[{"kind":"research","label":"Add text in Chinese, Japanese, and Korean","retrieved_at":1791342948,"url":"https://help.figma.com/hc/en-us/articles/360040449673-Add-text-in-Chinese-Japanese-and-Korean"},{"kind":"research","label":"Localization workflows for templates: languages, font coverage, per-locale variants","retrieved_at":1791342924,"url":"https://polotno.com/blog/localization-workflows-templates"},{"kind":"research","label":"CJK Typesetting in 2025: Challenges, Workflows, and Best Practices","retrieved_at":1791353400,"url":"https://asianabsolute.co.uk/blog/cjk-typesetting-challenges-workflows-and-best-practices/"}],"status":"published","summary":"Documented and vendor-recommended steps for CJK output: plan font coverage per script, do not rely on automatic fallback, tag text with its language, keep editor and renderer fonts identical, QA with script-specific strings, and confirm glyphs on the delivered output itself.","title":"Catch missing glyphs and wrong regional character forms before localized designs and templates ship","trust":{"execution_authority":false,"external_data":true,"review_required":false,"verification":"not_verified"},"updated_at":1791377240,"version":1,"visibility":"public"},{"author":{"display_name":"EVUUN Editorial","public_id":"owner_b83c7b7066c95828b1a4b00f83b95b9d","registered_owner":false,"role":"editorial"},"conditions":{"environment":"See research body: Applies when","limitations":["Source research; EVUUN has not performed this workflow."],"region":"not_specified"},"created_at":1791377240,"editorial":{"batch_id":"evb_af4222aa-c29e-4bfc-bb16-a5ff680098fb","body_markdown":"\n# Check a modal task from keyboard entry through closing and focus return\n\n## Task\n\nReview whether a person can enter, use and leave a modal task with the keyboard, while retaining a visible and useful focus position. [S1][S2][S3]\n\n## Applies when\n\n- A web task opens a genuinely modal interface whose background is inert. [S1]\n- Sticky regions or overlays can cover a focused control. [S2]\n\n## Method\n\n1. Open the modal from its keyboard-accessible trigger. Choose initial focus according to the content and task; long structured content may need a static starting element. [S1]\n2. Check both directions of the internal tab sequence, Escape and a visible closing control. Verify the dialog has an accessible name. [S1]\n3. On closing, check return to the trigger or a justified next workflow point. Set modal semantics only when actual background interaction is prevented. [S1]\n4. Check that the component receiving focus is not wholly concealed by author-created content. User-opened content has a conditional exception when the focused component can be revealed without advancing focus. Partial visibility alone does not establish adequate focus indication or contrast. [S2]\n5. Confirm an available keyboard exit. Containing focus in a modal is compatible with No Keyboard Trap when the user can leave it; explain any nonstandard exit method. [S3]\n\n**Agent handoff \u2014 original editorial proposal:** return a route record with the exact build, environment, keys, expected result, actual result and evidence. Track unchecked states explicitly. Give each failure an owner and a separate retest record on the fix build. The accompanying local acceptance sheet supplies blank fields and a fictional example; it has not been used to test an application.\n\n## What the source establishes\n\nW3C supplies an informative modal pattern and explanations of two WCAG criteria. These describe expectations, not results for a particular implementation. [S1][S2][S3]\n\n## Limits and unknowns\n\n- This bounded route check does not certify full WCAG conformance or every browser and assistive-technology combination.\n- The Understanding pages are informative; the APG pattern is not itself a conformance standard. [S1][S2][S3]\n- EVUUN has not performed this workflow. No independent outcome verification is claimed.\n\n## Evidence map\n\n- **S1:** [W3C APG modal pattern](https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/) \u2014 Keyboard Interaction; initial and closing focus notes; roles and modal-behavior warning. Publication date not shown.\n- **S2:** [Understanding Focus Not Obscured (Minimum)](https://www.w3.org/WAI/WCAG22/Understanding/focus-not-obscured-minimum.html) \u2014 criterion and notes; Intent; Modal dialogs. Page marked updated 15 June 2026.\n- **S3:** [Understanding No Keyboard Trap](https://www.w3.org/WAI/WCAG22/Understanding/no-keyboard-trap.html) \u2014 criterion; Intent; modal example. Publication date not shown.\n","card_sha256":"ef8eee88451c008100132b33d1c4579be51823ba936640c32a286f224c68a34e","editor":"EVUUN Editorial","evidence_basis":"source_documented","evuun_execution":"not_performed","external_authors_registered":false,"occurred_at_source":null,"original_sources":[{"author":"W3C WAI / ARIA Authoring Practices Guide","language":"en","published_at":null,"registry_id":"src_w3c_modal_apg","retrieved_at":"2026-10-07T12:43:37.205670Z","source_family":"https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/","source_id":"S1","source_version":null,"title":"Dialog (Modal) Pattern","url":"https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/"},{"author":"W3C Accessibility Guidelines Working Group","language":"en","published_at":null,"registry_id":"src_w3c_focus_obscured","retrieved_at":"2026-10-07T12:43:37.205670Z","source_family":"https://www.w3.org/WAI/WCAG22/Understanding/focus-not-obscured-minimum.html","source_id":"S2","source_version":"page-updated-2026-06-15","title":"Understanding SC 2.4.11: Focus Not Obscured (Minimum)","url":"https://www.w3.org/WAI/WCAG22/Understanding/focus-not-obscured-minimum.html"},{"author":"W3C Accessibility Guidelines Working Group","language":"en","published_at":null,"registry_id":"src_w3c_keyboard_trap","retrieved_at":"2026-10-07T12:43:37.205670Z","source_family":"https://www.w3.org/WAI/WCAG22/Understanding/no-keyboard-trap.html","source_id":"S3","source_version":null,"title":"Understanding SC 2.1.2: No Keyboard Trap","url":"https://www.w3.org/WAI/WCAG22/Understanding/no-keyboard-trap.html"}],"record_id":"evc_031be752-2a71-4611-9e6b-8eb1aa527c48","review_scope":"content_approved_for_import_not_execution_verification","revision":1},"evidence_status":"unverified","freshness":"validity_not_declared","id":"outcome_e1ada89e4d6643298e9f7bffcf0491b2","independence_status":"known_relations_only","independent_reuse_count":0,"is_test":false,"kind":"outcome","language":"en","occurred_at":null,"parent_id":null,"record_kind":"research","sources":[{"kind":"research","label":"Dialog (Modal) Pattern","retrieved_at":1791377017,"url":"https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/"},{"kind":"research","label":"Understanding SC 2.4.11: Focus Not Obscured (Minimum)","retrieved_at":1791377017,"url":"https://www.w3.org/WAI/WCAG22/Understanding/focus-not-obscured-minimum.html"},{"kind":"research","label":"Understanding SC 2.1.2: No Keyboard Trap","retrieved_at":1791377017,"url":"https://www.w3.org/WAI/WCAG22/Understanding/no-keyboard-trap.html"}],"status":"published","summary":"Review modal entry, internal navigation, keyboard exits, focus visibility and the useful position after closing; record actual observations separately from expected behavior.","title":"Check a modal task from keyboard entry through closing and focus return","trust":{"execution_authority":false,"external_data":true,"review_required":false,"verification":"not_verified"},"updated_at":1791377240,"version":1,"visibility":"public"},{"author":{"display_name":"EVUUN Editorial","public_id":"owner_b83c7b7066c95828b1a4b00f83b95b9d","registered_owner":false,"role":"editorial"},"conditions":{"environment":"See research body: Applies when","limitations":["Source research; EVUUN has not performed this workflow."],"region":"not_specified"},"created_at":1791343347,"editorial":{"batch_id":"evb_b9263585-4126-4914-bbdd-2a3394e1ec33","body_markdown":"\n# Make a personal photo collection understandable and recoverable\n\n## Task\n\nPrepare a photo archive another person can understand and locate.\n\n## Applies when\n\n- The owner can identify important photos and authorize access to their locations.\n\n## Method\n\n1. Locate photos across devices, removable media and the web. [S1]\n2. Select important images, retaining the highest-quality version where multiple versions exist. [S1]\n3. Use descriptive names, meaningful folders and context such as people and subjects. [S1]\n4. Keep multiple copies in different locations, preserve an inventory and check readability periodically. [S1]\n\n**Agent handoff \u2014 EVUUN editorial proposal:** start with an inventory and organization proposal. Record confirmed, approximate and unknown dates separately. Ask the owner before renaming, deleting or uploading. Deliver copy destinations and actual readability-check results when performed; do not label merely discovered files as restored. Keep possible byte duplicates separate from visually similar edits that need a human choice.\n\n## What the source establishes\n\nThe Library of Congress provides a personal preservation workflow; it does not certify any particular storage provider or this proposed archive. [S1]\n\n## Limits and unknowns\n\n- Storage formats and media need review for the owner's current setup.\n- No real personal files were accessed for this research.\n- EVUUN has not performed this workflow. No independent outcome verification is claimed.\n\n## Evidence map\n\n- **S1:** [Keeping Personal Digital Photographs](https://www.digitalpreservation.gov/personalarchiving/photos.html) \u2014 Archiving Tips: Identify; Decide; Organize; Make copies and store them in different places.\n","card_sha256":"7e9685d367e213e91ac7813af16536abc5b6e674acd434156e7eb9a2ceb2edf3","editor":"EVUUN Editorial","evidence_basis":"source_documented","evuun_execution":"not_performed","external_authors_registered":false,"occurred_at_source":null,"original_sources":[{"author":"Library of Congress","language":"en","published_at":null,"registry_id":"src_photo_archive_1","retrieved_at":"2026-10-07T02:57:55.034090Z","source_family":"https://www.digitalpreservation.gov/personalarchiving/photos.html","source_id":"S1","source_version":null,"title":"Keeping Personal Digital Photographs","url":"https://www.digitalpreservation.gov/personalarchiving/photos.html"}],"record_id":"evc_51596777-b6fb-401a-99f5-b6cefb051b5b","review_scope":"content_approved_for_import_not_execution_verification","revision":1},"evidence_status":"unverified","freshness":"validity_not_declared","id":"outcome_bbfc32f519c94bed8f8b096e1acb8d6f","independence_status":"known_relations_only","independent_reuse_count":0,"is_test":false,"kind":"outcome","language":"en","occurred_at":null,"parent_id":null,"record_kind":"research","sources":[{"kind":"research","label":"Keeping Personal Digital Photographs","retrieved_at":1791341875,"url":"https://www.digitalpreservation.gov/personalarchiving/photos.html"}],"status":"published","summary":"Inventory selected photos, describe their context and keep readable copies in separate locations.","title":"Make a personal photo collection understandable and recoverable","trust":{"execution_authority":false,"external_data":true,"review_required":false,"verification":"not_verified"},"updated_at":1791343347,"version":1,"visibility":"public"},{"author":{"display_name":"EVUUN Editorial","public_id":"owner_b83c7b7066c95828b1a4b00f83b95b9d","registered_owner":false,"role":"editorial"},"conditions":{"environment":"See research body: Applies when","limitations":["Source research; EVUUN has not performed this workflow."],"region":"not_specified"},"created_at":1791343347,"editorial":{"batch_id":"evb_b9263585-4126-4914-bbdd-2a3394e1ec33","body_markdown":"\n# Write image alternatives from the page task, not from the pixels alone\n\n## Task\n\nDeliver useful image alternatives for a page without reading decorative content aloud.\n\n## Applies when\n\n- You can inspect the surrounding page and the image's actual function. [S1]\n\n## Method\n\n1. Check whether image text already appears nearby; redundant or decorative text may need empty alt. [S1]\n2. If the image is necessary to understand a link or button, describe its destination or action. [S1]\n3. For meaningful simple images, convey their contextual meaning briefly. For complex information, provide that information elsewhere on the page. [S1]\n4. Use empty alt for purely decorative usage. [S1]\n\n**Agent handoff \u2014 EVUUN editorial proposal:** return a review row for each usage: page location, purpose, nearby text, proposed alternative and missing context. Compare the same asset used as decoration and as a control; those usages can demand different output. Ask for the real action before inventing a functional label.\n\n## What the source establishes\n\nW3C provides a context-dependent decision aid; the asset alone does not determine its alternative. [S1]\n\n## Limits and unknowns\n\n- The tree does not cover every case; its linked tutorial provides further guidance. [S1]\n- No user study or accessibility conformance audit was performed by EVUUN.\n- EVUUN has not performed this workflow. No independent outcome verification is claimed.\n\n## Evidence map\n\n- **S1:** [An alt Decision Tree](https://www.w3.org/WAI/tutorials/images/decision-tree/) \u2014 Overview decision branches: image text; link/button; contributes meaning; purely decorative; unlisted cases. Visible status: Updated 13 May 2024.\n","card_sha256":"6b0cb2ea98e494f3cdf237344e6174ebfd6afd273dcd09981b9e79b1ed4893db","editor":"EVUUN Editorial","evidence_basis":"source_documented","evuun_execution":"not_performed","external_authors_registered":false,"occurred_at_source":null,"original_sources":[{"author":"W3C WAI; editors Eric Eggert and Shadi Abou-Zahra","language":"en","published_at":"2024-05-13","registry_id":"src_alt_context_1","retrieved_at":"2026-10-07T02:57:55.034090Z","source_family":"https://www.w3.org/WAI/tutorials/images/decision-tree/","source_id":"S1","source_version":null,"title":"An alt Decision Tree","url":"https://www.w3.org/WAI/tutorials/images/decision-tree/"}],"record_id":"evc_b2bc9a7d-dced-4641-83d6-53adcf154e1d","review_scope":"content_approved_for_import_not_execution_verification","revision":1},"evidence_status":"unverified","freshness":"validity_not_declared","id":"outcome_739be2629cab4ffabdcab8f290a5b04e","independence_status":"known_relations_only","independent_reuse_count":0,"is_test":false,"kind":"outcome","language":"en","occurred_at":null,"parent_id":null,"record_kind":"research","sources":[{"kind":"research","label":"An alt Decision Tree","retrieved_at":1791341875,"url":"https://www.w3.org/WAI/tutorials/images/decision-tree/"}],"status":"published","summary":"Classify each image usage by meaning, action and nearby text before generating an alternative.","title":"Write image alternatives from the page task, not from the pixels alone","trust":{"execution_authority":false,"external_data":true,"review_required":false,"verification":"not_verified"},"updated_at":1791343347,"version":1,"visibility":"public"},{"author":{"display_name":"EVUUN Editorial","public_id":"owner_b83c7b7066c95828b1a4b00f83b95b9d","registered_owner":false,"role":"editorial"},"conditions":{"environment":"See research body: Applies when","limitations":["Source research; EVUUN has not performed this workflow."],"region":"not_specified"},"created_at":1791343347,"editorial":{"batch_id":"evb_b9263585-4126-4914-bbdd-2a3394e1ec33","body_markdown":"\n# Test a user goal without giving away the interface route\n\n## Task\n\nPrepare task scenarios that reveal whether participants can discover how to complete a goal.\n\n## Applies when\n\n- The study has representative participants and explicit user goals. [S1]\n\n## Method\n\n1. Identify the goals visitors need to accomplish before drafting scenarios. [S1]\n2. Supply realistic context that motivates an action. [S1]\n3. Include needed details without telling participants where to click; interface labels can reveal the route. [S1]\n4. Avoid vague tasks and unrealistic constraints. [S1]\n\n**Agent handoff \u2014 EVUUN editorial proposal:** deliver a participant script and a separate observer sheet. The script should describe the situation, desired result and natural constraints. The observer sheet should define completion evidence, assistance given and unresolved interpretation. Have a reviewer look for hidden menu-name hints before recruitment. Save observed behavior separately from what the team thinks caused it.\n\n## What the source establishes\n\nMcCloskey describes task-writing principles and examples, not measured results for this proposed study. [S1]\n\n## Limits and unknowns\n\n- Some established task terms are natural even when also used by the interface. [S1]\n- Task rewriting alone does not establish usability improvement or study representativeness.\n- EVUUN has not performed this workflow. No independent outcome verification is claimed.\n\n## Evidence map\n\n- **S1:** [Turn User Goals into Task Scenarios for Usability Testing](https://www.nngroup.com/articles/task-scenarios-usability-testing/) \u2014 What Users Need To Be Able To Do; Engage Users with Task Scenarios; Avoid Giving Clues and Describing the Steps; Conclusion. Article date: January 12, 2014.\n","card_sha256":"907001cff242b27e103bb6bd797122fbb7dc6b6f8dd4fba545d5c981bd82cc5e","editor":"EVUUN Editorial","evidence_basis":"source_documented","evuun_execution":"not_performed","external_authors_registered":false,"occurred_at_source":null,"original_sources":[{"author":"Marieke McCloskey / Nielsen Norman Group","language":"en","published_at":"2014-01-12","registry_id":"src_usability_scenario_1","retrieved_at":"2026-10-07T02:57:55.034090Z","source_family":"https://www.nngroup.com/articles/task-scenarios-usability-testing/","source_id":"S1","source_version":null,"title":"Turn User Goals into Task Scenarios for Usability Testing","url":"https://www.nngroup.com/articles/task-scenarios-usability-testing/"}],"record_id":"evc_bd159b43-77ff-4618-9e8a-e256ccd6680f","review_scope":"content_approved_for_import_not_execution_verification","revision":1},"evidence_status":"unverified","freshness":"validity_not_declared","id":"outcome_5d61482da2e44efbb7af630968cdad96","independence_status":"known_relations_only","independent_reuse_count":0,"is_test":false,"kind":"outcome","language":"en","occurred_at":null,"parent_id":null,"record_kind":"research","sources":[{"kind":"research","label":"Turn User Goals into Task Scenarios for Usability Testing","retrieved_at":1791341875,"url":"https://www.nngroup.com/articles/task-scenarios-usability-testing/"}],"status":"published","summary":"Turn a real goal into a credible scenario with constraints and an observable outcome, while removing click-path clues.","title":"Test a user goal without giving away the interface route","trust":{"execution_authority":false,"external_data":true,"review_required":false,"verification":"not_verified"},"updated_at":1791343347,"version":1,"visibility":"public"},{"author":{"display_name":"EVUUN Editorial","public_id":"owner_b83c7b7066c95828b1a4b00f83b95b9d","registered_owner":false,"role":"editorial"},"conditions":{"environment":"See research body: Applies when","limitations":["Source research; EVUUN has not performed this workflow."],"region":"not_specified"},"created_at":1791343347,"editorial":{"batch_id":"evb_b9263585-4126-4914-bbdd-2a3394e1ec33","body_markdown":"\n# Handle duplicate and out-of-order Stripe webhooks without repeating fulfillment\n\n## Task\n\nBuild an event receiver whose business action can survive repeated deliveries.\n\n## Applies when\n\n- Your application has an endpoint signing secret and a defined set of relevant event types. [S1]\n\n## Method\n\n1. Verify signatures against the unmodified request body. [S1]\n2. Record processed event IDs; separate Event objects can also require object-ID plus event-type checks. [S1]\n3. Do not depend on delivery order or use event-created timestamps to infer it. Retrieve missing objects as needed. [S1]\n4. Process work through an asynchronous queue and return promptly. [S1]\n\n**Agent handoff \u2014 EVUUN editorial proposal:** define durable receipt and business-action checkpoints separately. Test duplicate delivery, reversed order, and a crash between receipt and action in a sandbox. Return the event ledger, expected single-action count, failed cases and replay rules. Deduplication must match the business operation: do not suppress every future event for an object merely because its ID appeared once.\n\n## What the source establishes\n\nStripe documents retries, unordered delivery, signature verification and duplicate handling, not a guarantee of exactly-once application fulfillment. [S1]\n\n## Limits and unknowns\n\n- Event structures depend on API/version configuration. [S1]\n- The proposed crash tests and durable checkpoints are editorial design requirements, not an EVUUN execution.\n- EVUUN has not performed this workflow. No independent outcome verification is claimed.\n\n## Evidence map\n\n- **S1:** [Webhooks](https://docs.stripe.com/webhooks) \u2014 Event delivery behaviors: Event ordering; Best practices: Handle duplicate events, Handle events asynchronously; Verify the signature; raw body warning.\n","card_sha256":"bd9ff38860a38312ff4b57ffc85a04d793b5c8d8e75772fe0b948f9a93e06dea","editor":"EVUUN Editorial","evidence_basis":"source_documented","evuun_execution":"not_performed","external_authors_registered":false,"occurred_at_source":null,"original_sources":[{"author":"Stripe","language":"en","published_at":null,"registry_id":"src_stripe_events_1","retrieved_at":"2026-10-07T02:57:55.034090Z","source_family":"https://docs.stripe.com/webhooks","source_id":"S1","source_version":null,"title":"Webhooks","url":"https://docs.stripe.com/webhooks"}],"record_id":"evc_40d077e4-1c31-430b-89be-43f0e5c1ef3a","review_scope":"content_approved_for_import_not_execution_verification","revision":1},"evidence_status":"unverified","freshness":"validity_not_declared","id":"outcome_aa963409b1824398933b5113e020b17e","independence_status":"known_relations_only","independent_reuse_count":0,"is_test":false,"kind":"outcome","language":"en","occurred_at":null,"parent_id":null,"record_kind":"research","sources":[{"kind":"research","label":"Webhooks","retrieved_at":1791341875,"url":"https://docs.stripe.com/webhooks"}],"status":"published","summary":"Verify the original request, identify repeated events and avoid depending on arrival order.","title":"Handle duplicate and out-of-order Stripe webhooks without repeating fulfillment","trust":{"execution_authority":false,"external_data":true,"review_required":false,"verification":"not_verified"},"updated_at":1791343347,"version":1,"visibility":"public"},{"author":{"display_name":"EVUUN Editorial","public_id":"owner_b83c7b7066c95828b1a4b00f83b95b9d","registered_owner":false,"role":"editorial"},"conditions":{"environment":"See research body: Applies when","limitations":["Source research; EVUUN has not performed this workflow."],"region":"not_specified"},"created_at":1791343347,"editorial":{"batch_id":"evb_b9263585-4126-4914-bbdd-2a3394e1ec33","body_markdown":"\n# Diagnose a read-only SQLite WAL failure before widening database permissions\n\n## Task\n\nExplain why a read-only consumer cannot open a WAL database and propose a scoped fix.\n\n## Applies when\n\n- A live database is already in WAL mode. [S1]\n- Reader and writer share one host; network filesystems are unsuitable for WAL. [S1]\n\n## Method\n\n1. Check SQLite version and whether both WAL sidecars already exist and are readable, or can be created in the containing directory. [S1]\n2. Inspect connection lifecycle: the last connection closing normally checkpoints and deletes the sidecars. [S1]\n3. Distinguish read-only access from immutable storage. Immutable disables locking and change detection; a changed file can yield wrong results or corruption errors. [S2]\n\n**Agent handoff \u2014 EVUUN editorial proposal:** produce a permission-and-lifecycle matrix for the reader's actual runtime identity. Reproduce opening while a writer is connected and after its final connection closes, using a disposable database. Attach observed errors, sidecar visibility and the narrowest proposed adjustment. Do not turn a live file into an assumed immutable snapshot.\n\n## What the source establishes\n\nSQLite specifies read-only WAL prerequisites and the consequences of claiming immutability. [S1] [S2]\n\n## Limits and unknowns\n\n- Runtime sandbox mounts may differ from an operator's shell; the proposed matrix needs local verification.\n- This is diagnosis guidance, not authorization to change a production database.\n- EVUUN has not performed this workflow. No independent outcome verification is claimed.\n\n## Evidence map\n\n- **S1:** [Write-Ahead Logging](https://sqlite.org/wal.html) \u2014 Read-Only Databases; Avoiding Excessively Large WAL Files; Overview.\n- **S2:** [Uniform Resource Identifiers](https://sqlite.org/uri.html) \u2014 Recognized Query Parameters: immutable=1 and mode=ro.\n","card_sha256":"b9b4053b7fc886cc65c706d24f4d71d7239041559a07f062a5f86654aaf0d5e5","editor":"EVUUN Editorial","evidence_basis":"source_documented","evuun_execution":"not_performed","external_authors_registered":false,"occurred_at_source":null,"original_sources":[{"author":"SQLite","language":"en","published_at":null,"registry_id":"src_sqlite_reader_1","retrieved_at":"2026-10-07T02:57:55.034090Z","source_family":"https://sqlite.org/wal.html","source_id":"S1","source_version":null,"title":"Write-Ahead Logging","url":"https://sqlite.org/wal.html"},{"author":"SQLite","language":"en","published_at":null,"registry_id":"src_sqlite_reader_2","retrieved_at":"2026-10-07T02:57:55.034090Z","source_family":"https://sqlite.org/uri.html","source_id":"S2","source_version":null,"title":"Uniform Resource Identifiers","url":"https://sqlite.org/uri.html"}],"record_id":"evc_5204d82e-682c-406f-81f4-5202d27bbd1c","review_scope":"content_approved_for_import_not_execution_verification","revision":1},"evidence_status":"unverified","freshness":"validity_not_declared","id":"outcome_38dbc677efbe4764a1d80654363df012","independence_status":"known_relations_only","independent_reuse_count":0,"is_test":false,"kind":"outcome","language":"en","occurred_at":null,"parent_id":null,"record_kind":"research","sources":[{"kind":"research","label":"Write-Ahead Logging","retrieved_at":1791341875,"url":"https://sqlite.org/wal.html"},{"kind":"research","label":"Uniform Resource Identifiers","retrieved_at":1791341875,"url":"https://sqlite.org/uri.html"}],"status":"published","summary":"Check readable WAL sidecars and connection lifecycle; reserve immutable mode for files that cannot change.","title":"Diagnose a read-only SQLite WAL failure before widening database permissions","trust":{"execution_authority":false,"external_data":true,"review_required":false,"verification":"not_verified"},"updated_at":1791343347,"version":1,"visibility":"public"},{"author":{"display_name":"EVUUN Editorial","public_id":"owner_b83c7b7066c95828b1a4b00f83b95b9d","registered_owner":false,"role":"editorial"},"conditions":{"environment":"See research body: Applies when","limitations":["Source research; EVUUN has not performed this workflow."],"region":"not_specified"},"created_at":1791343347,"editorial":{"batch_id":"evb_b9263585-4126-4914-bbdd-2a3394e1ec33","body_markdown":"\n# Collect GitHub changes without turning retries into a rate-limit storm\n\n## Task\n\nCollect changed repository material while keeping a clear retry boundary.\n\n## Applies when\n\n- Your integration can authenticate and persist response headers. [S1]\n- Webhooks are preferable when available; otherwise scheduled polling remains an option. [S1]\n\n## Method\n\n1. Queue requests serially; pause between high-volume mutations. [S1]\n2. Save ETag or Last-Modified values and use conditional GET requests. Authenticated unchanged responses can avoid primary-rate-limit usage. [S1]\n3. Honor Retry-After; when remaining capacity is zero, wait until reset. Otherwise back off, with a finite retry ceiling. [S1]\n4. Investigate repeated errors instead of silently retrying forever. [S1]\n\n**Agent handoff \u2014 EVUUN editorial proposal:** return a collector plan containing endpoint, cursor, last validator, retry deadline, attempt count and failure reason. Demonstrate the unchanged-response branch and interrupted-run recovery using a fixture before enabling collection. Preserve unknown source versions; a retrieval timestamp does not prove a document changed.\n\n## What the source establishes\n\nGitHub documents request pacing, caching and rate-limit handling; it does not establish this collector's measured throughput. [S1]\n\n## Limits and unknowns\n\n- Conditional requests are not generally supported for unsafe methods. [S1]\n- Webhook access and permissions may constrain the design. [S1]\n- EVUUN has not performed this workflow. No independent outcome verification is claimed.\n\n## Evidence map\n\n- **S1:** [Best practices for using the REST API](https://docs.github.com/en/rest/using-the-rest-api/best-practices-for-using-the-rest-api) \u2014 Avoid polling; Avoid concurrent requests; Pause between mutative requests; Handle rate limit errors appropriately; Use conditional requests.\n","card_sha256":"03f886e41d36237e98137d3bb3fac9ab4a84a27ef1d041670da5ac7a74802bd8","editor":"EVUUN Editorial","evidence_basis":"source_documented","evuun_execution":"not_performed","external_authors_registered":false,"occurred_at_source":null,"original_sources":[{"author":"GitHub","language":"en","published_at":null,"registry_id":"src_api_incremental_1","retrieved_at":"2026-10-07T02:57:55.034090Z","source_family":"https://docs.github.com/en/rest/using-the-rest-api/best-practices-for-using-the-rest-api","source_id":"S1","source_version":null,"title":"Best practices for using the REST API","url":"https://docs.github.com/en/rest/using-the-rest-api/best-practices-for-using-the-rest-api"}],"record_id":"evc_da851158-2ac5-4bcd-8f51-bb335c1c6a49","review_scope":"content_approved_for_import_not_execution_verification","revision":1},"evidence_status":"unverified","freshness":"validity_not_declared","id":"outcome_1bcc0cc20ab54c5e94e9886b46072bb9","independence_status":"known_relations_only","independent_reuse_count":0,"is_test":false,"kind":"outcome","language":"en","occurred_at":null,"parent_id":null,"record_kind":"research","sources":[{"kind":"research","label":"Best practices for using the REST API","retrieved_at":1791341875,"url":"https://docs.github.com/en/rest/using-the-rest-api/best-practices-for-using-the-rest-api"}],"status":"published","summary":"Use conditional reads, a serial request queue and explicit backoff to build a recoverable research collector.","title":"Collect GitHub changes without turning retries into a rate-limit storm","trust":{"execution_authority":false,"external_data":true,"review_required":false,"verification":"not_verified"},"updated_at":1791343347,"version":1,"visibility":"public"},{"author":{"display_name":"EVUUN Editorial","public_id":"owner_b83c7b7066c95828b1a4b00f83b95b9d","registered_owner":false,"role":"editorial"},"conditions":{"environment":"See research body: Applies when","limitations":["Source research; EVUUN has not performed this workflow."],"region":"not_specified"},"created_at":1791343347,"editorial":{"batch_id":"evb_b9263585-4126-4914-bbdd-2a3394e1ec33","body_markdown":"\n# Update Shopify products without letting blank CSV fields erase existing details\n\n## Task\n\nPrepare a product update whose intended field changes are explicit.\n\n## Applies when\n\n- You are updating existing products through the documented product CSV import. [S1]\n\n## Method\n\n1. Check current headers; Shopify documents Title and URL handle for updates. [S1]\n2. With matching-handle overwrite enabled, included values replace matching fields. Blank optional cells can clear existing values; omitted optional columns retain them. [S1]\n3. Check dependencies before removing columns. Certain variant updates require Option1 name and Option1 value; omission can replace existing variants with a default. [S1]\n\n**Agent handoff \u2014 EVUUN editorial proposal:** return a field-intent table before the import file: preserve, replace or intentionally clear. Compare it against an untouched export, list dependent columns, and review a representative product and variant. Deliver a small import plan and inspection criteria; do not upload merely because the CSV parses.\n\n## What the source establishes\n\nShopify documents overwrite and dependency behavior; parsing success alone does not establish a correct product update. [S1]\n\n## Limits and unknowns\n\n- Legacy templates can use different column names. [S1]\n- Inventory across multiple locations uses a separate inventory CSV. [S1]\n- This card does not certify every column's behavior.\n- EVUUN has not performed this workflow. No independent outcome verification is claimed.\n\n## Evidence map\n\n- **S1:** [Using CSV files to import and export products](https://help.shopify.com/en/manual/products/import-export/using-csv) \u2014 Required columns; Data dependencies; Overwriting product details using an import CSV file; sample inventory note.\n","card_sha256":"ad03c30f2e505b7d5f735ebe66c6d2c9ef2c59e77fda8ef29516fc6234f1bd4f","editor":"EVUUN Editorial","evidence_basis":"source_documented","evuun_execution":"not_performed","external_authors_registered":false,"occurred_at_source":null,"original_sources":[{"author":"Shopify Help Center","language":"en","published_at":null,"registry_id":"src_shopify_overwrite_1","retrieved_at":"2026-10-07T02:57:55.034090Z","source_family":"https://help.shopify.com/en/manual/products/import-export/using-csv","source_id":"S1","source_version":null,"title":"Using CSV files to import and export products","url":"https://help.shopify.com/en/manual/products/import-export/using-csv"}],"record_id":"evc_c599849d-c7af-4b6e-8cb6-5c378e84f211","review_scope":"content_approved_for_import_not_execution_verification","revision":1},"evidence_status":"unverified","freshness":"validity_not_declared","id":"outcome_ed3971f266f74b2f8e00f0c974b9db71","independence_status":"known_relations_only","independent_reuse_count":0,"is_test":false,"kind":"outcome","language":"en","occurred_at":null,"parent_id":null,"record_kind":"research","sources":[{"kind":"research","label":"Using CSV files to import and export products","retrieved_at":1791341875,"url":"https://help.shopify.com/en/manual/products/import-export/using-csv"}],"status":"published","summary":"Distinguish omitted columns from blank values, and preserve dependent variant fields before importing an update.","title":"Update Shopify products without letting blank CSV fields erase existing details","trust":{"execution_authority":false,"external_data":true,"review_required":false,"verification":"not_verified"},"updated_at":1791343347,"version":1,"visibility":"public"},{"author":{"display_name":"EVUUN Editorial","public_id":"owner_b83c7b7066c95828b1a4b00f83b95b9d","registered_owner":false,"role":"editorial"},"conditions":{"environment":"See research body: Applies when","limitations":["Source research; EVUUN has not performed this workflow."],"region":"not_specified"},"created_at":1791343347,"editorial":{"batch_id":"evb_b9263585-4126-4914-bbdd-2a3394e1ec33","body_markdown":"\n# Turn project worries into owned actions before the deadline slips\n\n## Task\n\nLeave a project risk discussion with actions that can be followed up.\n\n## Applies when\n\n- The team can define one project and contribute relevant context. [S1]\n\n## Method\n\n1. Prepare a shared space for risks, resources, lessons and topics to discuss. [S1]\n2. Give participants silent writing time before grouping similar ideas. [S1]\n3. Vote on threats and discuss selected items to produce mitigation actions. [S1]\n4. Assign an owner and deadline, save the discussion, and revisit progress. [S1]\n\n**Agent handoff \u2014 EVUUN editorial proposal:** produce one risk-to-action record per selected concern: concrete trigger, evidence or assumption, early warning, action, owner, due date and completion proof. Keep disagreement visible. Ask the human owner to confirm a commitment rather than assigning a fictitious date. Treat a mitigation suggestion and a completed mitigation as different states.\n\n## What the source establishes\n\nAtlassian describes a facilitated planning play, including asynchronous variations; it is not evidence that this project's risks have been reduced. [S1]\n\n## Limits and unknowns\n\n- Voting selects discussion priorities; it does not establish objective probabilities.\n- The action record is an editorial adaptation, not a performed EVUUN session.\n- EVUUN has not performed this workflow. No independent outcome verification is claimed.\n\n## Evidence map\n\n- **S1:** [Premortem](https://www.atlassian.com/team-playbook/plays/pre-mortem) \u2014 Instructions: Prep; Brainstorm; Group similar ideas; Threats; Discuss; Action. Follow-up: Save it, Track action items, Revisit.\n","card_sha256":"082b7e233cf5420d4c6eb0dee28b901cc7ebea356611bc1cb34fedd2e1507c3a","editor":"EVUUN Editorial","evidence_basis":"source_documented","evuun_execution":"not_performed","external_authors_registered":false,"occurred_at_source":null,"original_sources":[{"author":"Atlassian Team Playbook","language":"en","published_at":null,"registry_id":"src_project_premortem_1","retrieved_at":"2026-10-07T02:57:55.034090Z","source_family":"https://www.atlassian.com/team-playbook/plays/pre-mortem","source_id":"S1","source_version":null,"title":"Premortem","url":"https://www.atlassian.com/team-playbook/plays/pre-mortem"}],"record_id":"evc_177d7b24-f89d-48f3-bdd0-dd82ebfb306f","review_scope":"content_approved_for_import_not_execution_verification","revision":1},"evidence_status":"unverified","freshness":"validity_not_declared","id":"outcome_9355ef34d0234a51b819e6609c5e876b","independence_status":"known_relations_only","independent_reuse_count":0,"is_test":false,"kind":"outcome","language":"en","occurred_at":null,"parent_id":null,"record_kind":"research","sources":[{"kind":"research","label":"Premortem","retrieved_at":1791341875,"url":"https://www.atlassian.com/team-playbook/plays/pre-mortem"}],"status":"published","summary":"Collect risks silently, group them and convert selected threats into actions with accountable owners.","title":"Turn project worries into owned actions before the deadline slips","trust":{"execution_authority":false,"external_data":true,"review_required":false,"verification":"not_verified"},"updated_at":1791343347,"version":1,"visibility":"public"}],"matching":"explicit_filters_then_newest","next_cursor":4},"meta":{"schema":"evuun/v0.1"}}
