build_plan
Generate a deterministic graduation plan from completed and remaining courses, sequencing prerequisites, grouping corequisites, and filling elective slots within term unit caps.
Instructions
Deterministic baseline plan to graduation, laid out on the Bulletin roadmap: each term starts from its roadmap
semester (what's done is skipped, what isn't ready carries over), then the remaining required courses by prereq
chain (critical path first, corequisites together), then slots for what's open (GE areas, senior electives, free
electives) to reach the 120 and upper-division totals. Already run through check_plan: see check.
Fill each slot with list_eligible_electives + the student's goal, then call check_plan again before presenting.
Unit loads follow the roadmap (D24): each spring/fall term's cap is the printed units of the roadmap semester the
student's units have reached (16, 15, 16, … for a BS CS QR 1/2 freshman; the last semester's past its end; never
under 12 for f1), shown as each semester's max_units and roadmap. max_units_per_term is the student's own cap and
overrides it. Also include_summer, include_winter (Winter Session terms
between fall and spring: up to 4 units of GE, American Institutions or free electives) and f1 (F-1 visa: spring/fall
terms filled toward 12 units, pp.2390, 2393). Returns needs_input
(qr_pathway, start_term) instead of guessing. Each semester has `why`: per course, what it's needed before, the
chain it starts, and whether delaying it pushes back graduation. `pace` says what sets the length: the longest
prereq chain vs the units per term (load: roadmap / max_units_per_term); normal_load is the lighter option at the
normal 15 (terms, graduation term) when the roadmap goes above it; fold_last_term when a light last term fits into
one earlier term (a term sooner at one heavier load). profile.graduate_by (D25) fits the loads to that goal: when the
roadmap's loads end later, every term goes to the roadmap's heaviest semester, then one unit more at a time up to
19, until the plan ends by then (load: graduate_by, pace.fit with the units and a note; above the roadmap's
heaviest is an overload: advisor). pace says whether the term is reachable and, if not, why_not.
For "3, 4 or 5 years", call it at different max_units_per_term / include_summer / include_winter.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"profile": "<profile>"
},
"name": "build_plan"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| profile | Yes |