v0.5.0
A session now tells you two things about itself it previously did not: that
your writes are about to start failing, and that the allocation you got is not
the one you asked for. Plus colour in the launch and teardown narration.
The notice line
The rule above the status bar carries warnings, ranked — something you must
act on outranks something you should know:
━━━━━━━━━━━━━ ⚠ OVER QUOTA 30.2T / 30T · over by 204.8G ━━━━━━━━━━━━━
━ ⚠ OVER QUOTA 30.2T / 30T · over by 204.8G │ SHORT SESSION · ends before monthly-maint at Thu 06:00 ━
The warnings are static — a marquee is right for an invitation and wrong for a
warning — and share the line when both apply. The scrolling Claude Code hint
keeps the line only when nothing more important wants it.
Storage quota, without the head node
quota_check lives only on the head node, so the obvious design is
ssh head quota_check on a timer. It turns out not to be needed: the hard
limit is a shared file, and the quota daemons answer the compute nodes
directly. The probe is bash and /dev/tcp, takes about a second, and
reproduces quota_check -b exactly.
sinteractive --check-quota # re-check now, update every open session
sinteractive --check-quota --json # same, machine-readableCached per user rather than per session, so six open sessions still cost one
probe per interval. --check-quota clears the warning within a tick of space
actually being freed — which is the point for an agent that has just deleted
something on your behalf. The bodhi-storage skill and --agent-context both
now say so.
Every input is overridable (SINTERACTIVE_QUOTA_FILE, _HOSTS, _PORT,
_TIMEOUT, _POLL) and every failure is silent, so a cluster that does its
quotas differently never shows the notice.
Maintenance windows: trim, don't refuse
Slurm defers a job that would run into a reservation until the window closes,
so at the default day-long request a session simply stopped starting as
maintenance approached. It is now shortened to fit and says so:
$ sinteractive -n analysis
! Maintenance (monthly-maint) starts Thu Aug 27 06:00.
Shortened the request from 24:00:00 to 17:10:43 so the session ends before it.The session then carries a SHORT SESSION notice for its whole life, so the
shortened allocation stays visible after the launch output has scrolled away.
A launch is still refused when under 10 minutes remain, and an explicit
--reservation is left alone.
Colour
Four roles, not a rainbow: teal for identifiers (job ids, node names) matching
the status bar's own colour for them, dim for progress, yellow for keys and
warnings, red for errors, green for the session coming up and a cancel
landing.
SINTERACTIVE_COLOR takes auto/always/never, and NO_COLOR is honoured.
The auto test is on stderr, not stdout, because that is where the
narration goes — so --detach ... > file still narrates to your terminal
while 2>log stays free of escapes.
Upgrading
sudo make install-system # login node
sudo make nodes # fan out to the compute nodes
make nodes-check # confirmThe compute nodes need this: a session runs the node's copy of the script, so
the notice line and quota probe only appear once the nodes are updated.
Full changelog: https://github.com/rnabioco/sinteractive/blob/v0.5.0/CHANGELOG.md