{
  "step": "react",
  "tool": "code_generate",
  "input": {
    "schemaRef": "compose-d6072861",
    "framework": "react",
    "profile": "build",
    "options": {
      "output": "application",
      "brand": "Harbor",
      "theme": "light",
      "payloadMode": "file"
    }
  },
  "isError": false,
  "error": null,
  "output": {
    "status": "ok",
    "framework": "react",
    "payload": {
      "mode": "file",
      "directory": "~/.oods-foundry/payloads/code.generate-800e792fc696",
      "bytes": 134297,
      "files": [
        {
          "path": "README.md",
          "bytes": 743,
          "sha256": "ff76faf406015d87e3f30252a34b2d91c2d49aeafb7063d91b299f17fe7e8444"
        },
        {
          "path": "index.html",
          "bytes": 335,
          "sha256": "34921f4f0b77c5c7ee527d247867a8c497fd698481c792bcd00e9c4166ac1099"
        },
        {
          "path": "package.json",
          "bytes": 681,
          "sha256": "3bd393e41ac70f8607a84edc50ac38206406ff138f6f3048931173d562b76005"
        },
        {
          "path": "src/App.tsx",
          "bytes": 1707,
          "sha256": "42f6117dcc3f4136a1d1373b3eb2ac50cc8f686e5fc3cb27c209457d27c10601"
        },
        {
          "path": "src/GeneratedUI.tsx",
          "bytes": 13842,
          "sha256": "e5d9d92afe97133a982a84567d085ba5a16f704942b28118ec3869bfaa7c19aa"
        },
        {
          "path": "src/app.css",
          "bytes": 511,
          "sha256": "2db3a558b73956ec7d87fc341bca6415d31b6e9f567c9710a90ded0db9a2df68"
        },
        {
          "path": "src/main.tsx",
          "bytes": 160,
          "sha256": "44f61db45209da70184e2b43272c8825db1152e7d300df266ed4400da939f579"
        },
        {
          "path": "src/oods-brand-harbor.css",
          "bytes": 42272,
          "sha256": "4c81c59cb58ebee92438ebe3f34319b3c84cba2c012c361fd835119bdb54f16f"
        },
        {
          "path": "tsconfig.json",
          "bytes": 333,
          "sha256": "a0c6dad213106eebefcf5e817d07e31a8b6666e4bc678a449b7c578f62f6fb3a"
        },
        {
          "path": "vite.config.mjs",
          "bytes": 54,
          "sha256": "ba9f5d24cd9f7332074aa5d15af690839bd18252ab8a31e4b47c11f5a2c1cd38"
        },
        {
          "path": "artifact.json",
          "bytes": 65871,
          "sha256": "d1207a5179be440e501977066ca6d439222ea9433222be27ca0c3661699e1288"
        },
        {
          "path": "component-contracts.json",
          "bytes": 7788,
          "sha256": "c17c6cf3e757b6efeacb8ccced1f921b23bfb9529db62c4afbaf539a6d03388c"
        }
      ]
    },
    "componentContracts": [
      {
        "framework": "react",
        "mappingId": "harbor-team-button",
        "component": "Button",
        "source": {
          "export": "TeamButton",
          "package": "@harbor/example-components/react",
          "version": "1.0.0",
          "packageContentHash": "sha256:f82c9589adb1794361006cadb7c25b7a1108d5f9aefe3726f6790e7f348a3fac"
        },
        "schemaVersion": "1",
        "contractVersion": "1.1.0",
        "scenarioId": "button-activate",
        "obligations": [
          {
            "id": "prop:content",
            "requirement": "content",
            "status": "not-checked",
            "reason": "No executable probe for this declared obligation; it is not inferred from mounting."
          },
          {
            "id": "prop:intent",
            "requirement": "intent",
            "status": "not-checked",
            "reason": "No executable probe for this declared obligation; it is not inferred from mounting."
          },
          {
            "id": "prop:size",
            "requirement": "size",
            "status": "not-checked",
            "reason": "No executable probe for this declared obligation; it is not inferred from mounting."
          },
          {
            "id": "prop:disabled",
            "requirement": "disabled",
            "status": "met",
            "reason": "The rendered native control must expose disabled semantics."
          },
          {
            "id": "prop:type",
            "requirement": "type",
            "status": "not-checked",
            "reason": "No executable probe for this declared obligation; it is not inferred from mounting."
          },
          {
            "id": "slot:default",
            "requirement": "default",
            "status": "met",
            "reason": "The shared default slot must name Save changes."
          },
          {
            "id": "event:activate",
            "requirement": "activate",
            "status": "met",
            "reason": "Real pointer click; expected {\"kind\":\"event\"}; events [{\"event\":\"activate\",\"value\":\"\"}]. Real keyboard Enter; expected {\"kind\":\"event\"}; events [{\"event\":\"activate\",\"value\":\"\"}]."
          },
          {
            "id": "state:default",
            "requirement": "default",
            "status": "not-checked",
            "reason": "No executable probe for this declared obligation; it is not inferred from mounting."
          },
          {
            "id": "state:hover",
            "requirement": "hover",
            "status": "not-checked",
            "reason": "No executable probe for this declared obligation; it is not inferred from mounting."
          },
          {
            "id": "state:focus",
            "requirement": "focus",
            "status": "met",
            "reason": "Real keyboard Tab; expected {\"kind\":\"focus\"}; events []."
          },
          {
            "id": "state:pressed",
            "requirement": "pressed",
            "status": "not-checked",
            "reason": "No executable probe for this declared obligation; it is not inferred from mounting."
          },
          {
            "id": "state:disabled",
            "requirement": "disabled",
            "status": "met",
            "reason": "Disabled variant is mounted and its native disabled state is inspected."
          },
          {
            "id": "token:button.background",
            "requirement": "button.background",
            "status": "not-checked",
            "reason": "No executable probe for this declared obligation; it is not inferred from mounting."
          },
          {
            "id": "token:button.border",
            "requirement": "button.border",
            "status": "not-checked",
            "reason": "No executable probe for this declared obligation; it is not inferred from mounting."
          },
          {
            "id": "token:button.text",
            "requirement": "button.text",
            "status": "not-checked",
            "reason": "No executable probe for this declared obligation; it is not inferred from mounting."
          },
          {
            "id": "token:button.focus",
            "requirement": "button.focus",
            "status": "not-checked",
            "reason": "No executable probe for this declared obligation; it is not inferred from mounting."
          },
          {
            "id": "accessibility:Native button semantics",
            "requirement": "Native button semantics",
            "status": "met",
            "reason": "The mounted shared scenario must contain one native button."
          },
          {
            "id": "accessibility:Defaults to type=button",
            "requirement": "Defaults to type=button",
            "status": "met",
            "reason": "The default type attribute is read from the real DOM."
          },
          {
            "id": "role",
            "requirement": "button",
            "status": "met",
            "reason": "Observed 1 elements with role button."
          },
          {
            "id": "name",
            "requirement": "label on button",
            "status": "met",
            "reason": "Observed accessible label text: \"Save changes\"."
          },
          {
            "id": "keyboard:Tab",
            "requirement": "Move focus to the named native control",
            "status": "met",
            "reason": "Real keyboard Tab; expected {\"kind\":\"focus\"}; events []."
          },
          {
            "id": "keyboard:Enter",
            "requirement": "Activate the control",
            "status": "met",
            "reason": "Real keyboard Enter; expected {\"kind\":\"event\"}; events [{\"event\":\"activate\",\"value\":\"\"}]."
          },
          {
            "id": "compatibility",
            "requirement": "React asChild remains an extension and is not a Vue parity requirement.",
            "status": "not-checked",
            "reason": "No executable probe for this declared obligation; it is not inferred from mounting."
          },
          {
            "id": "scenario:props",
            "requirement": "Shared scenario props and slots mount without an exception",
            "status": "met",
            "reason": "Shared scenario props and slots mounted through the generated adapter without browser errors."
          },
          {
            "id": "scenario:render",
            "requirement": "activation handler called once",
            "status": "met",
            "reason": "The named button activates exactly once for each shared pointer/keyboard trigger."
          },
          {
            "id": "scenario:assertion:0",
            "requirement": "native type defaults to button",
            "status": "not-checked",
            "reason": "No executable probe for this declared obligation; it is not inferred from mounting."
          },
          {
            "id": "scenario:assertion:1",
            "requirement": "focus is visible",
            "status": "not-checked",
            "reason": "No executable probe for this declared obligation; it is not inferred from mounting."
          },
          {
            "id": "scenario:event:0",
            "requirement": "{\"trigger\":\"keyboard\",\"target\":\"button\",\"key\":\"Tab\",\"effect\":{\"kind\":\"focus\"}}",
            "status": "met",
            "reason": "Real keyboard Tab; expected {\"kind\":\"focus\"}; events []."
          },
          {
            "id": "scenario:event:1",
            "requirement": "{\"trigger\":\"pointer\",\"target\":\"button\",\"effect\":{\"kind\":\"event\"},\"action\":\"click\"}",
            "status": "met",
            "reason": "Real pointer click; expected {\"kind\":\"event\"}; events [{\"event\":\"activate\",\"value\":\"\"}]."
          },
          {
            "id": "scenario:event:2",
            "requirement": "{\"trigger\":\"keyboard\",\"target\":\"button\",\"effect\":{\"kind\":\"event\"},\"key\":\"Enter\"}",
            "status": "met",
            "reason": "Real keyboard Enter; expected {\"kind\":\"event\"}; events [{\"event\":\"activate\",\"value\":\"\"}]."
          }
        ],
        "summary": {
          "met": 16,
          "unmet": 0,
          "not-checked": 14
        },
        "adapterContentHash": "sha256:29fb9dba70356a7cdc1d9271a1b967c79b596183c06da371698c28777ce73d35",
        "contractContentHash": "sha256:f69f2d8aeadbdea813e1d7030f0856146a0822f45d086f9c9ee5d3a8d03fb02a",
        "checkedAt": "2026-10-08T15:03:17.779Z",
        "browser": "Chromium 153.0.8010.12"
      }
    ],
    "code": "",
    "fileExtension": ".tsx",
    "imports": [
      "react",
      "@oods/components-react",
      "@oods/component-styles/css",
      "@oods/component-contracts",
      "react-dom/client",
      "@harbor/example-components/react"
    ],
    "warnings": [],
    "validationReceipt": {
      "profile": "build",
      "defaulted": false,
      "rationale": "Build is the default blocking gate: target, bindings, dependencies and fallbacks must resolve under static checks; the static gate does not install or run the generated application.",
      "axes": {
        "scope": "generated-artifact",
        "enforcement": "blocking",
        "fallback": "forbidden",
        "target": {
          "requested": "react",
          "resolved": "react",
          "source": "explicit"
        }
      },
      "checks": [
        "schema-structure",
        "component-registry",
        "state-contract",
        "target-readiness",
        "normalization-fidelity",
        "binding-contract",
        "props-contract",
        "slots-contract",
        "events-contract",
        "dependency-closure"
      ],
      "notChecked": [
        "fallback-policy",
        "rendered-evidence",
        "interaction-evidence",
        "accessibility-evidence",
        "theme-evidence",
        "determinism-evidence",
        "performance-evidence",
        "certification-evidence"
      ],
      "evidence": {
        "required": [],
        "provided": [],
        "missing": [],
        "mismatched": [],
        "accepted": [],
        "notApplicable": [],
        "artifactContentHash": "sha256:800e792fc696672da715e3a9324ae791d814b142d95f07f955b9133beed8e747"
      }
    },
    "install": {
      "note": "@oods/component-contracts, @oods/component-styles, @oods/components-react and @oods/tokens install from npm at the exact versions listed. The app's package.json pins each package the app imports, and npm install fetches those and the @oods packages they depend on. Mapped team packages install at their declared versions; one that is not on a registry installs from its own tarball or folder.",
      "packages": [
        {
          "name": "@oods/component-contracts",
          "version": "0.6.2"
        },
        {
          "name": "@oods/component-styles",
          "version": "0.6.2"
        },
        {
          "name": "@oods/components-react",
          "version": "0.6.2"
        },
        {
          "name": "@oods/tokens",
          "version": "0.6.2"
        }
      ],
      "steps": [
        "npm install",
        "npm run build"
      ]
    },
    "meta": {
      "nodeCount": 48,
      "componentCount": 8
    }
  }
}
