The identifier of the part program currently loaded or executing. Carries the join key for almost every downstream analysis: without it, cycle times and load traces cannot be attributed to a part number. Controllers expose it as a filename, an O-number, a comment field, or all three under different tags, and some pad or truncate it.
program_nameEach of these is a real tag as the device or controller emits it, taken from the Forge mapping corpus. This is the table that does not exist anywhere else — the reason cross-vendor telemetry is hard is visible in a single column.
| OEM / profile | Raw tag as the device emits it | Confidence |
|---|---|---|
| Fanuc | MAINPRGONUMBERPRGNAMEPROGRAMMAIN PRGMAIN_PRG+4 more spellings | 1.00 |
| Haas | PROGNAMEPROG NAMEProg_Name | 1.00 |
| Siemens | PROGRAMMACTIVEPROGRAMNAME | 1.00 |
| Bridgeport | active_prog | 1.00 |
| Brother | active_prog | 1.00 |
| DMG Mori | NCProgram | 1.00 |
| Doosan | active_prog | 1.00 |
| Heidenhain | activeProgram | 1.00 |
| Hitachi Seiki | active_prog | 1.00 |
| Hurco | active_prog | 1.00 |
| Kitamura | active_prog | 1.00 |
| Komatsu NTC | active_prog | 1.00 |
| Makino | nc_prog | 1.00 |
| Matsuura | active_prog | 1.00 |
| Mazak | main_program | 1.00 |
| Mikron | active_prog | 1.00 |
| Mitsubishi | active_prog | 1.00 |
| Okuma | MainPrg | 1.00 |
| Siemens Sinumerik | progName | 1.00 |
| Tongtai | active_prog | 1.00 |
| Tormach | active_prog | 1.00 |
| Trumpf | active_prog | 1.00 |
Every row above is an exact match — a deterministic pack entry or a confirmed corpus mapping — so all of them carry confidence 1.00. That is not a rounding: these are the two exact-match layers, and a tag that resolves here never reaches the embedding or LLM layers. Mappings resolved by the LLM layer do carry sub-1.0 confidence, but those are per-tenant and are not published here.
The canonical field is not just a name. It is a contract about units, sign convention and plausible range, enforced on the way in and re-checked at read time.
| SI / canonical unit | unitless (identifier or enumeration) |
| Measurement type | instantaneous |
| Distinct source tags in the corpus | 118 |
No mapping table to maintain, and no per-vendor branch in your code. The same request shape works for every OEM in the table above.
Read alongside this one.
spindle_speed_rpm spindle_load_pct part_count feed_rate robot.joint.position