jtdearmon commited on
Commit
138705b
·
verified ·
1 Parent(s): b13fc20

Deploy SAT & ACT Learning Lab 1.4.2

Browse files
Files changed (4) hide show
  1. DEPLOYMENT_NOTES.md +52 -17
  2. README.md +33 -10
  3. app.py +0 -0
  4. release_manifest.json +41 -21
DEPLOYMENT_NOTES.md CHANGED
@@ -1,4 +1,4 @@
1
- # Deployment notes — SAT & ACT Learning Lab 1.3.8
2
 
3
  Target private Space: `DearmonAnalytics/SAT_ACT_Learning_Lab`
4
 
@@ -6,7 +6,7 @@ Turso database: `dearmon-sat-act-learning-lab`
6
 
7
  Schema namespace: `sat_act_learning_lab_v1`
8
 
9
- Encrypted-source secret: `SAT_ACT_APP_FERNET_V1_3_8_361A7215EF3D_B4E784D7CBC7`
10
 
11
  ## Runtime contract
12
 
@@ -56,6 +56,17 @@ Encrypted-source secret: `SAT_ACT_APP_FERNET_V1_3_8_361A7215EF3D_B4E784D7CBC7`
56
  quantity/unit/operation, claim/evidence, or data/variable attributes feed up
57
  through the answer dependency path. These attributes are explanatory only
58
  and do not create separate mastery or retention records.
 
 
 
 
 
 
 
 
 
 
 
59
  - The embedded Business Calculus avatar defaults to the male professor and
60
  offers Oliver (`cedar`, speed `1.02`). Speech and live Simli video are opt-in;
61
  audio retention is disabled by default. Oliver is presented as an AI teaching
@@ -69,7 +80,7 @@ Encrypted-source secret: `SAT_ACT_APP_FERNET_V1_3_8_361A7215EF3D_B4E784D7CBC7`
69
 
70
  Core secrets are `OPENAI_API_KEY`, `TURSO_DATABASE_URL`, `TURSO_AUTH_TOKEN`,
71
  `LEARNER_ID_HMAC_SECRET`, `INSTRUCTOR_EXPORT_SECRET`, and
72
- `SAT_ACT_APP_FERNET_V1_3_8_361A7215EF3D_B4E784D7CBC7`. Live avatar video additionally uses optional
73
  `SIMLI_API_KEY`.
74
 
75
  Email recovery uses `AUTH_RECOVERY_EMAIL_ENABLED`, `AUTH_SMTP_HOST`,
@@ -85,38 +96,62 @@ Release runtime defaults include `ACCOUNT_AUTH_ENABLED=1`,
85
  `ASK_PROFESSOR_COMPONENT_DEFAULT=1`, `ASK_PROFESSOR_TTS_DEFAULT=0`, and
86
  `ASK_PROFESSOR_SIMLI_DEFAULT=0`. Printable supplemental generation defaults to
87
  `OPENAI_OVERFLOW_MODEL=gpt-5-mini` and
88
- `OPENAI_OVERFLOW_REVIEW_MODEL=gpt-5-mini`. Face IDs and the pinned Simli client module are
 
89
  listed in `environment.example` used to prepare this deployment.
90
 
91
- ## v1.3.8 upgrade gate
92
 
93
  Finish or explicitly abandon every active timed simulation from an earlier
94
- release before installing v1.3.8. Checkpoints are intentionally bound to
95
  app/source/form versions and cannot be resumed across this release. Back up
96
  Turso, preserve `LEARNER_ID_HMAC_SECRET`, and retain prior Fernet secrets and
97
  rollback commits needed through acceptance testing.
98
 
99
- Acceptance testing for v1.3.8 must verify the live Dearmon Analytics palette,
100
- type, DA mark, compact masthead/disclaimer, bright amber test chooser, and three
101
- compressed horizontal Practice rails over translucent ink. Selecting a lesson
 
 
102
  must open Question & Your Work, and the answer row must expose grade,
