Certificates QA — Comprehensive Walkthrough (Internal)
Jira: DLOW-230
What this is: Internal QA walkthrough for the certificate admin batch (CCS-13 through CCS-17, styling cross-cuts, pipeline styling). Sources:
- UAT guides specs 031–047 on
main(044 is doc-only — excluded) - Admin Spec workflow §4 certificate path
- Jira acceptance criteria (DLOW-183–222, styling DLOW-203–207)
- UAT-aligned verify labels from uat-checklist.md + guide confirmation steps
Prerequisite: DLOW-194 — Courses QA recommended (foundation seed PLG-LRW-201 / Paralegal certificate). Parts 15–16 use Enrollment Admin, not catalog PM.
Not business UAT — internal QA before release.
Also see:
- DLOW-194 — Courses QA (foundation)
- DLOW-198 — Sections QA (section path — separate walkthrough)
- Admin Spec
Legend
| Marker | Meaning |
|---|---|
| (no marker) | Core walkthrough from UAT guides (specs 031–047, excl. 044) |
| NEW — UAT-aligned | Verify items curated from uat-checklist + guide confirmations |
| NEW — Correction | Fixes or RBAC notes for internal QA |
Before you start
Start here: https://lsuoce-development.fly.dev/
- Confirm DLOW-194 foundation passed — or seed via QA Seed Tools → CCS-01 UAT — Legal Research & Writing.
- Open catalog admin dashboard: https://lsuoce-development.fly.dev/dashboard/catalog/
- For Parts 15–16 (pipeline), also test as Enrollment Admin (see table below).
Log in as:
| Who | Password | Use for | |
|---|---|---|---|
| Program Manager (primary CE user) | pm_catalog@example.com | password12! | Certificate/catalog workflow (Parts 1–14) |
| Admin | admin@lsu.edu | password12! | Seed tools, superuser checks |
| Enrollment Admin | enrollment.admin@lsu.edu | password12! | Pipeline styling Parts 15–16 |
Demo anchor: Paralegal Studies Certificate and PLG-LRW-201.
First visit tip: Site may be asleep. If you see a 502, wait 15 seconds and reload.
General Notes & Uploads
Test in this order
| Step | What | Build ticket | UAT guide |
|---|---|---|---|
| 1 | CCS-17 — Catalog chooser home (CCS-17) | DLOW-222 | 047-catalog-default-page |
| 2 | CCS-styling-01 — Admin design system + Certificates list (CCS-styling-01) | DLOW-203 | 038-admin-design-system |
| 3 | CCS-13 — Certificate context & versioning (CCS-13) | DLOW-183 | 031-certificate-context-versioning |
| 4 | CCS-13a — Standalone course list & create (CCS-13a) | DLOW-199 | 032-standalone-course-list |
| 5 | CCS-13b — Unify course membership (CCS-13b) | DLOW-200 | 033-certificate-membership-unify |
| 6 | CCS-14 — Required courses & elective rules (CCS-14) | DLOW-184 | 034-certificate-required-elective-rules |
| 7 | CCS-14a — Rules builder IA (CCS-14a) | DLOW-201 | 035-certificate-rules-builder-ia |
| 8 | CCS-15 — Eligibility, GPA & publish (CCS-15) | DLOW-185 | 036-certificate-eligibility-gpa-publish |
| 9 | CCS-13d — Certificate status control (CCS-13d) | DLOW-210 | 043-certificate-status-control |
| 10 | CCS-14b — One-screen requirements & eligibility (CCS-14b) | DLOW-211 | 046-certificate-one-screen-ia |
| 11 | CCS-styling-04 — Requirements drag-to-reorder (CCS-styling-04) | DLOW-206 | 041-requirements-drag-reorder |
| 12 | CCS-styling-02 — Catalog & course admin styling (CCS-styling-02) | DLOW-204 | 039-catalog-admin-styling |
| 13 | CCS-13c — Decouple course & section routes (CCS-13c) | DLOW-209 | 045-decouple-course-section-routes |
| 14 | CCS-16 — Published D-Low preview (CCS-16) | DLOW-186 | 037-published-dlow-preview |
| 15 | CCS-styling-03 — Application pipeline styling (CCS-styling-03) | DLOW-205 | 040-application-pipeline-styling |
| 16 | CCS-styling-05 — Pipeline stat-tile filters (CCS-styling-05) | DLOW-207 | 042-pipeline-stat-tile-filters |
Progress:
Part 1 — Catalog chooser home (CCS-17)
Task: DLOW-222 · Needs DLOW-194 foundation (or CCS-01 seed)
In plain English: Catalog opens as a chooser between Certificates and Courses — not a certificate list by default.
Workflow area: §4 — Catalog default landing / chooser
Walkthrough 1.1 — 1 — Catalog is a chooser
- Open: https://lsuoce-development.fly.dev/dashboard/catalog/
- Confirm the heading is Catalog and the line under it is Manage certificates, courses, and sections.
- Confirm two tiles labeled Certificates and Courses. They should not show numbers.
- Confirm there is no certificates table, no search/filter bar, and no Certificates / Courses tab row.
- Click Certificates. You should land on https://lsuoce-development.fly.dev/dashboard/catalog/certificates/ with heading Certificates and Paralegal Studies Certificate in the table. Still no workspace tabs.
- Go back to Catalog (use the Catalog crumb). Click Courses. You should land on https://lsuoce-development.fly.dev/dashboard/catalog/courses/ with heading Courses and Legal Research & Writing. Still no workspace tabs.
Walkthrough 1.2 — 2 — Certificates list still works
- Open: https://lsuoce-development.fly.dev/dashboard/catalog/certificates/
- Confirm search, costing-unit filter, + Create certificate, and the table. Confirm there is no Certificates / Courses tab bar. (Published preview sits next to the create button; it is not part of this story.)
- Search Paralegal, click Apply. Other certificates should drop out. Clear should bring the full list back on a clean
/dashboard/catalog/certificates/URL (no?q=). - Filter by a non-Paralegal costing unit. Paralegal should disappear. Clear again.
- Click + Create certificate. Click Cancel. You should be back on the certificates list — not the chooser.
- Create again: unique name, pick a costing unit, Save draft. You should land on Edit certificate (
…/certificates/<id>/edit/), still not the chooser. - From the list, click the certificate name Paralegal Studies Certificate. Edit certificate should load — the name goes to the editor, not to a course list. Open its preview URL (
…/certificates/<id>/preview/). It should load — not send you to login or Catalog home.
Walkthrough 1.3 — 3 — Courses list still works
- Open: https://lsuoce-development.fly.dev/dashboard/catalog/courses/
- Confirm heading Courses, the filter bar, Legal Research & Writing, and no Certificates / Courses tabs.
- Search Legal Research, Apply. The course should remain. Filter Certificate to Paralegal Studies Certificate and Apply. The course should still be there.
- Open the row ⋯ menu and choose Edit course. The address should be
/dashboard/catalog/courses/<id>/edit/(no certificate id in the path). - Click Back to courses to return to the list. Now reach that course's sections: either click the course title or open the row ⋯ menu and choose View sections. Either one lands on
/dashboard/catalog/courses/<id>/sections/with heading Sections. (The course editor has no Sections link — Preview (internal), Edit course, and Back to courses are its only nav.) - On that sections list, confirm the section rows are plain text, not links, and that the row ⋯ menu offers Edit section and Internal preview.
Walkthrough 1.4 — 4 — Catalog crumb means home
- On the certificates list, confirm the trail is Catalog / Certificates. Click Catalog. You should be on the chooser (
/dashboard/catalog/). - On the courses list, confirm Catalog / Courses. Click Catalog — chooser again.
- Click the certificate name Paralegal Studies Certificate to open Edit certificate. Click Catalog. You should get the chooser, not the filtered certificates table.
- Back on Edit certificate for Paralegal, click the Courses button under the page title. That opens the certificate's own course list at
…/certificates/<cert_id>/courses/. Click the course title Legal Research & Writing (or row ⋯ → View sections) to reach its sections. The trail should be Catalog / certificate name / course title / Sections — four pieces, not five. Note the trail depends on how you got there. Reaching sections through the certificate keeps the certificate in the trail (four pieces). Reaching the same course from the standalone courses list gives Catalog / course title / Sections — three pieces, because there is no certificate in context. Both are correct; only the certificate-scoped screen is the four-slot case this story is about.
Walkthrough 1.5 — 5 — Filters stay on the certificates list
- Open: https://lsuoce-development.fly.dev/dashboard/catalog/certificates/
- Search Paralegal, Apply. Click Clear. Stay on
/dashboard/catalog/certificates/with an empty search box. - Search Paralegal again, Apply. Click + Create certificate, then Cancel. You should return to the list with that search still applied (look for
q=in the address). - With that search still on, open https://lsuoce-development.fly.dev/dashboard/catalog/certificates/999999/edit/. You should bounce to the certificates list with the search still there — not to the chooser.
- Open: https://lsuoce-development.fly.dev/dashboard/catalog/?q=paralegal. You should see the chooser tiles, not a certificates table.
Part 1 complete: · Issues? File on DLOW-222
Part 2 — Admin design system + Certificates list (CCS-styling-01)
Task: DLOW-203 · Needs Part 1 (catalog chooser)
In plain English: Staff pages share LSU admin chrome; certificates list matches the design-system mockup.
Workflow area: §4 — Shared admin chrome + certificates list pilot
Walkthrough 2.1 — 1 — Admin chrome on staff pages
- While logged in as Program Manager, open the Certificates list. - Page feels like the new admin treatment (lighter background, updated type). - No old purple hero banner at the top of this screen.
- Open Create certificate. - Same admin background/type treatment. (This guide originally said the form layout was not yet migrated. It has been since — the form now uses the shared page header and
.ui-cardsections. Seeing a fully-styled form here is correct.) - Open the public home page without logging out. - Public page does not look like the admin workspace (no admin-only styling bleed).
Walkthrough 2.2 — 2 — Certificates list matches the mockup
- Header and anatomy - Breadcrumb reads Catalog / Certificates. The Catalog crumb goes to the chooser at
/dashboard/catalog/, not back to this list. - Title Certificates with the muted subtitle Manage certificate programs, requirements, and publishing. - Right side: Published preview (secondary) and + Create certificate (primary). - No dark card-header bar above the table. - Filters - There is no Certificates | Courses tab strip. If you see one, that is a bug. - Filter row: Search, Costing unit, Apply (primary), Clear (ghost). - Type a nonsense search (e.g.
zzz-no-match) and click Apply — you get No certificates found. with the normal header still in place (no hero). - Click Clear — seeded certificates return and the address is a bare/dashboard/catalog/certificates/. - Table and row actions - Columns: Certificate, Costing unit, Status, Courses, Actions. - Status shows as a badge, not raw colored text. - Each row has a single ⋯ kebab and no other button. - Open the kebab — exactly View courses, Edit certificate, Internal preview. Duplicate and Archive must not appear. - Count line above or beside the table: Showing … of …
- Mockup comparison (human eye) - The mockup file is older than the shipped screen. Four differences are already known and accepted — do not report them: the mockup draws a Certificates | Courses tab strip; it shows View courses as a per-row button instead of a kebab item; it has no Published preview button in the header; and it hides the Actions column header where the live table prints it. - Everything else — layout, density, badge treatment, count line, filter card — matches. - If anything outside that list looks off, note it for the author before release (spacing, color nuance, etc.) — automated tests checked structure, not every pixel.
- Primary buttons - Exactly two prominent primary buttons on this page: + Create certificate and Apply. Clear, Published preview, and everything in the kebab are not primaries.
Walkthrough 2.3 — 3 — Same tasks as before
- Click + Create certificate — you reach the existing create flow.
- On a row, click the certificate name — it opens that certificate's Edit screen.
- From the kebab, open View courses, Edit certificate, and Internal preview — all three still work. View courses lands on the course list scoped to that certificate.
- Reach the courses list the current way: click the Catalog breadcrumb to get the chooser, then the Courses tile — or go straight to
/dashboard/catalog/courses/. There is no Courses tab to click. - Optional: open Enrollment pipeline — links still load. It has since been migrated to the design system too, so expect the new layout rather than the old one this guide originally described.
Walkthrough 2.4 — 4 — Access unchanged
- Log out. Log in as Enrollment Admin (
enrollment.admin@lsu.edu/password12!). - Try to open the Certificates list. - Access denied (403 or equivalent) — same as before this story.
- Try the chooser at
/dashboard/catalog/too. - Also 403. Both screens sit behind the same access rule.
Part 2 complete: · Issues? File on DLOW-203
Part 3 — Certificate context & versioning (CCS-13)
Task: DLOW-183 · Needs Part 2 (certificates list)
In plain English: Create certificate drafts, attach courses via picker, version history, and publish-readiness gates.
Workflow area: §4.1 — Certificate create/edit, version context, publish readiness
Walkthrough 3.1 — 1 — Create a certificate draft shell
- Open: https://lsuoce-development.fly.dev/dashboard/catalog/certificates/
- Click Create certificate in the page header (or open Create certificate directly).
- Fill Name (e.g. “UAT Certificate — Paralegal Add-on”), select Costing unit → Paralegal Studies (PL), and enter Subject area, Description, Meta title, and Meta description. There is no Status field on the create form — status appears only after the certificate exists.
- The Paralegal default for Application required is applied when the form is re-rendered, not the instant you pick the costing unit — there is no JavaScript on this field. To see it: with Paralegal selected, clear Name and click Save draft. The form comes back with Application required ticked and help text reading “When enabled, only admitted certificate students may register.” Put the name back before saving for real.
- Click Save draft.
- Confirm you land on the edit page (Edit certificate). Expect: - the Certificate context card, now with a Status selector under Costing unit reading Coming Soon — new certificates are saved as Coming Soon, and there is no "Draft" badge anywhere on this page; - a warning at the top of the Courses card: “This certificate is a draft shell and cannot be published until at least one course is attached.”; - No courses attached yet. under Required courses; - a Publish card reading Publish (draft v1) with a Not published yet badge.
Walkthrough 3.2 — 2 — Requirement version context
- Open: the certificate edit page from Walkthrough 1.
- Scroll past the Courses card to the Publish card at the bottom of the main column.
- Confirm its heading reads Publish (draft v1) with a Not published yet badge — no last-published date.
- In the right-hand column, confirm the Version history card. On a brand-new certificate it reads Current draft v1, Published version None, Courses on draft 0, and lists v1 — draft. The card is always present; it is never blank.
Walkthrough 3.3 — 3 — Attach a course via catalog picker
- Open: certificate edit page (Walkthrough 1 certificate).
- In the Courses card, click Add course to the right of the Required courses heading. A picker opens, titled Add to required. There is no course search box sitting directly on the card — the search lives inside the picker.
- In the picker, type LRW or PLG-LRW-201 and press Search. On the row for PLG-LRW-201 — Legal Research & Writing click Add. (You can also tick several rows and click Add selected.) Nothing is labelled "Attach".
- Close the picker and confirm the course now appears under Required courses.
- On the same edit page, click Courses (next to Internal preview). That opens this certificate’s course list:
https://lsuoce-development.fly.dev/dashboard/catalog/certificates/<cert_pk>/courses/Confirm PLG-LRW-201 is still listed as its own course (code + title), not absorbed into the certificate. The attach is additive — the course record is unchanged. The standalone list at https://lsuoce-development.fly.dev/dashboard/catalog/courses/ now exists too (it shipped with CCS-13a / DLOW-199), and shows the same course. Either list is fine for this check.
Walkthrough 3.4 — 4 — Publish-readiness gate (currently unproven — report what you see)
- Open: Create certificate.
- Fill required fields only (name + Paralegal costing unit) and Save draft.
- On the edit page, scroll to the Publish card and find Check publish readiness.
- Confirm the button is greyed out and unclickable. The reason is spelled out at the top of the Courses card: at least one course must be attached. ### Passes — one course attached
- Open: the certificate from Walkthrough 3 (with PLG-LRW-201 attached).
- Click Check publish readiness.
- Confirm the message “Publish readiness checks passed.” appears in the Publish card. The page does not reload or redirect — the card updates in place. No live/public toggle happens from this button. This is the step to watch. The automated proof for it is currently recorded as failing, so your result here is the real evidence. Note exactly what happens, including whether the button responds at all.
Walkthrough 3.5 — 5 — Version fork after publish (developer-assisted)
- After bootstrap, open the certificate edit page.
- Confirm the Publish card heading now reads Publish (draft v2), and the Version history card shows Current draft v2, Published version v1, and a v1 — Current — published \<date\> line.
- Attach a different course to the draft v2 (or remove one on v2 only, via the row ⋯ menu → Remove).
- Confirm Version history still shows Published version v1 and that Courses on draft tracks only your v2 edits. The card does not display a course count for v1, so proving v1's rows were untouched needs a developer to check the database (
CertificateRequirementVersionv1requirement_coursescount) — this is the one step in the guide you cannot fully confirm from the screen.
Walkthrough 3.6 — 6 — Internal preview (optional)
- Open:
https://lsuoce-development.fly.dev/dashboard/catalog/certificates/<cert_pk>/preview/(replace<cert_pk>with your certificate ID from the edit URL). - Confirm Description, Subject area, Meta title, and Meta description appear on the preview page.
Part 3 complete: · Issues? File on DLOW-183
Part 4 — Standalone course list & create (CCS-13a)
Task: DLOW-199 · Needs Part 3
In plain English: Reach standalone and certificate-scoped course lists; create standalone courses; attach from certificate edit.
Workflow area: §4.2 — Standalone vs certificate-scoped course lists
Walkthrough 4.1 — 1 — Reaching both lists from Catalog
- Open: https://lsuoce-development.fly.dev/dashboard/catalog/
- Confirm the heading is Catalog, the line beneath it is Manage certificates, courses, and sections., and there are exactly two tiles: Certificates and Courses. There should be no table, no filter bar, and no Certificates / Courses tab row anywhere.
- Click Certificates. You should land on https://lsuoce-development.fly.dev/dashboard/catalog/certificates/ with the heading Certificates. Apply a filter here (search, or a costing unit) and click Apply.
- Click the Catalog crumb, then the Courses tile. You should land on https://lsuoce-development.fly.dev/dashboard/catalog/courses/ with the heading Courses.
- Expect your filters to be gone if you come back through the chooser. The tiles link to the plain list URLs, and loading a plain list URL resets that list's saved filters. This is a change from the original tabbed design in this story, where the tab control restored them. Go back to Catalog → Certificates and confirm the list is unfiltered.
- Where saved filters are restored today: - Certificates: apply a filter, click Create certificate, then Cancel — you return to the certificates list with the filter still applied. The same restoration happens if you open a deleted or non-existent certificate id and get bounced back. - Courses: apply a filter on the courses list, click + Create course, then click the Courses breadcrumb on that form — your course filters come back. (Note the standalone Edit course screen does not have a Courses crumb; its trail is Catalog / course title / Edit course.)
- Walk both of those and confirm the filter is still applied when you land.
Walkthrough 4.2 — 2 — Standalone course list (the filters need your eyes)
- Open: https://lsuoce-development.fly.dev/dashboard/catalog/courses/
- Confirm the list includes courses with and without certificate links (e.g. PLG-LRW-201 plus the course you create in Walkthrough 3). Unattached rows carry an Unattached badge next to the title, and their Certificates column reads
0. Write down the row count shown just above the table — it reads Showing 1–N of N. You will compare against it after each filter. > The filter button is labelled Apply. (If you see it described anywhere as "Apply > filters", that phrasing came from the broken tests, not from the product.) - Costing unit filter. Pick PL — Paralegal in the Costing unit dropdown and click Apply. - The row count should drop below what you noted in step 2. - Every remaining row's Costing unit cell should read PL — Paralegal — check each one, not just the first. - The address bar should now end in
?costing_unit=followed by a number. - Click Clear; the original count should return. - Certificate filter. Select Paralegal Studies Certificate in Certificate and click Apply. - PLG-LRW-201 should still be listed. - Any course you created in Walkthrough 3 should be gone. - No remaining row should show an Unattached badge. - The address bar should gain
?certificate=followed by a number. - Unattached only. Click Clear first — while a certificate filter is applied, Unattached only is deliberately disabled and the page says Clear the certificate filter to use unattached only. Then tick Unattached only and click Apply. - PLG-LRW-201 should be gone. - Every remaining row should carry the Unattached badge and a
0in Certificates. - The address bar should gain?unattached=1. - Search. Click Clear, type
PLG-LRWinto Search courses, and click Apply. Then do it a second time with a distinctive word from a course title. - Only matching rows should remain, and the count above the table should match. - The address bar should gain?q=and your text. - Your text should still be sitting in the search box after the page reloads. - Test both the code fragment and the title fragment. Searching by code is the one thing here with no automated coverage of any kind. - Glance at the breadcrumb — it should read Catalog / Courses, with no invented certificate name. Catalog should take you to the chooser.
- Preview a course. Open any course's row ⋯ menu and choose Preview (internal). The address should be
/dashboard/catalog/courses/<id>/preview/with no certificate in it, the course title should appear as the page heading, and the preview body should repeat the title as a labelled value. (An automated check covers this page but currently trips over the title appearing in three correct places at once — the page itself is fine.)
Walkthrough 4.3 — 3 — Create a standalone course
- From the courses list, click + Create course (or open Create course directly).
- Confirm the breadcrumb reads Catalog / Courses / Create course — the parent is the courses list, not a certificate name.
- Select a Costing unit and complete the required fields (title, code, credit type, modality).
- Scan the entire form — there should be no certificate picker, link button, or multi-select for certificates.
- Click Save as draft. (The other footer button is Mark ready for section creation, which also saves but flips the course to ready; either is fine for this check. There is no plain Save button.)
- Return to https://lsuoce-development.fly.dev/dashboard/catalog/courses/, tick Unattached only, click Apply, and confirm your new course appears.
Walkthrough 4.4 — 4 — Attach from certificate edit
- Open: https://lsuoce-development.fly.dev/dashboard/catalog/certificates/, find Paralegal Studies Certificate, and open its edit page.
- Scroll to the Courses card and its Required courses section. (This card was called "Requirements" when this story shipped; CCS-14b renamed and restructured it.)
- Click Add course. A picker opens, headed Add to required.
- Search for the course you created in Walkthrough 3 and click its Add button — or tick it and use Add selected. If your course does not appear: the picker only offers courses in the certificate's costing unit. A mismatch shows No matching courses in this costing unit. Create the course in the certificate's unit and try again.
- Confirm the course now appears under Required courses.
- Open that course's edit form from the certificate context (certificate edit → Courses button → row ⋯ → Edit course), change a harmless field (e.g. the description), and Save as draft.
- Confirm the course is still attached — saving the course form must not link or unlink certificates.
Walkthrough 4.5 — 5 — Certificate-scoped list, and no create path there
- From the certificate edit page, click the Courses button in the action row beside Internal preview (or navigate to
https://lsuoce-development.fly.dev/dashboard/catalog/certificates/<cert_pk>/courses/— your developer can supply the certificate ID). - Confirm the heading is Courses with the certificate name as the subtitle, the breadcrumb reads Catalog / certificate name / Courses, and the linked courses (e.g. PLG-LRW-201 and your newly attached course) are listed. Note there is no create button on this list.
- Try the create URL by appending
/create/to that path — you should get a 404, not a create form. New courses are created only from the standalone + Create course button. - From this cert-scoped list, open a course's row ⋯ menu and choose Edit course. Confirm the breadcrumb still shows the certificate name: Catalog / certificate name / course title / Edit course.
Walkthrough 4.6 — 6 — Course edit never links certificates
- Open: the standalone courses list. Note that clicking a course title takes you to that course's Sections list, not to edit. To reach edit, open the row ⋯ menu and choose Edit course — the address should be
/dashboard/catalog/courses/<id>/edit/, with no certificate id in the path. - Change a field and Save as draft — certificate membership must not change.
- Repeat from the certificate-scoped course list (Walkthrough 5) — same rule applies, and the certificate stays attached.
Part 4 complete: · Issues? File on DLOW-199
Part 5 — Unify course membership (CCS-13b)
Task: DLOW-200 · Needs Parts 3–4
In plain English: Certificate Required courses and membership stay in lockstep; draft wins over published.
Workflow area: §4.2 — Required courses list sync with membership
Walkthrough 5.1 — 1 — Cert-scoped list and Required courses match
- Open: https://lsuoce-development.fly.dev/dashboard/catalog/certificates/
- Click Paralegal Studies Certificate in the table. On Edit certificate, scroll to the Courses card. Note every course under Required courses (expect PLG-LRW-201 after the CCS UAT seed).
- From that certificate, click the Courses button under the page title (or open
https://lsuoce-development.fly.dev/dashboard/catalog/certificates/<id>/courses/— the certificate id is in the edit URL). - Confirm the list shows exactly the same courses — no extras, none missing.
Walkthrough 5.2 — 2 — Draft wins over published
- On Paralegal Edit certificate → Courses card, open the ⋯ menu on the PLG-LRW-201 row (or another attached course) and choose Remove. In the Version history card on the right, confirm Current draft now shows a version number and Published version is unchanged.
- Confirm Required courses no longer lists that course (it may still appear in the Add course picker — that is the picker, not membership).
- Open the cert-scoped Courses list. The removed course must be gone (“No courses found for this certificate.” if you emptied the draft).
- Optionally add a different same-unit course: Add course beside Required courses, then Add on its row in the Add to required picker. Both surfaces should show only the draft set.
- Open that course’s Edit form, change the title, Save as draft. Membership must not change — the course stays attached (or stays detached).
Walkthrough 5.3 — 3 — Standalone filters use the same rule
- Open: https://lsuoce-development.fly.dev/dashboard/catalog/courses/
- Set Certificate to Paralegal Studies Certificate and click Apply. PLG-LRW-201 should appear if it is still on the active requirement version (re-seed or re-add it if you emptied it in Walkthrough 2).
- Enable Unattached only and click Apply. You must clear the certificate filter first — the checkbox is disabled while a certificate is selected, and the page says so. PLG-LRW-201 must not appear. A course you created from + Create course and never attached must appear.
- Create or use a second certificate. Add a course to certificate A only, then filter the standalone list by certificate B — that course must not appear.
Walkthrough 5.4 — 4 — Add and remove stay in lockstep
- Create a standalone course in the Paralegal costing unit (or reuse an unattached one). Confirm it shows under Unattached only.
- Open Paralegal Edit certificate → Courses card. Click Add course beside Required courses, search for that course in the Add to required picker, and click Add on its row (or tick it and use Add selected).
- Confirm it is in Required courses, on the cert-scoped course list, and on the standalone list when filtered by Paralegal. It must disappear from Unattached only.
- Remove it: row ⋯ menu → Remove.
- Confirm it is gone from all three admin surfaces and shows again under Unattached only.
Walkthrough 5.5 — 5 — Leftover link vs cleanup
- Log out. Open: QA Seed Tools
- Run CCS-13b — leftover M2M course (not on Requirements).
- Log back in as Program Manager. In the Paralegal Courses card and on the cert-scoped course list, UAT-M2M-LEFT must not appear as attached (empty membership is OK if you removed everything earlier).
- On the standalone list, filter by Paralegal and click Apply — UAT-M2M-LEFT must not appear. Unattached only may show it (it is not on any requirement version).
- As
admin@lsu.edu, run CCS-13b — copy leftover M2M links onto Requirements. - As Program Manager, confirm UAT-M2M-LEFT now appears under Required courses, on the cert-scoped list, and under the Paralegal standalone filter.
Part 5 complete: · Issues? File on DLOW-200
Part 6 — Required courses & elective rules (CCS-14)
Task: DLOW-184 · Needs Part 5
In plain English: Build required lists from catalog; configure elective groups; path review reflects rules.
Workflow area: §4.2 — Required vs elective assignments, elective groups
Walkthrough 6.1 — 1 — Build a required list from the catalog
- Open: https://lsuoce-development.fly.dev/dashboard/catalog/certificates/
- Click Paralegal Studies Certificate to open its edit page. Scroll to the Courses card. It has two sections, Required courses and Elective groups, each with its own Add course button. There are no tabs and no create-course form here.
- If PLG-LRW-201 is not already under Required courses, click Add course next to that heading. A picker opens titled Add to required. Search the code, then click Add on the row (or tick it and use Add selected). Confirm the course appears under Required courses. Open the course’s own edit page from the standalone course list and confirm title/code did not change just because you added it.
- Create (or reuse) a second same-unit course and add it the same way. On the lower required row, open the ⋯ menu and choose Move up (you can also drag the ⠿ handle). Confirm the numbered required list and the Path review → Required list show the same order.
- Create a second certificate in the Paralegal costing unit. On that certificate’s Courses card, add the same course already required on Paralegal. Both certificates should list it independently.
- Create a course in a different costing unit. Open the picker on Paralegal and search that code. It must not appear — you should see No matching courses in this costing unit.
Walkthrough 6.2 — 2 — Required vs elective lives on the assignment
- On Paralegal Edit, in the Courses card, click Add group beside Elective groups, fill Label (for example Electives) and Slots
1, and click Create group. Add a same-unit course to Required courses if there isn’t one. Confirm it sits under Required courses, not in the group (which should read “No allowed courses in this group yet.”). - On the required row, open the ⋯ menu and choose Remove. Then click Add course inside the Electives group and add that same course. The picker title should read Add to Electives. The course must now be in the group and not in the required list — its ⋯ menu offers Remove from group. It must not appear in both places. (There is no single "move" control; remove-then-add is the product path.)
- On a second Paralegal-unit certificate, keep that same course required. Changing Paralegal must not change the second certificate’s designation.
- Published snapshot: log out, Open: QA Seed Tools
- Log back in as Program Manager. Open Paralegal Edit. Scroll to the Publish card: its heading should read Publish (draft v…) with a Last published … badge, because opening edit forks a draft. The Version history card in the right column should show both Current draft and Published version. Create a group if needed, then ⋯ → Remove PLG-LRW-201 from required and Add course it into the group. Confirm the version label still says (draft v…) afterwards — you are not editing the published version in place — and that the course sits in the group on this draft.
Walkthrough 6.3 — 3 — Configure elective groups
- On a draft certificate, click Add group beside Elective groups. Fill Label (for example Core electives), Slots
2, Description (for example Choose two), then Create group. Confirm the group shows “Complete 2 from this group.” and the description. Because slots is above 1 you should also see a note asking you to add at least that many courses. - Use the group’s Add course button until the group has three allowed courses. Confirm they are listed only on this certificate’s group.
- Read the Path review card in the right-hand column. It should say Complete 2 of 3 for that group and list the three courses. Optionally open Internal preview (the button at the top of the edit page, or
…/catalog/certificates/<id>/preview/) and confirm there is a field row named Core electives carrying the same Complete 2 of 3, the description, and the three courses. Each group gets its own row — there is no single "Elective pools" field. - Confirm a required course cannot also sit in a group on this version. Remove it from Required courses via ⋯ → Remove, then Add course it into the group; it must never appear in both lists.
- Add group a second time with a different label and slot count. Add at least one course to each. Both groups must stay distinguishable under Elective groups and in Path review.
- Try to over-promise a group. On a group with one allowed course, set Slots to
3and click Save group. The save must be refused with a message you can act on — “Slot count for <group> cannot exceed the 1 allowed course(s).” — and the group must still read “Complete 1 from this group.” - Same check on an empty group. Create a group with Slots
1, add no courses, then set Slots to2and Save group. The refusal names the shortfall — “<group> needs at least 2 allowed course(s) but has none.” A group in this state also shows an inline warning telling you how many courses to add. Delete group lives in the group’s ⋯ menu; it works whether or not the group has members, and members it removes stay in the catalog.
Walkthrough 6.4 — 4 — Remove rules and review the path
- On a draft with at least one required course, open its ⋯ menu and click Remove. Confirm it leaves the required list (“No courses attached yet.” if it was the last one). Reopen Add course and it should be offered there again with an Add button — that is the picker, not membership. The course must still exist on standalone courses.
- On an elective group member, open its ⋯ menu and click Remove from group. Confirm “No allowed courses in this group yet.” (if it was the last member) and that the group’s Add course can still target that course. The course must still exist in the catalog.
- With both a required sequence and at least one group, confirm the Path review card shows required order, each group’s label, “Complete N of M”, and allowed courses. That should match the Courses card beside it.
- Move every required course into groups (or remove them) so Required courses is empty but a group still has members. Path review must still render: No required courses. plus the elective group(s). With no groups at all it reads No elective groups.
Part 6 complete: · Issues? File on DLOW-184
Part 7 — Rules builder IA (CCS-14a)
Task: DLOW-201 · Needs Part 6
In plain English: Same rules as CCS-14 but one-screen layout with in-place updates and single path review.
Workflow area: §4.2 — One-screen rules builder layout
Walkthrough 7.1 — 1 — Same rules, one-screen layout
- Open: https://lsuoce-development.fly.dev/dashboard/catalog/
- Find Paralegal Studies Certificate and open Edit. Confirm Certificate context is a card of its own (name, costing unit, status, and the GPA/eligibility fields). Below it, a card titled Courses holds Required courses and then Elective groups, one under the other. Confirm there is no row of tabs. The Publish card's heading should still identify a draft version, e.g. Publish (draft v1).
- Next to Required courses, click Add course. A modal titled Add to required should open with a search box — not a create-course form. Search PLG-LRW-201 if it is not already required and click Add on its row. Confirm it appears under Required courses and the modal closes.
- Under Elective groups, click Add group, fill in Label (for example
Electives) and Slots1, then Create group. The group appears with its own Add course control and a ⋯ menu. - In the right-hand column, find the Path review card (below Version history). Confirm it lists required courses and any groups (label, Complete N of M, members). Scroll to the Publish card and confirm Check publish readiness is present. That button only runs the gate check; the separate Publish button next to the confirmation checkbox is what actually publishes, and it is not part of this story.
- You should never see a second full path-review block inside the Courses card. Path review exists once, in the right-hand column, and is read-only.
Walkthrough 7.2 — 2 — In-place updates (and the no-script fallback)
- Create three extra Paralegal courses if needed (Create course). On Paralegal Edit, use Add course next to Required courses to add them, so you have four required courses.
- In Certificate context, change Name to something you will not save (for example add
(unsaved)). Do not click Save draft. - On the last required course, open the ⋯ menu at the end of the row and choose Move up. Do this three times. After each click: - that course should climb the list; - the name field should still show your unsaved text; - the rest of the page should not blink as a full reload (address bar should not behave like a new document load). There is no Move down. You can also drag the ⠿ handle to reorder.
- Under Elective groups, on an empty group (create one with Add group if needed), set Slots to
2and click Save group. You must still see an actionable message — “<group> needs at least 2 allowed course(s) but has none.” — not a silent no-op. It appears both in the page alerts at the top of the content and inside the Courses card. The group should still read “Complete 1 from this group.” - Click that group's own Add course and Add a same-unit course that is not required. It should appear inside that group without a full reload. Back on Required courses, open a row ⋯ and choose Remove; the row should leave the list in place, and the course should still exist on standalone courses.
- No JavaScript: in the browser, disable JavaScript for this site (Chrome: site settings → JavaScript → Don’t allow, then reload). Open Edit again. All sections should still render, and Add course becomes an ordinary link that loads the edit page with the picker shown inline as a card instead of a modal — adding a course from there should still work and reload the page. Do not expect to reorder without JavaScript. Move up lives inside a Bootstrap dropdown that cannot open without scripting, and the drag handle needs scripting too, so there is no clickable no-JS path to reordering today. This is a known gap recorded on CR-07 in the checklist — please do not file it as a new bug. Turn JavaScript back on when you are done.
Walkthrough 7.3 — 3 — One picker, destination XOR, path review once
- On a draft, use Add group twice with different labels (for example Core electives and Specialty electives). Optionally create a third.
- Confirm each destination has its own Add course control — one next to Required courses and one inside each group — but that they all open the same picker. Open one and check the modal title names the destination you clicked (Add to Core electives). There is no Add to dropdown to set, and there is no Add to pool button.
- Using Core electives' own Add course, Add a same-unit course that is not already on this certificate. That course must not appear in Required courses, and it must appear under Core electives only — Specialty electives should still read “No allowed courses in this group yet.”
- Scroll the whole page. Certificate context, Required courses, Elective groups, Version history, Path review, and Publish should each be clearly labelled and separate — not one undifferentiated wall of fields.
- In Path review, confirm the required sequence, each group's label, slot wording (Complete N of M), and allowed courses. Confirm it has no edit controls and that there is no second copy of it inside the Courses card.
- Optional CCS-14 regression: try slot overflow again (Walkthrough 2 step 4) and confirm a foreign costing-unit course still does not appear in the picker search. Those rules must not have loosened.
- Known capability change — record what you see, do not "accept" it. CCS-14's one-click Move to elective pool and Move to required controls are no longer on the screen. To move a course between required and a group you must Remove it and then Add course at the new destination. Whether that was an intentional simplification is an open question for the product owner (see the drift report for this spec).
Part 7 complete: · Issues? File on DLOW-201
Part 8 — Eligibility, GPA & publish (CCS-15)
Task: DLOW-185 · Needs Parts 6–7
In plain English: GPA vs no-GPA certificates, publish gates for empty shells, learner vs future-learner behavior.
Workflow area: §4.2 — Eligibility notes, GPA gates, publish shell
Walkthrough 8.1 — 1 — GPA, No GPA, and two certificates
- Open: https://lsuoce-development.fly.dev/dashboard/catalog/certificates/
- Open Paralegal Studies Certificate → Edit. Look at the Certificate context card, below Application required. If this draft has never had GPA saved, the Minimum GPA box should already show 2.50, with helper text calling it a placeholder — not a locked rule.
- Change it to 3.00. Scroll to the bottom of the page and click Save draft (it sits below the Publish card). You should get Certificate saved. The field must still show 3.00 when the page comes back. Version history on the right must not suddenly show a new published current version — you only saved a draft.
- Check No GPA and Save draft again. Saving without a number must succeed. Now uncheck No GPA, clear the GPA box, and Save draft — you must see “A minimum GPA is required unless No GPA is enabled.” under Minimum GPA, and a linked summary at the top of the form saying one error was found and nothing was saved. The empty value must not stick. While you are here, do the same thing with the certificate name changed in the same submit. Because identity and eligibility now share one save, neither change should be stored.
- Open: Create certificate Create a second certificate on costing unit Paralegal. (The create form has no GPA fields — they appear once the certificate exists.) On its Edit page, turn on No GPA and Save draft. Reopen Paralegal — it must still be 3.00 (or whatever you left it), not No GPA.
Walkthrough 8.2 — 2 — Do not publish an empty or over-slotted shell
- Create a new Paralegal-unit certificate (costing unit Paralegal). Saving that form with zero courses is expected — you should see Certificate draft saved. That only stores the shell (name, costing unit). It is not publish. On this new certificate’s Edit page, scroll past Certificate context and the Courses card to the Publish card near the bottom. The Courses card should be showing the warning “This certificate is a draft shell and cannot be published until at least one course is attached.” On the Publish card, Publish (the button under the acknowledgement checkbox) should be enabled. Check I understand existing learners stay on the previous published version, then click Publish. Now you must see “At least one course must be attached before this certificate can be published.” Version history must still show Published version: None. Check publish readiness may stay greyed out here — that is the older “is it ready?” check, not this Publish button.
- On a draft that already has a course (Paralegal + PLG-LRW-201 is fine), find Elective groups on the Courses card. Click Add group, enter Label Electives, Slots 2, and click Create group — leave it with no allowed courses (or fewer courses than slots). Then confirm and Publish. The alert must read “Electives needs 2 allowed courses but has 0.” It must not become current.
- Fix the group — add a course to it, or open the group’s ⋯ menu and choose Delete group. (Lowering Slots to 1 while the group is still empty is itself refused, so add a course first if you go that route.) Set a GPA or No GPA and Save draft. Then confirm → Publish. Version history should show this version as the Published version, with a Current badge in the history list.
- Change the GPA and click Save draft only. The Published version line in version history must stay the version you just published — saving the draft is not publishing.
- Optional: publish a second complete draft (change GPA, save, confirm, Publish). History should list both version numbers; only the new one has the Current badge. The older one still shows its version number and published date.
Walkthrough 8.3 — 3 — Existing learners vs future learners
- If Paralegal is not already published, either finish Walkthrough 2 step 3 or (as Django superuser) run CCS-14 — published Paralegal version in QA Seed Tools, then log back in as Program Manager and open Paralegal Edit. Simply opening Edit starts a draft alongside the published version — you do not have to save anything first. Version history should show a Current draft number one higher than the Published version.
- Scroll to the Publish card. You should see Current published version N and a warning that existing learners stay on the previously published version while future learners will use the newly published current version.
- Click Publish without checking the box. Nothing should go live — you get “Acknowledge that existing learners stay on the previous published version before publishing.” and the published version is unchanged.
- Check the box, Publish. The new draft becomes Current. The previous published version remains in history.
- First publish: on a brand-new complete certificate that has never been published, the card reads “No published version yet. Draft vN will become current if you publish.” and the warning says there are no existing learners on a prior published version. You still must check the box. Unchecked Publish must not go live.
Walkthrough 8.4 — 4 — Additional eligibility notes
- In the Certificate context card, type a sentence in Additional eligibility conditions (for example Must finish internships), then Save draft. Reopen Edit — the sentence is still there. It is not echoed on the Publish card; that card holds no eligibility fields.
- Confirm and Publish. Then change the notes and Save draft again. You are now editing a new draft. Do not expect the already-published version to pick up the new wording as if you had edited it in place.
- On another complete draft, leave additional conditions empty, confirm, Publish. Publish must still succeed — notes are optional.
Part 8 complete: · Issues? File on DLOW-185
Part 9 — Certificate status control (CCS-13d)
Task: DLOW-210 · Needs Part 8 (published requirements)
In plain English: Change certificate status; Open blocked until requirements published; Closed/Coming Soon always save.
Workflow area: §4.1 — Open / Closed / Coming Soon status
Walkthrough 9.1 — 1 — Change status and see the list badge
- Open: https://lsuoce-development.fly.dev/dashboard/catalog/certificates/
- Edit Paralegal Studies Certificate (or any certificate).
- In Certificate context, confirm Status sits under Costing unit. Open the dropdown — options must be Open, Closed, Coming Soon (not Active/Inactive).
- Choose Closed. Click Save draft at the bottom of the page. You should see Certificate saved.
- Return to the Certificates list. The row badge should read Inactive.
- Edit again, set Coming Soon, save — list badge should read Coming Soon.
Walkthrough 9.2 — 2 — Open is blocked until requirements are published
- Use a certificate whose requirement rules have never been published (only a draft) and whose current status is Closed or Coming Soon. Create a new certificate if needed — it starts as Coming Soon with an unpublished draft, which is exactly right. If you reuse the seeded Paralegal Studies Certificate, set it to Coming Soon and save first: the block only fires when you move into Open, so a certificate already sitting in Open will just re-save without complaint. That is by design, not a bug.
- On Edit, set Status to Open. Click Save draft.
- Expect an error on the status field reading Publish the certificate requirement version before setting status to Open.
- Go back to the Certificates list — the badge should not have changed to Active.
Walkthrough 9.3 — 3 — Open works after publish
- On a certificate with requirements ready to publish, open Edit and scroll down to the Publish card — it is a card on the same page, below Courses. There are no tabs on this screen any more. Or use QA tool CCS-14 for a certificate that is already published (skip to step 4).
- Important: The Minimum GPA field in Certificate context shows 2.50 as a starting value, and that value is not stored on the draft until you save. Either keep 2.50 (or enter another value) or check No GPA — then click Save draft. Without that save, Publish will fail even though the field looks filled in. If it does fail, the banner you get still says "Save eligibility before publishing…" and tells you to click a Save eligibility button. That button no longer exists — the message was not updated when eligibility moved into the Certificate context card. Click Save draft instead. Worth filing against the publish flow, but it is not a CCS-13d blocker.
- Confirm at least one course is attached under Required courses. In the Publish card, tick I understand existing learners stay on the previous published version — it is mandatory — then click Publish. You should see Published requirement version 1 (or whichever number), and the card should show a Last published date.
- On Edit (Certificate context), set Status to Open. Save draft.
- Return to the Certificates list. Badge should read Active.
- Optional: change the Name and Status in one save — both should stick after one Save draft.
Walkthrough 9.4 — 4 — Closed and Coming Soon always save
- On a draft-only certificate (same as Walkthrough 2), set Coming Soon or Closed and Save draft.
- Save should succeed without requiring publish first.
Part 9 complete: · Issues? File on DLOW-210
Part 10 — One-screen requirements & eligibility (CCS-14b)
Task: DLOW-211 · Needs Parts 6–8 (regression against tabbed flow)
In plain English: Single stacked screen for requirements, electives, eligibility, path review, and publish — no tab strip.
Workflow area: §4.2 — Consolidated requirements + eligibility screen
Walkthrough 10.1 — 1 — One screen, no tabs
- Log in as Program Manager, then open the certificates list: https://lsuoce-development.fly.dev/dashboard/catalog/certificates/ (or start at Catalog and click the Certificates tile).
- Click Paralegal Studies Certificate (or any draft that already has a required course and an elective group) — the name opens the editor. If the seed cert has no group yet, skip to Walkthrough 4 then come back.
- Confirm there is no tab row labeled Required, Pools, Catalog, Path review, or Publish.
- On the same scroll, inside the card titled Courses, you should see Required courses (with Add course) and Elective groups (each group with its own Add course, plus Add group by the heading). There is no inline “Add course from catalog” dump, and no card titled “Requirements” or “Rules”.
- If the cert has two named groups, both labels, slot lines (“Complete N from this group.”), and course lists should be visible without opening another tab.
Walkthrough 10.2 — 2 — Add, remove, reorder, and XOR
- On Edit, click Add course on Required courses. Search or check a same-unit course and Add / Add selected.
- Open the row ⋯ menu and choose Move up on the lower course. Reload — order should stay. (Rows also carry a
⠿drag handle; dragging is the other way to reorder.) - Remove a required course. It should leave the required list. Search should let you attach it again.
- Remove a required course, then Add course on a group and add that same course. It should appear only in that group, not on required.
- Change a group’s Path label or Description, click Save group, reload — the text should stick.
Walkthrough 10.3 — 3 — Search and attach in place
- On Edit, click Add course next to Required courses. A picker dialog should open. There is no Catalog tab and no destination dropdown to choose from — where the course lands is decided by which Add course you clicked. Expected and correct: the dialog's own heading reads Add to required. Search a same-unit course (or pick one listed) and click Add on its row. It should appear under Required courses only.
- Close the picker. Click the Add course button belonging to one of your elective groups (use whatever you named it in Walkthrough 4 — nothing is named "Electives" unless you named it that). The dialog heading should now read Add to _your group name_. Add a different same-unit course; it should appear in that group only, not required. You can also tick several rows and use Add selected.
- Search a course code from a different costing unit and click Search. You should see "No matching courses in this costing unit." and no way to attach it.
- Optional (no-JS): disable JavaScript and click Add course. The page reloads and the picker renders inline as a card headed Add to required instead of as a dialog. Click Add on a course row — it should still land on that list after the reload.
Walkthrough 10.4 — 4 — Optional electives, extra groups, no garbage
- Open: Create certificate Name it something unique, choose Paralegal costing unit, Save draft, then stay on Edit.
- Under Elective groups you should see the heading and Add group on the right — not a pre-filled Electives card, and not a heading that says Pools.
- Click Add group. Give it a staff label (for example Specialty electives), slots 2, and a short description. Create group. You should see that one group, with its own label, slots, and list.
- To check “named groups stay named”: Add group again for Core electives. Reload. Those two labels should remain. A spare empty Electives group should not appear on top. You can Delete group from a group ⋯ menu even when it still has courses — those courses leave this certificate (they stay in the catalog).
- On a group with no allowed courses, set Slots higher than the number of courses (for example 2) and Save group. Save should be blocked with a message that names the group. Slots should still be the old value after reload.
Walkthrough 10.5 — 5 — Eligibility in context, one save
- On Edit, look at Certificate context (top card). You should see Minimum GPA, No GPA, and Additional eligibility conditions next to name / costing unit / description. Status should still sit under Costing unit.
- Confirm there is no Save eligibility button. The save for this card is Save draft at the bottom of the form.
- Change the Name, set Minimum GPA to 3.00, add a short additional-conditions note, click Save draft once. Reload — all three should stick.
- Now check that a rejected save does not quietly wipe a stored GPA. Set Minimum GPA to 3.10 and Save draft so a real value is stored (the 2.50 on a fresh draft is only a suggested default — nothing is stored until you save). Then clear Minimum GPA, leave No GPA unchecked, and Save draft again. Save should fail with "A minimum GPA is required unless No GPA is enabled." — and after reload the field should still read 3.10. Please do this by hand; the automated check for it is weaker than it looks.
- Create a second certificate. Set No GPA on one and a numeric GPA on the other. Each should keep its own setting when you reopen both.
- Scroll to Publish at the bottom. GPA / No GPA / additional conditions must not be in that section.
Walkthrough 10.6 — 6 — Path review is a read-only subsection
- On a cert with required courses and at least one group, look at the right sidebar: Version history, then Path review (still on the same page — no tab).
- You should see the required sequence, group labels, slot summary (for example Complete 1 of 1), and allowed courses.
- Path review should be plain text only — no Save group, Remove, or Add course control inside it. Membership edits happen in the Courses card above.
- Reorder a required course or attach one more. Path review should show the same order and membership — not a stale copy.
Walkthrough 10.7 — 7 — Publish is last and still gated
- Scan the left column: context, then Courses (lists + picker), then a separate Publish card with the draft version. Path review is in the right column under Version history, not after Publish.
- In Publish you should see readiness (Check publish readiness), the existing- vs future-learner warning, the acknowledgement checkbox, and Publish. No GPA fields.
- On the empty certificate from Walkthrough 4 (no courses), Check publish readiness should be disabled. Trying Publish should stay blocked until at least one course is attached.
- On a complete draft (at least one attached course, no slot overflow, GPA saved): check the acknowledgement box and click Publish. You should get a published version; version history should show it. Existing-learner warning copy should still distinguish first publish vs a prior published version.
Part 10 complete: · Issues? File on DLOW-211
Part 11 — Requirements drag-to-reorder (CCS-styling-04)
Task: DLOW-206 · Needs Part 10 (requirements editor visible)
In plain English: Drag-and-drop reorder on required courses; kebab path still works; draft vs publish unchanged.
Workflow area: §4.2 — Drag handles on requirements editor
Walkthrough 11.1 — 1 — Drag handles and reorder
- Required courses anatomy - Scroll to the card titled Courses and find the Required courses heading. There are no tabs. - Each row shows ⠿ on the left, a row number, course code + title, and ⋯ on the right. - Layout matches the Required courses section in
mockup-edit-course.html. - ⚠️ The automated check here only confirms the ⠿ handle is visible. The row number, the code + title, the kebab, and the match against the mockup are all on you. - Drag to reorder - Drag the bottom row by its ⠿ handle to the top of the list. - The list refreshes in the new order (brief HTMX update — no full-page crash). - Row numbers update (1, 2, 3…). - Automated on 2026-08-30: a real mouse drag of the bottom handle onto the top row, followed by the HTMX refresh, does land the course in position 1. What you are adding is the human judgement — does the gesture feel right, is there visible feedback while dragging.
- Persistence - Reload the page (same certificate edit URL). - The course you moved to the top is still first. - Automated on 2026-08-30: drag → reload → still first. Proven.
- Single course (optional) - On a certificate with only one required course, the handle still appears and nothing errors. - ⚠️ The automated check confirms the handle appears with one row. It never tries to drag it. If you do one thing in this step, drag the lone row and confirm nothing breaks.
Walkthrough 11.2 — 2 — Kebab path still works (step 3 excepted)
- Kebab menu - Open ⋯ on a middle row. - The menu should contain exactly two items: Move up and Remove. - Open ⋯ on the first row. It should show Remove only — Move up is deliberately hidden there. - There is no Move down and no Move to pool. If you were expecting them from an older version of this guide, their absence is a known divergence, already reported. Do not file it again. - ⚠️ The automated check only confirms Move up is present on a middle row. The "exactly two items" count and the first-row Remove-only behaviour are yours to confirm.
- Move up - Click Move up on the second row. - That course becomes first after the panel refreshes — same outcome as moving it up one slot by drag. - Automated on 2026-08-30: opening the kebab and clicking Move up does reorder the list. Proven.
- No-JavaScript fallback — skip this - Older versions of this guide asked you to disable JavaScript and use Move up. That is not possible: the ⋯ menu is a Bootstrap dropdown and needs JavaScript to open at all, so the Move up button inside it is unreachable. The reorder endpoint does work without JavaScript, but nothing on screen can reach it. This is logged as an open accessibility question — please do not spend time trying to make it work. - There is a green automated test for this criterion, and it did run and pass on 2026-08-30 — but it reaches the button by force-clicking it while the menu is still closed and invisible. It proves the server accepts the form POST with JavaScript off. It does not give a tester a way in, which is why this step stays rather than .
Walkthrough 11.3 — 3 — Draft vs publish unchanged
- Published + draft (if available) - If the certificate has been published before, the Publish card heading reads Publish (draft v2) or higher while you edit. - Drag-reorder under Required courses changes the draft list only. The Version history card in the right-hand column should still show the same Published version number. - Automated on 2026-08-30: this one is well covered — the test reads draft v2 off the Publish heading, drags, then checks the database directly to confirm the published order is untouched and the draft order changed. Proven.
- Publish card smoke - Scroll to the Publish card, lower on the same page. It is a card, not a tab. - Check publish readiness, the learner-impact wording, the confirmation checkbox, and Publish should all be present and laid out cleanly. - ⚠️ The automated check confirms only Publish and the learner-impact wording are visible. The readiness button, the confirmation checkbox, and "laid out cleanly" need your eyes. - GPA and eligibility are not here any more. Minimum GPA, No GPA, and additional eligibility conditions moved up into the Certificate context card and save with Save draft. That is the intended layout — not a missing control.
- Access control (negative) - Log out; log in as
enrollment.admin@lsu.edu/password12!. - Opening the same certificate edit URL shows 403 — enrollment staff cannot use catalog certificate edit. - Automated on 2026-08-30: verified in a real browser as an Enrollment Admin — the edit page renders a 403. The reorder endpoint's own 403 guard is separately covered. Proven.
Walkthrough 11.4 — 4 — Scope spot-checks
- Elective group rows - Elective group member rows have no ⠿ drag handle — kebab only. - Their ⋯ menu offers Remove from group. - (If the certificate has no elective groups you will see just the Elective groups heading and an Add group control. Nothing is auto-created; that is expected.)
- Edge feel (optional) - Start a drag and release outside the list — order should not change. - Two quick drags in a row — final order matches the last completed gesture.
Part 11 complete: · Issues? File on DLOW-206
Part 12 — Catalog & course admin styling (CCS-styling-02)
Task: DLOW-204 · Needs Parts 1–11 (visual regression tail)
In plain English: Courses list, edit/create, certificate edit, version history, publish, and section/pricing screens styled consistently.
Workflow area: §4 — Catalog/course/certificate/section styling regression
Walkthrough 12.1 — 1 — Courses list
- Header and anatomy - Breadcrumb reads Catalog / Courses. Clicking Catalog takes you to the chooser at
/dashboard/catalog/, not to a certificates table. - Title Courses with the subtitle Search and manage all courses and sections. - Right side: + Create course (primary). - No purple hero and no dark card-header bar above the table. - Filters - There is no Certificates / Courses tab row. To switch workspaces, click the Catalog crumb and pick a tile. - Filter row: Search courses, Costing unit, Certificate, Unattached only, Apply (primary), Clear (ghost). - Search for
zzz-no-matchand click Apply — you should get a yellow banner reading No courses found. and a ghost Create course link. The page header stays intact. - Click Clear — seeded courses return on a bare/dashboard/catalog/courses/URL. - Table and row actions - Columns: Course, Code, Costing unit, Certificates, Sections, Actions. There is no Status column. - A course attached to no certificate shows a neutral Unattached badge beside its title. - Each row has a single ⋯ kebab in the Actions column — there is no separate text link beside it. - Open the kebab: View sections, Edit course, Duplicate course, Preview (internal). Nothing invented (no Archive).
- Primary buttons - Exactly two prominent primaries on this page: + Create course in the header and Apply in the toolbar.
DESIGN.mdallows that pair on list-plus-toolbar screens.
Walkthrough 12.2 — 2 — Edit and Create course
- Edit course anatomy - Page header with title and subtitle — no hero. - Form fields grouped into light card sections (Core details first), not dark card headers. - Two-column layout: form in the main column, a read-only summary card in the narrower right column.
- Form fields and actions - Field labels read naturally (sentence case) and each one is wired to its input. - The footer is: Back to courses (secondary link), Save as draft (secondary), Mark ready for section creation (primary), and — once the course is ready — Continue to section creation (ghost). - There is no button labelled Save and none labelled Cancel. Mark ready for section creation is the single primary.
- Create course - Open Create course. - Same header and card pattern as edit — not the old standalone layout.
- Mockup comparison (human eye) - Compare header, breadcrumb, card sections, column proportions, and action placement against the mockup. - Note any spacing or colour nuance diffs for the author before release.
- Behaviour unchanged - Saving still persists; Back to courses returns to the courses list.
Walkthrough 12.3 — 3 — Certificate edit, required courses, and elective groups
- Certificate edit shell - Admin page header — no hero. Breadcrumb Catalog / certificate name / Edit certificate. - There are no tabs. You are on one scrolling page. In order: Certificate context, then Courses (holding Required courses and Elective groups), then Publish — with Version history and Path review in the right sidebar. - Eligibility (Minimum GPA, No GPA, additional conditions) and the certificate status selector live inside Certificate context and share its Save draft button.
- Required courses - A numbered list — not a table. Each row: a drag handle (⠿), an index,
CODE — Title, and a ⋯ kebab. - Open a row kebab. You should see at most two items: Move up and Remove. On the first row, Move up is absent entirely rather than greyed out. - There is no Move down and no Move to elective pool. To move a course into a group, Remove it here and re-add it with that group's Add course button. - If only one course is attached, use Add course beside the Required courses heading to attach a second, then exercise Move up on the second row. The list should reorder in place without a full page reload. - Elective groups - The heading is Elective groups, not "elective pool". A certificate with no groups shows just the heading and Add group — nothing is auto-created. - Each group is a bordered block inside the same card, showing its label, Complete N from this group., its member rows as the same list-row style, Add course (ghost) and Save group (primary). - A group row kebab has one item, Remove from group. The group's own ⋯ menu has one item, Delete group.
Walkthrough 12.4 — 4 — Version history and Publish
- Version history (right sidebar) - One
.ui-cardheaded Version history, listing Current draft, Published version, and Courses on draft. - Below that, the version list. The current version carries a green Current badge; drafts read as muted "draft" text rather than a badge. - No dark card-header bar. - Publish (bottom card) - Heading Publish (draft vN) with a neutral badge reading Last published … or Not published yet. - Check publish readiness is a secondary button and stays disabled until the draft is publish-ready. - Below it: the effective-version line, the learner-impact wording, a confirmation checkbox, and Publish as the single primary in that card. - Exercise publish only on draft/dev data you are willing to change. It updates the page in place rather than navigating away.
Walkthrough 12.5 — 5 — Section and pricing screens
- Sections list - Breadcrumb and page header; status summary chips; filter toolbar; table in a card. - Certificate-scoped trail is Catalog / certificate / course / Sections — four crumbs, not five. - Row kebab reads Edit section (not "Edit course").
- Section create / edit - Cards with plain-text titles (Section offering, …). - Footer is Save section (primary) + Cancel (secondary).
- Section sub-screens - Open a section's Details, Enrollment, Prerequisites, and Publish (as available). - Each has the same admin header and workflow strip — no hero.
- Pricing warning (when present) - On section create, inheritance warnings appear as a yellow banner (
.ui-banner-warning), not a pink alert panel. - If no warning appears, your seed section may not trigger inheritance — that is OK; this spot-check is optional. - Publish readiness / result - Publish readiness and result screens use card layout without legacy hero treatment.
Walkthrough 12.6 — 6 — Regression and access
- Open the Certificates list — still matches
mockup-certificates-list.htmlfrom DLOW-203. (The list moved off/dashboard/catalog/in CCS-17; that root is now the chooser.) - Log out. Log in as Enrollment Admin (
enrollment.admin@lsu.edu/password12!). - Try the Courses list — expect 403.
Part 12 complete: · Issues? File on DLOW-204
Part 13 — Decouple course & section routes (CCS-13c)
Task: DLOW-209 · Needs Parts 4, 12
In plain English: Standalone course/section actions and breadcrumbs work without certificate context; cert-scoped regression passes.
Workflow area: §4.2/§5 — Standalone vs certificate-scoped URLs
Walkthrough 13.1 — 1 — Standalone course actions
- Open: https://lsuoce-development.fly.dev/dashboard/catalog/courses/
- Tick Unattached only, press Apply, and pick a row carrying the Unattached badge. (Or use + Create course to make one.)
- Open the row ⋯ menu (its tooltip reads More actions for <course title>). Confirm View sections, Edit course, Duplicate course, and Preview (internal) are all present and clickable — not
#or blank. - Click Preview (internal). The address bar should read
…/dashboard/catalog/courses/<course_id>/preview/and the internal preview page should load. - Go back to the list. Click Duplicate course, complete the form, and press Save as draft. The flow should finish without a certificate ID in the path.
- From the list, click Edit course. URL should be
…/dashboard/catalog/courses/<course_id>/edit/. - Attached-course check (this one is weakly covered automatically — please do it). Clear the Unattached only filter, pick a course that does belong to a certificate, and repeat Preview (internal) and Duplicate course from the standalone list. Both should work on
…/catalog/courses/<id>/…paths.
Walkthrough 13.2 — 2 — Standalone section lifecycle
- From the standalone course list, open View sections for your test course. URL:
…/dashboard/catalog/courses/<course_id>/sections/, heading Sections. - Click Create section, fill the required fields, and save. Create URL should be
…/courses/<course_id>/sections/create/(no certificate segment). - On the section list, open the row ⋯ menu and choose Edit section. URL:
…/sections/<section_id>/edit/. The nav strip on this page shows five dead links — see Known rough edges. - From the same ⋯ menu choose Internal preview. URL:
…/sections/<section_id>/preview/. - Duplicate a section. There is no Duplicate item in the section menu, so type
…/dashboard/catalog/courses/<course_id>/sections/<section_id>/duplicate/directly. Fill start date, end date, capacity, and price, tick the confirmation checkbox, and press Save section. You should land back on the standalone section list with a new row.
Walkthrough 13.3 — 3 — Breadcrumbs and list links
- From Courses, confirm the trail on the list itself reads Catalog / Courses.
- Open Edit course for an unattached course. The trail should now read Catalog / course title / Edit course. There is deliberately no intermediate Courses crumb on this screen, and no certificate name should appear anywhere in the trail.
- Open View sections for the same course. Trail: Catalog / course title / Sections. Again, no certificate name.
- Click Catalog in the trail. You should land on the chooser (
/dashboard/catalog/), not a list. Certificate-scoped path - Type
https://lsuoce-development.fly.dev/dashboard/catalog/certificates/<cert_id>/courses/using the id of a certificate that has linked courses (Paralegal, if seeded). Nothing in the UI navigates here today. - Open Edit course on a linked course. The trail should read Catalog / certificate name / course title / Edit course — the certificate name is present, and its crumb links back to that certificate's course list. Attach a course to a certificate (unchanged behavior)
- Open a certificate's Edit certificate screen from Certificates. Scroll to the Courses card's Required courses sub-section and press Add course. A modal titled Add to Required list opens. Search for your unattached course by code, press Add on its row, and confirm it appears under Required courses. (CCS-14b replaced the old tabbed "Requirements" panel with these cards.)
Walkthrough 13.4 — 4 — Certificate-scoped regression
- From the certificate-scoped course list you opened in Walkthrough 3 step 5, click Edit course on a linked course. URL should include
…/dashboard/catalog/certificates/<cert_id>/courses/<course_id>/edit/and the page should load with the certificate in the breadcrumbs. - Paste that cert-scoped edit URL directly in the browser. The page should load at that URL — not redirect to the standalone path. (Both route families coexist; neither redirects to the other.)
- Safety check — please do this one by hand; the automated test for it cannot fail. Take a course that is not linked to that certificate (an Unattached row from the standalone list works) and open
…/dashboard/catalog/certificates/<cert_id>/courses/<that_course_id>/edit/. You should be bounced to that certificate's course list (…/certificates/<cert_id>/courses/) with a red message reading "That course is not linked to this certificate." — not an error page, and not the course edit form.
Part 13 complete: · Issues? File on DLOW-209
Part 14 — Published D-Low preview (CCS-16)
Task: DLOW-186 · Needs Part 8 (published certificate)
In plain English: Walk published certificate tree; staff-only temporary preview; cohort-restricted labeled not hidden.
Workflow area: §4 — Temporary published-tree preview (not harness)
Walkthrough 14.1 — 1 — Walk the published tree
- Open: https://lsuoce-development.fly.dev/dashboard/catalog/
- In the certificates list header, click Published preview. You should land on Published catalog.
- Open Paralegal Studies Certificate, then Legal Research & Writing, then a visible Active/Ready section. Titles and offering details should match what you see in the workspace.
- Open: Create certificate Save a clearly named shell (for example “Draft only — do not publish”). Return to published catalog. That name must not be in the list.
- Take a PLG-LRW-201 section off the published set using its Publish tab. The seeded sections are Active, so from there you can move one to Inactive or Cancelled. (For a Draft section, Duplicate a section instead — duplicates are always created as Draft. Nothing moves back to Draft, and Inactive and Cancelled are dead ends, so use a spare section.) Refresh the published course. That offering must disappear. Open Preview (internal) for the same section — it may still be there. That difference is expected.
- On Publish readiness, uncheck Visible to learners on a Ready or Active section. It must vanish from published preview. Check the box again — it must return (even if enrollment is still closed).
Walkthrough 14.2 — 2 — Temporary, staff-only, not the harness
- From the certificates list, use the header button Published preview. Do not use the row kebab's Internal preview for this check.
- The banner must say Temporary D-Low preview and talk about published / learner-visible catalog — not the long-term public site, and not the internal harness.
- Open Preview (internal) on the same course. The banner must say Internal preview harness. If the two banners look like the same product, this story failed.
- Log out. Open: https://lsuoce-development.fly.dev/dashboard/catalog/published/ You should be sent to login. You must not see Paralegal or a published certificate list.
- Log in as:
enrollment.admin@lsu.edu/password12!. Open the same staff published URL. Access must be denied. The QA UAT bar must not give Enrollment Admin a Published preview link (that would 403 them).
Walkthrough 14.3 — 3 — Cohort restricted is labeled, not hidden
- Log in as: Program Manager. Open a visible PLG-LRW-201 section’s Enrollment tab. Check Restrict enrollment to a cohort, pick an existing cohort or name a new one, and save.
- Open that section (or its course) on published preview. You must see Cohort restricted. It must not look like anyone can enroll.
- Open a section that is not cohort-restricted. There must be no cohort restriction badge.
- On Publish readiness, uncheck Visible to learners for a Ready/Active section. Published preview must omit it even though the lifecycle is still “published.”
Walkthrough 14.4 — 4 — Demo URL (local development is on)
- Log out.
- Open: https://lsuoce-development.fly.dev/demo/catalog/ Walk Paralegal → course → visible section. Banner should still mark this as a temporary / unauthenticated demo of the published catalog.
- Confirm your draft-only certificate and any hidden section are absent.
- View page source (staff published home or this demo page). Search for
noindex. You should see a robots meta tag (noindex, nofollow). - Demo off: ask a developer to restart the local server with the published demo flag off (checklist:
CCS_PUBLISHED_DEMO_ENABLED). Then open/demo/catalog/while logged out — you must get a 404, not the catalog. The review artifact records this behavior (CR-15) as verified, so it is a low-risk check; local click-through needs the restart because demo is on by default in development.
Part 14 complete: · Issues? File on DLOW-186
Part 15 — Application pipeline styling (CCS-styling-03)
Task: DLOW-205 · Needs Enrollment Admin login (not catalog PM)
In plain English: Pipeline dashboard, application detail, filters/review queue styled; access unchanged.
Workflow area: Application pipeline admin (enrollment workspace)
Walkthrough 15.1 — 1 — Pipeline dashboard
- Open: Application pipeline
- Scan the page top to bottom: - Breadcrumb Applications / Paralegal Studies Certificate (plain text, not links) and title Application pipeline (no purple hero banner). - Five stat tiles with counts: All applications, Under Review, Awaiting Transcript, Accepted, Unpaid. The active one is outlined. These are links and clicking one filters the table — that is correct behavior (DLOW-207), not a bug. The rest of this walkthrough assumes All applications is active; click it to get back. - 👀 The mockup labels the middle tiles in sentence case (Under review, Awaiting transcript) while the app renders Title Case (Under Review, Awaiting Transcript). Confirmed real; note it for the PR author. - Filter card: Application status, Missing item, Application period, Include unpaid; Apply is the blue primary; Clear is a ghost link.
- Check the table: - Columns: Applicant (linked name), Submitted, Status, Transcript, Personal statement, Payment. - Muted Showing X result(s) line above the table. - In the Transcript / Personal statement / Payment columns, warning badges only where something is missing or unpaid; Paid / Received appear as quiet gray text, not green success badges. - ℹ️ The Status column is different and does use color: Accepted is green, Denied is red, Awaiting transcript / Waitlisted / Pending payment are amber. That is by design.
- Click an applicant name: - Application detail opens (Walkthrough 2).
- Confirm Export CSV is not in the header actions. The only header action is the notification bell.
Walkthrough 15.2 — 2 — Application detail
- From the pipeline, open
PLG-SEED-ACCEPTED(or any accepted application awaiting welcome call). - Header: - Breadcrumb Applications / \<certificate name\> / \<reference ID\> — the first two are links back to the pipeline. - Applicant name with inline status badge; subtitle shows reference ID, certificate, period. - No dark hero banner. The only header action is the notification bell — there is no Change status button.
- Main column (left): - Welcome call task card at top with Mark scheduled as the only prominent primary button on the page. - Transcript card below. - Status history table with When, Change, By columns. - Communication log with message count; if any row failed, a yellow warning banner above the table and a red Failed badge on that row — no Resend button anywhere. Successful sends read Sent in quiet gray text. - ℹ️ If two or more messages failed you will see the banner repeated, each copy reading "1 message failed to send." That is what the template does today; note it rather than filing it twice.
- Sidebar (right): - Application summary card. - Checklist card — warnings only on exceptions (e.g. Not scheduled); Paid / Received in muted text.
- Optional: on a test application with a transcript on file, confirm View transcript still opens/downloads.
- Optional: click Mark scheduled on a disposable test app — confirm the task shows a scheduled state afterward.
Walkthrough 15.3 — 3 — Filters and review queue
- Open: Application pipeline as Enrollment Admin.
- Default view: - Paid/submitted applications visible (e.g.
PLG-SEED-REVIEW,PLG-SEED-ACCEPTED). - Draft applications hidden unless you opt in. - Check Include unpaid, click Apply: - Draft/unpaid rows appear (if seeded).
- Click Clear: - Filters reset; default queue returns.
- Try Application status → Under review → Apply: - Table narrows to matching rows; Clear restores full default view. - The Under Review stat tile also lights up, because tile and toolbar stay in sync (DLOW-207). Pick a status with no tile — Denied or Waitlisted — and no tile lights up, including All applications. Both behaviors are correct.
Walkthrough 15.4 — 4 — Access unchanged
- Log out. Log in as applicant (
applicant@example.com/TestPass123!). - Try to open Application pipeline. - Access denied (403 or equivalent).
- Try a detail URL (paste a pk from an admin session if needed): - Still denied.
Walkthrough 15.5 — 5 — Design-system sanity
- As Enrollment Admin, open pipeline then detail. - Page background and typography match other restyled admin screens. For a side-by-side, use the Certificates list. Note that
/dashboard/catalog/itself is now just a two-tile chooser (Certificates, Courses) since CCS-17 — the certificates table lives at/dashboard/catalog/certificates/. - Cards, badges, and tables use the same visual language — no one-off colored panels. - Optional: ask a developer to walk the DESIGN.md agent checklist against both URLs. This is the only evidence that exists for that criterion; nothing automated covers it.
Part 15 complete: · Issues? File on DLOW-205
Part 16 — Pipeline stat-tile filters (CCS-styling-05)
Task: DLOW-207 · Needs Part 15 (pipeline dashboard)
In plain English: Click stat tiles to reach queues; URL shareable; tiles and toolbar stay in sync.
Workflow area: Application pipeline stat tiles → filtered queues
Walkthrough 16.1 — 1 — Click tiles to reach each queue
- Default view - Five tiles across the top: All applications, Under Review, Awaiting Transcript, Accepted, Unpaid. - All applications has the accent-border active state. - Paid rows such as
PLG-SEED-REVIEWappear; the unpaid draft does not. - Under Review - Click Under Review. - The table shows only under-review applicants (including
PLG-SEED-REVIEW). - That tile is the only one with the accent border. - Awaiting Transcript - Click Awaiting Transcript. - The table shows only that status — not a new “missing documents” meaning. - That tile is active.
- Accepted - Click Accepted. -
PLG-SEED-ACCEPTED(or another accepted name) is visible; other statuses are gone. - That tile is active. - Unpaid - Click Unpaid. - The draft / unpaid row appears — the one All was hiding. - Paid review-queue names are gone. - Include unpaid in the toolbar is checked.
- Back to All - Click All applications. - The usual review list returns; the unpaid draft is hidden again. - Include unpaid is unchecked. - Only All applications has the accent border.
- One active tile - Click through the tiles again. - Always exactly one tile looks selected.
Walkthrough 16.2 — 2 — Share the URL
- URL names the filter - After Under Review, the address includes
status=under_review. - After Unpaid, it includesstatus=unpaidandshow_unpaid=1. - After All applications, those extra pieces are gone. - Paste Unpaid - Click Unpaid, copy the address bar. - Open the plain pipeline link again (no extras), then paste the copied URL. - Unpaid is active and the same unpaid rows are back.
- Tile plus other filters - Set Missing item to Transcript (and a period if the dropdown has more than one). - Click Under Review, copy the URL, open it in the same browser. - The Under Review tile is active and the toolbar still shows those extra values. - Repeat with Include unpaid ticked as well, and confirm the checkbox comes back when you reopen the copied URL. The automated lane never puts Include unpaid in a copied URL, so this is manual-only.
- All means the review queue - Click All applications, copy that URL. - Open the Unpaid URL first (so you see the draft), then paste the All URL. - You are back on the default review list — not Unpaid, not a single status.
Walkthrough 16.3 — 3 — Tiles and toolbar stay in sync
- Tile updates the toolbar - Click Under Review. - Application status in the toolbar shows Under review.
- Toolbar lights the tile - Click Clear, then choose Under review in Application status and click Apply (do not click the tile). - The Under Review tile becomes active.
- Statuses with no tile - Choose Denied (or Waitlisted) and Apply. - The denied row appears if one exists. - No tile has the accent border — All applications must not look selected.
- Counts follow extra filters - Note the numbers on all five tiles. - Set Missing item to Transcript (or pick one period) and Apply. - Every tile number changes to match that narrower set — they are not stuck on the unfiltered totals. Check All, Accepted, and Unpaid too: the automated lane only checks Under Review and Awaiting Transcript, so those three are on you.
- Count matches the table - Click Accepted (or another non-empty tile). - The number on that tile matches Showing X result(s) above the table. - Now try the other route: click Clear, tick Include unpaid, leave Application status on All statuses, and Apply. All applications is highlighted, but its number and Showing X result(s) will not agree — the tile leaves out the unpaid rows the table is listing. Write down both numbers. This is the known problem flagged at the top of the guide, not a new one.
- Clear - Click Unpaid, then Clear (the ghost link next to Apply). - All applications is active again, the unpaid draft is hidden, and the address bar looks like the default pipeline.
Walkthrough 16.4 — 4 — Scope spot-checks
- Zero bucket - If a tile shows 0, click it anyway — the table is replaced by No Paralegal applications found., the Showing X result(s) line goes away with it, and that tile can still look selected.
- Detail page - Open any applicant. There are no count tiles on application detail.
- Learner blocked - Log out. Log in as
applicant@example.com/TestPass123!. - Open Application pipeline — you should see 403, not a list of unpaid applicants.
Part 16 complete: · Issues? File on DLOW-207
When something fails
- Note what you did, what you expected, and what happened instead (screenshot helps).
- File a bug on the matching build ticket (DLOW-222, DLOW-203, DLOW-183, DLOW-199, DLOW-200, DLOW-184, DLOW-201, DLOW-185, DLOW-210, DLOW-211, DLOW-206, DLOW-204, DLOW-209, DLOW-186, DLOW-205, DLOW-207).
- If it might be a policy question rather than a broken button, say so — link the Admin Spec or uat-guide and flag for triage.
Crosswalk — NEW items → source
| Walkthrough | Source |
|---|---|
| DLOW-194 prerequisite | DLOW-194 |
| Spec 044 (doc-only) | 044-ccs-restrictions-ia-docs — no uat-guide |
| Parts 15–16 | Enrollment Admin pipeline workspace |
| 1.5 | 047 uat-guide |
| 3.5–3.6 | 031 uat-guide |
| 4.5–4.6 | 032 uat-guide |
| 5.5 | 033 uat-guide |
| 10.5–10.7 | 046 uat-guide |
| 12.5–12.6 | 039 uat-guide |
| 15.5 | 040 uat-guide |
Sign-off
| Field | Value |
|---|---|
| Tester name | |
| Date | |
| Environment | lsuoce-development.fly.dev |
| DLOW-194 prerequisite complete? | [ ] Yes |
| All 16 parts passed? | [ ] Yes [ ] No — see linked bugs |
Final review: [ ] Ready for dev ingestion / bug triage