Relationships
#4676 workflow history get: show the username for who decided an approval, not just user:<id>
Opened by skunk-ape · 11/12/2026
Problem
swamp workflow history get prints approval decisions as Approved by user: via . Under OAuth the id is the provider's opaque subject, so the line names nobody a reader recognises. The dashboard's Activity view names the same person by username, because audit events carry principalUsername.
The run record only stores decidedBy (and initiatedBy) as the principal id. The username is known only to serve, in memory, at the moment the run is started or decided. So an offline CLI reading the local run record cannot recover it.
Proposal
Record the username, when serve knows it, on the run record next to initiatedBy and on each approval decision next to decidedBy, as new optional fields. Then history get (and the dashboard run detail) print the username when it is recorded, and fall back to user: when it is not, for example on old runs or under token auth, where the id already is the username.
Notes
- This changes the run record and the --json view, so swamp-uat's strict schemas for the run view and the approval decision need the new optional fields in the same change.
- swamp-uat tests/cli/serve/token/client_test.ts asserts the exact line Approved by user:stack72 via direct:token at. Under token auth that line should not change.
- Split out of #4674, which adds the client to the dashboard's Activity and run detail views.
Open
No activity in this phase yet.
Sign in to post a ripple.