{"record":{"id":"8c391c90d597ffdf","repo":"rohitg00/ai-engineering-from-scratch","slug":"window-must-be-positive","errorCode":null,"errorMessage":"window must be positive","messagePattern":"window must be positive","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"phases/19-capstone-projects/45-gradient-clipping-amp/code/main.py","lineNumber":310,"sourceCode":"            SkipLog(\n                step=self.global_step,\n                reason=reason,\n                pre_clip_norm=pre_clip,\n                loss=loss_value,\n                scaler_scale=float(self.scaler.get_scale()),\n            )\n        )\n        self.global_step += 1\n        if update_scaler:\n            self.scaler.update()\n        return record\n\n\ndef rolling_skip_rate(log: Iterable[StepLog], window: int = 1000) -> list[float]:\n    \"\"\"Return the rolling skip rate over the last `window` steps for each step.\"\"\"\n\n    if window <= 0:\n        raise ValueError(\"window must be positive\")\n    rows = list(log)\n    rates: list[float] = []\n    skipped: list[int] = []\n    for row in rows:\n        skipped.append(1 if row.skipped else 0)\n        if len(skipped) > window:\n            skipped = skipped[-window:]\n        rates.append(sum(skipped) / len(skipped))\n    return rates\n\n\ndef write_step_log_csv(log: Iterable[StepLog], path: Path) -> None:\n    \"\"\"Write the canonical training-step CSV.\n\n    Columns: step, lr, grad_l2_pre_clip, grad_l2_post_clip, loss, skipped,\n    skip_reason, scaler_scale.\n    \"\"\"\n","sourceCodeStart":292,"sourceCodeEnd":328,"githubUrl":"https://github.com/rohitg00/ai-engineering-from-scratch/blob/39ea8a1c6d0b61f071226eff7ede4d4105fed820/phases/19-capstone-projects/45-gradient-clipping-amp/code/main.py#L292-L328","documentation":"Error \"window must be positive\" thrown in rohitg00/ai-engineering-from-scratch.","triggerScenarios":"Thrown at phases/19-capstone-projects/45-gradient-clipping-amp/code/main.py:310 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"39ea8a1c6d0b61f071226eff7ede4d4105fed820","analyzedAt":"2026-08-26T03:13:46.626Z","schemaVersion":2},"datasetVersion":"2026-08-26T07:17:17.940Z"}