DESIGN REFERENCE

Build from it.
Then prove it.

Four concrete extension tasks, six observable stages each, and a reviewable assessment tied to the actual files and deployment.

Public evidence18 Sep 2026Observed sources. Explicit local contracts.

Current assessment

Assessment in progress

Loading the current assessment…

Assessment data
The readiness boundary is the frozen local reference. It is not the original Raycast application or a claim about private operations. Independent review, real local implementations and live publication verification determine the final level.

Four independent handoff challenges

CHALLENGE 01 / frozen-local-reference

Add platform labels and Copy public link to an extension card

A visitor can tell which platforms a synthetic extension supports and copy its public source link without opening the extension or triggering installation.

Executed independently against the frozen local reference. 6 of 6 stages Independent; pass.
Stage evidence and implementation choices
existing-component-extension execution stages
StageResultObserved work
findIndependentLocated the exact local catalog, CSS, runtime, fixture and schema sources without author help. Missing raw source paths were recovered through the frozen published guide; no consequential local rule was missing.
chooseIndependentarticle.extension-card keeps its 24px inset, 16px gap, 12px radius and title link. Platform badges and a sibling ghost button add no card-level geometry override. copyText is the only clipboard writer.
specifyIndependentRecorded anatomy, content, states, data, keyboard, responsive and safe-link rules before implementation at the timestamp in the specification. Used exact brief rules; no unobserved product behavior was invented.
implementIndependentCreated working pages/modules in the copied frozen local site. Shared original site files remain byte-identical. New files and their complete diffs are retained.
verifyIndependentExecuted 6/6 exact brief browser assertions in Chromium 152.0.7977.42, plus asset/base-path checks and the data suite. Retained failed attempts and self-authored repairs.
explainIndependentRecorded source choices, original additions, boundary/deviations, elapsed time, every retained failure and repair, assistance log, and zero unanswered consequential local decisions.

What to build

  • Create one document with the reference navbar/footer, one h1 and one main; include assets/reference.css and load a module that imports copyText from ./reference.js.
  • Fetch data/fixtures.json once from the same site. Select the named valid records. Render records with createElement/textContent or build-time escaping. Use Extension.id for element IDs; never use array index or title.
  • Build article.extension-card with its 48px icon, h3 containing one native link, summary, publisher/platform group and sibling Copy public link button. Add platform badges in the fixture array order: macOS and Windows. Keep the supported platform text visible on narrow screens.
  • Copy only validated Extension.publicUrl after a user click. Reuse copyText(url, button), which already handles success, clipboard denial and manual copy. Keep the original link selectable. Do not put the button inside the title link.
  • Missing icon uses the store glyph; missing summary and publisher use fixture displayRules. Unavailable extension keeps readable metadata and source link; no active Install control. A sign-in-required local example shows the boundary text and an explicit official sign-in link.
  • Render the Arabic record with lang=ar and dir=auto on text. Keep the copied URL LTR in bdi. Literal <img...> title must appear as text, with zero extra images or event handlers.
  • Add a provenance line identifying the action as an original local addition, then write and execute the browser verifier.

Acceptance

  • EC-1 Each named fixture renders exactly once and has platform labels matching the array; missing values use explicit fallbacks.
  • EC-2 Click Copy and Space/Enter on its button both call the clipboard helper with exactly that record publicUrl; no navigation occurs.
  • EC-3 Stub clipboard rejection and confirm visible manual-copy text, preserved card content and retained focus on the trigger.
  • EC-4 At390x844,768x1024,1440x1000 and1920x1080, no horizontal page overflow; card padding is24px ±0.5px; title wraps and action is not clipped.
  • EC-5 Reduced-motion emulation removes hover translation; focus outline remains visible; literal-markup adds no img with src=x.
  • EC-6 Network log contains only same-site GETs. No clipboard write occurs before explicit user activation.
