The shared layer is done — mastructs, ptolemy v1, and athena are merged. The user-facing half isn't: charon (auth core), andromeda (login UX), and mercury (OTP email) are still on feature branches, and the services are pinned to drifting mastructs versions. 3 of 6 services ready · 3 blockers.
| service | role in 2FA | state | PR | mastructs pin |
|---|---|---|---|---|
| mastructs | shared MFA schema + auth claims; auto-creates tables on startup | merged | #31 #32 | master (9cde804) |
| ptolemy v1 | API; triggers the table creation on startup | merged | #124 | master ✓ |
| athena | Node API; MFA-verified gate in auth middleware | merged | #21 #22 | n/a |
| charon | auth core: TOTP + email-OTP, lockout, replay guards | not merged (17 ahead) | #9 open, no approval | e2f759e (branch) |
| andromeda | web UI: login challenge, QR enrollment, Security page | not merged (12 ahead) | #144 open, no approval | a8439a8 (older) |
| mercury | sends the OTP email (charon calls it) | not merged (4 ahead) | no PR opened | 1d68265 (Jun 19) |
euclid, helios, diocletian — no 2FA branches, no change needed.
/login/mfa page, QR enrollment and Security settings are all here.Legacy MFA tables are auto-created on startup via mastructs ensuretablesexist, so every service must compile against the same mastructs — otherwise the first service to boot can create a table shape another doesn't expect. ptolemy is on master; the three unmerged services aren't.
Fix before tagging:
go get github.com/MetricAid/mastructs@master && go mod tidyon charon, andromeda, and mercury.
Push a dated tag v20260626 → autobuilder EC2 builds metricaidops/<svc>:tag and :latest → Docker Hub → Komodo redeploy (beta pulls :latest).
Tags can come from any branch, but :latest moves on every build and prod pulls :latest too — so tag master after merge, not feature branches. Legacy DB: the MFA tables are created by mastructs at startup, so there's no manual migration.
Deploy order: charon + mercury → helios + diocletian → euclid → ptolemy → andromeda → athena.
go mod tidy.v20260626 → autobuilder → :latest.