Skip to content

experiment: server-host launcher flag + MI runner abort toggle - #8

Merged
AuroraLHT merged 2 commits into
mainfrom
server-host-experiment-and-accounts
Sep 9, 2026
Merged

AuroraLHT merged 2 commits into
mainfrom
server-host-experiment-and-accounts

Conversation

@AuroraLHT

Copy link
Copy Markdown
Owner

Two changes on this branch:

start_server_host.sh --with-experiment + account docs (ad1856c, already reviewed context)

  • --with-experiment flag to also start the PLD growth driver node
  • scripts/create_api_user.py
  • documents both account types

MI runner: accept PASCAL's spurious aborts (ef3de87)

The PASCAL firmware writes the Aborted_* assist file for some MI scripts that actually ran to completion, so MiCommandRunner.execute raising MIExecutionFailed on is_aborted fails ops whose commands the controller did carry out. Observed on the production rig: every to_temperature(350, rate) call aborts at Temperature Ramp <rate> and never reaches Temperature Set, while the chamber log shows no fault.

  • raise_on_abort — constructor arg on MiCommandRunner and per-call override on execute(), mirroring the existing timeout option. Default True, so current behaviour is unchanged.
  • When off: an aborted execution is returned with a WARNING instead of raising. is_stopped (a deliberate $stop) still always raises.
  • Wired through nodes/experiment.py as --ignore-mi-abort and experiment.mi_ignore_abort (default false), with a startup warning when active.
  • The physical result must be verified against the chamber log whenever this is on — noted in the setting comment and the log line.

Tests: tests/experiment/test_mi_runner.py +3 (per-call off returns the aborted execution + warns; runner-wide off; $stop still raises when off). Full tests/experiment/ suite passes (48).

🤖 Generated with Claude Code

AuroraLHT and others added 2 commits September 9, 2026 13:58
…r.py; document both account types

The server-host launcher started monitor/storage/detection/api but never the
experiment node, so a notebook or the MCP server driving a growth against the
production stack had nothing to talk to. Add an opt-in --with-experiment flag
(matching start_simulation.sh) that starts it with the same broker credentials,
sequenced after storage/detection and before api, with a preflight check for a
missing [experiment] config block.

Account creation was asymmetric: broker accounts have scripts/apply_broker_
permissions.py, but the API user store (cfg/users.db) was only reachable via the
python -m lumi.api.manage module CLI. Add scripts/create_api_user.py, a thin
wrapper over that CLI's create-user kept next to the broker script so both account
types are discoverable together; it adds --database for targeting a non-default
users.db.

README gains an "Accounts" section laying out the two independent credential
systems (API vs broker) side by side, with the commands for each.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UyxfY7uJetWk4KxVSEDTpZ
The PASCAL firmware writes the `Aborted_*` assist file for some MI scripts
that actually ran to completion, so `MiCommandRunner.execute` raising
MIExecutionFailed on `is_aborted` fails ops whose commands the controller
did carry out. A multi-command op like `to_temperature` (Temperature
Control / Temperature Ramp / Temperature Set) dies on the first spurious
abort and never sends the setpoint.

Add `raise_on_abort` (default True -- behaviour unchanged): a constructor
arg on MiCommandRunner and a per-call override on execute(), mirroring the
existing `timeout` option. When off, an aborted execution is returned with
a WARNING instead of raising; `is_stopped` (a deliberate `$stop`) still
always raises.

Wire it through nodes/experiment.py as `--ignore-mi-abort` and
`experiment.mi_ignore_abort` (default false). The physical result must be
verified against the chamber log whenever this is on.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UyxfY7uJetWk4KxVSEDTpZ
@AuroraLHT
AuroraLHT merged commit 7a23802 into main Sep 9, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant