3v324v23 Claude Sonnet 5.5 commited on
Commit
107be58
·
1 Parent(s): b9516d9

Archive one-course-for-all-classes, add-lesson-schedule and launch-on-space; sync their specs

Browse files
Files changed (18) hide show
  1. openspec/changes/{add-lesson-schedule → archive/2026-11-09-add-lesson-schedule}/.openspec.yaml +0 -0
  2. openspec/changes/{add-lesson-schedule → archive/2026-11-09-add-lesson-schedule}/proposal.md +0 -0
  3. openspec/changes/{add-lesson-schedule → archive/2026-11-09-add-lesson-schedule}/specs/curriculum/spec.md +0 -0
  4. openspec/changes/{add-lesson-schedule → archive/2026-11-09-add-lesson-schedule}/specs/learning-path/spec.md +0 -0
  5. openspec/changes/{add-lesson-schedule → archive/2026-11-09-add-lesson-schedule}/specs/lesson-quizzes/spec.md +0 -0
  6. openspec/changes/{add-lesson-schedule → archive/2026-11-09-add-lesson-schedule}/tasks.md +0 -0
  7. openspec/changes/{launch-on-space → archive/2026-11-09-launch-on-space}/.openspec.yaml +0 -0
  8. openspec/changes/{launch-on-space → archive/2026-11-09-launch-on-space}/proposal.md +0 -0
  9. openspec/changes/{launch-on-space → archive/2026-11-09-launch-on-space}/tasks.md +1 -1
  10. openspec/changes/{one-course-for-all-classes → archive/2026-11-09-one-course-for-all-classes}/.openspec.yaml +0 -0
  11. openspec/changes/{one-course-for-all-classes → archive/2026-11-09-one-course-for-all-classes}/proposal.md +0 -0
  12. openspec/changes/{one-course-for-all-classes → archive/2026-11-09-one-course-for-all-classes}/specs/accounts-and-classes/spec.md +0 -0
  13. openspec/changes/{one-course-for-all-classes → archive/2026-11-09-one-course-for-all-classes}/specs/learning-path/spec.md +0 -0
  14. openspec/changes/{one-course-for-all-classes → archive/2026-11-09-one-course-for-all-classes}/tasks.md +0 -0
  15. openspec/specs/accounts-and-classes/spec.md +17 -9
  16. openspec/specs/curriculum/spec.md +21 -0
  17. openspec/specs/learning-path/spec.md +32 -2
  18. openspec/specs/lesson-quizzes/spec.md +17 -2
openspec/changes/{add-lesson-schedule → archive/2026-11-09-add-lesson-schedule}/.openspec.yaml RENAMED
File without changes
openspec/changes/{add-lesson-schedule → archive/2026-11-09-add-lesson-schedule}/proposal.md RENAMED
File without changes
openspec/changes/{add-lesson-schedule → archive/2026-11-09-add-lesson-schedule}/specs/curriculum/spec.md RENAMED
File without changes
openspec/changes/{add-lesson-schedule → archive/2026-11-09-add-lesson-schedule}/specs/learning-path/spec.md RENAMED
File without changes
openspec/changes/{add-lesson-schedule → archive/2026-11-09-add-lesson-schedule}/specs/lesson-quizzes/spec.md RENAMED
File without changes
openspec/changes/{add-lesson-schedule → archive/2026-11-09-add-lesson-schedule}/tasks.md RENAMED
File without changes
openspec/changes/{launch-on-space → archive/2026-11-09-launch-on-space}/.openspec.yaml RENAMED
File without changes
openspec/changes/{launch-on-space → archive/2026-11-09-launch-on-space}/proposal.md RENAMED
File without changes
openspec/changes/{launch-on-space → archive/2026-11-09-launch-on-space}/tasks.md RENAMED
@@ -13,7 +13,7 @@
13
 
14
  ## 3. Switch
15
 