Exact brief, files and evidence requirements
existing-component-extension brief · JSON
{
  "id": "existing-component-extension",
  "title": "Add platform labels and Copy public link to an extension card",
  "executionBoundary": "frozen-local-reference",
  "status": "not-run",
  "coaching": "Give the implementer the frozen package, this brief and normal repository access. Record every clarification or intervention. The builder must not coach decisions during execution.",
  "workingCopy": "Work in a copied evaluation checkout of the frozen package. Keep the frozen input unchanged. New output artifacts are committed or copied into evidence/junior/<task-id>/ before final package freeze.",
  "sharedSources": [
    "IMPLEMENTATION.md",
    "reference-data/implementation-contract.json",
    "reference-data/independent-component-inventory.json",
    "reference-data/catalog.mjs",
    "site/assets/reference.css",
    "site/assets/reference.js",
    "site/data/fixtures.json"
  ],
  "commands": [
    "node designs/raycast/evidence/verification/data-contract-tests.mjs",
    "python3 -m http.server 4178 --bind 127.0.0.1 --directory designs/raycast/site",
    ".agents/skills/design-research/scripts/run-playwright.sh designs/raycast/evidence/junior/existing-component-extension/verify.cjs http://127.0.0.1:4178/"
  ],
  "requiredEvidence": {
    "find": "A source map naming the exact ledger IDs, tokens, assets, schema definitions, classes and runtime helpers used.",
    "choose": "A short explanation for each reused component and the task-specific addition.",
    "specify": "Record the planned states, data, keyboard flow, breakpoints, safe URL rules and copy before coding.",
    "implement": "Working HTML/JS/CSS changes against the frozen local reference, with a diff and no real account or message mutation.",
    "verify": "Actual command output, browser/version, viewport screenshots, keyboard/focus results, network interception and test assertions.",
    "explain": "Sources, deviations, time spent, failed checks, assistance received and unanswered consequential questions. A written plan alone does not pass."
  },
  "ratings": "Only the independent evaluator rates each of Find, Choose, Specify, Implement, Verify and Explain as Independent, Assisted or Blocked. A task passes only when all six are Independent and code execution was verified. No stage has been passed by writing this brief.",
  "goal": "A visitor can tell which platforms a synthetic extension supports and copy its public source link without opening the extension or triggering installation.",
  "independentSelection": {
    "inventory": "reference-data/independent-component-inventory.json",
    "ids": [
      "C-extension-card",
      "C-store-detail",
      "C-action-button"
    ],
    "publicUrls": [
      "https://www.raycast.com/store",
      "https://www.raycast.com/linear/linear"
    ],
    "evidence": [
      "evidence/capture/pages/store-1440.json",
      "evidence/capture/pages/store-390.json"
    ],
    "why": "Extension cards recur in the independently observed public collection and detail routes. This adds a new local utility to that high-use component."
  },
  "files": {
    "create": [
      "site/junior-extension-card.html",
      "site/assets/junior-extension-card.js",
      "evidence/junior/existing-component-extension/verify.cjs",
      "evidence/junior/existing-component-extension/report.json"
    ],
    "read": [
      "site/components.html#extension-card",
      "site/components.html#badge",
      "site/components.html#copy",
      "site/icons.html",
      "site/data/fixtures.json"
    ],
    "changeRule": "Use the existing CSS classes unchanged. Add namespaced CSS only if wrapping the platform/action group needs it; do not edit shared button or card geometry for one task."
  },
  "components": [
    "extension-card",
    "badge",
    "copy",
    "ghost-button",
    "toast",
    "media-frame"
  ],
  "tokens": [
    "--grey-900",
    "--grey-200",
    "--border",
    "--rounding-md",
    "--spacing-3",
    "--spacing-2",
    "--focus",
    "--duration-control"
  ],
  "assets": [
    "assets/icons/copy-clipboard.svg",
    "assets/icons/store.svg"
  ],
  "fixtures": [
    "types.Extension: draft-notes, missing-metadata, long-title, rtl-notes, private-collection, unavailable-tool, literal-markup",
    "types.Asset: asset-store-icon",
    "invalidRecords: extension-unsafe-link, extension-credential-link"
  ],
  "implementationSequence": [
    "Create one document with the reference navbar/footer, one h1 and one main; include assets/reference.css and load a module that imports copyText from ./reference.js.",
    "Fetch data/fixtures.json once from the same site. Select the named valid records. Render records with createElement/textContent or build-time escaping. Use Extension.id for element IDs; never use array index or title.",
    "Build article.extension-card with its 48px icon, h3 containing one native link, summary, publisher/platform group and sibling Copy public link button. Add platform badges in the fixture array order: macOS and Windows. Keep the supported platform text visible on narrow screens.",
    "Copy only validated Extension.publicUrl after a user click. Reuse copyText(url, button), which already handles success, clipboard denial and manual copy. Keep the original link selectable. Do not put the button inside the title link.",
    "Missing icon uses the store glyph; missing summary and publisher use fixture displayRules. Unavailable extension keeps readable metadata and source link; no active Install control. A sign-in-required local example shows the boundary text and an explicit official sign-in link.",
    "Render the Arabic record with lang=ar and dir=auto on text. Keep the copied URL LTR in bdi. Literal <img...> title must appear as text, with zero extra images or event handlers.",
    "Add a provenance line identifying the action as an original local addition, then write and execute the browser verifier."
  ],
  "exactRules": {
    "geometry": "Preserve card padding24, gap16, radius12, 1px border, title16/24px; extension grid3 columns at >=880px,2 at720..879px,1 below720px. Copy utility uses existing .button.ghost (36px minimum) or .copy-button (44px on coarse pointer). Put platform/action row in flex-wrap with8px item gap.",
    "copy": "Default Copy public link; pending promise leaves the card available; successful helper announces Copied to clipboard and temporarily labels Copied; failure announces manual-copy instructions. Copying never navigates.",
    "safety": "Only https://raycast.com or https://www.raycast.com with no credentials/control bytes/backslashes. Reject malformed fixture links before setting href or enabling copy; keep an explicit Link unavailable message.",
    "count": "Each extension appears once. Do not infer plan access from platform labels.",
    "locale": "Platform brand names remain macOS/Windows; do not mirror glyphs or URLs."
  },
  "acceptance": [
    {
      "id": "EC-1",
      "assertion": "Each named fixture renders exactly once and has platform labels matching the array; missing values use explicit fallbacks."
    },
    {
      "id": "EC-2",
      "assertion": "Click Copy and Space/Enter on its button both call the clipboard helper with exactly that record publicUrl; no navigation occurs."
    },
    {
      "id": "EC-3",
      "assertion": "Stub clipboard rejection and confirm visible manual-copy text, preserved card content and retained focus on the trigger."
    },
    {
      "id": "EC-4",
      "assertion": "At390x844,768x1024,1440x1000 and1920x1080, no horizontal page overflow; card padding is24px ±0.5px; title wraps and action is not clipped."
    },
    {
      "id": "EC-5",
      "assertion": "Reduced-motion emulation removes hover translation; focus outline remains visible; literal-markup adds no img with src=x."
    },
    {
      "id": "EC-6",
      "assertion": "Network log contains only same-site GETs. No clipboard write occurs before explicit user activation."
    }
  ],
  "expectedOutput": "One working card extension page, a narrow and wide screenshot, clipboard success/denial evidence, preserved schema checks, and six independently rated stages.",
  "evidenceOutput": "evidence/junior/existing-component-extension/",
  "result": {
    "status": "not-run",
    "implementationArtifacts": [],
    "commandsAndResults": [],
    "verifierId": null,
    "startedAt": null,
    "completedAt": null
  }
}

Stages: Find → Choose → Specify → Implement → Verify → Explain. Ratings are assigned by the independent executor from observed work, not prefilled by the builder.

CHALLENGE 02 / frozen-local-reference

Assemble a public Notes feature page from the existing shell and components

A public visitor can understand the Notes feature, inspect a local demonstration, read FAQs and follow an explicit source link without creating or syncing a note.

Executed independently against the frozen local reference. 6 of 6 stages Independent; pass.
Stage evidence and implementation choices
new-page-or-feature execution stages
StageResultObserved work
findIndependentLocated the exact local catalog, CSS, runtime, fixture and schema sources without author help. Missing raw source paths were recovered through the frozen published guide; no consequential local rule was missing.
chooseIndependentFrozen floating nav/search/footer, .hero/.hero-text, shared .three-col/.feature-card, native checkbox and FAQ, .pricing-grid/.price-card and reference.js billing handler.
specifyIndependentRecorded anatomy, content, states, data, keyboard, responsive and safe-link rules before implementation at the timestamp in the specification. Used exact brief rules; no unobserved product behavior was invented.
implementIndependentCreated working pages/modules in the copied frozen local site. Shared original site files remain byte-identical. New files and their complete diffs are retained.
verifyIndependentExecuted 7/7 exact brief browser assertions in Chromium 152.0.7977.42, plus asset/base-path checks and the data suite. Retained failed attempts and self-authored repairs.
explainIndependentRecorded source choices, original additions, boundary/deviations, elapsed time, every retained failure and repair, assistance log, and zero unanswered consequential local decisions.

