Release consumers need a parseable date-version object, not only a raw string.
Represent package version parts and expose the release date used by CI and downstream package checks.
Tests must confirm pyproject metadata, package metadata, and parsed date fields match the release contract.
The model is public when a consumer can determine the exact release date from the installed package.
Library symbols can have unit and body-style partitions that need independent rendering and traversal.
Carry one symbol-unit graphics group and preserve the shapes, pins, and text that compose it.
Tests must prove subsymbol content emits IR records in KiCad-compatible order.
The model is public when symbol libraries can expose unit-level geometry without raw S-expression traversal.
Symbol cleanup depends on stable named and numeric property handling.
Represent one library-symbol property with identity, value, display, and placement data.
Tests must cover standard keys, custom property IDs, get/set helpers, and removal.
The model is public when callers can update symbol properties without editing raw token lists.
Pin geometry and electrical metadata are central to symbol rendering and netlist interpretation.
Represent a library-symbol pin with geometry, text visibility, electrical type, and graphics style.
Tests must cover pin shaft geometry, inverted pins, number/name placement, and visibility rules.
The model is public when symbol and schematic tooling can reason about pin identity and rendering.
Symbol body outlines commonly use rectangles and need deterministic conversion to plotter IR.
Represent a symbol rectangle with stroke, fill, and endpoint coordinates.
Tests must cover rectangle-to-IR conversion and fill/stroke mapping.
The model is public when symbol renderers can consume rectangle geometry without parser internals.
Circular symbol geometry must round-trip and render through the same IR path as other primitives.
Represent a symbol circle with center, radius, stroke, and fill semantics.
Tests must cover radius-to-diameter conversion and fill handling.
The model is public when callers can inspect and render circle primitives directly.
Arc geometry needs explicit start, midpoint, and end semantics for KiCad-style plotting.
Represent a symbol arc and preserve enough geometry for plotter-IR conversion.
Tests must verify three-point arc emission and stroke mapping.
The model is public when symbol arcs can render without direct S-expression access.
Symbol outlines and decorative geometry often depend on ordered point lists.
Represent a symbol polyline with points, stroke, and fill semantics.
Tests must confirm point order and plot-poly conversion remain stable.
The model is public when callers can preserve and render polyline point geometry.
Bezier curves are less common but must remain first-class for symbol visual parity.
Represent a symbol Bezier curve and feed cubic control points to plotter IR.
Tests must cover cubic conversion and fallback behavior for short point lists.
The model is public when callers can preserve curved symbol geometry through conversion.
Symbol text participates in graphics output and may include variables and visibility rules.
Represent text graphics inside a library symbol with effects, position, and visibility.
Tests must cover default effects, variable expansion, hidden text, and IR text alignment.
The model is public when rendering and cleanup tools can inspect text graphics directly.
KiCad symbol files can carry text-box graphics that must stay visible to downstream renderers.
Represent a symbol text box with text, placement, stroke, fill, and text effects.
Tests must at minimum keep the class in the promoted API contract until focused behavior tests land.
The model is public when symbol tooling can preserve the text-box payload through load and write paths.
Public code needs stable symbolic names for KiCad's standard symbol properties.
Define the canonical property keys used by symbol helpers and cleanup tools.
Tests must cover standard property lookup through public mutation helpers.
The enum is public when callers can avoid hard-coded string variants for common symbol properties.
Hierarchical-sheet metadata needs the same named-key ergonomics as symbol properties.
Define the canonical keys for sheet name and sheet file properties.
Tests must cover sheet property mutation and sheet-file access through public helpers.
The enum is public when sheet tools can avoid raw KiCad property strings for standard fields.
KiCad property IDs have stable numeric meaning that should be named in public code.
Expose standard property ID values and the user-property start offset.
Tests must verify the enum remains integer-compatible and preserves expected values.
The enum is public when property creation can choose deterministic KiCad IDs.
Pin electrical classifications are stable schema data for symbol and netlist consumers.
Expose KiCad pin electrical types as a public enum.
Tests must keep the enum in the promoted API contract and add behavior checks when netlist rules depend on it.
The enum is public when callers can classify pins without raw strings.
Pin shapes affect symbol drawing and must remain explicit for renderers.
Expose KiCad pin graphics styles as a public enum.
Tests must cover graphical style effects such as inverted-pin bubble geometry.
The enum is public when symbol renderers can branch on pin style without raw strings.
Hierarchical and global labels use shape data to select decoration geometry.
Expose KiCad label shape values for schematic model and rendering code.
Tests must cover decoration geometry selected from label shape and orientation.
The enum is public when schematic tools can interpret label IO direction without raw strings.
Pads are central to PCB geometry, connectivity, fabrication output, and assembly projection.
Represent one KiCad footprint pad with geometry, layers, drill, custom primitives, and metadata.
Tests must cover common pad shapes, NPTH behavior, drills, and custom primitives.
The model is public when callers can inspect and convert pad geometry without raw board tokens.
Footprint text drives reference/value rendering and silkscreen automation.
Represent footprint text with type, string, layer, effects, visibility, and placement.
Tests must cover basic IR conversion, hidden text, empty text, and effects mapping.
The model is public when footprint tooling can edit and render text safely.
Footprint line primitives are a common carrier for fab, silkscreen, and courtyard outlines.
Represent one footprint line with layer and stroke attributes.
Tests must confirm line conversion preserves coordinates, layer, and width.
The model is public when outline cleanup can manipulate footprint lines directly.
Footprint text boxes need explicit borders, wrapping, and variable expansion for rendering parity.
Represent footprint-local text boxes with geometry, layer, effects, stroke, and fill.
Tests must cover parsing border flags and emitting both border and expanded text ops.
The model is public when renderers can preserve text-box geometry through footprint conversion.
Board graphics lines carry outlines, documentation geometry, and mechanical annotations.
Represent board-level line graphics with layer and stroke data.
Tests must verify coordinate handling and record-level layer metadata.
The model is public when board graphics can be converted without S-expression access.
Board text participates in fabrication drawings, labels, and render-cache generation.
Represent board text with layer, effects, placement, variables, and optional render cache.
Tests must cover text conversion, empty/hidden behavior, variables, and render-cache attachment.
The model is public when board text can be edited and rendered through typed APIs.
Board text boxes combine framed geometry, text layout, and render-cache behavior.
Represent board-level text boxes with text, geometry, stroke, fill, layer, and effects.
Tests must cover border/text IR emission, default alignment, and knockout cache synthesis.
The model is public when board text-box rendering can be validated independently.
Board net records are needed by connectivity, highlighting, and downstream design views.
Represent a KiCad PCB net code and name as a typed public model.
Tests must keep the model in the promoted API contract and add behavior checks as board-net APIs grow.
The model is public when downstream tools can pass net identity without raw board records.
Layer identity and ordering are shared by parsing, rendering, and fabrication workflows.
Represent one board layer with KiCad ordinal, canonical name, type, and user name.
Tests must keep the model in the promoted API contract and add behavior checks for layer mutation APIs.
The model is public when callers can reason about board layers without raw tuple structures.
Project sidecar files may become part of downstream cruncher workflow state.
Represent known project-adjacent paths in a typed way without making them mandatory.
Tests must keep the model in the promoted API contract until sidecar behavior is expanded.
The model is public when project discovery can expose optional adjacent files predictably.
Variant-aware design views need stable names and descriptions from project metadata.
Represent one KiCad project variant in a small typed model.
Tests must cover variant lookup, iteration, and equality through project helpers.
The model is public when downstream tools can select variants without raw JSON traversal.
The plotter IR document is the common exchange object between KiCad models and SVG renderers.
Contain plotter records, bounds, source metadata, and JSON serialization for a rendered document.
Tests must cover dict/file round-trip, normalization, schema checks, and source-path handling.
The model is public when downstream code can store and replay KiCad drawing operations.
Renderers and design views need per-object grouping around plotter operations.
Represent one logical plotted object with operation list, object metadata, layers, and bounds.
Tests must cover record round-trip and preservation of operations and bounds.
The model is public when object-level SVG groups can be built from IR records.
Individual plotter operations are the stable primitive contract for renderers.
Represent one drawing operation with kind, payload, optional index, and convenience constructors.
Tests must cover constructors, enum coercion, dict round-trip, and invalid payload checks.
The model is public when all renderer inputs can be expressed as typed plotter operations.
Operation kinds define the durable drawing vocabulary used by the IR.
Enumerate supported plotter operation kinds with names aligned to KiCad drawing behavior.
Tests must keep the enum synchronized with the expected plotter virtual operation set.
The enum is public when renderer code can dispatch without stringly-typed conditionals.
Fill semantics cross symbol, schematic, footprint, PCB, and SVG rendering boundaries.
Represent KiCad fill modes in the plotter IR.
Tests must cover string and enum coercion plus conversion from source-model fill types.
The enum is public when IR producers and renderers agree on fill behavior.
Dashed and solid stroke semantics must survive conversion into SVG.
Represent supported KiCad line styles in the plotter IR.
Tests must cover dash operation payloads and renderer-visible style values.
The enum is public when style-aware renderers can consume line style values directly.
Horizontal text alignment affects symbol, schematic, board, and IR SVG placement.
Represent horizontal text alignment values in the plotter IR.
Tests must cover text operation payloads carrying horizontal alignment.
The enum is public when renderers can align text without source-specific enums.
Vertical text alignment is needed for KiCad-compatible symbol and board text placement.
Represent vertical text alignment values in the plotter IR.
Tests must cover text operation payloads carrying vertical alignment.
The enum is public when renderers can align text without source-specific enums.
Pen movement records preserve the original plotter stream semantics.
Represent pen up/down action values for low-level plotter operations.
Tests must cover string and enum round-trip through pen operations.
The enum is public when low-level plotter traces can be replayed without raw action strings.
Applications need KiCad installation and configuration discovery without relying on legacy prefixed utility functions.
Provide one object that owns KiCad executable discovery, beta-version selection, and user configuration path lookup.
Tests must cover deterministic installation ranking, beta filtering, and versioned configuration directory discovery.
The class is public when downstream tools can find the active KiCad CLI and config roots through object methods.
File-level cleanup is KiCad-format behavior and should be grouped behind an object API instead of package-level prefixed functions.
Expose deterministic footprint, symbol, schematic, and PCB cleanup operations for applications that decide when to run them.
Tests must keep the pipeline methods available and the L2 filter suite must exercise file-to-file behavior.
The class is public when callers can run all supported file filters without importing individual implementation functions.
Library tools need fast symbol and footprint name discovery without parsing entire KiCad models or importing legacy prefixed helpers.
Provide one object for extracting names from KiCad library files, building directory indexes, and finding matching assets.
Tests must cover quoted, unquoted, fallback, real-corpus, and recursive index-building cases for symbols and footprints.
The class is public when downstream library indexes can discover KiCad symbol and footprint names through object methods.