103
- same-lesson, and next-lesson actions. Grading must freeze elapsed and target
104
- time, show the exact reduced fraction and pace comparison, and flatten the same
105
- fields into learner/account and instructor attempt CSVs while legacy rows stay
106
- blank. Inline lesson Math and printable exam/key PDFs must use the shared
107
- renderer without visible LaTeX commands or dollar delimiters. The collapsed,
108
- question-specific Concept swim lane, full analogous worked example, separate
109
- active-item hint, and deterministic confused-word surfaces must remain.
 
 
 
 
110
  Near-white mastered topic tiles intentionally retain dark text for WCAG
111
  contrast.
112
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  The release builder continues to generate the versioned Fernet key
114
  automatically, store it under `release/private/`, validate it, and reuse it for
115
  safe retries without prompting the deployer operator.
116
 
117
  ## Key lifecycle and rollback
118
 
119
- The current loader reads only `SAT_ACT_APP_FERNET_V1_3_8_361A7215EF3D_B4E784D7CBC7`. A later release must generate a
120
  new versioned, fingerprinted secret name. The deployer adds that secret before
121
  the repository commit and retains earlier keys. Roll back by reverting the
122
  Space repository to the prior commit recorded in `deployment_receipt.json`.
 
1
+ # Deployment notes — SAT & ACT Learning Lab 1.4.2
2
 
3
  Target private Space: `DearmonAnalytics/SAT_ACT_Learning_Lab`
4
 
 
6
 
7
  Schema namespace: `sat_act_learning_lab_v1`
8
 
9
+ Encrypted-source secret: `SAT_ACT_APP_FERNET_V1_4_2_DEA36E04D801_0690259EE725`
10
 
11
  ## Runtime contract
12
 
 
56
  quantity/unit/operation, claim/evidence, or data/variable attributes feed up
57
  through the answer dependency path. These attributes are explanatory only
58
  and do not create separate mastery or retention records.
59
+ - Each graded practice explanation may expose one attempt-bound OpenAI follow-up
60
+ for the owning signed-in learner. It is unavailable before grading and is
61
+ retained with that attempt; stale or cross-learner question tokens fail closed.
62
+ - The retained Learning Diagnostic uses distinct-topic coverage and remains
63
+ locked until the same signed-in learner exceeds 50% in both Reading and Math
64
+ for SAT or ACT. OpenAI receives only allowlisted aggregate counts and
65
+ foundational-skill evidence—never identity, raw item text, selected responses,
66
+ or answer keys—and its structured output must match server-known findings and
67
+ remediation ladders. Guided Examples and Targeted Practice unlock only after
68
+ a validated report is retained; remediation is deterministic and cannot count
69
+ toward its own coverage gate.
70
  - The embedded Business Calculus avatar defaults to the male professor and
71
  offers Oliver (`cedar`, speed `1.02`). Speech and live Simli video are opt-in;
72
  audio retention is disabled by default. Oliver is presented as an AI teaching
 
80
 
81
  Core secrets are `OPENAI_API_KEY`, `TURSO_DATABASE_URL`, `TURSO_AUTH_TOKEN`,
82
  `LEARNER_ID_HMAC_SECRET`, `INSTRUCTOR_EXPORT_SECRET`, and
83
+ `SAT_ACT_APP_FERNET_V1_4_2_DEA36E04D801_0690259EE725`. Live avatar video additionally uses optional
84
  `SIMLI_API_KEY`.
85
 
86
  Email recovery uses `AUTH_RECOVERY_EMAIL_ENABLED`, `AUTH_SMTP_HOST`,
 
96
  `ASK_PROFESSOR_COMPONENT_DEFAULT=1`, `ASK_PROFESSOR_TTS_DEFAULT=0`, and
97
  `ASK_PROFESSOR_SIMLI_DEFAULT=0`. Printable supplemental generation defaults to
