prechips 0.2.0__tar.gz → 0.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. prechips-0.3.0/PKG-INFO +126 -0
  2. prechips-0.3.0/README.md +106 -0
  3. {prechips-0.2.0 → prechips-0.3.0}/pyproject.toml +1 -1
  4. {prechips-0.2.0 → prechips-0.3.0}/pyproject.toml.orig +1 -1
  5. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/__init__.py +1 -1
  6. prechips-0.3.0/src/prechips/_sheet_pagination.py +2110 -0
  7. prechips-0.3.0/src/prechips/axis_placements.py +324 -0
  8. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/cli.py +36 -11
  9. prechips-0.3.0/src/prechips/findings.py +249 -0
  10. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/inputs.py +387 -14
  11. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/joint_features.py +288 -26
  12. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/kernel/__init__.py +1414 -178
  13. prechips-0.3.0/src/prechips/kernel/cache_recipe.py +22 -0
  14. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/kernel/freecad_job.py +4487 -472
  15. prechips-0.3.0/src/prechips/kernel/inspection_preservation.py +652 -0
  16. prechips-0.3.0/src/prechips/kernel/mounted_saw.py +701 -0
  17. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/kernel/render_diagram.py +539 -131
  18. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/kernel/render_inputs.py +248 -5
  19. prechips-0.3.0/src/prechips/kernel/saw_engagement.py +306 -0
  20. prechips-0.3.0/src/prechips/kernel/saw_face_credit.py +226 -0
  21. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/kernel/step_faces.py +56 -4
  22. prechips-0.3.0/src/prechips/kernel/thread_material.py +598 -0
  23. prechips-0.3.0/src/prechips/kernel/zero_pickup.py +663 -0
  24. prechips-0.3.0/src/prechips/material_routes.py +644 -0
  25. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/measurements.py +87 -2
  26. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/model.py +769 -104
  27. prechips-0.3.0/src/prechips/native_diagnostics.py +84 -0
  28. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/process_features.py +34 -7
  29. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/report.py +102 -2
  30. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/__init__.py +19 -6
  31. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/_bench.py +58 -8
  32. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/_cutting_force.py +15 -1
  33. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/_envelope.py +179 -17
  34. prechips-0.3.0/src/prechips/rules/_support_stack.py +132 -0
  35. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/accessibility.py +12 -4
  36. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/blank_credit.py +75 -7
  37. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/centre_support.py +79 -20
  38. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/consistency.py +33 -20
  39. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/coordinates.py +546 -79
  40. prechips-0.3.0/src/prechips/rules/coverage.py +958 -0
  41. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/datum_consistency.py +116 -14
  42. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/envelope.py +118 -14
  43. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/finish_coverage.py +7 -6
  44. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/finish_route.py +43 -13
  45. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/fixture_interference.py +6 -0
  46. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/geometry_common.py +666 -59
  47. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/guided_sweep.py +78 -22
  48. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/headroom.py +150 -167
  49. prechips-0.3.0/src/prechips/rules/hold_fields.py +658 -0
  50. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/inspection.py +664 -27
  51. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/internal_corner_radius.py +14 -1
  52. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/joints.py +56 -1
  53. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/level_entry.py +52 -21
  54. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/manual_arc.py +63 -20
  55. prechips-0.3.0/src/prechips/rules/op_chain.py +600 -0
  56. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/op_order.py +71 -32
  57. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/prepared_blank.py +65 -17
  58. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/reach.py +116 -2
  59. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/resolution.py +711 -52
  60. prechips-0.3.0/src/prechips/rules/saw_cut.py +440 -0
  61. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/speeds_feeds.py +88 -10
  62. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/stock_diameter.py +17 -1
  63. prechips-0.3.0/src/prechips/rules/swivel.py +325 -0
  64. prechips-0.3.0/src/prechips/rules/thin_wall_under_clamp.py +168 -0
  65. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/tip_endpoints.py +197 -58
  66. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/tool_resolves.py +207 -5
  67. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/tooling_hole.py +33 -8
  68. prechips-0.3.0/src/prechips/rules/trammel.py +1095 -0
  69. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/travel.py +215 -16
  70. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/turned_profile.py +11 -1
  71. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/turning_deflection.py +3 -2
  72. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/vise.py +6 -0
  73. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/zero_recipe/faces.py +46 -8
  74. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/zero_recipe/native.py +494 -45
  75. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/zero_recipe/rule.py +366 -17
  76. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/zero_recipe/tool_setting.py +342 -15
  77. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/zero_recipe/touch.py +76 -20
  78. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/sheet.py +7565 -2741
  79. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/sheet_sweep.py +210 -0
  80. prechips-0.3.0/src/prechips/thread_specs.py +124 -0
  81. prechips-0.2.0/PKG-INFO +0 -1034
  82. prechips-0.2.0/README.md +0 -1014
  83. prechips-0.2.0/src/prechips/findings.py +0 -111
  84. prechips-0.2.0/src/prechips/rules/coverage.py +0 -299
  85. prechips-0.2.0/src/prechips/rules/hold_fields.py +0 -332
  86. prechips-0.2.0/src/prechips/rules/op_chain.py +0 -170
  87. prechips-0.2.0/src/prechips/rules/saw_cut.py +0 -166
  88. prechips-0.2.0/src/prechips/rules/thin_wall_under_clamp.py +0 -83
  89. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/clamp_labels.py +0 -0
  90. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/kernel/boolean_pool.py +0 -0
  91. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/kernel/chain_boundary.py +0 -0
  92. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/kernel/render_png.py +0 -0
  93. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/_profile.py +0 -0
  94. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/construction.py +0 -0
  95. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/engagement.py +0 -0
  96. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/indexing.py +0 -0
  97. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/keep_piece.py +0 -0
  98. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/parting_face.py +0 -0
  99. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/purchased_tooling.py +0 -0
  100. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/sizing.py +0 -0
  101. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/stickout.py +0 -0
  102. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/rules/zero_recipe/__init__.py +0 -0
  103. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/telemetry.py +0 -0
  104. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/tokens.css +0 -0
  105. {prechips-0.2.0 → prechips-0.3.0}/src/prechips/trig.py +0 -0
