photon-skills 3.0.3.dev17__tar.gz → 3.0.3.dev19__tar.gz

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.
Files changed (358) hide show
  1. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/CHANGELOG.md +12 -0
  2. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/PKG-INFO +1 -1
  3. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/design/self-repair.md +6 -2
  4. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/pyproject.toml +1 -1
  5. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/src/photon/health.py +52 -13
  6. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/src/photon/plugin.yaml +1 -1
  7. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/src/photon/skills/photon-debate-coach/SKILL.md +6 -2
  8. photon_skills-3.0.3.dev19/src/photon/skills/photon-debate-coach/templates/evidence-sheet.md +73 -0
  9. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/tests/test_health.py +36 -1
  10. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/.github/workflows/plugin-contract.yml +0 -0
  11. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/.github/workflows/publish.yml +0 -0
  12. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/.gitignore +0 -0
  13. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/AGENTS.md +0 -0
  14. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/CONTRIBUTING.md +0 -0
  15. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/LICENSE +0 -0
  16. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/README.en.md +0 -0
  17. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/README.md +0 -0
  18. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/SECURITY.md +0 -0
  19. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/_shared/README.md +0 -0
  20. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/_shared/__init__.py +0 -0
  21. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/_shared/__main__.py +0 -0
  22. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/_shared/decision_contract.py +0 -0
  23. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/_shared/evidence_contract.py +0 -0
  24. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/_shared/findings_schema.py +0 -0
  25. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/_shared/gate_runner.py +0 -0
  26. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/_shared/semantic_sim.py +0 -0
  27. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/_shared/status_contract.py +0 -0
  28. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/_shared/visual_qa.py +0 -0
  29. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/assets/logo.png +0 -0
  30. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/assets/research-workflow.en.svg +0 -0
  31. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/assets/research-workflow.zh.svg +0 -0
  32. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/assets/social-preview.png +0 -0
  33. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/assets/wechat-donation.jpg +0 -0
  34. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/assets/wechat-official-account.jpg +0 -0
  35. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/compatibility/agent-client-compatibility.md +0 -0
  36. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/competitors/_shared.md +0 -0
  37. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/competitors/citation.md +0 -0
  38. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/competitors/consistency.md +0 -0
  39. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/competitors/data-engineering.md +0 -0
  40. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/competitors/experiment-coding.md +0 -0
  41. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/competitors/figure.md +0 -0
  42. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/competitors/file-reading.md +0 -0
  43. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/competitors/frontend-design.md +0 -0
  44. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/competitors/idea-critique.md +0 -0
  45. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/competitors/idea-generation.md +0 -0
  46. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/competitors/literature-search.md +0 -0
  47. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/competitors/memory-pm.md +0 -0
  48. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/competitors/orchestrator.md +0 -0
  49. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/competitors/paper-writing.md +0 -0
  50. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/competitors/patent-disclosure.md +0 -0
  51. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/competitors/project-structure.md +0 -0
  52. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/competitors/research-ethics.md +0 -0
  53. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/competitors/research-plan.md +0 -0
  54. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/competitors/result-analysis.md +0 -0
  55. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/competitors/review-rebuttal.md +0 -0
  56. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/competitors/software-copyright.md +0 -0
  57. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/competitors/system-design.md +0 -0
  58. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/competitors/typesetting.md +0 -0
  59. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/competitors/venue-matching.md +0 -0
  60. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/design/consistency-round2-e2e.md +0 -0
  61. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/design/debate-coach.md +0 -0
  62. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/design/git-persistence.md +0 -0
  63. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/design/legacy-parity.md +0 -0
  64. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/design/orchestrator-spec.md +0 -0
  65. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/design/plugin-distribution.md +0 -0
  66. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/design/safety-privacy.md +0 -0
  67. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/design/student-skill-audit.md +0 -0
  68. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/e2e/citation-round2.md +0 -0
  69. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/e2e/data-engineering-round2.md +0 -0
  70. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/e2e/experiment-coding-round2.md +0 -0
  71. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/e2e/ip-extension-gate.md +0 -0
  72. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/e2e/orchestrator-round2.md +0 -0
  73. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/e2e/paper-writing-round2.md +0 -0
  74. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/e2e/project-structure-round2.md +0 -0
  75. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/e2e/research-ethics-round2.md +0 -0
  76. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/e2e/research-plan-round2.md +0 -0
  77. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/e2e/result-analysis-round2.md +0 -0
  78. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/e2e/review-rebuttal-round2.md +0 -0
  79. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/e2e/round3-release-gate.md +0 -0
  80. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/e2e/system-design-round2.md +0 -0
  81. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/e2e/typesetting-round2.md +0 -0
  82. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/e2e/venue-matching-round2.md +0 -0
  83. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/learning/ip/ip-upgrade-synthesis.md +0 -0
  84. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/learning/ip/patent-deep-read-report.md +0 -0
  85. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/learning/ip/software-copyright-deep-read-report.md +0 -0
  86. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/legacy-multi-client.md +0 -0
  87. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/docs/releases/v1.0.0.md +0 -0
  88. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/demo-student-project/.gitignore +0 -0
  89. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/demo-student-project/.photon-project +0 -0
  90. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/demo-student-project/decisions.md +0 -0
  91. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/demo-student-project/mentor-feedback/2026-08-01.md +0 -0
  92. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/demo-student-project/mentor-feedback/README.md +0 -0
  93. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/demo-student-project/project-card.md +0 -0
  94. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/demo-student-project/session-log/2026-07-28.md +0 -0
  95. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/demo-student-project/session-log/2026-07-30.md +0 -0
  96. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/demo-student-project/session-log/2026-08-01.md +0 -0
  97. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/demo-student-project/source-log.md +0 -0
  98. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/demo-student-project/task-log.md +0 -0
  99. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/e2e-research-demo/README.md +0 -0
  100. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/e2e-research-demo/artifacts/photon_e2e_case.md +0 -0
  101. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/e2e-research-demo/data/synthetic_experiment.csv +0 -0
  102. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/e2e-research-demo/figures/panels/panel_a_design_frontier.png +0 -0
  103. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/e2e-research-demo/figures/panels/panel_b_signal_screen.png +0 -0
  104. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/e2e-research-demo/figures/panels/panel_c_calibration.png +0 -0
  105. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/e2e-research-demo/figures/panels/panel_d_evidence_strength.png +0 -0
  106. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/e2e-research-demo/figures/panels/panel_e_failure_map.png +0 -0
  107. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/e2e-research-demo/figures/panels/panel_f_quality_trajectory.png +0 -0
  108. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/e2e-research-demo/figures/panels/panel_g_distribution_shift.png +0 -0
  109. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/e2e-research-demo/figures/panels/panel_h_tradeoff_curve.png +0 -0
  110. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/e2e-research-demo/figures/panels/panel_i_risk_budget.png +0 -0
  111. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/e2e-research-demo/figures/research_figure_gallery.png +0 -0
  112. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/e2e-research-demo/scripts/compose_figure_gallery.py +0 -0
  113. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/e2e-research-demo/scripts/generate_synthetic_data.py +0 -0
  114. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/e2e-research-demo/scripts/python_gallery_panels.py +0 -0
  115. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/e2e-research-demo/scripts/r_gallery_panels.R +0 -0
  116. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/examples/e2e-research-demo/scripts/run_demo.py +0 -0
  117. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/projects/photocatalytic-dye-kinetics-study/README.md +0 -0
  118. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/projects/photocatalytic-dye-kinetics-study/data/fitted_rate_constants.csv +0 -0
  119. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/projects/photocatalytic-dye-kinetics-study/data/synthetic_design_table.csv +0 -0
  120. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/projects/photocatalytic-dye-kinetics-study/data/synthetic_uvvis_timeseries.csv +0 -0
  121. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/projects/photocatalytic-dye-kinetics-study/figures/figure1_kinetics.png +0 -0
  122. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/projects/photocatalytic-dye-kinetics-study/figures/figure2_response_surface.png +0 -0
  123. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/projects/photocatalytic-dye-kinetics-study/figures/figure3_diagnostics.png +0 -0
  124. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/projects/photocatalytic-dye-kinetics-study/figures/figure4_scavenger_effects.png +0 -0
  125. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/projects/photocatalytic-dye-kinetics-study/outputs/analysis_summary.json +0 -0
  126. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/projects/photocatalytic-dye-kinetics-study/outputs/scavenger_summary.csv +0 -0
  127. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/projects/photocatalytic-dye-kinetics-study/paper/main-preview.png +0 -0
  128. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/projects/photocatalytic-dye-kinetics-study/paper/main.md +0 -0
  129. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/projects/photocatalytic-dye-kinetics-study/paper/main.pdf +0 -0
  130. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/projects/photocatalytic-dye-kinetics-study/paper/main.tex +0 -0
  131. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/projects/photocatalytic-dye-kinetics-study/scripts/analyze.py +0 -0
  132. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/projects/photocatalytic-dye-kinetics-study/scripts/build_paper.py +0 -0
  133. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/projects/photocatalytic-dye-kinetics-study/scripts/generate_data.py +0 -0
  134. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/projects/photocatalytic-dye-kinetics-study/scripts/make_figures.py +0 -0
  135. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/projects/photocatalytic-dye-kinetics-study/scripts/render_preview.py +0 -0
  136. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/projects/photocatalytic-dye-kinetics-study/scripts/run_all.py +0 -0
  137. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/scripts/check_plugin_contract.py +0 -0
  138. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/scripts/release.py +0 -0
  139. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/README.md +0 -0
  140. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-citation/SKILL.md +0 -0
  141. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-citation/citation-resource-map.md +0 -0
  142. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-citation/references/locator_audit.md +0 -0
  143. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-citation/references/registry_contract.md +0 -0
  144. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-citation/references.md +0 -0
  145. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-citation/templates/citation-four-gate.example.json +0 -0
  146. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-citation/templates/citation_input.json +0 -0
  147. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-citation/templates/claim_citation_review.json +0 -0
  148. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-consistency/SKILL.md +0 -0
  149. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-consistency/examples/fact-bindings.example.json +0 -0
  150. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-consistency/examples/materials_paper.txt +0 -0
  151. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-consistency/examples/materials_ppt.txt +0 -0
  152. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-consistency/references/consistency-resource-map.md +0 -0
  153. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-data-engineering/SKILL.md +0 -0
  154. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-data-engineering/examples/derive_spec.example.json +0 -0
  155. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-data-engineering/examples/rules.example.yaml +0 -0
  156. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-data-engineering/examples/worked_example.md +0 -0
  157. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-data-engineering/references/data-resource-map.md +0 -0
  158. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-data-engineering/references.md +0 -0
  159. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-data-engineering/templates/annotation_guide.md +0 -0
  160. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-data-engineering/templates/data-identity-fitness.example.json +0 -0
  161. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-experiment-coding/SKILL.md +0 -0
  162. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-experiment-coding/references/code_examples.md +0 -0
  163. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-experiment-coding/references/debug_protocol.md +0 -0
  164. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-experiment-coding/references/experiment-coding-resource-map.md +0 -0
  165. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-experiment-coding/references/tdd_redflags.md +0 -0
  166. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-experiment-coding/references/tools.md +0 -0
  167. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-experiment-coding/templates/experiment-execution-contract.example.json +0 -0
  168. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-experiment-coding/templates/run_manifest.md +0 -0
  169. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-experiment-coding/templates/run_manifest.template.json +0 -0
  170. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-figure/SKILL.md +0 -0
  171. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-figure/examples/bad_figure_example.py +0 -0
  172. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-figure/examples/example_framework.dot +0 -0
  173. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-figure/examples/example_framework_render.py +0 -0
  174. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-figure/examples/example_matplotlib_multipanel.py +0 -0
  175. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-figure/examples/example_seaborn_stats.py +0 -0
  176. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-figure/examples/worked_example.md +0 -0
  177. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-figure/references/figure_integrity.md +0 -0
  178. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-figure/templates/figure-delivery.example.json +0 -0
  179. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-figure/templates/figure_plan_card.md +0 -0
  180. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-figure/templates/table_plan_card.md +0 -0
  181. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-file-reading/SKILL.md +0 -0
  182. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-file-reading/references/DOCX-REF.md +0 -0
  183. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-file-reading/references/IMG-REF.md +0 -0
  184. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-file-reading/references/PDF-REF.md +0 -0
  185. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-file-reading/references/PPTX-REF.md +0 -0
  186. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-file-reading/references/XLSX-REF.md +0 -0
  187. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-file-reading/references/reading-resource-map.md +0 -0
  188. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-file-reading/references/tools.md +0 -0
  189. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-frontend-design/SKILL.md +0 -0
  190. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-frontend-design/references/design-systems-map.md +0 -0
  191. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-frontend-design/references/ecosystem-2026.md +0 -0
  192. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-frontend-design/references/fonts-and-colors.md +0 -0
  193. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-frontend-design/references/redesign-audit.md +0 -0
  194. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-frontend-design/references/resource-map.md +0 -0
  195. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-frontend-design/references/visual-a11y-rules.md +0 -0
  196. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-frontend-design/references.md +0 -0
  197. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-frontend-design/templates/frontend-delivery.example.json +0 -0
  198. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-idea-critique/SKILL.md +0 -0
  199. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-idea-critique/critique-resource-map.md +0 -0
  200. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-idea-critique/examples/worked_example_dermoscopy.md +0 -0
  201. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-idea-critique/references/contract.md +0 -0
  202. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-idea-critique/references/protocol.md +0 -0
  203. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-idea-critique/references/rubric.md +0 -0
  204. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-idea-critique/references.md +0 -0
  205. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-idea-critique/templates/Revision_Roadmap.md +0 -0
  206. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-idea-critique/templates/novelty-evidence.example.json +0 -0
  207. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-idea-critique/templates/verdict_template.md +0 -0
  208. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-idea-generation/.gitignore +0 -0
  209. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-idea-generation/SKILL.md +0 -0
  210. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-idea-generation/examples/candidates.example.json +0 -0
  211. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-idea-generation/examples/idea_candidates.example.md +0 -0
  212. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-idea-generation/idea-resource-map.md +0 -0
  213. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-idea-generation/references.md +0 -0
  214. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-idea-generation/templates/idea-gap-evidence.example.json +0 -0
  215. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-idea-generation/templates/idea-genealogy.example.json +0 -0
  216. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-idea-generation/templates/idea_card.md +0 -0
  217. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-idea-generation/templates/innovation-engine.example.json +0 -0
  218. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-literature-search/SKILL.md +0 -0
  219. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-literature-search/examples/goat_littable.md +0 -0
  220. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-literature-search/examples/goat_search.json +0 -0
  221. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-literature-search/examples/worked_example_dairy_goat.md +0 -0
  222. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-literature-search/references.md +0 -0
  223. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-literature-search/search-resource-map.md +0 -0
  224. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-literature-search/templates/search-protocol.example.json +0 -0
  225. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-memory-pm/SKILL.md +0 -0
  226. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-memory-pm/references/cross_harness_resume.md +0 -0
  227. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-memory-pm/references/session_handoff.md +0 -0
  228. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-paper-writing/SKILL.md +0 -0
  229. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-paper-writing/examples/claim_evidence_walkthrough.md +0 -0
  230. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-paper-writing/paper-writing-resource-map.md +0 -0
  231. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-paper-writing/references/argument_review.md +0 -0
  232. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-paper-writing/references/claim_argument_plan.md +0 -0
  233. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-paper-writing/references/guideline_map.md +0 -0
  234. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-paper-writing/references/integrity_gate.md +0 -0
  235. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-paper-writing/references/mandatory_inclusions.md +0 -0
  236. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-paper-writing/references/self_review_checklist.md +0 -0
  237. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-paper-writing/templates/01_imrad.md +0 -0
  238. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-paper-writing/templates/06_conference.md +0 -0
  239. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-paper-writing/templates/argument-outline.example.json +0 -0
  240. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-paper-writing/templates/claim_argument_plan.json +0 -0
  241. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-paper-writing/templates/claim_passport.md +0 -0
  242. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-patent-disclosure/SKILL.md +0 -0
  243. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-patent-disclosure/references/patent-interview-and-search.md +0 -0
  244. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-patent-disclosure/references/patent-resource-map.md +0 -0
  245. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-patent-disclosure/templates/patent-disclosure-packet.example.json +0 -0
  246. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-project-structure/SKILL.md +0 -0
  247. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-project-structure/references/project-lifecycle-resource-map.md +0 -0
  248. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-project-structure/references/structure-profiles.json +0 -0
  249. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-project-structure/templates/project-policy.template.json +0 -0
  250. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-project-structure/templates/project-structure-governance.example.json +0 -0
  251. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-research-ethics/SKILL.md +0 -0
  252. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-research-ethics/references/cn_compliance.md +0 -0
  253. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-research-ethics/references/decision_trees.md +0 -0
  254. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-research-ethics/references/ethics-resource-map.md +0 -0
  255. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-research-ethics/references/retraction_flag_types.json +0 -0
  256. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-research-ethics/references/tortured_phrases.json +0 -0
  257. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-research-orchestrator/SKILL.md +0 -0
  258. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-research-orchestrator/references/integration-contract.json +0 -0
  259. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-research-orchestrator/references/orchestrator-resource-map.md +0 -0
  260. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-research-orchestrator/references/passport.schema.json +0 -0
  261. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-research-orchestrator/templates/passport.v3.yaml +0 -0
  262. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-research-orchestrator/templates/task-profile.example.json +0 -0
  263. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-research-orchestrator/templates/workflow-ledger.example.json +0 -0
  264. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-research-plan/SKILL.md +0 -0
  265. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-research-plan/examples/plan_spec.example.json +0 -0
  266. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-research-plan/references/research-plan-resource-map.md +0 -0
  267. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-research-plan/references.md +0 -0
  268. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-research-plan/templates/experiment_matrix.md +0 -0
  269. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-research-plan/templates/failure-tree.example.json +0 -0
  270. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-research-plan/templates/plan_package.manifest.example.json +0 -0
  271. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-research-plan/templates/preregistration.md +0 -0
  272. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-research-plan/templates/reproducibility-checklist.md +0 -0
  273. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-research-plan/templates/reproduction-log.md +0 -0
  274. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-research-plan/templates/research-plan.md +0 -0
  275. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-research-plan/templates/target-chain.example.json +0 -0
  276. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-result-analysis/SKILL.md +0 -0
  277. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-result-analysis/examples/analysis_audit.example.json +0 -0
  278. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-result-analysis/examples/method_compatibility.example.json +0 -0
  279. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-result-analysis/examples/stat_spec.example.json +0 -0
  280. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-result-analysis/examples/worked_example.py +0 -0
  281. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-result-analysis/references.md +0 -0
  282. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-result-analysis/result-analysis-resource-map.md +0 -0
  283. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-result-analysis/scripts/r_analysis_crosscheck.R +0 -0
  284. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-result-analysis/templates/result-card.example.json +0 -0
  285. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-review-rebuttal/SKILL.md +0 -0
  286. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-review-rebuttal/agents/openai.yaml +0 -0
  287. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-review-rebuttal/references/workflow_contract.md +0 -0
  288. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-review-rebuttal/references.md +0 -0
  289. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-review-rebuttal/review-rebuttal-resource-map.md +0 -0
  290. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-review-rebuttal/templates/commitment_ledger.json +0 -0
  291. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-review-rebuttal/templates/experiment_request.example.json +0 -0
  292. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-review-rebuttal/templates/rereview_checklist.md +0 -0
  293. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-review-rebuttal/templates/response_letter_template.md +0 -0
  294. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-review-rebuttal/templates/response_matrix.md +0 -0
  295. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-review-rebuttal/templates/review-response-contract.example.json +0 -0
  296. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-review-rebuttal/templates/review_input.json +0 -0
  297. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-software-copyright/SKILL.md +0 -0
  298. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-software-copyright/references/materials-workflow.md +0 -0
  299. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-software-copyright/references/software-copyright-resource-map.md +0 -0
  300. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-software-copyright/templates/software-copyright-materials.example.json +0 -0
  301. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-system-design/SKILL.md +0 -0
  302. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-system-design/references/system-design-resource-map.md +0 -0
  303. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-system-design/references.md +0 -0
  304. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-system-design/templates/architecture-package.template.md +0 -0
  305. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-system-design/templates/decision-authorization.template.json +0 -0
  306. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-system-design/templates/design-readiness.example.json +0 -0
  307. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-system-design/templates/migration_expand_contract.sql +0 -0
  308. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-system-design/templates/openapi.yaml +0 -0
  309. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-system-design/templates/rls_policy.sql +0 -0
  310. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-system-design/templates/schema.sql +0 -0
  311. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-system-design/templates/system-intake.template.json +0 -0
  312. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-typesetting/SKILL.md +0 -0
  313. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-typesetting/references/build_contract.md +0 -0
  314. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-typesetting/references/latex_errors.md +0 -0
  315. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-typesetting/references.md +0 -0
  316. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-typesetting/templates/acm_sigconf.tex +0 -0
  317. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-typesetting/templates/ctex_chinese.tex +0 -0
  318. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-typesetting/templates/elsevier_elsarticle.tex +0 -0
  319. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-typesetting/templates/ieee_bare_conf.tex +0 -0
  320. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-typesetting/templates/springer_llncs.tex +0 -0
  321. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-typesetting/templates/submission-readiness.example.json +0 -0
  322. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-typesetting/templates/typesetting_input.json +0 -0
  323. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-typesetting/typesetting-resource-map.md +0 -0
  324. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-venue-matching/SKILL.md +0 -0
  325. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-venue-matching/references/workflow_contract.md +0 -0
  326. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-venue-matching/references.md +0 -0
  327. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-venue-matching/templates/query-privacy.example.json +0 -0
  328. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-venue-matching/templates/user_selection.json +0 -0
  329. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-venue-matching/templates/venue-evidence.example.json +0 -0
  330. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-venue-matching/templates/venue_compare_table.md +0 -0
  331. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-venue-matching/templates/venue_input.json +0 -0
  332. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/skills-academic/photon-venue-matching/venue-resource-map.md +0 -0
  333. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/src/photon/SOUL.md +0 -0
  334. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/src/photon/__init__.py +0 -0
  335. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/src/photon/_base.py +0 -0
  336. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/src/photon/extensions/academic-skills.zip +0 -0
  337. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/src/photon/skills/photon-brainstorm/SKILL.md +0 -0
  338. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/src/photon/skills/photon-debate-coach/references/format-presets.md +0 -0
  339. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/src/photon/skills/photon-debate-coach/templates/case-map.md +0 -0
  340. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/src/photon/skills/photon-debate-coach/templates/format.md +0 -0
  341. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/src/photon/skills/photon-debate-coach/templates/motion-brief.md +0 -0
  342. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/src/photon/skills/photon-debate-coach/templates/outline.md +0 -0
  343. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/src/photon/skills/photon-debate-coach/templates/post-match.md +0 -0
  344. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/src/photon/skills/photon-debate-coach/templates/rebuttal-cards.md +0 -0
  345. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/src/photon/skills/photon-method-planner/SKILL.md +0 -0
  346. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/src/photon/skills/photon-orchestrator/SKILL.md +0 -0
  347. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/src/photon/skills/photon-pitch-coach/SKILL.md +0 -0
  348. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/src/photon/skills/photon-pitch-coach/templates/judge-qa-prep.md +0 -0
  349. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/src/photon/skills/photon-pitch-coach/templates/pitch-deck-outline.md +0 -0
  350. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/src/photon/skills/photon-pitch-coach/templates/pitch-script-60s.md +0 -0
  351. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/src/photon/skills/photon-progress-tracker/SKILL.md +0 -0
  352. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/src/photon/skills/photon-session/SKILL.md +0 -0
  353. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/src/photon/skills/photon-source-filter/SKILL.md +0 -0
  354. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/src/photon/skillsets.json +0 -0
  355. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/src/photon/workspace.py +0 -0
  356. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/tests/test_cli.py +0 -0
  357. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/tests/test_contract.py +0 -0
  358. {photon_skills-3.0.3.dev17 → photon_skills-3.0.3.dev19}/tests/test_workspace.py +0 -0
