Acceptance: Spell review

A browser walk of the Spell review app on the offline local stack: each seat sees the right items and acts on the step it owns.

Prerequisites

  • The stack is running: npm run qa:local (or -- --fresh for untouched seed data). See offline local development.
  • Spell review is at http://127.0.0.1:4311. Sign in only through the direct links below.
  • If the list is empty, switch the cycle bar to the cycle that has items, or All cycles.

Steps

  1. EPL sees every item. Open http://127.0.0.1:4319/sign-in?seat=spell-pm&app=spell. Choose All cycles in Jump to. Expected: signed in as Erin EPL; both Spark items and "Sky Core: rotate synthetic oracle" are listed alongside the Grove items (the Sky Core item is filed for Prime Grove, so it sits in the Grove group). Note the address of "Grove: onboard synthetic RWA vault" for step 6. Screenshot spell-01-epl-list.png.
  2. EPL validates. Open "Grove: onboard synthetic RWA vault". Expected: current step Validate spell item request. Tick Request is complete and understandable and submit. Expected: the item moves to Triage & prioritize. Screenshot spell-02-epl-validated.png.
  3. BA Labs writes the pre-risk review. Open http://127.0.0.1:4319/sign-in?seat=spell-risk-reviewer&app=spell, then "Grove: adjust synthetic PSM parameters". Expected: current step Pre-risk review — write. Set Verdict to Approved, write a synthetic review and one next step with an owner, submit. Expected: the item moves to Pre-risk review — confirm next steps. Screenshot spell-03-ba-labs-review.png.
  4. BA Labs cannot validate. As the same seat, open "Sky Core: rotate synthetic oracle" (parked at Validate spell item request). Expected: no submittable form for that step. Screenshot spell-04-ba-labs-no-validate.png.
  5. Grove sees only Grove. Open http://127.0.0.1:4319/sign-in?seat=prime-member&app=spell. Expected: the four filed Grove items under All cycles, and the draft "Grove draft: raise the Grove ALM line" under Drafts (1); neither Spark item, and not the Sky Core item (another seat filed it). Screenshot spell-05-grove-list.png.
  6. Spark cannot see Grove. Open http://127.0.0.1:4319/sign-in?seat=prime-member-spark&app=spell. Expected: the two Spark items and no Grove item. Then open the Grove item address noted in step 1. Expected: not found or access denied, with none of its content shown. Screenshot spell-06-spark-denied.png.
  7. Tech coordinator owns technical review. Open http://127.0.0.1:4319/sign-in?seat=spell-tech-coordinator&app=spell, then "Grove: synthetic technical scope". Expected: current step Independent technical review with an editable form. Do not submit. Screenshot spell-07-tech-review.png.

Save every screenshot under .qa-local/screenshots/.

What counts as a failure

  • A sign-in link that does not land in Spell review signed in as the named seat.
  • A server error, a blank page after the first compile, or a console error on submit.
  • A seat seeing an item it should not (Spark seeing Grove, Grove seeing Spark).
  • A seat able to submit a step it does not own, or a submitted step that does not advance.

Known gaps

  • Steps 2 and 3 change the seed; run npm run qa:local -- --fresh before walking again.
  • Items are seeded for the second offered vote date, so the current cycle view can be empty.
  • Continue appears only once a step's required fields are filled; wait for the field autosaves to finish before clicking it. A click that races an autosave is refused (409) and needs a reload.