Archived
The account's environment and the login shell are the mesh's seats (hq ADR 0203, 0204)
node-environment says which module writes the account's environment; node-login-shell replaces the module-declared login-shell, so a second shell claims it rather than declaring a rival, and execute is the mesh's contract. login-shell is refused as a module's seat name. Seeded into a live store by the existing additive seeding.
This commit is contained in:
@@ -25,6 +25,10 @@ import (
|
||||
// and nothing to keep in step when a mesh seat is added.
|
||||
const meshSeatPrefix = "mesh-"
|
||||
|
||||
// retiredLoginShell is the one name outside the prefix a module may not declare: the login shell's,
|
||||
// from when a module declared it (novox/hq ADR 0176), before it became the mesh's (ADR 0204).
|
||||
const retiredLoginShell = "login-shell"
|
||||
|
||||
// A SeatDeclaration is a role a module offers on the bus: what may be sent to it, what it says,
|
||||
// and what it answers. A caller declares that it uses the *seat*, never the module, so the
|
||||
// implementation can be replaced under it.
|
||||
@@ -88,6 +92,15 @@ func declaredSeatProblems(m Manifest) []string {
|
||||
"seats (novox/hq ADR 0118)", m.Module, s.Name, meshSeatPrefix+"*"))
|
||||
continue
|
||||
}
|
||||
if s.Name == retiredLoginShell {
|
||||
// The name ADR 0176 gave the login shell when the zsh module declared it. The seat is
|
||||
// the mesh's now, so a module declaring the old name would be a second login shell
|
||||
// beside it, with a protocol of its own (novox/hq ADR 0204).
|
||||
problems = append(problems, fmt.Sprintf(
|
||||
"%s declares a seat named %q; the login shell is the mesh's own seat %s, which a shell "+
|
||||
"module claims and none declares (novox/hq ADR 0204)", m.Module, s.Name, LoginShellSeat))
|
||||
continue
|
||||
}
|
||||
if seen[s.Name] {
|
||||
problems = append(problems, fmt.Sprintf(
|
||||
"%s declares the seat %q twice", m.Module, s.Name))
|
||||
|
||||
Reference in New Issue
Block a user