@@ -19,6 +19,18 @@ The project follows a pragmatic release-note style rather than claiming strict s
19
19
  limits: `docs/design/self-repair.md`; `photon-orchestrator` now points at the
20
20
  three commands when a skill misfires.
21
21
 
22
+ ### Changed
23
+
24
+ - **`doctor` explains drift instead of calling everything an edit.** A copy that
25
+ differs from the bundle now reports `N changed / N extra / N missing` with an
26
+ example path, so a template a student added reads as `1 extra` rather than as
27
+ an edited skill. `repair` also drops profiles from the install state whose home
28
+ is gone, which used to raise a permanent harmless warning.
29
+ - **`photon-debate-coach` ships an evidence sheet** (`templates/evidence-sheet.md`);
30
+ Stage A now produces `debate-prep/evidence-sheet.md` when a case rests on
31
+ numbers — original source, quotable line, denominator, what the evidence does
32
+ *not* prove, and a 待核查 column that never goes on stage.
33
+
22
34
  ### Documentation
23
35
 
24
36
  - **README rewritten as a plugin-first guide** (zh + en): the two real install
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: photon-skills
3
- Version: 3.0.3.dev17
3
+ Version: 3.0.3.dev19
4
4
  Summary: Photon — STEAM research, debate, and pitch competition companion for primary/secondary students
