{
  "$schema": "./schema.json",
  "frameworks": [
    {
      "annotations": {
        "apis": [
          "useSemantic",
          "Semantic"
        ],
        "kind": "termwright-sdk",
        "notes": "Optional developer intent is consumed by the zero-config probe. Ink-retained aria-role and aria-state remain separate framework-native accessibility hints with framework provenance. The SDK cannot override physical facts.",
        "package": "@termwright/ink",
        "packageVersion": "0.5.1"
      },
      "capabilityGraph": {
        "applicationIntegrated": [
          {
            "capabilities": [
              "pointer-geometry",
              "pointer-hit-testing"
            ],
            "providerCapabilities": [
              "pointer-regions",
              "hit-test"
            ],
            "providerType": "pointer-evidence",
            "sdks": [
              "@termwright/evidence-provider"
            ]
          },
          {
            "capabilities": [
              "action-strategies"
            ],
            "providerCapabilities": [
              "action-recipes"
            ],
            "providerType": "action-strategy",
            "sdks": [
              "@termwright/evidence-provider"
            ]
          },
          {
            "capabilities": [
              "focus"
            ],
            "providerCapabilities": [
              "focus-state"
            ],
            "providerType": "focus-evidence",
            "sdks": [
              "@termwright/evidence-provider"
            ]
          },
          {
            "capabilities": [
              "scroll"
            ],
            "providerCapabilities": [
              "scroll-state"
            ],
            "providerType": "scroll-evidence",
            "sdks": [
              "@termwright/evidence-provider"
            ]
          },
          {
            "capabilities": [
              "painted-region"
            ],
            "providerCapabilities": [
              "painted-regions"
            ],
            "providerType": "paint-evidence",
            "sdks": [
              "@termwright/evidence-provider"
            ]
          }
        ],
        "automatic": [
          "semantic-tree",
          "stable-identity",
          "intended-geometry",
          "clipped-geometry",
          "paired-revisions"
        ],
        "claims": [
          {
            "files": [
              "packages/probe-ink/src/geometry.pty.test.ts"
            ],
            "id": "claim.semantic-tree-authoritative"
          },
          {
            "files": [
              "packages/probe-ink/src/geometry.pty.test.ts"
            ],
            "id": "claim.stable-identity-authoritative"
          },
          {
            "files": [
              "packages/probe-ink/src/geometry.pty.test.ts"
            ],
            "id": "claim.intended-geometry-authoritative"
          },
          {
            "files": [
              "packages/probe-ink/src/geometry.pty.test.ts"
            ],
            "id": "claim.clipped-geometry-authoritative"
          },
          {
            "files": [
              "packages/probe-ink/src/geometry.pty.test.ts"
            ],
            "id": "claim.paired-revisions"
          },
          {
            "files": [
              "packages/probe-ink/src/provider.pty.test.ts",
              "examples/ink-todo/tests/app.e2e.test.ts"
            ],
            "id": "claim.pointer-region-authoritative"
          },
          {
            "files": [
              "packages/probe-ink/src/provider.pty.test.ts",
              "examples/ink-todo/tests/app.e2e.test.ts"
            ],
            "id": "claim.pointer-hit-test-authoritative"
          },
          {
            "files": [
              "packages/conformance/src/suites/driver-generic.test.ts"
            ],
            "id": "claim.keyboard-real-pty"
          },
          {
            "files": [
              "packages/probe-ink/src/provider.pty.test.ts",
              "examples/ink-todo/tests/app.e2e.test.ts"
            ],
            "id": "claim.pointer-real-pty"
          },
          {
            "files": [
              "packages/driver/src/session.pty.test.ts",
              "packages/probe-ink/src/provider.pty.test.ts"
            ],
            "id": "claim.focus-report-real-pty"
          },
          {
            "files": [
              "packages/driver/src/provider-evidence.test.ts"
            ],
            "id": "claim.focus-authoritative"
          },
          {
            "files": [
              "packages/driver/src/session.pty.test.ts",
              "packages/driver/src/provider-evidence.test.ts"
            ],
            "id": "claim.action-strategy-authoritative"
          },
          {
            "files": [
              "packages/evidence-provider/src/index.test.ts",
              "packages/driver/src/provider-evidence.test.ts",
              "packages/probe-ink/src/provider.pty.test.ts"
            ],
            "id": "claim.scroll-authoritative"
          },
          {
            "files": [
              "packages/evidence-provider/src/index.test.ts",
              "packages/driver/src/provider-evidence.test.ts",
              "packages/probe-ink/src/provider.pty.test.ts"
            ],
            "id": "claim.painted-region-authoritative"
          }
        ],
        "input": [
          {
            "capability": "keyboard-input",
            "producerFacts": [
              "terminal.writable-pty"
            ],
            "providerAlternatives": [],
            "runtimePrerequisites": [
              "writable-pty"
            ]
          },
          {
            "capability": "pointer-input",
            "producerFacts": [
              "terminal.input-modes-observable"
            ],
            "providerAlternatives": [
              {
                "providerCapabilities": [
                  "terminal-input-modes"
                ],
                "providerType": "input-mode-evidence",
                "sdks": [
                  "/evidence-provider"
                ]
              }
            ],
            "runtimePrerequisites": [
              "terminal-input-modes-authoritative",
              "mouse-reporting-enabled"
            ]
          },
          {
            "capability": "focus-input",
            "producerFacts": [
              "terminal.input-modes-observable"
            ],
            "providerAlternatives": [
              {
                "providerCapabilities": [
                  "terminal-input-modes"
                ],
                "providerType": "input-mode-evidence",
                "sdks": [
                  "/evidence-provider"
                ]
              }
            ],
            "runtimePrerequisites": [
              "terminal-input-modes-authoritative",
              "focus-reporting-enabled"
            ]
          }
        ],
        "unsupported": [
          "render-order"
        ]
      },
      "certification": {
        "adapterVersion": "0.5.1",
        "checksumSources": [
          "packages/probe-ink/src/certified-instrumentation.json"
        ],
        "ids": [
          "ink@7.1.1/0.5.1"
        ],
        "strategy": "checksummed-instrumentation"
      },
      "documentation": "/reference/compatibility/#ink",
      "frameworkPackage": "ink",
      "id": "ink",
      "instrumentation": {
        "degradedCapabilities": [],
        "interventions": [
          {
            "addedUnits": [],
            "capability": "module-interception",
            "conformanceSuites": [
              "packages/probe-ink/src/instrumentation.test.ts"
            ],
            "requiredSymbols": [
              "node:module.registerHooks",
              "Bun.plugin"
            ],
            "sourcePatching": false,
            "tier": "T0"
          },
          {
            "addedUnits": [],
            "capability": "committed-host-tree",
            "conformanceSuites": [
              "packages/probe-ink/src/geometry.pty.test.ts"
            ],
            "requiredSymbols": [
              "ink.render",
              "reconciler.createContainer",
              "renderer.render"
            ],
            "sourcePatching": true,
            "tier": "T3"
          }
        ],
        "patchSets": [],
        "semanticClass": "A",
        "strategy": "module preload verifies and instruments an exact checksummed Ink renderer and frame commit, then pairs it with an exact VT output tracker",
        "t3DebtCount": 1,
        "variants": [
          {
            "frameworkVersion": "7.1.1",
            "id": "ink-7.1.1",
            "modules": [
              {
                "name": "ink",
                "version": "7.1.1"
              }
            ]
          }
        ]
      },
      "limitations": [
        "Application component names disappear before the retained Ink host tree is created.",
        "Ink cannot attribute focus to a host node automatically; an application production focus manager can provide it through the focus-evidence contract. Text selection and third-party input values remain unobservable automatically.",
        "Only the exact checksummed Ink versions listed in this registry are certified; modified or other versions fail closed without negotiating semantics.",
        "Occlusion is unknown, so semantic click is refused even when qualified bounds are present.",
        "Ink does not retain aria-label; name-from-content roles use rendered text and containers remain unnamed."
      ],
      "name": "Ink",
      "probe": {
        "adapterCapabilities": [
          "tree",
          "intended-geometry",
          "clipped-geometry",
          "states",
          "actions",
          "render-revisions"
        ],
        "capabilities": [
          "stable-identity",
          "intended-rect",
          "visible-rect",
          "annotations"
        ],
        "identityKind": "stable",
        "launch": "withProbe('node' | 'bun', argv) preload",
        "package": "@termwright/probe-ink",
        "packageVersion": "0.5.1"
      },
      "runtimes": [
        {
          "name": "Node.js",
          "notes": "Node 22 and 24 are CI lanes; early Node 22 uses module.register instead of registerHooks.",
          "version": "^22.0.0 || ^24.0.0"
        },
        {
          "name": "Bun",
          "notes": "Bun 1.2.15 was audited; CI exercises the current Bun release.",
          "version": ">=1.2.15"
        }
      ],
      "versions": {
        "declared": "7.1.1",
        "policy": "exact",
        "verified": [
          "7.1.1"
        ]
      }
    },
    {
      "annotations": {
        "apis": [
          "describeRenderable"
        ],
        "kind": "termwright-sdk",
        "notes": "Optional developer intent on existing Renderables is consumed by the zero-config probe. The SDK does not own the renderer and cannot override physical or framework state.",
        "package": "@termwright/opentui",
        "packageVersion": "0.5.1"
      },
      "capabilityGraph": {
        "applicationIntegrated": [
          {
            "capabilities": [
              "action-strategies"
            ],
            "providerCapabilities": [
              "action-recipes"
            ],
            "providerType": "action-strategy",
            "sdks": [
              "@termwright/evidence-provider"
            ]
          },
          {
            "capabilities": [
              "scroll"
            ],
            "providerCapabilities": [
              "scroll-state"
            ],
            "providerType": "scroll-evidence",
            "sdks": [
              "@termwright/evidence-provider"
            ]
          },
          {
            "capabilities": [
              "painted-region"
            ],
            "providerCapabilities": [
              "painted-regions"
            ],
            "providerType": "paint-evidence",
            "sdks": [
              "@termwright/evidence-provider"
            ]
          }
        ],
        "automatic": [
          "semantic-tree",
          "stable-identity",
          "intended-geometry",
          "clipped-geometry",
          "pointer-geometry",
          "pointer-hit-testing",
          "paired-revisions",
          "focus"
        ],
        "claims": [
          {
            "files": [
              "packages/probe-opentui/src/zero-config.test.ts",
              "packages/probe-opentui/src/runtime-observer.test.ts"
            ],
            "id": "claim.semantic-tree-authoritative"
          },
          {
            "files": [
              "packages/probe-opentui/src/zero-config.test.ts",
              "packages/probe-opentui/src/runtime-observer.test.ts"
            ],
            "id": "claim.stable-identity-authoritative"
          },
          {
            "files": [
              "packages/probe-opentui/src/zero-config.test.ts",
              "packages/probe-opentui/src/runtime-observer.test.ts"
            ],
            "id": "claim.intended-geometry-authoritative"
          },
          {
            "files": [
              "packages/probe-opentui/src/zero-config.test.ts",
              "packages/probe-opentui/src/runtime-observer.test.ts"
            ],
            "id": "claim.clipped-geometry-authoritative"
          },
          {
            "files": [
              "packages/probe-opentui/src/zero-config.test.ts",
              "packages/probe-opentui/src/runtime-observer.test.ts"
            ],
            "id": "claim.pointer-region-authoritative"
          },
          {
            "files": [
              "packages/probe-opentui/src/zero-config.test.ts",
              "packages/probe-opentui/src/runtime-observer.test.ts"
            ],
            "id": "claim.pointer-hit-test-authoritative"
          },
          {
            "files": [
              "packages/probe-opentui/src/zero-config.test.ts",
              "packages/probe-opentui/src/runtime-observer.test.ts"
            ],
            "id": "claim.paired-revisions"
          },
          {
            "files": [
              "packages/conformance/src/suites/driver-generic.test.ts"
            ],
            "id": "claim.keyboard-real-pty"
          },
          {
            "files": [
              "packages/conformance/src/suites/interaction.test.ts"
            ],
            "id": "claim.pointer-real-pty"
          },
          {
            "files": [
              "packages/driver/src/session.pty.test.ts",
              "packages/probe-ink/src/provider.pty.test.ts"
            ],
            "id": "claim.focus-report-real-pty"
          },
          {
            "files": [
              "packages/probe-opentui/src/zero-config.test.ts"
            ],
            "id": "claim.focus-authoritative"
          },
          {
            "files": [
              "packages/driver/src/session.pty.test.ts",
              "packages/driver/src/provider-evidence.test.ts"
            ],
            "id": "claim.action-strategy-authoritative"
          },
          {
            "files": [
              "packages/evidence-provider/src/index.test.ts",
              "packages/driver/src/provider-evidence.test.ts",
              "packages/probe-ink/src/provider.pty.test.ts"
            ],
            "id": "claim.scroll-authoritative"
          },
          {
            "files": [
              "packages/evidence-provider/src/index.test.ts",
              "packages/driver/src/provider-evidence.test.ts",
              "packages/probe-ink/src/provider.pty.test.ts"
            ],
            "id": "claim.painted-region-authoritative"
          }
        ],
        "input": [
          {
            "capability": "keyboard-input",
            "producerFacts": [
              "terminal.writable-pty"
            ],
            "providerAlternatives": [],
            "runtimePrerequisites": [
              "writable-pty"
            ]
          },
          {
            "capability": "pointer-input",
            "producerFacts": [
              "terminal.input-modes-observable"
            ],
            "providerAlternatives": [
              {
                "providerCapabilities": [
                  "terminal-input-modes"
                ],
                "providerType": "input-mode-evidence",
                "sdks": [
                  "/evidence-provider"
                ]
              }
            ],
            "runtimePrerequisites": [
              "terminal-input-modes-authoritative",
              "mouse-reporting-enabled"
            ]
          },
          {
            "capability": "focus-input",
            "producerFacts": [
              "terminal.input-modes-observable"
            ],
            "providerAlternatives": [
              {
                "providerCapabilities": [
                  "terminal-input-modes"
                ],
                "providerType": "input-mode-evidence",
                "sdks": [
                  "/evidence-provider"
                ]
              }
            ],
            "runtimePrerequisites": [
              "terminal-input-modes-authoritative",
              "focus-reporting-enabled"
            ]
          }
        ],
        "unsupported": [
          "render-order"
        ]
      },
      "certification": {
        "adapterVersion": "0.5.1",
        "checksumSources": [
          "packages/probe-opentui/src/certified-runtime.json"
        ],
        "ids": [
          "opentui@0.5.3/0.5.1",
          "opentui@0.5.4/0.5.1",
          "opentui@0.5.6/0.5.1",
          "opentui@0.5.7/0.5.1",
          "opentui@0.5.8/0.5.1",
          "opentui@0.5.9/0.5.1",
          "opentui@0.5.10/0.5.1"
        ],
        "strategy": "runtime-capability-and-behavior"
      },
      "documentation": "/reference/compatibility/#opentui",
      "frameworkPackage": "@opentui/core",
      "id": "opentui",
      "instrumentation": {
        "degradedCapabilities": [],
        "interventions": [
          {
            "addedUnits": [],
            "capability": "renderer-observation",
            "conformanceSuites": [
              "packages/probe-opentui/src/runtime-observer.test.ts"
            ],
            "requiredSymbols": [
              "createCliRenderer",
              "CliRenderEvents.FRAME",
              "renderer.addToHitGrid"
            ],
            "sourcePatching": false,
            "tier": "T0"
          },
          {
            "addedUnits": [],
            "capability": "native-output-evidence",
            "conformanceSuites": [
              "packages/probe-opentui/src/output-instrumentation.test.ts"
            ],
            "requiredSymbols": [
              "OpenTUI output constructor",
              "stdout.write",
              "feed.write"
            ],
            "sourcePatching": true,
            "tier": "T3"
          }
        ],
        "patchSets": [],
        "semanticClass": "A",
        "strategy": "module preload accepts an exact behaviorally certified OpenTUI version and wraps createCliRenderer; public runtime observation captures the live root/render-list/buffer/hit-grid pass without semantic source patching, while a narrow structural constructor transform preserves same-writer native output evidence",
        "t3DebtCount": 1,
        "variants": [
          {
            "frameworkVersion": "0.5.3",
            "id": "opentui-0.5.3",
            "modules": [
              {
                "name": "@opentui/core",
                "version": "0.5.3"
              }
            ]
          },
          {
            "frameworkVersion": "0.5.4",
            "id": "opentui-0.5.4",
            "modules": [
              {
                "name": "@opentui/core",
                "version": "0.5.4"
              }
            ]
          },
          {
            "frameworkVersion": "0.5.6",
            "id": "opentui-0.5.6",
            "modules": [
              {
                "name": "@opentui/core",
                "version": "0.5.6"
              }
            ]
          },
          {
            "frameworkVersion": "0.5.7",
            "id": "opentui-0.5.7",
            "modules": [
              {
                "name": "@opentui/core",
                "version": "0.5.7"
              }
            ]
          },
          {
            "frameworkVersion": "0.5.8",
            "id": "opentui-0.5.8",
            "modules": [
              {
                "name": "@opentui/core",
                "version": "0.5.8"
              }
            ]
          },
          {
            "frameworkVersion": "0.5.9",
            "id": "opentui-0.5.9",
            "modules": [
              {
                "name": "@opentui/core",
                "version": "0.5.9"
              }
            ]
          },
          {
            "frameworkVersion": "0.5.10",
            "id": "opentui-0.5.10",
            "modules": [
              {
                "name": "@opentui/core",
                "version": "0.5.10"
              }
            ]
          }
        ]
      },
      "limitations": [
        "frameworkType comes from constructor.name and may be mangled by bundling or minification.",
        "Only exact allowlisted OpenTUI package versions are attached; each new version must pass real-Bun capability and behavioral conformance before admission.",
        "renderList and split-footer renderOffset remain version-sensitive runtime shapes; missing or changed capabilities fail closed without a source-transform fallback.",
        "OpenTUI has no native role or state annotation channel; framework semantics come from types and observable state, with optional developer intent from @termwright/opentui.",
        "The renderer's native output thread must be redirected through the probe sink for marker ordering."
      ],
      "name": "OpenTUI",
      "probe": {
        "adapterCapabilities": [
          "tree",
          "intended-geometry",
          "states",
          "focus-state",
          "actions",
          "render-revisions",
          "clipped-geometry",
          "pointer-hit-grid"
        ],
        "capabilities": [
          "stable-identity",
          "intended-rect",
          "visible-rect",
          "paint-order",
          "annotations"
        ],
        "identityKind": "stable",
        "launch": "withProbe('node' | 'bun', argv) preload",
        "package": "@termwright/probe-opentui",
        "packageVersion": "0.5.1"
      },
      "runtimes": [
        {
          "name": "Bun",
          "notes": "Bun 1.2.15 was audited; the current Bun release is the CI conformance lane because OpenTUI uses bun:ffi.",
          "version": ">=1.2.15"
        },
        {
          "name": "Node.js",
          "notes": "The injection path is tested; OpenTUI applications that need bun:ffi still run under Bun.",
          "version": "^22.0.0 || ^24.0.0"
        }
      ],
      "versions": {
        "declared": "0.5.3 or 0.5.4 or 0.5.6 or 0.5.7 or 0.5.8 or 0.5.9 or 0.5.10",
        "policy": "exact",
        "verified": [
          "0.5.3",
          "0.5.4",
          "0.5.6",
          "0.5.7",
          "0.5.8",
          "0.5.9",
          "0.5.10"
        ]
      }
    },
    {
      "annotations": {
        "apis": [
          "termwright.textual.semantic",
          "termwright.textual.annotate"
        ],
        "kind": "termwright-sdk",
        "notes": "The class decorator and weak instance registry support dynamic intent, descriptive actions, relationships, extended state and stable semantic keys. Duplicate keys are a fatal duplicate-semantic-key provider violation. Physical geometry, focus, visibility and rendered text remain probe-owned.",
        "package": "termwright",
        "packageVersion": "0.5.1"
      },
      "capabilityGraph": {
        "applicationIntegrated": [
          {
            "capabilities": [
              "action-strategies"
            ],
            "providerCapabilities": [
              "action-recipes"
            ],
            "providerType": "action-strategy",
            "sdks": [
              "termwright"
            ]
          },
          {
            "capabilities": [
              "scroll"
            ],
            "providerCapabilities": [
              "scroll-state"
            ],
            "providerType": "scroll-evidence",
            "sdks": [
              "termwright"
            ]
          },
          {
            "capabilities": [
              "painted-region"
            ],
            "providerCapabilities": [
              "painted-regions"
            ],
            "providerType": "paint-evidence",
            "sdks": [
              "termwright"
            ]
          }
        ],
        "automatic": [
          "semantic-tree",
          "stable-identity",
          "intended-geometry",
          "clipped-geometry",
          "pointer-geometry",
          "pointer-hit-testing",
          "render-order",
          "paired-revisions",
          "focus"
        ],
        "claims": [
          {
            "files": [
              "clients/python/tests/test_textual_probe_hook.py",
              "clients/python/tests/test_probe_tree.py"
            ],
            "id": "claim.semantic-tree-authoritative"
          },
          {
            "files": [
              "clients/python/tests/test_textual_probe_hook.py",
              "clients/python/tests/test_probe_tree.py"
            ],
            "id": "claim.stable-identity-authoritative"
          },
          {
            "files": [
              "clients/python/tests/test_textual_probe_hook.py",
              "clients/python/tests/test_probe_tree.py"
            ],
            "id": "claim.intended-geometry-authoritative"
          },
          {
            "files": [
              "clients/python/tests/test_textual_probe_hook.py",
              "clients/python/tests/test_probe_tree.py"
            ],
            "id": "claim.clipped-geometry-authoritative"
          },
          {
            "files": [
              "clients/python/tests/test_textual_probe_hook.py",
              "clients/python/tests/test_probe_tree.py"
            ],
            "id": "claim.pointer-region-authoritative"
          },
          {
            "files": [
              "clients/python/tests/test_textual_probe_hook.py",
              "clients/python/tests/test_probe_tree.py"
            ],
            "id": "claim.pointer-hit-test-authoritative"
          },
          {
            "files": [
              "clients/python/tests/test_textual_probe_hook.py",
              "clients/python/tests/test_probe_tree.py"
            ],
            "id": "claim.render-order-authoritative"
          },
          {
            "files": [
              "clients/python/tests/test_textual_probe_hook.py",
              "clients/python/tests/test_probe_tree.py"
            ],
            "id": "claim.paired-revisions"
          },
          {
            "files": [
              "packages/conformance/src/suites/driver-generic.test.ts"
            ],
            "id": "claim.keyboard-real-pty"
          },
          {
            "files": [
              "packages/conformance/src/suites/interaction.test.ts"
            ],
            "id": "claim.pointer-real-pty"
          },
          {
            "files": [
              "packages/driver/src/session.pty.test.ts",
              "packages/probe-ink/src/provider.pty.test.ts"
            ],
            "id": "claim.focus-report-real-pty"
          },
          {
            "files": [
              "clients/python/tests/test_textual_annotations.py"
            ],
            "id": "claim.focus-authoritative"
          },
          {
            "files": [
              "packages/driver/src/session.pty.test.ts",
              "packages/driver/src/provider-evidence.test.ts"
            ],
            "id": "claim.action-strategy-authoritative"
          },
          {
            "files": [
              "clients/python/tests/test_evidence.py",
              "packages/driver/src/provider-evidence.test.ts"
            ],
            "id": "claim.scroll-authoritative"
          },
          {
            "files": [
              "clients/python/tests/test_evidence.py",
              "packages/driver/src/provider-evidence.test.ts"
            ],
            "id": "claim.painted-region-authoritative"
          }
        ],
        "input": [
          {
            "capability": "keyboard-input",
            "producerFacts": [
              "terminal.writable-pty"
            ],
            "providerAlternatives": [],
            "runtimePrerequisites": [
              "writable-pty"
            ]
          },
          {
            "capability": "pointer-input",
            "producerFacts": [
              "terminal.input-modes-observable"
            ],
            "providerAlternatives": [
              {
                "providerCapabilities": [
                  "terminal-input-modes"
                ],
                "providerType": "input-mode-evidence",
                "sdks": [
                  "/evidence-provider"
                ]
              }
            ],
            "runtimePrerequisites": [
              "terminal-input-modes-authoritative",
              "mouse-reporting-enabled"
            ]
          },
          {
            "capability": "focus-input",
            "producerFacts": [
              "terminal.input-modes-observable"
            ],
            "providerAlternatives": [
              {
                "providerCapabilities": [
                  "terminal-input-modes"
                ],
                "providerType": "input-mode-evidence",
                "sdks": [
                  "/evidence-provider"
                ]
              }
            ],
            "runtimePrerequisites": [
              "terminal-input-modes-authoritative",
              "focus-reporting-enabled"
            ]
          }
        ],
        "unsupported": []
      },
      "certification": {
        "adapterVersion": "0.5.1",
        "checksumSources": [],
        "ids": [
          "textual@runtime-capability/0.5.1"
        ],
        "strategy": "runtime-capability-and-behavior"
      },
      "documentation": "/reference/compatibility/#textual",
      "frameworkPackage": "textual",
      "id": "textual",
      "instrumentation": {
        "degradedCapabilities": [
          "inactive-screen-tree"
        ],
        "interventions": [
          {
            "addedUnits": [],
            "capability": "dom-geometry-observation",
            "conformanceSuites": [
              "clients/python/tests/test_probe_golden.py"
            ],
            "requiredSymbols": [
              "Screen.query",
              "Screen.find_widget",
              "Screen.get_widget_at",
              "App.focused"
            ],
            "sourcePatching": false,
            "tier": "T0"
          },
          {
            "addedUnits": [],
            "capability": "causal-display-lifecycle",
            "conformanceSuites": [
              "clients/python/tests/test_textual_probe_hook.py"
            ],
            "requiredSymbols": [
              "App._display",
              "Driver.write",
              "App.post_display_hook",
              "WriterThread._queue"
            ],
            "sourcePatching": false,
            "tier": "T3"
          }
        ],
        "patchSets": [],
        "semanticClass": "A",
        "strategy": "ephemeral sitecustomize on PYTHONPATH capability-checks public Textual tree APIs and installs fail-closed runtime wrappers around App._display, the concrete built-in Driver.write path and post_display_hook; frame bytes and the semantic marker are behaviorally verified to enter the same bounded WriterThread FIFO",
        "t3DebtCount": 1,
        "variants": []
      },
      "limitations": [
        "python -S and python -E bypass the sitecustomize/PYTHONPATH injection mechanism.",
        "Poetry launch is unverified; plain scripts, -m, -c, console scripts and uv run were measured.",
        "PYTHONPATH is inherited, so child processes are instrumented unless the application scrubs it.",
        "Inactive screens are absent rather than represented as hidden nodes; runtime metadata names this reduction as inactive-screen-tree.",
        "No frame-begin capability is advertised: the exact display attempt is staged internally and becomes semantic evidence only after its successful same-writer FIFO enqueue reaches post_display_hook.",
        "The private causal seam remains T3 debt: each live built-in driver and bounded WriterThread FIFO is structurally and behaviorally checked before publication; no Textual version is trusted merely by its version string.",
        "Certification proves causal WriterThread queue order rather than claiming a physical terminal flush. A full writer queue fails semantic publication immediately instead of blocking the application.",
        "A Static subclass with custom render() is named from stored content, not the final rendered segments."
      ],
      "name": "Textual",
      "probe": {
        "adapterCapabilities": [
          "tree",
          "intended-geometry",
          "clipped-geometry",
          "states",
          "focus-state",
          "actions",
          "render-revisions",
          "pointer-hit-grid"
        ],
        "capabilities": [
          "stable-identity",
          "intended-rect",
          "visible-rect",
          "annotations",
          "paint-order"
        ],
        "identityKind": "stable",
        "launch": "python -m termwright_probe -- python app.py, or termwright_probe.with_probe(argv)",
        "package": "termwright",
        "packageVersion": "0.5.1"
      },
      "runtimes": [
        {
          "name": "CPython",
          "notes": "Python 3.9 and 3.12 are CI lanes; zero-config injection was measured on CPython 3.12.",
          "version": ">=3.9"
        }
      ],
      "versions": {
        "declared": ">=8.2.8 (advisory; runtime capability detection is authoritative)",
        "policy": "capability",
        "verified": [
          "8.2.8"
        ]
      }
    },
    {
      "annotations": {
        "apis": [
          "annotate.Tag",
          "annotate.Untag",
          "annotate.Semantics",
          "annotate.SemanticKey"
        ],
        "kind": "termwright-sdk",
        "notes": "Annotations add intent, closed descriptive actions and SemanticKey relationships to stable widget objects. Relationships resolve in a bounded second pass; duplicate keys are a fatal duplicate-semantic-key provider violation and missing relationship targets remain absent. Nodes keep framework provenance with annotation/recognizer exceptions in px. The SDK has no bounds, focus, visibility, value, rendered-text or framework-state fields.",
        "package": "github.com/gorce-ai/termwright/clients/go/annotate",
        "packageVersion": "v0.5.1"
      },
      "capabilityGraph": {
        "applicationIntegrated": [
          {
            "capabilities": [
              "pointer-geometry",
              "pointer-hit-testing"
            ],
            "providerCapabilities": [
              "pointer-regions",
              "hit-test"
            ],
            "providerType": "pointer-evidence",
            "sdks": [
              "github.com/gorce-ai/termwright/clients/go/evidence"
            ]
          },
          {
            "capabilities": [
              "scroll"
            ],
            "providerCapabilities": [
              "scroll-state"
            ],
            "providerType": "scroll-evidence",
            "sdks": [
              "github.com/gorce-ai/termwright/clients/go/evidence"
            ]
          },
          {
            "capabilities": [
              "painted-region"
            ],
            "providerCapabilities": [
              "painted-regions"
            ],
            "providerType": "paint-evidence",
            "sdks": [
              "github.com/gorce-ai/termwright/clients/go/evidence"
            ]
          }
        ],
        "automatic": [
          "semantic-tree",
          "stable-identity",
          "intended-geometry",
          "paired-revisions",
          "focus",
          "action-strategies"
        ],
        "claims": [
          {
            "files": [
              "packages/probe-tview/src/zero-config.pty.test.ts"
            ],
            "id": "claim.semantic-tree-authoritative"
          },
          {
            "files": [
              "packages/probe-tview/src/zero-config.pty.test.ts"
            ],
            "id": "claim.stable-identity-authoritative"
          },
          {
            "files": [
              "packages/probe-tview/src/zero-config.pty.test.ts"
            ],
            "id": "claim.intended-geometry-authoritative"
          },
          {
            "files": [
              "packages/probe-tview/src/zero-config.pty.test.ts"
            ],
            "id": "claim.paired-revisions"
          },
          {
            "files": [
              "packages/probe-tview/src/zero-config.pty.test.ts"
            ],
            "id": "claim.pointer-region-authoritative"
          },
          {
            "files": [
              "packages/probe-tview/src/zero-config.pty.test.ts"
            ],
            "id": "claim.pointer-hit-test-authoritative"
          },
          {
            "files": [
              "packages/conformance/src/suites/driver-generic.test.ts"
            ],
            "id": "claim.keyboard-real-pty"
          },
          {
            "files": [
              "packages/probe-tview/src/zero-config.pty.test.ts"
            ],
            "id": "claim.pointer-real-pty"
          },
          {
            "files": [
              "packages/driver/src/session.pty.test.ts",
              "packages/probe-ink/src/provider.pty.test.ts"
            ],
            "id": "claim.focus-report-real-pty"
          },
          {
            "files": [
              "packages/probe-tview/src/zero-config.pty.test.ts"
            ],
            "id": "claim.focus-authoritative"
          },
          {
            "files": [
              "packages/probe-tview/src/zero-config.pty.test.ts"
            ],
            "id": "claim.action-strategy-authoritative"
          },
          {
            "files": [
              "clients/go/evidence/registry_test.go",
              "packages/driver/src/provider-evidence.test.ts"
            ],
            "id": "claim.scroll-authoritative"
          },
          {
            "files": [
              "clients/go/evidence/registry_test.go",
              "packages/driver/src/provider-evidence.test.ts"
            ],
            "id": "claim.painted-region-authoritative"
          }
        ],
        "input": [
          {
            "capability": "keyboard-input",
            "producerFacts": [
              "terminal.writable-pty"
            ],
            "providerAlternatives": [],
            "runtimePrerequisites": [
              "writable-pty"
            ]
          },
          {
            "capability": "pointer-input",
            "producerFacts": [
              "terminal.input-modes-observable"
            ],
            "providerAlternatives": [
              {
                "providerCapabilities": [
                  "terminal-input-modes"
                ],
                "providerType": "input-mode-evidence",
                "sdks": [
                  "/evidence-provider"
                ]
              }
            ],
            "runtimePrerequisites": [
              "terminal-input-modes-authoritative",
              "mouse-reporting-enabled"
            ]
          },
          {
            "capability": "focus-input",
            "producerFacts": [
              "terminal.input-modes-observable"
            ],
            "providerAlternatives": [
              {
                "providerCapabilities": [
                  "terminal-input-modes"
                ],
                "providerType": "input-mode-evidence",
                "sdks": [
                  "/evidence-provider"
                ]
              }
            ],
            "runtimePrerequisites": [
              "terminal-input-modes-authoritative",
              "focus-reporting-enabled"
            ]
          }
        ],
        "unsupported": [
          "clipped-geometry",
          "render-order"
        ]
      },
      "certification": {
        "adapterVersion": "0.5.1",
        "checksumSources": [],
        "ids": [
          "tview@compile-capability/0.5.1"
        ],
        "strategy": "compile-and-behavioral-capability"
      },
      "documentation": "/reference/compatibility/#tview",
      "frameworkPackage": "github.com/rivo/tview",
      "id": "tview",
      "instrumentation": {
        "degradedCapabilities": [
          "clipped-geometry",
          "custom-container-enumeration"
        ],
        "interventions": [
          {
            "addedUnits": [],
            "capability": "public-widget-observation",
            "conformanceSuites": [
              "packages/probe-tview/src/recognizer.test.ts",
              "scripts/certify-tview-screen-race.mjs"
            ],
            "requiredSymbols": [
              "Primitive.GetRect",
              "tcell.Screen.Show",
              "tcell.Screen.Tty"
            ],
            "sourcePatching": false,
            "tier": "T0"
          },
          {
            "addedUnits": [
              {
                "sourceDigest": "sha256:1555936b180d25de8a76b5f29631a39e06db173c49667bf10371709d8c2e5a50",
                "target": "zz_termwright_probe.go"
              }
            ],
            "capability": "private-widget-state",
            "conformanceSuites": [
              "packages/probe-tview/src/zero-config.pty.test.ts",
              "scripts/certify-go-toolexec.mjs"
            ],
            "requiredSymbols": [
              "Application.root",
              "Application.screen",
              "Application.beforeDraw",
              "Application.afterDraw",
              "Grid.items",
              "Modal.frame",
              "Modal.form",
              "DropDown.options"
            ],
            "sourcePatching": false,
            "tier": "T1"
          },
          {
            "addedUnits": [
              {
                "sourceDigest": "sha256:2ad78d0fc4401272af043b31f8b3d377f36616e2057bb981be67239eaf3880a1",
                "target": "zz_termwright_marker.go"
              }
            ],
            "capability": "same-writer-marker",
            "conformanceSuites": [
              "packages/probe-tview/src/zero-config.pty.test.ts"
            ],
            "requiredSymbols": [
              "baseScreen.screenImpl",
              "cScreen.out",
              "cScreen.fini",
              "Windows.GetConsoleMode",
              "Windows.SetConsoleMode"
            ],
            "sourcePatching": false,
            "tier": "T1"
          }
        ],
        "patchSets": [],
        "semanticClass": "A",
        "strategy": "one public Attach call composes tview's documented before/after-draw contract and final Screen.Show; the T1 tview unit installs and identity-checks those hooks under Application's lock, reads sealed state, and the Windows T1 tcell unit adds a same-handle marker method without editing upstream bytes",
        "t3DebtCount": 0,
        "variants": [
          {
            "frameworkVersion": "v0.42.0",
            "id": "tview-v0.42.0",
            "modules": [
              {
                "name": "github.com/gdamore/tcell/v2",
                "version": "v2.8.1"
              },
              {
                "name": "github.com/rivo/tview",
                "version": "v0.42.0"
              }
            ]
          },
          {
            "frameworkVersion": "v0.42.0",
            "id": "tview-v0.42.0-18aad08a864c",
            "modules": [
              {
                "name": "github.com/gdamore/tcell/v2",
                "version": "v2.13.4"
              },
              {
                "name": "github.com/rivo/tview",
                "version": "v0.42.0"
              }
            ]
          },
          {
            "frameworkVersion": "v0.42.0",
            "id": "tview-v0.42.0-1bb732a1e7e7",
            "modules": [
              {
                "name": "github.com/gdamore/tcell/v2",
                "version": "v2.9.0"
              },
              {
                "name": "github.com/rivo/tview",
                "version": "v0.42.0"
              }
            ]
          },
          {
            "frameworkVersion": "v0.42.0",
            "id": "tview-v0.42.0-2ca23f0ab404",
            "modules": [
              {
                "name": "github.com/gdamore/tcell/v2",
                "version": "v2.13.10"
              },
              {
                "name": "github.com/rivo/tview",
                "version": "v0.42.0"
              }
            ]
          },
          {
            "frameworkVersion": "v0.42.0",
            "id": "tview-v0.42.0-2e1f9f85038d",
            "modules": [
              {
                "name": "github.com/gdamore/tcell/v2",
                "version": "v2.12.0"
              },
              {
                "name": "github.com/rivo/tview",
                "version": "v0.42.0"
              }
            ]
          },
          {
            "frameworkVersion": "v0.42.0",
            "id": "tview-v0.42.0-37b57eaa9d3e",
            "modules": [
              {
                "name": "github.com/gdamore/tcell/v2",
                "version": "v2.13.8"
              },
              {
                "name": "github.com/rivo/tview",
                "version": "v0.42.0"
              }
            ]
          },
          {
            "frameworkVersion": "v0.42.0",
            "id": "tview-v0.42.0-38a8ea4ccad9",
            "modules": [
              {
                "name": "github.com/gdamore/tcell/v2",
                "version": "v2.10.0"
              },
              {
                "name": "github.com/rivo/tview",
                "version": "v0.42.0"
              }
            ]
          },
          {
            "frameworkVersion": "v0.42.0",
            "id": "tview-v0.42.0-5864606874f6",
            "modules": [
              {
                "name": "github.com/gdamore/tcell/v2",
                "version": "v2.11.0"
              },
              {
                "name": "github.com/rivo/tview",
                "version": "v0.42.0"
              }
            ]
          },
          {
            "frameworkVersion": "v0.42.0",
            "id": "tview-v0.42.0-636140b3ccdf",
            "modules": [
              {
                "name": "github.com/gdamore/tcell/v2",
                "version": "v2.12.1"
              },
              {
                "name": "github.com/rivo/tview",
                "version": "v0.42.0"
              }
            ]
          },
          {
            "frameworkVersion": "v0.42.0",
            "id": "tview-v0.42.0-6abf383bff5b",
            "modules": [
              {
                "name": "github.com/gdamore/tcell/v2",
                "version": "v2.13.3"
              },
              {
                "name": "github.com/rivo/tview",
                "version": "v0.42.0"
              }
            ]
          },
          {
            "frameworkVersion": "v0.42.0",
            "id": "tview-v0.42.0-728ee5922685",
            "modules": [
              {
                "name": "github.com/gdamore/tcell/v2",
                "version": "v2.13.2"
              },
              {
                "name": "github.com/rivo/tview",
                "version": "v0.42.0"
              }
            ]
          },
          {
            "frameworkVersion": "v0.42.0",
            "id": "tview-v0.42.0-79f0a59f1a53",
            "modules": [
              {
                "name": "github.com/gdamore/tcell/v2",
                "version": "v2.13.7"
              },
              {
                "name": "github.com/rivo/tview",
                "version": "v0.42.0"
              }
            ]
          },
          {
            "frameworkVersion": "v0.42.0",
            "id": "tview-v0.42.0-8c0a3723188a",
            "modules": [
              {
                "name": "github.com/gdamore/tcell/v2",
                "version": "v2.13.1"
              },
              {
                "name": "github.com/rivo/tview",
                "version": "v0.42.0"
              }
            ]
          },
          {
            "frameworkVersion": "v0.42.0",
            "id": "tview-v0.42.0-a47ade10a693",
            "modules": [
              {
                "name": "github.com/gdamore/tcell/v2",
                "version": "v2.13.9"
              },
              {
                "name": "github.com/rivo/tview",
                "version": "v0.42.0"
              }
            ]
          },
          {
            "frameworkVersion": "v0.42.0",
            "id": "tview-v0.42.0-a86c7107e699",
            "modules": [
              {
                "name": "github.com/gdamore/tcell/v2",
                "version": "v2.12.2"
              },
              {
                "name": "github.com/rivo/tview",
                "version": "v0.42.0"
              }
            ]
          },
          {
            "frameworkVersion": "v0.42.0",
            "id": "tview-v0.42.0-ac516fbc1a34",
            "modules": [
              {
                "name": "github.com/gdamore/tcell/v2",
                "version": "v2.13.0"
              },
              {
                "name": "github.com/rivo/tview",
                "version": "v0.42.0"
              }
            ]
          },
          {
            "frameworkVersion": "v0.42.0",
            "id": "tview-v0.42.0-dd8928ca7f9e",
            "modules": [
              {
                "name": "github.com/gdamore/tcell/v2",
                "version": "v2.13.5"
              },
              {
                "name": "github.com/rivo/tview",
                "version": "v0.42.0"
              }
            ]
          },
          {
            "frameworkVersion": "v0.42.0",
            "id": "tview-v0.42.0-f1c124300df5",
            "modules": [
              {
                "name": "github.com/gdamore/tcell/v2",
                "version": "v2.13.6"
              },
              {
                "name": "github.com/rivo/tview",
                "version": "v0.42.0"
              }
            ]
          }
        ]
      },
      "limitations": [
        "The build must be controlled by Termwright and carry the returned -toolexec argument; a prebuilt binary runs as explicitly reported raw PTY.",
        "Normal module-cache, workspace/replacement and vendored dependency layouts are supported by exact import-path compiler injection.",
        "Grid and Modal hierarchy is compiler-checked through an owned add-only tview unit; private-field drift fails the candidate build instead of silently reducing the tree.",
        "Built-in primitives expose authoritative intended bounds after Show. Children hidden behind an application-defined Primitive remain an explicit generic node and custom-container-enumeration is reported as degraded.",
        "The T1 unit composes the public before/after-draw contract by installing and identity-checking Application.beforeDraw/Application.afterDraw under tview's lock, arming only the final decorated Screen.Show. Intermediate Show calls flush normally without publishing partial semantics; hook or screen displacement, admission refusal and lifecycle divergence fail semantics closed.",
        "Unix markers use tcell's public Tty writer. Windows compiles an owned add-only tcell unit so the marker uses cScreen's console handle; a missing or changed capability fails compilation or semantics closed.",
        "tview GetRect values do not prove pointer ownership; high-level pointer actions require an application provider exposing the production router."
      ],
      "name": "tview",
      "probe": {
        "adapterCapabilities": [
          "tree",
          "intended-geometry",
          "states",
          "focus-state",
          "actions",
          "action-recipes",
          "render-revisions"
        ],
        "capabilities": [
          "stable-identity",
          "intended-rect",
          "annotations"
        ],
        "identityKind": "stable",
        "launch": "prepareInstrumentedBuild({moduleDir}) and run the controlled Go build/test command from the returned moduleDir with the returned -toolexec arguments",
        "package": "@termwright/probe-tview",
        "packageVersion": "0.5.1"
      },
      "runtimes": [
        {
          "name": "Go",
          "notes": "The shared Go module uses runtime.AddCleanup in the annotation SDK.",
          "version": ">=1.24"
        },
        {
          "name": "Node.js",
          "notes": "Required by the @termwright/probe-tview build launcher.",
          "version": "^22.0.0 || ^24.0.0"
        }
      ],
      "versions": {
        "declared": ">=v0.42.0 (advisory; compiler and conformance are authoritative)",
        "policy": "capability",
        "verified": [
          "v0.42.0"
        ]
      }
    },
    {
      "annotations": {
        "apis": [
          "Annotated",
          "Annotate",
          "Semantics",
          "Action"
        ],
        "kind": "termwright-sdk",
        "notes": "The wrapper adds role, name, description, testId, explicit domain JSON, descriptive actions, relationships and an optional stable semantic key to the exact intercepted render call. Bounds, occlusion and collection state remain probe-owned.",
        "package": "termwright-ratatui",
        "packageVersion": "0.5.1"
      },
      "capabilityGraph": {
        "applicationIntegrated": [
          {
            "capabilities": [
              "pointer-geometry",
              "pointer-hit-testing"
            ],
            "providerCapabilities": [
              "pointer-regions",
              "hit-test"
            ],
            "providerType": "pointer-evidence",
            "sdks": [
              "termwright-protocol",
              "termwright-ratatui"
            ]
          },
          {
            "capabilities": [
              "action-strategies"
            ],
            "providerCapabilities": [
              "action-recipes"
            ],
            "providerType": "action-strategy",
            "sdks": [
              "termwright-protocol"
            ]
          },
          {
            "capabilities": [
              "focus"
            ],
            "providerCapabilities": [
              "focus-state"
            ],
            "providerType": "focus-evidence",
            "sdks": [
              "termwright-protocol"
            ]
          },
          {
            "capabilities": [
              "scroll"
            ],
            "providerCapabilities": [
              "scroll-state"
            ],
            "providerType": "scroll-evidence",
            "sdks": [
              "termwright-protocol"
            ]
          },
          {
            "capabilities": [
              "painted-region"
            ],
            "providerCapabilities": [
              "painted-regions"
            ],
            "providerType": "paint-evidence",
            "sdks": [
              "termwright-protocol"
            ]
          }
        ],
        "automatic": [
          "semantic-tree",
          "intended-geometry",
          "paired-revisions"
        ],
        "claims": [
          {
            "files": [
              "clients/rust-probe/tests/patchset.rs",
              "examples/ratatui-list/tests/app.e2e.test.ts"
            ],
            "id": "claim.semantic-tree-authoritative"
          },
          {
            "files": [
              "clients/rust-probe/tests/patchset.rs",
              "examples/ratatui-list/tests/app.e2e.test.ts"
            ],
            "id": "claim.intended-geometry-authoritative"
          },
          {
            "files": [
              "clients/rust-probe/tests/patchset.rs",
              "examples/ratatui-list/tests/app.e2e.test.ts"
            ],
            "id": "claim.paired-revisions"
          },
          {
            "files": [
              "examples/ratatui-list/tests/app.e2e.test.ts"
            ],
            "id": "claim.pointer-region-authoritative"
          },
          {
            "files": [
              "examples/ratatui-list/tests/app.e2e.test.ts"
            ],
            "id": "claim.pointer-hit-test-authoritative"
          },
          {
            "files": [
              "packages/conformance/src/suites/driver-generic.test.ts"
            ],
            "id": "claim.keyboard-real-pty"
          },
          {
            "files": [
              "examples/ratatui-list/tests/app.e2e.test.ts"
            ],
            "id": "claim.pointer-real-pty"
          },
          {
            "files": [
              "packages/driver/src/session.pty.test.ts",
              "packages/probe-ink/src/provider.pty.test.ts"
            ],
            "id": "claim.focus-report-real-pty"
          },
          {
            "files": [
              "packages/driver/src/provider-evidence.test.ts"
            ],
            "id": "claim.focus-authoritative"
          },
          {
            "files": [
              "packages/driver/src/session.pty.test.ts",
              "packages/driver/src/provider-evidence.test.ts"
            ],
            "id": "claim.action-strategy-authoritative"
          },
          {
            "files": [
              "clients/rust/tests/evidence.rs",
              "packages/driver/src/provider-evidence.test.ts"
            ],
            "id": "claim.scroll-authoritative"
          },
          {
            "files": [
              "clients/rust/tests/evidence.rs",
              "packages/driver/src/provider-evidence.test.ts"
            ],
            "id": "claim.painted-region-authoritative"
          }
        ],
        "input": [
          {
            "capability": "keyboard-input",
            "producerFacts": [
              "terminal.writable-pty"
            ],
            "providerAlternatives": [],
            "runtimePrerequisites": [
              "writable-pty"
            ]
          },
          {
            "capability": "pointer-input",
            "producerFacts": [
              "terminal.input-modes-observable"
            ],
            "providerAlternatives": [
              {
                "providerCapabilities": [
                  "terminal-input-modes"
                ],
                "providerType": "input-mode-evidence",
                "sdks": [
                  "/evidence-provider"
                ]
              }
            ],
            "runtimePrerequisites": [
              "terminal-input-modes-authoritative",
              "mouse-reporting-enabled"
            ]
          },
          {
            "capability": "focus-input",
            "producerFacts": [
              "terminal.input-modes-observable"
            ],
            "providerAlternatives": [
              {
                "providerCapabilities": [
                  "terminal-input-modes"
                ],
                "providerType": "input-mode-evidence",
                "sdks": [
                  "/evidence-provider"
                ]
              }
            ],
            "runtimePrerequisites": [
              "terminal-input-modes-authoritative",
              "focus-reporting-enabled"
            ]
          }
        ],
        "unsupported": [
          "stable-identity",
          "clipped-geometry",
          "render-order"
        ]
      },
      "certification": {
        "adapterVersion": "0.5.1",
        "checksumSources": [
          "clients/rust-probe/upstream-patches/ratatui-core/0.1.2/manifest.json",
          "clients/rust-probe/upstream-patches/ratatui-crossterm/0.1.2/manifest.json",
          "clients/rust-probe/upstream-patches/ratatui-widgets/0.3.2/manifest.json"
        ],
        "ids": [
          "ratatui@0.30.2/0.5.1"
        ],
        "strategy": "checksummed-replacement"
      },
      "documentation": "/reference/compatibility/#ratatui",
      "frameworkPackage": "ratatui",
      "id": "ratatui",
      "instrumentation": {
        "degradedCapabilities": [],
        "interventions": [
          {
            "addedUnits": [],
            "capability": "render-interception",
            "conformanceSuites": [
              "clients/rust-probe/tests/patchset.rs"
            ],
            "requiredSymbols": [
              "Frame.render_widget",
              "Terminal.draw",
              "Backend.flush"
            ],
            "sourcePatching": true,
            "tier": "T3"
          },
          {
            "addedUnits": [],
            "capability": "list-state-capture",
            "conformanceSuites": [
              "clients/rust-probe/tests/patchset.rs"
            ],
            "requiredSymbols": [
              "List.items",
              "ListState.offset",
              "ListState.selected"
            ],
            "sourcePatching": true,
            "tier": "T3"
          },
          {
            "addedUnits": [],
            "capability": "same-sink-render-commit",
            "conformanceSuites": [
              "clients/rust-probe/tests/patchset.rs"
            ],
            "requiredSymbols": [
              "Backend.termwright_write_marker",
              "CrosstermBackend.writer",
              "Terminal.draw"
            ],
            "sourcePatching": true,
            "tier": "T3"
          }
        ],
        "patchSets": [
          {
            "name": "ratatui-core",
            "patchSetVersion": 6,
            "version": "0.1.2"
          },
          {
            "name": "ratatui-crossterm",
            "patchSetVersion": 1,
            "version": "0.1.2"
          },
          {
            "name": "ratatui-widgets",
            "patchSetVersion": 1,
            "version": "0.3.2"
          }
        ],
        "semanticClass": "A",
        "strategy": "Cargo redirects exact crates.io dependencies to checksummed patched copies",
        "t3DebtCount": 3,
        "variants": [
          {
            "frameworkVersion": "0.30.2",
            "id": "ratatui-0.30.2",
            "modules": [
              {
                "name": "ratatui-core",
                "version": "0.1.2"
              },
              {
                "name": "ratatui-crossterm",
                "version": "0.1.2"
              },
              {
                "name": "ratatui-widgets",
                "version": "0.3.2"
              }
            ]
          }
        ]
      },
      "limitations": [
        "Identity is frame-local by default and ordinary immediate-mode calls are flat; a unique author semantic_key stabilizes its annotated render call, and actual nested Annotated render boundaries preserve only the hierarchy proven by call nesting.",
        "Paint order is unavailable and every node has unknown occlusion without an application provider; a registered production pointer router makes pointer geometry and hit testing application-integrated.",
        "The launcher supports the exact crates.io versions above; Git, path, alternate-registry and multiple-version graphs are refused.",
        "Instrumented builds cannot use --locked and must not race another Cargo command in the same workspace while Cargo.lock is temporarily rewritten.",
        "testId is a locator and explicit correlation hint; semantic_key is the separate opt-in identity and duplicate keys are a fatal duplicate-semantic-key provider violation."
      ],
      "name": "Ratatui",
      "probe": {
        "adapterCapabilities": [
          "tree",
          "intended-geometry",
          "states",
          "actions",
          "render-revisions"
        ],
        "capabilities": [
          "intended-rect",
          "operations",
          "annotations"
        ],
        "identityKind": "frame-local",
        "launch": "prepare_instrumented_build(&PrepareOptions) and pass returned Cargo --config/env values",
        "package": "termwright-probe-ratatui",
        "packageVersion": "0.5.1"
      },
      "runtimes": [
        {
          "name": "Rust",
          "notes": "Ratatui 0.30.2 and the termwright-ratatui SDK require Rust 1.88. The transport-only protocol and probe crates remain independently CI-checked on Rust 1.74.",
          "version": ">=1.88"
        },
        {
          "name": "Cargo",
          "notes": "The launcher uses cargo metadata and per-command --config patch overrides.",
          "version": "stable"
        }
      ],
      "versions": {
        "declared": "0.30.2",
        "policy": "exact",
        "verified": [
          "0.30.2"
        ]
      }
    },
    {
      "annotations": {
        "apis": [
          "annotate.Provider.TermwrightSemantics",
          "annotate.Semantics",
          "annotate.SemanticKey"
        ],
        "kind": "termwright-sdk",
        "notes": "Value-type models declare intent, closed descriptive actions and string-key relationships through Provider. A unique SemanticKey stabilizes that annotated node across copied model values; duplicate keys are a fatal duplicate-semantic-key provider violation. Native value/state remain framework-owned, and p/px records every merge.",
        "package": "github.com/gorce-ai/termwright/clients/go/annotate",
        "packageVersion": "v0.5.1"
      },
      "capabilityGraph": {
        "applicationIntegrated": [
          {
            "capabilities": [
              "pointer-geometry",
              "pointer-hit-testing"
            ],
            "providerCapabilities": [
              "pointer-regions",
              "hit-test"
            ],
            "providerType": "pointer-evidence",
            "sdks": [
              "github.com/gorce-ai/termwright/clients/go/evidence"
            ]
          },
          {
            "capabilities": [
              "action-strategies"
            ],
            "providerCapabilities": [
              "action-recipes"
            ],
            "providerType": "action-strategy",
            "sdks": [
              "github.com/gorce-ai/termwright/clients/go/evidence"
            ]
          },
          {
            "capabilities": [
              "scroll"
            ],
            "providerCapabilities": [
              "scroll-state"
            ],
            "providerType": "scroll-evidence",
            "sdks": [
              "github.com/gorce-ai/termwright/clients/go/evidence"
            ]
          },
          {
            "capabilities": [
              "painted-region"
            ],
            "providerCapabilities": [
              "painted-regions"
            ],
            "providerType": "paint-evidence",
            "sdks": [
              "github.com/gorce-ai/termwright/clients/go/evidence"
            ]
          }
        ],
        "automatic": [
          "semantic-tree",
          "paired-revisions",
          "focus"
        ],
        "claims": [
          {
            "files": [
              "packages/probe-charm/src/zero-config.pty.test.ts",
              "examples/bubbletea-login/tests/app.e2e.test.ts"
            ],
            "id": "claim.semantic-tree-authoritative"
          },
          {
            "files": [
              "packages/probe-charm/src/zero-config.pty.test.ts",
              "examples/bubbletea-login/tests/app.e2e.test.ts"
            ],
            "id": "claim.paired-revisions"
          },
          {
            "files": [
              "examples/bubbletea-login/tests/app.e2e.test.ts"
            ],
            "id": "claim.pointer-region-authoritative"
          },
          {
            "files": [
              "examples/bubbletea-login/tests/app.e2e.test.ts"
            ],
            "id": "claim.pointer-hit-test-authoritative"
          },
          {
            "files": [
              "packages/conformance/src/suites/driver-generic.test.ts"
            ],
            "id": "claim.keyboard-real-pty"
          },
          {
            "files": [
              "examples/bubbletea-login/tests/app.e2e.test.ts"
            ],
            "id": "claim.pointer-real-pty"
          },
          {
            "files": [
              "packages/driver/src/session.pty.test.ts",
              "packages/probe-ink/src/provider.pty.test.ts"
            ],
            "id": "claim.focus-report-real-pty"
          },
          {
            "files": [
              "packages/probe-charm/src/zero-config.pty.test.ts"
            ],
            "id": "claim.focus-authoritative"
          },
          {
            "files": [
              "packages/driver/src/session.pty.test.ts",
              "packages/driver/src/provider-evidence.test.ts"
            ],
            "id": "claim.action-strategy-authoritative"
          },
          {
            "files": [
              "clients/go/evidence/registry_test.go",
              "packages/driver/src/provider-evidence.test.ts"
            ],
            "id": "claim.scroll-authoritative"
          },
          {
            "files": [
              "clients/go/evidence/registry_test.go",
              "packages/driver/src/provider-evidence.test.ts"
            ],
            "id": "claim.painted-region-authoritative"
          }
        ],
        "input": [
          {
            "capability": "keyboard-input",
            "producerFacts": [
              "terminal.writable-pty"
            ],
            "providerAlternatives": [],
            "runtimePrerequisites": [
              "writable-pty"
            ]
          },
          {
            "capability": "pointer-input",
            "producerFacts": [
              "terminal.input-modes-observable"
            ],
            "providerAlternatives": [
              {
                "providerCapabilities": [
                  "terminal-input-modes"
                ],
                "providerType": "input-mode-evidence",
                "sdks": [
                  "/evidence-provider"
                ]
              }
            ],
            "runtimePrerequisites": [
              "terminal-input-modes-authoritative",
              "mouse-reporting-enabled"
            ]
          },
          {
            "capability": "focus-input",
            "producerFacts": [
              "terminal.input-modes-observable"
            ],
            "providerAlternatives": [
              {
                "providerCapabilities": [
                  "terminal-input-modes"
                ],
                "providerType": "input-mode-evidence",
                "sdks": [
                  "/evidence-provider"
                ]
              }
            ],
            "runtimePrerequisites": [
              "terminal-input-modes-authoritative",
              "focus-reporting-enabled"
            ]
          }
        ],
        "unsupported": [
          "stable-identity",
          "intended-geometry",
          "clipped-geometry",
          "render-order"
        ]
      },
      "certification": {
        "adapterVersion": "0.5.1",
        "checksumSources": [
          "packages/probe-charm/upstream-patches/bubbles/v1.0.0/manifest.json",
          "packages/probe-charm/upstream-patches/bubbles/v2.1.1/manifest.json",
          "packages/probe-charm/upstream-patches/bubbletea/v1.3.10/manifest.json",
          "packages/probe-charm/upstream-patches/bubbletea/v2.0.8/manifest.json",
          "packages/probe-charm/upstream-patches/bubbletea/v2.0.9/manifest.json"
        ],
        "ids": [
          "charm@v1.3.10/0.5.1",
          "charm@v2.0.8/0.5.1",
          "charm@v2.0.9/0.5.1"
        ],
        "strategy": "checksummed-replacement"
      },
      "documentation": "/reference/compatibility/#charm",
      "frameworkPackage": "Bubble Tea",
      "id": "charm",
      "instrumentation": {
        "degradedCapabilities": [
          "intended-geometry",
          "clipped-geometry"
        ],
        "interventions": [
          {
            "addedUnits": [
              {
                "sourceDigest": "sha256:f87e5f58d2de43185d721baddabd11ab950efc67600bbfefd4ee3ee14d51adfe",
                "target": "v1/spinner/termwright_state.go"
              },
              {
                "sourceDigest": "sha256:890c906939f3ea5b74ce1a8dade452fcf703c4a988b79387669723c2489a4a61",
                "target": "v1/progress/termwright_state.go"
              },
              {
                "sourceDigest": "sha256:74b8b00ad11e9dff358e4baae3f940f908ef97e4d15580c62cc0c2c1dd1a999b",
                "target": "v1/filepicker/termwright_state.go"
              },
              {
                "sourceDigest": "sha256:e97d5d9b758a879fdbc47cdac0b8a8c0f5dff6352182444d06a339de4955385b",
                "target": "v1/list/termwright_state.go"
              },
              {
                "sourceDigest": "sha256:9a469ae500b0e831f4ef89c9c590e2984d41c49d4dfc0debd81e877375948af1",
                "target": "v1/table/termwright_state.go"
              },
              {
                "sourceDigest": "sha256:c754d4478a9bdbaf55502007dd8993c3beebb74c68248cae65455ef34a9a0fe6",
                "target": "v2/spinner/termwright_state.go"
              },
              {
                "sourceDigest": "sha256:3f11edc10e4b1f2355985d8819060fd54313f97a70d8b122e934ea699be226ff",
                "target": "v2/progress/termwright_state.go"
              },
              {
                "sourceDigest": "sha256:f787d6ba772ba9952b00921f94b26a71e0d980a9922b3dae7a3e3f71a63c90c2",
                "target": "v2/filepicker/termwright_state.go"
              },
              {
                "sourceDigest": "sha256:ae846d3f3a1677d86a7c06eb6e8dd2c6664fe92f626d81b835405727c3ae9ddf",
                "target": "v2/list/termwright_state.go"
              },
              {
                "sourceDigest": "sha256:a095ca2feba535cb894a45f1829a37e64ed6435a1ace0ad9b7723dd0c10722c8",
                "target": "v2/table/termwright_state.go"
              }
            ],
            "capability": "bubbles-private-state",
            "conformanceSuites": [
              "packages/probe-charm/src/patch-sets.test.ts",
              "packages/probe-charm/src/zero-config.pty.test.ts",
              "scripts/certify-go-toolexec.mjs"
            ],
            "requiredSymbols": [
              "spinner.Model.frame",
              "spinner.Model.Spinner.Frames",
              "progress.Model.percentShown",
              "progress.Model.targetPercent",
              "filepicker.Model.selected",
              "filepicker.Model.files",
              "list.Model.statusMessage",
              "table.Model.start",
              "table.Model.end",
              "table.Model.rows"
            ],
            "sourcePatching": false,
            "tier": "T1",
            "versionRange": "all versions within the exact v1/v2 module paths (advisory; compile preflight authoritative)"
          },
          {
            "addedUnits": [],
            "capability": "model-observation-and-render-flush-publication",
            "conformanceSuites": [
              "packages/probe-charm/src/patch-sets.test.ts",
              "packages/probe-charm/src/zero-config.pty.test.ts"
            ],
            "requiredSymbols": [
              "Model.View",
              "annotate.Provider.TermwrightSemantics",
              "Program.render",
              "standardRenderer.flush",
              "cursedRenderer.flush"
            ],
            "sourcePatching": true,
            "tier": "T3"
          }
        ],
        "patchSets": [
          {
            "name": "charm.land/bubbles/v2",
            "patchSetVersion": 1,
            "version": "v2.1.1"
          },
          {
            "name": "charm.land/bubbletea/v2",
            "patchSetVersion": 23,
            "version": "v2.0.8"
          },
          {
            "name": "charm.land/bubbletea/v2",
            "patchSetVersion": 23,
            "version": "v2.0.9"
          },
          {
            "name": "github.com/charmbracelet/bubbles",
            "patchSetVersion": 1,
            "version": "v1.0.0"
          },
          {
            "name": "github.com/charmbracelet/bubbletea",
            "patchSetVersion": 23,
            "version": "v1.3.10"
          }
        ],
        "semanticClass": "B",
        "strategy": "ephemeral Go workspace redirects exact Bubble Tea; a content-bound -toolexec wrapper preflight-compiles owned Bubbles accessor units against the resolved module line; model-aware hooks stage semantic state and renderer-flush hooks commit only after terminal bytes reach the same writer",
        "t3DebtCount": 1,
        "variants": [
          {
            "frameworkVersion": "v1.3.10",
            "id": "bubbletea-v1",
            "modules": [
              {
                "name": "github.com/charmbracelet/bubbletea",
                "version": "v1.3.10"
              },
              {
                "name": "github.com/charmbracelet/bubbles",
                "optional": true,
                "version": "v1.0.0"
              }
            ]
          },
          {
            "frameworkVersion": "v2.0.8",
            "id": "bubbletea-v2",
            "modules": [
              {
                "name": "charm.land/bubbletea/v2",
                "version": "v2.0.8"
              },
              {
                "name": "charm.land/bubbles/v2",
                "optional": true,
                "version": "v2.1.1"
              }
            ]
          },
          {
            "frameworkVersion": "v1.3.10",
            "id": "charm-v1.3.10-668483feddee",
            "modules": [
              {
                "name": "github.com/charmbracelet/bubbles",
                "optional": true,
                "version": "v1.0.0"
              },
              {
                "name": "github.com/charmbracelet/bubbletea",
                "version": "v1.3.10"
              }
            ]
          },
          {
            "frameworkVersion": "v2.0.8",
            "id": "charm-v2.0.8-ea91ff340ca1",
            "modules": [
              {
                "name": "charm.land/bubbles/v2",
                "optional": true,
                "version": "v2.1.1"
              },
              {
                "name": "charm.land/bubbletea/v2",
                "version": "v2.0.8"
              }
            ]
          },
          {
            "frameworkVersion": "v2.0.9",
            "id": "charm-v2.0.9-767971f08dd5",
            "modules": [
              {
                "name": "charm.land/bubbles/v2",
                "optional": true,
                "version": "v2.2.0"
              },
              {
                "name": "charm.land/bubbletea/v2",
                "version": "v2.0.9"
              }
            ]
          },
          {
            "frameworkVersion": "v2.0.9",
            "id": "charm-v2.0.9-ba5de3a6cd17",
            "modules": [
              {
                "name": "charm.land/bubbles/v2",
                "optional": true,
                "version": "v2.1.1"
              },
              {
                "name": "charm.land/bubbletea/v2",
                "version": "v2.0.9"
              }
            ]
          },
          {
            "frameworkVersion": "v2.0.9",
            "id": "charm-v2.0.9-c08df8ad01ae",
            "modules": [
              {
                "name": "charm.land/bubbles/v2",
                "optional": true,
                "version": "v2.2.1"
              },
              {
                "name": "charm.land/bubbletea/v2",
                "version": "v2.0.9"
              }
            ]
          }
        ]
      },
      "limitations": [
        "Bubble Tea produces a styled string, so automatic component geometry is unavailable; a registered production pointer router provides application-integrated pointer geometry and hit testing.",
        "Identity is frame-local by default because Update copies model values; a unique author SemanticKey stabilizes only its annotated node.",
        "Only the exact Bubble Tea versions above have frame-hook patch sets.",
        "A semantic revision is committed only after the exact renderer flush succeeds; failed or partial flushes cannot publish, while a successful no-output flush may commit a staged semantic change and marker when terminal bytes are unchanged.",
        "A detected Bubbles companion must compile the owned accessor profile for its exact module line; a missing or changed private-state capability is refused instead of silently reducing semantic breadth.",
        "Masked text input values are intentionally withheld from trees, traces and reports.",
        "A project requiring both Bubble Tea majors is refused because frames cannot be attributed safely."
      ],
      "name": "Bubble Tea / Bubbles",
      "probe": {
        "adapterCapabilities": [
          "tree",
          "states",
          "focus-state",
          "actions",
          "render-revisions"
        ],
        "capabilities": [
          "annotations"
        ],
        "identityKind": "frame-local",
        "launch": "prepareInstrumentedBuild({moduleDir}) and build from the returned moduleDir with the returned GOWORK and goArgs",
        "package": "@termwright/probe-charm",
        "packageVersion": "0.5.1"
      },
      "runtimes": [
        {
          "name": "Go",
          "notes": "The shared Go module uses runtime.AddCleanup in the annotation SDK.",
          "version": ">=1.24"
        },
        {
          "name": "Node.js",
          "notes": "Required by the @termwright/probe-charm build launcher.",
          "version": "^22.0.0 || ^24.0.0"
        }
      ],
      "versions": {
        "declared": "v1.3.10 or v2.0.8 or v2.0.9",
        "policy": "exact",
        "verified": [
          "v1.3.10",
          "v2.0.8",
          "v2.0.9"
        ]
      }
    }
  ],
  "schemaVersion": 6
}
