{
  "component": "#029 NumberBox",
  "packageVersion": "1.0.20",
  "runtimeVersion": "1.0.19 (unchanged bytes from v1.0.19)",
  "status": "Development / Candidate; NOT Completed",
  "date": "2026-10-11",
  "originalUserFailure": "PowerShell 5.1 StrictMode: property tocId was missing; 1.0.19 install.ps1 line 208 catch emitted error, source was dynamic member access in registry merge",
  "rootCauses": [
    "v1.0.19 accessed dynamic property for every registry row, even when existing rows used id instead of tocId; StrictMode raises PropertyNotFoundException",
    "v1.0.19 patches used docs/items where formal #040 DOC registry used documents/toc, leaving DOC-0029 possibly invisible to the shared loader",
    "v1.0.19 copied package files before registry merge failed and had no rollback, so a failed installation could leave partial changes"
  ],
  "changes": [
    "Static PSObject.Properties lookup and dual identity names (id/docId, tocId/id), missing optional fields do not throw",
    "Official documents/toc registry patch shape, preserves old docs/entries/items schemas and unrelated entries",
    "Handles partial v1.0.19 by normalizing DOC-0029/TOC-0029 from secondary arrays without removing unrelated records",
    "Both Registry merges preflight before any installed file writes; backup plus rollback for component and shared registry files and cumulative test link",
    "Package header and installer to v1.0.20, Runtime JS is byte-identical to v1.0.19",
    "Bundled 20-case static registry contract-fixture test including missing tocId and partial v1.0.19 state"
  ],
  "executed": {
    "nodeSuites": {
      "Node_NumberBox_02212": {
        "passed": 110,
        "total": 110,
        "failed": 0
      },
      "Functional_Class_02212": {
        "passed": 12,
        "total": 12,
        "failed": 0
      },
      "DOC_Integration": {
        "passed": 46,
        "total": 46,
        "failed": 0
      },
      "Property_Bridge": {
        "passed": 16,
        "total": 16,
        "failed": 0
      },
      "Installer_Registry_Static_Model": {
        "passed": 20,
        "total": 20,
        "failed": 0
      },
      "Node_NumberBox_02210": {
        "passed": 110,
        "total": 110,
        "failed": 0
      },
      "Functional_Class_02210": {
        "passed": 12,
        "total": 12,
        "failed": 0
      }
    },
    "javascriptSyntaxFiles": 11,
    "htmlUniqueIds": 163,
    "chromiumDOM": {
      "method": "Chromium via Playwright set_content with real shared JS/CSS injected; NOT HTTP installed environment",
      "mainSmoke": "ALL PASS",
      "mainValidation": "ALL PASS",
      "029IntegratedRegression": {
        "pass": 18,
        "fail": 0
      },
      "040Caller": 6,
      "118OPEN_CLOSE": "PASS #040 OPEN/CLOSE -> #118 slide",
      "browserErrors": []
    },
    "manifestSha256": "PASS",
    "zipCrc": "PASS",
    "zipReextract": "PASS",
    "staticRegistryContract": {
      "pass": 20,
      "fail": 0,
      "notice": "Fixture-driven JSON/PowerShell source checks; does not execute PowerShell"
    }
  },
  "notExecuted": {
    "windowsPowershell51": "NOT EXECUTED (not installed in analysis environment)",
    "userWindowsInstaller": "NOT EXECUTED; user report required",
    "actualTargetRegistry": "NOT AVAILABLE: user local JSON files not attached",
    "localhostInstalledHttp": "NOT EXECUTED",
    "globalCumulativeRunnerAfterInstallation": "NOT EXECUTED"
  },
  "filesNotModified": [
    "#001 Realtime Preview",
    "#017 Text",
    "#027 TextBox",
    "#028 TextArea",
    "#040 ColorPicker",
    "#118 Transition",
    "#022 Effect",
    "#020 Label",
    "existing test/bone-development-order.html"
  ],
  "userVerificationURL": "http://localhost/boneflow/test/bone-numberbox.html",
  "releaseDecision": "Candidate pending user Windows PowerShell Installer and localhost integration checks"
}
