Archive one-course-for-all-classes, add-lesson-schedule and launch-on-space; sync their specs
Browse files- openspec/changes/{add-lesson-schedule → archive/2026-11-09-add-lesson-schedule}/.openspec.yaml +0 -0
- openspec/changes/{add-lesson-schedule → archive/2026-11-09-add-lesson-schedule}/proposal.md +0 -0
- openspec/changes/{add-lesson-schedule → archive/2026-11-09-add-lesson-schedule}/specs/curriculum/spec.md +0 -0
- openspec/changes/{add-lesson-schedule → archive/2026-11-09-add-lesson-schedule}/specs/learning-path/spec.md +0 -0
- openspec/changes/{add-lesson-schedule → archive/2026-11-09-add-lesson-schedule}/specs/lesson-quizzes/spec.md +0 -0
- openspec/changes/{add-lesson-schedule → archive/2026-11-09-add-lesson-schedule}/tasks.md +0 -0
- openspec/changes/{launch-on-space → archive/2026-11-09-launch-on-space}/.openspec.yaml +0 -0
- openspec/changes/{launch-on-space → archive/2026-11-09-launch-on-space}/proposal.md +0 -0
- openspec/changes/{launch-on-space → archive/2026-11-09-launch-on-space}/tasks.md +1 -1
- openspec/changes/{one-course-for-all-classes → archive/2026-11-09-one-course-for-all-classes}/.openspec.yaml +0 -0
- openspec/changes/{one-course-for-all-classes → archive/2026-11-09-one-course-for-all-classes}/proposal.md +0 -0
- openspec/changes/{one-course-for-all-classes → archive/2026-11-09-one-course-for-all-classes}/specs/accounts-and-classes/spec.md +0 -0
- openspec/changes/{one-course-for-all-classes → archive/2026-11-09-one-course-for-all-classes}/specs/learning-path/spec.md +0 -0
- openspec/changes/{one-course-for-all-classes → archive/2026-11-09-one-course-for-all-classes}/tasks.md +0 -0
- openspec/specs/accounts-and-classes/spec.md +17 -9
- openspec/specs/curriculum/spec.md +21 -0
- openspec/specs/learning-path/spec.md +32 -2
- 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 |
-
- [
|
| 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),
|
| 125 |
|
| 126 |
#### Scenario: New class
|
| 127 |
-
- **WHEN** a manager creates "ט'3" with
|
| 128 |
-
- **THEN** "ט'3" appears in the class list with
|
| 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,
|
| 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,
|
| 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,
|
| 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
|
| 165 |
|
| 166 |
#### Scenario: Two classes, different lessons
|
| 167 |
-
- **WHEN** a student is in one class
|
| 168 |
-
- **THEN** the student's lessons are
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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
|
| 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
|
| 21 |
|
| 22 |
#### Scenario: Lesson with four skills
|
| 23 |
- **WHEN** a quiz is drawn for a lesson with four skills
|
| 24 |
-
- **THEN** it has
|
| 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
|