16
- - [ ] 3.1 Run the full suite; push the `mathly2` branch to the Space's `main` (a push that only adds); verify the Space builds and `/` answers
17
  - [x] 3.2 Tell the Space's owner which secrets mathly2 reads (`SUPABASE_URL`, `SUPABASE_PUBLISHABLE_KEY`, `SUPABASE_SECRET_KEY`, `TEACHER_EMAILS`, `DEVELOPER_EMAILS`, `ADMIN_EMAILS`, `VAPID_PRIVATE_KEY`, `VAPID_SUBJECT`); verify the list against `config.py`
18
 
19
  ## 4. The fallback
 
13
 
14
  ## 3. Switch
15
 
16
+ - [x] 3.1 Run the full suite; push the `mathly2` branch to the Space's `main` (a push that only adds); verify the Space builds and `/` answers
17
  - [x] 3.2 Tell the Space's owner which secrets mathly2 reads (`SUPABASE_URL`, `SUPABASE_PUBLISHABLE_KEY`, `SUPABASE_SECRET_KEY`, `TEACHER_EMAILS`, `DEVELOPER_EMAILS`, `ADMIN_EMAILS`, `VAPID_PRIVATE_KEY`, `VAPID_SUBJECT`); verify the list against `config.py`
18
 
19
  ## 4. The fallback
openspec/changes/{one-course-for-all-classes → archive/2026-11-09-one-course-for-all-classes}/.openspec.yaml RENAMED
File without changes
openspec/changes/{one-course-for-all-classes → archive/2026-11-09-one-course-for-all-classes}/proposal.md RENAMED
File without changes
openspec/changes/{one-course-for-all-classes → archive/2026-11-09-one-course-for-all-classes}/specs/accounts-and-classes/spec.md RENAMED
File without changes
openspec/changes/{one-course-for-all-classes → archive/2026-11-09-one-course-for-all-classes}/specs/learning-path/spec.md RENAMED
File without changes
openspec/changes/{one-course-for-all-classes → archive/2026-11-09-one-course-for-all-classes}/tasks.md RENAMED
File without changes
openspec/specs/accounts-and-classes/spec.md CHANGED
@@ -121,11 +121,11 @@ Every signed-in account SHALL be able to see its own roles and what they allow.
121
  - **THEN** it lists the teacher role and what it allows
122
 
123
  ### Requirement: Manager creates classes
124
- A manager (or a developer) SHALL create, edit and delete classes. A class SHALL have a name (1–80 characters, unique ignoring case), the lessons it studies (at least one, from the bank), its students, at most one teacher (an email, never also a student of that class), an AI switch that starts off, and a daily AI budget (default 150).
125
 
126
  #### Scenario: New class
127
- - **WHEN** a manager creates "ט'3" with two lessons, a teacher and 25 students
128
- - **THEN** "ט'3" appears in the class list with those lessons, that teacher and 25 students, and its AI switch is off
129
 
130
  #### Scenario: Teacher listed as a student
131
  - **WHEN** a manager names "t@school.org" as the teacher and also lists it as a student of the same class
@@ -136,21 +136,21 @@ A manager (or a developer) SHALL create, edit and delete classes. A class SHALL
136
  - **THEN** the reason is shown next to the save button and in view, the typed name and teacher are still in the form, and nothing was saved
137
 
138
  ### Requirement: Editing and deleting a class
139
- A manager SHALL be able to change a class's name, lessons, students, teacher, AI switch and budget, and delete a class after confirming. Neither SHALL delete any student's progress.
140
 
141
  #### Scenario: Deleting a class
142
  - **WHEN** a manager deletes a class and confirms
143
  - **THEN** the class is gone, and its students' progress is still there
144
 
145
  ### Requirement: Class and student lists
146
- A manager SHALL see every class with its name, lessons, number of students and their emails and its teacher, and a list of all students with the classes each belongs to.
147
 
148
  #### Scenario: A student in two classes
149
  - **WHEN** a manager opens the students list and a student belongs to "ט'3" and "ט'4"
150
  - **THEN** that student's row shows both classes
151
 
152
  ### Requirement: Teacher home
