v1.1.1: Replace cancelled Managing Growing Companies with Innovation and Design
Replace cancelled course in Summer Elective Set 2 with new course "Innovation and Design" qualifying for Brand Management, Entrepreneurship and Innovation, Marketing, and Strategy (S2).
This commit is contained in:
@@ -1,5 +1,11 @@
|
||||
# Changelog
|
||||
|
||||
## v1.1.1 — 2026-03-27
|
||||
|
||||
### Changes
|
||||
|
||||
- **Course replacement** — replaced cancelled "Managing Growing Companies" with new course "Innovation and Design" in Summer Elective Set 2; qualifies for Brand Management, Entrepreneurship and Innovation, Marketing, and Strategy (S2)
|
||||
|
||||
## v1.1.0 — 2026-03-13
|
||||
|
||||
### Changes
|
||||
|
||||
@@ -50,7 +50,7 @@ describe('Data integrity', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('has exactly 10 S1 markers and 7 S2 markers for Strategy', () => {
|
||||
it('has exactly 9 S1 markers and 8 S2 markers for Strategy', () => {
|
||||
let s1Count = 0;
|
||||
let s2Count = 0;
|
||||
for (const course of COURSES) {
|
||||
@@ -59,8 +59,8 @@ describe('Data integrity', () => {
|
||||
if (q.specId === 'STR' && q.marker === 'S2') s2Count++;
|
||||
}
|
||||
}
|
||||
expect(s1Count).toBe(10);
|
||||
expect(s2Count).toBe(7);
|
||||
expect(s1Count).toBe(9);
|
||||
expect(s2Count).toBe(8);
|
||||
});
|
||||
|
||||
it('all qualification markers are valid types', () => {
|
||||
|
||||
@@ -109,11 +109,10 @@ export const COURSES: Course[] = [
|
||||
|
||||
// === Summer Elective Set 2 ===
|
||||
{
|
||||
id: 'sum2-managing-growing', name: 'Managing Growing Companies', setId: 'sum2',
|
||||
cancelled: true,
|
||||
id: 'sum2-innovation-design', name: 'Innovation and Design', setId: 'sum2',
|
||||
qualifications: [
|
||||
{ specId: 'ENT', marker: 'standard' }, { specId: 'LCM', marker: 'standard' },
|
||||
{ specId: 'MGT', marker: 'standard' }, { specId: 'STR', marker: 'S1' },
|
||||
{ specId: 'BRM', marker: 'standard' }, { specId: 'ENT', marker: 'standard' },
|
||||
{ specId: 'MKT', marker: 'standard' }, { specId: 'STR', marker: 'S2' },
|
||||
],
|
||||
},
|
||||
{
|
||||
|
||||
@@ -27,7 +27,7 @@ export const ELECTIVE_SETS: ElectiveSet[] = [
|
||||
},
|
||||
{
|
||||
id: 'sum2', name: 'Summer Elective Set 2', term: 'Summer',
|
||||
courseIds: ['sum2-managing-growing', 'sum2-social-media', 'sum2-leading-ai', 'sum2-business-drivers'],
|
||||
courseIds: ['sum2-innovation-design', 'sum2-social-media', 'sum2-leading-ai', 'sum2-business-drivers'],
|
||||
},
|
||||
{
|
||||
id: 'sum3', name: 'Summer Elective Set 3', term: 'Summer',
|
||||
|
||||
@@ -23,7 +23,7 @@ describe('analyzeDecisionTree', () => {
|
||||
'spr4-fintech',
|
||||
'spr5-corporate-finance',
|
||||
'sum1-collaboration',
|
||||
'sum2-managing-growing',
|
||||
'sum2-innovation-design',
|
||||
'sum3-valuation',
|
||||
'fall1-private-equity',
|
||||
'fall2-behavioral-finance',
|
||||
@@ -50,7 +50,7 @@ describe('analyzeDecisionTree', () => {
|
||||
'spr4-fintech',
|
||||
'spr5-corporate-finance',
|
||||
'sum1-collaboration',
|
||||
'sum2-managing-growing',
|
||||
'sum2-innovation-design',
|
||||
'sum3-valuation',
|
||||
'fall1-private-equity',
|
||||
'fall2-behavioral-finance',
|
||||
@@ -72,7 +72,7 @@ describe('analyzeDecisionTree', () => {
|
||||
'spr4-fintech',
|
||||
'spr5-corporate-finance',
|
||||
'sum1-collaboration',
|
||||
'sum2-managing-growing',
|
||||
'sum2-innovation-design',
|
||||
'sum3-valuation',
|
||||
'fall1-private-equity',
|
||||
'fall2-behavioral-finance',
|
||||
|
||||
@@ -6,8 +6,8 @@ import react from '@vitejs/plugin-react'
|
||||
export default defineConfig({
|
||||
plugins: [react()],
|
||||
define: {
|
||||
__APP_VERSION__: JSON.stringify('1.1.0'),
|
||||
__APP_VERSION_DATE__: JSON.stringify('2026-03-13'),
|
||||
__APP_VERSION__: JSON.stringify('1.1.1'),
|
||||
__APP_VERSION_DATE__: JSON.stringify('2026-03-27'),
|
||||
},
|
||||
server: {
|
||||
allowedHosts: ['soos'],
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
schema: spec-driven
|
||||
created: 2026-03-27
|
||||
@@ -0,0 +1,26 @@
|
||||
## Context
|
||||
|
||||
Summer Elective Set 2 currently contains a cancelled course "Managing Growing Companies" (`sum2-managing-growing`) marked with `cancelled: true`. It qualifies for ENT, LCM, MGT, and STR (S1). A replacement course "Innovation and Design" has been announced, qualifying for BRM, ENT, MKT, and STR (S2).
|
||||
|
||||
## Goals / Non-Goals
|
||||
|
||||
**Goals:**
|
||||
- Replace the cancelled course data entry with the new course
|
||||
- Update all test assertions to match the new data
|
||||
|
||||
**Non-Goals:**
|
||||
- No UI changes needed — the `cancelled` flag removal and new course entry are handled by existing rendering logic
|
||||
- No solver logic changes — the solver already excludes cancelled courses and will automatically include the new one
|
||||
|
||||
## Decisions
|
||||
|
||||
### Direct replacement over keeping both entries
|
||||
Replace the cancelled course entry rather than adding a new entry alongside it. The cancelled course has no historical value in the UI since the app is a forward-looking course selection tool. This keeps the course count at 46 and avoids unnecessary complexity.
|
||||
|
||||
### Specialization marker choices
|
||||
All qualifications use `standard` marker except Strategy which uses `S2` (per user specification). This shifts one Strategy course from S1 pool to S2 pool.
|
||||
|
||||
## Risks / Trade-offs
|
||||
|
||||
- **STR S1 pool shrinks from 10 to 9** — Minor reduction in S1-qualifying courses. No mitigation needed; this reflects the actual curriculum change.
|
||||
- **LCM and MGT lose coverage in sum2** — These specializations no longer have a qualifying course in Summer Set 2. This accurately reflects the new course's different focus.
|
||||
@@ -0,0 +1,30 @@
|
||||
## Why
|
||||
|
||||
The cancelled course "Managing Growing Companies" in Summer Elective Set 2 needs to be replaced with a new course "Innovation and Design" that counts towards different specializations (BRM, ENT, MKT, STR-S2 instead of ENT, LCM, MGT, STR-S1).
|
||||
|
||||
## What Changes
|
||||
|
||||
- Remove the cancelled course entry `sum2-managing-growing` ("Managing Growing Companies") from the course data
|
||||
- Add a new course `sum2-innovation-design` ("Innovation and Design") in Summer Set 2 with qualifications: Brand Management (BRM), Entrepreneurship and Innovation (ENT), Marketing (MKT), Strategy (STR, S2 marker)
|
||||
- Update test assertions to reflect changed specialization counts and Strategy marker counts
|
||||
|
||||
## Capabilities
|
||||
|
||||
### New Capabilities
|
||||
|
||||
_None — this is a data change, not a new capability._
|
||||
|
||||
### Modified Capabilities
|
||||
|
||||
_None — no spec-level behavior changes, only course data._
|
||||
|
||||
## Impact
|
||||
|
||||
- `app/src/data/courses.ts` — replace cancelled course entry with new course
|
||||
- `app/src/data/__tests__/data.test.ts` — update assertions:
|
||||
- STR S1 count: 10 → 9
|
||||
- STR S2 count: 7 → 8
|
||||
- BRM across sets: 6 → 7
|
||||
- MKT across sets: 7 → 8
|
||||
- LCM across sets: 9 → 8
|
||||
- MGT across sets: 11 → 10
|
||||
@@ -0,0 +1,18 @@
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Innovation and Design course in Summer Set 2
|
||||
The system SHALL include "Innovation and Design" as an active course in Summer Elective Set 2 (`sum2`), qualifying for Brand Management (BRM), Entrepreneurship and Innovation (ENT), Marketing (MKT), and Strategy (STR, S2 marker).
|
||||
|
||||
#### Scenario: Course appears in Summer Set 2
|
||||
- **WHEN** the user views Summer Elective Set 2
|
||||
- **THEN** "Innovation and Design" appears as a selectable course
|
||||
|
||||
#### Scenario: Course qualifies for correct specializations
|
||||
- **WHEN** the user selects "Innovation and Design"
|
||||
- **THEN** it contributes credits towards BRM, ENT, MKT, and STR (S2)
|
||||
|
||||
## REMOVED Requirements
|
||||
|
||||
### Requirement: Managing Growing Companies course
|
||||
**Reason**: Course has been cancelled by the program and replaced by "Innovation and Design"
|
||||
**Migration**: No migration needed — the cancelled course was already excluded from solver computations
|
||||
@@ -0,0 +1,17 @@
|
||||
## 1. Course Data
|
||||
|
||||
- [x] 1.1 Replace `sum2-managing-growing` entry in `app/src/data/courses.ts` with new `sum2-innovation-design` course: name "Innovation and Design", setId "sum2", qualifications BRM (standard), ENT (standard), MKT (standard), STR (S2)
|
||||
|
||||
## 2. Test Assertions
|
||||
|
||||
- [x] 2.1 Update STR marker counts in `app/src/data/__tests__/data.test.ts`: S1 from 10 to 9, S2 from 7 to 8
|
||||
- [x] 2.2 Update per-specialization "across sets" counts: BRM 6→7, MKT 7→8, LCM 9→8, MGT 11→10
|
||||
|
||||
## 3. Version and Changelog
|
||||
|
||||
- [x] 3.1 Bump version to `1.1.1` and update date in `app/vite.config.ts` (`__APP_VERSION__` and `__APP_VERSION_DATE__`)
|
||||
- [x] 3.2 Add v1.1.1 entry to `CHANGELOG.md` documenting the course replacement
|
||||
|
||||
## 4. Verification
|
||||
|
||||
- [x] 4.1 Run test suite and confirm all tests pass
|
||||
Reference in New Issue
Block a user