factorysemantics-mes 0.2.0__tar.gz → 0.3.1__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 (1291) hide show
  1. factorysemantics_mes-0.3.1/.dockerignore +78 -0
  2. factorysemantics_mes-0.3.1/.env.example +112 -0
  3. factorysemantics_mes-0.3.1/.github/dependabot.yml +35 -0
  4. factorysemantics_mes-0.3.1/.github/scripts/assistant_folder_from_the_wheel.py +186 -0
  5. factorysemantics_mes-0.3.1/.github/scripts/doctor_writes_nothing_of_yours.py +336 -0
  6. factorysemantics_mes-0.3.1/.github/scripts/lab_starters.sh +138 -0
  7. factorysemantics_mes-0.3.1/.github/scripts/plant_from_shape.py +560 -0
  8. factorysemantics_mes-0.3.1/.github/scripts/plant_from_wheel.py +354 -0
  9. factorysemantics_mes-0.3.1/.github/scripts/recover_a_half_dead_plant.py +213 -0
  10. factorysemantics_mes-0.3.1/.github/scripts/release_notes.sh +76 -0
  11. factorysemantics_mes-0.3.1/.github/workflows/ci.yml +583 -0
  12. factorysemantics_mes-0.3.1/.github/workflows/dco.yml +26 -0
  13. factorysemantics_mes-0.3.1/.github/workflows/docs.yml +44 -0
  14. factorysemantics_mes-0.3.1/.github/workflows/erpnext-live.yml +165 -0
  15. factorysemantics_mes-0.3.1/.github/workflows/release.yml +310 -0
  16. factorysemantics_mes-0.3.1/.github/workflows/scorecard.yml +28 -0
  17. factorysemantics_mes-0.3.1/.github/workflows/welcome.yml +42 -0
  18. factorysemantics_mes-0.3.1/.gitignore +80 -0
  19. factorysemantics_mes-0.3.1/CHANGELOG.md +4914 -0
  20. factorysemantics_mes-0.3.1/CITATION.cff +13 -0
  21. factorysemantics_mes-0.3.1/CONTRIBUTING.md +90 -0
  22. factorysemantics_mes-0.3.1/PKG-INFO +423 -0
  23. factorysemantics_mes-0.3.1/README.md +164 -0
  24. factorysemantics_mes-0.3.1/ROADMAP.md +153 -0
  25. factorysemantics_mes-0.3.1/config/tag_map_kepsim.json +103 -0
  26. factorysemantics_mes-0.3.1/deploy/README.md +142 -0
  27. factorysemantics_mes-0.3.1/deploy/promote.sh +394 -0
  28. factorysemantics_mes-0.3.1/docker/Dockerfile +63 -0
  29. factorysemantics_mes-0.3.1/docs/ARCHITECTURE.md +159 -0
  30. factorysemantics_mes-0.3.1/docs/LANDSCAPE.md +66 -0
  31. factorysemantics_mes-0.3.1/docs/agents/evals.md +61 -0
  32. factorysemantics_mes-0.3.1/docs/agents/write-discipline.md +60 -0
  33. factorysemantics_mes-0.3.1/docs/ai/ASSIST-EVAL.md +432 -0
  34. factorysemantics_mes-0.3.1/docs/ai/BUDGET.md +78 -0
  35. factorysemantics_mes-0.3.1/docs/ai/JEV-CALIBRATION.md +525 -0
  36. factorysemantics_mes-0.3.1/docs/ai/JEV.md +969 -0
  37. factorysemantics_mes-0.3.1/docs/ai/JUDGMENT-IN-THE-BUILD-LOOP.md +177 -0
  38. factorysemantics_mes-0.3.1/docs/ai/OBSERVABILITY.md +139 -0
  39. factorysemantics_mes-0.3.1/docs/ai/assist-eval/2026-09-27-live-admin.md +62 -0
  40. factorysemantics_mes-0.3.1/docs/ai/assist-eval/2026-09-27-live-operator.md +60 -0
  41. factorysemantics_mes-0.3.1/docs/ai/assist-eval/2026-09-27-scripted.md +40 -0
  42. factorysemantics_mes-0.3.1/docs/ai/calibration/2026-09-17/full/calibration.md +143 -0
  43. factorysemantics_mes-0.3.1/docs/ai/calibration/2026-09-17/full/d1-against-truth.json +532 -0
  44. factorysemantics_mes-0.3.1/docs/ai/calibration/2026-09-17/full/d1-component-stopped-reporting.svg +53 -0
  45. factorysemantics_mes-0.3.1/docs/ai/calibration/2026-09-17/full/d1-counter-went-backwards.svg +51 -0
  46. factorysemantics_mes-0.3.1/docs/ai/calibration/2026-09-17/full/p1-by-confidence.svg +53 -0
  47. factorysemantics_mes-0.3.1/docs/ai/calibration/2026-09-17/full/p1-by-probability.svg +53 -0
  48. factorysemantics_mes-0.3.1/docs/ai/calibration/2026-09-17/stopped-not-why/calibration.md +143 -0
  49. factorysemantics_mes-0.3.1/docs/ai/calibration/2026-09-17/stopped-not-why/d1-against-truth.json +532 -0
  50. factorysemantics_mes-0.3.1/docs/ai/calibration/2026-09-17/stopped-not-why/d1-component-stopped-reporting.svg +53 -0
  51. factorysemantics_mes-0.3.1/docs/ai/calibration/2026-09-17/stopped-not-why/d1-counter-went-backwards.svg +51 -0
  52. factorysemantics_mes-0.3.1/docs/ai/calibration/2026-09-17/stopped-not-why/p1-by-confidence.svg +53 -0
  53. factorysemantics_mes-0.3.1/docs/ai/calibration/2026-09-17/stopped-not-why/p1-by-probability.svg +53 -0
  54. factorysemantics_mes-0.3.1/docs/assets/walk.gif +0 -0
  55. factorysemantics_mes-0.3.1/docs/decisions/0023-the-fleet-console-observes.md +347 -0
  56. factorysemantics_mes-0.3.1/docs/decisions/0024-a-nonconformance-has-a-life.md +85 -0
  57. factorysemantics_mes-0.3.1/docs/decisions/0025-performance-is-measured-not-capped.md +116 -0
  58. factorysemantics_mes-0.3.1/docs/decisions/0026-counts-that-outrun-the-run-time.md +228 -0
  59. factorysemantics_mes-0.3.1/docs/decisions/0027-an-spc-signal-raises-a-hold.md +134 -0
  60. factorysemantics_mes-0.3.1/docs/decisions/0028-which-shift-a-minute-belongs-to.md +119 -0
  61. factorysemantics_mes-0.3.1/docs/decisions/0029-an-order-does-not-finish-itself.md +93 -0
  62. factorysemantics_mes-0.3.1/docs/decisions/0030-a-lost-connection-is-unknown-time.md +168 -0
  63. factorysemantics_mes-0.3.1/docs/decisions/0031-a-judgment-is-a-proposal.md +104 -0
  64. factorysemantics_mes-0.3.1/docs/decisions/0032-a-hosted-judgment-and-the-shadow.md +104 -0
  65. factorysemantics_mes-0.3.1/docs/decisions/0033-availability-is-a-share-of-what-was-watched.md +153 -0
  66. factorysemantics_mes-0.3.1/docs/decisions/0034-a-count-is-owed-until-it-is-booked.md +94 -0
  67. factorysemantics_mes-0.3.1/docs/decisions/0035-configuration-is-authored-by-roles-and-selected-by-operators.md +170 -0
  68. factorysemantics_mes-0.3.1/docs/decisions/0036-the-chart-draws-every-rule-the-plant-chooses-which-hold.md +119 -0
  69. factorysemantics_mes-0.3.1/docs/decisions/0038-an-agent-is-an-account-with-a-role-a-budget-and-a-cadence.md +250 -0
  70. factorysemantics_mes-0.3.1/docs/decisions/0039-an-analysis-is-recorded-code-that-can-only-read.md +147 -0
  71. factorysemantics_mes-0.3.1/docs/decisions/0040-the-chart-type-follows-the-sampling-plan.md +126 -0
  72. factorysemantics_mes-0.3.1/docs/decisions/0041-a-characteristic-the-plant-counts.md +171 -0
  73. factorysemantics_mes-0.3.1/docs/decisions/index.md +51 -0
  74. factorysemantics_mes-0.3.1/docs/design/STYLE.md +192 -0
  75. factorysemantics_mes-0.3.1/docs/design/agentic-harness.md +1686 -0
  76. factorysemantics_mes-0.3.1/docs/design/backlog/admin-edit-roles.md +101 -0
  77. factorysemantics_mes-0.3.1/docs/design/backlog/assistant-submits-an-inspection.md +62 -0
  78. factorysemantics_mes-0.3.1/docs/design/backlog/clickable-machine-breadcrumbs.md +72 -0
  79. factorysemantics_mes-0.3.1/docs/design/backlog/floor-machines-paginate-and-filter.md +60 -0
  80. factorysemantics_mes-0.3.1/docs/design/backlog/measurements-card-filtering.md +41 -0
  81. factorysemantics_mes-0.3.1/docs/design/backlog/measurements-characteristic-filter.md +50 -0
  82. factorysemantics_mes-0.3.1/docs/design/backlog/nonconformance-lifecycle.md +92 -0
  83. factorysemantics_mes-0.3.1/docs/design/backlog/order-card-search-finds-a-material.md +39 -0
  84. factorysemantics_mes-0.3.1/docs/design/backlog/persistent-header-menu.md +72 -0
  85. factorysemantics_mes-0.3.1/docs/design/backlog/review-station.md +72 -0
  86. factorysemantics_mes-0.3.1/docs/design/backlog/scrap-reason-codes.md +68 -0
  87. factorysemantics_mes-0.3.1/docs/design/backlog/shop-floor-actions-strip.md +48 -0
  88. factorysemantics_mes-0.3.1/docs/design/backlog/specifications-card-filtering.md +34 -0
  89. factorysemantics_mes-0.3.1/docs/design/backlog/specifications-server-paged.md +47 -0
  90. factorysemantics_mes-0.3.1/docs/design/backlog/station-quality-card.md +73 -0
  91. factorysemantics_mes-0.3.1/docs/design/config-assistance.md +1507 -0
  92. factorysemantics_mes-0.3.1/docs/design/config-audit-2026-09-21.md +651 -0
  93. factorysemantics_mes-0.3.1/docs/design/deep-analysis.md +1000 -0
  94. factorysemantics_mes-0.3.1/docs/design/pack-in-pack.md +100 -0
  95. factorysemantics_mes-0.3.1/docs/develop/experiments.md +628 -0
  96. factorysemantics_mes-0.3.1/docs/index.md +78 -0
  97. factorysemantics_mes-0.3.1/docs/operate/administration-numbers.md +200 -0
  98. factorysemantics_mes-0.3.1/docs/operate/ai.md +353 -0
  99. factorysemantics_mes-0.3.1/docs/operate/assistant-coverage.md +196 -0
  100. factorysemantics_mes-0.3.1/docs/operate/compatibility.md +56 -0
  101. factorysemantics_mes-0.3.1/docs/operate/coverage.md +210 -0
  102. factorysemantics_mes-0.3.1/docs/operate/deploy.md +151 -0
  103. factorysemantics_mes-0.3.1/docs/operate/doctor.md +109 -0
  104. factorysemantics_mes-0.3.1/docs/operate/engineering-numbers.md +201 -0
  105. factorysemantics_mes-0.3.1/docs/operate/erp-settings.md +169 -0
  106. factorysemantics_mes-0.3.1/docs/operate/first-plant.md +488 -0
  107. factorysemantics_mes-0.3.1/docs/operate/fleet.md +220 -0
  108. factorysemantics_mes-0.3.1/docs/operate/images/review-walk-station.png +0 -0
  109. factorysemantics_mes-0.3.1/docs/operate/images/review-walkthrough.png +0 -0
  110. factorysemantics_mes-0.3.1/docs/operate/images/shape-equipment.png +0 -0
  111. factorysemantics_mes-0.3.1/docs/operate/images/shape-timeline.png +0 -0
  112. factorysemantics_mes-0.3.1/docs/operate/index.md +35 -0
  113. factorysemantics_mes-0.3.1/docs/operate/opc-disconnections.md +143 -0
  114. factorysemantics_mes-0.3.1/docs/operate/opc-readonly.md +293 -0
  115. factorysemantics_mes-0.3.1/docs/operate/packs.md +280 -0
  116. factorysemantics_mes-0.3.1/docs/operate/plant-from-your-mes.md +423 -0
  117. factorysemantics_mes-0.3.1/docs/operate/quality-numbers.md +230 -0
  118. factorysemantics_mes-0.3.1/docs/operate/quality-severities.md +152 -0
  119. factorysemantics_mes-0.3.1/docs/operate/releasing.md +87 -0
  120. factorysemantics_mes-0.3.1/docs/operate/run-it-on-your-own-box.md +161 -0
  121. factorysemantics_mes-0.3.1/docs/operate/shadow-mode.md +190 -0
  122. factorysemantics_mes-0.3.1/docs/operate/shadow-scorecard.md +205 -0
  123. factorysemantics_mes-0.3.1/docs/operate/the-simulated-floor.md +257 -0
  124. factorysemantics_mes-0.3.1/docs/operate/uns.md +286 -0
  125. factorysemantics_mes-0.3.1/docs/operate/upgrade.md +475 -0
  126. factorysemantics_mes-0.3.1/docs/operate/who-names-the-reasons.md +422 -0
  127. factorysemantics_mes-0.3.1/docs/plant/first-line.md +66 -0
  128. factorysemantics_mes-0.3.1/docs/plant/images/spc-xbar-and-r.png +0 -0
  129. factorysemantics_mes-0.3.1/docs/plant/index.md +18 -0
  130. factorysemantics_mes-0.3.1/docs/plant/never-invent-production.md +125 -0
  131. factorysemantics_mes-0.3.1/docs/plant/quality-signals.md +338 -0
  132. factorysemantics_mes-0.3.1/docs/plant/reading-a-trend.md +122 -0
  133. factorysemantics_mes-0.3.1/docs/plant/reading-oee.md +221 -0
  134. factorysemantics_mes-0.3.1/docs/plant/shifts.md +145 -0
  135. factorysemantics_mes-0.3.1/docs/releases/0.2.0.md +133 -0
  136. factorysemantics_mes-0.3.1/docs/releases/0.3.0.md +213 -0
  137. factorysemantics_mes-0.3.1/docs/releases/0.3.1.md +119 -0
  138. factorysemantics_mes-0.3.1/docs/releases/index.md +19 -0
  139. factorysemantics_mes-0.3.1/labs/cutlery/init.py +199 -0
  140. factorysemantics_mes-0.3.1/labs/cutlery/masterdata/downtime_reasons.json +32 -0
  141. factorysemantics_mes-0.3.1/labs/cutlery/masterdata/nc_severities.json +12 -0
  142. factorysemantics_mes-0.3.1/labs/cutlery/plant.toml +51 -0
  143. factorysemantics_mes-0.3.1/labs/cutlery/run_cutlery.py +381 -0
  144. factorysemantics_mes-0.3.1/labs/experiments/lost-connection.toml +82 -0
  145. factorysemantics_mes-0.3.1/labs/experiments/one-line-bad-hour.toml +90 -0
  146. factorysemantics_mes-0.3.1/labs/experiments/over-run.toml +85 -0
  147. factorysemantics_mes-0.3.1/labs/experiments/scrap-burst.toml +64 -0
  148. factorysemantics_mes-0.3.1/labs/experiments/starved-and-blocked.toml +64 -0
  149. factorysemantics_mes-0.3.1/labs/experiments/two-plants-two-zones.toml +109 -0
  150. factorysemantics_mes-0.3.1/labs/kepsim/line.json +339 -0
  151. factorysemantics_mes-0.3.1/labs/kepsim/scenario.md +77 -0
  152. factorysemantics_mes-0.3.1/labs/megafactory/full/surfaces.py +371 -0
  153. factorysemantics_mes-0.3.1/labs/multiplant/README.md +400 -0
  154. factorysemantics_mes-0.3.1/labs/multiplant/bottling/floor.json +240 -0
  155. factorysemantics_mes-0.3.1/labs/multiplant/bottling/line.json +543 -0
  156. factorysemantics_mes-0.3.1/labs/multiplant/bottling/masterdata/README.md +177 -0
  157. factorysemantics_mes-0.3.1/labs/multiplant/bottling/masterdata/bom.json +32 -0
  158. factorysemantics_mes-0.3.1/labs/multiplant/bottling/masterdata/dispatch_rules.json +27 -0
  159. factorysemantics_mes-0.3.1/labs/multiplant/bottling/masterdata/downtime_reasons.json +37 -0
  160. factorysemantics_mes-0.3.1/labs/multiplant/bottling/masterdata/equipment.json +61 -0
  161. factorysemantics_mes-0.3.1/labs/multiplant/bottling/masterdata/gauges.json +32 -0
  162. factorysemantics_mes-0.3.1/labs/multiplant/bottling/masterdata/lots.json +27 -0
  163. factorysemantics_mes-0.3.1/labs/multiplant/bottling/masterdata/maintenance_plans.json +88 -0
  164. factorysemantics_mes-0.3.1/labs/multiplant/bottling/masterdata/materials.json +38 -0
  165. factorysemantics_mes-0.3.1/labs/multiplant/bottling/masterdata/nc_severities.json +12 -0
  166. factorysemantics_mes-0.3.1/labs/multiplant/bottling/masterdata/personnel.json +43 -0
  167. factorysemantics_mes-0.3.1/labs/multiplant/bottling/masterdata/personnel_skills.json +47 -0
  168. factorysemantics_mes-0.3.1/labs/multiplant/bottling/masterdata/quality_specs.json +24 -0
  169. factorysemantics_mes-0.3.1/labs/multiplant/bottling/masterdata/roster.json +30 -0
  170. factorysemantics_mes-0.3.1/labs/multiplant/bottling/masterdata/routings.json +39 -0
  171. factorysemantics_mes-0.3.1/labs/multiplant/bottling/masterdata/shifts.json +16 -0
  172. factorysemantics_mes-0.3.1/labs/multiplant/bottling/masterdata/skills.json +17 -0
  173. factorysemantics_mes-0.3.1/labs/multiplant/bottling/masterdata/work_orders.json +12 -0
  174. factorysemantics_mes-0.3.1/labs/multiplant/bottling/plant.toml +106 -0
  175. factorysemantics_mes-0.3.1/labs/multiplant/bottling/tag_map.json +103 -0
  176. factorysemantics_mes-0.3.1/labs/multiplant/finewire/README.md +74 -0
  177. factorysemantics_mes-0.3.1/labs/multiplant/finewire/floor.json +10 -0
  178. factorysemantics_mes-0.3.1/labs/multiplant/finewire/masterdata/downtime_reasons.json +32 -0
  179. factorysemantics_mes-0.3.1/labs/multiplant/finewire/masterdata/nc_severities.json +12 -0
  180. factorysemantics_mes-0.3.1/labs/multiplant/finewire/masterdata/work_orders.json +7 -0
  181. factorysemantics_mes-0.3.1/labs/multiplant/finewire/plant.toml +114 -0
  182. factorysemantics_mes-0.3.1/labs/multiplant/machining/floor.json +10 -0
  183. factorysemantics_mes-0.3.1/labs/multiplant/machining/masterdata/README.md +32 -0
  184. factorysemantics_mes-0.3.1/labs/multiplant/machining/masterdata/downtime_reasons.json +32 -0
  185. factorysemantics_mes-0.3.1/labs/multiplant/machining/masterdata/nc_severities.json +12 -0
  186. factorysemantics_mes-0.3.1/labs/multiplant/machining/masterdata/work_orders.json +11 -0
  187. factorysemantics_mes-0.3.1/labs/multiplant/machining/plant.toml +51 -0
  188. factorysemantics_mes-0.3.1/labs/multiplant/machining/tag_map.json +59 -0
  189. factorysemantics_mes-0.3.1/mkdocs.yml +209 -0
  190. factorysemantics_mes-0.3.1/pyproject.toml +285 -0
  191. factorysemantics_mes-0.3.1/skills/assistant/0-how-to-help.md +107 -0
  192. factorysemantics_mes-0.3.1/skills/assistant/1-install.md +199 -0
  193. factorysemantics_mes-0.3.1/skills/assistant/2-your-plant.md +131 -0
  194. factorysemantics_mes-0.3.1/skills/assistant/3-shadow-mode.md +199 -0
  195. factorysemantics_mes-0.3.1/skills/assistant/4-migration.md +102 -0
  196. factorysemantics_mes-0.3.1/skills/assistant/README.md +49 -0
  197. factorysemantics_mes-0.3.1/skills/assistant/SKILL.md +79 -0
  198. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/FORMAT.md +267 -0
  199. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/SKILL.md +225 -0
  200. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/example/plant-shape-grouped.toml +1227 -0
  201. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/example/plant-shape.toml +1215 -0
  202. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/mssql/01_inventory.sql +17 -0
  203. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/mssql/01b_row_count.sql +5 -0
  204. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/mssql/02_columns.sql +25 -0
  205. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/mssql/03_window.sql +12 -0
  206. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/mssql/04_column_profile.sql +11 -0
  207. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/mssql/04b_column_sample.sql +12 -0
  208. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/mssql/05_assets.sql +16 -0
  209. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/mssql/05b_tag_samples.sql +31 -0
  210. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/mssql/05c_tag_samples_nostate.sql +22 -0
  211. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/mssql/05d_routings.sql +17 -0
  212. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/mssql/06_states.sql +22 -0
  213. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/mssql/06b_production.sql +15 -0
  214. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/mssql/06c_quality.sql +16 -0
  215. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/mssql/06d_orders.sql +11 -0
  216. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/mssql/06e_shifts.sql +11 -0
  217. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/mssql/06f_documents.sql +11 -0
  218. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/mssql/07_erp.sql +23 -0
  219. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/sqlite/01_inventory.sql +9 -0
  220. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/sqlite/01b_row_count.sql +5 -0
  221. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/sqlite/02_columns.sql +15 -0
  222. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/sqlite/03_window.sql +12 -0
  223. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/sqlite/04_column_profile.sql +11 -0
  224. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/sqlite/04b_column_sample.sql +13 -0
  225. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/sqlite/05_assets.sql +16 -0
  226. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/sqlite/05b_tag_samples.sql +31 -0
  227. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/sqlite/05c_tag_samples_nostate.sql +22 -0
  228. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/sqlite/05d_routings.sql +17 -0
  229. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/sqlite/06_states.sql +22 -0
  230. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/sqlite/06b_production.sql +15 -0
  231. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/sqlite/06c_quality.sql +16 -0
  232. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/sqlite/06d_orders.sql +11 -0
  233. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/sqlite/06e_shifts.sql +11 -0
  234. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/sqlite/06f_documents.sql +11 -0
  235. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/queries/sqlite/07_erp.sql +23 -0
  236. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/scripts/explain.py +296 -0
  237. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/scripts/leakcheck.py +277 -0
  238. factorysemantics_mes-0.3.1/skills/plant-from-your-mes/scripts/profile.py +1750 -0
  239. factorysemantics_mes-0.3.1/src/fsmes/__init__.py +17 -0
  240. factorysemantics_mes-0.3.1/src/fsmes/__main__.py +21 -0
  241. factorysemantics_mes-0.3.1/src/fsmes/api/app.py +244 -0
  242. factorysemantics_mes-0.3.1/src/fsmes/api/deps.py +202 -0
  243. factorysemantics_mes-0.3.1/src/fsmes/api/idempotency.py +79 -0
  244. factorysemantics_mes-0.3.1/src/fsmes/api/paging.py +80 -0
  245. factorysemantics_mes-0.3.1/src/fsmes/api/routers/adjustments.py +70 -0
  246. factorysemantics_mes-0.3.1/src/fsmes/api/routers/admin.py +200 -0
  247. factorysemantics_mes-0.3.1/src/fsmes/api/routers/analysis.py +489 -0
  248. factorysemantics_mes-0.3.1/src/fsmes/api/routers/assist.py +481 -0
  249. factorysemantics_mes-0.3.1/src/fsmes/api/routers/auth.py +102 -0
  250. factorysemantics_mes-0.3.1/src/fsmes/api/routers/dashboard.py +823 -0
  251. factorysemantics_mes-0.3.1/src/fsmes/api/routers/design.py +230 -0
  252. factorysemantics_mes-0.3.1/src/fsmes/api/routers/equipment.py +225 -0
  253. factorysemantics_mes-0.3.1/src/fsmes/api/routers/kpis.py +37 -0
  254. factorysemantics_mes-0.3.1/src/fsmes/api/routers/maintenance.py +468 -0
  255. factorysemantics_mes-0.3.1/src/fsmes/api/routers/masterdata.py +253 -0
  256. factorysemantics_mes-0.3.1/src/fsmes/api/routers/quality.py +798 -0
  257. factorysemantics_mes-0.3.1/src/fsmes/api/routers/reasons.py +125 -0
  258. factorysemantics_mes-0.3.1/src/fsmes/api/routers/scheduling.py +102 -0
  259. factorysemantics_mes-0.3.1/src/fsmes/api/routers/severities.py +128 -0
  260. factorysemantics_mes-0.3.1/src/fsmes/api/routers/system.py +459 -0
  261. factorysemantics_mes-0.3.1/src/fsmes/api/routers/triggers.py +107 -0
  262. factorysemantics_mes-0.3.1/src/fsmes/api/routers/workorders.py +255 -0
  263. factorysemantics_mes-0.3.1/src/fsmes/assist_coverage.py +772 -0
  264. factorysemantics_mes-0.3.1/src/fsmes/backup.py +356 -0
  265. factorysemantics_mes-0.3.1/src/fsmes/cli.py +4678 -0
  266. factorysemantics_mes-0.3.1/src/fsmes/config.py +909 -0
  267. factorysemantics_mes-0.3.1/src/fsmes/core/oplock.py +84 -0
  268. factorysemantics_mes-0.3.1/src/fsmes/db.py +206 -0
  269. factorysemantics_mes-0.3.1/src/fsmes/demo_feed.py +101 -0
  270. factorysemantics_mes-0.3.1/src/fsmes/doctor/__init__.py +78 -0
  271. factorysemantics_mes-0.3.1/src/fsmes/doctor/gather.py +696 -0
  272. factorysemantics_mes-0.3.1/src/fsmes/doctor/leak.py +334 -0
  273. factorysemantics_mes-0.3.1/src/fsmes/doctor/render.py +419 -0
  274. factorysemantics_mes-0.3.1/src/fsmes/doctor/scrub.py +833 -0
  275. factorysemantics_mes-0.3.1/src/fsmes/domain/__init__.py +189 -0
  276. factorysemantics_mes-0.3.1/src/fsmes/domain/ai_turns.py +145 -0
  277. factorysemantics_mes-0.3.1/src/fsmes/domain/audit.py +39 -0
  278. factorysemantics_mes-0.3.1/src/fsmes/domain/calendar.py +82 -0
  279. factorysemantics_mes-0.3.1/src/fsmes/domain/common.py +59 -0
  280. factorysemantics_mes-0.3.1/src/fsmes/domain/crew.py +191 -0
  281. factorysemantics_mes-0.3.1/src/fsmes/domain/equipment.py +114 -0
  282. factorysemantics_mes-0.3.1/src/fsmes/domain/execution.py +114 -0
  283. factorysemantics_mes-0.3.1/src/fsmes/domain/gauges.py +82 -0
  284. factorysemantics_mes-0.3.1/src/fsmes/domain/maintenance.py +208 -0
  285. factorysemantics_mes-0.3.1/src/fsmes/domain/masterdata.py +222 -0
  286. factorysemantics_mes-0.3.1/src/fsmes/domain/plant_settings.py +76 -0
  287. factorysemantics_mes-0.3.1/src/fsmes/domain/quality.py +305 -0
  288. factorysemantics_mes-0.3.1/src/fsmes/domain/reasons.py +81 -0
  289. factorysemantics_mes-0.3.1/src/fsmes/domain/severities.py +94 -0
  290. factorysemantics_mes-0.3.1/src/fsmes/domain/timeseries.py +37 -0
  291. factorysemantics_mes-0.3.1/src/fsmes/domain/triggers.py +90 -0
  292. factorysemantics_mes-0.3.1/src/fsmes/domain/workorders.py +113 -0
  293. factorysemantics_mes-0.3.1/src/fsmes/firstrun.py +259 -0
  294. factorysemantics_mes-0.3.1/src/fsmes/fleet/commands.py +411 -0
  295. factorysemantics_mes-0.3.1/src/fsmes/fleet/console.py +269 -0
  296. factorysemantics_mes-0.3.1/src/fsmes/fleet/logsink.py +101 -0
  297. factorysemantics_mes-0.3.1/src/fsmes/fleet/observe.py +203 -0
  298. factorysemantics_mes-0.3.1/src/fsmes/fleet/owned.py +500 -0
  299. factorysemantics_mes-0.3.1/src/fsmes/integrations/erp/b2mml.py +194 -0
  300. factorysemantics_mes-0.3.1/src/fsmes/integrations/erp/base.py +277 -0
  301. factorysemantics_mes-0.3.1/src/fsmes/integrations/erp/contract.py +156 -0
  302. factorysemantics_mes-0.3.1/src/fsmes/integrations/erp/erpnext_adapter.py +517 -0
  303. factorysemantics_mes-0.3.1/src/fsmes/integrations/erp/examples.py +267 -0
  304. factorysemantics_mes-0.3.1/src/fsmes/integrations/erp/rest_adapter.py +111 -0
  305. factorysemantics_mes-0.3.1/src/fsmes/integrations/erp/schema.py +411 -0
  306. factorysemantics_mes-0.3.1/src/fsmes/integrations/erp/scorecard.py +696 -0
  307. factorysemantics_mes-0.3.1/src/fsmes/integrations/erp/sync.py +84 -0
  308. factorysemantics_mes-0.3.1/src/fsmes/integrations/erp/validate.py +383 -0
  309. factorysemantics_mes-0.3.1/src/fsmes/integrations/events.py +139 -0
  310. factorysemantics_mes-0.3.1/src/fsmes/integrations/jev/__init__.py +64 -0
  311. factorysemantics_mes-0.3.1/src/fsmes/integrations/jev/client.py +309 -0
  312. factorysemantics_mes-0.3.1/src/fsmes/integrations/jev/transport.py +433 -0
  313. factorysemantics_mes-0.3.1/src/fsmes/integrations/opc/agent.py +1279 -0
  314. factorysemantics_mes-0.3.1/src/fsmes/integrations/opc/csv_replay.py +596 -0
  315. factorysemantics_mes-0.3.1/src/fsmes/integrations/opc/simulator.py +103 -0
  316. factorysemantics_mes-0.3.1/src/fsmes/integrations/opc/tag_map.py +340 -0
  317. factorysemantics_mes-0.3.1/src/fsmes/lab/__init__.py +22 -0
  318. factorysemantics_mes-0.3.1/src/fsmes/lab/assist_eval.py +555 -0
  319. factorysemantics_mes-0.3.1/src/fsmes/lab/assist_fixtures.py +901 -0
  320. factorysemantics_mes-0.3.1/src/fsmes/lab/assist_seed.py +336 -0
  321. factorysemantics_mes-0.3.1/src/fsmes/lab/build.py +203 -0
  322. factorysemantics_mes-0.3.1/src/fsmes/lab/console.py +236 -0
  323. factorysemantics_mes-0.3.1/src/fsmes/lab/feedback.py +229 -0
  324. factorysemantics_mes-0.3.1/src/fsmes/lab/measure.py +1529 -0
  325. factorysemantics_mes-0.3.1/src/fsmes/lab/observe.py +233 -0
  326. factorysemantics_mes-0.3.1/src/fsmes/lab/plan.py +302 -0
  327. factorysemantics_mes-0.3.1/src/fsmes/lab/report.py +885 -0
  328. factorysemantics_mes-0.3.1/src/fsmes/lab/review.py +333 -0
  329. factorysemantics_mes-0.3.1/src/fsmes/lab/run.py +497 -0
  330. factorysemantics_mes-0.3.1/src/fsmes/lab/truth.py +255 -0
  331. factorysemantics_mes-0.3.1/src/fsmes/logging.py +146 -0
  332. factorysemantics_mes-0.3.1/src/fsmes/mcp/analysis.py +685 -0
  333. factorysemantics_mes-0.3.1/src/fsmes/mcp/maintenance.py +262 -0
  334. factorysemantics_mes-0.3.1/src/fsmes/mcp/masterdata.py +143 -0
  335. factorysemantics_mes-0.3.1/src/fsmes/mcp/quality.py +355 -0
  336. factorysemantics_mes-0.3.1/src/fsmes/mcp/reasons.py +64 -0
  337. factorysemantics_mes-0.3.1/src/fsmes/mcp/scheduling.py +93 -0
  338. factorysemantics_mes-0.3.1/src/fsmes/mcp/settings.py +482 -0
  339. factorysemantics_mes-0.3.1/src/fsmes/mcp/severities.py +58 -0
  340. factorysemantics_mes-0.3.1/src/fsmes/mcp/triggers.py +60 -0
  341. factorysemantics_mes-0.3.1/src/fsmes/mcp_server.py +1052 -0
  342. factorysemantics_mes-0.3.1/src/fsmes/migration.py +84 -0
  343. factorysemantics_mes-0.3.1/src/fsmes/migrations/versions/a1c47f8b2d93_what_a_maintenance_job_needs_of_the_line.py +66 -0
  344. factorysemantics_mes-0.3.1/src/fsmes/migrations/versions/a1c5e70b2d94_plant_settings.py +57 -0
  345. factorysemantics_mes-0.3.1/src/fsmes/migrations/versions/a9c4e17b3d60_spc_signals_act.py +67 -0
  346. factorysemantics_mes-0.3.1/src/fsmes/migrations/versions/b1f4c73a9e08_nonconformance_lifecycle.py +45 -0
  347. factorysemantics_mes-0.3.1/src/fsmes/migrations/versions/b1f4c7a2e903_production_logs_equipment_ts_index.py +36 -0
  348. factorysemantics_mes-0.3.1/src/fsmes/migrations/versions/b3f9c07e51ad_ai_turns.py +55 -0
  349. factorysemantics_mes-0.3.1/src/fsmes/migrations/versions/b9f31c7a4e50_a_characteristic_inspected_n_at_a_time.py +94 -0
  350. factorysemantics_mes-0.3.1/src/fsmes/migrations/versions/c1e7a04b93d5_downtime_reasons.py +57 -0
  351. factorysemantics_mes-0.3.1/src/fsmes/migrations/versions/c3d7e91a4b28_equipment_connections.py +52 -0
  352. factorysemantics_mes-0.3.1/src/fsmes/migrations/versions/c6a4b81f39d7_shift_attribution.py +181 -0
  353. factorysemantics_mes-0.3.1/src/fsmes/migrations/versions/c7a2e94b16d3_five_facts_the_plant_was_dropping.py +79 -0
  354. factorysemantics_mes-0.3.1/src/fsmes/migrations/versions/d2b7e51c9a04_nc_severities.py +56 -0
  355. factorysemantics_mes-0.3.1/src/fsmes/migrations/versions/d4e8a1c93b70_a_characteristic_the_plant_counts.py +105 -0
  356. factorysemantics_mes-0.3.1/src/fsmes/migrations/versions/d7b4e92a1c58_the_maintenance_crew_and_its_rules.py +155 -0
  357. factorysemantics_mes-0.3.1/src/fsmes/migrations/versions/e3c8a17d5b46_gauge_warning_and_pieces.py +55 -0
  358. factorysemantics_mes-0.3.1/src/fsmes/modules.py +1406 -0
  359. factorysemantics_mes-0.3.1/src/fsmes/pack/__init__.py +24 -0
  360. factorysemantics_mes-0.3.1/src/fsmes/pack/apply.py +626 -0
  361. factorysemantics_mes-0.3.1/src/fsmes/pack/check.py +1204 -0
  362. factorysemantics_mes-0.3.1/src/fsmes/pack/fleet.py +147 -0
  363. factorysemantics_mes-0.3.1/src/fsmes/pack/format.py +1156 -0
  364. factorysemantics_mes-0.3.1/src/fsmes/pack/masterdata.py +982 -0
  365. factorysemantics_mes-0.3.1/src/fsmes/pack/migrate.py +239 -0
  366. factorysemantics_mes-0.3.1/src/fsmes/pack/plan.py +151 -0
  367. factorysemantics_mes-0.3.1/src/fsmes/pack/repoint.py +89 -0
  368. factorysemantics_mes-0.3.1/src/fsmes/plant.py +911 -0
  369. factorysemantics_mes-0.3.1/src/fsmes/seed_kepsim.py +218 -0
  370. factorysemantics_mes-0.3.1/src/fsmes/services/__init__.py +48 -0
  371. factorysemantics_mes-0.3.1/src/fsmes/services/agent.py +2209 -0
  372. factorysemantics_mes-0.3.1/src/fsmes/services/ai_status.py +296 -0
  373. factorysemantics_mes-0.3.1/src/fsmes/services/ai_trace.py +330 -0
  374. factorysemantics_mes-0.3.1/src/fsmes/services/analysis.py +1094 -0
  375. factorysemantics_mes-0.3.1/src/fsmes/services/assist_eval.py +1142 -0
  376. factorysemantics_mes-0.3.1/src/fsmes/services/assistant.py +2799 -0
  377. factorysemantics_mes-0.3.1/src/fsmes/services/audit.py +69 -0
  378. factorysemantics_mes-0.3.1/src/fsmes/services/auth.py +247 -0
  379. factorysemantics_mes-0.3.1/src/fsmes/services/calendar.py +592 -0
  380. factorysemantics_mes-0.3.1/src/fsmes/services/capabilities.py +345 -0
  381. factorysemantics_mes-0.3.1/src/fsmes/services/coa.py +537 -0
  382. factorysemantics_mes-0.3.1/src/fsmes/services/connection.py +273 -0
  383. factorysemantics_mes-0.3.1/src/fsmes/services/coverage.py +809 -0
  384. factorysemantics_mes-0.3.1/src/fsmes/services/design.py +477 -0
  385. factorysemantics_mes-0.3.1/src/fsmes/services/dispatch.py +1475 -0
  386. factorysemantics_mes-0.3.1/src/fsmes/services/documents.py +254 -0
  387. factorysemantics_mes-0.3.1/src/fsmes/services/drafting.py +181 -0
  388. factorysemantics_mes-0.3.1/src/fsmes/services/equipment.py +552 -0
  389. factorysemantics_mes-0.3.1/src/fsmes/services/erp.py +414 -0
  390. factorysemantics_mes-0.3.1/src/fsmes/services/execution.py +452 -0
  391. factorysemantics_mes-0.3.1/src/fsmes/services/gauges.py +303 -0
  392. factorysemantics_mes-0.3.1/src/fsmes/services/inbound.py +316 -0
  393. factorysemantics_mes-0.3.1/src/fsmes/services/line.py +373 -0
  394. factorysemantics_mes-0.3.1/src/fsmes/services/line_clock.py +83 -0
  395. factorysemantics_mes-0.3.1/src/fsmes/services/maintenance.py +522 -0
  396. factorysemantics_mes-0.3.1/src/fsmes/services/masterdata.py +360 -0
  397. factorysemantics_mes-0.3.1/src/fsmes/services/moment.py +542 -0
  398. factorysemantics_mes-0.3.1/src/fsmes/services/oee.py +194 -0
  399. factorysemantics_mes-0.3.1/src/fsmes/services/outbox.py +168 -0
  400. factorysemantics_mes-0.3.1/src/fsmes/services/plant_settings.py +417 -0
  401. factorysemantics_mes-0.3.1/src/fsmes/services/quality.py +708 -0
  402. factorysemantics_mes-0.3.1/src/fsmes/services/reasons.py +205 -0
  403. factorysemantics_mes-0.3.1/src/fsmes/services/review.py +611 -0
  404. factorysemantics_mes-0.3.1/src/fsmes/services/scheduling.py +321 -0
  405. factorysemantics_mes-0.3.1/src/fsmes/services/serialization.py +881 -0
  406. factorysemantics_mes-0.3.1/src/fsmes/services/severities.py +221 -0
  407. factorysemantics_mes-0.3.1/src/fsmes/services/spc.py +2037 -0
  408. factorysemantics_mes-0.3.1/src/fsmes/services/spc_point.py +1294 -0
  409. factorysemantics_mes-0.3.1/src/fsmes/services/state_block.py +915 -0
  410. factorysemantics_mes-0.3.1/src/fsmes/services/tags.py +404 -0
  411. factorysemantics_mes-0.3.1/src/fsmes/services/trace_analysis.py +1049 -0
  412. factorysemantics_mes-0.3.1/src/fsmes/services/trend.py +700 -0
  413. factorysemantics_mes-0.3.1/src/fsmes/services/triggers.py +400 -0
  414. factorysemantics_mes-0.3.1/src/fsmes/services/uns.py +268 -0
  415. factorysemantics_mes-0.3.1/src/fsmes/services/vocabulary.py +418 -0
  416. factorysemantics_mes-0.3.1/src/fsmes/services/walkthroughs.py +185 -0
  417. factorysemantics_mes-0.3.1/src/fsmes/services/workorders.py +292 -0
  418. factorysemantics_mes-0.3.1/src/fsmes/shadow.py +617 -0
  419. factorysemantics_mes-0.3.1/src/fsmes/shape/__init__.py +31 -0
  420. factorysemantics_mes-0.3.1/src/fsmes/shape/model.py +725 -0
  421. factorysemantics_mes-0.3.1/src/fsmes/shape/pack.py +581 -0
  422. factorysemantics_mes-0.3.1/src/fsmes/shape/read.py +130 -0
  423. factorysemantics_mes-0.3.1/src/fsmes/sim/__init__.py +17 -0
  424. factorysemantics_mes-0.3.1/src/fsmes/sim/agent_eval.py +627 -0
  425. factorysemantics_mes-0.3.1/src/fsmes/sim/calibration.py +866 -0
  426. factorysemantics_mes-0.3.1/src/fsmes/sim/config_audit.py +920 -0
  427. factorysemantics_mes-0.3.1/src/fsmes/sim/config_audit_curated.py +1022 -0
  428. factorysemantics_mes-0.3.1/src/fsmes/sim/generate.py +943 -0
  429. factorysemantics_mes-0.3.1/src/fsmes/sim/labelled.py +645 -0
  430. factorysemantics_mes-0.3.1/src/fsmes/sim/measurement.py +482 -0
  431. factorysemantics_mes-0.3.1/src/fsmes/sim/operations.py +2621 -0
  432. factorysemantics_mes-0.3.1/src/fsmes/sim/runner.py +786 -0
  433. factorysemantics_mes-0.3.1/src/fsmes/sim/score.py +839 -0
  434. factorysemantics_mes-0.3.1/src/fsmes/sim/sweep.py +146 -0
  435. factorysemantics_mes-0.3.1/src/fsmes/sim/triage.py +339 -0
  436. factorysemantics_mes-0.3.1/src/fsmes/sim/truth.py +169 -0
  437. factorysemantics_mes-0.3.1/src/fsmes/sim/ui_check.py +420 -0
  438. factorysemantics_mes-0.3.1/src/fsmes/skills.py +395 -0
  439. factorysemantics_mes-0.3.1/src/fsmes/standalone.py +508 -0
  440. factorysemantics_mes-0.3.1/src/fsmes/storage.py +212 -0
  441. factorysemantics_mes-0.3.1/src/fsmes/web/adjustments.html +90 -0
  442. factorysemantics_mes-0.3.1/src/fsmes/web/adjustments.js +145 -0
  443. factorysemantics_mes-0.3.1/src/fsmes/web/admin.html +127 -0
  444. factorysemantics_mes-0.3.1/src/fsmes/web/admin.js +409 -0
  445. factorysemantics_mes-0.3.1/src/fsmes/web/ai.css +166 -0
  446. factorysemantics_mes-0.3.1/src/fsmes/web/ai.html +267 -0
  447. factorysemantics_mes-0.3.1/src/fsmes/web/ai.js +1354 -0
  448. factorysemantics_mes-0.3.1/src/fsmes/web/analysis.css +155 -0
  449. factorysemantics_mes-0.3.1/src/fsmes/web/analysis.html +118 -0
  450. factorysemantics_mes-0.3.1/src/fsmes/web/analysis.js +401 -0
  451. factorysemantics_mes-0.3.1/src/fsmes/web/app.js +882 -0
  452. factorysemantics_mes-0.3.1/src/fsmes/web/assist.js +1057 -0
  453. factorysemantics_mes-0.3.1/src/fsmes/web/common.js +1150 -0
  454. factorysemantics_mes-0.3.1/src/fsmes/web/config.html +73 -0
  455. factorysemantics_mes-0.3.1/src/fsmes/web/config.js +354 -0
  456. factorysemantics_mes-0.3.1/src/fsmes/web/design.css +72 -0
  457. factorysemantics_mes-0.3.1/src/fsmes/web/design.js +230 -0
  458. factorysemantics_mes-0.3.1/src/fsmes/web/fleet.css +69 -0
  459. factorysemantics_mes-0.3.1/src/fsmes/web/fleet.html +67 -0
  460. factorysemantics_mes-0.3.1/src/fsmes/web/fleet.js +200 -0
  461. factorysemantics_mes-0.3.1/src/fsmes/web/gauges.html +130 -0
  462. factorysemantics_mes-0.3.1/src/fsmes/web/gauges.js +161 -0
  463. factorysemantics_mes-0.3.1/src/fsmes/web/index.html +234 -0
  464. factorysemantics_mes-0.3.1/src/fsmes/web/instructions.html +101 -0
  465. factorysemantics_mes-0.3.1/src/fsmes/web/instructions.js +313 -0
  466. factorysemantics_mes-0.3.1/src/fsmes/web/kit.js +3132 -0
  467. factorysemantics_mes-0.3.1/src/fsmes/web/line-page.js +149 -0
  468. factorysemantics_mes-0.3.1/src/fsmes/web/line.css +235 -0
  469. factorysemantics_mes-0.3.1/src/fsmes/web/machine.css +144 -0
  470. factorysemantics_mes-0.3.1/src/fsmes/web/machine.html +235 -0
  471. factorysemantics_mes-0.3.1/src/fsmes/web/machine.js +1281 -0
  472. factorysemantics_mes-0.3.1/src/fsmes/web/machines.js +139 -0
  473. factorysemantics_mes-0.3.1/src/fsmes/web/maintenance.css +117 -0
  474. factorysemantics_mes-0.3.1/src/fsmes/web/maintenance.html +237 -0
  475. factorysemantics_mes-0.3.1/src/fsmes/web/maintenance.js +872 -0
  476. factorysemantics_mes-0.3.1/src/fsmes/web/masterdata.html +208 -0
  477. factorysemantics_mes-0.3.1/src/fsmes/web/masterdata.js +351 -0
  478. factorysemantics_mes-0.3.1/src/fsmes/web/ops.js +315 -0
  479. factorysemantics_mes-0.3.1/src/fsmes/web/orders.css +130 -0
  480. factorysemantics_mes-0.3.1/src/fsmes/web/orders.html +214 -0
  481. factorysemantics_mes-0.3.1/src/fsmes/web/orders.js +616 -0
  482. factorysemantics_mes-0.3.1/src/fsmes/web/quality.css +78 -0
  483. factorysemantics_mes-0.3.1/src/fsmes/web/quality.html +159 -0
  484. factorysemantics_mes-0.3.1/src/fsmes/web/quality.js +769 -0
  485. factorysemantics_mes-0.3.1/src/fsmes/web/reasons.html +114 -0
  486. factorysemantics_mes-0.3.1/src/fsmes/web/reasons.js +289 -0
  487. factorysemantics_mes-0.3.1/src/fsmes/web/schedule.html +135 -0
  488. factorysemantics_mes-0.3.1/src/fsmes/web/schedule.js +209 -0
  489. factorysemantics_mes-0.3.1/src/fsmes/web/severities.html +111 -0
  490. factorysemantics_mes-0.3.1/src/fsmes/web/severities.js +285 -0
  491. factorysemantics_mes-0.3.1/src/fsmes/web/spc.css +39 -0
  492. factorysemantics_mes-0.3.1/src/fsmes/web/spc.html +155 -0
  493. factorysemantics_mes-0.3.1/src/fsmes/web/spc.js +1791 -0
  494. factorysemantics_mes-0.3.1/src/fsmes/web/station.css +119 -0
  495. factorysemantics_mes-0.3.1/src/fsmes/web/station.html +171 -0
  496. factorysemantics_mes-0.3.1/src/fsmes/web/station.js +777 -0
  497. factorysemantics_mes-0.3.1/src/fsmes/web/styles.css +981 -0
  498. factorysemantics_mes-0.3.1/src/fsmes/web/themes.css +116 -0
  499. factorysemantics_mes-0.3.1/src/fsmes/web/trace.html +121 -0
  500. factorysemantics_mes-0.3.1/src/fsmes/web/triggers.html +122 -0
  501. factorysemantics_mes-0.3.1/src/fsmes/web/triggers.js +196 -0
  502. factorysemantics_mes-0.3.1/tests/assist_suite/README.md +62 -0
  503. factorysemantics_mes-0.3.1/tests/assist_suite/admin.toml +701 -0
  504. factorysemantics_mes-0.3.1/tests/assist_suite/agent.toml +156 -0
  505. factorysemantics_mes-0.3.1/tests/assist_suite/analyst.toml +455 -0
  506. factorysemantics_mes-0.3.1/tests/assist_suite/operator.toml +424 -0
  507. factorysemantics_mes-0.3.1/tests/assist_suite/supervisor.toml +344 -0
  508. factorysemantics_mes-0.3.1/tests/conftest.py +235 -0
  509. factorysemantics_mes-0.3.1/tests/fixtures/labelled-run/line/bench.json +28 -0
  510. factorysemantics_mes-0.3.1/tests/fixtures/labelled-run/packs/bench/tag_map.json +14 -0
  511. factorysemantics_mes-0.3.1/tests/fixtures/labelled-run/recorded/bench-scorecard.json +25 -0
  512. factorysemantics_mes-0.3.1/tests/fixtures/labelled-run/replay/bench/Line.csv +401 -0
  513. factorysemantics_mes-0.3.1/tests/fixtures/labelled-run/replay/bench/Pack.csv +401 -0
  514. factorysemantics_mes-0.3.1/tests/fixtures/labelled-run/replay/bench/Press.csv +401 -0
  515. factorysemantics_mes-0.3.1/tests/fixtures/labelled-run/replay/bench/Trim.csv +401 -0
  516. factorysemantics_mes-0.3.1/tests/fixtures/labelled-run/replay/bench/Weld.csv +401 -0
  517. factorysemantics_mes-0.3.1/tests/fixtures/labelled-run/replay/bench/schema.ini +63 -0
  518. factorysemantics_mes-0.3.1/tests/fixtures/labelled-run/scores.json +39 -0
  519. factorysemantics_mes-0.3.1/tests/fixtures/labelled-set.json +625 -0
  520. factorysemantics_mes-0.3.1/tests/live_replies.py +28 -0
  521. factorysemantics_mes-0.3.1/tests/page_anchors.py +60 -0
  522. factorysemantics_mes-0.3.1/tests/test_a_block_on_the_state_timeline_carries_the_records_behind_it.py +742 -0
  523. factorysemantics_mes-0.3.1/tests/test_a_characteristic_inspected_five_at_a_time.py +593 -0
  524. factorysemantics_mes-0.3.1/tests/test_a_characteristic_the_plant_counts.py +788 -0
  525. factorysemantics_mes-0.3.1/tests/test_a_chart_draws_only_what_the_api_measured.py +2733 -0
  526. factorysemantics_mes-0.3.1/tests/test_a_plant_books_while_its_dashboard_is_read.py +436 -0
  527. factorysemantics_mes-0.3.1/tests/test_a_plant_from_the_package_writes_only_to_a_users_own_directory.py +329 -0
  528. factorysemantics_mes-0.3.1/tests/test_a_plant_logs_at_a_rate_a_year_can_stand.py +217 -0
  529. factorysemantics_mes-0.3.1/tests/test_a_plant_records_what_each_of_its_processes_is.py +136 -0
  530. factorysemantics_mes-0.3.1/tests/test_a_plant_shape_built_blind_from_an_unknown_sql_mes_is_the_bottling_line.py +406 -0
  531. factorysemantics_mes-0.3.1/tests/test_a_plant_starts_and_stops_the_same_way_on_windows.py +254 -0
  532. factorysemantics_mes-0.3.1/tests/test_a_point_on_the_control_chart_carries_the_records_behind_it.py +907 -0
  533. factorysemantics_mes-0.3.1/tests/test_a_refusal_names_the_capability_and_who_holds_it.py +389 -0
  534. factorysemantics_mes-0.3.1/tests/test_a_sample_on_the_control_chart_carries_the_five_bottles_behind_it.py +626 -0
  535. factorysemantics_mes-0.3.1/tests/test_a_shift_of_stops_comes_out_in_the_plants_own_proportions.py +89 -0
  536. factorysemantics_mes-0.3.1/tests/test_a_signature_they_hold_is_a_walk_and_not_a_refusal.py +145 -0
  537. factorysemantics_mes-0.3.1/tests/test_a_walk_waits_for_a_control_the_page_is_still_drawing.py +313 -0
  538. factorysemantics_mes-0.3.1/tests/test_agent.py +1369 -0
  539. factorysemantics_mes-0.3.1/tests/test_agent_batching.py +413 -0
  540. factorysemantics_mes-0.3.1/tests/test_agent_eval.py +200 -0
  541. factorysemantics_mes-0.3.1/tests/test_ai_status.py +217 -0
  542. factorysemantics_mes-0.3.1/tests/test_an_analysis_counts_people_before_it_names_one.py +860 -0
  543. factorysemantics_mes-0.3.1/tests/test_an_exploration_draws_what_the_plant_measured.py +658 -0
  544. factorysemantics_mes-0.3.1/tests/test_analysis.py +466 -0
  545. factorysemantics_mes-0.3.1/tests/test_api.py +103 -0
  546. factorysemantics_mes-0.3.1/tests/test_approval_review.py +592 -0
  547. factorysemantics_mes-0.3.1/tests/test_assist_suite_scripted.py +1725 -0
  548. factorysemantics_mes-0.3.1/tests/test_assistant.py +216 -0
  549. factorysemantics_mes-0.3.1/tests/test_bottling_pack.py +381 -0
  550. factorysemantics_mes-0.3.1/tests/test_capabilities.py +440 -0
  551. factorysemantics_mes-0.3.1/tests/test_clicking_a_block_on_the_state_timeline_opens_the_records_behind_it.py +653 -0
  552. factorysemantics_mes-0.3.1/tests/test_clicking_a_lot_on_the_spc_chart_opens_which_defects.py +886 -0
  553. factorysemantics_mes-0.3.1/tests/test_clicking_a_point_on_the_spc_chart_opens_the_records_behind_it.py +1062 -0
  554. factorysemantics_mes-0.3.1/tests/test_clicking_a_point_on_the_trend_graph_opens_the_records_behind_it.py +949 -0
  555. factorysemantics_mes-0.3.1/tests/test_clicking_a_sample_on_the_spc_chart_opens_the_five_bottles.py +896 -0
  556. factorysemantics_mes-0.3.1/tests/test_coa.py +92 -0
  557. factorysemantics_mes-0.3.1/tests/test_config_audit.py +499 -0
  558. factorysemantics_mes-0.3.1/tests/test_configuration_sections.py +187 -0
  559. factorysemantics_mes-0.3.1/tests/test_core_purity.py +425 -0
  560. factorysemantics_mes-0.3.1/tests/test_coverage_ledger.py +386 -0
  561. factorysemantics_mes-0.3.1/tests/test_design.py +225 -0
  562. factorysemantics_mes-0.3.1/tests/test_doctor_writes_one_file_with_nothing_of_yours_in_it.py +498 -0
  563. factorysemantics_mes-0.3.1/tests/test_downtime_reasons.py +567 -0
  564. factorysemantics_mes-0.3.1/tests/test_equipment_oee.py +166 -0
  565. factorysemantics_mes-0.3.1/tests/test_erp_contract.py +247 -0
  566. factorysemantics_mes-0.3.1/tests/test_erp_roundtrip.py +60 -0
  567. factorysemantics_mes-0.3.1/tests/test_every_browser_test_is_in_the_browser_tier.py +69 -0
  568. factorysemantics_mes-0.3.1/tests/test_every_command_the_assistant_folder_tells_you_to_run_exists.py +281 -0
  569. factorysemantics_mes-0.3.1/tests/test_every_settings_list_fits_in_one_tool_result.py +138 -0
  570. factorysemantics_mes-0.3.1/tests/test_every_show_me_lands_on_the_real_control.py +643 -0
  571. factorysemantics_mes-0.3.1/tests/test_every_write_route_has_a_tool_or_a_reason.py +245 -0
  572. factorysemantics_mes-0.3.1/tests/test_every_write_tool_names_the_capability_its_route_demands.py +172 -0
  573. factorysemantics_mes-0.3.1/tests/test_everything_the_model_said_in_one_turn_reaches_the_reply.py +289 -0
  574. factorysemantics_mes-0.3.1/tests/test_execution.py +62 -0
  575. factorysemantics_mes-0.3.1/tests/test_fleet_console.py +448 -0
  576. factorysemantics_mes-0.3.1/tests/test_fleet_create_makes_a_usable_plant.py +325 -0
  577. factorysemantics_mes-0.3.1/tests/test_fleet_ownership.py +666 -0
  578. factorysemantics_mes-0.3.1/tests/test_fleet_plan.py +224 -0
  579. factorysemantics_mes-0.3.1/tests/test_fsmes_runs_as_a_module_when_it_is_not_on_the_path.py +63 -0
  580. factorysemantics_mes-0.3.1/tests/test_jev_agent_eval_scoring.py +263 -0
  581. factorysemantics_mes-0.3.1/tests/test_jev_calibration.py +519 -0
  582. factorysemantics_mes-0.3.1/tests/test_jev_fail_safe.py +160 -0
  583. factorysemantics_mes-0.3.1/tests/test_jev_labelled_set.py +270 -0
  584. factorysemantics_mes-0.3.1/tests/test_jev_run_log_triage.py +310 -0
  585. factorysemantics_mes-0.3.1/tests/test_jev_sdk_surface.py +258 -0
  586. factorysemantics_mes-0.3.1/tests/test_kepsim.py +367 -0
  587. factorysemantics_mes-0.3.1/tests/test_kpi_budget.py +200 -0
  588. factorysemantics_mes-0.3.1/tests/test_lab_connection.py +209 -0
  589. factorysemantics_mes-0.3.1/tests/test_lab_console.py +221 -0
  590. factorysemantics_mes-0.3.1/tests/test_lab_experiments.py +693 -0
  591. factorysemantics_mes-0.3.1/tests/test_lab_feedback.py +331 -0
  592. factorysemantics_mes-0.3.1/tests/test_lab_latency.py +467 -0
  593. factorysemantics_mes-0.3.1/tests/test_lab_order_book.py +574 -0
  594. factorysemantics_mes-0.3.1/tests/test_lab_orders.py +259 -0
  595. factorysemantics_mes-0.3.1/tests/test_lab_scenarios.py +271 -0
  596. factorysemantics_mes-0.3.1/tests/test_line_api.py +329 -0
  597. factorysemantics_mes-0.3.1/tests/test_live_admin_settings.py +464 -0
  598. factorysemantics_mes-0.3.1/tests/test_live_engineering_settings.py +613 -0
  599. factorysemantics_mes-0.3.1/tests/test_live_plant_settings.py +390 -0
  600. factorysemantics_mes-0.3.1/tests/test_maintenance.py +259 -0
  601. factorysemantics_mes-0.3.1/tests/test_maintenance_work_goes_to_the_right_trade.py +479 -0
  602. factorysemantics_mes-0.3.1/tests/test_mcp_product.py +853 -0
  603. factorysemantics_mes-0.3.1/tests/test_megafactory.py +163 -0
  604. factorysemantics_mes-0.3.1/tests/test_migrations_have_one_head.py +61 -0
  605. factorysemantics_mes-0.3.1/tests/test_module_wall.py +319 -0
  606. factorysemantics_mes-0.3.1/tests/test_nc_severities.py +489 -0
  607. factorysemantics_mes-0.3.1/tests/test_no_tenant_literals.py +362 -0
  608. factorysemantics_mes-0.3.1/tests/test_opc_disconnection.py +417 -0
  609. factorysemantics_mes-0.3.1/tests/test_outbox_events.py +257 -0
  610. factorysemantics_mes-0.3.1/tests/test_overproduction.py +218 -0
  611. factorysemantics_mes-0.3.1/tests/test_pack_format.py +834 -0
  612. factorysemantics_mes-0.3.1/tests/test_pack_third.py +220 -0
  613. factorysemantics_mes-0.3.1/tests/test_performance_at_replay_speed.py +376 -0
  614. factorysemantics_mes-0.3.1/tests/test_plant_identity.py +276 -0
  615. factorysemantics_mes-0.3.1/tests/test_plant_scale_lists.py +341 -0
  616. factorysemantics_mes-0.3.1/tests/test_plant_scale_ui.py +134 -0
  617. factorysemantics_mes-0.3.1/tests/test_plant_serve_only.py +43 -0
  618. factorysemantics_mes-0.3.1/tests/test_promote_script.py +502 -0
  619. factorysemantics_mes-0.3.1/tests/test_quality.py +211 -0
  620. factorysemantics_mes-0.3.1/tests/test_quality_numbers.py +431 -0
  621. factorysemantics_mes-0.3.1/tests/test_read_never_waits.py +326 -0
  622. factorysemantics_mes-0.3.1/tests/test_route_coverage.py +135 -0
  623. factorysemantics_mes-0.3.1/tests/test_routing_depth.py +177 -0
  624. factorysemantics_mes-0.3.1/tests/test_run_ports.py +251 -0
  625. factorysemantics_mes-0.3.1/tests/test_scale.py +83 -0
  626. factorysemantics_mes-0.3.1/tests/test_serial_scale.py +343 -0
  627. factorysemantics_mes-0.3.1/tests/test_shadow_mode.py +516 -0
  628. factorysemantics_mes-0.3.1/tests/test_shadow_scorecard.py +430 -0
  629. factorysemantics_mes-0.3.1/tests/test_shift_attribution.py +484 -0
  630. factorysemantics_mes-0.3.1/tests/test_sim.py +441 -0
  631. factorysemantics_mes-0.3.1/tests/test_spc_gauges.py +231 -0
  632. factorysemantics_mes-0.3.1/tests/test_spc_moving_range.py +291 -0
  633. factorysemantics_mes-0.3.1/tests/test_spc_signals.py +290 -0
  634. factorysemantics_mes-0.3.1/tests/test_sqlite_write_locks.py +258 -0
  635. factorysemantics_mes-0.3.1/tests/test_status_names_its_database.py +231 -0
  636. factorysemantics_mes-0.3.1/tests/test_supply_chain_settings.py +412 -0
  637. factorysemantics_mes-0.3.1/tests/test_sweep_replay.py +216 -0
  638. factorysemantics_mes-0.3.1/tests/test_tags_grouped_the_way_a_real_opc_server_groups_them.py +111 -0
  639. factorysemantics_mes-0.3.1/tests/test_the_ai_screen_shows_a_conversation_and_gates_itself.py +352 -0
  640. factorysemantics_mes-0.3.1/tests/test_the_ai_tab_explores_and_draws_what_it_read.py +851 -0
  641. factorysemantics_mes-0.3.1/tests/test_the_ai_tab_says_what_the_assistant_costs_without_local_ai.py +303 -0
  642. factorysemantics_mes-0.3.1/tests/test_the_analyses_answer_an_agent_the_way_they_answer_a_screen.py +424 -0
  643. factorysemantics_mes-0.3.1/tests/test_the_analysis_agent_is_a_kind_of_its_own.py +520 -0
  644. factorysemantics_mes-0.3.1/tests/test_the_analysis_agent_is_asked_for_the_next_questions.py +81 -0
  645. factorysemantics_mes-0.3.1/tests/test_the_assistant_proposes_rather_than_asking.py +242 -0
  646. factorysemantics_mes-0.3.1/tests/test_the_assistant_reads_before_it_says_no.py +319 -0
  647. factorysemantics_mes-0.3.1/tests/test_the_bottling_shift_leaves_a_chain_a_person_can_walk_back.py +723 -0
  648. factorysemantics_mes-0.3.1/tests/test_the_calendar_tool_names_every_kind_its_api_accepts.py +67 -0
  649. factorysemantics_mes-0.3.1/tests/test_the_chart_comes_into_the_chat_and_stays_clickable.py +922 -0
  650. factorysemantics_mes-0.3.1/tests/test_the_chat_can_open_the_dossier_behind_a_charted_point.py +328 -0
  651. factorysemantics_mes-0.3.1/tests/test_the_control_chart_the_chat_reads_leaves_the_bottles_out.py +162 -0
  652. factorysemantics_mes-0.3.1/tests/test_the_conversation_is_cached_and_not_only_the_catalogue.py +115 -0
  653. factorysemantics_mes-0.3.1/tests/test_the_demo_path_says_what_is_wrong_and_what_to_type.py +247 -0
  654. factorysemantics_mes-0.3.1/tests/test_the_dispatcher_at_three_hundred_people.py +586 -0
  655. factorysemantics_mes-0.3.1/tests/test_the_docker_image_carries_the_packs.py +252 -0
  656. factorysemantics_mes-0.3.1/tests/test_the_gauges_screen_shows_the_two_scales_and_when_each_was_calibrated.py +226 -0
  657. factorysemantics_mes-0.3.1/tests/test_the_panel_can_ask_the_other_agent.py +246 -0
  658. factorysemantics_mes-0.3.1/tests/test_the_panel_keeps_one_brain_through_a_failed_turn.py +333 -0
  659. factorysemantics_mes-0.3.1/tests/test_the_plant_keeps_a_trace_of_what_its_ai_did.py +367 -0
  660. factorysemantics_mes-0.3.1/tests/test_the_plant_stops_dropping_five_facts_it_already_had.py +451 -0
  661. factorysemantics_mes-0.3.1/tests/test_the_release_body_github_will_accept.py +135 -0
  662. factorysemantics_mes-0.3.1/tests/test_the_screens_that_show_a_characteristic_inspected_five_at_a_time.py +492 -0
  663. factorysemantics_mes-0.3.1/tests/test_the_simulated_crew_does_the_work_it_was_given.py +561 -0
  664. factorysemantics_mes-0.3.1/tests/test_the_simulated_floor_plants_causes_an_engineer_can_find.py +1645 -0
  665. factorysemantics_mes-0.3.1/tests/test_the_simulated_floor_signs_in_again_when_its_login_runs_out.py +294 -0
  666. factorysemantics_mes-0.3.1/tests/test_the_skills_zip_holds_exactly_what_it_says_and_nothing_else.py +209 -0
  667. factorysemantics_mes-0.3.1/tests/test_the_spc_chart_wears_the_accepted_chart_look.py +111 -0
  668. factorysemantics_mes-0.3.1/tests/test_the_sql_server_query_set_is_not_sqlite_in_disguise.py +181 -0
  669. factorysemantics_mes-0.3.1/tests/test_the_station_redraws_only_what_changed.py +268 -0
  670. factorysemantics_mes-0.3.1/tests/test_the_station_says_when_no_order_is_open_on_the_plant.py +262 -0
  671. factorysemantics_mes-0.3.1/tests/test_the_supervisor_writes_a_rule_as_a_sentence.py +609 -0
  672. factorysemantics_mes-0.3.1/tests/test_the_supervisors_screen_reads_the_shift_and_writes_a_rule.py +370 -0
  673. factorysemantics_mes-0.3.1/tests/test_the_trend_graph_walks_link_three_of_the_chain.py +340 -0
  674. factorysemantics_mes-0.3.1/tests/test_the_wheel_ships_the_assistant_folder.py +147 -0
  675. factorysemantics_mes-0.3.1/tests/test_the_wheel_ships_the_lab_packs.py +95 -0
  676. factorysemantics_mes-0.3.1/tests/test_two_plants_from_two_shapes_keep_each_plants_own_shape.py +433 -0
  677. factorysemantics_mes-0.3.1/tests/test_two_tags_on_one_axis_and_the_records_behind_a_point.py +538 -0
  678. factorysemantics_mes-0.3.1/tests/test_ui_check.py +226 -0
  679. factorysemantics_mes-0.3.1/tests/test_ui_lists_filter_at_scale.py +401 -0
  680. factorysemantics_mes-0.3.1/tests/test_ui_nav.py +425 -0
  681. factorysemantics_mes-0.3.1/tests/test_ui_oee_above_rated.py +246 -0
  682. factorysemantics_mes-0.3.1/tests/test_walkthroughs.py +152 -0
  683. factorysemantics_mes-0.3.1/tests/test_web.py +432 -0
  684. factorysemantics_mes-0.3.1/tests/test_what_a_maintenance_job_needs_of_the_line.py +234 -0
  685. factorysemantics_mes-0.3.1/tests/ui/baselines/control-room.json +1038 -0
  686. factorysemantics_mes-0.3.1/tests/ui/baselines/daylight.json +1038 -0
  687. factorysemantics_mes-0.3.1/tests/ui/baselines/high-contrast.json +1038 -0
  688. factorysemantics_mes-0.3.1/tests/ui/baselines/night-shift.json +1038 -0
  689. factorysemantics_mes-0.3.1/tests/unknown_mes.py +572 -0
  690. factorysemantics_mes-0.3.1/uv.lock +2352 -0
  691. factorysemantics_mes-0.2.0/.env.example +0 -97
  692. factorysemantics_mes-0.2.0/.github/dependabot.yml +0 -16
  693. factorysemantics_mes-0.2.0/.github/workflows/ci.yml +0 -179
  694. factorysemantics_mes-0.2.0/.github/workflows/dco.yml +0 -26
  695. factorysemantics_mes-0.2.0/.github/workflows/docs.yml +0 -44
  696. factorysemantics_mes-0.2.0/.github/workflows/erpnext-live.yml +0 -165
  697. factorysemantics_mes-0.2.0/.github/workflows/release.yml +0 -143
  698. factorysemantics_mes-0.2.0/.github/workflows/scorecard.yml +0 -28
  699. factorysemantics_mes-0.2.0/.github/workflows/welcome.yml +0 -23
  700. factorysemantics_mes-0.2.0/.gitignore +0 -70
  701. factorysemantics_mes-0.2.0/CHANGELOG.md +0 -965
  702. factorysemantics_mes-0.2.0/CITATION.cff +0 -13
  703. factorysemantics_mes-0.2.0/CONTRIBUTING.md +0 -84
  704. factorysemantics_mes-0.2.0/PKG-INFO +0 -375
  705. factorysemantics_mes-0.2.0/README.md +0 -118
  706. factorysemantics_mes-0.2.0/ROADMAP.md +0 -153
  707. factorysemantics_mes-0.2.0/config/tag_map_kepsim.json +0 -97
  708. factorysemantics_mes-0.2.0/deploy/README.md +0 -95
  709. factorysemantics_mes-0.2.0/deploy/promote.sh +0 -89
  710. factorysemantics_mes-0.2.0/docker/Dockerfile +0 -12
  711. factorysemantics_mes-0.2.0/docs/ARCHITECTURE.md +0 -156
  712. factorysemantics_mes-0.2.0/docs/LANDSCAPE.md +0 -64
  713. factorysemantics_mes-0.2.0/docs/agents/evals.md +0 -27
  714. factorysemantics_mes-0.2.0/docs/agents/write-discipline.md +0 -37
  715. factorysemantics_mes-0.2.0/docs/ai/BUDGET.md +0 -41
  716. factorysemantics_mes-0.2.0/docs/ai/OBSERVABILITY.md +0 -77
  717. factorysemantics_mes-0.2.0/docs/decisions/0023-the-fleet-console-observes.md +0 -347
  718. factorysemantics_mes-0.2.0/docs/decisions/index.md +0 -34
  719. factorysemantics_mes-0.2.0/docs/design/STYLE.md +0 -64
  720. factorysemantics_mes-0.2.0/docs/design/backlog/review-station.md +0 -66
  721. factorysemantics_mes-0.2.0/docs/design/backlog/scrap-reason-codes.md +0 -43
  722. factorysemantics_mes-0.2.0/docs/index.md +0 -69
  723. factorysemantics_mes-0.2.0/docs/operate/compatibility.md +0 -55
  724. factorysemantics_mes-0.2.0/docs/operate/deploy.md +0 -74
  725. factorysemantics_mes-0.2.0/docs/operate/first-plant.md +0 -395
  726. factorysemantics_mes-0.2.0/docs/operate/fleet.md +0 -155
  727. factorysemantics_mes-0.2.0/docs/operate/index.md +0 -33
  728. factorysemantics_mes-0.2.0/docs/operate/opc-readonly.md +0 -243
  729. factorysemantics_mes-0.2.0/docs/operate/packs.md +0 -149
  730. factorysemantics_mes-0.2.0/docs/operate/shadow-mode.md +0 -174
  731. factorysemantics_mes-0.2.0/docs/operate/shadow-scorecard.md +0 -189
  732. factorysemantics_mes-0.2.0/docs/operate/uns.md +0 -284
  733. factorysemantics_mes-0.2.0/docs/operate/upgrade.md +0 -280
  734. factorysemantics_mes-0.2.0/docs/plant/first-line.md +0 -63
  735. factorysemantics_mes-0.2.0/docs/plant/index.md +0 -16
  736. factorysemantics_mes-0.2.0/docs/plant/never-invent-production.md +0 -66
  737. factorysemantics_mes-0.2.0/docs/plant/reading-oee.md +0 -46
  738. factorysemantics_mes-0.2.0/docs/releases/0.2.0.md +0 -136
  739. factorysemantics_mes-0.2.0/docs/releases/index.md +0 -17
  740. factorysemantics_mes-0.2.0/labs/cutlery/init.py +0 -191
  741. factorysemantics_mes-0.2.0/labs/cutlery/plant.toml +0 -45
  742. factorysemantics_mes-0.2.0/labs/cutlery/run_cutlery.py +0 -378
  743. factorysemantics_mes-0.2.0/labs/kepsim/line.json +0 -302
  744. factorysemantics_mes-0.2.0/labs/kepsim/scenario.md +0 -17
  745. factorysemantics_mes-0.2.0/labs/megafactory/full/surfaces.py +0 -370
  746. factorysemantics_mes-0.2.0/labs/multiplant/README.md +0 -133
  747. factorysemantics_mes-0.2.0/labs/multiplant/bottling/init.py +0 -52
  748. factorysemantics_mes-0.2.0/labs/multiplant/bottling/plant.toml +0 -39
  749. factorysemantics_mes-0.2.0/labs/multiplant/bottling/tag_map.json +0 -97
  750. factorysemantics_mes-0.2.0/labs/multiplant/finewire/README.md +0 -59
  751. factorysemantics_mes-0.2.0/labs/multiplant/finewire/masterdata/work_orders.json +0 -3
  752. factorysemantics_mes-0.2.0/labs/multiplant/finewire/plant.toml +0 -97
  753. factorysemantics_mes-0.2.0/labs/multiplant/machining/masterdata/README.md +0 -14
  754. factorysemantics_mes-0.2.0/labs/multiplant/machining/masterdata/work_orders.json +0 -3
  755. factorysemantics_mes-0.2.0/labs/multiplant/machining/plant.toml +0 -34
  756. factorysemantics_mes-0.2.0/labs/multiplant/machining/tag_map.json +0 -53
  757. factorysemantics_mes-0.2.0/mkdocs.yml +0 -165
  758. factorysemantics_mes-0.2.0/pyproject.toml +0 -171
  759. factorysemantics_mes-0.2.0/src/fsmes/__init__.py +0 -17
  760. factorysemantics_mes-0.2.0/src/fsmes/api/app.py +0 -237
  761. factorysemantics_mes-0.2.0/src/fsmes/api/deps.py +0 -119
  762. factorysemantics_mes-0.2.0/src/fsmes/api/idempotency.py +0 -77
  763. factorysemantics_mes-0.2.0/src/fsmes/api/paging.py +0 -59
  764. factorysemantics_mes-0.2.0/src/fsmes/api/routers/adjustments.py +0 -66
  765. factorysemantics_mes-0.2.0/src/fsmes/api/routers/admin.py +0 -176
  766. factorysemantics_mes-0.2.0/src/fsmes/api/routers/analysis.py +0 -78
  767. factorysemantics_mes-0.2.0/src/fsmes/api/routers/assist.py +0 -257
  768. factorysemantics_mes-0.2.0/src/fsmes/api/routers/auth.py +0 -98
  769. factorysemantics_mes-0.2.0/src/fsmes/api/routers/dashboard.py +0 -213
  770. factorysemantics_mes-0.2.0/src/fsmes/api/routers/design.py +0 -130
  771. factorysemantics_mes-0.2.0/src/fsmes/api/routers/equipment.py +0 -94
  772. factorysemantics_mes-0.2.0/src/fsmes/api/routers/kpis.py +0 -37
  773. factorysemantics_mes-0.2.0/src/fsmes/api/routers/maintenance.py +0 -146
  774. factorysemantics_mes-0.2.0/src/fsmes/api/routers/masterdata.py +0 -214
  775. factorysemantics_mes-0.2.0/src/fsmes/api/routers/quality.py +0 -270
  776. factorysemantics_mes-0.2.0/src/fsmes/api/routers/scheduling.py +0 -92
  777. factorysemantics_mes-0.2.0/src/fsmes/api/routers/system.py +0 -150
  778. factorysemantics_mes-0.2.0/src/fsmes/api/routers/triggers.py +0 -96
  779. factorysemantics_mes-0.2.0/src/fsmes/api/routers/workorders.py +0 -243
  780. factorysemantics_mes-0.2.0/src/fsmes/backup.py +0 -365
  781. factorysemantics_mes-0.2.0/src/fsmes/cli.py +0 -2416
  782. factorysemantics_mes-0.2.0/src/fsmes/config.py +0 -411
  783. factorysemantics_mes-0.2.0/src/fsmes/core/oplock.py +0 -67
  784. factorysemantics_mes-0.2.0/src/fsmes/db.py +0 -111
  785. factorysemantics_mes-0.2.0/src/fsmes/demo_feed.py +0 -94
  786. factorysemantics_mes-0.2.0/src/fsmes/domain/__init__.py +0 -123
  787. factorysemantics_mes-0.2.0/src/fsmes/domain/audit.py +0 -32
  788. factorysemantics_mes-0.2.0/src/fsmes/domain/calendar.py +0 -75
  789. factorysemantics_mes-0.2.0/src/fsmes/domain/common.py +0 -15
  790. factorysemantics_mes-0.2.0/src/fsmes/domain/equipment.py +0 -48
  791. factorysemantics_mes-0.2.0/src/fsmes/domain/execution.py +0 -96
  792. factorysemantics_mes-0.2.0/src/fsmes/domain/gauges.py +0 -73
  793. factorysemantics_mes-0.2.0/src/fsmes/domain/maintenance.py +0 -106
  794. factorysemantics_mes-0.2.0/src/fsmes/domain/masterdata.py +0 -198
  795. factorysemantics_mes-0.2.0/src/fsmes/domain/quality.py +0 -76
  796. factorysemantics_mes-0.2.0/src/fsmes/domain/timeseries.py +0 -28
  797. factorysemantics_mes-0.2.0/src/fsmes/domain/triggers.py +0 -85
  798. factorysemantics_mes-0.2.0/src/fsmes/domain/workorders.py +0 -112
  799. factorysemantics_mes-0.2.0/src/fsmes/fleet/commands.py +0 -270
  800. factorysemantics_mes-0.2.0/src/fsmes/fleet/console.py +0 -215
  801. factorysemantics_mes-0.2.0/src/fsmes/fleet/observe.py +0 -98
  802. factorysemantics_mes-0.2.0/src/fsmes/fleet/owned.py +0 -465
  803. factorysemantics_mes-0.2.0/src/fsmes/integrations/erp/b2mml.py +0 -190
  804. factorysemantics_mes-0.2.0/src/fsmes/integrations/erp/base.py +0 -243
  805. factorysemantics_mes-0.2.0/src/fsmes/integrations/erp/contract.py +0 -139
  806. factorysemantics_mes-0.2.0/src/fsmes/integrations/erp/erpnext_adapter.py +0 -469
  807. factorysemantics_mes-0.2.0/src/fsmes/integrations/erp/examples.py +0 -263
  808. factorysemantics_mes-0.2.0/src/fsmes/integrations/erp/rest_adapter.py +0 -97
  809. factorysemantics_mes-0.2.0/src/fsmes/integrations/erp/schema.py +0 -406
  810. factorysemantics_mes-0.2.0/src/fsmes/integrations/erp/scorecard.py +0 -620
  811. factorysemantics_mes-0.2.0/src/fsmes/integrations/erp/sync.py +0 -73
  812. factorysemantics_mes-0.2.0/src/fsmes/integrations/erp/validate.py +0 -357
  813. factorysemantics_mes-0.2.0/src/fsmes/integrations/events.py +0 -108
  814. factorysemantics_mes-0.2.0/src/fsmes/integrations/opc/agent.py +0 -908
  815. factorysemantics_mes-0.2.0/src/fsmes/integrations/opc/csv_replay.py +0 -521
  816. factorysemantics_mes-0.2.0/src/fsmes/integrations/opc/simulator.py +0 -101
  817. factorysemantics_mes-0.2.0/src/fsmes/integrations/opc/tag_map.py +0 -198
  818. factorysemantics_mes-0.2.0/src/fsmes/logging.py +0 -72
  819. factorysemantics_mes-0.2.0/src/fsmes/mcp/maintenance.py +0 -96
  820. factorysemantics_mes-0.2.0/src/fsmes/mcp/masterdata.py +0 -112
  821. factorysemantics_mes-0.2.0/src/fsmes/mcp/quality.py +0 -84
  822. factorysemantics_mes-0.2.0/src/fsmes/mcp/scheduling.py +0 -76
  823. factorysemantics_mes-0.2.0/src/fsmes/mcp/triggers.py +0 -60
  824. factorysemantics_mes-0.2.0/src/fsmes/mcp_server.py +0 -694
  825. factorysemantics_mes-0.2.0/src/fsmes/modules.py +0 -392
  826. factorysemantics_mes-0.2.0/src/fsmes/pack/__init__.py +0 -23
  827. factorysemantics_mes-0.2.0/src/fsmes/pack/apply.py +0 -354
  828. factorysemantics_mes-0.2.0/src/fsmes/pack/check.py +0 -506
  829. factorysemantics_mes-0.2.0/src/fsmes/pack/fleet.py +0 -124
  830. factorysemantics_mes-0.2.0/src/fsmes/pack/format.py +0 -395
  831. factorysemantics_mes-0.2.0/src/fsmes/pack/masterdata.py +0 -271
  832. factorysemantics_mes-0.2.0/src/fsmes/pack/migrate.py +0 -230
  833. factorysemantics_mes-0.2.0/src/fsmes/plant.py +0 -583
  834. factorysemantics_mes-0.2.0/src/fsmes/seed_kepsim.py +0 -184
  835. factorysemantics_mes-0.2.0/src/fsmes/services/__init__.py +0 -22
  836. factorysemantics_mes-0.2.0/src/fsmes/services/agent.py +0 -548
  837. factorysemantics_mes-0.2.0/src/fsmes/services/ai_status.py +0 -292
  838. factorysemantics_mes-0.2.0/src/fsmes/services/analysis.py +0 -527
  839. factorysemantics_mes-0.2.0/src/fsmes/services/assistant.py +0 -838
  840. factorysemantics_mes-0.2.0/src/fsmes/services/audit.py +0 -30
  841. factorysemantics_mes-0.2.0/src/fsmes/services/auth.py +0 -196
  842. factorysemantics_mes-0.2.0/src/fsmes/services/calendar.py +0 -238
  843. factorysemantics_mes-0.2.0/src/fsmes/services/capabilities.py +0 -116
  844. factorysemantics_mes-0.2.0/src/fsmes/services/coa.py +0 -419
  845. factorysemantics_mes-0.2.0/src/fsmes/services/design.py +0 -351
  846. factorysemantics_mes-0.2.0/src/fsmes/services/documents.py +0 -245
  847. factorysemantics_mes-0.2.0/src/fsmes/services/drafting.py +0 -144
  848. factorysemantics_mes-0.2.0/src/fsmes/services/equipment.py +0 -298
  849. factorysemantics_mes-0.2.0/src/fsmes/services/erp.py +0 -267
  850. factorysemantics_mes-0.2.0/src/fsmes/services/execution.py +0 -416
  851. factorysemantics_mes-0.2.0/src/fsmes/services/gauges.py +0 -189
  852. factorysemantics_mes-0.2.0/src/fsmes/services/inbound.py +0 -316
  853. factorysemantics_mes-0.2.0/src/fsmes/services/line.py +0 -364
  854. factorysemantics_mes-0.2.0/src/fsmes/services/maintenance.py +0 -292
  855. factorysemantics_mes-0.2.0/src/fsmes/services/masterdata.py +0 -281
  856. factorysemantics_mes-0.2.0/src/fsmes/services/outbox.py +0 -133
  857. factorysemantics_mes-0.2.0/src/fsmes/services/quality.py +0 -137
  858. factorysemantics_mes-0.2.0/src/fsmes/services/scheduling.py +0 -275
  859. factorysemantics_mes-0.2.0/src/fsmes/services/serialization.py +0 -745
  860. factorysemantics_mes-0.2.0/src/fsmes/services/spc.py +0 -217
  861. factorysemantics_mes-0.2.0/src/fsmes/services/tags.py +0 -401
  862. factorysemantics_mes-0.2.0/src/fsmes/services/triggers.py +0 -323
  863. factorysemantics_mes-0.2.0/src/fsmes/services/uns.py +0 -219
  864. factorysemantics_mes-0.2.0/src/fsmes/services/walkthroughs.py +0 -128
  865. factorysemantics_mes-0.2.0/src/fsmes/services/workorders.py +0 -287
  866. factorysemantics_mes-0.2.0/src/fsmes/shadow.py +0 -575
  867. factorysemantics_mes-0.2.0/src/fsmes/sim/__init__.py +0 -17
  868. factorysemantics_mes-0.2.0/src/fsmes/sim/agent_eval.py +0 -266
  869. factorysemantics_mes-0.2.0/src/fsmes/sim/generate.py +0 -715
  870. factorysemantics_mes-0.2.0/src/fsmes/sim/operations.py +0 -330
  871. factorysemantics_mes-0.2.0/src/fsmes/sim/runner.py +0 -489
  872. factorysemantics_mes-0.2.0/src/fsmes/sim/score.py +0 -252
  873. factorysemantics_mes-0.2.0/src/fsmes/sim/sweep.py +0 -140
  874. factorysemantics_mes-0.2.0/src/fsmes/sim/triage.py +0 -147
  875. factorysemantics_mes-0.2.0/src/fsmes/sim/truth.py +0 -131
  876. factorysemantics_mes-0.2.0/src/fsmes/sim/ui_check.py +0 -361
  877. factorysemantics_mes-0.2.0/src/fsmes/web/adjustments.html +0 -90
  878. factorysemantics_mes-0.2.0/src/fsmes/web/adjustments.js +0 -143
  879. factorysemantics_mes-0.2.0/src/fsmes/web/admin.html +0 -124
  880. factorysemantics_mes-0.2.0/src/fsmes/web/admin.js +0 -373
  881. factorysemantics_mes-0.2.0/src/fsmes/web/analysis.css +0 -140
  882. factorysemantics_mes-0.2.0/src/fsmes/web/analysis.html +0 -113
  883. factorysemantics_mes-0.2.0/src/fsmes/web/analysis.js +0 -271
  884. factorysemantics_mes-0.2.0/src/fsmes/web/app.js +0 -557
  885. factorysemantics_mes-0.2.0/src/fsmes/web/assist.js +0 -694
  886. factorysemantics_mes-0.2.0/src/fsmes/web/common.js +0 -486
  887. factorysemantics_mes-0.2.0/src/fsmes/web/design.css +0 -60
  888. factorysemantics_mes-0.2.0/src/fsmes/web/design.js +0 -215
  889. factorysemantics_mes-0.2.0/src/fsmes/web/fleet.css +0 -61
  890. factorysemantics_mes-0.2.0/src/fsmes/web/fleet.html +0 -64
  891. factorysemantics_mes-0.2.0/src/fsmes/web/fleet.js +0 -132
  892. factorysemantics_mes-0.2.0/src/fsmes/web/gauges.html +0 -116
  893. factorysemantics_mes-0.2.0/src/fsmes/web/gauges.js +0 -150
  894. factorysemantics_mes-0.2.0/src/fsmes/web/index.html +0 -146
  895. factorysemantics_mes-0.2.0/src/fsmes/web/instructions.html +0 -100
  896. factorysemantics_mes-0.2.0/src/fsmes/web/instructions.js +0 -310
  897. factorysemantics_mes-0.2.0/src/fsmes/web/kit.js +0 -180
  898. factorysemantics_mes-0.2.0/src/fsmes/web/line-page.js +0 -144
  899. factorysemantics_mes-0.2.0/src/fsmes/web/line.css +0 -234
  900. factorysemantics_mes-0.2.0/src/fsmes/web/machine.css +0 -88
  901. factorysemantics_mes-0.2.0/src/fsmes/web/machine.html +0 -154
  902. factorysemantics_mes-0.2.0/src/fsmes/web/machine.js +0 -343
  903. factorysemantics_mes-0.2.0/src/fsmes/web/machines.js +0 -137
  904. factorysemantics_mes-0.2.0/src/fsmes/web/maintenance.html +0 -163
  905. factorysemantics_mes-0.2.0/src/fsmes/web/maintenance.js +0 -284
  906. factorysemantics_mes-0.2.0/src/fsmes/web/masterdata.html +0 -200
  907. factorysemantics_mes-0.2.0/src/fsmes/web/masterdata.js +0 -276
  908. factorysemantics_mes-0.2.0/src/fsmes/web/ops.js +0 -296
  909. factorysemantics_mes-0.2.0/src/fsmes/web/orders.css +0 -126
  910. factorysemantics_mes-0.2.0/src/fsmes/web/orders.html +0 -205
  911. factorysemantics_mes-0.2.0/src/fsmes/web/orders.js +0 -547
  912. factorysemantics_mes-0.2.0/src/fsmes/web/quality.css +0 -41
  913. factorysemantics_mes-0.2.0/src/fsmes/web/quality.html +0 -118
  914. factorysemantics_mes-0.2.0/src/fsmes/web/quality.js +0 -464
  915. factorysemantics_mes-0.2.0/src/fsmes/web/schedule.html +0 -130
  916. factorysemantics_mes-0.2.0/src/fsmes/web/schedule.js +0 -169
  917. factorysemantics_mes-0.2.0/src/fsmes/web/spc.html +0 -82
  918. factorysemantics_mes-0.2.0/src/fsmes/web/spc.js +0 -150
  919. factorysemantics_mes-0.2.0/src/fsmes/web/station.css +0 -88
  920. factorysemantics_mes-0.2.0/src/fsmes/web/station.html +0 -123
  921. factorysemantics_mes-0.2.0/src/fsmes/web/station.js +0 -354
  922. factorysemantics_mes-0.2.0/src/fsmes/web/styles.css +0 -476
  923. factorysemantics_mes-0.2.0/src/fsmes/web/themes.css +0 -104
  924. factorysemantics_mes-0.2.0/src/fsmes/web/trace.html +0 -121
  925. factorysemantics_mes-0.2.0/src/fsmes/web/triggers.html +0 -121
  926. factorysemantics_mes-0.2.0/src/fsmes/web/triggers.js +0 -175
  927. factorysemantics_mes-0.2.0/tests/conftest.py +0 -183
  928. factorysemantics_mes-0.2.0/tests/test_agent.py +0 -333
  929. factorysemantics_mes-0.2.0/tests/test_agent_batching.py +0 -363
  930. factorysemantics_mes-0.2.0/tests/test_agent_eval.py +0 -79
  931. factorysemantics_mes-0.2.0/tests/test_ai_status.py +0 -172
  932. factorysemantics_mes-0.2.0/tests/test_analysis.py +0 -323
  933. factorysemantics_mes-0.2.0/tests/test_api.py +0 -82
  934. factorysemantics_mes-0.2.0/tests/test_assistant.py +0 -204
  935. factorysemantics_mes-0.2.0/tests/test_capabilities.py +0 -246
  936. factorysemantics_mes-0.2.0/tests/test_coa.py +0 -87
  937. factorysemantics_mes-0.2.0/tests/test_core_purity.py +0 -340
  938. factorysemantics_mes-0.2.0/tests/test_design.py +0 -178
  939. factorysemantics_mes-0.2.0/tests/test_equipment_oee.py +0 -75
  940. factorysemantics_mes-0.2.0/tests/test_erp_contract.py +0 -227
  941. factorysemantics_mes-0.2.0/tests/test_erp_roundtrip.py +0 -58
  942. factorysemantics_mes-0.2.0/tests/test_execution.py +0 -54
  943. factorysemantics_mes-0.2.0/tests/test_fleet_console.py +0 -285
  944. factorysemantics_mes-0.2.0/tests/test_fleet_ownership.py +0 -427
  945. factorysemantics_mes-0.2.0/tests/test_kepsim.py +0 -305
  946. factorysemantics_mes-0.2.0/tests/test_line_api.py +0 -312
  947. factorysemantics_mes-0.2.0/tests/test_maintenance.py +0 -252
  948. factorysemantics_mes-0.2.0/tests/test_mcp_parity.py +0 -89
  949. factorysemantics_mes-0.2.0/tests/test_mcp_product.py +0 -344
  950. factorysemantics_mes-0.2.0/tests/test_megafactory.py +0 -159
  951. factorysemantics_mes-0.2.0/tests/test_migrations_have_one_head.py +0 -27
  952. factorysemantics_mes-0.2.0/tests/test_module_wall.py +0 -309
  953. factorysemantics_mes-0.2.0/tests/test_no_tenant_literals.py +0 -288
  954. factorysemantics_mes-0.2.0/tests/test_outbox_events.py +0 -255
  955. factorysemantics_mes-0.2.0/tests/test_overproduction.py +0 -162
  956. factorysemantics_mes-0.2.0/tests/test_pack_format.py +0 -517
  957. factorysemantics_mes-0.2.0/tests/test_pack_third.py +0 -225
  958. factorysemantics_mes-0.2.0/tests/test_plant_identity.py +0 -271
  959. factorysemantics_mes-0.2.0/tests/test_plant_scale_lists.py +0 -330
  960. factorysemantics_mes-0.2.0/tests/test_plant_scale_ui.py +0 -107
  961. factorysemantics_mes-0.2.0/tests/test_plant_serve_only.py +0 -36
  962. factorysemantics_mes-0.2.0/tests/test_quality.py +0 -22
  963. factorysemantics_mes-0.2.0/tests/test_route_coverage.py +0 -95
  964. factorysemantics_mes-0.2.0/tests/test_routing_depth.py +0 -177
  965. factorysemantics_mes-0.2.0/tests/test_scale.py +0 -82
  966. factorysemantics_mes-0.2.0/tests/test_serial_scale.py +0 -332
  967. factorysemantics_mes-0.2.0/tests/test_shadow_mode.py +0 -442
  968. factorysemantics_mes-0.2.0/tests/test_shadow_scorecard.py +0 -334
  969. factorysemantics_mes-0.2.0/tests/test_sim.py +0 -396
  970. factorysemantics_mes-0.2.0/tests/test_spc_gauges.py +0 -162
  971. factorysemantics_mes-0.2.0/tests/test_sqlite_write_locks.py +0 -150
  972. factorysemantics_mes-0.2.0/tests/test_ui_check.py +0 -153
  973. factorysemantics_mes-0.2.0/tests/test_walkthroughs.py +0 -152
  974. factorysemantics_mes-0.2.0/tests/test_web.py +0 -341
  975. factorysemantics_mes-0.2.0/tests/ui/baselines/control-room.json +0 -976
  976. factorysemantics_mes-0.2.0/tests/ui/baselines/daylight.json +0 -976
  977. factorysemantics_mes-0.2.0/tests/ui/baselines/high-contrast.json +0 -976
  978. factorysemantics_mes-0.2.0/tests/ui/baselines/night-shift.json +0 -976
  979. factorysemantics_mes-0.2.0/uv.lock +0 -1755
  980. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/.github/CODEOWNERS +0 -0
  981. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
  982. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  983. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/.github/ISSUE_TEMPLATE/integration.yml +0 -0
  984. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/.github/ISSUE_TEMPLATE/plant-pack.yml +0 -0
  985. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  986. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/.github/scripts/demo_from_wheel.sh +0 -0
  987. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/.github/scripts/upgrade_from_previous_release.sh +0 -0
  988. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/CODE_OF_CONDUCT.md +0 -0
  989. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/GOVERNANCE.md +0 -0
  990. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/LICENSE +0 -0
  991. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/MAINTAINERS.md +0 -0
  992. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/NOTICE +0 -0
  993. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/SECURITY.md +0 -0
  994. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/alembic.ini +0 -0
  995. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/config/inbound_mapping.json +0 -0
  996. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/config/inbound_sql.json +0 -0
  997. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/config/line_layout.json +0 -0
  998. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/config/tag_map.json +0 -0
  999. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/config/tag_map_kepware.json +0 -0
  1000. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/deploy/fsmes-autoloop.service +0 -0
  1001. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/deploy/fsmes-autoloop.timer +0 -0
  1002. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/deploy/fsmes-prod-plant@.service +0 -0
  1003. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docker/docker-compose.yml +0 -0
  1004. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docker/nginx.conf +0 -0
  1005. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/agents/connect-mcp-client.md +0 -0
  1006. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/agents/index.md +0 -0
  1007. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/decisions/0001-apache-2-with-dco.md +0 -0
  1008. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/decisions/0002-kernel-and-modules.md +0 -0
  1009. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/decisions/0003-one-mcp-server.md +0 -0
  1010. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/decisions/0004-never-invent-production.md +0 -0
  1011. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/decisions/0005-plain-html-no-build-step.md +0 -0
  1012. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/decisions/0006-sqlite-laptop-postgresql-plant.md +0 -0
  1013. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/decisions/0007-fresh-public-history.md +0 -0
  1014. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/decisions/0008-erp-connectors-are-modules.md +0 -0
  1015. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/decisions/0009-organisation-not-personal-account.md +0 -0
  1016. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/decisions/0010-github-discussions-only.md +0 -0
  1017. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/decisions/0011-mkdocs-material-generated-reference.md +0 -0
  1018. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/decisions/0012-contributor-covenant-3.md +0 -0
  1019. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/decisions/0013-governance-is-one-page.md +0 -0
  1020. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/decisions/0014-first-public-version-is-0-1-0.md +0 -0
  1021. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/decisions/0015-mcp-registry-name.md +0 -0
  1022. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/decisions/0016-no-trademark-registration.md +0 -0
  1023. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/decisions/0017-one-public-demo-gated-and-bounded.md +0 -0
  1024. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/decisions/0018-public-on-2026-09-08-and-the-pre-tag-check.md +0 -0
  1025. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/decisions/0019-count-everything-the-machine-counted.md +0 -0
  1026. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/decisions/0020-what-supported-means-for-an-erp-connector.md +0 -0
  1027. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/decisions/0021-one-database-per-plant.md +0 -0
  1028. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/decisions/0022-what-a-plant-pack-may-contain.md +0 -0
  1029. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/decisions/TEMPLATE.md +0 -0
  1030. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/design/backlog/README.md +0 -0
  1031. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/design/backlog/analysis-cards-scaling.md +0 -0
  1032. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/design/backlog/book-output-explicit-order.md +0 -0
  1033. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/design/backlog/clickable-kpi-tiles.md +0 -0
  1034. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/design/backlog/opc-integration-suite.md +0 -0
  1035. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/design/backlog/order-lifecycle-actions.md +0 -0
  1036. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/design/backlog/orders-creatable-materials.md +0 -0
  1037. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/design/backlog/orders-supervisor-filters.md +0 -0
  1038. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/design/backlog/review-orders.md +0 -0
  1039. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/design/backlog/sixty-machine-plant.md +0 -0
  1040. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/design/backlog/spc-capability-withheld.md +0 -0
  1041. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/design/backlog/station-spc.md +0 -0
  1042. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/design/backlog/station-view.md +0 -0
  1043. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/design/backlog/supervisor-drill-down.md +0 -0
  1044. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/design/backlog/ui-style-drift-bc58fb4f8e4d.md +0 -0
  1045. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/design/m8-packs-and-fleet.md +0 -0
  1046. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/develop/erp-connectors.md +0 -0
  1047. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/develop/index.md +0 -0
  1048. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/develop/your-first-module.md +0 -0
  1049. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/history/private-era.md +0 -0
  1050. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/hooks/generate.py +0 -0
  1051. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/onboarding/GUIDE-ENGINEERING.md +0 -0
  1052. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/onboarding/GUIDE-IT.md +0 -0
  1053. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/onboarding/README.md +0 -0
  1054. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/onboarding/worksheet-example.csv +0 -0
  1055. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/onboarding/worksheet-template.csv +0 -0
  1056. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/operate/backup.md +0 -0
  1057. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/operate/confirmation-examples/completion-with-a-lot.json +0 -0
  1058. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/operate/confirmation-examples/completion-with-a-lot.xml +0 -0
  1059. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/operate/confirmation-examples/completion-with-an-over-run.json +0 -0
  1060. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/operate/confirmation-examples/completion-with-an-over-run.xml +0 -0
  1061. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/operate/confirmation-examples/completion-without-a-lot.json +0 -0
  1062. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/operate/confirmation-examples/completion-without-a-lot.xml +0 -0
  1063. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/operate/confirmation-examples/operation-clean.json +0 -0
  1064. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/operate/confirmation-examples/operation-clean.xml +0 -0
  1065. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/operate/confirmation-examples/operation-over-run.json +0 -0
  1066. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/operate/confirmation-examples/operation-over-run.xml +0 -0
  1067. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/operate/confirmation-examples/operation-with-scrap-and-components.json +0 -0
  1068. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/operate/confirmation-examples/operation-with-scrap-and-components.xml +0 -0
  1069. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/operate/confirmation-files.md +0 -0
  1070. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/operate/erpnext.md +0 -0
  1071. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/operate/first-week.md +0 -0
  1072. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/operate/inbound.md +0 -0
  1073. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/operate/modules.md +0 -0
  1074. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/operate/registry.md +0 -0
  1075. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/operate/security.md +0 -0
  1076. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/docs/operate/tls.md +0 -0
  1077. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/cutlery/README.md +0 -0
  1078. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/cutlery/analysis/build_notebook.py +0 -0
  1079. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/cutlery/analysis/build_report.py +0 -0
  1080. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/cutlery/analysis/cutlery_run_analysis.ipynb +0 -0
  1081. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/cutlery/analysis/viz.py +0 -0
  1082. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/cutlery/build_config.py +0 -0
  1083. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/cutlery/fill_day.py +0 -0
  1084. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/cutlery/fleet.toml +0 -0
  1085. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/cutlery/line.json +0 -0
  1086. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/cutlery/make_tag_map.py +0 -0
  1087. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/cutlery/tag_map.json +0 -0
  1088. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/cutlery/walkthroughs/install_walkthroughs.py +0 -0
  1089. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/cutlery/walkthroughs/walkthroughs.json +0 -0
  1090. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/erpnext/VERSIONS.md +0 -0
  1091. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/erpnext/docker-compose.yml +0 -0
  1092. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/erpnext/seed_erpnext.py +0 -0
  1093. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/kepsim/.env.example +0 -0
  1094. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/kepsim/README.md +0 -0
  1095. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/kepsim/kepware_setup.py +0 -0
  1096. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/kepsim/setup_dsn.ps1 +0 -0
  1097. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/kepsim/verify_readback.py +0 -0
  1098. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/megafactory/build_config.py +0 -0
  1099. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/megafactory/fleet.toml +0 -0
  1100. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/megafactory/full/build_config.py +0 -0
  1101. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/megafactory/full/init.py +0 -0
  1102. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/megafactory/full/line.json +0 -0
  1103. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/megafactory/full/plant.toml +0 -0
  1104. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/megafactory/full/run_full.py +0 -0
  1105. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/megafactory/full/seed_breadth.py +0 -0
  1106. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/megafactory/full/tag_map.json +0 -0
  1107. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/megafactory/init.py +0 -0
  1108. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/megafactory/line.json +0 -0
  1109. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/megafactory/make_tag_map.py +0 -0
  1110. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/megafactory/run_spike.py +0 -0
  1111. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/megafactory/seed_breadth.py +0 -0
  1112. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/megafactory/tag_map.json +0 -0
  1113. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/multiplant/finewire/mappings/inbound_mapping.json +0 -0
  1114. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/multiplant/finewire/masterdata/equipment.json +0 -0
  1115. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/multiplant/finewire/masterdata/lots.json +0 -0
  1116. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/multiplant/finewire/masterdata/materials.json +0 -0
  1117. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/multiplant/finewire/masterdata/quality_specs.json +0 -0
  1118. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/multiplant/finewire/masterdata/routings.json +0 -0
  1119. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/multiplant/finewire/tag_map.json +0 -0
  1120. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/multiplant/fleet.toml +0 -0
  1121. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/multiplant/machining/line.json +0 -0
  1122. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/multiplant/machining/masterdata/equipment.json +0 -0
  1123. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/multiplant/machining/masterdata/lots.json +0 -0
  1124. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/multiplant/machining/masterdata/materials.json +0 -0
  1125. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/multiplant/machining/masterdata/quality_specs.json +0 -0
  1126. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/labs/multiplant/machining/masterdata/routings.json +0 -0
  1127. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/api/__init__.py +0 -0
  1128. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/api/routers/__init__.py +0 -0
  1129. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/api/routers/coa.py +0 -0
  1130. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/api/routers/documents.py +0 -0
  1131. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/api/routers/erp.py +0 -0
  1132. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/api/routers/execution.py +0 -0
  1133. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/api/routers/line.py +0 -0
  1134. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/api/routers/ops.py +0 -0
  1135. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/api/routers/serialization.py +0 -0
  1136. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/core/__init__.py +0 -0
  1137. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/domain/adjustments.py +0 -0
  1138. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/domain/documents.py +0 -0
  1139. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/domain/idempotency.py +0 -0
  1140. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/domain/inbound.py +0 -0
  1141. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/domain/integration.py +0 -0
  1142. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/domain/scheduling.py +0 -0
  1143. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/domain/serialization.py +0 -0
  1144. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/domain/uns.py +0 -0
  1145. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/fleet/__init__.py +0 -0
  1146. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/identity.py +0 -0
  1147. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/integrations/__init__.py +0 -0
  1148. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/integrations/erp/__init__.py +0 -0
  1149. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/integrations/erp/conformance.py +0 -0
  1150. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/integrations/erp/erpnext_setup.py +0 -0
  1151. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/integrations/erp/file_adapter.py +0 -0
  1152. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/integrations/erp/incumbent.py +0 -0
  1153. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/integrations/erp/mock_erp.py +0 -0
  1154. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/integrations/erp/scorecard_html.py +0 -0
  1155. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/integrations/inbound/__init__.py +0 -0
  1156. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/integrations/inbound/contract.py +0 -0
  1157. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/integrations/inbound/folder.py +0 -0
  1158. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/integrations/inbound/mqtt.py +0 -0
  1159. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/integrations/inbound/sql.py +0 -0
  1160. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/integrations/opc/__init__.py +0 -0
  1161. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/integrations/opc/inspect.py +0 -0
  1162. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/integrations/opc/security.py +0 -0
  1163. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/integrations/opc/worksheet.py +0 -0
  1164. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/integrations/uns/__init__.py +0 -0
  1165. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/integrations/uns/envelope.py +0 -0
  1166. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/integrations/uns/publisher.py +0 -0
  1167. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/integrations/uns/topics.py +0 -0
  1168. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/integrations/uns/transport.py +0 -0
  1169. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/kernel/__init__.py +0 -0
  1170. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/kernel/common.py +0 -0
  1171. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/kernel/tags.py +0 -0
  1172. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/mcp/__init__.py +0 -0
  1173. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/mcp/adjustments.py +0 -0
  1174. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/mcp/coa.py +0 -0
  1175. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/mcp/equipment.py +0 -0
  1176. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/mcp/erp.py +0 -0
  1177. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/mcp/serialization.py +0 -0
  1178. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/env.py +0 -0
  1179. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/script.py.mako +0 -0
  1180. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/153379d6cf19_merge_cutlery_and_walkthrough_chains.py +0 -0
  1181. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/18af853fc5c4_initial_schema.py +0 -0
  1182. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/7c1e5a9d2b4f_serial_sequences.py +0 -0
  1183. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/9c4d2c836d05_add_user_passwords.py +0 -0
  1184. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/a1b2c3d4e5f6_agent_identity.py +0 -0
  1185. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/a1c5e83b7602_calendar_and_scheduling.py +0 -0
  1186. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/a3f6c81d09e2_unassigned_production.py +0 -0
  1187. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/a4d9c2e70f18_uns_publications.py +0 -0
  1188. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/a7c1e93b5f20_roles_as_data.py +0 -0
  1189. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/a7c2e5d1b9f0_document_kind_steps_needs_walkthroughs.py +0 -0
  1190. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/b2c3d4e5f6a7_outbox_hardening.py +0 -0
  1191. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/b3f8d2a41c67_controlled_documents.py +0 -0
  1192. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/b5c1d09e73af_inbound_events_and_their_source.py +0 -0
  1193. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/b7d2e9f4a1c3_unit_inspections.py +0 -0
  1194. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/b8f4d27e1a53_serialisation.py +0 -0
  1195. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/c2e9b74a3f81_gauges_and_calibration.py +0 -0
  1196. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/c3d4e5f6a7b8_triggers.py +0 -0
  1197. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/c4e8f1a2d5b6_serial_units_one_index.py +0 -0
  1198. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/c8b1e40d7a92_erp_messages_direction_index.py +0 -0
  1199. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/c9e2a4b71d38_material_at_a_station.py +0 -0
  1200. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/d4a1c7e5b902_equipment_cost_center.py +0 -0
  1201. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/d4a7f10c8b52_component_may_enter_twice.py +0 -0
  1202. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/d4e5f6a7b8c9_recommended_adjustments.py +0 -0
  1203. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/d9a3f61c48e0_inbound_sql_watermarks.py +0 -0
  1204. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/e5f6a7b8c9d0_tag_values_latest_index.py +0 -0
  1205. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/e6b3c92d4f17_drop_the_old_bom_constraint.py +0 -0
  1206. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/e7b3c9d18a45_workorder_work_center.py +0 -0
  1207. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/f0a1b2c3d4e5_equipment_states_ended_index.py +0 -0
  1208. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/f2a8d31c6b74_routing_durations.py +0 -0
  1209. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/migrations/versions/f7d1a58e2c94_preventive_maintenance.py +0 -0
  1210. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/py.typed +0 -0
  1211. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/schema.py +0 -0
  1212. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/seed.py +0 -0
  1213. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/seed_line.py +0 -0
  1214. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/services/adjustments.py +0 -0
  1215. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/services/design_triage.py +0 -0
  1216. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/services/retention.py +0 -0
  1217. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/services/staging.py +0 -0
  1218. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/sim/autoloop.py +0 -0
  1219. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/sim/mcp_server.py +0 -0
  1220. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/sim/rollup.py +0 -0
  1221. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/sim/store.py +0 -0
  1222. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/web/admin.css +0 -0
  1223. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/web/assist-record.js +0 -0
  1224. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/web/assist.css +0 -0
  1225. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/web/coa.css +0 -0
  1226. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/web/coa.html +0 -0
  1227. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/web/coa.js +0 -0
  1228. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/web/demo/kepsim-hour.json +0 -0
  1229. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/web/instructions.css +0 -0
  1230. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/web/line/app.js +0 -0
  1231. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/web/line/feed.js +0 -0
  1232. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/web/line/flow.js +0 -0
  1233. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/web/line/parts.js +0 -0
  1234. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/web/line/robot.js +0 -0
  1235. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/web/line/scene.js +0 -0
  1236. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/web/line.html +0 -0
  1237. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/web/line3d.html +0 -0
  1238. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/web/machines.html +0 -0
  1239. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/web/ops.css +0 -0
  1240. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/web/ops.html +0 -0
  1241. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/web/tags.html +0 -0
  1242. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/web/tags.js +0 -0
  1243. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/web/themes.js +0 -0
  1244. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/web/trace.js +0 -0
  1245. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/web/vendor/OrbitControls.js +0 -0
  1246. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/web/vendor/README.md +0 -0
  1247. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/web/vendor/three.core.min.js +0 -0
  1248. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/src/fsmes/web/vendor/three.module.min.js +0 -0
  1249. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_adjustments.py +0 -0
  1250. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_auth.py +0 -0
  1251. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_autoloop.py +0 -0
  1252. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_backup.py +0 -0
  1253. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_cli.py +0 -0
  1254. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_core_oplock.py +0 -0
  1255. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_cutlery.py +0 -0
  1256. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_demo_verdict.py +0 -0
  1257. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_design_triage.py +0 -0
  1258. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_documents.py +0 -0
  1259. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_environments.py +0 -0
  1260. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_erp_confirmation_files.py +0 -0
  1261. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_erp_conformance.py +0 -0
  1262. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_erpnext.py +0 -0
  1263. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_erpnext_live.py +0 -0
  1264. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_file_erp.py +0 -0
  1265. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_hierarchy.py +0 -0
  1266. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_hold.py +0 -0
  1267. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_inbound.py +0 -0
  1268. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_inbound_folder.py +0 -0
  1269. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_inbound_mqtt.py +0 -0
  1270. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_inbound_sql.py +0 -0
  1271. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_kernel_common.py +0 -0
  1272. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_line_scoping.py +0 -0
  1273. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_onboarding.py +0 -0
  1274. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_packaged_config.py +0 -0
  1275. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_paging.py +0 -0
  1276. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_plant_migrate.py +0 -0
  1277. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_rollup.py +0 -0
  1278. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_scheduling_trace.py +0 -0
  1279. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_schema_upgrade.py +0 -0
  1280. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_store.py +0 -0
  1281. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_tag_fabric.py +0 -0
  1282. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_tag_fabric_review.py +0 -0
  1283. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_tags.py +0 -0
  1284. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_the_suite_knows_its_database.py +0 -0
  1285. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_themes.py +0 -0
  1286. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_triage.py +0 -0
  1287. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_triggers.py +0 -0
  1288. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_uns.py +0 -0
  1289. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_washer_story.py +0 -0
  1290. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_wip.py +0 -0
  1291. {factorysemantics_mes-0.2.0 → factorysemantics_mes-0.3.1}/tests/test_workorders.py +0 -0