What to build

  • Create sibling junior-notes.html with one h1, labelled main, skip link, existing floating nav, global-search dialog and footer. Use relative paths so /private/raycast/junior-notes.html also works.
  • Render the feature-notes record in a .hero with a short heading and one primary link to the official Notes source. Put the record availabilityLabel and reconstruction notice next to the link; do not present entitlementLabel=unverified as an entitlement.
  • Follow with three .feature-card modules using original demonstration headings Capture a thought, Return to the next task, Keep the context. Use CSS/DOM illustration for the missing-media case and explicitly label it Local illustration.
  • Provide a small checklist demonstration inside .surface-preview. It contains three native labelled checkboxes with synthetic tasks Review draft, Choose next step, Close the loop. Check/uncheck works only in document memory and has no save/sync claim.
  • Add two native details.faq disclosures: Does this demonstration save notes? answers No. It resets on reload.; Where can I check availability? links to the official public source. These are reference questions, not fabricated official FAQ quotations.
  • Add a Reference pricing example section from plan-free, plan-pro and plan-contact. Convert integer cents to visible USD using Intl.NumberFormat. Annual/monthly radios update amount and cadence together; contact stays Contact. Use the existing pricing handler or one documented adapter, and label all values as synthetic snapshot examples. Link official pricing for current terms; do not derive any access permission from this selector.
  • Add a reading-width paragraph with an original guide snippet and a captured-source date. Use source capture evidence to explain any deliberate page differences.
  • Verify navigation, checklist, native disclosures, deep links, missing-media layout and read order at the four named widths.

Acceptance

  • NP-1 Page has exactly one h1 and main, coherent heading order, working skip link, labelled checklist and unique IDs.
  • NP-2 Every internal link resolves under both root and a non-root base path; native Back returns to the originating page.
  • NP-3 Three feature cards use the shared geometry and1/2/3 column transforms at390/768/1440px;1920px remains max1204px.
  • NP-4 Checklist state changes through keyboard and pointer and resets after reload; no cookies, durable storage or non-GET network.
  • NP-5 FAQ works without custom JS; disabling imagery retains meaningful headings, caption and source links.
  • NP-6 At200% text zoom and320px reflow there is no clipped essential copy or horizontal page scroll; actual screen-reader coverage is reported as tested or not-run.
  • NP-7 Billing selection changes Pro amount/cadence atomically through mouse and native radio keyboard controls; free/contact remain correct; no entitlement, purchase request or charge occurs.
