## ADDED Requirements ### Requirement: Healthcare specialization The system SHALL include "Healthcare" (abbreviation `HCR`) as a defined specialization with no required course gate. #### Scenario: Healthcare appears in specialization list - **WHEN** the data module is loaded - **THEN** a specialization with id `HCR`, name "Healthcare", and abbreviation `HCR` is present in `SPECIALIZATIONS` #### Scenario: Healthcare has no required course - **WHEN** inspecting the Healthcare specialization - **THEN** its `requiredCourseId` is undefined #### Scenario: Healthcare reaches four elective sets - **WHEN** counting the distinct elective sets containing at least one non-cancelled HCR-qualifying course - **THEN** the count is exactly 4 (`spr2`, `spr3`, `sum2`, `fall1`), yielding 10.0 credits available (4 × 2.5) ### Requirement: Healthcare cross-listings on existing courses The system SHALL add Healthcare (`HCR`, standard marker) as an additional qualification on four existing courses without removing their prior qualifications. #### Scenario: Business of Health & Medical Care qualifies for Healthcare - **WHEN** inspecting `spr2-health-medical` qualifications - **THEN** the list includes both `STR` (S2) and `HCR` (standard) #### Scenario: Analytics & Machine Learning for Managers qualifies for Healthcare - **WHEN** inspecting `spr3-analytics-ml` qualifications - **THEN** the list includes both `MTO` (standard) and `HCR` (standard) #### Scenario: Digital Marketing Strategy in Practice qualifies for Healthcare - **WHEN** inspecting `sum2-social-media` qualifications - **THEN** the list includes `BRM`, `EMT`, `MKT`, and `HCR` (all standard) #### Scenario: Managing Change qualifies for Healthcare - **WHEN** inspecting `fall1-managing-change` qualifications - **THEN** the list includes `LCM`, `MGT`, `STR` (S2), and `HCR` (standard) ### Requirement: Cancelled courses preserved with cancelled flag The system SHALL retain cancelled course entries in the course data with `cancelled: true` rather than deleting them. Cancelled courses SHALL NOT be considered selectable, SHALL be excluded from solver computations, and SHALL render in the UI as visibly disabled. #### Scenario: Customer Insights is marked cancelled - **WHEN** inspecting `spr5-customer-insights` - **THEN** the course has `cancelled: true` and remains a member of `spr5` #### Scenario: Managing Growing Companies present as cancelled placeholder in Summer Set 2 - **WHEN** inspecting Summer Elective Set 2 (`sum2`) - **THEN** it contains exactly five course entries, one of which is `sum2-managing-growing-companies` with `cancelled: true` and an empty qualifications list #### Scenario: Cancelled courses excluded from solver - **WHEN** the solver computes specialization assignments - **THEN** no cancelled course id contributes credits toward any specialization ## MODIFIED Requirements ### Requirement: Course definitions The system SHALL define exactly 47 courses. Each course SHALL have an ID, display name, and the ID of the elective set it belongs to. Courses MAY carry a `cancelled: true` flag indicating the offering has been withdrawn. #### Scenario: Course count - **WHEN** the data module is loaded - **THEN** exactly 47 courses are defined #### Scenario: Each course belongs to one set - **WHEN** iterating all courses - **THEN** every course references a valid elective set ID, and the set's course list includes that course #### Scenario: Cancelled courses are flagged, not deleted - **WHEN** filtering courses by `cancelled === true` - **THEN** the result includes both `spr5-customer-insights` and `sum2-managing-growing-companies` ### Requirement: Specialization definitions The system SHALL define exactly 15 specializations. Each specialization SHALL have an ID, display name, and abbreviation. Specializations with a required course gate SHALL reference the required course ID. #### Scenario: Specialization count - **WHEN** the data module is loaded - **THEN** exactly 15 specializations are defined #### Scenario: Healthcare is included - **WHEN** searching specializations for id `HCR` - **THEN** a specialization named "Healthcare" is found #### Scenario: Required course mappings unchanged - **WHEN** inspecting specializations with required courses - **THEN** exactly 4 specializations have required course gates: SBI → `spr4-sustainability`, ENT → `spr4-foundations-entrepreneurship`, EMT → `sum3-entertainment-media`, BRM → `fall4-brand-strategy` ### Requirement: Course-specialization qualification matrix Each course SHALL declare which specializations it qualifies for, with a marker type of standard (■), S1, or S2. Courses with no qualifying specializations (including cancelled courses) SHALL have an empty qualification list. Reachability counts SHALL exclude qualifications belonging to courses flagged `cancelled`. #### Scenario: Marker types - **WHEN** inspecting course qualifications - **THEN** every qualification entry uses one of three marker types: standard, S1, or S2 #### Scenario: Strategy markers - **WHEN** counting Strategy-qualifying courses across all (non-cancelled) courses - **THEN** exactly 9 courses have S1 markers and exactly 8 courses have S2 markers #### Scenario: Reachable distinct-set counts per specialization - **WHEN** counting distinct elective sets containing at least one non-cancelled course qualifying for each specialization - **THEN** the counts are: MGT 11, STR 9, LCM 9, FIN 9, CRF 8, MKT 6, BNK 6, BRM 5, FIM 6, MTO 6, GLB 5, EMT 4, ENT 4, SBI 4, HCR 4 - **AND** these counts represent raw distinct-set reachability, not the CSV's published credit totals (which additionally apply S1/S2 and shared-course rules — out of scope for this assertion) ### Requirement: Renamed Digital Marketing course The system SHALL display course `sum2-social-media` with the name "Digital Marketing Strategy in Practice" and the updated description anchored on the Memorial Sloan Kettering Cancer Center engagement. The course id SHALL remain `sum2-social-media` (unchanged) so existing lookup tables and tests continue to resolve. #### Scenario: Display name updated - **WHEN** inspecting the course with id `sum2-social-media` - **THEN** its `name` is "Digital Marketing Strategy in Practice" #### Scenario: Description reflects MSKCC engagement - **WHEN** the user opens the course info popover for `sum2-social-media` - **THEN** the description references Memorial Sloan Kettering Cancer Center, agentic AI, and digital strategy practice #### Scenario: Instructor cleared pending confirmation - **WHEN** inspecting the course's instructor list in `COURSE_DESCRIPTIONS` - **THEN** the `instructors` array is empty ## REMOVED Requirements _None. The "Managing Growing Companies" id, previously removed by `replace-cancelled-course-with-innovation-design`, is reintroduced as a cancelled placeholder per the J27 sheet — see ADDED Requirements above._