98
  `OPENAI_OVERFLOW_MODEL=gpt-5-mini` and
99
+ `OPENAI_OVERFLOW_REVIEW_MODEL=gpt-5-mini`; Learning Diagnostic synthesis
100
+ defaults to `OPENAI_DIAGNOSTIC_MODEL=gpt-5-mini`. Face IDs and the pinned Simli client module are
101
  listed in `environment.example` used to prepare this deployment.
102
 
103
+ ## v1.4.2 upgrade gate
104
 
105
  Finish or explicitly abandon every active timed simulation from an earlier
106
+ release before installing v1.4.2. Checkpoints are intentionally bound to
107
  app/source/form versions and cannot be resumed across this release. Back up
108
  Turso, preserve `LEARNER_ID_HMAC_SECRET`, and retain prior Fernet secrets and
109
  rollback commits needed through acceptance testing.
110
 
111
+ Acceptance testing for v1.4.2 must verify the exact Dearmon Analytics paper,
112
+ ink, blue, teal, and coral palette; compact 1,240-pixel workspace; bundled
113
+ same-origin Inter, Source Serif 4, and Geist Mono; and one crisp DA gradient rule
114
+ across the compact chooser and three shadow-free horizontal Practice rails.
115
+ Practice variation must be collapsed beneath Test Tools. Selecting a lesson
116
  must open Question & Your Work, and the answer row must expose grade,
117
+ same-lesson, and next-lesson actions. Repeated next-lesson actions must advance
118
+ from the active item even when browser selector values are stale. Linear-
119
+ equation solution-count explanations must distribute and cancel the actual
120
+ terms, explain a true identity, and contrast a false-statement no-solution case.
121
+ Grading must freeze elapsed and target time, show the exact reduced fraction and
122
+ pace comparison, and flatten the same fields into learner/account and instructor
123
+ attempt CSVs while legacy rows stay blank. Inline lesson Math and printable
124
+ exam/key PDFs must use the shared renderer without visible LaTeX commands or
125
+ dollar delimiters. The collapsed, question-specific Concept swim lane, full
126
+ analogous worked example, separate active-item hint, and deterministic confused-
127
+ word surfaces must remain.
128
  Near-white mastered topic tiles intentionally retain dark text for WCAG
129
  contrast.
130
 
131
+ Acceptance must also verify that post-explanation follow-ups are hidden before
132
+ grading and limited to the owning attempt; both diagnostic coverage bars use
133
+ distinct topics; the report gate requires strict majority coverage in Reading
134
+ and Math for one exam; OpenAI report requests contain only aggregate allowlisted
135
+ signals; invalid/provider-failed reports do not unlock anything; and completed
136
+ reports can be pulled and used to open graduated Guided Examples and separate
137
+ Targeted Practice.
138
+
139
+ Progress & Reports must render exactly two mastery wheels for SAT and ACT,
140
+ retain every curriculum topic including unassessed topics, and keep attempt
141
+ depth independent from accuracy color. Verify that one correct attempt has a
142
+ shallower evidence ring than four correct attempts, untouched topics never show
143
+ 0%, ACT Reading/Language combines English and Reading, exact-data tables remain
144
+ usable without color or hover, and signed-out/revoked sessions expose no learner
145
+ aggregates. Practice and completed-simulation evidence may count; diagnostic
146
+ and review attempts must not inflate the dashboard.
147
+
148
  The release builder continues to generate the versioned Fernet key
149
  automatically, store it under `release/private/`, validate it, and reuse it for
150
  safe retries without prompting the deployer operator.
151
 
152
  ## Key lifecycle and rollback
153
 
154
+ The current loader reads only `SAT_ACT_APP_FERNET_V1_4_2_DEA36E04D801_0690259EE725`. A later release must generate a
155
  new versioned, fingerprinted secret name. The deployer adds that secret before
156
  the repository commit and retains earlier keys. Roll back by reverting the
157
  Space repository to the prior commit recorded in `deployment_receipt.json`.