Exact brief, files and evidence requirements
new-page-or-feature brief · JSON
{
  "id": "new-page-or-feature",
  "title": "Assemble a public Notes feature page from the existing shell and components",
  "executionBoundary": "frozen-local-reference",
  "status": "not-run",
  "coaching": "Give the implementer the frozen package, this brief and normal repository access. Record every clarification or intervention. The builder must not coach decisions during execution.",
  "workingCopy": "Work in a copied evaluation checkout of the frozen package. Keep the frozen input unchanged. New output artifacts are committed or copied into evidence/junior/<task-id>/ before final package freeze.",
  "sharedSources": [
    "IMPLEMENTATION.md",
    "reference-data/implementation-contract.json",
    "reference-data/independent-component-inventory.json",
    "reference-data/catalog.mjs",
    "site/assets/reference.css",
    "site/assets/reference.js",
    "site/data/fixtures.json"
  ],
  "commands": [
    "node designs/raycast/evidence/verification/data-contract-tests.mjs",
    "python3 -m http.server 4178 --bind 127.0.0.1 --directory designs/raycast/site",
    ".agents/skills/design-research/scripts/run-playwright.sh designs/raycast/evidence/junior/new-page-or-feature/verify.cjs http://127.0.0.1:4178/"
  ],
  "requiredEvidence": {
    "find": "A source map naming the exact ledger IDs, tokens, assets, schema definitions, classes and runtime helpers used.",
    "choose": "A short explanation for each reused component and the task-specific addition.",
    "specify": "Record the planned states, data, keyboard flow, breakpoints, safe URL rules and copy before coding.",
    "implement": "Working HTML/JS/CSS changes against the frozen local reference, with a diff and no real account or message mutation.",
    "verify": "Actual command output, browser/version, viewport screenshots, keyboard/focus results, network interception and test assertions.",
    "explain": "Sources, deviations, time spent, failed checks, assistance received and unanswered consequential questions. A written plan alone does not pass."
  },
  "ratings": "Only the independent evaluator rates each of Find, Choose, Specify, Implement, Verify and Explain as Independent, Assisted or Blocked. A task passes only when all six are Independent and code execution was verified. No stage has been passed by writing this brief.",
  "goal": "A public visitor can understand the Notes feature, inspect a local demonstration, read FAQs and follow an explicit source link without creating or syncing a note.",
  "independentSelection": {
    "inventory": "reference-data/independent-component-inventory.json",
    "ids": [
      "C-demo-notes",
      "C-feature-card",
      "C-section-heading",
      "C-layout-container",
      "C-pricing-card"
    ],
    "publicUrls": [
      "https://www.raycast.com/core-features/notes",
      "https://www.raycast.com/pricing"
    ],
    "evidence": [
      "evidence/inventory/secondary/notes-1440.json",
      "evidence/inventory/secondary/notes-390.json",
      "evidence/inventory/final-discovery/notes-checkbox-selected-1440.json",
      "evidence/capture/pages/pricing-1440.json"
    ],
    "why": "The independent inventory contains Notes feature storytelling and a checklist demonstration. The task assembles a new local page rather than copying the reference overview."
  },
  "files": {
    "create": [
      "site/junior-notes.html",
      "site/assets/junior-notes.js",
      "evidence/junior/new-page-or-feature/verify.cjs",
      "evidence/junior/new-page-or-feature/report.json"
    ],
    "read": [
      "site/surfaces.html",
      "site/components.html#hero",
      "site/components.html#feature-card",
      "site/components.html#faq",
      "site/foundations.html",
      "site/data/fixtures.json"
    ],
    "changeRule": "Reuse shared styles and the original feature capture. Add a page-local module only for the checklist demonstration; no global token override."
  },
  "components": [
    "navigation",
    "hero",
    "section-heading",
    "feature-card",
    "checkbox",
    "faq",
    "button",
    "footer",
    "media-frame",
    "pricing-card",
    "billing"
  ],
  "tokens": [
    "--container-width",
    "--container-xs-width",
    "--spacing-8",
    "--spacing-4",
    "--spacing-3",
    "--rounding-xl",
    "--text",
    "--muted"
  ],
  "assets": [
    "assets/icons/new-document.svg",
    "assets/icons/checkmark.svg"
  ],
  "fixtures": [
    "types.Feature: feature-notes",
    "types.Article: article-first-command and article-missing-byline for original supporting prose",
    "types.Plan: plan-free, plan-pro and plan-contact; synthetic dated pricing display only"
  ],
  "implementationSequence": [
    "Create sibling junior-notes.html with one h1, labelled main, skip link, existing floating nav, global-search dialog and footer. Use relative paths so /private/raycast/junior-notes.html also works.",
    "Render the feature-notes record in a .hero with a short heading and one primary link to the official Notes source. Put the record availabilityLabel and reconstruction notice next to the link; do not present entitlementLabel=unverified as an entitlement.",
    "Follow with three .feature-card modules using original demonstration headings Capture a thought, Return to the next task, Keep the context. Use CSS/DOM illustration for the missing-media case and explicitly label it Local illustration.",
    "Provide a small checklist demonstration inside .surface-preview. It contains three native labelled checkboxes with synthetic tasks Review draft, Choose next step, Close the loop. Check/uncheck works only in document memory and has no save/sync claim.",
    "Add two native details.faq disclosures: Does this demonstration save notes? answers No. It resets on reload.; Where can I check availability? links to the official public source. These are reference questions, not fabricated official FAQ quotations.",
    "Add a Reference pricing example section from plan-free, plan-pro and plan-contact. Convert integer cents to visible USD using Intl.NumberFormat. Annual/monthly radios update amount and cadence together; contact stays Contact. Use the existing pricing handler or one documented adapter, and label all values as synthetic snapshot examples. Link official pricing for current terms; do not derive any access permission from this selector.",
    "Add a reading-width paragraph with an original guide snippet and a captured-source date. Use source capture evidence to explain any deliberate page differences.",
    "Verify navigation, checklist, native disclosures, deep links, missing-media layout and read order at the four named widths."
  ],
  "exactRules": {
    "structure": "Hero -> three feature cards -> checklist demonstration -> FAQ -> reference pricing example -> source/capture note -> footer. h1 then h2 sections then h3 card headings; no skipped levels.",
    "geometry": "Use container max1204px and width calc(100% - 48px),16px page gutters below720px. Feature cards32px padding desktop and24px below720px,20px radius; three/two/one-column shared grid. Prose max746px.",
    "content": "Use local original wording for demonstrations; quote source text only when necessary and clearly attributed. Missing media has a stable reserved area plus caption/source link.",
    "behavior": "Checklist toggles on Space or label click; no storage. FAQ native summary opens/closes on Enter/Space. Reopening or reloading uses authored HTML defaults.",
    "boundary": "The only product action is explicit external source navigation. There is no note editor, live AI call, export, deletion, account creation, payment or sync.",
    "pricing": "Annual selected initially; pro annual displays $8 per person/month and Billed annually · reference snapshot; monthly displays $10 and Billed monthly · reference snapshot. Free stays $0; contact stays Contact. No CTA changes subscription or ownership."
  },
  "acceptance": [
    {
      "id": "NP-1",
      "assertion": "Page has exactly one h1 and main, coherent heading order, working skip link, labelled checklist and unique IDs."
    },
    {
      "id": "NP-2",
      "assertion": "Every internal link resolves under both root and a non-root base path; native Back returns to the originating page."
    },
    {
      "id": "NP-3",
      "assertion": "Three feature cards use the shared geometry and1/2/3 column transforms at390/768/1440px;1920px remains max1204px."
    },
    {
      "id": "NP-4",
      "assertion": "Checklist state changes through keyboard and pointer and resets after reload; no cookies, durable storage or non-GET network."
    },
    {
      "id": "NP-5",
      "assertion": "FAQ works without custom JS; disabling imagery retains meaningful headings, caption and source links."
    },
    {
      "id": "NP-6",
      "assertion": "At200% text zoom and320px reflow there is no clipped essential copy or horizontal page scroll; actual screen-reader coverage is reported as tested or not-run."
    },
    {
      "id": "NP-7",
      "assertion": "Billing selection changes Pro amount/cadence atomically through mouse and native radio keyboard controls; free/contact remain correct; no entitlement, purchase request or charge occurs."
    }
  ],
  "expectedOutput": "A working feature page with three cards, local checklist and FAQ; browser screenshots and a trace comparing its reused component geometry with the frozen reference.",
  "evidenceOutput": "evidence/junior/new-page-or-feature/",
  "result": {
    "status": "not-run",
    "implementationArtifacts": [],
    "commandsAndResults": [],
    "verifierId": null,
    "startedAt": null,
    "completedAt": null
  }
}

Stages: Find → Choose → Specify → Implement → Verify → Explain. Ratings are assigned by the independent executor from observed work, not prefilled by the builder.

CHALLENGE 03 / frozen-local-reference

Create a reusable notice for dated or partly available collection snapshots

A reader can see when a collection snapshot was captured, whether it is stale or partial, what remains available and how to retry a local example.

Executed independently against the frozen local reference. 6 of 6 stages Independent; pass.
Stage evidence and implementation choices
new-reusable-component-or-pattern execution stages
StageResultObserved work
findIndependentLocated the exact local catalog, CSS, runtime, fixture and schema sources without author help. Missing raw source paths were recovered through the frozen published guide; no consequential local rule was missing.
chooseIndependentA single ES module returns a .feedback.snapshot-notice region, scoped geometry only, shared secondary button and badge, decorative clock/warning glyph.
specifyIndependentRecorded anatomy, content, states, data, keyboard, responsive and safe-link rules before implementation at the timestamp in the specification. Used exact brief rules; no unobserved product behavior was invented.
implementIndependentCreated working pages/modules in the copied frozen local site. Shared original site files remain byte-identical. New files and their complete diffs are retained.
verifyIndependentExecuted 6/6 exact brief browser assertions in Chromium 152.0.7977.42, plus asset/base-path checks and the data suite. Retained failed attempts and self-authored repairs.
explainIndependentRecorded source choices, original additions, boundary/deviations, elapsed time, every retained failure and repair, assistance log, and zero unanswered consequential local decisions.

