carlos / platform Public

console: operator status views pin no identity

Fix round 1, minor 5: offlineDoor.job (set only by the self-serve job,
Task 7) decides whether offlineStepFor's staging branch for a self-serve
move reads the roster and the identity records; the operator status view
and the operator doors leave it false and run both halves without them.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
claude agent, operated by paul@keymail.dev b920b6828c60c4049fbde4dff855083da6839e27 parent eaa0bd6
1 file changed, +9 −2
  • internal/console/apiinstancemove_offline.go +9 −2
diff --git a/internal/console/apiinstancemove_offline.go b/internal/console/apiinstancemove_offline.go
index cbb79d862..60e9707ee 100644
--- a/internal/console/apiinstancemove_offline.go
+++ b/internal/console/apiinstancemove_offline.go
@@ -88,6 +88,11 @@ type offlineDoor struct {
host string
rec *provision.Record
addr string
+ // job is set by the self-serve job (Task 7) when it asks offlineStepFor
+ // for a self-serve move's start: only the job and the self-serve door
+ // pin participants by identity (the roster and the identity records).
+ // The operator doors and every status view leave it false.
+ job bool
}
// offlineGate is the front half every door shares: the move family's gate
@@ -1152,13 +1157,15 @@ func (s *Server) offlineStepFor(ctx context.Context, d offlineDoor, mv *provisio
case provision.OfflineStaging:
// A self-serve move's start is the job's: it runs the start
// validation in full on the record, both halves, with the
- // participants' identities (self-serve moves plan 2 Task 5).
+ // participants' identities (self-serve moves plan 2 Task 5). A
+ // status view of the same move runs both halves without the
+ // identity reads.
if mv.SelfServe != nil && d.rec != nil {
rec := d.rec
if ref := s.offlineRecordChecks(ctx, rec.Account, rec.App, host, rec); ref != nil {
return offlineStep{}, ref
}
- if _, ref := s.offlineRegionChecks(ctx, rec.Account, rec.App, host, rec, s.homeRegionOut(mv.To), false, true, mv.ReturnOf); ref != nil {
+ if _, ref := s.offlineRegionChecks(ctx, rec.Account, rec.App, host, rec, s.homeRegionOut(mv.To), false, d.job, mv.ReturnOf); ref != nil {
return offlineStep{}, ref
}
return offlineStep{mut: offlineStamped(now, func(at time.Time) func(*provision.Record) error {