153
- A teacher's home SHALL list the classes they teach, each with its students. A teacher MUST NOT be able to change a class's name, lessons, teacher, AI switch or budget.
154
 
155
  #### Scenario: Two classes
156
  - **WHEN** a teacher who teaches "ט'3" and "ט'4" signs in
@@ -161,11 +161,19 @@ A teacher's home SHALL list the classes they teach, each with its students. A te
161
  - **THEN** their home says that a manager chooses who teaches each class
162
 
163
  ### Requirement: A student's lessons
164
- A student's lessons SHALL be the lessons of all the classes they belong to.
165
 
166
  #### Scenario: Two classes, different lessons
167
- - **WHEN** a student is in one class studying lessons A and B and another studying B and C
168
- - **THEN** the student's lessons are A, B and C
 
 
 
 
 
 
 
 
169
 
170
  ### Requirement: First sign-in links the account
171
  The first time a person signs in, their account SHALL be linked to the class entries and roles stored for their email.
 
121
  - **THEN** it lists the teacher role and what it allows
122
 
123
  ### Requirement: Manager creates classes
124
+ A manager (or a developer) SHALL create, edit and delete classes. A class SHALL have a name (1–80 characters, unique ignoring case), its students, at most one teacher (an email, never also a student of that class), an AI switch that starts off, and a daily AI budget (default 150). A class SHALL NOT have chosen lessons: every class studies every lesson of the bank.
125
 
126
  #### Scenario: New class
127
+ - **WHEN** a manager creates "ט'3" with a teacher and 25 students
128
+ - **THEN** "ט'3" appears in the class list with that teacher and 25 students, its AI switch is off, and the form never asked for lessons
129
 
130
  #### Scenario: Teacher listed as a student
131
  - **WHEN** a manager names "t@school.org" as the teacher and also lists it as a student of the same class
 
136
  - **THEN** the reason is shown next to the save button and in view, the typed name and teacher are still in the form, and nothing was saved
137
 
138
  ### Requirement: Editing and deleting a class
139
+ A manager SHALL be able to change a class's name, students, teacher, AI switch and budget, and delete a class after confirming. Neither SHALL delete any student's progress.
140
 
141
  #### Scenario: Deleting a class
142
  - **WHEN** a manager deletes a class and confirms
143
  - **THEN** the class is gone, and its students' progress is still there
144
 
145
  ### Requirement: Class and student lists
146
+ A manager SHALL see every class with its name, number of students and their emails and its teacher, and a list of all students with the classes each belongs to.
147
 
148
  #### Scenario: A student in two classes
149
  - **WHEN** a manager opens the students list and a student belongs to "ט'3" and "ט'4"
150
  - **THEN** that student's row shows both classes
151
 
152
  ### Requirement: Teacher home
153
+ A teacher's home SHALL list the classes they teach, each with its students. A teacher MUST NOT be able to change a class's name, teacher, AI switch or budget.
154
 
155
  #### Scenario: Two classes
156
  - **WHEN** a teacher who teaches "ט'3" and "ט'4" signs in
 
161
  - **THEN** their home says that a manager chooses who teaches each class
162
 
163
  ### Requirement: A student's lessons
164
+ A student who belongs to at least one class SHALL have every lesson of the bank, whatever lessons were stored for their classes before. A student in no class has none.
165
 
166
  #### Scenario: Two classes, different lessons
167
+ - **WHEN** a student is in one class stored with lessons A and B and another stored with B and C
168
+ - **THEN** the student's lessons are every lesson of the bank
169
+
170
+ #### Scenario: A class saved with some lessons
171
+ - **WHEN** a student is in a class that was saved earlier with only lessons A and B
172
+ - **THEN** the student's path has every lesson
173
+
174
+ #### Scenario: No class
175
+ - **WHEN** a student who is in no class signs in
176
+ - **THEN** they see no lessons
177
 
178
  ### Requirement: First sign-in links the account
179
  The first time a person signs in, their account SHALL be linked to the class entries and roles stored for their email.