What to build

  • Write the API and state table before implementation. It owns status presentation; the consumer owns collection rows, request IDs and access decisions.
  • Implement one region containing a text status, an optional time[datetime], retained count, View source link and optional Retry button. Use createElement/textContent and validate href before assignment.
  • Use .feedback as the visual base with a namespaced wrapper. Gap16px between text/action groups; within text8px; padding16px; border1px and radius8px. On widths below720px, stack in source order and let the action fit content.
  • Use a separate polite status text node for changes; keep interactive link/button outside that live node. Initial rendering is ordinary content; later status updates announce once and do not move focus.
  • Render the same implementation above an extension collection and above an article/release list. A fresh notice stays informational. For partial/stale/offline/error, a provided Retry becomes available; permission only offers the official sign-in link and no retry.
  • Consumer Retry sets aria-busy on its region and disables the button during a450ms local simulation. A second activation while pending is ignored. Completion reenables and retains keyboard focus if still connected.
  • Verify all states, absent capture date, zero and one plural forms, long labels, RTL and two independent instances. Add a proposed component-ledger entry with provenance original addition for evaluator review.

Acceptance

  • RP-1 Two instances use one imported implementation and do not change each other when Retry is activated.
  • RP-2 Every state displays exact problem/preserved-data/recovery copy;1 result uses singular;0 uses plural.
  • RP-3 Repeated Retry during pending causes one callback; after completion focus remains on Retry; error has no timeout dismissal.
  • RP-4 Unknown/malformed state, negative count and unsafe href are rejected without inserting a link or exposing raw HTML.
  • RP-5 Permission notice exposes zero rows/count and official sign-in navigation only. No ability is granted by changing a CSS class or label.
  • RP-6 At390px,200% text andRTL, date/link/button remain legible and focusable; status update is recorded in the accessibility tree without focus theft.
Exact brief, files and evidence requirements
new-reusable-component-or-pattern brief · JSON
{
  "id": "new-reusable-component-or-pattern",
  "title": "Create a reusable notice for dated or partly available collection snapshots",
  "executionBoundary": "frozen-local-reference",
  "status": "not-run",
  "coaching": "Give the implementer the frozen package, this brief and normal repository access. Record every clarification or intervention. The builder must not coach decisions during execution.",
  "workingCopy": "Work in a copied evaluation checkout of the frozen package. Keep the frozen input unchanged. New output artifacts are committed or copied into evidence/junior/<task-id>/ before final package freeze.",
  "sharedSources": [
    "IMPLEMENTATION.md",
    "reference-data/implementation-contract.json",
    "reference-data/independent-component-inventory.json",
    "reference-data/catalog.mjs",
    "site/assets/reference.css",
    "site/assets/reference.js",
    "site/data/fixtures.json"
  ],
  "commands": [
    "node designs/raycast/evidence/verification/data-contract-tests.mjs",
    "python3 -m http.server 4178 --bind 127.0.0.1 --directory designs/raycast/site",
    ".agents/skills/design-research/scripts/run-playwright.sh designs/raycast/evidence/junior/new-reusable-component-or-pattern/verify.cjs http://127.0.0.1:4178/"
  ],
  "requiredEvidence": {
    "find": "A source map naming the exact ledger IDs, tokens, assets, schema definitions, classes and runtime helpers used.",
    "choose": "A short explanation for each reused component and the task-specific addition.",
    "specify": "Record the planned states, data, keyboard flow, breakpoints, safe URL rules and copy before coding.",
    "implement": "Working HTML/JS/CSS changes against the frozen local reference, with a diff and no real account or message mutation.",
    "verify": "Actual command output, browser/version, viewport screenshots, keyboard/focus results, network interception and test assertions.",
    "explain": "Sources, deviations, time spent, failed checks, assistance received and unanswered consequential questions. A written plan alone does not pass."
  },
  "ratings": "Only the independent evaluator rates each of Find, Choose, Specify, Implement, Verify and Explain as Independent, Assisted or Blocked. A task passes only when all six are Independent and code execution was verified. No stage has been passed by writing this brief.",
  "goal": "A reader can see when a collection snapshot was captured, whether it is stale or partial, what remains available and how to retry a local example.",
  "independentSelection": {
    "inventory": "reference-data/independent-component-inventory.json",
    "ids": [
      "C-store-search",
      "C-extension-card",
      "C-form-error"
    ],
    "publicUrls": [
      "https://www.raycast.com/store",
      "https://www.raycast.com/changelog"
    ],
    "evidence": [
      "evidence/capture/pages/store-1440.json",
      "evidence/capture/pages/store-no-results-1440.json",
      "evidence/inventory/secondary/changelog-1440.json"
    ],
    "why": "Observed public collections and dated releases need shared snapshot context in the reference. This combined timestamp, retained-count and retry pattern is an original local addition; unseen production stale-state behavior is not claimed."
  },
  "files": {
    "create": [
      "site/junior-snapshot-notice.html",
      "site/assets/snapshot-notice.js",
      "site/assets/snapshot-notice.css",
      "evidence/junior/new-reusable-component-or-pattern/verify.cjs",
      "evidence/junior/new-reusable-component-or-pattern/report.json"
    ],
    "read": [
      "site/components.html#feedback-message",
      "site/components.html#empty-state",
      "site/patterns.html",
      "site/data/fixtures.json"
    ],
    "changeRule": "Publish one reusable ES module and use it twice on the page. Scope new selectors under .snapshot-notice. Keep shared feedback/button styles as dependencies."
  },
  "components": [
    "feedback-message",
    "empty-state",
    "secondary-button",
    "badge"
  ],
  "tokens": [
    "--muted",
    "--text",
    "--spacing-2",
    "--spacing-1",
    "--rounding-normal",
    "--border-strong",
    "--focus"
  ],
  "assets": [
    "assets/icons/clock.svg",
    "assets/icons/warning.svg"
  ],
  "fixtures": [
    "collectionScenarios: ready, partial-source, stale-source, offline-with-snapshot, error-with-snapshot, permission-boundary",
    "types.Asset: asset-warning-icon"
  ],
  "api": {
    "signature": "createSnapshotNotice({ state, capturedAt, visibleCount, sourceHref, onRetry }): HTMLElement",
    "inputs": {
      "state": "fresh|partial|stale|offline|error|permission",
      "capturedAt": "ISO UTC or null; display date only when present",
      "visibleCount": "non-negative integer of currently visible accepted rows",
      "sourceHref": "validated local or recorded official HTTPS source URL",
      "onRetry": "function supplied by consumer or null; no internal fetch"
    },
    "events": "Retry invokes onRetry once per activation. Consumer owns pending state; returned root has update(props) only if you document it, otherwise rerender while preserving focus.",
    "defaults": "state=fresh; capturedAt=null; visibleCount=0; onRetry=null; every other value must be provided or explicitly rejected.",
    "forbidden": "No internal network request, durable cache, HTML content slot, inferred entitlement, app credentials, or user identifiers."
  },
  "implementationSequence": [
    "Write the API and state table before implementation. It owns status presentation; the consumer owns collection rows, request IDs and access decisions.",
    "Implement one region containing a text status, an optional time[datetime], retained count, View source link and optional Retry button. Use createElement/textContent and validate href before assignment.",
    "Use .feedback as the visual base with a namespaced wrapper. Gap16px between text/action groups; within text8px; padding16px; border1px and radius8px. On widths below720px, stack in source order and let the action fit content.",
    "Use a separate polite status text node for changes; keep interactive link/button outside that live node. Initial rendering is ordinary content; later status updates announce once and do not move focus.",
    "Render the same implementation above an extension collection and above an article/release list. A fresh notice stays informational. For partial/stale/offline/error, a provided Retry becomes available; permission only offers the official sign-in link and no retry.",
    "Consumer Retry sets aria-busy on its region and disables the button during a450ms local simulation. A second activation while pending is ignored. Completion reenables and retains keyboard focus if still connected.",
    "Verify all states, absent capture date, zero and one plural forms, long labels, RTL and two independent instances. Add a proposed component-ledger entry with provenance original addition for evaluator review."
  ],
  "exactRules": {
    "copy": {
      "fresh": "Reference snapshot · {count} results",
      "partial": "Some items are unavailable. {count} results remain visible.",
      "stale": "Showing a saved snapshot. {count} results remain visible.",
      "offline": "You’re offline. {count} saved results remain visible.",
      "error": "The example could not refresh. {count} saved results remain visible.",
      "permission": "Sign in on the official website to manage a private collection."
    },
    "time": "Format UTC with en-GB day numeric, month short, year numeric. Use a semantic time datetime value. Missing date is Date unavailable, never today.",
    "status": "Status icon decorative when equivalent visible status exists; errors are not represented solely by color. Use role=status aria-live=polite for updates; no time-based disappearance.",
    "retry": "Disabled while pending; one callback; label Retry or Checking…; permission state suppresses retry and clears count. No automatic retry on connectivity events.",
    "contribution": "New pattern documentation must include API, parts, variants, owner, original-addition label, screenshots, keyboard checks and a migration note. A new variant must retain existing consumers."
  },
  "acceptance": [
    {
      "id": "RP-1",
      "assertion": "Two instances use one imported implementation and do not change each other when Retry is activated."
    },
    {
      "id": "RP-2",
      "assertion": "Every state displays exact problem/preserved-data/recovery copy;1 result uses singular;0 uses plural."
    },
    {
      "id": "RP-3",
      "assertion": "Repeated Retry during pending causes one callback; after completion focus remains on Retry; error has no timeout dismissal."
    },
    {
      "id": "RP-4",
      "assertion": "Unknown/malformed state, negative count and unsafe href are rejected without inserting a link or exposing raw HTML."
    },
    {
      "id": "RP-5",
      "assertion": "Permission notice exposes zero rows/count and official sign-in navigation only. No ability is granted by changing a CSS class or label."
    },
    {
      "id": "RP-6",
      "assertion": "At390px,200% text andRTL, date/link/button remain legible and focusable; status update is recorded in the accessibility tree without focus theft."
    }
  ],
  "expectedOutput": "One documented reusable module, two consumers, a complete rendered state table and actual tests of the API and keyboard behavior.",
  "evidenceOutput": "evidence/junior/new-reusable-component-or-pattern/",
  "result": {
    "status": "not-run",
    "implementationArtifacts": [],
    "commandsAndResults": [],
    "verifierId": null,
    "startedAt": null,
    "completedAt": null
  }
}