README.md CHANGED
@@ -14,7 +14,7 @@ short_description: Dynamic SAT/ACT practice, mastery, and reasoning graphs
14
 
15
  # Dearmon Analytics SAT & ACT Learning Lab
16
 
17
- Release `1.3.8` provides original dynamic practice for current SAT and
18
  ACT skill blueprints, a four-level topic graph, individual mastery tracking,
19
  targeted practice, and test-like diagnostic sessions. It adds username/password
20
  accounts, secure recovery, an isolated one-click demo, and the embedded teaching
@@ -24,12 +24,17 @@ Signed-in students can also download their complete personalized Topic Graph as
24
  a branded PNG, printable PDF, accessible hierarchy-and-concepts CSV, and
25
  verification manifest; demo sessions remain nonexportable.
26
 
27
- Release 1.3.8 matches the live Dearmon Analytics palette, typography, DA mark,
28
- and compact paper masthead, with the independent-practice disclaimer inside the
29
- banner. Its brighter amber-outlined test chooser and Section → Domain → Narrow
30
- Topic rails are compressed and closely stacked over translucent ink surfaces
31
- with accessible light type. Fresh lessons automatically open Question & Your
32
- Work; grading is joined by separate same-lesson and next-lesson actions.
 
 
 
 
 
33
 
34
  The answer record freezes elapsed time and its blueprint target at grading,
35
  then reports their exact reduced fraction and pace comparison. Learner/account
@@ -39,6 +44,24 @@ printable exam/answer-key PDFs so raw LaTeX is never the learner-facing
39
  fallback. The collapsed item-specific Concepts Needed swim lane, complete
40
  analogous worked examples, separate hints, and mastery whitening remain.
41
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  The Printable Exam Builder requires an active demo or signed-in learner so
43
  every generated file has a cleanup owner. It creates a clean Dearmon
44
  Analytics-branded student PDF and a separate answer-key PDF from selected or
@@ -65,7 +88,7 @@ attribute-level mastery or retention records.
65
  This private Space uses the separate Turso database
66
  `dearmon-sat-act-learning-lab` and schema namespace
67
  `sat_act_learning_lab_v1`. Its encrypted application uses the versioned Space
68
- secret `SAT_ACT_APP_FERNET_V1_3_8_361A7215EF3D_B4E784D7CBC7`.
69
 
70
  Required Space secrets are `OPENAI_API_KEY`, `TURSO_DATABASE_URL`,
71
  `TURSO_AUTH_TOKEN`, `LEARNER_ID_HMAC_SECRET`, `INSTRUCTOR_EXPORT_SECRET`, and
@@ -107,9 +130,9 @@ controls, and retention policies.
107
 
108
  ## Upgrade note
109
 
110
- Before replacing any earlier release with v1.3.8, every active timed simulation
111
  must be finished or explicitly abandoned. Saved forms are bound to the app
112
- version and encrypted-source fingerprint, so v1.3.8 intentionally rejects older
113
  checkpoints. Preserve `LEARNER_ID_HMAC_SECRET` and retain every prior versioned
114
  Fernet secret and rollback commit needed through acceptance testing. The build
115
  still generates its new Fernet key automatically, stores it under
 
14
 
15
  # Dearmon Analytics SAT & ACT Learning Lab
16
 
17
+ Release `1.4.2` provides original dynamic practice for current SAT and
18
  ACT skill blueprints, a four-level topic graph, individual mastery tracking,
19
  targeted practice, and test-like diagnostic sessions. It adds username/password
20
  accounts, secure recovery, an isolated one-click demo, and the embedded teaching
 
24
  a branded PNG, printable PDF, accessible hierarchy-and-concepts CSV, and
25
  verification manifest; demo sessions remain nonexportable.
26
 