openspec/specs/curriculum/spec.md ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # curriculum Specification
2
+
3
+ ## Purpose
4
+ The school-wide curriculum: the date by which each lesson of the course should be completed, who sets it, and how it is used (the path marks lessons behind it).
5
+
6
+ ## Requirements
7
+
8
+ ### Requirement: A date per lesson
9
+ The course SHALL have one curriculum for the whole school: each lesson MAY have a date by which it should be completed. A manager (or a developer) SHALL set, change and clear these dates in a "תכנית לימודים" tab of the manager screen, which lists every lesson in the bank's order with its date. Nobody else SHALL be able to change them. A lesson with no date SHALL never count as behind.
10
+
11
+ #### Scenario: Setting dates
12
+ - **WHEN** a manager enters 3.11 for the first lesson and saves
13
+ - **THEN** the curriculum tab shows 3.11 for that lesson, and students' paths use it
14
+
15
+ #### Scenario: Clearing a date
16
+ - **WHEN** a manager clears a lesson's date and saves
17
+ - **THEN** the lesson has no date and no student sees it as behind
18
+
19
+ #### Scenario: Not a manager
20
+ - **WHEN** a teacher or a student asks to change a date
21
+ - **THEN** the server refuses and nothing changes
openspec/specs/learning-path/spec.md CHANGED
@@ -6,11 +6,11 @@ The student's main screen: every lesson of their classes as a hub with its skill
6
  ## Requirements
7
 
8
  ### Requirement: Choosing a subject
9
- After sign-in a student SHALL first see the subjects of their classes as cards, each with its name and a bar "N מתוך M מיומנויות". Math (מתמטיקה) is the only subject. Tapping a card SHALL open the subject's home, reached by the tab bar, and every screen of the subject SHALL have a way back to the subjects.
10
 
11
  #### Scenario: After signing in
12
  - **WHEN** a student signs in
13
- - **THEN** they see a card "מתמטיקה" with "N מתוך M מיומנויות", and no path yet
14
 
15
  #### Scenario: Opening the subject
16
  - **WHEN** the student taps the math card
@@ -72,3 +72,33 @@ The path SHALL fit a 360px-wide screen without sideways scrolling, including the
72
  #### Scenario: Six skills
73
  - **WHEN** the lesson with six skills is shown on a 360px screen
74
  - **THEN** all six stars and their words are visible without sideways scrolling
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  ## Requirements
7
 
8
  ### Requirement: Choosing a subject
9
+ After sign-in a student SHALL first see the subjects of their classes as cards, each with its name and a bar "N מתוך M מיומנויות". Math is the only subject, and its card is named "מתמטיקה כיתה ט - מצוינות". Tapping a card SHALL open the subject's home, reached by the tab bar, and every screen of the subject SHALL have a way back to the subjects.
10
 
11
  #### Scenario: After signing in
12
  - **WHEN** a student signs in
13
+ - **THEN** they see a card "מתמטיקה כיתה ט - מצוינות" with "N מתוך M מיומנויות", and no path yet
14
 
15
  #### Scenario: Opening the subject
16
  - **WHEN** the student taps the math card
 
72
  #### Scenario: Six skills
73
  - **WHEN** the lesson with six skills is shown on a 360px screen
74
  - **THEN** all six stars and their words are visible without sideways scrolling