Stages: Find → Choose → Specify → Implement → Verify → Explain. Ratings are assigned by the independent executor from observed work, not prefilled by the builder.

CHALLENGE 04 / frozen-local-reference

Build a resilient narrow-screen Store view with stale, offline and permission states

A visitor can keep a search understandable while fixture responses arrive late, contain duplicate revisions, go offline or become inaccessible.

Executed independently against the frozen local reference. 6 of 6 stages Independent; pass.
Stage evidence and implementation choices
difficult-cross-cutting-case execution stages
StageResultObserved work
findIndependentLocated the exact local catalog, CSS, runtime, fixture and schema sources without author help. Missing raw source paths were recovered through the frozen published guide; no consequential local rule was missing.
chooseIndependentShared filter bar/search/select, extension-card, feedback, skeleton/empty-state and buttons. New pure collection reducer implements the documented model; a small page-local adapter owns request IDs and timers.
specifyIndependentRecorded anatomy, content, states, data, keyboard, responsive and safe-link rules before implementation at the timestamp in the specification. Used exact brief rules; no unobserved product behavior was invented.
implementIndependentCreated working pages/modules in the copied frozen local site. Shared original site files remain byte-identical. New files and their complete diffs are retained.
verifyIndependentExecuted 8/8 exact brief browser assertions in Chromium 152.0.7977.42, plus asset/base-path checks and the data suite. Retained failed attempts and self-authored repairs.
explainIndependentRecorded source choices, original additions, boundary/deviations, elapsed time, every retained failure and repair, assistance log, and zero unanswered consequential local decisions.

