{
  "_meta": {
    "purpose": "Deliberate, non-live --sf-*/.sf- references that scripts/check-doc-refs.js must NOT flag. Every entry is a name a hand-written doc mentions ON PURPOSE even though it is not current live API (removed-by-design, illustrative, or an example of something the framework intentionally does not ship). Each key is a repo-relative doc path; each value maps a name (token with --sf- prefix, or class without the leading dot) to the reason it is allowed. Whole-doc genres (historical migration.md, forward-looking roadmap.md, generated docs) are excluded in check-doc-refs.js itself, not here.",
    "generated_by": "hand-maintained"
  },
  "docs/architecture.md": {
    "--sf-button-radius": "Illustrative instance token — shown as an example of an arbitrary per-element custom property an author may set inline (style=\"--sf-button-radius: …\"), not a framework-declared token."
  },
  "docs/components.md": {
    "--sf-grad-a": "Historical example — named as an ad-hoc gradient variable the real gradient system replaced; prose, not current API.",
    "--sf-grad-b": "Historical example — named as an ad-hoc gradient variable the real gradient system replaced; prose, not current API.",
    "sf-tabs": "Example of a component SLASHED deliberately does NOT ship (framework carries only .sf-btn and .sf-card).",
    "sf-accordion": "Example of a component SLASHED deliberately does NOT ship.",
    "sf-tooltip": "Example of a component SLASHED deliberately does NOT ship.",
    "sf-popover": "Example of a component SLASHED deliberately does NOT ship.",
    "sf-pagination": "Example of a component SLASHED deliberately does NOT ship.",
    "sf-breadcrumb": "Example of a component SLASHED deliberately does NOT ship.",
    "sf-progress": "Example of a component SLASHED deliberately does NOT ship.",
    "sf-spinner": "Example of a component SLASHED deliberately does NOT ship.",
    "sf-table": "Example of a component SLASHED deliberately does NOT ship.",
    "sf-form-field": "Example of a component SLASHED deliberately does NOT ship.",
    "sf-nav": "Example of a component SLASHED deliberately does NOT ship.",
    "sf-badge": "Example of a component SLASHED deliberately does NOT ship.",
    "sf-tag": "Example of a component SLASHED deliberately does NOT ship.",
    "sf-alert": "Example of a component SLASHED deliberately does NOT ship.",
    "sf-avatar": "Example of a component SLASHED deliberately does NOT ship.",
    "sf-modal": "Example of a component SLASHED deliberately does NOT ship."
  },
  "docs/states.md": {
    "sf-is-hidden": "Removed — duplicated [hidden] (core/reset.css already hardens it identically). Named in the 'Prefer native state' section as the precedent for the guidance.",
    "sf-is-readonly": "Removed — duplicated :read-only and incorrectly blocked text selection. Named in the 'Prefer native state' section as a removed example.",
    "sf-is-busy": "Removed — a single cursor:progress declaration with no distinct visual; [aria-busy=\"true\"] alone covers it. Named in the 'Prefer native state' section as a removed example.",
    "sf-is-active": "Removed — speculative --sf-is-* custom-property flag with zero consumers. Named in the 'Prefer native state' section's removal rationale.",
    "sf-is-open": "Removed — same speculative-flag rationale as sf-is-active. Named in the 'Prefer native state' section's removal rationale.",
    "sf-is-collapsed": "Removed — same speculative-flag rationale as sf-is-active. Named in the 'Prefer native state' section's removal rationale.",
    "sf-is-expanded": "Removed — pure vocabulary duplicate of sf-is-open. Named in the 'Prefer native state' section's removal rationale.",
    "sf-is-pressed": "Removed — became a functional duplicate of sf-is-selected once its inert flag was cut. Named in the 'Prefer native state' section's removal rationale.",
    "sf-is-current": "Removed — for consistency with the other speculative-flag removals. Named in the 'Prefer native state' section's removal rationale.",
    "sf-is-danger": "Removed — identical implementation to sf-is-invalid/sf-is-error, never worked outside a form field. Named in the 'Prefer native state' section's removal rationale.",
    "sf-is-pending": "Removed — two lines cheap to hand-roll, sf-is-loading covers the common case. Named in the 'Prefer native state' section's removal rationale.",
    "sf-is-invisible": "Renamed and relocated to optional/utilities.css as .sf-invisible. Named in the 'Prefer native state' section's removal rationale (historical name, pre-relocation).",
    "sf-is-visible": "Renamed and relocated to optional/utilities.css as .sf-visible. Named in the 'Prefer native state' section's removal rationale (historical name, pre-relocation)."
  },
  "docs/api-audit-checklist.md": {
    "sf-is-hidden": "Removed 2026-07-21 (round 1) — recorded in the audit checklist as the resolved verdict for this class.",
    "sf-is-readonly": "Removed 2026-07-21 (round 1) — recorded in the audit checklist as the resolved verdict for this class.",
    "sf-is-busy": "Removed 2026-07-21 (round 1) — recorded in the audit checklist as the resolved verdict for this class.",
    "sf-is-active": "Removed 2026-07-21 (round 2) — recorded in the audit checklist as the resolved verdict for this class.",
    "sf-is-open": "Removed 2026-07-21 (round 2) — recorded in the audit checklist as the resolved verdict for this class.",
    "sf-is-collapsed": "Removed 2026-07-21 (round 2) — recorded in the audit checklist as the resolved verdict for this class.",
    "sf-is-expanded": "Removed 2026-07-21 (round 2) — recorded in the audit checklist as the resolved verdict for this class.",
    "sf-is-pressed": "Removed 2026-07-21 (round 2) — recorded in the audit checklist as the resolved verdict for this class.",
    "sf-is-current": "Removed 2026-07-21 (round 2) — recorded in the audit checklist as the resolved verdict for this class.",
    "sf-is-danger": "Removed 2026-07-21 (round 2) — recorded in the audit checklist as the resolved verdict for this class.",
    "sf-is-pending": "Removed 2026-07-21 (round 2) — recorded in the audit checklist as the resolved verdict for this class.",
    "sf-is-invisible": "Historical name — recorded in the audit checklist before its rename/relocation to .sf-invisible.",
    "sf-is-visible": "Historical name — recorded in the audit checklist before its rename/relocation to .sf-visible.",
    "--sf-current-font-weight": "Removed 2026-07-21 (round 2) — orphaned when its only consumer (.sf-is-current) was removed. Recorded in the audit checklist.",
    "--sf-state-pending-opacity": "Removed 2026-07-21 (round 2) — orphaned when its only consumer (.sf-is-pending) was removed. Recorded in the audit checklist.",
    "--sf-is-active": "Removed 2026-07-21 (round 2) — @property registration for the removed .sf-is-active flag mechanism. Recorded in the audit checklist."
  }
}
