Repository navigation
0.3.1
Reference. What this release does, what it does not, and what is simulated.
Released: 2026-10-15. Previous: 0.3.0, on PyPI 2026-10-12.
What 0.3.1 is
Four pull requests on top of 0.3.0,
#170 to
#174, every
one about the first hour on somebody else's PC. 0.3.0 proved the plant starts
from pipx install on Windows; this release is what happens when it does not.
The first run on a Windows PC recovers itself
Three things went wrong in the first twenty minutes for the first person to
install 0.3.0 on Windows. All three are fixed:
py -m fsmes demo bottling # when `fsmes` is "not recognized"
py -m fsmes demo bottling status # when nothing answers on 8010
py -m fsmes demo bottling stop # when the plant is half deadpy -m fsmesworks.pip installputsfsmes.exein a Scripts folder a
default Python install does not put on PATH. Every command works this way now,
and a plant started this way starts its child processes this way, so PATH
never has to be fixed first.statusnames what died. A plant records what each of its five processes
is for, sostatussays which are alive and which is gone by role — the
dashboard and API, the OPC server, the reader, the simulated floor, the log
sink — prints the path of the gone one's log, and ends with the command to
type next. A healthy plant prints its dashboard URL.stopclears a half-dead plant, with no flag. When one process dies and
the rest keep running, nothing answers and nothing can be started over the
top.stopends the survivors and says what it found; a start on top of a
silent plant is refused in the same words instead of failing at bind five
times.
One page for that first hour:
run it on your own box.
A simulated plant shaped like your own
0.3.0 could write a file describing your plant's shape and do nothing with it:
fsmes skills unpack plant-from-your-mes .\assistant # offline, out of the wheel
# the three commands in assistant\SKILL.md, by hand on the MES box -> plant-shape.toml
fsmes demo from-shape .\plant-shape.toml --name acmeYour machines, routings, stop mix, order sizes and shifts, in six seconds, with
the one number the file cannot carry asked for on the way (the space between
each pair of machines). fsmes shape plant writes the pack without starting it.
One folder any assistant can walk you through
fsmes-assistant.zip is attached to this release, and
fsmes skills unpack assistant ./assistant writes the same folder out of an
installation with the network off. It is plain markdown you hand to whatever AI
assistant you already use — in a chat window, with no access to your machine.
Four stages: install until fsmes demo bottling answers; a plant shaped like
yours; this one beside your own MES in shadow mode, ending at the scorecard; and
an honest page on why "can I switch my old MES off?" is still answered no. It
never asks you for plant data: you run the commands and paste what was
printed.
fsmes doctor: one file you can paste to anybody
fsmes doctor --out doctor.md: one command, one Markdown file with the
version, the OS, how it was installed, every plant in this home with each process alive or gone, the ports and whether they
answer, and the last 40 lines of every process log with every value replaced by
its shape — a tag becomes AAAAAA_AAA_AAA, an order AA-AAAA-#, a measurement
<float>. For a plant in shadow mode a second half says how long it has been
watching, how much of that window it saw, the kept scorecards as one row each,
and what is not built toward a real switch-over. The file is read back by the
shape file's own leak check and is not written at all if any value got
through. It starts nothing, stops nothing, and nothing sends it anywhere:
one file to paste when something is wrong.
What 0.3.1 does not do
- It has not run a real plant. Not one, still. Every number in this
repository comes from a simulated line and says so where it appears. - No real SQL Server has run the shape queries. That path is proven on this
project's own fixtures and on Windows in CI, nowhere else. - Shadow mode has never run beside a real MES, so the doctor file's second
half has only ever described simulated plants. - A real switch-over is not built — the old MES off, this one booking for
real, writing to PLCs, carrying the old history. The folder says so. - You still need Python 3.12 or newer, the real obstacle on a locked-down
plant PC. Nothing here removes it. - Everything 0.3.0 does not do, it still does not do: 0.3.0.
What is simulated
Everything that produces a number, as in 0.3.0: a deterministic line simulator
in src/fsmes/sim/, replayed over a real OPC UA server. A plant from your shape
file is shaped like yours; none of its readings are yours.
Upgrading from 0.3.0
pipx upgrade factorysemantics-mes # or pip install --upgrade
fsmes --version # 0.3.1No migrations. Nothing here changes the database schema, so a plant that
runs on 0.3.0 runs on 0.3.1 with no init-db step; d4e8a1c93b70 is still
head. The procedure, and 0.2.0's, is on
upgrading between versions.
Every change in this release: CHANGELOG.