# description
Ohmatic v0.1 circuit schematic, single source of truth. additionalProperties at root is true to allow dataset annotations (e.g. tier3_reviewed).

# properties.metadata.description
Circuit-level metadata. `version` must be `"0.1"`; additional properties allowed.

# properties.metadata.properties.title.description
Human-readable name for this circuit, e.g. "555 Timer Astable Oscillator".

# properties.metadata.properties.description.description
Plain-English description of what this circuit does.

# properties.metadata.properties.version.description
Schema version. Must be the string literal "0.1".

# properties.metadata.properties.tags.description
Freeform tags for search and categorisation, e.g. ["timer", "oscillator"]. At least one tag required.

# properties.components.description
Ordered list of components placed on the schematic. At least one component required.

# properties.components.items.properties.id.description
Unique component identifier. Pattern: `^[A-Z][A-Za-z0-9_]*$` (e.g. R1, C_bypass, VCC1). Must start with an uppercase letter. Maximum 64 characters.

# properties.components.items.properties.type.description
Component class. Must match a key in verifier/config/component_registry.toml, the authoritative type registry. The enum below is kept in sync with the registry; the verifier enforces registry membership at runtime.

# properties.components.items.properties.value.description
Component value as a human-readable string, e.g. "10kΩ", "100nF", "555".

# properties.components.items.properties.part.description
Footprint or package identifier, e.g. "0603", "DIP-8", "SOT-23".

# properties.components.items.properties.lcsc.description
Optional LCSC C-code join key (e.g. C108793). Identity only; catalog values stay server-side.

# properties.components.items.properties.x.description
X position of the component on the schematic canvas. Number; no bounds enforced (verifier normalises to 0-300).

# properties.components.items.properties.y.description
Y position of the component on the schematic canvas. Number; no bounds enforced (verifier normalises to 0-300).

# properties.components.items.properties.pins.description
Map of pin names to internal node labels (e.g. {"1": "VCC", "base": "NODE_A"}). Values are local node identifiers cross-referenced by the `nets` array; they are not required to match net names directly. At least one entry required.

# properties.components.items.properties.pin_electrical_types.description
Optional map of existing connected pin names to declared KiCad electrical types, excluding no_connect.

# properties.nets.description
Electrical nets connecting component pins. At least one net required.

# properties.nets.items.properties.name.description
Net name, e.g. "VCC", "GND", "NODE_A". Must be unique within the circuit.

# properties.nets.items.properties.pins.description
Component-pin references in `ComponentId.pin_name` format (e.g. ["R1.1", "VCC1.1", "U1.IN+"]). At least 2 required. Pin names may contain alphanumerics, underscores, `+`, and `-` to support canonical names like `IN+`, `IN-`, `A+`, `B-`.