What to build

  • Create a Store-style page with one persistent search toolbar, results region, one status region and a visible Scenario select labelled Local fixture scenario. Default scenario is ready. Current q/category follow the documented catalog URL contract.
  • Implement a pure reducer from collectionReducer and the reference-model tests. Accept at most500 rows; validate before rendering; deduplicate by stable ID/revision, preserve first ID position, quarantine equal-revision contradictions, discard invalid rows and keep valid siblings.
  • Use fixtureClock as the injected clock. ready/partial with expiresAt <= now becomes stale; preserve rows and show a dated notice. No localStorage, service worker or browser-cache promises.
  • Simulate two requests: request3 completes after400ms, request4 after100ms. Mark request4 as latest issued; only4 may commit. Simulate a future unissued5 and confirm it is ignored. Cancel increments the issued counter. No timer response may commit after permission is revoked.
  • Offline/error keep the last valid rows and q/category; Retry is explicit, disabled pending and invokes one new local request. Permission state clears rows immediately and presents the official sign-in boundary. Do not retain private rows beneath hidden CSS.
  • Render the Arabic record at390x844 with lang=ar and dir=auto on authored content. Keep machine IDs/URLs inside bdi dir=ltr. Put results count and feedback outside the input so updates never reset typed text or selection.
  • Add empty source and no matching results as separate states: empty source offers Browse source; no matches offers Clear query retaining category. Render partial with remaining rows plus a problem count that contains no raw invalid content.
  • Verify source-code/data assertions, a keyboard-only flow and all named states at390/768/1440/1920px. Record request and DOM traces demonstrating the winner and preserved query.

Acceptance

  • DC-1 Delay trace shows request4 output visible and request3/future5 cannot overwrite it.
  • DC-2 Duplicate and malformed scenarios match fixture expected IDs/order/state; no invalid HTML/link is rendered.
  • DC-3 Stale threshold equals expiry, offline/error retain accepted rows and exact query/category; retry produces one attempt.
  • DC-4 Permission revocation clears rows even while an older request is pending; restoring public fixture mode starts a new request rather than revealing hidden old content.
  • DC-5 Arabic, long title, null metadata and literal markup render without horizontal overflow at390px; native controls keep accessible labels at200% zoom.
  • DC-6 No-results and empty-source render distinct copy/actions. Clear-query removes q, preserves category and focuses input.
  • DC-7 All local flows produce0 non-GET requests,0 third-party automatic requests and0 persistent storage writes; response diagnostics exclude titles, queries, emails or raw payloads.
  • DC-8 Keyboard, reduced-motion, forced-color and focus-return checks execute in the recorded Chromium build; unexecuted AT/browser combinations stay not-run.
