{
  "schema": "freshvibe-way-v8.module-meta",
  "schema_version": "1.0.0",
  "module_id": "button",
  "display_name": "Button",
  "description": "Clickable button with text, URL, and optional icon",
  "tier": 2,
  "tier_reason": "Generic MIT, free to copy, ship, modify. No external deps beyond the freshvibe-cms runtime.",
  "version": "0.1.0",
  "freshvibe_way_version": "v8.3.0",
  "source_path": "avidtech6/fv-module-gallery/cms-widgets/button/module.json",
  "module_dir": "avidtech6/fv-module-gallery/cms-widgets/button/",
  "dependencies": [
    "freshvibe-cms:runtime:store",
    "freshvibe-cms:runtime:scope"
  ],
  "constitutional_fragments": [
    "fvcms.pact.section.1",
    "fvcms.pact.section.3",
    "fvcms.pact.anti-drift.001",
    "fvcms.pact.invariants.001"
  ],
  "tier_evidence": "Block has no proprietary logic, no per-tenant state, no external API calls. Tier 3 (generic MIT) per FWV v8 \u00a717.3.",
  "created_at": "2026-08-04T07:42:00Z",
  "updated_at": "2026-08-04T07:42:00Z",
  "_module_kind": "gallery-original",
  "_canonical_source": "avidtech6/fv-module-gallery/cms-widgets/",
  "_canonical_version": "0.1.0",
  "_canonical_version_upstream": "freshvibe-cms/modules v0.4 (pre-v1.1.0, deleted)",
  "provenance": {
    "updated_at": "2026-08-04",
    "updated_by": "helper-mavis session 412100071272671 (D-2026-08-04-023 fix)",
    "rationale": "Tier 3 \"original\" kind assumed a vendored source_path. v1.1.0 deleted the 17 vendored modules. Re-pointed to the gallery (canonical home per FVW \u00a717.5).",
    "old_source_path": "modules/button.js",
    "new_source_path": "avidtech6/fv-module-gallery/cms-widgets/button/module.json"
  }
}