Index of /trouble_shoot_guide//troubleshoot_html/_structured/
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- SEO-ADD:v1 -->
<title>_structured/ — Machine-Readable Diagnostic Data | Welder Repair Guide</title>
<meta name="description" content="This directory holds the structured (JSON) data sources that power the interactive Fault-Finding Wizard. The markdown corpus remains the long-form reference…">
<meta name="keywords" content="_structured/ — machine-readable diagnostic data, welder repair guide, welding machine repair, welding machine troubleshooting, welder troubleshooting, plasma cutter repair, plasma cutter troubleshooting, welding equipment diagnostics">
<meta name="robots" content="index, follow">
<meta name="author" content="Welder Repair Guide">
<link rel="canonical" href="https://kickinghorsewelders.ca/trouble_shoot_guide/troubleshoot_html/_structured/README.html">
<meta property="og:type" content="website">
<meta property="og:site_name" content="Welder Repair Guide">
<meta property="og:title" content="_structured/ — Machine-Readable Diagnostic Data | Welder Repair Guide">
<meta property="og:description" content="This directory holds the structured (JSON) data sources that power the interactive Fault-Finding Wizard. The markdown corpus remains the long-form reference…">
<meta property="og:url" content="https://kickinghorsewelders.ca/trouble_shoot_guide/troubleshoot_html/_structured/README.html">
<meta property="og:locale" content="en_US">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="_structured/ — Machine-Readable Diagnostic Data | Welder Repair Guide">
<meta name="twitter:description" content="This directory holds the structured (JSON) data sources that power the interactive Fault-Finding Wizard. The markdown corpus remains the long-form reference…">
<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"WebPage","name":"_structured/ — Machine-Readable Diagnostic Data | Welder Repair Guide","description":"This directory holds the structured (JSON) data sources that power the interactive Fault-Finding Wizard. The markdown corpus remains the long-form reference…","keywords":"_structured/ — machine-readable diagnostic data, welder repair guide, welding machine repair, welding machine troubleshooting, welder troubleshooting, plasma cutter repair, plasma cutter troubleshooting, welding equipment diagnostics","inLanguage":"en","mainEntityOfPage":{"@type":"WebPage","@id":"https://kickinghorsewelders.ca/trouble_shoot_guide/troubleshoot_html/_structured/README.html"},"publisher":{"@type":"Organization","name":"Welder Repair Guide"}},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Welder Repair Guide","item":"https://kickinghorsewelders.ca/trouble_shoot_guide/welder_repair_guide.html"},{"@type":"ListItem","position":2,"name":"_structured/ — Machine-Readable Diagnostic Data"}]}]}</script>
<!-- /SEO-ADD:v1 -->
<style>
body { font-family: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
max-width: 960px; margin: 0 auto; padding: 1.5rem; line-height: 1.6;
color: #222; background: #fff; }
h1, h2, h3, h4 { line-height: 1.25; margin-top: 1.6em; }
h1 { border-bottom: 2px solid #ddd; padding-bottom: .3em; }
h2 { border-bottom: 1px solid #eee; padding-bottom: .2em; }
table { border-collapse: collapse; width: 100%; margin: 1em 0; }
th, td { border: 1px solid #ccc; padding: .4em .6em; text-align: left; vertical-align: top; }
th { background: #f5f5f5; }
code { background: #f4f4f4; padding: .1em .3em; border-radius: 3px; font-size: .92em; }
pre { background: #f6f8fa; padding: .8em; border-radius: 6px; overflow-x: auto; }
pre code { background: none; padding: 0; }
blockquote { border-left: 4px solid #ddd; margin-left: 0; padding-left: 1em; color: #555; }
img { max-width: 100%; height: auto; }
hr { border: none; border-top: 1px solid #eee; margin: 2em 0; }
a { color: #0645ad; }
.ts-nav { font-size: .85em; color: #777; margin-bottom: 1em; }
.ts-nav a { color: #777; }
</style>
</head>
<body>
<nav class="ts-nav" aria-label="Breadcrumb"><a href="../../welder_repair_guide.html">Welder Repair Guide</a> › _structured/ — Machine-Readable Diagnostic Data</nav><h1>_structured/ — Machine-Readable Diagnostic Data</h1>
<p>This directory holds the structured (JSON) data sources that power the interactive
Fault-Finding Wizard. The markdown corpus remains the long-form reference layer;
these JSON trees <strong>link into</strong> the markdown docs, they do not replace them.</p>
<p><code>build.ps1</code> validates every file here and compiles them into <code>data/fault-trees.js</code>
(<code>window.TS_FAULT_TREES</code>). The build <strong>fails loudly</strong> on any schema violation, so a
broken tree can never ship silently.</p>
<h2>Fault-tree file</h2>
<p>One file per tree in <code>fault-trees/</code>, named <code><brandSlug>-<modelSlug>.json</code>
(e.g. <code>kickinghorse-a100.json</code>) or <code>_<family>.json</code> for generic family trees
(e.g. <code>_generic-inverter.json</code>).</p>
<pre><code class="language-json">{
"id": "kickinghorse/a100",
"title": "KickingHorse A100",
"family": "stick-inverter",
"entries": {
"dead": "dead-input",
"no-output": "ocv-check"
},
"nodes": {
"ocv-check": {
"type": "measurement",
"prompt": "Measure OCV across the output studs.",
"hint": "Machine powered, no arc attempted.",
"meter": "DCV, 200 V range",
"expect": "about mid-80 V class OCV",
"valueClass": "model",
"source": "measurement-cards/kickinghorse/a100-measurement-card.md",
"stopRule": "Output studs are live whenever the machine is on.",
"branches": [
{ "label": "In range", "next": "external-path" },
{ "label": "Zero or very low", "next": "igbt-branch" }
]
},
"igbt-branch": {
"type": "terminal",
"cause": "Output or IGBT branch",
"action": "Follow the board-opening-map output/IGBT branch.",
"stopRule": "Discharge bus caps before touching the primary side.",
"docs": ["board-opening-maps/kickinghorse/a100-board-opening-map.md"]
}
}
}
</code></pre>
<h3>Top-level fields</h3>
<table>
<thead>
<tr>
<th>Field</th>
<th>Required</th>
<th>Meaning</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>id</code></td>
<td>yes</td>
<td><code><brandSlug>/<modelSlug></code> (must match the catalog) or <code>generic/<family></code></td>
</tr>
<tr>
<td><code>title</code></td>
<td>yes</td>
<td>Display name shown in the wizard header</td>
</tr>
<tr>
<td><code>family</code></td>
<td>yes</td>
<td>Free-form family tag (<code>stick-inverter</code>, <code>mig</code>, <code>tig-hf</code>, <code>plasma</code>, <code>engine-driven</code>)</td>
</tr>
<tr>
<td><code>entries</code></td>
<td>yes</td>
<td>Map of symptom slug → starting node id. Every value must exist in <code>nodes</code>. Canonical symptom slugs: <code>dead</code>, <code>no-output</code>, <code>weak-output</code>, <code>thermal</code>, <code>wire-feed</code>, <code>hf-start</code>. A tree may define any subset, plus model-specific extras (e.g. <code>blinking-light</code>).</td>
</tr>
<tr>
<td><code>nodes</code></td>
<td>yes</td>
<td>Map of node id → node object. Node ids are kebab-case, unique within the file.</td>
</tr>
</tbody>
</table>
<h3>Node types</h3>
<p><strong><code>question</code></strong> — a yes/no or multi-choice observation. Requires: <code>prompt</code>, <code>branches</code> (≥2). Optional: <code>hint</code>, <code>stopRule</code>.</p>
<p><strong><code>measurement</code></strong> — a physical measurement with a pass/fail verdict. Requires: <code>prompt</code>, <code>meter</code>, <code>expect</code>, <code>branches</code> (≥2). Optional: <code>hint</code>, <code>valueClass</code>, <code>source</code>, <code>stopRule</code>.</p>
<p><strong><code>terminal</code></strong> — a conclusion. Requires: <code>cause</code>, <code>action</code>. Optional: <code>stopRule</code>, <code>docs</code> (array of corpus-relative <code>.md</code> paths, rendered as chips), <code>branches</code> <strong>not allowed</strong>.</p>
<h3>Field rules</h3>
<ul>
<li><code>branches[]</code>: each item needs <code>label</code> (button text, keep ≤ 5 words) and <code>next</code> (must resolve to a node in the same file). Converging branches (multiple parents → same node) are encouraged — trees are graphs, not strict trees.</li>
<li><code>valueClass</code>: <code>"model"</code> = value quoted from the model's own corpus docs (measurement card, guide). <code>"universal"</code> = industry-standard value not in the corpus (e.g. "fan supply 12/24 V DC", "IGBT gate–emitter 10–47 kΩ"). The UI badges universal values differently. <strong>Never invent model-specific values</strong> — if the corpus does not state a number, use a universal value or describe the healthy behavior in words.</li>
<li><code>meter</code>: meter setting in plain words (<code>"DCV, 200 V range"</code>, <code>"diode mode"</code>, <code>"ACV, 250 V range"</code>). The corpus does not specify meter settings; standard-practice settings are understood to be universal-class additions.</li>
<li><code>source</code>: corpus-relative path of the doc the node's value/expectation came from. Strongly encouraged on every measurement node.</li>
<li><code>stopRule</code>: safety or "stop and go external" rule shown as a banner on that node. Pull these from the router/measurement-card Stop Rules sections.</li>
<li>Every terminal <code>action</code> should end the path in <strong>≤ 5 decisions from any entry</strong> — author to that budget.</li>
</ul>
<h3>Validation (build.ps1 enforces)</h3>
<ol>
<li>File parses as JSON.</li>
<li><code>id</code>, <code>title</code>, <code>family</code>, <code>entries</code>, <code>nodes</code> present.</li>
<li>Every <code>entries</code> value and every <code>branches[].next</code> resolves to an existing node.</li>
<li>Node <code>type</code> is <code>question</code> | <code>measurement</code> | <code>terminal</code>; required fields per type present.</li>
<li><code>terminal</code> nodes have no <code>branches</code>; non-terminal nodes have ≥ 2 branches.</li>
<li>Every node is reachable from at least one entry (no orphan nodes).</li>
</ol>
<h2>Authoring workflow</h2>
<ol>
<li>Read the model's fault-workflow router (complaint order + stop rules) and
measurement card (checkpoints + healthy expectations). The guide's fast-triage
table is the fallback when a router is missing.</li>
<li>Map each router complaint to an <code>entries</code> slug.</li>
<li>Build nodes from measurement-card checkpoints, in the router's order.</li>
<li>Terminals link the docs the router names for that complaint (<code>docs</code> array).</li>
<li>Re-run <code>build.ps1</code> — it will reject the file with a specific error if anything
dangles.</li>
</ol>
</body>
</html>
Proudly Served by LiteSpeed Web Server at kickinghorsewelders.ca Port 443