Exact brief, files and evidence requirements
difficult-cross-cutting-case brief · JSON
{
  "id": "difficult-cross-cutting-case",
  "title": "Build a resilient narrow-screen Store view with stale, offline and permission states",
  "executionBoundary": "frozen-local-reference",
  "status": "not-run",
  "coaching": "Give the implementer the frozen package, this brief and normal repository access. Record every clarification or intervention. The builder must not coach decisions during execution.",
  "workingCopy": "Work in a copied evaluation checkout of the frozen package. Keep the frozen input unchanged. New output artifacts are committed or copied into evidence/junior/<task-id>/ before final package freeze.",
  "sharedSources": [
    "IMPLEMENTATION.md",
    "reference-data/implementation-contract.json",
    "reference-data/independent-component-inventory.json",
    "reference-data/catalog.mjs",
    "site/assets/reference.css",
    "site/assets/reference.js",
    "site/data/fixtures.json"
  ],
  "commands": [
    "node designs/raycast/evidence/verification/data-contract-tests.mjs",
    "python3 -m http.server 4178 --bind 127.0.0.1 --directory designs/raycast/site",
    ".agents/skills/design-research/scripts/run-playwright.sh designs/raycast/evidence/junior/difficult-cross-cutting-case/verify.cjs http://127.0.0.1:4178/"
  ],
  "requiredEvidence": {
    "find": "A source map naming the exact ledger IDs, tokens, assets, schema definitions, classes and runtime helpers used.",
    "choose": "A short explanation for each reused component and the task-specific addition.",
    "specify": "Record the planned states, data, keyboard flow, breakpoints, safe URL rules and copy before coding.",
    "implement": "Working HTML/JS/CSS changes against the frozen local reference, with a diff and no real account or message mutation.",
    "verify": "Actual command output, browser/version, viewport screenshots, keyboard/focus results, network interception and test assertions.",
    "explain": "Sources, deviations, time spent, failed checks, assistance received and unanswered consequential questions. A written plan alone does not pass."
  },
  "ratings": "Only the independent evaluator rates each of Find, Choose, Specify, Implement, Verify and Explain as Independent, Assisted or Blocked. A task passes only when all six are Independent and code execution was verified. No stage has been passed by writing this brief.",
  "goal": "A visitor can keep a search understandable while fixture responses arrive late, contain duplicate revisions, go offline or become inaccessible.",
  "independentSelection": {
    "inventory": "reference-data/independent-component-inventory.json",
    "ids": [
      "C-store-search",
      "C-extension-card",
      "C-search-overlay",
      "C-store-detail"
    ],
    "publicUrls": [
      "https://www.raycast.com/store",
      "https://www.raycast.com/users/sign_in"
    ],
    "evidence": [
      "evidence/capture/pages/store-search-1440.json",
      "evidence/capture/pages/store-no-results-1440.json",
      "evidence/capture/pages/store-390.json",
      "evidence/inventory/boundary/settings-boundary-1440.json"
    ],
    "why": "Search and extension cards are critical in the independent public inventory. The difficult conditions are explicit reconstructed local resilience cases, not claims about private Store APIs."
  },
  "axes": [
    "loading",
    "empty",
    "error",
    "offline",
    "permissions",
    "concurrency",
    "responsive transformation",
    "internationalization",
    "accessibility",
    "privacy"
  ],
  "files": {
    "create": [
      "site/junior-resilient-store.html",
      "site/assets/junior-resilient-store.js",
      "evidence/junior/difficult-cross-cutting-case/verify.cjs",
      "evidence/junior/difficult-cross-cutting-case/report.json"
    ],
    "read": [
      "site/components.html#filter-bar",
      "site/components.html#extension-card",
      "site/components.html#empty-state",
      "site/patterns.html",
      "reference-data/implementation-contract.json",
      "site/data/fixtures.json",
      "evidence/verification/data-contract-tests.mjs"
    ],
    "changeRule": "Consume fixtures by same-site GET. Run a page-local in-memory adapter with injected time and request IDs; no private Raycast endpoint or server is required."
  },
  "components": [
    "filter-bar",
    "search-field",
    "select",
    "extension-card",
    "empty-state",
    "feedback-message",
    "skeleton",
    "secondary-button"
  ],
  "tokens": [
    "--container-width",
    "--spacing-3",
    "--spacing-2",
    "--rounding-md",
    "--muted",
    "--red-dark",
    "--focus"
  ],
  "assets": [
    "assets/icons/store.svg",
    "assets/icons/wifi-disabled.svg",
    "assets/icons/lock.svg"
  ],
  "fixtures": [
    "collectionScenarios: all9 named states including rtl-narrow-offline",
    "duplicateCases: identical, newer-wins, stale-does-not-win, same-revision-conflict",
    "requestRaces: issued4/arrived3,4,5",
    "invalidRecords: extension-negative-count, extension-impossible-date, extension-unsafe-link",
    "filterCases: accent, category, and, no-results, rtl, long-query"
  ],
  "implementationSequence": [
    "Create a Store-style page with one persistent search toolbar, results region, one status region and a visible Scenario select labelled Local fixture scenario. Default scenario is ready. Current q/category follow the documented catalog URL contract.",
    "Implement a pure reducer from collectionReducer and the reference-model tests. Accept at most500 rows; validate before rendering; deduplicate by stable ID/revision, preserve first ID position, quarantine equal-revision contradictions, discard invalid rows and keep valid siblings.",
    "Use fixtureClock as the injected clock. ready/partial with expiresAt <= now becomes stale; preserve rows and show a dated notice. No localStorage, service worker or browser-cache promises.",
    "Simulate two requests: request3 completes after400ms, request4 after100ms. Mark request4 as latest issued; only4 may commit. Simulate a future unissued5 and confirm it is ignored. Cancel increments the issued counter. No timer response may commit after permission is revoked.",
    "Offline/error keep the last valid rows and q/category; Retry is explicit, disabled pending and invokes one new local request. Permission state clears rows immediately and presents the official sign-in boundary. Do not retain private rows beneath hidden CSS.",
    "Render the Arabic record at390x844 with lang=ar and dir=auto on authored content. Keep machine IDs/URLs inside bdi dir=ltr. Put results count and feedback outside the input so updates never reset typed text or selection.",
    "Add empty source and no matching results as separate states: empty source offers Browse source; no matches offers Clear query retaining category. Render partial with remaining rows plus a problem count that contains no raw invalid content.",
    "Verify source-code/data assertions, a keyboard-only flow and all named states at390/768/1440/1920px. Record request and DOM traces demonstrating the winner and preserved query."
  ],
  "exactRules": {
    "race": "Latest issued ID, not latest received timestamp, owns the commit. Any requestId unequal to latest issued is ignored. Permission revocation is an independent guard that wins over all responses.",
    "duplicates": "Keep highest revision; identical repeated revision gives one row. Contradictory equal revision removes that ID until a strictly newer valid revision arrives. A wholly invalid batch is error; a valid empty response is empty.",
    "keyboard": "Input retains focus after filter/render. Tab reaches category, clear/retry and result links in source order. No selection follows focus alone. No keyboard trap or automatic external navigation.",
    "url": "q and category are the only recognized query state; trim query; normalize only for matching; preserve original query spelling in URL and field. Replace rather than push history. Keep unrelated query parameters and fragment.",
    "network": "Only same-site static assets/fixtures. Every simulated request is an in-memory timer. No external GET occurs until an explicit source link is followed; no non-GET ever occurs.",
    "reporting": "Record task duration, assistance, unanswered decisions and actual tested browsers. An automated ARIA/keyboard check is not a real screen-reader user study."
  },
  "acceptance": [
    {
      "id": "DC-1",
      "assertion": "Delay trace shows request4 output visible and request3/future5 cannot overwrite it."
    },
    {
      "id": "DC-2",
      "assertion": "Duplicate and malformed scenarios match fixture expected IDs/order/state; no invalid HTML/link is rendered."
    },
    {
      "id": "DC-3",
      "assertion": "Stale threshold equals expiry, offline/error retain accepted rows and exact query/category; retry produces one attempt."
    },
    {
      "id": "DC-4",
      "assertion": "Permission revocation clears rows even while an older request is pending; restoring public fixture mode starts a new request rather than revealing hidden old content."
    },
    {
      "id": "DC-5",
      "assertion": "Arabic, long title, null metadata and literal markup render without horizontal overflow at390px; native controls keep accessible labels at200% zoom."
    },
    {
      "id": "DC-6",
      "assertion": "No-results and empty-source render distinct copy/actions. Clear-query removes q, preserves category and focuses input."
    },
    {
      "id": "DC-7",
      "assertion": "All local flows produce0 non-GET requests,0 third-party automatic requests and0 persistent storage writes; response diagnostics exclude titles, queries, emails or raw payloads."
    },
    {
      "id": "DC-8",
      "assertion": "Keyboard, reduced-motion, forced-color and focus-return checks execute in the recorded Chromium build; unexecuted AT/browser combinations stay not-run."
    }
  ],
  "expectedOutput": "One working fixture-driven Store page with a deterministic request adapter, state/race traces, narrow RTL screenshots, explicit permission clearance evidence and all six independently rated stages.",
  "evidenceOutput": "evidence/junior/difficult-cross-cutting-case/",
  "result": {
    "status": "not-run",
    "implementationArtifacts": [],
    "commandsAndResults": [],
    "verifierId": null,
    "startedAt": null,
    "completedAt": null
  }
}

Stages: Find → Choose → Specify → Implement → Verify → Explain. Ratings are assigned by the independent executor from observed work, not prefilled by the builder.

Adopt without guessing

DecisionReference ruleVerification
Reuse versus addChoose an existing primitive first; compose a new pattern only when roles or state ownership differ.The junior can explain why an existing contract was insufficient.
Token changeChange the shared token only if every affected role should change.Compare navigation, cards, controls and at least one complete surface.
New componentSpecify anatomy, all state axes, content limits, keyboard and responsive behavior before copying a style.Include a realistic flow, not only an isolated rectangle.
Data changeUse strict schema and synthetic edge records; preserve stable identities.Malformed fixtures fail for the intended reason.
Evidence updateKeep prior capture, add date/hash and describe changed behavior.Recompute denominators, manifests, comparisons and independent assessment.
Private integrationName the exact unverified backend/native contract and required access.Do not silently promote a local behavior to a product fact.

Proof and reproducibility

The local research package retains the evidence, evaluated-file manifests, independent judge outputs and actual publication receipts. A live deployment crawl is available only after publication succeeds. Published summaries omit raw proprietary source while preserving claim identity and verification links.

About this specimen

This is a local reconstruction of a public Raycast pattern. It demonstrates the interface contract; real accounts, installs and payments remain on the official product.

Icon contract