{
  "prelude": {
    "config": {
      "projRoot": ".",
      "reportTargets": [
        {
          "path": "public/osh-report.md",
          "outputFormat": "MdTable"
        },
        {
          "path": "public/osh-report.json",
          "outputFormat": "Json"
        }
      ],
      "force": true
    },
    "homepage": "https://github.com/hoijui/osh-tool/",
    "projVars": {
      "NAME_MACHINE_READABLE": "assembly-kit",
      "CI": "true",
      "LICENSES": "CC-BY-4.0, CC-BY-SA-4.0, CC0-1.0, Unlicense",
      "VERSION_DATE": "2026-09-21 15:34:40",
      "BUILD_DATE": "2026-09-22 10:58:40",
      "REPO_CLONE_URL_SSH": "ssh://git@github.com/FairITYourself/assembly-kit.git",
      "VERSION": "0.1.0-97-gc2ba57a",
      "REPO_VERSIONED_DIR_PREFIX_URL": "https://github.com/FairITYourself/assembly-kit/tree",
      "BUILD_HOSTING_URL": "https://fairityourself.github.io/assembly-kit",
      "BUILD_OS": "Linux",
      "REPO_COMMIT_PREFIX_URL": "https://github.com/FairITYourself/assembly-kit/commit",
      "REPO_WEB_URL": "https://github.com/FairITYourself/assembly-kit",
      "BUILD_BRANCH": "main",
      "REPO_ISSUES_URL": "https://github.com/FairITYourself/assembly-kit/issues",
      "REPO_VERSIONED_FILE_PREFIX_URL": "https://github.com/FairITYourself/assembly-kit/blob",
      "BUILD_OS_FAMILY": "unix",
      "REPO_RAW_VERSIONED_PREFIX_URL": "https://raw.githubusercontent.com/FairITYourself/assembly-kit",
      "BUILD_ARCH": "x86_64",
      "REPO_CLONE_URL": "https://github.com/FairITYourself/assembly-kit",
      "LICENSE": "CC-BY-SA-4.0",
      "REPO_CLONE_URL_HTTP": "https://github.com/FairITYourself/assembly-kit.git",
      "NAME": "assembly-kit"
    },
    "tool_versions": {
      "osh": "0.5.0-63-g5cd437a",
      "okh": "2.4.3-3-g07b7c38",
      "reuse": "version",
      "projvar": "0.20.2",
      "mlc": "0.17.0-1-g459f121",
      "mle": "0.28.0-11-g74c3bf4",
      "osh_dir_std": "0.8.4-7-ge95f9b9"
    }
  },
  "checks": [
    {
      "name": "BoM exists",
      "passed": false,
      "customPassed": null,
      "compliance": 0.0,
      "state": "Bad",
      "issues": [
        {
          "severity": "Middle",
          "msg": "No BoM file found in the root directory.\\nPlease consider adding e.g. a 'BoM.csv'."
        }
      ]
    },
    {
      "name": "LICENSE exists",
      "passed": true,
      "customPassed": null,
      "compliance": 1.0,
      "state": "Perfect",
      "issues": []
    },
    {
      "name": "Markdown content",
      "passed": true,
      "customPassed": null,
      "compliance": 0.6800000071525574,
      "state": "Ok",
      "issues": [
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:19: MD007 Unordered list indentation"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:44: MD013 Line length"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:46: MD013 Line length"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:47: MD013 Line length"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:50: MD013 Line length"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:51: MD013 Line length"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:52: MD013 Line length"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:54: MD013 Line length"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:65: MD013 Line length"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:73: MD013 Line length"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:181: MD013 Line length"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:117: MD029 Ordered list item prefix"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:123: MD029 Ordered list item prefix"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:130: MD029 Ordered list item prefix"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:136: MD029 Ordered list item prefix"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:142: MD029 Ordered list item prefix"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:148: MD029 Ordered list item prefix"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:154: MD029 Ordered list item prefix"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:161: MD029 Ordered list item prefix"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:113: MD055 Table row doesn't begin/end with pipes"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:114: MD055 Table row doesn't begin/end with pipes"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:115: MD055 Table row doesn't begin/end with pipes"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:119: MD055 Table row doesn't begin/end with pipes"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:120: MD055 Table row doesn't begin/end with pipes"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:121: MD055 Table row doesn't begin/end with pipes"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:126: MD055 Table row doesn't begin/end with pipes"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:127: MD055 Table row doesn't begin/end with pipes"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:128: MD055 Table row doesn't begin/end with pipes"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:132: MD055 Table row doesn't begin/end with pipes"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:133: MD055 Table row doesn't begin/end with pipes"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:134: MD055 Table row doesn't begin/end with pipes"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:138: MD055 Table row doesn't begin/end with pipes"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:139: MD055 Table row doesn't begin/end with pipes"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:140: MD055 Table row doesn't begin/end with pipes"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:144: MD055 Table row doesn't begin/end with pipes"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:145: MD055 Table row doesn't begin/end with pipes"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:146: MD055 Table row doesn't begin/end with pipes"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:150: MD055 Table row doesn't begin/end with pipes"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:151: MD055 Table row doesn't begin/end with pipes"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:152: MD055 Table row doesn't begin/end with pipes"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:157: MD055 Table row doesn't begin/end with pipes"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:158: MD055 Table row doesn't begin/end with pipes"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:159: MD055 Table row doesn't begin/end with pipes"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:114: MD057 Table has missing or invalid header separation (second row)"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:120: MD057 Table has missing or invalid header separation (second row)"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:127: MD057 Table has missing or invalid header separation (second row)"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:133: MD057 Table has missing or invalid header separation (second row)"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:139: MD057 Table has missing or invalid header separation (second row)"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:145: MD057 Table has missing or invalid header separation (second row)"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:151: MD057 Table has missing or invalid header separation (second row)"
        },
        {
          "severity": "Low",
          "msg": "./Bauanleitung_3_Tasten.md:158: MD057 Table has missing or invalid header separation (second row)"
        },
        {
          "severity": "Info",
          "msg": "Further documentation is available for these failures:\\n - MD007: https://github.com/markdownlint/markdownlint/blob/main/docs/RULES.md#md007---unordered-list-indentation\\n - MD013: https://github.com/markdownlint/markdownlint/blob/main/docs/RULES.md#md013---line-length\\n - MD029: https://github.com/markdownlint/markdownlint/blob/main/docs/RULES.md#md029---ordered-list-item-prefix\\n - MD055: https://github.com/markdownlint/markdownlint/blob/main/docs/RULES.md#md055---table-row-doesn-t-begin-end-with-pipes\\n - MD057: https://github.com/markdownlint/markdownlint/blob/main/docs/RULES.md#md057---table-has-missing-or-invalid-header-separation-second-row-"
        }
      ]
    },
    {
      "name": "Markup link check",
      "passed": true,
      "customPassed": null,
      "compliance": 1.0,
      "state": "Perfect",
      "issues": []
    },
    {
      "name": "No generated files",
      "passed": false,
      "customPassed": null,
      "compliance": 0.0,
      "state": "Bad",
      "issues": [
        {
          "severity": "Low",
          "msg": "Possibly generatable files found. Please consider removing them:\\n\\n- image/Seitenschneider.jpg\\n- image/Sensor-Folie.jpg\\n- image/ausbrechen-dritte-taste.jpg\\n- image/bodenplatte.jpg\\n- image/chip.jpg\\n- image/drahtbruecken.jpg\\n- image/drehgeber.jpg\\n- image/kondensator-01.jpg\\n- image/kondensator-10.jpg\\n- image/linke-maustaste.jpg\\n- image/linse.jpg\\n- image/loetstation.jpg\\n- image/mausrad.jpg\\n- image/oberschale.jpg\\n- image/overview.jpg\\n- image/pcb-10-jumpers.jpg\\n- image/pcb-11-capacitors-and-leds.jpg\\n- image/pcb-12-switch-keys.jpg\\n- image/pcb-13-electrolytic-capacitor.jpg\\n- image/pcb-14-rotary-encoder.jpg\\n- image/pcb-17-usb-cable.jpg\\n- image/pcb-18-bad-example-2.jpg\\n- image/pcb-19-processor-sensor.jpg\\n- image/pcb-6-overview.jpg\\n- image/pcb-9-bad-example.jpg\\n- image/rechte-maustaste.jpg\\n- image/schalter-mitteltaste.jpg\\n- image/schalter.jpg\\n- image/schraube-maustaste.jpg\\n- image/torx-t10.jpg\\n- image/torx-t9.jpg\\n- image/torx.jpg\\n- image/usb-1-1.jpg\\n- image/usb-1-2-1.jpg\\n- image/usb-1-2-2.jpg\\n- image/usb-1-3.jpg\\n- image/usb-1-4.jpg\\n- image/usb-2-5.jpg\\n- image/usb-2-6.jpg\\n- image/usb-2-7.jpg\\n- image/usb-2-8.jpg\\n- image/usb-kabel.jpg\\n- image/zusammenbau-1.jpg\\n- image/zusammenbau-2.jpg\\n- image/zusammenbau-3.jpg\\n- image/zusammenbau-4.jpg"
        }
      ]
    },
    {
      "name": "No global links to local files",
      "passed": false,
      "customPassed": null,
      "compliance": 0.0,
      "state": "Bad",
      "issues": [
        {
          "severity": "Middle",
          "msg": "'README.md':22:1<br>&nbsp;    'https://github.com/FairITYourself/assembly-kit/actions/workflows/check_and_build_docu.yml'<br>&nbsp;    -><br>&nbsp;    '/actions/workflows/check_and_build_docu.yml'"
        },
        {
          "severity": "Middle",
          "msg": "'README.md':22:2<br>&nbsp;    'https://github.com/FairITYourself/assembly-kit/actions/workflows/check_and_build_docu.yml/badge.svg'<br>&nbsp;    -><br>&nbsp;    '/actions/workflows/check_and_build_docu.yml/badge.svg'"
        }
      ]
    },
    {
      "name": "No sources in root",
      "passed": true,
      "customPassed": null,
      "compliance": 1.0,
      "state": "Perfect",
      "issues": []
    },
    {
      "name": "No space in file names",
      "passed": true,
      "customPassed": null,
      "compliance": 1.0,
      "state": "Perfect",
      "issues": []
    },
    {
      "name": "OKH file exists",
      "passed": true,
      "customPassed": null,
      "compliance": 1.0,
      "state": "Perfect",
      "issues": []
    },
    {
      "name": "OKH manifest content",
      "passed": true,
      "customPassed": null,
      "compliance": 1.0,
      "state": "Perfect",
      "issues": []
    },
    {
      "name": "README exists",
      "passed": true,
      "customPassed": null,
      "compliance": 1.0,
      "state": "Perfect",
      "issues": []
    },
    {
      "name": "REUSE Licensing info",
      "passed": true,
      "customPassed": null,
      "compliance": 1.0,
      "state": "Perfect",
      "issues": []
    },
    {
      "name": "No unwanted files",
      "passed": true,
      "customPassed": null,
      "compliance": 1.0,
      "state": "Perfect",
      "issues": []
    },
    {
      "name": "Uses dir standard",
      "passed": false,
      "customPassed": null,
      "compliance": 0.0,
      "state": "Bad",
      "issues": [
        {
          "severity": "Middle",
          "msg": "Compliance factor 0.10 is low; \\\\nbelow the minimum compliance margin of 0.6\\n\\nfiles not covered by the standard:\\n\\n- \"image/bleifreies-lo\\314\\210tzinn.jpg\"\\n- \"image\\n- \"image/gleitpla\\314\\210ttchen.jpg\"\\n- \"image/lde-gru\\314\\210n.jpg\"\\n- \"image/schraube-geha\\314\\210use.jpg\"\\n- Bauanleitung_3_Tasten.md\\n- REUSE.toml\\n- image/Seitenschneider.jpg\\n- image\\n- image/Sensor-Folie.jpg\\n- image/ausbrechen-dritte-taste.jpg\\n- image/bodenplatte.jpg\\n- image/chip.jpg\\n- image/drahtbruecken.jpg\\n- image/drehgeber.jpg\\n- image/kondensator-01.jpg\\n- image/kondensator-10.jpg\\n- image/linke-maustaste.jpg\\n- image/linse.jpg\\n- image/loetstation.jpg\\n- image/mausrad.jpg\\n- image/oberschale.jpg\\n- image/overview.jpg\\n- image/pcb-10-jumpers.jpg\\n- image/pcb-11-capacitors-and-leds.jpg\\n- image/pcb-12-switch-keys.jpg\\n- image/pcb-13-electrolytic-capacitor.jpg\\n- image/pcb-14-rotary-encoder.jpg\\n- image/pcb-17-usb-cable.jpg\\n- image/pcb-18-bad-example-2.jpg\\n- image/pcb-19-processor-sensor.jpg\\n- image/pcb-6-overview.jpg\\n- image/pcb-9-bad-example.jpg\\n- image/rechte-maustaste.jpg\\n- image/schalter-mitteltaste.jpg\\n- image/schalter.jpg\\n- image/schraube-maustaste.jpg\\n- image/torx-t10.jpg\\n- image/torx-t9.jpg\\n- image/torx.jpg\\n- image/usb-1-1.jpg\\n- image/usb-1-2-1.jpg\\n- image/usb-1-2-2.jpg\\n- image/usb-1-3.jpg\\n- image/usb-1-4.jpg\\n- image/usb-2-5.jpg\\n- image/usb-2-6.jpg\\n- image/usb-2-7.jpg\\n- image/usb-2-8.jpg\\n- image/usb-kabel.jpg\\n- image/zusammenbau-1.jpg\\n- image/zusammenbau-2.jpg\\n- image/zusammenbau-3.jpg\\n- image/zusammenbau-4.jpg"
        }
      ]
    },
    {
      "name": "VCS public",
      "passed": true,
      "customPassed": null,
      "compliance": 1.0,
      "state": "Perfect",
      "issues": []
    },
    {
      "name": "VCS is used",
      "passed": true,
      "customPassed": null,
      "compliance": 1.0,
      "state": "Perfect",
      "issues": []
    }
  ],
  "stats": {
    "checks": {
      "run": 16,
      "skipped": 2,
      "passed": 12,
      "failed": 4,
      "available": 18,
      "complianceSum": 11.680000007152557,
      "weightsSum": 7.999999962747097,
      "weightedComplianceSum": 5.739999957382679,
      "customCompliance": {
        "passed": 0,
        "failed": 0,
        "notConfigured": 16
      }
    },
    "issues": {
      "Info": 1,
      "High": 0,
      "Low": 54,
      "Middle": 4,
      "DeveloperFailure": 0
    },
    "ratings": {
      "compliance": {
        "name": "OSH Tool Compliance",
        "factor": 0.7175000309944153,
        "percent": "71.75",
        "color": "yellow",
        "badgeUrl": "https://img.shields.io/badge/OSH%20Tool%20Compliance-71.75%25-yellow"
      },
      "openness": {
        "name": "OSH Openness",
        "factor": 0.7374647259712219,
        "percent": "73.75",
        "color": "yellow",
        "badgeUrl": "https://img.shields.io/badge/OSH%20Openness-73.75%25-yellow"
      },
      "hardware": {
        "name": "is hardware",
        "factor": 0.5833333134651184,
        "percent": "58.33",
        "color": "yellow",
        "badgeUrl": "https://img.shields.io/badge/is%20hardware-58.33%25-yellow"
      },
      "quality": {
        "name": "OSH Documentation Quality",
        "factor": 0.6774774789810181,
        "percent": "67.75",
        "color": "yellow",
        "badgeUrl": "https://img.shields.io/badge/OSH%20Documentation%20Quality-67.75%25-yellow"
      },
      "machineReadability": {
        "name": "OSH Machine Readability",
        "factor": 0.6993127465248108,
        "percent": "69.93",
        "color": "yellow",
        "badgeUrl": "https://img.shields.io/badge/OSH%20Machine%20Readability-69.93%25-yellow"
      }
    }
  }
}
