users: --class human|server is named for who lives there, but what it decides is the root SSH door
#77
Labels
No labels
attention
blocked
blocker:ci-red
blocker:conflict
blocker:drill-pending
blocker:unrequested
bug
claimed
documentation
enhancement
epic
merge-next
needs-ruling
needs-triage
offsite
post-merge
ready
release
scope:bootstrap
scope:coolify
scope:db
scope:docs
scope:drill
scope:installer
scope:labels
scope:platform
scope:runner
scope:users
stale
state:addressing
state:bots-reviewing
state:building
state:needs-human
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: heavy-duty/rig#77
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Split out of #76, which suffixes fleet machine roles with
-serverand immediately trips over this:dev-serverisclass=human.The mismatch
classreads as a statement about occupancy — who lives on this box. What it actually decides is one thing: does root SSH stay open as the control plane automation door, or doesrig users close-rootshut it once named operators exist.Those are not the same question, and the roles show it.
devis an unattended VM-host appliance — nobody lives there, operators visit it to mint boxes and leave. By occupancy it is a server. It isclass=humananyway, and correctly so, because operators enter it as themselves and its root door must close. The trait is right; its name describes the wrong axis.That misnaming is cheap until a second thing wants the word "server". After #76,
-servermarks the machine family, sodev-servercarries a suffix saying server and a trait saying human, and a reader cannot tell that one is about family and the other about doors.What to do
Rename the trait to what it controls. Strawman — the naming is the substance of this issue, not settled:
human->closed(named operators enter as themselves;close-rootshuts the door)server->open(nobody lives here; the control plane automates in)Then
dev-server --root-door closedsays exactly what is true, and-servermeans one thing everywhere.Why this is not a rename like #76 was
Role names are informational — nothing reads them back.
class=is not. It is written into/etc/rig/roleand read back by:rig users apply— root-door policy after the users phaserig users close-root— refuses outright unless the marker saysclass=humanSo markers on machines already in the field say
class=human, and a bootstrap that stops writing it turnsclose-rootinto a no-op refusal on exactly the boxes whose root doors most need shutting. Any change here needs a compat read of the old field, and a plan for markers that never get rewritten.That is why it is not folded into #76: the taxonomy rename is a CLI surface, this one reaches live state that guards root SSH.
Acceptance
class=still resolve, andclose-rootstill refuses correctly on themdev-serverno longer carries a suffix and a trait that appear to contradict