Skip to content

docs: record the first live offboarding; the mock's sweep ends as GAM's did - #41

Merged
goetchstone merged 2 commits into
mainfrom
docs/first-live-offboarding
Oct 7, 2026
Merged

goetchstone merged 2 commits into
mainfrom
docs/first-live-offboarding

Conversation

@goetchstone

Copy link
Copy Markdown
Owner

What and why

The operator ran GamGUI's first live offboarding on a real leaver (plan D8), GAM 7.48.14. The Audit log shows all eight steps ok, "8 of 8". This records what that proved, scrubbed, and makes the mock fail the way GAM did.

Confirmed live (README "Live verification status"):

  • Revoke access (deprovision signout) and forwarding off: first live runs.
  • The auto-reply's "starts now, no end" form (start Started end NotSpecified).
  • The single transfer call (create datatransfer … drive,calendar … all) was accepted. That it completed and moved every file is not yet recorded.
  • The calendar sweep's shape: GAM visited every user and ended, as expected, on the leaver's own calendar.

The mock lied, mildly. all users includes the still-active leaver, so every live sweep ends exit 50 with "Cannot change your own access level" on their own calendar, which the connector tolerates as OWN_ACL. The mock's default sweep exited 0, a path live GAM never takes for an active leaver. It now ends the same way (wording and exit code as captured). SWEEPCLEAN keeps the exit-0 path for a leaver suspended first, and a new test pins the live shape.

Still open (runbook and plans say so): the transfer's completion with nothing left owned, a colleague's calendar share actually removed (only the last stderr line of each kind is audited), the reminder with an invitee (sendupdates all), and the account delete.

How it was verified

  • .venv/bin/python -m pytest -q passes (1582 passed, with GAM 7.48.17 vendored)
  • A screen changed: n/a

If it builds or runs a gam command

  • Mock change checked against the captured live output: same line, exit 50, kind own_acl

Live status: Ran on a real leaver in a real domain by the operator: eight writes confirmed as above.

Nothing private

  • No credentials, real domain names, real addresses, or captures from a real tenant (every address scrubbed)

🤖 Generated with Claude Code

goetchstone and others added 2 commits October 7, 2026 13:59
The first live offboarding showed `all users` includes the still-active
leaver, so every sweep ends on their own calendar: exit 50, "Cannot
change your own access level", tolerated. The mock's default sweep exited
0, a path live GAM never takes for an active leaver; it now ends the same
way. SWEEPCLEAN keeps the exit-0 path for a leaver suspended first.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
All eight steps ok on a real leaver (GAM 7.48.14). README now confirms
deprovision signout, forward off, the auto-reply's start/end form, the
single transfer call (accepted, completion not recorded) and the sweep's
shape. The runbook, guide and both plans say what it proved and what is
still open.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@goetchstone
goetchstone enabled auto-merge (squash) October 7, 2026 18:00
@goetchstone
goetchstone merged commit cba0b8c into main Oct 7, 2026
17 checks passed
@goetchstone
goetchstone deleted the docs/first-live-offboarding branch October 7, 2026 18:13
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