5
5
  Author-email: Uniterra Solutions Limited <harryw07801@uniterra-solutions.com>
6
6
  License-Expression: MIT
@@ -39,7 +39,7 @@ state file. `feedback export` only writes the output directory you give it.
39
39
  | `bundled skills` | the plugin dir has skills, and each has `SKILL.md` | error |
40
40
  | `profile` | the active profile's home exists | error |
41
41
  | `skills dir` | `<profile>/skills` exists | error |
42
- | `skill sync` | bundled skill missing / edited locally / untracked by the manifest / all in sync | error / warn / ok |
42
+ | `skill sync` | bundled skill missing; a copy that differs from the bundle (per-file `N changed / N extra / N missing`, with an example path); untracked by the manifest; all in sync | error / warn / ok |
43
43
  | `manifest` | stale entries pointing at removed skills | warn |
44
44
  | `manifest version` | manifest records an older plugin version | warn |
45
45
  | `extension` | installed payload missing, payload hash changed, extension skills missing; or none installed | warn / ok |
@@ -52,7 +52,8 @@ state file. `feedback export` only writes the output directory you give it.
52
52
 
53
53
  Local edits are detected by comparing the copy with the **bundle**, not with the
54
54
  last recorded hash: adopting an edit as the new baseline (which `sync` does) must
55
- not make the divergence invisible.
55
+ not make the divergence invisible. The comparison is per file, so an added
56
+ template reads as `1 extra`, not as an edit of the whole skill.
56
57
 
57
58
  ## What `repair` does
58
59
 
@@ -60,6 +61,9 @@ not make the divergence invisible.
60
61
  |---|---|---|
61
62
  | bundled skill missing | copy it from the bundle, record its hash | same |
62
63
  | skill edited locally | keep the edit, update the baseline hash | restore the bundled copy (destructive) |
64
+ | extra file added to a skill copy | keep it | delete it (the copy is restored from the bundle) |
65
+ | file deleted from a skill copy | restored on the next `setup`; `repair` reports it | restored from the bundle |
66
+ | state lists a profile that is not on disk | drop it from the state | same |
63
67
  | skill present but untracked | adopt it only when byte-identical to the bundle | same |
64
68
  | stale manifest entry (skill no longer bundled) | drop the entry | same |
65
69
  | stale `skillset` key in state | drop it | same |
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "photon-skills"
7
- version = "3.0.3.dev17"
7
+ version = "3.0.3.dev19"
8
8
  description = "Photon — STEAM research, debate, and pitch competition companion for primary/secondary students"
9
9
  authors = [
10
10
  { name = "Uniterra Solutions Limited", email = "harryw07801@uniterra-solutions.com" },
@@ -21,6 +21,7 @@ talks to the network, and never deletes a student's project data.
21
21
  from __future__ import annotations
22
22
 
23
23
  import difflib
24
+ import hashlib
24
25
  import json
25
26
  import shutil
26
27
  import subprocess
@@ -67,13 +68,29 @@ def _hash(path: Path) -> str:
67
68
 
68
69
 
69
70
  def _file_sha(path: Path) -> str:
70
- import hashlib
71
-
72
71
  digest = hashlib.sha256()
73
72
  digest.update(path.read_bytes())
74
73
  return digest.hexdigest()
75
74
 
76
75
 
76
+ def _tree_files(root: Path) -> dict[str, str]:
77
+ """Relative path → sha256 for every file under ``root``."""
78
+ out: dict[str, str] = {}
79
+ for path in root.rglob("*"):
80
+ if path.is_file():
81
+ out[path.relative_to(root).as_posix()] = _file_sha(path)
82
+ return out
83
+
84
+
85
+ def _tree_diff(bundle: Path, installed: Path) -> tuple[list[str], list[str], list[str]]:
86
+ """``(added, removed, changed)`` relative paths, comparing copy to bundle."""
87
+ a, b = _tree_files(bundle), _tree_files(installed)
88
+ added = sorted(set(b) - set(a))
89
+ removed = sorted(set(a) - set(b))
90
+ changed = sorted(k for k in set(a) & set(b) if a[k] != b[k])
91
+ return added, removed, changed
92
+
93
+
77
94
  def _bundled(skills_dir: Path) -> dict[str, Path]:
78
95
  return {d.name: d for d in bundled_skill_dirs(skills_dir)}
79
96
 
@@ -135,19 +152,32 @@ def run_doctor(
135
152
  f"{len(missing)} bundled skill(s) missing: {', '.join(sorted(missing))}",
136
153
  f"hermes {PLUGIN_NAME} repair",
137
154
  )
138
- modified = [
139
- n
140
- for n in bundled
141
- if (profile_skills / n).exists()
142
- and _hash(profile_skills / n) != _hash(bundled[n])
143
- ]
144
- if modified:
155
+ drift: dict[str, tuple[list[str], list[str], list[str]]] = {}
156
+ for name in bundled:
157
+ target = profile_skills / name
158
+ if not target.exists():
159
+ continue
160
+ added, removed, changed = _tree_diff(bundled[name], target)
161
+ if added or removed or changed:
162
+ drift[name] = (added, removed, changed)
163
+ if drift:
164
+ parts: list[str] = []
165
+ for name, (added, removed, changed) in sorted(drift.items()):
166
+ counts: list[str] = []
167
+ if changed:
168
+ counts.append(f"{len(changed)} changed")
169
+ if added:
170
+ counts.append(f"{len(added)} extra")
171
+ if removed:
172
+ counts.append(f"{len(removed)} missing")
173
+ sample = (changed or added or removed)[0]
174
+ parts.append(f"{name} ({', '.join(counts)}; e.g. {sample})")
145
175
  add(
146
176
  "skill sync",
147
177
  "warn",
148
- f"{len(modified)} skill(s) edited locally — upstream updates skip them: "
149
- + ", ".join(sorted(modified)),
150
- f"hermes {PLUGIN_NAME} repair --force (destructive: restores the bundled copy)",
178
+ f"{len(drift)} skill(s) differ from the shipped copy: " + "; ".join(parts),
179
+ f"hermes {PLUGIN_NAME} repair --force "
180
+ "(restores the shipped copy; extra files are deleted)",
151
181
  )
152
182
  untracked = [
153
183
  n for n in bundled if (profile_skills / n).exists() and n not in recorded
@@ -171,7 +201,7 @@ def run_doctor(
171
201
  + ", ".join(sorted(orphans)),
172
202
  f"hermes {PLUGIN_NAME} repair",
173
203
  )
174
- if not missing and not modified and not untracked and not orphans:
204
+ if not missing and not drift and not untracked and not orphans:
175
205
  add("skill sync", "ok", f"{len(bundled)} skill(s) in sync with the bundle")
176
206
 
177
207
  if manifest.get("version") and manifest["version"] != version:
@@ -401,6 +431,15 @@ def run_repair(
401
431
  state.pop("skillset", None)
402
432
  actions.append("removed the stale 'skillset' key from the install state")
403
433
 
434
+ profiles_state = state.get("profiles")
435
+ if isinstance(profiles_state, dict):
436
+ for name in sorted(profiles_state):
437
+ if not _profile_dir(hermes_home, name).exists():
438
+ profiles_state.pop(name, None)
439
+ actions.append(
440
+ f"dropped profile '{name}' from the install state (not on disk)"
441
+ )
442
+
404
443
  return {"profile": profile_name, "actions": actions}
405
444
 
406
445
 
@@ -1,5 +1,5 @@
1
1
  name: photon-skills
2
- version: 3.0.3.dev17
2
+ version: 3.0.3.dev19
3
3
  description: >-
4
4
  Photon — STEAM project companion for students: research workflow, debate and
5
5
  symposium coaching, pitch preparation, and a git-backed project workspace.
@@ -65,9 +65,12 @@ metadata:
65
65
  4. **預期反對 2-3 個**:每個附一條回應線,並標明它攻擊的是對方哪個假設。
66
66
  5. **講稿/大綱**:用學生自己的稿來拋光——口語化、句子短、一段一個重點。
67
67
  不要換掉學生的語氣,不要代寫成「AI 腔」。
68
+ 6. **證據表(需要引用具體數字/法規時)**:每條證據寫清「原始出處、可引原句、
69
+ 分母、它不證明什麼」,未核實的放進「待核查」欄,不准上台講。用
70
+ `templates/evidence-sheet.md`。
68
71
 
69
72
  產出:`debate-prep/motion-brief.md`、`debate-prep/case-map.md`、`debate-prep/outline.md`
70
- (用 `templates/` 的範本)。
73
+ (用 `templates/` 的範本);有具體數據時另加 `debate-prep/evidence-sheet.md`。
71
74
 
72
75
  ### Stage B — 對方發言後 / After an opposing speech (或研討會現場提問後)
73
76
 
@@ -167,6 +170,7 @@ metadata:
167
170
  - `references/format-presets.md` — 已核實的香港/國際賽制 preset(附來源連結與
168
171
  `待核查` 標記);實作與回答賽制問題前先讀這一份。
169
172
  - `templates/motion-brief.md`、`templates/case-map.md`、`templates/rebuttal-cards.md`、
170
- `templates/outline.md`、`templates/post-match.md`、`templates/format.md`
173
+ `templates/outline.md`、`templates/post-match.md`、`templates/format.md`、
174
+ `templates/evidence-sheet.md`
171
175
  — `debate-prep/` 的檔案範本。
172
176
  - `docs/design/debate-coach.md`(repo)— 設計決策與已核實賽制資料。
@@ -0,0 +1,73 @@
1
+ # Evidence Sheet — 證據表
2
+
3
+ > 範本。複製到 `debate-prep/evidence-sheet.md` 再填。
4
+ > 上限:______ 條(照賽制/課程要求;寧願少而實,唔好為湊數加未核實的來源)。
5
+ > 每條都要能在 **30 秒內**回答 source challenge。
6
+
7
+ ## 一條好證據的四個條件
8
+
9
+ 1. **原始出處**:法規、監管機構、專業學會、同儕評審期刊、官方統計。二手轉述不算。
10
+ 2. **引得出原句**:你講得出「它確實寫了這一句」,而不是「我記得好像有」。
11
+ 3. **知分母**:比率講清「per 咩」;人數講清「邊個人口」。
12
+ 4. **知它不證明什麼**:寫在「不要說」一欄——這一欄比正文更防失分。
13
+
14
+ ---
15
+
16
+ ## 索引
17
+
18
+ | # | 一句話事實 | 出處 | 支撐 | 狀態 |
19
+ |---|-----------|------|------|------|
20
+ | E1 | | | | ✅ / ⚠️ |
21
+ | E2 | | | | |
22
+ | E3 | | | | |
23
+
24
+ ---
25
+
26
+ ## 每條的格式(逐條重複)
27
+
28
+ ### E__ · 短標題
29
+
30
+ **Speakable claim(一句話,講得出):**
31
+ > ...
32
+
33
+ **精確內容(數字 + 分母 + 範圍):**
34
+ - ...
35
+
36
+ **出處:**
37
+ - 作者/機構、年份、標題、URL
38
+ - 查閱日期:YYYY-MM-DD
39
+
40
+ **狀態:** ✅ 已核實(讀過原始出處)/ ⚠️ 待核查(唔可以當證據)/ 🧪 假設例子(要明講)
41
+
42
+ **用在哪裏:** 哪個論點、哪一段發言
43
+
44
+ **30 秒 source challenge 防守:**
45
+ > "That's [機構], [年份], [文件名]. It says [exact claim]. Note the denominator: [ ]."
46
+
47
+ **不要說:** 常見誇大或錯誤講法(寫出來,提醒自己)
48
+
49
+ ---
50
+
51
+ ## 論點 ↔ 證據對應
52
+
53
+ | 論點 | 主要證據 | 備用 |
54
+ |------|----------|------|
55
+ | A1 | | |
56
+ | A2 | | |
57
+ | A3 | | |
58
+
59
+ ---
60
+
61
+ ## ⚠️ 待核查 — 唔好上台講
62
+
63
+ | 講法 | 問題 |
64
+ |------|------|
65
+ | | |
66
+
67
+ > 這一欄要當成護欄:未核實的數字寫進正文,比賽時一定會被追問。
68
+
69
+ ---
70
+
71
+ ## 備用來源(唔計入上限)
72
+
73
+ - 只用於開場講 stakes、或回答提問;同樣要標狀態。
@@ -86,7 +86,10 @@ def test_edited_skill_is_kept_unless_forced(install):
86
86
  target.write_text("---\nname: photon-alpha\n---\n\nlocal edit\n", encoding="utf-8")
87
87
 
88
88
  findings = doctor(install)
89
- assert any("edited locally" in f.message for f in findings)
89
+ assert any(
90
+ "differ from the shipped copy" in f.message and "1 changed" in f.message
91
+ for f in findings
92
+ )
90
93
 
91
94
  repair(install)
92
95
  assert "local edit" in target.read_text(encoding="utf-8")
@@ -167,6 +170,38 @@ def test_feedback_export_writes_diff_and_evidence(install, tmp_path):
167
170
  assert manifest["changed_skills"] == ["photon-alpha"]
168
171
 
169
172
 
173
+ def test_extra_and_missing_files_are_reported(install):
174
+ home, _plugin_dir, _skills = install
175
+ skill = home / "skills" / "photon-alpha"
176
+ (skill / "extra.md").write_text("local only\n", encoding="utf-8")
177
+ (skill / "SKILL.md").unlink()
178
+
179
+ findings = doctor(install)
180
+ warn = next(f for f in findings if f.check == "skill sync" and f.status == "warn")
181
+ assert "1 extra" in warn.message
182
+ assert "1 missing" in warn.message
183
+ assert "extra.md" in warn.message
184
+
185
+ repair(install)
186
+ assert (skill / "extra.md").exists()
187
+
188
+ repair(install, force=True)
189
+ assert not (skill / "extra.md").exists()
190
+ assert (skill / "SKILL.md").exists()
191
+
192
+
193
+ def test_repair_prunes_missing_profiles(install):
194
+ home, _plugin_dir, _skills = install
195
+ state = {"profiles": {"default": {}, "ghost": {}}}
196
+
197
+ findings = doctor(install, state=state)
198
+ assert any("ghost" in f.message for f in findings)
199
+
200
+ repair(install, state=state)
201
+ assert "ghost" not in state["profiles"]
202
+ assert "default" in state["profiles"]
203
+
204
+
170
205
  def test_cli_exposes_health_commands():
171
206
  parser = argparse.ArgumentParser()
172
207
  subs = parser.add_subparsers(dest="cmd")