A local-first, course-aligned interactive study environment for UPLB AMAT 19 (Finite Mathematics).
AMAT 19 Study Lab is intentionally not a dashboard of black-box calculators. Mathematical truth lives in deterministic, framework-independent engines; React owns interaction state; Astro owns routes/content; learner data stays in the browser.
- Logic Basics / controlled symbolization
- Truth Table Lab with structure, systematic row patterns, classification, practice, and argument-validity mode
- Equivalence Lab with named one-step rewrite validation
- Formal Proof Workspace with AMAT equivalence/inference rules and scoped direct/conditional/indirect proof support
- Counting Explorer: permutations, combinations, repetition models, inclusion–exclusion
- Conditional Probability & Independence with exact two-way analysis
- Bayes Update Lab (supplemental)
- Discrete Distribution Lab (supplemental)
- Seeded Probability Simulation Lab using a Web Worker (supplemental)
- Interest & Time Value: simple/compound/nominal accumulation, rate equivalence, focal-date valuation
- Cash-flow Timeline
- Annuity Timeline: immediate/due, present/future value, solve payment
- Bond Pricing (supplemental)
- BigInt-backed fixed-point
FinanceDecimalwith deterministic traces; representative calculations are cross-checked against independent high-precision reference vectors
- Matrix Operations with exact rational arithmetic and row-by-column traces
- Gauss–Jordan / RREF / inverse / systems with immutable row-operation traces
- Graphical Linear Programming with bounded/infeasible/unbounded detection and a bounded educational simplex trace
- Zero-sum Game Theory with maximin/minimax, saddle points, strict dominance, and exact supported 2×2 mixtures
- Markov Chains (supplemental)
/studyprioritized retrieval/repair queue/coursesemester-aware roadmap- module-scoped retrieval from
/modules/:module?view=practicewith immediate deterministic feedback /examoriginal mixed course check with delayed feedback/referencesearchable formula/notation reference/progresslocal mastery evidence/savedlocal saved-item library/settingslocal preferences/data controls- PWA/offline shell with learner-controlled updates
Astro static/content shell
├─ course, module, lesson, practice, progress, and library routes
├─ one React root per complex interactive lab
└─ local-first browser application surfaces
Framework-independent packages
├─ @amat19/math-core
├─ @amat19/domain-logic
├─ @amat19/domain-probability
├─ @amat19/domain-finance
├─ @amat19/domain-linear
├─ @amat19/domain-games
├─ @amat19/learning-engine
├─ @amat19/persistence
└─ @amat19/course-content
Key contracts:
- React/Astro do not decide mathematical truth.
- Logic/probability/matrices/game calculations use exact deterministic representations where appropriate.
- No
eval,new Function, LLM grading, account system, cloud backend, or analytics is required. - IndexedDB is behind a persistence port rather than embedded throughout UI code.
- Current-guide topics and supplemental older-material depth stay explicitly separated.
The current hardening pass targets main baseline commit d71ca940a0882a929a6d23a80ea7f4dea8df2bdc.
Major changes:
- pnpm 11-compatible GitHub Actions using
pnpm/setup, immutable action SHA pins, read-only workflow permissions, and blocking high-severity dependency audit - atomic mastery updates to prevent concurrent lost writes
- canonical skill IDs plus parent-course aggregation so leaf lab evidence and broad Progress views agree without duplicate storage
Securemastery now requires repeated independent evidence- targeted practice no longer relabels unrelated questions as the requested skill
- stronger snapshot validation
- mathematically ordered CDF and validated total-probability partitions
- independent high-precision Finance regression vectors
- expanded proof/LP/probability/persistence/assessment tests
- full core-route service-worker precache, query-insensitive offline navigation, and a four-second network fallback bound; legacy
/practicenow redirects to Study - production-build PWA Playwright job
- explicit Vercel security headers
.vercel/repository cleanup and React Bits third-party notices
See docs/HARDENING_PASS8.md and docs/RELEASE_CHECKLIST.md.
Requires Node 22+ and pnpm 11.23.0.
corepack enable
pnpm install --frozen-lockfile
pnpm verify
pnpm test:e2e
pnpm devUseful gates:
pnpm test:node
pnpm test:vitest
pnpm audit:architecture
pnpm audit:content
pnpm check
pnpm build
pnpm test:e2e:core
pnpm test:e2e:productionIn the implementation workspace, with no dependency download available:
- direct Node semantic/regression suite: 100/100 passed
- architecture audit: PASS — 8 framework-independent domain/content packages and 18 single-root lab routes
- public-content audit: PASS
The sandbox could not install npm dependencies, so the exact merged-tree Astro/Vitest/Playwright/Axe/frozen-lockfile gates must be run by GitHub CI after applying this pass. The CI workflow has been repaired specifically to perform those gates and now includes a production-build offline PWA check.
The official AMAT 19 course guide remains the primary scope authority. Older handouts inform terminology and explicitly supplemental depth. Historical examinations are assessment-pattern evidence only and are not republished as a question bank. Learner-facing practice is original/generated.
Finance has a high-precision fixed-point decimal implementation, but some non-integer root/power paths can still use native-number seeding/fallback behavior. Public correctness certification should define and independently verify the required course tolerance rather than claiming arbitrary precision without qualification.
Small UI patterns are adapted from or inspired by React Bits. See THIRD_PARTY_NOTICES.md for attribution and license terms. The repository currently does not declare a project-wide license; that decision belongs to the repository owner.