Sign in with Excitor Core or an etpl_ key only; fix lead-to-plan workflow bugs
Stacked on !55 (merged) (dgs-import-workflow). Merge !55 (merged) first; this MR should then retarget to main.
Sign-in
- Only two ways in: Sign in with Excitor Core, or an
etpl_key behind "Log in another way". - Email/password sign-in, the sign-up form and the admin "set password" box are removed, with their routes.
- Every key starts with
etpl_; the server refuses any other key, includingBRD_API_KEY/BRD_ANALYST_KEY. Opening the access store revokes older keys and drops stored passwords, so everyone signs in again. - Sign-up settings now only govern a person's first Excitor Core sign-in.
- The sign-in page describes ETPL Intelligence (Lead → BRD → FRD → Plan → Zoho).
Workflow fixes
- Lead → BRD: refuse auto-fill values citing sources that don't exist; keep picked modules; keep sources when a refill fails; keep a disconnected Zoho org visible; refreshing a BRD keeps its depth and client family.
- BRD → FRD: an older version can't be approved over a newer one; revisions don't inherit lineage links; a meeting lookup failure no longer blocks creation; stores recover from a failed read and save only changed rows; workspace/library UI race fixes.
- FRD → plan: keep grouped workflow criteria; survive non-object configuration; merged items with open questions are manual; break dependency cycles; reconcile leaves never-attempted runs partial; metadata-only build saves create a new version.
Before deploying
Generate new keys on the server: echo etpl_$(openssl rand -hex 24). Copy the current BRD_API_KEY into ZOHO_MAIL_OAUTH_STORAGE_KEY first so Zoho Mail stays connected.
Testing
-
npm test: 1673 pass, 0 fail. -
node tests/browser/workflows.mjs: lead → BRD → FRD → plan → handoff passes.