{
  "schemaVersion": 1,
  "authority": "Authored local contracts and synthetic localization examples; not source copy or human translation validation.",
  "vocabulary": [
    {
      "id": "O-extension",
      "singular": "Extension",
      "plural": "Extensions",
      "action": "Open extension",
      "statuses": "Available, unavailable",
      "avoid": "Plugin, applet",
      "localization": "Keep the publisher’s exact extension name; translate surrounding labels."
    },
    {
      "id": "O-publisher",
      "singular": "Publisher",
      "plural": "Publishers",
      "action": "View publisher",
      "statuses": "Public profile, unavailable",
      "avoid": "Owner, administrator",
      "localization": "A public author identity does not establish private ownership or permission."
    },
    {
      "id": "O-plan",
      "singular": "Subscription plan",
      "plural": "Subscription plans",
      "action": "Compare plans",
      "statuses": "Included, available with plan",
      "avoid": "License, account level",
      "localization": "Keep product tier names; always show currency and billing cadence together."
    },
    {
      "id": "O-model",
      "singular": "AI model",
      "plural": "AI models",
      "action": "View model details",
      "statuses": "Available, plan required",
      "avoid": "Bot, engine",
      "localization": "Preserve provider/model identifiers and versions; describe ratings as ordinal labels."
    },
    {
      "id": "O-task-demo",
      "singular": "Scripted AI task",
      "plural": "Scripted AI tasks",
      "action": "Run local example",
      "statuses": "Ready, running, cancelled, complete",
      "avoid": "Live agent, real result",
      "localization": "Name scripts as examples; completion describes the local sequence only."
    },
    {
      "id": "O-release",
      "singular": "Release",
      "plural": "Releases",
      "action": "Read release notes",
      "statuses": "Published, unavailable",
      "avoid": "Update installed",
      "localization": "Preserve version/platform identifiers; localize the date and keep an ISO datetime."
    },
    {
      "id": "O-article",
      "singular": "Article or tutorial",
      "plural": "Articles and tutorials",
      "action": "Read article",
      "statuses": "Published, source unavailable",
      "avoid": "Post when referring to a tutorial",
      "localization": "Preserve attributed author names; isolate user-authored text from interface direction."
    },
    {
      "id": "O-story",
      "singular": "Community or customer story",
      "plural": "Community and customer stories",
      "action": "Read story",
      "statuses": "Published, source unavailable",
      "avoid": "Endorsement, case study without evidence",
      "localization": "Quotes require attribution; synthetic stories must say they are examples."
    },
    {
      "id": "O-template",
      "singular": "Extension template",
      "plural": "Extension templates",
      "action": "View template",
      "statuses": "Prerequisites met, prerequisites missing",
      "avoid": "Installed extension",
      "localization": "Keep repository paths literal and left-to-right; translate purpose and instructions."
    },
    {
      "id": "O-asset",
      "singular": "Brand asset or wallpaper",
      "plural": "Brand assets and wallpapers",
      "action": "View asset",
      "statuses": "Available, unavailable",
      "avoid": "Free to reuse",
      "localization": "Show format, pixel dimensions and rights source separately from download availability."
    },
    {
      "id": "O-feedback",
      "singular": "Feedback draft",
      "plural": "Feedback drafts",
      "action": "Validate example",
      "statuses": "Draft, invalid, offline, locally validated",
      "avoid": "Sent, received, ticket created",
      "localization": "Preserve the draft and attachment names through every local error."
    },
    {
      "id": "O-account-entry",
      "singular": "Account entry attempt",
      "plural": "Account entry attempts",
      "action": "Continue to official sign-in",
      "statuses": "Email entry, password entry, confirmation error",
      "avoid": "Signed in, account verified",
      "localization": "Do not infer identity or access from a local entry form."
    },
    {
      "id": "O-job",
      "singular": "Job opening",
      "plural": "Job openings",
      "action": "View opening",
      "statuses": "Open, unavailable",
      "avoid": "Application submitted",
      "localization": "Preserve role title and location; explain when the hiring workflow changes site."
    },
    {
      "id": "O-keyboard",
      "singular": "Keyboard product",
      "plural": "Keyboard products",
      "action": "View specifications",
      "statuses": "Availability unknown, vendor information",
      "avoid": "In stock, reserved",
      "localization": "Keep model names and units explicit; use the vendor for current availability."
    }
  ],
  "messages": [
    {
      "id": "empty",
      "tone": "Neutral",
      "title": "No matching extensions",
      "detail": "Try another name or clear the search.",
      "actions": [
        "Clear search"
      ],
      "persistence": "Until the query or collection changes",
      "announcement": "polite",
      "focus": "Keep focus in the search field",
      "variables": []
    },
    {
      "id": "loading",
      "tone": "Factual",
      "title": "Loading the local reference",
      "detail": "The existing content stays available while this example loads.",
      "actions": [
        "Cancel"
      ],
      "persistence": "Until completion or cancellation",
      "announcement": "polite once; no repeating timer",
      "focus": "Keep the initiating control",
      "variables": []
    },
    {
      "id": "invalid",
      "tone": "Direct",
      "title": "Check the email address",
      "detail": "Enter an address such as name@example.com. Your other draft values are still here.",
      "actions": [
        "Edit email"
      ],
      "persistence": "Until corrected; never auto-dismiss",
      "announcement": "polite; associate the field description",
      "focus": "First invalid field after submit",
      "variables": []
    },
    {
      "id": "offline",
      "tone": "Calm",
      "title": "Your draft is still here",
      "detail": "The local example could not continue. Try again when the connection is available.",
      "actions": [
        "Retry"
      ],
      "persistence": "Until explicit retry succeeds or draft is reset",
      "announcement": "polite once",
      "focus": "Keep the draft and focus; retry stays reachable",
      "variables": []
    },
    {
      "id": "success",
      "tone": "Precise",
      "title": "Example validated locally",
      "detail": "Nothing was submitted. You can keep editing this draft.",
      "actions": [
        "Keep editing"
      ],
      "persistence": "Until a new edit or deliberate reset",
      "announcement": "polite once",
      "focus": "Keep submit focus; do not move to a toast",
      "variables": []
    },
    {
      "id": "warning",
      "tone": "Specific",
      "title": "This will clear the local draft",
      "detail": "The text and selected files in this example will be removed.",
      "actions": [
        "Keep draft",
        "Clear draft"
      ],
      "persistence": "Until an explicit choice",
      "announcement": "Named dialog on deliberate invocation",
      "focus": "Keep draft initially; return to the invoking control",
      "variables": []
    },
    {
      "id": "permission",
      "tone": "Matter of fact",
      "title": "Continue in your Raycast account",
      "detail": "The official site handles this action and checks the account’s access.",
      "actions": [
        "Open official sign-in"
      ],
      "persistence": "Inline beside the action",
      "announcement": "No unsolicited announcement",
      "focus": "Ordinary link navigation",
      "variables": []
    },
    {
      "id": "sensitive",
      "tone": "Protective",
      "title": "Remove private information before sharing",
      "detail": "Include the steps needed to explain the issue. Leave out passwords, access tokens and private conversation text.",
      "actions": [
        "Review draft"
      ],
      "persistence": "Inline before the share boundary",
      "announcement": "Read in normal document order",
      "focus": "Ordinary document order",
      "variables": []
    },
    {
      "id": "legal",
      "tone": "Literal",
      "title": "Check the usage terms",
      "detail": "An available download does not grant every kind of reuse. Read the source’s terms for this asset.",
      "actions": [
        "Read source terms"
      ],
      "persistence": "Inline with the source attribution",
      "announcement": "Read in normal document order",
      "focus": "Named source link",
      "variables": []
    },
    {
      "id": "support",
      "tone": "Helpful",
      "title": "The example still could not continue",
      "detail": "Keep your draft. Review the retained capture or open the official support destination for the original product.",
      "actions": [
        "View captured reference",
        "Open official support"
      ],
      "persistence": "Until the user chooses a next step",
      "announcement": "polite; do not repeat automatically",
      "focus": "Keep retry focus; expose both recovery links",
      "variables": []
    },
    {
      "id": "unavailable",
      "tone": "Honest",
      "title": "This source is unavailable",
      "detail": "The captured reference is still available. The current service state has not been verified.",
      "actions": [
        "View captured reference"
      ],
      "persistence": "Until a new source check",
      "announcement": "polite if caused by a deliberate request",
      "focus": "Keep the initiating link",
      "variables": []
    },
    {
      "id": "stale",
      "tone": "Time-specific",
      "title": "Check the current plan",
      "detail": "This reference records the public display captured on 18 September 2026. Check the official plan before purchasing.",
      "actions": [
        "Open official pricing"
      ],
      "persistence": "Inline beside the amount and cadence",
      "announcement": "Read in normal document order",
      "focus": "Ordinary link navigation",
      "variables": []
    },
    {
      "id": "cancelled",
      "tone": "Brief",
      "title": "Example cancelled",
      "detail": "No remote action ran. Your draft is unchanged.",
      "actions": [
        "Run again"
      ],
      "persistence": "Until the next deliberate action",
      "announcement": "polite once",
      "focus": "Return to the initiating control",
      "variables": []
    },
    {
      "id": "attachment",
      "tone": "Specific",
      "title": "Choose 5 files or fewer",
      "detail": "Each file can be up to 20 MiB. Remove a file and try again; the message is still here.",
      "actions": [
        "Choose files",
        "Clear files"
      ],
      "persistence": "Until a valid selection",
      "announcement": "polite; associate the file input",
      "focus": "File input after attempted submission",
      "variables": []
    }
  ],
  "locales": [
    "en-US",
    "de-DE",
    "fr-FR",
    "ja-JP",
    "ar-EG"
  ],
  "localeFixtures": [
    {
      "count": "0 extensions",
      "locale": "en-US",
      "direction": "ltr",
      "amount": "$12.50",
      "date": "Sep 18, 2026",
      "names": [
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "إضافة",
        "アプリ"
      ]
    },
    {
      "count": "1 extension",
      "locale": "en-US",
      "direction": "ltr",
      "amount": "$12.50",
      "date": "Sep 18, 2026",
      "names": [
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "إضافة",
        "アプリ"
      ]
    },
    {
      "count": "2 extensions",
      "locale": "en-US",
      "direction": "ltr",
      "amount": "$12.50",
      "date": "Sep 18, 2026",
      "names": [
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "إضافة",
        "アプリ"
      ]
    },
    {
      "count": "3 extensions",
      "locale": "en-US",
      "direction": "ltr",
      "amount": "$12.50",
      "date": "Sep 18, 2026",
      "names": [
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "إضافة",
        "アプリ"
      ]
    },
    {
      "count": "11 extensions",
      "locale": "en-US",
      "direction": "ltr",
      "amount": "$12.50",
      "date": "Sep 18, 2026",
      "names": [
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "إضافة",
        "アプリ"
      ]
    },
    {
      "count": "100 extensions",
      "locale": "en-US",
      "direction": "ltr",
      "amount": "$12.50",
      "date": "Sep 18, 2026",
      "names": [
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "إضافة",
        "アプリ"
      ]
    },
    {
      "count": "0 Erweiterungen",
      "locale": "de-DE",
      "direction": "ltr",
      "amount": "12,50 $",
      "date": "18.09.2026",
      "names": [
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "إضافة",
        "アプリ"
      ]
    },
    {
      "count": "1 Erweiterung",
      "locale": "de-DE",
      "direction": "ltr",
      "amount": "12,50 $",
      "date": "18.09.2026",
      "names": [
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "إضافة",
        "アプリ"
      ]
    },
    {
      "count": "2 Erweiterungen",
      "locale": "de-DE",
      "direction": "ltr",
      "amount": "12,50 $",
      "date": "18.09.2026",
      "names": [
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "إضافة",
        "アプリ"
      ]
    },
    {
      "count": "3 Erweiterungen",
      "locale": "de-DE",
      "direction": "ltr",
      "amount": "12,50 $",
      "date": "18.09.2026",
      "names": [
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "إضافة",
        "アプリ"
      ]
    },
    {
      "count": "11 Erweiterungen",
      "locale": "de-DE",
      "direction": "ltr",
      "amount": "12,50 $",
      "date": "18.09.2026",
      "names": [
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "إضافة",
        "アプリ"
      ]
    },
    {
      "count": "100 Erweiterungen",
      "locale": "de-DE",
      "direction": "ltr",
      "amount": "12,50 $",
      "date": "18.09.2026",
      "names": [
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "إضافة",
        "アプリ"
      ]
    },
    {
      "count": "0 extension",
      "locale": "fr-FR",
      "direction": "ltr",
      "amount": "12,50 $US",
      "date": "18 sept. 2026",
      "names": [
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "إضافة",
        "アプリ"
      ]
    },
    {
      "count": "1 extension",
      "locale": "fr-FR",
      "direction": "ltr",
      "amount": "12,50 $US",
      "date": "18 sept. 2026",
      "names": [
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "إضافة",
        "アプリ"
      ]
    },
    {
      "count": "2 extensions",
      "locale": "fr-FR",
      "direction": "ltr",
      "amount": "12,50 $US",
      "date": "18 sept. 2026",
      "names": [
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "إضافة",
        "アプリ"
      ]
    },
    {
      "count": "3 extensions",
      "locale": "fr-FR",
      "direction": "ltr",
      "amount": "12,50 $US",
      "date": "18 sept. 2026",
      "names": [
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "إضافة",
        "アプリ"
      ]
    },
    {
      "count": "11 extensions",
      "locale": "fr-FR",
      "direction": "ltr",
      "amount": "12,50 $US",
      "date": "18 sept. 2026",
      "names": [
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "إضافة",
        "アプリ"
      ]
    },
    {
      "count": "100 extensions",
      "locale": "fr-FR",
      "direction": "ltr",
      "amount": "12,50 $US",
      "date": "18 sept. 2026",
      "names": [
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "إضافة",
        "アプリ"
      ]
    },
    {
      "count": "拡張機能 0 件",
      "locale": "ja-JP",
      "direction": "ltr",
      "amount": "$12.50",
      "date": "2026/09/18",
      "names": [
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "アプリ",
        "إضافة"
      ]
    },
    {
      "count": "拡張機能 1 件",
      "locale": "ja-JP",
      "direction": "ltr",
      "amount": "$12.50",
      "date": "2026/09/18",
      "names": [
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "アプリ",
        "إضافة"
      ]
    },
    {
      "count": "拡張機能 2 件",
      "locale": "ja-JP",
      "direction": "ltr",
      "amount": "$12.50",
      "date": "2026/09/18",
      "names": [
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "アプリ",
        "إضافة"
      ]
    },
    {
      "count": "拡張機能 3 件",
      "locale": "ja-JP",
      "direction": "ltr",
      "amount": "$12.50",
      "date": "2026/09/18",
      "names": [
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "アプリ",
        "إضافة"
      ]
    },
    {
      "count": "拡張機能 11 件",
      "locale": "ja-JP",
      "direction": "ltr",
      "amount": "$12.50",
      "date": "2026/09/18",
      "names": [
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "アプリ",
        "إضافة"
      ]
    },
    {
      "count": "拡張機能 100 件",
      "locale": "ja-JP",
      "direction": "ltr",
      "amount": "$12.50",
      "date": "2026/09/18",
      "names": [
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "アプリ",
        "إضافة"
      ]
    },
    {
      "count": "لا توجد إضافات",
      "locale": "ar-EG",
      "direction": "rtl",
      "amount": "‏١٢٫٥٠ US$",
      "date": "١٨‏/٠٩‏/٢٠٢٦",
      "names": [
        "إضافة",
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "アプリ"
      ]
    },
    {
      "count": "إضافة واحدة",
      "locale": "ar-EG",
      "direction": "rtl",
      "amount": "‏١٢٫٥٠ US$",
      "date": "١٨‏/٠٩‏/٢٠٢٦",
      "names": [
        "إضافة",
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "アプリ"
      ]
    },
    {
      "count": "إضافتان",
      "locale": "ar-EG",
      "direction": "rtl",
      "amount": "‏١٢٫٥٠ US$",
      "date": "١٨‏/٠٩‏/٢٠٢٦",
      "names": [
        "إضافة",
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "アプリ"
      ]
    },
    {
      "count": "٣ إضافات",
      "locale": "ar-EG",
      "direction": "rtl",
      "amount": "‏١٢٫٥٠ US$",
      "date": "١٨‏/٠٩‏/٢٠٢٦",
      "names": [
        "إضافة",
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "アプリ"
      ]
    },
    {
      "count": "١١ إضافة",
      "locale": "ar-EG",
      "direction": "rtl",
      "amount": "‏١٢٫٥٠ US$",
      "date": "١٨‏/٠٩‏/٢٠٢٦",
      "names": [
        "إضافة",
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "アプリ"
      ]
    },
    {
      "count": "١٠٠ إضافة",
      "locale": "ar-EG",
      "direction": "rtl",
      "amount": "‏١٢٫٥٠ US$",
      "date": "١٨‏/٠٩‏/٢٠٢٦",
      "names": [
        "إضافة",
        "Ångström",
        "Éclair",
        "Item 2",
        "Item 10",
        "Zulu",
        "アプリ"
      ]
    }
  ],
  "rules": {
    "identity": "Never translate IDs, version strings, URLs, command identifiers or canonical product names.",
    "variables": "Count is a nonnegative safe integer; amount is numeric cents with a named currency; timestamps have an explicit zone; names are text in bdi.",
    "missing": "Null means not supplied; zero is a valid measured or displayed value. Never replace zero with an empty placeholder.",
    "sorting": "Use a locale collator with numeric sorting, stable original-order ties, and declared sensitivity. Search normalization does not rewrite display values.",
    "userContent": "Preserve user-authored Unicode and diacritics. Isolate direction per field, wrap long prose and allow code/URLs to scroll in labeled regions.",
    "translation": "The guide is authored in English. Formatting and synthetic count examples support five locales; full human-reviewed translations are not claimed.",
    "expansion": "At least30% label expansion plus pseudo accents; preserve semantic DOM, IDs and relationships.",
    "limits": "Feedback limits count Unicode code points, not UTF-16 code units. Grapheme-cluster counting would be a separate contract change."
  }
}
