3.9 KiB
3.9 KiB
Action log
2026-09-11 — bootstrap
- Created this repo to record decisions while executing cleanup items 1–5 (and a second pass on 2–5).
- Assumption: single developer, lab only; breaking changes allowed.
Step 1 — account-balance is the prepaid source of truth
- Persist books to
BOOKS_PATH(atomic JSON). - Mutations go through
balance.adjust/usage.recorded; edge cachebalanceCentsis updated from the books reply only. - Local cache mutate only when
NATS_URLandACCOUNT_BALANCE_URLare both unset (tests).
Step 2 — identity join
zappier-identitymailbox:verae.identity.bind/verae.identity.lookup.- Portal + middleware tenants store
veraeUserId; JWT never public.
Step 3 — access planes are the public doors
- zappier-edge binds loopback (
127.0.0.1:3000). - Public: access-web
:3021, access-api:3022, access-leaf:3023, access-zapier:3024, access-staff:3025.
Step 4 — leaf hardening
verae-nats-accountsholds nats.conf + subject policy.- Leaf token required; billing subjects denied in policy file and access-leaf.
Step 5 — fleet spawn
- Prefer local machines for HTTP
spawn.commandservices. - Disable lan-134 unless
FLEET_ENABLE_LAN134=1. - SSH spawn timeout 8s; failed hosts skipped.
2026-09-11 — IAM JSON doors closed
- CS/sales/accounting/staff JSON list and sales PUT pricing now go through IAM (401 JSON, 302 HTML).
- Fleet service env sets
STAFF_AUTH=1withSTAFF_IAM_URL. - Re-walk: cs credit 200 agent=
cs; cs export 403; operator Fleet POST 200; admin/mepermissions:['*'].
2026-09-11 — IAM on lab, portal door, hardening
- Restarted fleet with
STAFF_IAM_URL. Walk: cs credits (agent=cs) and is 403 on accounting export; operator fleet POST 200, cs 403; admin/mepermissions*. - Portal public door
verae-access-web:3021/portal/(static +/portal/api→ loopback edge). - IAM sessions persist in JSON; login rate-limit per IP+username (8/10min); credits stamp IAM username as authz principal.
- lan-134 remains disabled unless
FLEET_ENABLE_LAN134=1. Receipt PDF branded (indigo header + legal footer).
2026-09-11 — staff IAM
- New
verae-staff-iam:3028 — users, roles, permissions, sessions, audit UI. - Admin login uses IAM when
STAFF_IAM_URLis set; tabs hide without permission. - CS/sales/accounting/access-staff/fleet mutating APIs check
cs.credit,sales.quote,accounting.export,fleet.operate, etc. - Seed: admin/cs/sales/accounting/operator. Shared staff key is fallback only.
2026-09-11 — last three UI leftovers
- Swagger
/docsstays stock; banner names it OpenAPI explorer. - Shared template
verae-staff-uifor CS + access-staff. STAFF_COOKIE_DOMAIN+ nginx example for multi-host.
2026-09-11 — names, staff session, exclusive jobs.events
- Account-balance stores display names (
customer.put+ lookup by name). Edge writes names on customer create/edit; CS/sales/accounting/staff join from edge if the ledger has no name. - New repo
verae-staff-session(:3027). Department HTML redirects whenSTAFF_AUTH=1. JOBS_EVENTS_EXCLUSIVE=1makesverae-jobs-eventsthe durable consumer; middleware webhook router backs off.- Catalog index is cards. Disabled fleet machines are grey, not degraded yellow.
2026-09-11 — UI design-system pass
- Restyled CS/sales/accounting/access-staff to portal indigo; dollars + names.
- Fleet ⋯ menus, role chips, Docs cards, 0.0.0.0 copy, simulator indigo (orange = faults).
- Portal masked API key; admin customer drawer; empty invoice illustrations.
- Catalog system-ui. New independent repo UI-Docs (walkthrough, screenshots, UI-REVIEW.pdf).
Second pass (2–5)
- Identity used from portal when
IDENTITY_URLset. - Leaf loads allow-list from nats-accounts
policy.json. - Staff plane is a first-class mailbox (
verae-access-staff). - jobs.events mailbox process
verae-jobs-events(passthrough + count).