Skip to content

test: add unit tests for skillopt.optimizer.scheduler (edit-budget schedulers)#123

Open
nankingjing wants to merge 1 commit into
microsoft:mainfrom
nankingjing:test-scheduler-core
Open

test: add unit tests for skillopt.optimizer.scheduler (edit-budget schedulers)#123
nankingjing wants to merge 1 commit into
microsoft:mainfrom
nankingjing:test-scheduler-core

Conversation

@nankingjing

Copy link
Copy Markdown

Summary

Add comprehensive unit tests for skillopt/optimizer/scheduler.py — the edit-budget schedulers that control how many skill edits are allowed per optimisation step (analogous to gradient clipping / learning-rate annealing in neural-network training).

This module had zero test coverage despite being a core part of the training loop. It is purely deterministic math with no LLM or network dependencies, making it ideal for precise unit tests.

Coverage

  • ConstantScheduler — step/state_dict/resume/arbitrary-step behaviour
  • LinearScheduler — decay sequence, monotonicity, bounds, resume consistency, degenerate cases (total_steps=0/1, max_lr==min_lr)
  • CosineScheduler — cosine annealing shape, midpoint exact value, early/late flat regions, monotonicity, bounds
  • AutonomousScheduler — always returns NO_LIMIT, state dict round-trip
  • build_scheduler — factory creates correct types, unknown mode raises ValueError
  • LRScheduler — abstract base cannot be instantiated directly

Style

Matches existing test conventions from tests/test_scoring.py and tests/test_types.py:

  • from __future__ import annotations
  • Class-based organisation with descriptive method names
  • pytest with pytest.raises for error paths

Verification

All test expectations are derived from the source formulas by reading — no execution was performed (tests cannot be run in this environment). Every arithmetic assertion has a comment deriving the expected value from the formula in scheduler.py.

Co-Authored-By: Claude noreply@anthropic.com

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