@@ -0,0 +1,78 @@
1
+ # What never goes into an image's build context.
2
+ #
3
+ # Every `docker build` here reads this file, and `docker/Dockerfile` copies
4
+ # named paths rather than the whole tree, so this is about the context that is
5
+ # sent to the builder, not about what ends up in the image. Two reasons it is
6
+ # worth having: a plant's own data must never be able to reach a published
7
+ # image by accident, and the generated replay under `labs/multiplant/*/out/` is
8
+ # 9.7 MB for bottling alone - it is generated from the seed in `line.json` on
9
+ # first start and is never shipped.
10
+ #
11
+ # What this excludes:
12
+ #
13
+ # */out/, .data/ generated line data and plant state, written at run
14
+ # time, regenerated from a seed, never shipped
15
+ # *.db, *.sqlite, *-wal a plant's own database, in every spelling the code
16
+ # writes, plus its write-ahead files
17
+ # logs/, *.log a plant's logs
18
+ # .env, *.pem, *.key, credentials and certificates. `.env.*` as well as
19
+ # certs/, .secrets/ `.env`, because an editor's `.env.bak` is a
20
+ # committable copy of a credentials file
21
+ # .venv/, __pycache__/, a developer machine's build leavings, which are for
22
+ # *.egg-info/, .git/ this platform and this interpreter, not the image's
23
+ # lab-results/, evidence from one machine on one day
24
+ # backups/
25
+ #
26
+ # Wholesale rules rather than an enumerated list of directories, for the reason
27
+ # `.gitignore` gives at the same place: an enumerated rule goes stale silently
28
+ # the first time the code writes somewhere new.
29
+ #
30
+ # Nothing here may match a path `docker/Dockerfile` copies, and nothing here
31
+ # may match a path `pyproject.toml` force-includes into the wheel. The day one
32
+ # does, the image loses a plant pack and `pip install` inside it fails - which
33
+ # is what happened on 2026-10-12 for the other reason, and is why
34
+ # `tests/test_the_docker_image_carries_the_packs.py` reads this file too.
35
+
36
+ # Generated line data and plant state
37
+ **/out/
38
+ **/.data/
39
+ lab-results/
40
+ backups/
41
+
42
+ # A plant's own database and logs
43
+ **/*.db
44
+ **/*.db-wal
45
+ **/*.db-shm
46
+ **/*.sqlite
47
+ **/*.sqlite3
48
+ **/*.parquet
49
+ **/logs/
50
+ **/*.log
51
+
52
+ # Credentials and certificates
53
+ .env
54
+ .env.*
55
+ !.env.example
56
+ **/.secrets/
57
+ **/certs/
58
+ **/*.pem
59
+ **/*.key
60
+ **/*.token
61
+
62
+ # This machine's build leavings
63
+ .git/
64
+ .venv/
65
+ venv/
66
+ **/__pycache__/
67
+ **/*.py[cod]
68
+ **/*.egg-info/
69
+ build/
70
+ dist/
71
+ .pytest_cache/
72
+ .ruff_cache/
73
+ .mypy_cache/
74
+ htmlcov/
75
+ .coverage
76
+ site/
77
+ skills-dist/
78
+ *.zip
@@ -0,0 +1,112 @@
1
+ # FactorySemantics MES configuration. Copy to .env and adjust; every value has a sane default.
2
+ # All settings are read from environment variables prefixed MES_ (or this file).
3
+
4
+ # --- Database -------------------------------------------------------------
5
+ # SQLite (default, zero-setup):
6
+ MES_DATABASE_URL=sqlite:///fsmes.db
7
+ # PostgreSQL (scale deployment, matches docker-compose):
8
+ # MES_DATABASE_URL=postgresql+psycopg://mes:mes@localhost:5432/mes_twin
9
+
10
+ # --- Which plant is this --------------------------------------------------
11
+ # The shape of this deployment: laptop | plant | fleet. `laptop` is the
12
+ # evaluation profile - `fsmes demo` and the labs - and needs nothing else set
13
+ # here. Anything else refuses to start without a plant name.
14
+ MES_PLANT_PROFILE=laptop
15
+ # What this plant is called. It appears on every screen, in /health, on every
16
+ # metric, in every backup and on every namespace event, so a person looking
17
+ # at two plants can tell which one they are looking at. Letters, digits and
18
+ # _ . : @ = - only: it is published as one segment of the namespace topic.
19
+ # MES_PLANT_NAME=northgate
20
+ # The zone this plant works in, as an IANA name. It decides where a shift
21
+ # starts, when a gauge falls due, and what time every screen shows. Left out,
22
+ # the MES uses this machine's own zone and says "defaulted" wherever it
23
+ # reports it. On Windows the zone database comes from `pip install tzdata`.
24
+ # MES_PLANT_TIMEZONE=America/Chicago
25
+
26
+ # --- Shadow mode ----------------------------------------------------------
27
+ # The MES watches a real plant and can change nothing in it: no PLC
28
+ # write-back, no live ERP, no MQTT publish, nothing about this plant off the
29
+ # box. This is how you run it beside the MES already in charge on a line.
30
+ # Read once at start-up; leaving it is a restart, recorded in the audit
31
+ # trail. With it on, MES_ERP_MODE may only be off or file and MES_UNS_MODE
32
+ # only off or log - anything else refuses to start and says which variable.
33
+ # See docs/operate/shadow-mode.md.
34
+ MES_SHADOW=false
35
+
36
+ # --- Logging --------------------------------------------------------------
37
+ MES_LOG_LEVEL=INFO
38
+ MES_LOG_DIR=logs
39
+
40
+ # --- API ------------------------------------------------------------------
41
+ MES_API_HOST=127.0.0.1
42
+ MES_API_PORT=8000
43
+
44
+ # --- OPC UA ---------------------------------------------------------------
45
+ # Endpoint the agent connects to. Points at the bundled simulator by default;
46
+ # change to your real PLC/gateway endpoint to leave twin mode.
47
+ MES_OPC_ENDPOINT=opc.tcp://127.0.0.1:4840/mes-twin/sim
48
+ MES_OPC_NAMESPACE=urn:mes-twin:sim
49
+ MES_TAG_MAP_FILE=config/tag_map.json
50
+ # The KepSim six-station line instead of the two demo machines:
51
+ # config/tag_map_kepsim.json played back by `fsmes run-opc-sim --replay`
52
+ # config/tag_map_kepware.json read from a real KEPServerEX (see labs/kepsim)
53
+
54
+ # Client security. Empty = anonymous and unencrypted, which is all the bundled
55
+ # simulator needs. A real server usually offers only SignAndEncrypt with a named
56
+ # user — Kepware does. The certificate is minted on first use.
57
+ # MES_OPC_SECURITY=Basic256Sha256,SignAndEncrypt
58
+ # MES_OPC_USER=Administrator
59
+ # MES_OPC_PASSWORD=
60
+ MES_OPC_CERT_DIR=certs
61
+ MES_OPC_APPLICATION_URI=urn:mes-twin:agent
62
+
63
+ # Where `fsmes run-opc-sim --replay` reads the generated KepSim tables from.
64
+ MES_REPLAY_DIR=labs/kepsim/out
65
+
66
+ # --- ERP integration ------------------------------------------------------
67
+ # rest = poll an ERP REST API (mock ERP by default) | file = B2MML-style file
68
+ # exchange via the inbox/outbox folders | erpnext = a real ERPNext/Frappe
69
+ # instance | off = no ERP sync
70
+ MES_ERP_MODE=rest
71
+ MES_ERP_BASE_URL=http://127.0.0.1:8001
72
+ MES_ERP_INBOX=erp_exchange/inbox
73
+ MES_ERP_OUTBOX=erp_exchange/outbox
74
+ MES_ERP_ARCHIVE=erp_exchange/archive
75
+ MES_ERP_POLL_SECONDS=5
76
+
77
+ # --- ERPNext (MES_ERP_MODE=erpnext) ---------------------------------------
78
+ # One bench can serve several sites on one port; the site is chosen by the Host
79
+ # header. Leave MES_ERPNEXT_SITE empty only if the bench serves a single site —
80
+ # on a shared one, the default site is somebody else's company.
81
+ MES_ERPNEXT_BASE_URL=http://localhost:8090
82
+ MES_ERPNEXT_SITE=mes.localhost
83
+ MES_ERPNEXT_USER=Administrator
84
+ MES_ERPNEXT_PASSWORD=admin # the Frappe dev-bench default; a real site uses the API key below
85
+ # Preferred for a long-running worker (ERPNext: User -> API Access -> generate):
86
+ # MES_ERPNEXT_API_KEY=
87
+ # MES_ERPNEXT_API_SECRET=
88
+ # Which company's work orders to import. Empty (the default) imports every
89
+ # company's; a bench serving more than one company must set this.
90
+ # MES_ERPNEXT_COMPANY=Your Company
91
+ # Post finished quantities as real Manufacture stock entries. Off records what
92
+ # the MES counted without moving ERPNext's stock.
93
+ MES_ERPNEXT_POST_STOCK_ENTRY=true
94
+
95
+ # --- Simulator ------------------------------------------------------------
96
+ # >1.0 makes the simulated plant run faster than real time (demo uses 4).
97
+ MES_SIM_SPEED=1.0
98
+
99
+ # --- The judgment model (development build loop only) ---------------------
100
+ # A hosted model asked fixed, typed questions about a simulated run's log,
101
+ # beside the local model's open-ended pass. Nothing in the product asks it
102
+ # anything, and shadow mode refuses the call outright (register: llm.jev).
103
+ # Unset — the normal case — and the run record says it was not asked.
104
+ # The key belongs in this file or the environment, never in the repository.
105
+ # MES_JEV_API_KEY=
106
+ # Pinned, never a moving alias: an answer stored against `-latest` cannot be
107
+ # read again. The version actually served is stored with every answer.
108
+ # `fsmes jev models --resolve` says which concrete version answers today.
109
+ # MES_JEV_MODEL=jev-1.13.0
110
+ # Empty uses the client's own endpoint.
111
+ # MES_JEV_BASE_URL=
112
+ # MES_JEV_TIMEOUT_SECONDS=5.0
@@ -0,0 +1,35 @@
1
+ version: 2
2
+ updates:
3
+ # Python updates run through the `uv` ecosystem, not `pip`, because this
4
+ # repository has a lockfile and CI requires it to be current.
5
+ #
6
+ # `pip` edits the version constraints in `pyproject.toml` and has no
7
+ # concept of `uv.lock` — it never regenerates it. Since #74 made
8
+ # `uv lock --check` a required check, that combination meant every
9
+ # Python bump Dependabot opened arrived with a stale lock and failed
10
+ # `lockfile` on arrival; #86 (ruff 0.16.7 → 0.16.8) is the one that made
11
+ # it obvious. The `uv` ecosystem reads `pyproject.toml` and `uv.lock`
12
+ # together and writes both in the same commit, so the required check
13
+ # passes without anyone running `uv lock` by hand.
14
+ #
15
+ # The group below is carried over unchanged. It groups on `patterns`,
16
+ # which `uv` supports; the one grouping key `uv` does not support is
17
+ # `dependency-type`, and this repository never used it. `uv` also treats
18
+ # every declared dependency as a production one — it draws no dev/prod
19
+ # line — which changes nothing here, because `patterns: ["*"]` already
20
+ # puts the runtime dependencies and the `dev`, `docs`, `postgres`,
21
+ # `mcp`, `agent`, `mqtt` and `jev` extras in one pull request.
22
+ - package-ecosystem: uv
23
+ directory: /
24
+ schedule:
25
+ interval: weekly
26
+ groups:
27
+ python:
28
+ patterns: ["*"]
29
+ - package-ecosystem: github-actions
30
+ directory: /
31
+ schedule:
32
+ interval: weekly
33
+ groups:
34
+ actions:
35
+ patterns: ["*"]
@@ -0,0 +1,186 @@
1
+ #!/usr/bin/env python3
2
+ """Prove the assistant folder comes out of a built wheel, offline, on Linux and
3
+ on Windows.
4
+
5
+ This is the first line of the assistant handoff's definition of done, checked
6
+ the way a person would check it:
7
+
8
+ 1. `pipx install factorysemantics-mes` on a PC that may reach the internet
9
+ once and never again - here, a fresh virtual environment with the wheel in
10
+ it and the network off afterwards;
11
+ 2. `fsmes skills list` names `assistant`, and says the folder came out of the
12
+ installation rather than out of a checkout lying above the working
13
+ directory;
14
+ 3. `fsmes skills unpack assistant ./x` writes the seven markdown pages **and**
15
+ `plant-from-your-mes/` inside them, every file byte-for-byte the
16
+ checkout's;
17
+ 4. nothing in what it wrote is a symlink, and the repository has no second
18
+ copy of the nested folder. That pair is the whole reason `INCLUDES` exists:
19
+ one copy in git, nested at build and unpack time, and a zip of a symlink
20
+ unpacks on Windows as a text file with a path in it.
21
+
22
+ Windows as well as Linux because the first person to install this was on
23
+ Windows, and because a path separator is the kind of thing that only breaks
24
+ there.
25
+
26
+ `plant_from_shape.py` beside this already builds the two virtual environments
27
+ and turns the network off; this imports those helpers rather than keeping a
28
+ second copy of them, for the same reason the skill folder has one copy.
29
+
30
+ Usage: python .github/scripts/assistant_folder_from_the_wheel.py --wheel dist/<name>.whl
31
+ """
32
+
33
+ from __future__ import annotations
34
+
35
+ import argparse
36
+ import filecmp
37
+ import os
38
+ import subprocess
39
+ import sys
40
+ import tempfile
41
+ from pathlib import Path
42
+
43
+ sys.path.insert(0, str(Path(__file__).resolve().parent))
44
+
45
+ from plant_from_shape import (
46
+ AS_WORDS,
47
+ fail,
48
+ make_venv,
49
+ offline,
50
+ prove_the_network_is_off,
51
+ run,
52
+ say,
53
+ venv_bin,
54
+ )
55
+
56
+ #: The skill a person downloads, and the one it carries.
57
+ SKILL = "assistant"
58
+ INSIDE = "plant-from-your-mes"
59
+ #: Pages the folder is useless without, and the two files that prove the
60
+ #: nesting really happened. Named here rather than globbed so that a
61
+ #: `force-include` line somebody forgets is a red job and not a quiet gap.
62
+ MUST_CARRY = (
63
+ "SKILL.md",
64
+ "README.md",
65
+ "0-how-to-help.md",
66
+ "1-install.md",
67
+ "2-your-plant.md",
68
+ "3-shadow-mode.md",
69
+ "4-migration.md",
70
+ f"{INSIDE}/SKILL.md",
71
+ f"{INSIDE}/scripts/profile.py",
72
+ )
73
+
74
+
75
+ def what_the_checkout_holds(repo: Path) -> list[str]:
76
+ """Every file the unpacked folder should have, from the one copy in git."""
77
+ wanted = []
78
+ for name, under in ((SKILL, ""), (INSIDE, f"{INSIDE}/")):
79
+ folder = repo / "skills" / name
80
+ wanted += [f"{under}{p.relative_to(folder).as_posix()}"
81
+ for p in folder.rglob("*")
82
+ if p.is_file() and "__pycache__" not in p.parts]
83
+ return sorted(wanted)
84
+
85
+
86
+ def the_repository_has_one_copy(repo: Path) -> None:
87
+ """No `skills/assistant/plant-from-your-mes/` in git, and no symlink to it."""
88
+ second = repo / "skills" / SKILL / INSIDE
89
+ if second.exists() or second.is_symlink():
90
+ fail(f"skills/{SKILL}/{INSIDE} exists in the checkout. The nested folder is "
91
+ f"made at build time from fsmes.skills.INCLUDES, from the one copy in "
92
+ f"skills/{INSIDE}/ — a second copy in git drifts, and a symlink unpacks "
93
+ f"on Windows as a text file with a path in it.")
94
+ linked = [p for p in (repo / "skills" / SKILL).rglob("*") if p.is_symlink()]
95
+ if linked:
96
+ fail(f"symlink(s) in skills/{SKILL}/: {[p.name for p in linked]}")
97
+ say(f" skills/{SKILL}/ is {len(list((repo / 'skills' / SKILL).glob('*')))} real "
98
+ f"file(s) and no link; skills/{INSIDE}/ is the only copy of the nested folder")
99
+
100
+
101
+ def main() -> int:
102
+ parser = argparse.ArgumentParser(description=__doc__)
103
+ parser.add_argument("--wheel", required=True, help="the built wheel to prove")
104
+ args = parser.parse_args()
105
+
106
+ repo = Path(__file__).resolve().parents[2]
107
+ wheel = Path(args.wheel).resolve()
108
+ if not wheel.is_file():
109
+ fail(f"no wheel at {wheel}")
110
+
111
+ say("== one copy in the repository ==")
112
+ the_repository_has_one_copy(repo)
113
+
114
+ work = Path(tempfile.mkdtemp(prefix="fsmes-assistant-")).resolve()
115
+ say(f"\n== a clean machine: {work} ==")
116
+ if repo in work.parents:
117
+ fail(f"{work} is inside the checkout at {repo}; this proves nothing")
118
+
119
+ say("== the person's PC: a fresh venv with the wheel in it ==")
120
+ theirs = make_venv(work / ".venv-fsmes", wheel=wheel)
121
+ fsmes = venv_bin(theirs, "fsmes")
122
+ python = venv_bin(theirs, "python")
123
+ reported = subprocess.run([str(fsmes), "--version"], check=True, cwd=work,
124
+ capture_output=True, **AS_WORDS)
125
+ say(f" installed: {reported.stdout.strip()}")
126
+
127
+ say("== the network, off, for everything from here on ==")
128
+ environment = offline(dict(os.environ))
129
+ prove_the_network_is_off(python, environment)
130
+
131
+ say(f"== `fsmes skills list` names {SKILL} ==")
132
+ listed = run([str(fsmes), "skills", "list"], cwd=work, env=environment)
133
+ if "inside this installation" not in listed.stdout:
134
+ fail("`fsmes skills list` did not say the folder came out of the installation; "
135
+ "it may have found a checkout above the working directory instead")
136
+ # One folder per indented line; the last indented line is the hint, which
137
+ # has spaces in it and no skill name does.
138
+ named = [line.strip() for line in listed.stdout.splitlines()
139
+ if line.startswith(" ") and " " not in line.strip()]
140
+ if SKILL not in named:
141
+ fail(f"`fsmes skills list` did not name {SKILL}. It named: {named}. Check the "
142
+ f"force-include lines in pyproject.toml.")
143
+ say(f" {SKILL} is one of {len(named)} folder(s) listed: {', '.join(named)}")
144
+
145
+ say(f"== `fsmes skills unpack {SKILL}` writes the tree, offline ==")
146
+ run([str(fsmes), "skills", "unpack", SKILL, str(work / "out")],
147
+ cwd=work, env=environment)
148
+ folder = work / "out" / SKILL
149
+ written = sorted(p.relative_to(folder).as_posix()
150
+ for p in folder.rglob("*") if p.is_file())
151
+ say(f" {len(written)} file(s) written to {folder}")
152
+
153
+ missing = [f for f in MUST_CARRY if f not in written]
154
+ if missing:
155
+ fail(f"the unpacked folder is missing {', '.join(missing)}. If the pages are "
156
+ f"there and the nested folder is not, fsmes.skills.INCLUDES did not run; "
157
+ f"if a page is missing, add its force-include line to pyproject.toml.")
158
+
159
+ wanted = what_the_checkout_holds(repo)
160
+ if wanted != written:
161
+ fail(f"the unpacked folder is not the checkout's. In skills/ only: "
162
+ f"{sorted(set(wanted) - set(written)) or 'none'}. Unpacked only: "
163
+ f"{sorted(set(written) - set(wanted)) or 'none'}.")
164
+ differ = [f for f in wanted
165
+ if not filecmp.cmp(repo / "skills" / (f if f.startswith(f"{INSIDE}/")
166
+ else f"{SKILL}/{f}"),
167
+ folder / f, shallow=False)]
168
+ if differ:
169
+ fail(f"{len(differ)} file(s) differ from the checkout: {differ}")
170
+ say(f" byte-for-byte the checkout's skills/{SKILL}/ and skills/{INSIDE}/")
171
+
172
+ linked = [p.relative_to(folder).as_posix() for p in folder.rglob("*") if p.is_symlink()]
173
+ if linked:
174
+ fail(f"the unpacked folder contains symlink(s): {linked}")
175
+ nested = [f for f in written if f.startswith(f"{INSIDE}/")]
176
+ say(f" nothing in it is a symlink; {len(nested)} of {len(written)} file(s) are the "
177
+ f"nested {INSIDE}/ folder, which is stage 2")
178
+
179
+ say(f"\nthe assistant folder came out of the wheel on {sys.platform}, with the "
180
+ f"network off: {len(written)} file(s), {INSIDE}/ inside it, no second copy in "
181
+ f"git and no symlink anywhere.")
182
+ return 0
183
+
184
+
185
+ if __name__ == "__main__":
186
+ raise SystemExit(main())