Skip to content

Add Section 3 - Add/Less to PM-L1 competition mock + assessment - #431

Merged
sg2499 merged 1 commit into
mainfrom
feature/pm-l1-section3-add-less-2026-08-04
Aug 4, 2026
Merged

Add Section 3 - Add/Less to PM-L1 competition mock + assessment#431
sg2499 merged 1 commit into
mainfrom
feature/pm-l1-section3-add-less-2026-08-04

Conversation

@sg2499

@sg2499 sg2499 commented Aug 4, 2026

Copy link
Copy Markdown
Owner

Adds Section 3 - Add/Less to PM-L1's mock and assessment workflows, covering the genuinely mixed add-and-subtract-in-the-same-question concepts from Lesson 1, Lesson 2, and Lesson 11 DPS5. Assessment section-omission left unchanged (doesn't exist for any module today, per product decision). 158/158 backend tests passing.

Adds a third section to PM-L1's mock exam and section-wise assessment
workflow, alongside the existing Section 1 - Addition and Section 2 -
Subtraction.

Section 3 - Add/Less covers the genuinely-mixed generation (both + and -
within the same question) that exists in exactly three places across
PM-L1's 15 lessons: Lesson 1's direct add-less (1D, 1D_AND_2D), Lesson 2's
direct add-less (2D_FULL, 3D_HUNDREDS, 3D_FULL), and Lesson 11 DPS5's
complement-of-10 add-less for target 5. Every other lesson is locked to a
single direction per lesson, so those stay exclusive to Sections 1/2 via
the existing operation-focus-split entries. Section 3's six concept-pool
entries reuse the same underlying DPS concepts with their native
operation_focus="ADD_LESS", verified end-to-end to produce both positive
and negative steps within the same question set (not a relabelled single
direction).

Changes:
- pm_competition_mock_generation_service.py: new PM_ADD_LESS section
  definition + _add_less_pool(), wired into
  PM_COMPETITION_SECTION_CONCEPT_POOLS. Structure name updated from
  PM_2_SECTION_* to PM_3_SECTION_*.
- competition_mock_generation_service.py: PM branch's section-plan
  structure label updated to match (the per-section split itself was
  already generic across N sections, no logic change needed).
- Assessment blueprint/engine services needed no changes -- they read
  PM_COMPETITION_LEVEL_REGISTRY's sectionDefinitions/sectionConceptPools
  generically, so Section 3 is picked up automatically for section-wise
  assessments too.
- Mock-side section omission (admin zeroing a section in the Section
  Allocation panel) already works generically for any number of PM
  sections via the shared _RedistributeSectionCounts/_DenseSectionNumbering
  utilities -- confirmed no PM-specific code was needed for this. Per
  explicit product decision, the assessment side is left as-is: it has
  no section-omission capability for any module today (full section
  coverage with count > 0 is required), and that is intentionally not
  changed here.

Tests: updated existing PM mock/assessment tests for the 3-section
structure (section splits, structure-name strings, full-coverage
validation, published-blueprint section counts), and added a new test
asserting each of Section 3's 6 concept-pool entries genuinely produces
both positive and negative operand steps across a sample. Full backend
suite: 158/158 passing.
@vercel

vercel Bot commented Aug 4, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
math-path-platform Ready Ready Preview Aug 4, 2026 2:56pm

@sg2499
sg2499 merged commit 8e708cf into main Aug 4, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant