solarwindpy 0.0.1.dev0__py3-none-any.whl → 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of solarwindpy might be problematic. Click here for more details.

Files changed (412) hide show
  1. plans/.velocity/metrics.json +96 -0
  2. plans/0-overview-template.md +268 -0
  3. plans/N-phase-template.md +106 -0
  4. plans/PLAN_AUDIT_SUMMARY.md +173 -0
  5. plans/TEMPLATE-USAGE-GUIDE.md +198 -0
  6. plans/__init__.py +1 -0
  7. plans/abandoned/compaction-agent-system/0-Overview.md +123 -0
  8. plans/abandoned/compaction-agent-system/agents-index-update-plan.md +109 -0
  9. plans/abandoned/compaction-agent-system/compacted_state.md +85 -0
  10. plans/abandoned/compaction-agent-system/implementation-plan.md +107 -0
  11. plans/abandoned/compaction-agent-system/system-validation-report.md +159 -0
  12. plans/abandoned/compaction-agent-system/usage-guide.md +210 -0
  13. plans/abandoned/hook-system-enhancement/0-Overview.md +214 -0
  14. plans/abandoned/hook-system-enhancement/1-Phase1-Core-Infrastructure.md +313 -0
  15. plans/abandoned/hook-system-enhancement/2-Phase2-Intelligent-Testing.md +385 -0
  16. plans/abandoned/hook-system-enhancement/3-Phase3-Physics-Validation.md +444 -0
  17. plans/abandoned/hook-system-enhancement/4-Phase4-Performance-Monitoring.md +458 -0
  18. plans/abandoned/hook-system-enhancement/5-Phase5-Developer-Experience.md +532 -0
  19. plans/abandoned/hook-system-enhancement/6-Implementation-Timeline.md +274 -0
  20. plans/abandoned/hook-system-enhancement/7-Risk-Management.md +376 -0
  21. plans/abandoned/hook-system-enhancement/8-Testing-Strategy.md +579 -0
  22. plans/abandoned/readthedocs-automation/0-Overview.md +247 -0
  23. plans/abandoned/readthedocs-automation/1-Emergency-Documentation-Fixes.md +270 -0
  24. plans/abandoned/readthedocs-automation/2-Template-System-Enhancement.md +811 -0
  25. plans/abandoned/readthedocs-automation/3-Quality-Audit-ReadTheDocs-Integration.md +844 -0
  26. plans/abandoned/readthedocs-automation/4-Plan-Consolidation-Cleanup.md +632 -0
  27. plans/abandoned/readthedocs-automation/9-Closeout.md +207 -0
  28. plans/abandoned/readthedocs-automation/ABANDONMENT_REASON.md +72 -0
  29. plans/cicd-architecture-redesign/0-Overview.md +193 -0
  30. plans/cicd-architecture-redesign/1-Workflow-Creation.md +103 -0
  31. plans/cicd-architecture-redesign/2-Version-Detection.md +123 -0
  32. plans/cicd-architecture-redesign/3-Deployment-Gates.md +169 -0
  33. plans/cicd-architecture-redesign/4-RC-Testing.md +194 -0
  34. plans/cicd-architecture-redesign/5-TestPyPI-Validation.md +264 -0
  35. plans/cicd-architecture-redesign/6-Production-Release.md +263 -0
  36. plans/cicd-architecture-redesign/7-Cleanup.md +243 -0
  37. plans/cicd-architecture-redesign/8-Documentation.md +285 -0
  38. plans/cicd-architecture-redesign/Closeout.md +225 -0
  39. plans/closeout-template.md +259 -0
  40. plans/completed/circular-import-audit/0-Overview.md +152 -0
  41. plans/completed/circular-import-audit/1-Static-Dependency-Analysis.md +62 -0
  42. plans/completed/circular-import-audit/2-Dynamic-Import-Testing.md +56 -0
  43. plans/completed/circular-import-audit/3-Performance-Impact-Assessment.md +56 -0
  44. plans/completed/circular-import-audit/4-Issue-Remediation.md +78 -0
  45. plans/completed/circular-import-audit/5-Preventive-Infrastructure.md +89 -0
  46. plans/completed/claude-settings-ecosystem-alignment/0-Overview.md +162 -0
  47. plans/completed/claude-settings-ecosystem-alignment/1-Security-Foundation.md +148 -0
  48. plans/completed/claude-settings-ecosystem-alignment/2-Hook-Integration.md +158 -0
  49. plans/completed/claude-settings-ecosystem-alignment/3-Agent-System-Integration.md +177 -0
  50. plans/completed/claude-settings-ecosystem-alignment/4-Enhanced-Workflow-Automation.md +159 -0
  51. plans/completed/claude-settings-ecosystem-alignment/5-Validation-Monitoring.md +181 -0
  52. plans/completed/claude-settings-ecosystem-alignment/compacted_session_state.md +290 -0
  53. plans/completed/combined_plan_with_checklist_documentation/1-Overview-and-Goals.md +51 -0
  54. plans/completed/combined_plan_with_checklist_documentation/2-Toolchain-and-Hosting.md +69 -0
  55. plans/completed/combined_plan_with_checklist_documentation/3-Repository-Structure.md +61 -0
  56. plans/completed/combined_plan_with_checklist_documentation/4-Configuration-and-Standards.md +70 -0
  57. plans/completed/combined_plan_with_checklist_documentation/5-Documentation-Content.md +62 -0
  58. plans/completed/combined_plan_with_checklist_documentation/6-CI-CD-and-Validation.md +58 -0
  59. plans/completed/combined_plan_with_checklist_documentation/7-Maintenance.md +55 -0
  60. plans/completed/combined_test_plan_with_checklist_fitfunctions/0-Overview.md +135 -0
  61. plans/completed/combined_test_plan_with_checklist_fitfunctions/1-Common-fixtures.md +59 -0
  62. plans/completed/combined_test_plan_with_checklist_fitfunctions/10-power_laws.md +56 -0
  63. plans/completed/combined_test_plan_with_checklist_fitfunctions/2-core.py-FitFunction.md +118 -0
  64. plans/completed/combined_test_plan_with_checklist_fitfunctions/3-gaussians.py-Gaussian-GaussianNormalized-GaussianLn.md +69 -0
  65. plans/completed/combined_test_plan_with_checklist_fitfunctions/4-trend_fits.py-TrendFit.md +99 -0
  66. plans/completed/combined_test_plan_with_checklist_fitfunctions/5-plots.py-FFPlot.md +98 -0
  67. plans/completed/combined_test_plan_with_checklist_fitfunctions/6-tex_info.py-TeXinfo.md +79 -0
  68. plans/completed/combined_test_plan_with_checklist_fitfunctions/7-Justification.md +49 -0
  69. plans/completed/combined_test_plan_with_checklist_fitfunctions/8-exponentials.md +64 -0
  70. plans/completed/combined_test_plan_with_checklist_fitfunctions/9-lines.md +58 -0
  71. plans/completed/combined_test_plan_with_checklist_plotting/0-Overview.md +142 -0
  72. plans/completed/combined_test_plan_with_checklist_plotting/1-base.py.md +90 -0
  73. plans/completed/combined_test_plan_with_checklist_plotting/10-labels-special.py.md +102 -0
  74. plans/completed/combined_test_plan_with_checklist_plotting/11-labels-chemistry.py.md +212 -0
  75. plans/completed/combined_test_plan_with_checklist_plotting/12-labels-composition.py.md +242 -0
  76. plans/completed/combined_test_plan_with_checklist_plotting/13-labels-datetime.py.md +247 -0
  77. plans/completed/combined_test_plan_with_checklist_plotting/14-labels-elemental_abundance.py.md +274 -0
  78. plans/completed/combined_test_plan_with_checklist_plotting/15-visual-validation.md +256 -0
  79. plans/completed/combined_test_plan_with_checklist_plotting/16-integration-testing.md +266 -0
  80. plans/completed/combined_test_plan_with_checklist_plotting/17-performance-benchmarks.md +267 -0
  81. plans/completed/combined_test_plan_with_checklist_plotting/18-Fixtures-and-Utilities.md +86 -0
  82. plans/completed/combined_test_plan_with_checklist_plotting/2-agg_plot.py.md +90 -0
  83. plans/completed/combined_test_plan_with_checklist_plotting/3-histograms.py.md +201 -0
  84. plans/completed/combined_test_plan_with_checklist_plotting/4-scatter.py.md +167 -0
  85. plans/completed/combined_test_plan_with_checklist_plotting/5-spiral.py.md +216 -0
  86. plans/completed/combined_test_plan_with_checklist_plotting/6-orbits.py.md +108 -0
  87. plans/completed/combined_test_plan_with_checklist_plotting/7-tools.py.md +86 -0
  88. plans/completed/combined_test_plan_with_checklist_plotting/8-select_data_from_figure.py.md +97 -0
  89. plans/completed/combined_test_plan_with_checklist_plotting/9-labels-base.py.md +88 -0
  90. plans/completed/combined_test_plan_with_checklist_solar_activity/.gitkeep +0 -0
  91. plans/completed/combined_test_plan_with_checklist_solar_activity/0-Overview.md +170 -0
  92. plans/completed/combined_test_plan_with_checklist_solar_activity/1-Package-Entry-Point-__init__.py.md +121 -0
  93. plans/completed/combined_test_plan_with_checklist_solar_activity/2-Core-Base-Classes-base.py.md +142 -0
  94. plans/completed/combined_test_plan_with_checklist_solar_activity/3-Plotting-Helpers-plots.py.md +123 -0
  95. plans/completed/combined_test_plan_with_checklist_solar_activity/4-LISIRD-Sub-package.md +119 -0
  96. plans/completed/combined_test_plan_with_checklist_solar_activity/5-Extrema-Calculator.md +103 -0
  97. plans/completed/combined_test_plan_with_checklist_solar_activity/6-Sunspot-Number-Sub-package.md +163 -0
  98. plans/completed/combined_test_plan_with_checklist_solar_activity/7-Sunspot-Number-Init.py.md +217 -0
  99. plans/completed/combined_test_plan_with_checklist_solar_activity/compacted_state.md +52 -0
  100. plans/completed/compaction-agent-modernization/0-Overview.md +156 -0
  101. plans/completed/compaction-agent-modernization/1-Architecture-Audit-Gap-Analysis.md +132 -0
  102. plans/completed/compaction-agent-modernization/2-Token-Baseline-Recalibration.md +153 -0
  103. plans/completed/compaction-agent-modernization/3-Agent-Reference-Updates.md +184 -0
  104. plans/completed/compaction-agent-modernization/4-Compression-Algorithm-Modernization.md +238 -0
  105. plans/completed/compaction-agent-modernization/5-Workflow-Integration-Streamlining.md +252 -0
  106. plans/completed/compaction-agent-modernization/6-Template-Structure-Optimization.md +240 -0
  107. plans/completed/compaction-agent-modernization/7-Integration-Testing-Validation.md +292 -0
  108. plans/completed/compaction-hook-enhancement/0-Overview.md +150 -0
  109. plans/completed/compaction-hook-enhancement/1-Token-Estimation-Enhancement.md +179 -0
  110. plans/completed/compaction-hook-enhancement/2-Compression-Intelligence.md +294 -0
  111. plans/completed/compaction-hook-enhancement/3-Git-Integration-Metadata.md +310 -0
  112. plans/completed/compaction-hook-enhancement/4-Session-Continuity-Features.md +358 -0
  113. plans/completed/compaction-hook-enhancement/5-Testing-Strategy.md +404 -0
  114. plans/completed/compaction-hook-enhancement/6-Integration-Roadmap.md +319 -0
  115. plans/completed/compaction-hook-enhancement/compacted_state.md +142 -0
  116. plans/completed/docstring-audit-enhancement/0-Overview.md +274 -0
  117. plans/completed/docstring-audit-enhancement/1-Infrastructure-Setup-and-Validation-Tools.md +206 -0
  118. plans/completed/docstring-audit-enhancement/2-Core-Physics-Modules-Enhancement.md +237 -0
  119. plans/completed/docstring-audit-enhancement/3-Fitfunctions-Mathematical-Modules-Enhancement.md +188 -0
  120. plans/completed/docstring-audit-enhancement/4-Plotting-Visualization-Modules-Enhancement.md +243 -0
  121. plans/completed/docstring-audit-enhancement/5-Specialized-Modules-Enhancement.md +216 -0
  122. plans/completed/docstring-audit-enhancement/6-Validation-and-Integration.md +216 -0
  123. plans/completed/fitfunctions-testing-implementation/0-Overview.md +130 -0
  124. plans/completed/fitfunctions-testing-implementation/1-Test-Infrastructure-Setup.md +79 -0
  125. plans/completed/fitfunctions-testing-implementation/2-Common-Fixtures-Test-Utilities.md +104 -0
  126. plans/completed/fitfunctions-testing-implementation/3-Core-FitFunction-Testing.md +168 -0
  127. plans/completed/fitfunctions-testing-implementation/4-Specialized-Function-Classes.md +210 -0
  128. plans/completed/fitfunctions-testing-implementation/5-Advanced-Classes-Testing.md +214 -0
  129. plans/completed/fitfunctions-testing-implementation/6-Plotting-Integration-Testing.md +231 -0
  130. plans/completed/fitfunctions-testing-implementation/7-Extended-Coverage-BONUS.md +184 -0
  131. plans/completed/numpy-docstring-conversion-plan/numpy-docstring-conversion-plan.md +118 -0
  132. plans/completed/pr-review-remediation/0-Overview.md +138 -0
  133. plans/completed/pr-review-remediation/1-Critical-Safety-Improvements.md +179 -0
  134. plans/completed/pr-review-remediation/2-Smart-Timeouts-Validation.md +399 -0
  135. plans/completed/pr-review-remediation/3-Enhanced-GitHub-Integration.md +258 -0
  136. plans/completed/pr-review-remediation/compacted_state.md +66 -0
  137. plans/completed/python-310-migration/0-Overview.md +390 -0
  138. plans/completed/python-310-migration/1-Planning-Setup.md +164 -0
  139. plans/completed/python-310-migration/2-Implementation.md +256 -0
  140. plans/completed/python-310-migration/3-Testing-Validation.md +335 -0
  141. plans/completed/python-310-migration/4-Documentation-Release.md +274 -0
  142. plans/completed/python-310-migration/5-Closeout.md +252 -0
  143. plans/completed/requirements-management-consolidation/0-Overview.md +118 -0
  144. plans/completed/requirements-management-consolidation/1-Documentation-Validation-Environment-Setup.md +116 -0
  145. plans/completed/requirements-management-consolidation/2-Requirements-Consolidation.md +161 -0
  146. plans/completed/requirements-management-consolidation/3-Workflow-Automation-Final-Integration.md +196 -0
  147. plans/completed/single-ecosystem-plan-implementation/0-Overview.md +83 -0
  148. plans/completed/single-ecosystem-plan-implementation/1-Plan-Preservation-Session-Management.md +38 -0
  149. plans/completed/single-ecosystem-plan-implementation/2-File-Structure-Optimization.md +43 -0
  150. plans/completed/single-ecosystem-plan-implementation/3-Plan-Migration-Archive-Setup.md +82 -0
  151. plans/completed/single-ecosystem-plan-implementation/4-Agent-System-Transformation.md +108 -0
  152. plans/completed/single-ecosystem-plan-implementation/5-Template-System-Enhancement.md +131 -0
  153. plans/completed/single-ecosystem-plan-implementation/6-Final-Validation-Testing.md +120 -0
  154. plans/completed/test-directory-consolidation/0-Overview.md +51 -0
  155. plans/completed/test-directory-consolidation/1-Structure-Preparation.md +82 -0
  156. plans/completed/test-directory-consolidation/2-File-Migration.md +100 -0
  157. plans/completed/test-directory-consolidation/3-Import-Transformation.md +117 -0
  158. plans/completed/test-directory-consolidation/4-Configuration-Consolidation.md +140 -0
  159. plans/completed/test-directory-consolidation/5-Validation.md +152 -0
  160. plans/completed/test-directory-consolidation/6-Cleanup.md +156 -0
  161. plans/completed/test-planning-agents-architecture/0-Overview.md +79 -0
  162. plans/completed/test-planning-agents-architecture/1-Branch-Isolation-Testing.md +49 -0
  163. plans/completed/test-planning-agents-architecture/2-Cross-Branch-Coordination.md +51 -0
  164. plans/completed/test-planning-agents-architecture/3-Merge-Workflow-Testing.md +48 -0
  165. plans/deployment-semver-pypi-rtd/0-Overview.md +463 -0
  166. plans/deployment-semver-pypi-rtd/1-Semantic-Versioning-Foundation.md +136 -0
  167. plans/deployment-semver-pypi-rtd/2-PyPI-Deployment-Infrastructure.md +168 -0
  168. plans/deployment-semver-pypi-rtd/3-Release-Automation.md +214 -0
  169. plans/deployment-semver-pypi-rtd/4-Plan-Closeout.md +543 -0
  170. plans/deployment-semver-pypi-rtd/compacted_session_state.md +172 -0
  171. plans/deployment-semver-pypi-rtd/compacted_state.md +131 -0
  172. plans/documentation-code-audit/0-Overview.md +393 -0
  173. plans/documentation-code-audit/1-Discovery-Inventory.md +183 -0
  174. plans/documentation-code-audit/2-Execution-Environment-Setup.md +263 -0
  175. plans/documentation-code-audit/3-Systematic-Validation.md +322 -0
  176. plans/documentation-code-audit/4-Code-Example-Remediation.md +358 -0
  177. plans/documentation-code-audit/5-Physics-MultiIndex-Compliance.md +464 -0
  178. plans/documentation-code-audit/6-Doctest-Integration.md +523 -0
  179. plans/documentation-code-audit/7-Reporting-Documentation.md +498 -0
  180. plans/documentation-code-audit/8-Closeout.md +456 -0
  181. plans/documentation-rebuild-session/compacted_state.md +109 -0
  182. plans/documentation-rendering-fixes/0-Overview.md +104 -0
  183. plans/documentation-rendering-fixes/1-Sphinx-Build-Diagnostics-Warning-Audit.md +101 -0
  184. plans/documentation-rendering-fixes/2-Configuration-Infrastructure-Fixes.md +113 -0
  185. plans/documentation-rendering-fixes/3-Docstring-Syntax-Audit-Repair.md +131 -0
  186. plans/documentation-rendering-fixes/4-HTML-Page-Rendering-Verification.md +113 -0
  187. plans/documentation-rendering-fixes/5-Advanced-Documentation-Quality-Assurance.md +119 -0
  188. plans/documentation-rendering-fixes/6-Documentation-Build-Optimization-Testing.md +129 -0
  189. plans/documentation-rendering-fixes/compacted_state.md +132 -0
  190. plans/documentation-template-fix/0-Overview.md +197 -0
  191. plans/documentation-template-fix/1-Template-System-Analysis.md +269 -0
  192. plans/documentation-template-fix/2-Template-Modification.md +609 -0
  193. plans/documentation-template-fix/3-Build-System-Integration.md +766 -0
  194. plans/documentation-template-fix/4-Testing-Validation.md +1399 -0
  195. plans/documentation-template-fix/5-Documentation-Training.md +602 -0
  196. plans/documentation-workflow-fix/0-Overview.md +222 -0
  197. plans/documentation-workflow-fix/1-Immediate-Fixes.md +238 -0
  198. plans/documentation-workflow-fix/2-Configuration-Setup.md +298 -0
  199. plans/documentation-workflow-fix/3-Pre-commit-Integration.md +382 -0
  200. plans/documentation-workflow-fix/4-Workflow-Improvements.md +446 -0
  201. plans/documentation-workflow-fix/5-Documentation-and-Training.md +527 -0
  202. plans/duplicate-object-warnings-fix-plan.md +130 -0
  203. plans/github-issues-migration/0-Overview.md +510 -0
  204. plans/github-issues-migration/1-Foundation-Label-System.md +180 -0
  205. plans/github-issues-migration/2-Migration-Tool-Rewrite.md +235 -0
  206. plans/github-issues-migration/3-CLI-Integration-Automation.md +169 -0
  207. plans/github-issues-migration/4-Validated-Migration.md +252 -0
  208. plans/github-issues-migration/5-Documentation-Training.md +171 -0
  209. plans/github-issues-migration/6-Closeout.md +179 -0
  210. plans/github-workflows-repair/repair-plan.md +299 -0
  211. plans/issues_from_plans.py +342 -0
  212. plans/pr-270-doc-validation-fixes/0-Overview.md +354 -0
  213. plans/pr-270-doc-validation-fixes/1-Critical-PR-Fixes.md +117 -0
  214. plans/pr-270-doc-validation-fixes/2-Framework-Right-Sizing.md +129 -0
  215. plans/pr-270-doc-validation-fixes/3-Sustainable-Documentation.md +126 -0
  216. plans/pr-270-doc-validation-fixes/4-Closeout-Migration.md +143 -0
  217. plans/pr-270-doc-validation-fixes/PLAN_COMPLETED.md +149 -0
  218. plans/python-310-migration/0-Overview.md +390 -0
  219. plans/python-310-migration/1-Planning-Setup.md +164 -0
  220. plans/python-310-migration/2-Implementation.md +256 -0
  221. plans/python-310-migration/3-Testing-Validation.md +335 -0
  222. plans/python-310-migration/4-Documentation-Release.md +274 -0
  223. plans/python-310-migration/5-Closeout.md +252 -0
  224. plans/readthedocs-simplified/0-Overview.md +243 -0
  225. plans/readthedocs-simplified/1-Immediate-Fixes.md +216 -0
  226. plans/readthedocs-simplified/2-Template-Simplification.md +278 -0
  227. plans/readthedocs-simplified/3-ReadTheDocs-Setup.md +298 -0
  228. plans/readthedocs-simplified/4-Testing-Validation.md +328 -0
  229. plans/readthedocs-simplified/5-Closeout.md +231 -0
  230. plans/readthedocs-simplified/compacted_state.md +127 -0
  231. plans/session-compaction-2025-08-12/compacted_state.md +114 -0
  232. plans/session-compaction-2025-08-13/compacted_state.md +145 -0
  233. plans/session-continuity-protocol/0-Overview.md +35 -0
  234. plans/session-continuity-protocol/1-Core-Principles-Framework.md +40 -0
  235. plans/session-continuity-protocol/2-Pre-Session-Validation-System.md +79 -0
  236. plans/session-continuity-protocol/3-Context-Switching-Prevention.md +87 -0
  237. plans/session-continuity-protocol/4-Progress-Tracking-Recovery.md +100 -0
  238. plans/sphinx-warnings-analysis.md +222 -0
  239. plans/systemprompt-optimization/0-Overview.md +447 -0
  240. plans/systemprompt-optimization/1-Deploy-SystemPrompt.md +114 -0
  241. plans/systemprompt-optimization/2-Documentation-Alignment.md +198 -0
  242. plans/systemprompt-optimization/3-Monitoring-Infrastructure.md +396 -0
  243. plans/systemprompt-optimization/4-Implementation-Script.md +450 -0
  244. plans/systemprompt-optimization/9-Closeout.md +165 -0
  245. plans/systemprompt-optimization/compacted_state.md +143 -0
  246. plans/template-value-propositions/0-Overview.md +357 -0
  247. plans/template-value-propositions/1-Value-Proposition-Framework-Design.md +144 -0
  248. plans/template-value-propositions/2-Plan-Template-Enhancement.md +178 -0
  249. plans/template-value-propositions/3-Value-Generator-Hook-Implementation.md +291 -0
  250. plans/template-value-propositions/4-Value-Validator-Hook-Implementation.md +274 -0
  251. plans/template-value-propositions/5-Documentation-Agent-Updates.md +219 -0
  252. plans/template-value-propositions/6-Integration-Testing-Validation.md +247 -0
  253. plans/tests-audit/0-Overview.md +410 -0
  254. plans/tests-audit/1-Discovery-Inventory.md +170 -0
  255. plans/tests-audit/2-Physics-Validation-Audit.md +195 -0
  256. plans/tests-audit/3-Architecture-Compliance.md +195 -0
  257. plans/tests-audit/4-Numerical-Stability-Analysis.md +203 -0
  258. plans/tests-audit/5-Documentation-Enhancement.md +220 -0
  259. plans/tests-audit/6-Audit-Deliverables.md +220 -0
  260. plans/tests-audit/7-Closeout.md +252 -0
  261. plans/tests-audit/artifacts/ARCHITECTURE_COMPLIANCE_REPORT.md +315 -0
  262. plans/tests-audit/artifacts/ARCHITECTURE_RECOMMENDATIONS.md +943 -0
  263. plans/tests-audit/artifacts/COMPREHENSIVE_AUDIT_REPORT.md +356 -0
  264. plans/tests-audit/artifacts/CONTRIBUTING_ENHANCED_TEMPLATE.md +419 -0
  265. plans/tests-audit/artifacts/COVERAGE_GAP_ANALYSIS.md +152 -0
  266. plans/tests-audit/artifacts/DOCUMENTATION_ENHANCEMENT_REPORT.md +502 -0
  267. plans/tests-audit/artifacts/EXECUTIVE_AUDIT_SUMMARY.md +129 -0
  268. plans/tests-audit/artifacts/IMPLEMENTATION_ROADMAP.md +647 -0
  269. plans/tests-audit/artifacts/NUMERICAL_RECOMMENDATIONS.md +739 -0
  270. plans/tests-audit/artifacts/NUMERICAL_STABILITY_GUIDE_TEMPLATE.rst +451 -0
  271. plans/tests-audit/artifacts/NUMERICAL_STABILITY_REPORT.md +301 -0
  272. plans/tests-audit/artifacts/PHASE_3_SUMMARY.md +280 -0
  273. plans/tests-audit/artifacts/PHASE_4_SUMMARY.md +229 -0
  274. plans/tests-audit/artifacts/PHASE_5_SUMMARY.md +292 -0
  275. plans/tests-audit/artifacts/PHASE_6_CLOSEOUT.md +278 -0
  276. plans/tests-audit/artifacts/PHYSICS_GUIDE_TEMPLATE.rst +268 -0
  277. plans/tests-audit/artifacts/PHYSICS_VALIDATION_REPORT.md +235 -0
  278. plans/tests-audit/artifacts/TECHNICAL_DELIVERABLES_PACKAGE.md +2502 -0
  279. plans/tests-audit/artifacts/TEST_INVENTORY.csv +1204 -0
  280. plans/tests-audit/artifacts/TEST_INVENTORY.md +135 -0
  281. plans/tests-audit/artifacts/test_discovery_analysis.py +231 -0
  282. plans/tests-audit/artifacts/test_parser.py +395 -0
  283. solarwindpy/README.md +3 -0
  284. solarwindpy/Untitled.ipynb +54 -0
  285. solarwindpy/__init__.py +74 -0
  286. solarwindpy/core/__init__.py +23 -0
  287. solarwindpy/core/alfvenic_turbulence.py +804 -0
  288. solarwindpy/core/base.py +267 -0
  289. solarwindpy/core/ions.py +309 -0
  290. solarwindpy/core/plasma.py +2133 -0
  291. solarwindpy/core/spacecraft.py +256 -0
  292. solarwindpy/core/tensor.py +90 -0
  293. solarwindpy/core/units_constants.py +199 -0
  294. solarwindpy/core/vector.py +328 -0
  295. solarwindpy/fitfunctions/__init__.py +20 -0
  296. solarwindpy/fitfunctions/core.py +734 -0
  297. solarwindpy/fitfunctions/exponentials.py +188 -0
  298. solarwindpy/fitfunctions/gaussians.py +264 -0
  299. solarwindpy/fitfunctions/lines.py +116 -0
  300. solarwindpy/fitfunctions/moyal.py +71 -0
  301. solarwindpy/fitfunctions/plots.py +751 -0
  302. solarwindpy/fitfunctions/power_laws.py +209 -0
  303. solarwindpy/fitfunctions/tex_info.py +568 -0
  304. solarwindpy/fitfunctions/trend_fits.py +482 -0
  305. solarwindpy/instabilities/__init__.py +16 -0
  306. solarwindpy/instabilities/beta_ani.py +82 -0
  307. solarwindpy/instabilities/verscharen2016.py +631 -0
  308. solarwindpy/plotting/__init__.py +33 -0
  309. solarwindpy/plotting/agg_plot.py +489 -0
  310. solarwindpy/plotting/base.py +465 -0
  311. solarwindpy/plotting/hist1d.py +405 -0
  312. solarwindpy/plotting/hist2d.py +1035 -0
  313. solarwindpy/plotting/histograms.py +1845 -0
  314. solarwindpy/plotting/labels/__init__.py +104 -0
  315. solarwindpy/plotting/labels/base.py +686 -0
  316. solarwindpy/plotting/labels/chemistry.py +19 -0
  317. solarwindpy/plotting/labels/composition.py +100 -0
  318. solarwindpy/plotting/labels/datetime.py +235 -0
  319. solarwindpy/plotting/labels/elemental_abundance.py +73 -0
  320. solarwindpy/plotting/labels/special.py +794 -0
  321. solarwindpy/plotting/orbits.py +515 -0
  322. solarwindpy/plotting/scatter.py +99 -0
  323. solarwindpy/plotting/select_data_from_figure.py +329 -0
  324. solarwindpy/plotting/spiral.py +980 -0
  325. solarwindpy/plotting/tools.py +434 -0
  326. solarwindpy/scripts/__init__.py +1 -0
  327. solarwindpy/scripts/logs/.gitignore +1 -0
  328. solarwindpy/solar_activity/__init__.py +53 -0
  329. solarwindpy/solar_activity/base.py +605 -0
  330. solarwindpy/solar_activity/lisird/__init__.py +3 -0
  331. solarwindpy/solar_activity/lisird/extrema_calculator.py +394 -0
  332. solarwindpy/solar_activity/lisird/lisird.py +319 -0
  333. solarwindpy/solar_activity/plots.py +116 -0
  334. solarwindpy/solar_activity/sunspot_number/.DS_Store +0 -0
  335. solarwindpy/solar_activity/sunspot_number/__init__.py +3 -0
  336. solarwindpy/solar_activity/sunspot_number/sidc.py +556 -0
  337. solarwindpy/solar_activity/sunspot_number/ssn_extrema.csv +72 -0
  338. solarwindpy/solar_activity/sunspot_number/ssn_extrema.csv.silso +72 -0
  339. solarwindpy/tools/__init__.py +162 -0
  340. solarwindpy-0.1.0.dist-info/METADATA +181 -0
  341. solarwindpy-0.1.0.dist-info/RECORD +409 -0
  342. {solarwindpy-0.0.1.dev0.dist-info → solarwindpy-0.1.0.dist-info}/WHEEL +1 -1
  343. solarwindpy-0.1.0.dist-info/licenses/LICENSE.rst +32 -0
  344. solarwindpy-0.1.0.dist-info/top_level.txt +3 -0
  345. tests/__init__.py +1 -0
  346. tests/conftest.py +10 -0
  347. tests/core/__init__.py +1 -0
  348. tests/core/test_alfvenic_turbulence.py +544 -0
  349. tests/core/test_base.py +112 -0
  350. tests/core/test_base_head_tail.py +29 -0
  351. tests/core/test_base_mi_tuples.py +11 -0
  352. tests/core/test_core_verify_datetimeindex.py +32 -0
  353. tests/core/test_ions.py +325 -0
  354. tests/core/test_plasma.py +2581 -0
  355. tests/core/test_plasma_io.py +12 -0
  356. tests/core/test_quantities.py +507 -0
  357. tests/core/test_spacecraft.py +210 -0
  358. tests/core/test_units_constants.py +22 -0
  359. tests/data/epoch.csv +4 -0
  360. tests/data/plasma.csv +4 -0
  361. tests/data/spacecraft.csv +4 -0
  362. tests/fitfunctions/conftest.py +60 -0
  363. tests/fitfunctions/test_core.py +193 -0
  364. tests/fitfunctions/test_exponentials.py +342 -0
  365. tests/fitfunctions/test_gaussians.py +142 -0
  366. tests/fitfunctions/test_lines.py +349 -0
  367. tests/fitfunctions/test_moyal.py +258 -0
  368. tests/fitfunctions/test_plots.py +258 -0
  369. tests/fitfunctions/test_power_laws.py +365 -0
  370. tests/fitfunctions/test_tex_info.py +183 -0
  371. tests/fitfunctions/test_trend_fit_properties.py +31 -0
  372. tests/fitfunctions/test_trend_fits.py +244 -0
  373. tests/plotting/__init__.py +1 -0
  374. tests/plotting/labels/__init__.py +1 -0
  375. tests/plotting/labels/test_chemistry.py +243 -0
  376. tests/plotting/labels/test_composition.py +345 -0
  377. tests/plotting/labels/test_datetime.py +445 -0
  378. tests/plotting/labels/test_elemental_abundance.py +366 -0
  379. tests/plotting/labels/test_init.py +66 -0
  380. tests/plotting/labels/test_labels_base.py +347 -0
  381. tests/plotting/labels/test_special.py +550 -0
  382. tests/plotting/test_agg_plot.py +602 -0
  383. tests/plotting/test_base.py +752 -0
  384. tests/plotting/test_fixtures_utilities.py +775 -0
  385. tests/plotting/test_histograms.py +546 -0
  386. tests/plotting/test_integration.py +675 -0
  387. tests/plotting/test_orbits.py +435 -0
  388. tests/plotting/test_performance.py +708 -0
  389. tests/plotting/test_scatter.py +752 -0
  390. tests/plotting/test_select_data_from_figure.py +1209 -0
  391. tests/plotting/test_spiral.py +573 -0
  392. tests/plotting/test_tools.py +607 -0
  393. tests/plotting/test_visual_validation.py +465 -0
  394. tests/solar_activity/__init__.py +1 -0
  395. tests/solar_activity/lisird/__init__.py +1 -0
  396. tests/solar_activity/lisird/test_extrema_calculator.py +593 -0
  397. tests/solar_activity/lisird/test_lisird_id.py +187 -0
  398. tests/solar_activity/sunspot_number/__init__.py +1 -0
  399. tests/solar_activity/sunspot_number/test_init.py +399 -0
  400. tests/solar_activity/sunspot_number/test_sidc.py +465 -0
  401. tests/solar_activity/sunspot_number/test_sidc_id.py +223 -0
  402. tests/solar_activity/sunspot_number/test_sidc_loader.py +275 -0
  403. tests/solar_activity/sunspot_number/test_ssn_extrema.py +406 -0
  404. tests/solar_activity/test_base.py +656 -0
  405. tests/solar_activity/test_init.py +396 -0
  406. tests/solar_activity/test_plots.py +371 -0
  407. tests/test_circular_imports.py +408 -0
  408. tests/test_issue_titles.py +25 -0
  409. tests/test_statusline.py +298 -0
  410. solarwindpy-0.0.1.dev0.dist-info/METADATA +0 -14
  411. solarwindpy-0.0.1.dev0.dist-info/RECORD +0 -4
  412. solarwindpy-0.0.1.dev0.dist-info/top_level.txt +0 -1
@@ -0,0 +1,342 @@
1
+ #!/usr/bin/env python3
2
+ """Create GitHub issues from plan files.
3
+
4
+ The script parses markdown files under ``solarwindpy/plans`` that contain
5
+ YAML frontmatter and converts them into GitHub issues. Frontmatter fields
6
+ ``name``, ``about`` and ``labels`` are used for the issue metadata while the
7
+ markdown content beginning with ``## 🧠 Context`` becomes the issue body. The
8
+ final issue title combines the containing directory name with any numeric
9
+ prefix in the filename to preserve ordering. Optionally a specific
10
+ subdirectory can be scanned via the ``-d/--directory`` CLI argument.
11
+ Authentication uses a token supplied via ``--token`` or the ``GITHUB_TOKEN_SOLARWINDPY``.
12
+ """
13
+
14
+ from __future__ import annotations
15
+
16
+ import argparse
17
+ import logging
18
+ import os
19
+ import re
20
+ import subprocess
21
+ from pathlib import Path
22
+ from typing import Dict, List, Optional, Tuple
23
+
24
+ import requests
25
+ import yaml
26
+ from tabulate import tabulate
27
+
28
+ GITHUB_API = "https://api.github.com"
29
+
30
+
31
+ def load_markdown_plan(path: Path) -> Dict[str, object]:
32
+ """Parse a markdown plan file.
33
+
34
+ Parameters
35
+ ----------
36
+ path : Path
37
+ Location of the markdown file.
38
+
39
+ Returns
40
+ -------
41
+ dict
42
+ Dictionary with ``name``, ``about``, ``labels`` and ``body`` keys.
43
+ """
44
+
45
+ text = path.read_text(encoding="utf-8")
46
+ if not text.startswith("---"):
47
+ raise ValueError(f"No YAML frontmatter found in {path}")
48
+
49
+ _, fm, rest = text.split("---", 2)
50
+ meta = yaml.safe_load(fm)
51
+
52
+ context_index = rest.find("## 🧠 Context")
53
+ body = rest[context_index:].lstrip() if context_index != -1 else rest.lstrip("\n")
54
+
55
+ return {
56
+ "name": meta.get("name", "").strip(),
57
+ "about": meta.get("about", "").strip(),
58
+ "labels": meta.get("labels", []),
59
+ "body": body,
60
+ }
61
+
62
+
63
+ def fetch_existing_issue_titles(owner: str, repo: str, token: str) -> List[str]:
64
+ """Retrieve titles of all issues in a repository.
65
+
66
+ Parameters
67
+ ----------
68
+ owner : str
69
+ GitHub organization or username.
70
+ repo : str
71
+ GitHub repository name.
72
+ token : str
73
+ Personal access token.
74
+
75
+ Returns
76
+ -------
77
+ list of str
78
+ Titles of existing issues (open and closed).
79
+ """
80
+
81
+ titles: List[str] = []
82
+ headers = {"Authorization": f"token {token}"}
83
+ page = 1
84
+ while True:
85
+ params = {"state": "all", "per_page": 100, "page": page}
86
+ url = f"{GITHUB_API}/repos/{owner}/{repo}/issues"
87
+ resp = requests.get(url, headers=headers, params=params)
88
+ resp.raise_for_status()
89
+ data = resp.json()
90
+ if not data:
91
+ break
92
+ titles.extend(issue["title"] for issue in data)
93
+ page += 1
94
+ return titles
95
+
96
+
97
+ def create_issue(
98
+ owner: str, repo: str, token: str, title: str, body: str, labels: List[str]
99
+ ) -> Dict[str, object]:
100
+ """Create a GitHub issue.
101
+
102
+ Parameters
103
+ ----------
104
+ owner, repo, token, title, body, labels : str or list of str
105
+ Standard GitHub issue parameters.
106
+
107
+ Returns
108
+ -------
109
+ dict
110
+ Response JSON from GitHub API.
111
+ """
112
+
113
+ url = f"{GITHUB_API}/repos/{owner}/{repo}/issues"
114
+ headers = {
115
+ "Authorization": f"token {token}",
116
+ "Accept": "application/vnd.github.v3+json",
117
+ }
118
+ payload = {"title": title, "body": body, "labels": labels}
119
+ resp = requests.post(url, json=payload, headers=headers)
120
+ resp.raise_for_status()
121
+ return resp.json()
122
+
123
+
124
+ def infer_owner_repo() -> Tuple[Optional[str], Optional[str]]:
125
+ """Infer repository information from the local Git remote.
126
+
127
+ Returns
128
+ -------
129
+ tuple of (str or None, str or None)
130
+ Repository owner and name if available.
131
+ """
132
+
133
+ try:
134
+ url = subprocess.check_output(
135
+ ["git", "remote", "get-url", "origin"],
136
+ text=True,
137
+ ).strip()
138
+ except Exception: # pragma: no cover - best effort
139
+ return None, None
140
+
141
+ if url.startswith("git@"):
142
+ _, path = url.split(":", 1)
143
+ elif "github.com/" in url:
144
+ path = url.split("github.com/", 1)[1]
145
+ else:
146
+ return None, None
147
+
148
+ if path.endswith(".git"):
149
+ path = path[:-4]
150
+
151
+ parts = path.strip("/").split("/")
152
+ if len(parts) != 2:
153
+ return None, None
154
+ return parts[0], parts[1]
155
+
156
+
157
+ def find_plan_files(subdir: Optional[str] = None) -> List[Path]:
158
+ """Recursively locate plan markdown files.
159
+
160
+ Parameters
161
+ ----------
162
+ subdir : str, optional
163
+ Specific directory under the plans folder to search.
164
+
165
+ Returns
166
+ -------
167
+ list of Path
168
+ Markdown files excluding ``pre_combination_files``.
169
+ """
170
+
171
+ root = Path(__file__).resolve().parent
172
+ search_root = root / subdir if subdir else root
173
+ if not search_root.exists():
174
+ raise FileNotFoundError(f"Directory {search_root} does not exist")
175
+ files = [
176
+ p for p in search_root.rglob("*.md") if "pre_combination_files" not in p.parts
177
+ ]
178
+ return sorted(files, key=lambda p: p.name)
179
+
180
+
181
+ def infer_issue_title(path: Path, name: str) -> str:
182
+ """Construct an issue title from directory and file names.
183
+
184
+ Parameters
185
+ ----------
186
+ path : Path
187
+ Location of the markdown file.
188
+ name : str
189
+ Title from the YAML frontmatter. When provided, it is combined with
190
+ the numeric prefix from ``path``.
191
+
192
+ Returns
193
+ -------
194
+ str
195
+ Issue title in the form ``"<Directory> – <number> <name>"``. If
196
+ ``name`` is empty the filename (with hyphens/underscores replaced by
197
+ spaces) is used.
198
+ """
199
+
200
+ dir_name = path.parent.name
201
+ dir_title = " ".join(
202
+ part.capitalize() for part in re.split(r"[-_]", dir_name) if part
203
+ )
204
+
205
+ stem_parts = re.split(r"[-_]", path.stem)
206
+ number = stem_parts[0] if stem_parts and stem_parts[0].isdigit() else ""
207
+
208
+ if name:
209
+ n = name.strip()
210
+ # Remove any leading directory/plan name and keep only the final part after the last dash or en dash
211
+ if "–" in n:
212
+ n = n.split("–")[-1].strip()
213
+ elif "-" in n:
214
+ n = n.split("-")[-1].strip()
215
+ # Remove any repeated directory/plan name at the start of n
216
+ if n.lower().startswith(dir_title.lower()):
217
+ n = n[len(dir_title):].lstrip(" -–")
218
+ title_part = f"{number} {n}".strip() if number else n
219
+ else:
220
+ title_part = " ".join(stem_parts)
221
+
222
+ return f"{dir_title} – {title_part}".strip()
223
+
224
+
225
+ def format_summary_table(rows: List[Tuple[str, str]]) -> str:
226
+ """Build a tabulated summary of issue creation outcomes.
227
+
228
+ Parameters
229
+ ----------
230
+ rows : list of tuple of str
231
+ Each tuple is a ``(status, detail)`` pair.
232
+
233
+ Returns
234
+ -------
235
+ str
236
+ Formatted table using :mod:`tabulate`. Returns a message when ``rows`` is
237
+ empty.
238
+ """
239
+
240
+ if not rows:
241
+ return "No actions performed."
242
+
243
+ return tabulate(rows, headers=["Status", "Detail"], tablefmt="github")
244
+
245
+
246
+ def main() -> None:
247
+ """CLI entry point for converting plans into GitHub issues."""
248
+
249
+ parser = argparse.ArgumentParser(
250
+ description="Create GitHub issues from Markdown plans.",
251
+ )
252
+ parser.add_argument(
253
+ "--owner",
254
+ help="GitHub organization or username",
255
+ )
256
+ parser.add_argument(
257
+ "--repo",
258
+ help="GitHub repository name",
259
+ )
260
+ parser.add_argument(
261
+ "-d",
262
+ "--directory",
263
+ help="Subdirectory under plans to search for markdown files",
264
+ )
265
+ parser.add_argument(
266
+ "--token",
267
+ help="GitHub personal access token; falls back to env vars",
268
+ )
269
+ args = parser.parse_args()
270
+
271
+ token = (
272
+ args.token
273
+ or os.getenv("GITHUB_TOKEN_SOLARWINDPY")
274
+ )
275
+ if not token:
276
+ raise SystemExit(
277
+ "GitHub access token not provided. Use --token or set GITHUB_TOKEN_SOLARWINDPY"
278
+ "/GH_TOKEN/GITHUB_ACCESS_TOKEN."
279
+ )
280
+
281
+ log_dir = Path(__file__).resolve().parent.parent / "scripts" / "logs"
282
+ log_dir.mkdir(parents=True, exist_ok=True)
283
+ log_file = log_dir / "issues_from_plans.log"
284
+ logging.basicConfig(
285
+ level=logging.INFO,
286
+ format="%(asctime)s [%(levelname)s] %(message)s",
287
+ handlers=[logging.FileHandler(log_file), logging.StreamHandler()],
288
+ )
289
+
290
+ owner = args.owner
291
+ repo = args.repo
292
+ if not owner or not repo:
293
+ git_owner, git_repo = infer_owner_repo()
294
+ owner = owner or git_owner
295
+ repo = repo or git_repo
296
+ if not owner or not repo:
297
+ logging.error("Repository owner and name must be provided")
298
+ raise SystemExit(1)
299
+
300
+ summary_rows: List[Tuple[str, str]] = []
301
+
302
+ try:
303
+ plan_files = find_plan_files(args.directory)
304
+ except FileNotFoundError as err:
305
+ logging.error(err)
306
+ raise SystemExit(1)
307
+ if not plan_files:
308
+ msg = "No markdown files found in plans directory"
309
+ logging.warning(msg)
310
+ summary_rows.append(("Warning", msg))
311
+ else:
312
+ logging.info("Found %d plan files", len(plan_files))
313
+ existing_titles = set(fetch_existing_issue_titles(owner, repo, token))
314
+ for path in plan_files:
315
+ try:
316
+ plan = load_markdown_plan(path)
317
+ title = infer_issue_title(path, plan["name"])
318
+ body = plan["body"]
319
+ labels = plan["labels"]
320
+
321
+ if title in existing_titles:
322
+ logging.info("Skipping '%s': issue already exists", title)
323
+ summary_rows.append(("Exists", title))
324
+ continue
325
+
326
+ issue = create_issue(owner, repo, token, title, body, labels)
327
+ logging.info("Created issue #%d '%s'", issue["number"], title)
328
+ summary_rows.append(("Created", f"{title} (#{issue['number']})"))
329
+
330
+ except Exception as err: # noqa: BLE001 - logging the error
331
+ logging.error("Failed on %s: %s", path, err)
332
+ summary_rows.append(("Error", f"{path.name}: {err}"))
333
+
334
+ table = format_summary_table(summary_rows)
335
+
336
+ logging.info("\n%s", table)
337
+ with log_file.open("a", encoding="utf-8") as fh:
338
+ fh.write(table + "\n")
339
+
340
+
341
+ if __name__ == "__main__":
342
+ main()
@@ -0,0 +1,354 @@
1
+ # PR #270 Documentation Validation Fixes - Overview
2
+
3
+ ## Plan Metadata
4
+ - **Plan Name**: PR #270 Documentation Validation Fixes and Framework Right-Sizing
5
+ - **Created**: 2025-08-21
6
+ - **Branch**: plan/pr-270-doc-validation-fixes
7
+ - **Implementation Branch**: feature/pr-270-doc-validation-fixes
8
+ - **PlanManager**: UnifiedPlanCoordinator
9
+ - **PlanImplementer**: UnifiedPlanCoordinator
10
+ - **Structure**: Multi-Phase
11
+ - **Total Phases**: 4
12
+ - **Dependencies**: None
13
+ - **Affects**: .github/workflows/, .readthedocs.yaml, scripts/doc_validation/, docs/, tests/
14
+ - **Estimated Duration**: 6-8 hours
15
+ - **Status**: Planning
16
+
17
+ ## Phase Overview
18
+ - [ ] **Phase 1: Critical PR Check Fixes** (Est: 2-3 hours) - Fix GitHub Actions v3→v4, doc8 linting, ReadTheDocs failures
19
+ - [ ] **Phase 2: Framework Right-Sizing** (Est: 2-3 hours) - Consolidate 3000→300 lines validation code, archive over-engineering
20
+ - [ ] **Phase 3: Sustainable Documentation Process** (Est: 1-2 hours) - Create minimal validation, update guidelines
21
+ - [ ] **Phase 4: Closeout and Migration** (Est: 1 hour) - Verify functionality, create transition guide
22
+
23
+ ## Phase Files
24
+ 1. [1-Critical-PR-Fixes.md](./1-Critical-PR-Fixes.md)
25
+ 2. [2-Framework-Right-Sizing.md](./2-Framework-Right-Sizing.md)
26
+ 3. [3-Sustainable-Documentation.md](./3-Sustainable-Documentation.md)
27
+ 4. [4-Closeout-Migration.md](./4-Closeout-Migration.md)
28
+
29
+ ## 🎯 Objective
30
+ Fix PR #270 failures and right-size the documentation validation framework from over-engineered 3000+ lines to appropriate ~300 lines for a scientific Python package with 47 documentation examples.
31
+
32
+ ## 🧠 Context
33
+ **Current Situation:**
34
+ - PR #270 has multiple check failures: GitHub Actions v3 deprecation, doc8 linting errors, ReadTheDocs build failures
35
+ - Documentation validation framework is over-engineered: 3000+ lines of code for 47 examples with 85.7% failure rate
36
+ - Framework complexity exceeds requirements for scientific package documentation needs
37
+ - Maintenance burden is unsustainable for project scope and team size
38
+
39
+ **Problem Analysis:**
40
+ - GitHub Actions using deprecated artifacts/upload-artifact@v3 → needs v4 migration
41
+ - doc8 linting failures: trailing whitespace and line length violations
42
+ - ReadTheDocs build failures need diagnosis and resolution
43
+ - Validation framework designed for enterprise-scale documentation (1000+ examples) applied to research package (47 examples)
44
+
45
+ ## 🔧 Technical Requirements
46
+ - GitHub Actions: artifacts/upload-artifact@v4
47
+ - doc8: trailing whitespace and line length compliance
48
+ - ReadTheDocs: working build pipeline
49
+ - Python 3.9-3.11 compatibility
50
+ - Simplified validation framework: ~300 lines total
51
+ - Maintain existing doctest functionality
52
+ - Preserve CI/CD integration points
53
+
54
+ ## 📂 Affected Areas
55
+ **CI/CD Infrastructure:**
56
+ - `.github/workflows/doctest-validation.yml`
57
+ - `.github/workflows/documentation.yml`
58
+ - `.readthedocs.yaml`
59
+
60
+ **Validation Framework:**
61
+ - `scripts/doc_validation/` (consolidation target)
62
+ - `scripts/validation_framework/` (archive candidate)
63
+ - `scripts/doctest_runner.py` (simplify)
64
+
65
+ **Documentation:**
66
+ - `docs/` (formatting fixes)
67
+ - Contributor guidelines
68
+ - Maintenance procedures
69
+
70
+ ## ✅ Acceptance Criteria
71
+ - [ ] All PR #270 checks passing (GitHub Actions, doc8, ReadTheDocs)
72
+ - [ ] Documentation validation framework reduced from 3000+ to ~300 lines
73
+ - [ ] 90% reduction in framework complexity while maintaining core functionality
74
+ - [ ] All existing doctest examples continue to work
75
+ - [ ] Sustainable maintenance approach documented
76
+ - [ ] Clear migration path from over-engineered to right-sized solution
77
+ - [ ] CI/CD pipeline streamlined and efficient
78
+ - [ ] ReadTheDocs building successfully
79
+
80
+ ## 🧪 Testing Strategy
81
+ **Validation Approach:**
82
+ 1. **PR Check Verification**: All GitHub Actions workflows pass
83
+ 2. **Documentation Build**: ReadTheDocs builds without errors
84
+ 3. **Example Execution**: Core doctest examples execute successfully
85
+ 4. **Framework Functionality**: Simplified validation maintains essential features
86
+ 5. **Integration Testing**: CI/CD pipeline operates efficiently
87
+
88
+ **Quality Gates:**
89
+ - GitHub Actions workflows complete successfully
90
+ - doc8 linting passes without violations
91
+ - ReadTheDocs build and deployment succeeds
92
+ - Essential doctest examples (physics core) execute correctly
93
+ - Framework complexity metrics show 90% reduction
94
+
95
+ ## 📊 Value Proposition Analysis
96
+
97
+ ### Scientific Software Development Value
98
+ **Research Efficiency Improvements:**
99
+ - **tests/**: High impact on code quality and reliability
100
+ - **docs/**: Medium impact on user adoption and learning
101
+
102
+ **Development Quality Enhancements:**
103
+ - Systematic evaluation of plan impact on scientific workflows
104
+ - Enhanced decision-making through quantified value metrics
105
+ - Improved coordination with SolarWindPy's physics validation system
106
+
107
+ ### Developer Productivity Value
108
+ **Planning Efficiency:**
109
+ - **Manual Planning Time**: ~180 minutes for 4 phases
110
+ - **Automated Planning Time**: ~35 minutes with value propositions
111
+ - **Time Savings**: 145 minutes (81% reduction)
112
+ - **Reduced Cognitive Load**: Systematic framework eliminates ad-hoc analysis
113
+
114
+ **Token Usage Optimization:**
115
+ - **Manual Proposition Writing**: ~1800 tokens
116
+ - **Automated Hook Generation**: ~300 tokens
117
+ - **Net Savings**: 1500 tokens (83% reduction)
118
+ - **Session Extension**: Approximately 15 additional minutes of productive work
119
+
120
+ ## 💰 Resource & Cost Analysis
121
+
122
+ ### Development Investment
123
+ **Implementation Time Breakdown:**
124
+ - **Base estimate**: 8 hours (moderate plan)
125
+ - **Complexity multiplier**: 0.9x
126
+ - **Final estimate**: 7.2 hours
127
+ - **Confidence interval**: 5.8-9.4 hours
128
+ - **Per-phase average**: 1.8 hours
129
+
130
+ **Maintenance Considerations:**
131
+ - Ongoing maintenance: ~2-4 hours per quarter
132
+ - Testing updates: ~1-2 hours per major change
133
+ - Documentation updates: ~30 minutes per feature addition
134
+
135
+ ### Token Usage Economics
136
+ **Current vs Enhanced Token Usage:**
137
+ - Manual proposition writing: ~1800 tokens
138
+ - Automated generation: ~400 tokens
139
+ - Hook execution: 100 tokens
140
+ - Content insertion: 150 tokens
141
+ - Validation: 50 tokens
142
+ - Context overhead: 100 tokens
143
+
144
+ **Net Savings: 1400 tokens (78% reduction)**
145
+
146
+ **Break-even Analysis:**
147
+ - Development investment: ~10-15 hours
148
+ - Token savings per plan: 1400 tokens
149
+ - Break-even point: 10 plans
150
+ - Expected annual volume: 20-30 plans
151
+
152
+ ## ⚠️ Risk Assessment & Mitigation
153
+
154
+ ### Technical Implementation Risks
155
+ | Risk | Probability | Impact | Mitigation Strategy |
156
+ |------|------------|--------|-------------------|
157
+ | Integration compatibility issues | Low | Medium | Thorough integration testing, backward compatibility validation |
158
+ | Performance degradation | Low | Low | Performance benchmarking, optimization validation |
159
+
160
+ ### Project Management Risks
161
+ - **Scope creep risk (Medium)**: Value propositions may reveal additional requirements
162
+ - *Mitigation*: Strict scope boundaries, change control process
163
+ - **Resource availability risk (Low)**: Developer time allocation conflicts
164
+ - *Mitigation*: Resource planning, conflict identification system
165
+ - **Token budget overrun (Low)**: Complex plans may exceed session limits
166
+ - *Mitigation*: Token monitoring, automatic compaction at phase boundaries
167
+
168
+ ### Scientific Workflow Risks
169
+ - **User workflow disruption (Low)**: Interface changes may affect researcher productivity
170
+ - *Mitigation*: Backward compatibility, gradual feature introduction
171
+ - **Documentation lag (Medium)**: Implementation may outpace documentation updates
172
+ - *Mitigation*: Documentation-driven development, parallel doc updates
173
+
174
+ ## 🔒 Security Proposition
175
+
176
+ ### Code-Level Security Assessment
177
+ **Dependency Vulnerability Assessment:**
178
+ - **No specific dependencies identified** - general Python security best practices apply
179
+
180
+ **Recommended Actions:**
181
+ - Run `pip audit` to scan for known vulnerabilities
182
+ - Pin dependency versions in requirements.txt
183
+ - Monitor security advisories for scientific computing packages
184
+ - Consider using conda for better package management
185
+
186
+ **Authentication/Access Control Impact Analysis:**
187
+ - No direct authentication system modifications identified
188
+ - Standard scientific computing access patterns maintained
189
+ - No elevated privilege requirements detected
190
+ - Multi-user environment compatibility preserved
191
+
192
+ **Attack Surface Analysis:**
193
+ - **Minimal exposure increase**: Internal library modifications only
194
+
195
+ **Mitigation Strategies:**
196
+ - Validate all external inputs and user-provided data
197
+ - Sanitize file paths and prevent directory traversal
198
+ - Use parameterized queries for any database operations
199
+ - Implement proper error handling to prevent information disclosure
200
+
201
+ ### Scientific Computing Environment Security
202
+ **Development Workflow Security:**
203
+ - Git workflow integrity maintained through branch protection
204
+ - Code review requirements enforced for security-sensitive changes
205
+ - Automated testing validates security assumptions
206
+ - Multi-phase development allows incremental security review
207
+
208
+ **CI/CD Pipeline Security:**
209
+ - Automated dependency scanning in development workflow
210
+ - Test environment isolation prevents production data exposure
211
+ - Secrets management for any required credentials
212
+ - Build reproducibility ensures supply chain integrity
213
+
214
+ **Note**: This security assessment covers code-level security only. Data compliance standards are explicitly excluded and not implemented in this system.
215
+
216
+ ## 💾 Token Usage Optimization
217
+
218
+ ### Current Token Usage Patterns
219
+ **Manual Planning Token Breakdown:**
220
+ - Initial planning discussion: ~800 tokens
221
+ - Value proposition writing: ~600 tokens (moderate plan)
222
+ - Revision and refinement: ~300 tokens
223
+ - Context switching overhead: ~200 tokens
224
+ - **Total current usage: ~1900 tokens per plan**
225
+
226
+ **Inefficiency Sources:**
227
+ - Repetitive manual analysis for similar plan types
228
+ - Context regeneration between planning sessions
229
+ - Inconsistent proposition quality requiring revisions
230
+
231
+ ### Optimized Token Usage Strategy
232
+ **Hook-Based Generation Efficiency:**
233
+ - Hook execution and setup: 100 tokens
234
+ - Plan metadata extraction: 50 tokens
235
+ - Content generation coordination: 150 tokens
236
+ - Template insertion and formatting: 75 tokens
237
+ - Optional validation: 50 tokens
238
+ - **Total optimized usage: ~425 tokens per plan**
239
+
240
+ **Token Savings Achieved:**
241
+ - **Manual planning**: 1900 tokens
242
+ - **Automated planning**: 425 tokens
243
+ - **Net savings**: 1475 tokens per plan
244
+ - **Savings percentage**: 78% reduction in token usage
245
+
246
+ **Optimization Techniques:**
247
+ - Programmatic generation eliminates manual analysis
248
+ - Template-based approach ensures consistency
249
+ - Cached calculations reduce redundant computation
250
+ - Structured format enables better context compression
251
+
252
+ ## ⏱️ Time Investment Analysis
253
+
254
+ ### Implementation Time Breakdown
255
+ **Phase-by-Phase Time Estimates (4 phases):**
256
+ - Planning and design: 2 hours
257
+ - Implementation: 8.0 hours (base: 8, multiplier: 1.0x)
258
+ - Testing and validation: 2 hours
259
+ - Documentation updates: 1 hours
260
+ - **Total estimated time: 13.0 hours**
261
+
262
+ **Confidence Intervals:**
263
+ - Optimistic (80%): 10.4 hours
264
+ - Most likely (100%): 13.0 hours
265
+ - Pessimistic (130%): 16.9 hours
266
+
267
+ ### Time Savings Analysis
268
+ **Per-Plan Time Savings:**
269
+ - Manual planning process: 90 minutes
270
+ - Automated hook-based planning: 20 minutes
271
+ - Net savings per plan: 70 minutes (78% reduction)
272
+
273
+ **Long-term Efficiency Gains:**
274
+ - Projected annual plans: 25
275
+ - Annual time savings: 29.2 hours
276
+ - Equivalent to 3.6 additional development days per year
277
+
278
+ ### Break-Even Calculation
279
+ **Investment vs. Returns:**
280
+ - One-time development investment: 14 hours
281
+ - Time savings per plan: 1.2 hours
282
+ - Break-even point: 12.0 plans
283
+
284
+ **Payback Timeline:**
285
+ - Estimated monthly plan volume: 2.5 plans
286
+ - Break-even timeline: 4.8 months
287
+ - ROI positive after: ~12 plans
288
+
289
+ ## 🎯 Usage & Adoption Metrics
290
+
291
+ ### Target Use Cases
292
+ **Primary Applications:**
293
+ - All new plan creation (immediate value through automated generation)
294
+ - Major feature development planning for SolarWindPy modules
295
+ - Scientific project planning requiring systematic value assessment
296
+
297
+ **Secondary Applications:**
298
+ - Existing plan enhancement during major updates
299
+ - Cross-plan value comparison for resource prioritization
300
+ - Quality assurance for plan completeness and consistency
301
+
302
+ ### Adoption Strategy
303
+ **Phased Rollout Approach:**
304
+ - **Phase 1**: Pilot with new plans only (Month 1)
305
+ - **Phase 2**: Gradual adoption for all new plans (Months 2-3)
306
+ - **Phase 3**: Full integration and advanced features (Months 4-6)
307
+
308
+ **Success Factors:**
309
+ - Opt-in enhancement reduces resistance
310
+ - Immediate value visible through token savings
311
+ - Backward compatibility maintains existing workflows
312
+
313
+ ### Success Metrics
314
+ **Quantitative Metrics:**
315
+ - Enhanced template adoption rate: >80% for new plans
316
+ - Token usage reduction: 60-80% demonstrated
317
+ - Hook execution success rate: >95% reliability
318
+ - Planning time reduction: >60% measured improvement
319
+
320
+ **Qualitative Indicators:**
321
+ - Developers prefer enhanced planning process
322
+ - Plan reviews are more efficient and comprehensive
323
+ - Security considerations are systematically addressed
324
+
325
+ ## 📊 Progress Tracking
326
+
327
+ ### Overall Status
328
+ - **Phases Completed**: 0/4
329
+ - **Tasks Completed**: 0/24
330
+ - **Time Invested**: 0h of 6-8h
331
+ - **Last Updated**: 2025-08-21
332
+
333
+ ### Implementation Notes
334
+ [Running log of implementation decisions, blockers, changes]
335
+
336
+ ## 🔗 Related Plans
337
+ - documentation-code-audit (source of over-engineering - will be archived)
338
+ - deployment-semver-pypi-rtd (successful right-sizing example)
339
+
340
+ ## 💬 Notes & Considerations
341
+ **Right-Sizing Philosophy:**
342
+ - Scientific packages need proportional tooling complexity
343
+ - 47 examples ≠ 1000+ examples validation requirements
344
+ - Maintenance burden must match team capacity
345
+ - Over-engineering reduces velocity and increases technical debt
346
+
347
+ **Migration Strategy:**
348
+ - Archive over-engineered components (don't delete)
349
+ - Preserve audit trail for learning
350
+ - Focus on essential functionality for scientific documentation
351
+ - Streamline CI/CD for efficiency
352
+
353
+ ---
354
+ *This multi-phase plan uses the plan-per-branch architecture where implementation occurs on feature/pr-270-doc-validation-fixes branch with progress tracked via commit checksums across phase files.*