27
+ Release 1.4.2 uses the exact Dearmon Analytics paper, ink, blue, teal, and coral
28
+ system in a compact 1,240-pixel workspace. Bundled Inter, Source Serif 4, and
29
+ Geist Mono fonts are served from same-origin routes. The compact test chooser
30
+ and closely stacked Section → Domain → Narrow Topic rails use one restrained DA
31
+ gradient rule, flat accessible controls, and shadow-free surfaces. Practice
32
+ variation settings are collapsed under Test Tools.
33
+
34
+ Next-lesson routing advances from the authoritative active-question path, so
35
+ stale browser selector state cannot regenerate the same lesson. Solution-count
36
+ feedback works the actual linear equation, including the cancellation that
37
+ produces a true identity and why that identity means every real value works.
38
 
39
  The answer record freezes elapsed time and its blueprint target at grading,
40
  then reports their exact reduced fraction and pace comparison. Learner/account
 
44
  fallback. The collapsed item-specific Concepts Needed swim lane, complete
45
  analogous worked examples, separate hints, and mastery whitening remain.
46
 
47
+ Release 1.4.2 retains one OpenAI-assisted follow-up beneath each graded
48
+ explanation and a signed-in cross-question Learning Diagnostic. The diagnostic
49
+ unlocks only after strict majority coverage of both Reading and Math for the
50
+ same exam. It sends OpenAI only allowlisted aggregate performance evidence—not
51
+ learner identity, raw questions, selected responses, or answer keys—and rejects
52
+ output outside the server-approved finding/remediation schema. A successfully
53
+ retained report unlocks deterministic Guided Examples from basic to complex and
54
+ specific Targeted Practice; those workspaces remain disabled before the gate
55
+ and report are complete.
56
+
57
+ Progress & Reports includes two responsive hierarchical mastery wheels. SAT
58
+ shows Reading and Writing plus Math; ACT combines English and Reading as
59
+ Reading/Language and shows Math separately. Domain and narrow-topic angles stay
60
+ fixed to the curriculum, radial depth shows scored attempts toward four, and
61
+ color independently shows raw accuracy. Untouched topics say Unassessed rather
62
+ than 0%. Exact native tables provide the same aggregate data for keyboard,
63
+ touch, print, and assistive-technology access.
64
+
65
  The Printable Exam Builder requires an active demo or signed-in learner so
66
  every generated file has a cleanup owner. It creates a clean Dearmon
67
  Analytics-branded student PDF and a separate answer-key PDF from selected or
 
88
  This private Space uses the separate Turso database
89
  `dearmon-sat-act-learning-lab` and schema namespace
90
  `sat_act_learning_lab_v1`. Its encrypted application uses the versioned Space
91
+ secret `SAT_ACT_APP_FERNET_V1_4_2_DEA36E04D801_0690259EE725`.
92
 
93
  Required Space secrets are `OPENAI_API_KEY`, `TURSO_DATABASE_URL`,
94
  `TURSO_AUTH_TOKEN`, `LEARNER_ID_HMAC_SECRET`, `INSTRUCTOR_EXPORT_SECRET`, and
 
130
 
131
  ## Upgrade note
132
 
133
+ Before replacing any earlier release with v1.4.2, every active timed simulation
134
  must be finished or explicitly abandoned. Saved forms are bound to the app
135
+ version and encrypted-source fingerprint, so v1.4.2 intentionally rejects older
136
  checkpoints. Preserve `LEARNER_ID_HMAC_SECRET` and retain every prior versioned
137
  Fernet secret and rollback commit needed through acceptance testing. The build
138
  still generates its new Fernet key automatically, stores it under
app.py CHANGED
The diff for this file is too large to render. See raw diff
 