75
+
76
+ ### Requirement: A completed lesson
77
+ A lesson SHALL be completed when every one of its skills is mastered, or when its quiz was passed. Passing the quiz MUST NOT change any skill's state. A completed lesson SHALL be marked on its hub with the word "הושלם".
78
+
79
+ #### Scenario: By skills
80
+ - **WHEN** a student has mastered all five skills of a lesson
81
+ - **THEN** the lesson is marked completed
82
+
83
+ #### Scenario: By the quiz
84
+ - **WHEN** a student passes a lesson's quiz while two of its skills are still in learning
85
+ - **THEN** the lesson is marked completed, and the two skills are still in learning
86
+
87
+ #### Scenario: Neither
88
+ - **WHEN** a student has mastered four of five skills and has not passed the quiz
89
+ - **THEN** the lesson is not completed
90
+
91
+ ### Requirement: Lessons behind the curriculum
92
+ A lesson that has a date in the curriculum, whose date has passed and that is not completed SHALL be marked on the path as behind, with a marker and its date in words ("היה אמור להסתיים ב־3.11"). The path SHALL say how many lessons are behind. A lesson with no date, a date still ahead, or a completed lesson MUST NOT be marked. Nothing SHALL be locked.
93
+
94
+ #### Scenario: Behind
95
+ - **WHEN** a lesson's date was yesterday and the student has not completed it
96
+ - **THEN** its hub shows the behind marker and the date, and the path says "1 שיעורים בפיגור"
97
+
98
+ #### Scenario: Completed in time
99
+ - **WHEN** a lesson's date has passed and the student passed its quiz
100
+ - **THEN** the lesson is marked completed and not behind
101
+
102
+ #### Scenario: Date still ahead or none
103
+ - **WHEN** a lesson's date is next week, or it has none
104
+ - **THEN** it is not marked behind
openspec/specs/lesson-quizzes/spec.md CHANGED
@@ -17,11 +17,11 @@ Every lesson SHALL have one quiz, shown as a node on the trail after the lesson'
17
  - **THEN** the lesson's grade stays 85
18
 
19
  ### Requirement: Quiz format
20
- A quiz SHALL be 10 multiple-choice questions drawn from the bank questions of the lesson's skills, at least one per skill and the rest spread evenly, in 15 minutes. Skill names MUST NOT be shown, and there SHALL be no feedback until the end. The board and calculator SHALL be available.
21
 
22
  #### Scenario: Lesson with four skills
23
  - **WHEN** a quiz is drawn for a lesson with four skills
24
- - **THEN** it has 10 questions and every skill has at least two
25
 
26
  ### Requirement: Retakes draw new questions
27
  Each retake SHALL prefer questions the student has not had in earlier attempts at this quiz, the least-used first.
@@ -43,3 +43,18 @@ The written quizzes authored in the bank SHALL NOT be used as lesson quizzes; th
43
  #### Scenario: Lesson with an authored written quiz
44
  - **WHEN** a student opens the quiz of a lesson that has an authored written quiz in the bank
45
  - **THEN** the quiz is the 10-question multiple-choice quiz
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  - **THEN** the lesson's grade stays 85
18
 
19
  ### Requirement: Quiz format
20
+ A quiz SHALL be 15 multiple-choice questions drawn from the bank questions of the lesson's skills, at least one per skill and the rest spread evenly, in 20 minutes. Skill names MUST NOT be shown, and there SHALL be no feedback until the end. The board and calculator SHALL be available.
21
 
22
  #### Scenario: Lesson with four skills
23
  - **WHEN** a quiz is drawn for a lesson with four skills
24
+ - **THEN** it has 15 questions and every skill has at least three
25
 
26
  ### Requirement: Retakes draw new questions
27
  Each retake SHALL prefer questions the student has not had in earlier attempts at this quiz, the least-used first.
 
43
  #### Scenario: Lesson with an authored written quiz
44
  - **WHEN** a student opens the quiz of a lesson that has an authored written quiz in the bank
45
  - **THEN** the quiz is the 10-question multiple-choice quiz
46
+
47
+ ### Requirement: Passing a quiz
48
+ A quiz SHALL be passed when its grade is at least 87, which is 13 right answers out of 15. A lesson whose quiz was passed at least once SHALL stay passed whatever later retakes score.
49
+
50
+ #### Scenario: Thirteen of fifteen
51
+ - **WHEN** a student gets 13 of 15 right
52
+ - **THEN** the quiz is passed
53
+
54
+ #### Scenario: Twelve of fifteen
55
+ - **WHEN** a student gets 12 of 15 right
56
+ - **THEN** the quiz is not passed (grade 80)
57
+
58
+ #### Scenario: A worse retake
59
+ - **WHEN** a student passed once and then scores 60
60
+ - **THEN** the lesson is still passed