The Advisory widget
The Advisory widget floats over the Kanban or the Canva. It is not a
third mode — it is a focused query surface backed by the
/api/v1/query/* endpoints.
The four questions
1. What am I missing for course X?
Pick a target course. Advisory returns:
- An
academic_resultwith astatus(satisfied | not_satisfied | partial | unknown | conflict | not_applicable). - An explanation tree showing which prerequisite branches are met and which are not.
- A list of
missing_options— each missing prerequisite course with its own source reference attached (not pooled across requirements). unknownsandconflictsarrays with reason codes.
Backed by POST /api/v1/query/course-unlock — see Queries API.
2. What am I missing for credential Y?
Pick a target credential (degree, major, minor, option, specialization).
Advisory returns the same academic_result shape, plus
credential_progress data showing per-rule completeness.
If you want a flatter summary (just “X courses outstanding, Y unknown”),
use the credential gap-summary variant — POST /api/v1/query/credential-gap-summary.
Backed by POST /api/v1/query/credential-progress and
POST /api/v1/query/credential-gap-summary.
3. Which alternative paths satisfy this gap?
For a missing requirement that has alternatives (e.g., “MATH 137 or MATH 147”), Advisory enumerates bounded alternative paths — combinations of courses you have not taken but could take to satisfy the requirement, ranked by missing-course count.
The bounded path planner:
- Treats your Kanban courses as known facts (no need to re-take).
- Reports cycles or horizon-exceeded conditions as engine
unknown— never as academic impossibility. - Marks antirequisite collisions and duplicate-credit conflicts on candidate paths.
- Does not upgrade a candidate path to
satisfiedwithout re-validation by the direct evaluator (per ADR 0014 and ADR 0016).
4. What does taking this course unlock?
Add a hypothetical course to a target Kanban state and ask what downstream courses or credentials would change status. Useful for “if I take CO 250, what does that open up for me?”
Backed by POST /api/v1/query/course-impact and POST /api/v1/query/what-if.
The what-if variant accepts arbitrary hypothetical state changes
without mutating your persisted plan.
How to read the response
Every Advisory answer carries:
| Field | What it tells you |
|---|---|
target | What was asked about (course code or credential id). |
status | The six-state academic status. |
completeness | How thoroughly the engine could evaluate (some / all sub-rules). |
explanation_tree | Structured breakdown of which sub-requirements matched. |
missing_options | Concrete things to add to your plan. |
unknowns | Sub-requirements the parser could not resolve. |
conflicts | Plan-internal contradictions (e.g., antirequisite collisions). |
assumptions | Anything the engine had to assume to get a result. |
source_reference_ids | Click-through pointers to Kuali catalog excerpts. |
What Advisory will not do
- It will not synthesize academic statuses from engine-native states.
An engine
UNKNOWN,UNSAT, or timeout result becomes academicunknownwith anunknown_reason, nevernot_satisfiedorsatisfied. See ADR 0018. - It will not expose internal solver clauses, variable names, or engine debug logs. Explanations are semantic, not mechanical.
- It will not promise that Quest will agree. uwwoe is exploratory; see Advisory only.