@@ -0,0 +1,126 @@
1
+ Metadata-Version: 2.4
2
+ Name: prechips
3
+ Version: 0.3.0
4
+ Summary: Checks before chips: deterministic validation of machining process plans against part geometry and a shop inventory.
5
+ Author: Pedro Paulo Vezza Campos
6
+ Author-email: Pedro Paulo Vezza Campos <pedro@vezza.com.br>
7
+ License-Expression: MIT
8
+ Classifier: Development Status :: 3 - Alpha
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Topic :: Scientific/Engineering
11
+ Requires-Dist: opentelemetry-api>=1.39.1
12
+ Requires-Dist: opentelemetry-exporter-otlp-proto-grpc>=1.39.1
13
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.39.1
14
+ Requires-Dist: opentelemetry-sdk>=1.39.1
15
+ Requires-Dist: pydantic>=2.9,<3
16
+ Requires-Dist: rich>=15.0.0
17
+ Requires-Python: >=3.12
18
+ Project-URL: Homepage, https://github.com/pedropaulovc/prechips
19
+ Description-Content-Type: text/markdown
20
+
21
+ > [!WARNING]
22
+ > This repo is in a very AI slop state and is not ready for consumption.
23
+
24
+ # prechips
25
+
26
+ prechips checks an authored manual-machining plan against a feature manifest, shop inventory, policy and cutting data. It writes a findings report and printable setup sheets with workholding, DRO-zero instructions, operations and inspection records.
27
+
28
+ Geometry checks use a local FreeCAD kernel. The checker does not generate toolpaths or certify a physical setup, finished part or machining process.
29
+
30
+ Start with the [quickstart](https://github.com/pedropaulovc/prechips/blob/main/docs/manual/quickstart.md), or use the [documentation index](https://github.com/pedropaulovc/prechips/blob/main/docs/README.md) to find a task or reference.
31
+
32
+ ## Install and check
33
+
34
+ You need Python 3.12 or newer and [uv](https://docs.astral.sh/uv/). From a source checkout:
35
+
36
+ ```sh
37
+ uv sync --locked
38
+ uv run prechips --help
39
+ ```
40
+
41
+ The [quickstart](https://github.com/pedropaulovc/prechips/blob/main/docs/manual/quickstart.md) covers FreeCAD discovery and your first result. The [development guide](https://github.com/pedropaulovc/prechips/blob/main/docs/internals/development.md) covers tests, native fixtures, package validation and contributor review.
42
+
43
+ ## Run the examples
44
+
45
+ From the repository root:
46
+
47
+ ```sh
48
+ uv run prechips traveler examples/pivot-shaft/plan.toml --out out/pivot-shaft
49
+ uv run prechips traveler examples/rocker-arm/plan.toml --out out/rocker-arm
50
+ uv run prechips traveler examples/pivot-bracket/plan.toml --out out/pivot-bracket
51
+ uv run prechips traveler examples/cone-pivot-post/built-up.toml --out out/cone-pivot-post
52
+ uv run prechips traveler examples/blondihacks-t-nuts/plan.toml --out out/blondihacks-t-nuts
53
+ uv run prechips traveler examples/blondihacks-brass-ring/plan.toml --out out/blondihacks-brass-ring
54
+ uv run prechips traveler examples/blondihacks-magic-tube/plan.toml --out out/blondihacks-magic-tube
55
+ ```
56
+
57
+ Read the [worked tutorial](https://github.com/pedropaulovc/prechips/blob/main/docs/manual/tutorial.md) for the input-to-sheet workflow and the [input/output demonstration](https://github.com/pedropaulovc/prechips/blob/main/docs/manual/demo.md) for actual excerpts. The [example guide](https://github.com/pedropaulovc/prechips/blob/main/examples/README.md) owns each bundle's provenance, demonstration-value disclosures and expected exit. Outputs can still be written when the checker exits 2 or 4.
58
+
59
+ Example values exercise the rules; they are not measurements to copy into a real shop inventory. An exit-0 report is eligible for approval. Without a valid first-article approval record, the printable sheet remains PLANNED.
60
+
61
+ The standalone [Blondihacks T-nuts example](https://github.com/pedropaulovc/prechips/blob/main/examples/blondihacks-t-nuts/README.md) adapts a video process with explicitly selected catalog dimensions. It uses local shop inputs, not harmonic-analyzer exports or the shared demonstration-measurement inventory. Source observations, catalog design choices and missing real measurements remain distinct; the sheet stays PLANNED.
62
+
63
+ The standalone [brass-ring example](https://github.com/pedropaulovc/prechips/blob/main/examples/blondihacks-brass-ring/README.md) follows [Metal Lathe Tutorial 16: Your First Project](https://www.youtube.com/watch?v=t9NGty1CVII), with source-known 360 brass and a PM-1022V lathe. Its local inventory retains real measurement debt; expected exit 4 does not release the PLANNED traveler.
64
+
65
+ The [Magic Tube example](https://github.com/pedropaulovc/prechips/blob/main/examples/blondihacks-magic-tube/README.md) follows [Metal Lathe Tutorial 18: Your Second Project!](https://www.youtube.com/watch?v=-dyO4PEkEkc): one source bar becomes a blind-bored body and removable 1/2-20 right-hand screw cap. Its adapted 12L14 design and catalog dimensions are not identification or measurements of the video's unknown scrap stock. Retained-piece routing and nominal thread compatibility do not certify engagement, seating or joint turning; the traveler remains PLANNED with expected exit 4.
66
+
67
+ Mounted slitting saws have bounded offline support for a measured blade/arbor assembly, one straight constant-Z cut and checked clear moves with clamped capture. Geometry, established engagement and mounted body-zero evidence are independent requirements; legacy planar inputs alone remain unresolved. See the [tool rules](https://github.com/pedropaulovc/prechips/blob/main/docs/rules-tools.md) and [operation contract](https://github.com/pedropaulovc/prechips/blob/main/docs/plan.md#mounted-slitting-saw-path-and-capture).
68
+
69
+ Registered workpieces preserve distinct members through nested named cut outputs and member-qualified face claims. Posed or borrowed supports share the native collision scene, and requested transverse finder pickups check the full installed stack against actual arriving stock. These offline proofs do not establish physical holding or shop execution. Setup sheets support `--detail pro|hobby|pedantic`, defaulting to `hobby`; see the [detail-mode contract](https://github.com/pedropaulovc/prechips/blob/main/docs/report-and-telemetry.md#traveler-detail-modes). Inspection expansion remains separate unfinished work; this support is not CAM or physical safety certification.
70
+
71
+ Hobby and pro sheets share repeated procedures and consolidate equivalent setup holds. Recursive datum explanations remain in `report.json`; unresolved settings and required actions stay on the sheet.
72
+
73
+ ## CLI: five noninteractive verbs
74
+
75
+ | Command | Result |
76
+ | --- | --- |
77
+ | `prechips traveler` | Fresh report, printable HTML and available setup images. |
78
+ | `prechips check` | Fresh report without the printable sheet. |
79
+ | `prechips tools` | Inventory search or a plan-specific measurement-debt checklist. |
80
+ | `prechips compare` | Side-by-side findings for authored candidates. |
81
+ | `prechips explain` | Evidence from selected findings in a saved report. |
82
+
83
+ Use the [CLI catalog](https://github.com/pedropaulovc/prechips/blob/main/docs/reference/cli.md) for arguments, flags, path precedence, output streams and exit codes. The [Python callable catalog](https://github.com/pedropaulovc/prechips/blob/main/docs/reference/python-api.md) describes importable implementation functions and their support boundary.
84
+
85
+ ## Formats, rules and readiness
86
+
87
+ The [documentation index](https://github.com/pedropaulovc/prechips/blob/main/docs/README.md#look-up-an-interface) links the five input formats, rule families and output contracts. Use [troubleshooting](https://github.com/pedropaulovc/prechips/blob/main/docs/manual/troubleshooting.md) to resolve an input error or unresolved finding, and the [FAQ](https://github.com/pedropaulovc/prechips/blob/main/docs/manual/faq.md) for product capabilities and limits.
88
+
89
+ The 0.3.0 plan interface supports explicit tailstock mounting, qualified relative
90
+ inspection readings and source-bound shared-axis placements. Placements require
91
+ matching native construction proof before machining coordinates are released;
92
+ unknown metrology remains debt. These contracts do not qualify held plans or
93
+ record measurements. Relative-reading sheet presentation and the broader
94
+ traveler/command-consumer migration remain deferred.
95
+
96
+ The literal `"unknown"` is unresolved debt. A source citation, vendor nominal, declared procedure or generated picture does not establish a physical measurement. Approval cannot waive rule errors or required unresolved findings. See [eligibility and approval](https://github.com/pedropaulovc/prechips/blob/main/docs/report-and-telemetry.md#eligibility-and-approval).
97
+
98
+ An authored `op.rpm` is a requested speed, not a verified recommendation. The requested value takes precedence over calculation, including an explicit `"unknown"` request with no computed fallback. Known machine-limit violations are errors; unresolved safety inputs keep a visible STOP. See [requested RPM](https://github.com/pedropaulovc/prechips/blob/main/docs/cutting-data.md#authored-rpm).
99
+
100
+ ## Geometry on the FreeCAD kernel
101
+
102
+ The [geometry reference](https://github.com/pedropaulovc/prechips/blob/main/docs/rules-geometry.md) defines face identity, stock evolution, prescribed approach models, sampled workholding and collision screens, caches and renders. Its [limits](https://github.com/pedropaulovc/prechips/blob/main/docs/rules-geometry.md#limits) explain what these measurements cannot establish. The [architecture guide](https://github.com/pedropaulovc/prechips/blob/main/docs/internals/architecture.md) describes the host/native boundary.
103
+
104
+ Named finished solids, retained part-off outputs and removable threaded assembly routes require explicit identities and material ownership. A nominal thread match is not proof of engagement, seating, strength or a collision-free assembled cut. The [plan reference](https://github.com/pedropaulovc/prechips/blob/main/docs/plan.md) defines retained outputs and threaded joints; unresolved registration and physical engagement remain debt.
105
+
106
+ A missing kernel leaves applicable geometry unresolved and produces exit 4 unless a rule error takes precedence with exit 2. A valid explicit `FREECAD_CMD` can select an installation; an invalid override prevents fallback discovery. See [FreeCAD troubleshooting](https://github.com/pedropaulovc/prechips/blob/main/docs/manual/troubleshooting.md#freecad-is-installed-but-geometry-says-the-kernel-is-unavailable).
107
+
108
+ ## Machinist review of a traveler (dev tool)
109
+
110
+ The [development guide](https://github.com/pedropaulovc/prechips/blob/main/docs/internals/development.md) describes the blind printed-page review, handbook references and contributor commands. This hosted-model review is separate from the offline product checks and from physical paper acceptance.
111
+
112
+ ## Limits
113
+
114
+ Passing the checker does not prove a continuous cutter path, dynamic stability, real clamping, tool condition, operator execution or finished dimensions. Generated reports and PDFs do not establish physical paper rehearsal, first-article machining or parented live farm telemetry acceptance.
115
+
116
+ [PLAN.md](https://github.com/pedropaulovc/prechips/blob/main/PLAN.md) records delivery and acceptance status. The [example guide](https://github.com/pedropaulovc/prechips/blob/main/examples/README.md#print-and-native-acceptance-limits) records the limits of the bundled evidence. Internal proposals are separate from the shipped input and rule contracts.
117
+
118
+ ## DRO reference
119
+
120
+ For digital readouts, the zero recipe uses the Electronica EL400 Direction §6.2 and ABS Axis Set §7.4 functions. Preset §8.1 is not a zero-setting command. Mechanical handwheels instead use `dro.kind = "handwheel"` and their declared units and procedures; they do not acquire digital Axis Set or Preset instructions. Missing graduation, backlash or physical datum evidence remains unresolved. See the [readout contract](https://github.com/pedropaulovc/prechips/blob/main/docs/rules-coordinates.md#zero_check).
121
+
122
+ - [EL400 Operation Manual](https://www.dropros.com/documents/EL400%20OpManual.pdf)
123
+ - [Changing read direction](https://www.dropros.com/documents/400%20ScaleDirection.pdf)
124
+ - [Bolt-hole circle](https://www.dropros.com/documents/EL400BoltHole.pdf), [linear hole pattern](https://www.dropros.com/documents/EL400AngleHole.pdf) and [arc](https://www.dropros.com/documents/EL400Arc.pdf)
125
+
126
+ The consumer is [harmonic-analyzer](https://github.com/pedropaulovc/harmonic-analyzer). The shop uses the [el400 emulator](https://github.com/pedropaulovc/el400). A printed recipe does not certify the emulator or a physical touch-off. See the [DRO and print surfaces](https://github.com/pedropaulovc/prechips/blob/main/examples/README.md#dro-and-print-surfaces) and the [zero-check reference](https://github.com/pedropaulovc/prechips/blob/main/docs/rules-coordinates.md#zero_check) for the checker and printing boundaries.
@@ -0,0 +1,106 @@
1
+ > [!WARNING]
2
+ > This repo is in a very AI slop state and is not ready for consumption.
3
+
4
+ # prechips
5
+
6
+ prechips checks an authored manual-machining plan against a feature manifest, shop inventory, policy and cutting data. It writes a findings report and printable setup sheets with workholding, DRO-zero instructions, operations and inspection records.
7
+
8
+ Geometry checks use a local FreeCAD kernel. The checker does not generate toolpaths or certify a physical setup, finished part or machining process.
9
+
10
+ Start with the [quickstart](https://github.com/pedropaulovc/prechips/blob/main/docs/manual/quickstart.md), or use the [documentation index](https://github.com/pedropaulovc/prechips/blob/main/docs/README.md) to find a task or reference.
11
+
12
+ ## Install and check
13
+
14
+ You need Python 3.12 or newer and [uv](https://docs.astral.sh/uv/). From a source checkout:
15
+
16
+ ```sh
17
+ uv sync --locked
18
+ uv run prechips --help
19
+ ```
20
+
21
+ The [quickstart](https://github.com/pedropaulovc/prechips/blob/main/docs/manual/quickstart.md) covers FreeCAD discovery and your first result. The [development guide](https://github.com/pedropaulovc/prechips/blob/main/docs/internals/development.md) covers tests, native fixtures, package validation and contributor review.
22
+
23
+ ## Run the examples
24
+
25
+ From the repository root:
26
+
27
+ ```sh
28
+ uv run prechips traveler examples/pivot-shaft/plan.toml --out out/pivot-shaft
29
+ uv run prechips traveler examples/rocker-arm/plan.toml --out out/rocker-arm
30
+ uv run prechips traveler examples/pivot-bracket/plan.toml --out out/pivot-bracket
31
+ uv run prechips traveler examples/cone-pivot-post/built-up.toml --out out/cone-pivot-post
32
+ uv run prechips traveler examples/blondihacks-t-nuts/plan.toml --out out/blondihacks-t-nuts
33
+ uv run prechips traveler examples/blondihacks-brass-ring/plan.toml --out out/blondihacks-brass-ring
34
+ uv run prechips traveler examples/blondihacks-magic-tube/plan.toml --out out/blondihacks-magic-tube
35
+ ```
36
+
37
+ Read the [worked tutorial](https://github.com/pedropaulovc/prechips/blob/main/docs/manual/tutorial.md) for the input-to-sheet workflow and the [input/output demonstration](https://github.com/pedropaulovc/prechips/blob/main/docs/manual/demo.md) for actual excerpts. The [example guide](https://github.com/pedropaulovc/prechips/blob/main/examples/README.md) owns each bundle's provenance, demonstration-value disclosures and expected exit. Outputs can still be written when the checker exits 2 or 4.
38
+
39
+ Example values exercise the rules; they are not measurements to copy into a real shop inventory. An exit-0 report is eligible for approval. Without a valid first-article approval record, the printable sheet remains PLANNED.
40
+
41
+ The standalone [Blondihacks T-nuts example](https://github.com/pedropaulovc/prechips/blob/main/examples/blondihacks-t-nuts/README.md) adapts a video process with explicitly selected catalog dimensions. It uses local shop inputs, not harmonic-analyzer exports or the shared demonstration-measurement inventory. Source observations, catalog design choices and missing real measurements remain distinct; the sheet stays PLANNED.
42
+
43
+ The standalone [brass-ring example](https://github.com/pedropaulovc/prechips/blob/main/examples/blondihacks-brass-ring/README.md) follows [Metal Lathe Tutorial 16: Your First Project](https://www.youtube.com/watch?v=t9NGty1CVII), with source-known 360 brass and a PM-1022V lathe. Its local inventory retains real measurement debt; expected exit 4 does not release the PLANNED traveler.
44
+
45
+ The [Magic Tube example](https://github.com/pedropaulovc/prechips/blob/main/examples/blondihacks-magic-tube/README.md) follows [Metal Lathe Tutorial 18: Your Second Project!](https://www.youtube.com/watch?v=-dyO4PEkEkc): one source bar becomes a blind-bored body and removable 1/2-20 right-hand screw cap. Its adapted 12L14 design and catalog dimensions are not identification or measurements of the video's unknown scrap stock. Retained-piece routing and nominal thread compatibility do not certify engagement, seating or joint turning; the traveler remains PLANNED with expected exit 4.
46
+
47
+ Mounted slitting saws have bounded offline support for a measured blade/arbor assembly, one straight constant-Z cut and checked clear moves with clamped capture. Geometry, established engagement and mounted body-zero evidence are independent requirements; legacy planar inputs alone remain unresolved. See the [tool rules](https://github.com/pedropaulovc/prechips/blob/main/docs/rules-tools.md) and [operation contract](https://github.com/pedropaulovc/prechips/blob/main/docs/plan.md#mounted-slitting-saw-path-and-capture).
48
+
49
+ Registered workpieces preserve distinct members through nested named cut outputs and member-qualified face claims. Posed or borrowed supports share the native collision scene, and requested transverse finder pickups check the full installed stack against actual arriving stock. These offline proofs do not establish physical holding or shop execution. Setup sheets support `--detail pro|hobby|pedantic`, defaulting to `hobby`; see the [detail-mode contract](https://github.com/pedropaulovc/prechips/blob/main/docs/report-and-telemetry.md#traveler-detail-modes). Inspection expansion remains separate unfinished work; this support is not CAM or physical safety certification.
50
+
51
+ Hobby and pro sheets share repeated procedures and consolidate equivalent setup holds. Recursive datum explanations remain in `report.json`; unresolved settings and required actions stay on the sheet.
52
+
53
+ ## CLI: five noninteractive verbs
54
+
55
+ | Command | Result |
56
+ | --- | --- |
57
+ | `prechips traveler` | Fresh report, printable HTML and available setup images. |
58
+ | `prechips check` | Fresh report without the printable sheet. |
59
+ | `prechips tools` | Inventory search or a plan-specific measurement-debt checklist. |
60
+ | `prechips compare` | Side-by-side findings for authored candidates. |
61
+ | `prechips explain` | Evidence from selected findings in a saved report. |
62
+
63
+ Use the [CLI catalog](https://github.com/pedropaulovc/prechips/blob/main/docs/reference/cli.md) for arguments, flags, path precedence, output streams and exit codes. The [Python callable catalog](https://github.com/pedropaulovc/prechips/blob/main/docs/reference/python-api.md) describes importable implementation functions and their support boundary.
64
+
65
+ ## Formats, rules and readiness
66
+
67
+ The [documentation index](https://github.com/pedropaulovc/prechips/blob/main/docs/README.md#look-up-an-interface) links the five input formats, rule families and output contracts. Use [troubleshooting](https://github.com/pedropaulovc/prechips/blob/main/docs/manual/troubleshooting.md) to resolve an input error or unresolved finding, and the [FAQ](https://github.com/pedropaulovc/prechips/blob/main/docs/manual/faq.md) for product capabilities and limits.
68
+
69
+ The 0.3.0 plan interface supports explicit tailstock mounting, qualified relative
70
+ inspection readings and source-bound shared-axis placements. Placements require
71
+ matching native construction proof before machining coordinates are released;
72
+ unknown metrology remains debt. These contracts do not qualify held plans or
73
+ record measurements. Relative-reading sheet presentation and the broader
74
+ traveler/command-consumer migration remain deferred.
75
+
76
+ The literal `"unknown"` is unresolved debt. A source citation, vendor nominal, declared procedure or generated picture does not establish a physical measurement. Approval cannot waive rule errors or required unresolved findings. See [eligibility and approval](https://github.com/pedropaulovc/prechips/blob/main/docs/report-and-telemetry.md#eligibility-and-approval).
77
+
78
+ An authored `op.rpm` is a requested speed, not a verified recommendation. The requested value takes precedence over calculation, including an explicit `"unknown"` request with no computed fallback. Known machine-limit violations are errors; unresolved safety inputs keep a visible STOP. See [requested RPM](https://github.com/pedropaulovc/prechips/blob/main/docs/cutting-data.md#authored-rpm).
79
+
80
+ ## Geometry on the FreeCAD kernel
81
+
82
+ The [geometry reference](https://github.com/pedropaulovc/prechips/blob/main/docs/rules-geometry.md) defines face identity, stock evolution, prescribed approach models, sampled workholding and collision screens, caches and renders. Its [limits](https://github.com/pedropaulovc/prechips/blob/main/docs/rules-geometry.md#limits) explain what these measurements cannot establish. The [architecture guide](https://github.com/pedropaulovc/prechips/blob/main/docs/internals/architecture.md) describes the host/native boundary.
83
+
84
+ Named finished solids, retained part-off outputs and removable threaded assembly routes require explicit identities and material ownership. A nominal thread match is not proof of engagement, seating, strength or a collision-free assembled cut. The [plan reference](https://github.com/pedropaulovc/prechips/blob/main/docs/plan.md) defines retained outputs and threaded joints; unresolved registration and physical engagement remain debt.
85
+
86
+ A missing kernel leaves applicable geometry unresolved and produces exit 4 unless a rule error takes precedence with exit 2. A valid explicit `FREECAD_CMD` can select an installation; an invalid override prevents fallback discovery. See [FreeCAD troubleshooting](https://github.com/pedropaulovc/prechips/blob/main/docs/manual/troubleshooting.md#freecad-is-installed-but-geometry-says-the-kernel-is-unavailable).
87
+
88
+ ## Machinist review of a traveler (dev tool)
89
+
90
+ The [development guide](https://github.com/pedropaulovc/prechips/blob/main/docs/internals/development.md) describes the blind printed-page review, handbook references and contributor commands. This hosted-model review is separate from the offline product checks and from physical paper acceptance.
91
+
92
+ ## Limits
93
+
94
+ Passing the checker does not prove a continuous cutter path, dynamic stability, real clamping, tool condition, operator execution or finished dimensions. Generated reports and PDFs do not establish physical paper rehearsal, first-article machining or parented live farm telemetry acceptance.
95
+
96
+ [PLAN.md](https://github.com/pedropaulovc/prechips/blob/main/PLAN.md) records delivery and acceptance status. The [example guide](https://github.com/pedropaulovc/prechips/blob/main/examples/README.md#print-and-native-acceptance-limits) records the limits of the bundled evidence. Internal proposals are separate from the shipped input and rule contracts.
97
+
98
+ ## DRO reference
99
+
100
+ For digital readouts, the zero recipe uses the Electronica EL400 Direction §6.2 and ABS Axis Set §7.4 functions. Preset §8.1 is not a zero-setting command. Mechanical handwheels instead use `dro.kind = "handwheel"` and their declared units and procedures; they do not acquire digital Axis Set or Preset instructions. Missing graduation, backlash or physical datum evidence remains unresolved. See the [readout contract](https://github.com/pedropaulovc/prechips/blob/main/docs/rules-coordinates.md#zero_check).
101
+
102
+ - [EL400 Operation Manual](https://www.dropros.com/documents/EL400%20OpManual.pdf)
103
+ - [Changing read direction](https://www.dropros.com/documents/400%20ScaleDirection.pdf)
104
+ - [Bolt-hole circle](https://www.dropros.com/documents/EL400BoltHole.pdf), [linear hole pattern](https://www.dropros.com/documents/EL400AngleHole.pdf) and [arc](https://www.dropros.com/documents/EL400Arc.pdf)
105
+
106
+ The consumer is [harmonic-analyzer](https://github.com/pedropaulovc/harmonic-analyzer). The shop uses the [el400 emulator](https://github.com/pedropaulovc/el400). A printed recipe does not certify the emulator or a physical touch-off. See the [DRO and print surfaces](https://github.com/pedropaulovc/prechips/blob/main/examples/README.md#dro-and-print-surfaces) and the [zero-check reference](https://github.com/pedropaulovc/prechips/blob/main/docs/rules-coordinates.md#zero_check) for the checker and printing boundaries.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "prechips"
3
- version = "0.2.0"
3
+ version = "0.3.0"
4
4
  description = "Checks before chips: deterministic validation of machining process plans against part geometry and a shop inventory."
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "prechips"
3
- version = "0.2.0"
3
+ version = "0.3.0"
4
4
  description = "Checks before chips: deterministic validation of machining process plans against part geometry and a shop inventory."
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -1,3 +1,3 @@
1
1
  """prechips: checks before chips."""
2
2
 
3
- __version__ = "0.2.0"
3
+ __version__ = "0.3.0"