release_manifest.json CHANGED
@@ -1,18 +1,18 @@
1
  {
2
- "built_utc": "2026-08-30T13:04:16+00:00",
3
  "database_name": "dearmon-sat-act-learning-lab",
4
- "encrypted_payload_sha256": "98b38862bb0bae2fa92db264f2e8bb64136fbbc8205577c78089bf12e362e5d0",
5
  "entry_module": "sat_act_lab.app_main",
6
- "fernet_secret_name": "SAT_ACT_APP_FERNET_V1_3_8_361A7215EF3D_B4E784D7CBC7",
7
- "key_fingerprint_sha256_prefix": "B4E784D7CBC7",
8
- "plaintext_archive_sha256": "361a7215ef3df14fecc19eff46274d95af18cc0e4c9d2ec7fb075e574351f47f",
9
- "release_version": "1.3.8",
10
  "schema_namespace": "sat_act_learning_lab_v1",
11
  "schema_version": "dearmon-sat-act-release-v1",
12
  "source_members": {
13
  "sat_act_lab/__init__.py": {
14
  "bytes": 71,
15
- "sha256": "2cc4420186299725b00fb206f1fb4be160c23713e4c408661327f51f22400294"
16
  },
17
  "sat_act_lab/act_english_bank.py": {
18
  "bytes": 79622,
@@ -31,16 +31,16 @@
31
  "sha256": "9f557aea11cc2796e011031c70776dfd9cf3f4c0f8255fcbff9ded341580a4e4"
32
  },
33
  "sat_act_lab/app_main.py": {
34
- "bytes": 355315,
35
- "sha256": "8abed1a97ba4a74d8bfc8d0c88148ae6fdada1c549b5ba54e20908aa559017b2"
36
  },
37
  "sat_act_lab/attribute_graph.py": {
38
  "bytes": 131004,
39
  "sha256": "8188d65e7894a4c69aed1fdf9f8f4a0c7e90ca6055be44776fac8a39a7bb4dea"
40
  },
41
  "sat_act_lab/auth.py": {
42
- "bytes": 52755,
43
- "sha256": "f6bc1f7f656b8366e69b171291ead6de32ff543fded3dc6b2a53ff6f3c752747"
44
  },
45
  "sat_act_lab/avatar.py": {
46
  "bytes": 73246,
@@ -50,6 +50,10 @@
50
  "bytes": 49657,
51
  "sha256": "7c9cf2c1532818203b7a52de24d61031aeb65d31ccd7f6be627c0bb2c99ecf93"
52
  },
 
 
 
 
53
  "sat_act_lab/curriculum.py": {
54
  "bytes": 34704,
55
  "sha256": "0ace42ff71e3eee09b7b0828807cda7ecad2ea86caeda9cb67c0b941ab70c960"
@@ -58,6 +62,14 @@
58
  "bytes": 37662,
59
  "sha256": "544b2163c3d39259108847468d8f9bb027ae65d3b13ee934a8f6d9a43d167943"
60
  },
 
 
 
 
 
 
 
 
61
  "sat_act_lab/exam_engine.py": {
62
  "bytes": 100384,
63
  "sha256": "2abb720cd5a0a5a459cbcdc7ec1a8919ea50d7203cc809adccdefed4317e3a7f"
@@ -74,6 +86,14 @@
74
  "bytes": 51827,
75
  "sha256": "cf32579466f8a97f1d299c78ace4a0fef16c6db51685dce0f164f160e910d06c"
76
  },
 
 
 
 
 
 
 
 
77
  "sat_act_lab/math_rendering.py": {
78
  "bytes": 22555,
79
  "sha256": "8b9ddb347ba4921597546a6430bcbc322eea1fe7f57e457432448ffb5e3bf6af"
@@ -83,16 +103,16 @@
83
  "sha256": "96dda3ddb76bc2d837769865fdbe177ad650bfd21cd158d161e5cb13123fa6a9"
84
  },
85
  "sat_act_lab/question_engine.py": {
86
- "bytes": 237008,
87
- "sha256": "c073090634e055cdd53e3e1af38e5d3967b73cb193c94c187e767269b74c7915"
88
  },
89
  "sat_act_lab/topic_graph_report.py": {
90
  "bytes": 19837,
91
  "sha256": "0a6bb8a950a1f600e2d365bbbc7e9afba48c23be30d5440aa0fb94a2ed4ecbea"
92
  },
93
  "sat_act_lab/tracking.py": {
94
- "bytes": 143382,
95
- "sha256": "35705325d13dd4a71ac0a7568d98b49365d999ad000d3245d87cf041f01988c7"
96
  }
97
  },
98
  "space_file_hashes": {
@@ -101,16 +121,16 @@
101
  "sha256": "3b1fdd8eb2e17dc4edae8387f1bc9a18a8072a8d6fae3a71041f00f0b9b04103"
102
  },
103
  "DEPLOYMENT_NOTES.md": {
104
- "bytes": 7495,
105
- "sha256": "8fc2538674135f75ab59f2d88796e78221a1d7d55a8c44273149047a7e3ff68b"
106
  },
107
  "README.md": {
108
- "bytes": 6894,
109
- "sha256": "634a018397457137466c50b9c43d7cbdcc89570c3c99ea7aa72388fa0353b5bd"
110
  },
111
  "app.py": {
112
- "bytes": 709677,
113
- "sha256": "0d4ff72267e861e5ba4d9bc28baa67fb860cc56d6a6027f126c19963a947cd1a"
114
  },
115
  "requirements.txt": {
116
  "bytes": 301,
 
1
  {
2
+ "built_utc": "2026-08-30T18:20:27+00:00",
3
  "database_name": "dearmon-sat-act-learning-lab",
4
+ "encrypted_payload_sha256": "adc070c86dbe93ba12cff7b924de4f2616f827718a05a6b4f0175e111443b436",
5
  "entry_module": "sat_act_lab.app_main",
6
+ "fernet_secret_name": "SAT_ACT_APP_FERNET_V1_4_2_DEA36E04D801_0690259EE725",
7
+ "key_fingerprint_sha256_prefix": "0690259EE725",
8
+ "plaintext_archive_sha256": "dea36e04d801e349a085d0f9f83e1b568454323c7bcfff7f1cde213f1b0ee66c",
9
+ "release_version": "1.4.2",
10
  "schema_namespace": "sat_act_learning_lab_v1",
11
  "schema_version": "dearmon-sat-act-release-v1",
12
  "source_members": {
13
  "sat_act_lab/__init__.py": {
14
  "bytes": 71,
15
+ "sha256": "c2ea016aa58c3d10813a8b0cb468b2723622209c7c33b1b7c313de217c884369"
16
  },
17
  "sat_act_lab/act_english_bank.py": {
18
  "bytes": 79622,
 
31
  "sha256": "9f557aea11cc2796e011031c70776dfd9cf3f4c0f8255fcbff9ded341580a4e4"
32
  },
33
  "sat_act_lab/app_main.py": {
34
+ "bytes": 425891,
35
+ "sha256": "0a2e53318d7a2c0ef36382d74a9c40cbd8969cbe2f7ede7d493b4b7c7ea9e8f7"
36
  },
37
  "sat_act_lab/attribute_graph.py": {
38
  "bytes": 131004,
39
  "sha256": "8188d65e7894a4c69aed1fdf9f8f4a0c7e90ca6055be44776fac8a39a7bb4dea"
40
  },
41
  "sat_act_lab/auth.py": {
42
+ "bytes": 53065,
43
+ "sha256": "ec077ace7061a00b6615711c0bd689819736b1e13732d9550c50412c713086f5"
44
  },
45
  "sat_act_lab/avatar.py": {
46
  "bytes": 73246,
 
50
  "bytes": 49657,
51
  "sha256": "7c9cf2c1532818203b7a52de24d61031aeb65d31ccd7f6be627c0bb2c99ecf93"
52
  },
53
+ "sat_act_lab/brand_fonts.py": {
54
+ "bytes": 181295,
55
+ "sha256": "f3e552f76e81cd1a65187cfa95c126b42497f7a623000057c55aa210eb24e978"
56
+ },
57
  "sat_act_lab/curriculum.py": {
58
  "bytes": 34704,
59
  "sha256": "0ace42ff71e3eee09b7b0828807cda7ecad2ea86caeda9cb67c0b941ab70c960"
 
62
  "bytes": 37662,
63
  "sha256": "544b2163c3d39259108847468d8f9bb027ae65d3b13ee934a8f6d9a43d167943"
64
  },
65
+ "sat_act_lab/diagnostic_reports.py": {
66
+ "bytes": 74953,
67
+ "sha256": "eedae1cd9aa5643b9923eb4c2d4879a17c066c4286e4aaccecea02f6094c04cb"
68
+ },
69
+ "sat_act_lab/diagnostic_skills.py": {
70
+ "bytes": 119601,
71
+ "sha256": "f31abccc2a3ef0554df6f5de50bdcb0d4871c3dd24d0ecacd8b8467b31f29b70"
72
+ },
73
  "sat_act_lab/exam_engine.py": {
74
  "bytes": 100384,
75
  "sha256": "2abb720cd5a0a5a459cbcdc7ec1a8919ea50d7203cc809adccdefed4317e3a7f"
 
86
  "bytes": 51827,
87
  "sha256": "cf32579466f8a97f1d299c78ace4a0fef16c6db51685dce0f164f160e910d06c"
88
  },
89
+ "sat_act_lab/mastery_dashboard.py": {
90
+ "bytes": 12958,
91
+ "sha256": "5540dbdc9cc43cfd7f61c2a6bc9581044d0ff9ce22441022a58896f68a20ba03"
92
+ },
93
+ "sat_act_lab/mastery_dashboard_view.py": {
94
+ "bytes": 26202,
95
+ "sha256": "e1f2698a5c89a36893ea297556c89e93820e6dad2fae7e2916cb17f7c69c221b"
96
+ },
97
  "sat_act_lab/math_rendering.py": {
98
  "bytes": 22555,
99
  "sha256": "8b9ddb347ba4921597546a6430bcbc322eea1fe7f57e457432448ffb5e3bf6af"
 
103
  "sha256": "96dda3ddb76bc2d837769865fdbe177ad650bfd21cd158d161e5cb13123fa6a9"
104
  },
105
  "sat_act_lab/question_engine.py": {
106
+ "bytes": 239549,
107
+ "sha256": "49035bcdabbfeb78852b3a7c5a7756c97ec6106a28baafda66147eed5d091c9c"
108
  },
109
  "sat_act_lab/topic_graph_report.py": {
110
  "bytes": 19837,
111
  "sha256": "0a6bb8a950a1f600e2d365bbbc7e9afba48c23be30d5440aa0fb94a2ed4ecbea"
112
  },
113
  "sat_act_lab/tracking.py": {
114
+ "bytes": 218973,
115
+ "sha256": "ddaca8f431faaef98ade06974e399bb4b09cc6c61ac64093d5a86cc928366a85"
116
  }
117
  },
118
  "space_file_hashes": {
 
121
  "sha256": "3b1fdd8eb2e17dc4edae8387f1bc9a18a8072a8d6fae3a71041f00f0b9b04103"
122
  },
123
  "DEPLOYMENT_NOTES.md": {
124
+ "bytes": 9910,
125
+ "sha256": "a7badb012c1a37b1c10da63f6ed3733d9eb5de99a87c0c1a5182eae469abefa7"
126
  },
127
  "README.md": {
128
+ "bytes": 8342,
129
+ "sha256": "c0fce1840ec6bbfc51fc228f5f9e9caf4d46bf08eaddf81f22acfca95cc9294c"
130
  },
131
  "app.py": {
132
+ "bytes": 1086778,
133
+ "sha256": "a3b6b387d9ccdebfe9441ca84fb0e67362d8d56d0f3fa68ad34ad10d59ab5c2d"
134
  },
135
  "requirements.txt": {
136
  "bytes": 301,