agent-tune-kit 2.4.1__tar.gz → 2.4.2__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 (190) hide show
  1. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/.codex-plugin/plugin.json +1 -1
  2. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/PKG-INFO +10 -6
  3. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/README.en.md +9 -5
  4. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/README.md +9 -5
  5. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/__init__.py +1 -1
  6. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/traces/store.py +33 -7
  7. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/docs/shared-versioning-and-confirmation.md +3 -1
  8. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/docs/trace-tuning.md +36 -8
  9. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/pyproject.toml +1 -1
  10. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/scripts/check-release.py +8 -8
  11. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/scripts/publish-pypi.sh +1 -1
  12. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/scripts/publish-release.py +1 -1
  13. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/scripts/release-version.py +10 -8
  14. agent_tune_kit-2.4.2/scripts/release-version.sh +7 -0
  15. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/scripts/validate_skill_pack.py +1 -1
  16. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/skills/atk-trace-capture/SKILL.md +1 -1
  17. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/skills/atk-trace-detect/SKILL.md +16 -15
  18. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/skills/atk-trace-diagnose/SKILL.md +12 -10
  19. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/skills/atk-trace-init/SKILL.md +7 -7
  20. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/skills/atk-trace-optimize/SKILL.md +18 -11
  21. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/skills/atk-trace-verify/SKILL.md +2 -2
  22. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/skills/atk-visualize-trace/SKILL.md +5 -1
  23. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_install_plugin.py +1 -1
  24. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_release_scripts.py +17 -19
  25. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_trace_scroll_layout.py +29 -0
  26. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_trace_store.py +62 -0
  27. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/trace-scroll-layout.cjs +24 -0
  28. agent_tune_kit-2.4.1/scripts/release-version.sh +0 -6
  29. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/.gitignore +0 -0
  30. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/cli/__init__.py +0 -0
  31. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/cli/__main__.py +0 -0
  32. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/cli/dataset.py +0 -0
  33. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/cli/evaluation.py +0 -0
  34. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/cli/main.py +0 -0
  35. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/cli/output.py +0 -0
  36. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/cli/results.py +0 -0
  37. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/cli/trace.py +0 -0
  38. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/cli/visualize.py +0 -0
  39. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/datasets/__init__.py +0 -0
  40. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/datasets/prepare.py +0 -0
  41. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/datasets/truth.py +0 -0
  42. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/datasets/updates.py +0 -0
  43. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/datasets/validation.py +0 -0
  44. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/errors.py +0 -0
  45. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/execution/__init__.py +0 -0
  46. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/execution/calibration.py +0 -0
  47. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/execution/logs.py +0 -0
  48. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/execution/rules.py +0 -0
  49. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/execution/runner.py +0 -0
  50. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/execution/runtime.py +0 -0
  51. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/execution/tracing.py +0 -0
  52. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/installer.py +0 -0
  53. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/results/__init__.py +0 -0
  54. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/results/assessment.py +0 -0
  55. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/results/evidence.py +0 -0
  56. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/results/judgments.py +0 -0
  57. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/results/summary.py +0 -0
  58. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/results/versions.py +0 -0
  59. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/traces/__init__.py +0 -0
  60. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/traces/archive.py +0 -0
  61. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/traces/capture.py +0 -0
  62. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/traces/categories.py +0 -0
  63. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/traces/langfuse.py +0 -0
  64. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/traces/migrate.py +0 -0
  65. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/traces/progress.py +0 -0
  66. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/traces/projects.py +0 -0
  67. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/traces/query.py +0 -0
  68. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/traces/records.py +0 -0
  69. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/traces/segments.py +0 -0
  70. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/utils/__init__.py +0 -0
  71. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/utils/csv_io.py +0 -0
  72. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/utils/files.py +0 -0
  73. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/visualize/__init__.py +0 -0
  74. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/visualize/assets/dataset/app.js +0 -0
  75. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/visualize/assets/dataset/page.html +0 -0
  76. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/visualize/assets/dataset/styles.css +0 -0
  77. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/visualize/assets/dataset/vendor/echarts.min.js +0 -0
  78. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/visualize/assets/failures/app.js +0 -0
  79. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/visualize/assets/failures/page.html +0 -0
  80. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/visualize/assets/failures/styles.css +0 -0
  81. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/visualize/assets/shared/base.css +0 -0
  82. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/visualize/assets/trace/app.js +0 -0
  83. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/visualize/assets/trace/lanes.js +0 -0
  84. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/visualize/assets/trace/page.html +0 -0
  85. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/visualize/assets/trace/styles.css +0 -0
  86. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/visualize/assets/trace/vendor/markdown-it.LICENSE +0 -0
  87. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/visualize/assets/trace/vendor/markdown-it.min.js +0 -0
  88. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/visualize/assets/traces/app.js +0 -0
  89. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/visualize/assets/traces/page.html +0 -0
  90. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/visualize/assets/traces/styles.css +0 -0
  91. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/visualize/dataset.py +0 -0
  92. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/visualize/failures.py +0 -0
  93. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/visualize/fields.py +0 -0
  94. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/visualize/history.py +0 -0
  95. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/visualize/render.py +0 -0
  96. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/visualize/timeline.py +0 -0
  97. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/visualize/trace.py +0 -0
  98. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/visualize/traces.py +0 -0
  99. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/agent_tune_kit/workspace.py +0 -0
  100. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/docs/assets/agent_tune_kit_evaluation.png +0 -0
  101. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/docs/assets/agent_tune_kit_trace.png +0 -0
  102. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/docs/assets/arch-en.png +0 -0
  103. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/docs/assets/arch.png +0 -0
  104. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/docs/assets/architecture.en.svg +0 -0
  105. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/docs/assets/architecture.svg +0 -0
  106. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/docs/ato-atk-project-boundary-recommendation-2026-11-05.md +0 -0
  107. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/docs/cli-skill-modularization-plan.md +0 -0
  108. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/docs/codex_agent_tuning_prd.md +0 -0
  109. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/docs/execution-evidence-and-tracing-plan.md +0 -0
  110. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/docs/ground-truth-and-grading-assessment-2026-10-25.md +0 -0
  111. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/docs/local-context.md +0 -0
  112. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/docs/skill-template-pack-usage.md +0 -0
  113. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/docs/surginame-atk-capability-review-2026-10-27.md +0 -0
  114. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/docs/trace-change-verification-readability-diagnosis.md +0 -0
  115. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/docs/trace-dashboard-design.md +0 -0
  116. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/docs/trace-project-attribution-design.md +0 -0
  117. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/docs/trace-swimlane-design.md +0 -0
  118. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/docs/trace-tuning-validation.md +0 -0
  119. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/docs/truth-and-assessment.md +0 -0
  120. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/scripts/dev-refresh-install.sh +0 -0
  121. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/scripts/install_plugin.py +0 -0
  122. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/skills/atk-dataset/SKILL.md +0 -0
  123. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/skills/atk-dataset/scripts/update_dataset.py +0 -0
  124. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/skills/atk-diagnose/SKILL.md +0 -0
  125. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/skills/atk-eval/SKILL.md +0 -0
  126. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/skills/atk-init/SKILL.md +0 -0
  127. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/skills/atk-optimize/SKILL.md +0 -0
  128. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/skills/atk-report/SKILL.md +0 -0
  129. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/skills/atk-visualize-dataset/SKILL.md +0 -0
  130. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/skills/atk-visualize-dataset/scripts/generate_dataset_browser.py +0 -0
  131. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/skills/atk-visualize-failures/SKILL.md +0 -0
  132. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/skills/atk-visualize-failures/scripts/generate_failure_browser.py +0 -0
  133. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/templates/.atk/runner/eval_runner.py.md +0 -0
  134. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/templates/.atk/runner/failure_rule.py.md +0 -0
  135. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/templates/.atk/runner/import_evidence.py.md +0 -0
  136. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/templates/.gitkeep +0 -0
  137. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/__init__.py +0 -0
  138. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/conftest.py +0 -0
  139. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/fixtures/legacy_eval_runner.py.txt +0 -0
  140. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/fixtures/managed_v1.py.md +0 -0
  141. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_assessment_contract.py +0 -0
  142. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_atk_init_contract.py +0 -0
  143. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_cli_workflow.py +0 -0
  144. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_dataset_updates.py +0 -0
  145. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_diagnosis.py +0 -0
  146. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_evidence_import.py +0 -0
  147. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_evidence_judgments.py +0 -0
  148. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_evidence_packaging.py +0 -0
  149. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_evidence_versions.py +0 -0
  150. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_execution_evidence.py +0 -0
  151. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_execution_outcomes.py +0 -0
  152. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_execution_tracing.py +0 -0
  153. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_generate_dataset_browser.py +0 -0
  154. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_generate_failure_browser.py +0 -0
  155. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_judge_calibration.py +0 -0
  156. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_local_context.py +0 -0
  157. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_plugin_cache.py +0 -0
  158. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_runner_output_columns.py +0 -0
  159. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_runner_template_row_logging.py +0 -0
  160. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_runtime_contracts.py +0 -0
  161. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_snapshot_reads.py +0 -0
  162. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_trace_capture.py +0 -0
  163. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_trace_categories.py +0 -0
  164. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_trace_cli.py +0 -0
  165. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_trace_event_list.py +0 -0
  166. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_trace_langfuse.py +0 -0
  167. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_trace_progress.py +0 -0
  168. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_trace_projects.py +0 -0
  169. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_trace_query.py +0 -0
  170. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_trace_records.py +0 -0
  171. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_trace_segments.py +0 -0
  172. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_truth_browser.py +0 -0
  173. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_truth_cli.py +0 -0
  174. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_truth_contract.py +0 -0
  175. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_truth_runner.py +0 -0
  176. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_v2_progress.py +0 -0
  177. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_visualize_trace.py +0 -0
  178. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/test_visualize_traces.py +0 -0
  179. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/trace-controls.cjs +0 -0
  180. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/trace-dashboard.cjs +0 -0
  181. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/trace-event-detail.cjs +0 -0
  182. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/trace-event-layout.cjs +0 -0
  183. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/trace-event-list.cjs +0 -0
  184. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/trace-event-wheel.cjs +0 -0
  185. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/trace-fragments.cjs +0 -0
  186. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/trace-issue-cards.cjs +0 -0
  187. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/trace-preview-scroll.cjs +0 -0
  188. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/trace-projects.cjs +0 -0
  189. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/trace-selection-reason.cjs +0 -0
  190. {agent_tune_kit-2.4.1 → agent_tune_kit-2.4.2}/tests/trace-stage-cards.cjs +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-tune-kit",
3
- "version": "2.4.1",
3
+ "version": "2.4.2",
4
4
  "description": "Local Codex plugin for batch Agent evaluation and session trace tuning with evidence-backed issues, focused changes, verification and offline review.",
5
5
  "author": {
6
6
  "name": "hustyichi",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: agent-tune-kit
3
- Version: 2.4.1
3
+ Version: 2.4.2
4
4
  Summary: Local Codex plugin for iterative Agent tuning with guided Skills, reusable runner templates, versioned results, and static validation.
5
5
  Project-URL: Homepage, https://github.com/hustyichi/agent-tune-kit
6
6
  Project-URL: Repository, https://github.com/hustyichi/agent-tune-kit
@@ -154,16 +154,18 @@ Run `atk trace --help` to check whether your CLI supports trace tuning. If the c
154
154
  - **Langfuse v4**. Use `$atk-trace-init` to record project settings and configure read-only access on first setup. Configuration references credentials by environment-variable name. Then send `$atk-trace-capture Download session <session-id> from <start time> to <end time>`.
155
155
  - **Local files**. Send `$atk-trace-capture Import traces for session <session-id> from <file path>, with source <source>`. You can also provide files with verifiable ties to the session during analysis and let detection import them. Analyze an already archived session directly.
156
156
 
157
- The capture step downloads or imports data. Before saving, decide which content to retain and which fields to redact. ATK adds `.atk/traces/` to the project's `.gitignore`.
157
+ The capture step downloads or imports data. Before saving, decide which content to retain and which fields to redact. ATK checks whether Git ignores `.atk/traces/` and adds a rule to the project's `.gitignore` if needed.
158
+
159
+ `$atk-trace-init` infers and saves the tuning scope from project documents and implementation; later detection, diagnosis, repair and verification use it. No manual configuration is required. You can also say "For this run, focus on this project or component." When you skip initialization, analysis fills in the necessary context and explains any unresolved boundaries.
158
160
 
159
161
  ### 2. Analyze and Review Evidence
160
162
 
161
163
  ```text
162
- $atk-trace-detect Check whether session <session-id> completed its task correctly. List issues, evidence, and what you did not inspect.
164
+ $atk-trace-detect Analyze session <session-id> for issues actionable within this project. List evidence and what you did not inspect.
163
165
  $atk-visualize-trace Open the execution lanes for session <session-id> and jump from issues to the relevant trace segments and evidence fields.
164
166
  ```
165
167
 
166
- Detection retains issues with serious impact, recurrence, direct relevance to your stated focus, or a concrete implementation improvement lead, and explains the retention reason, evidence and inspection scope. Implementation leads include code, configuration, tool contracts, Prompt and Skill; an unresolved cause can proceed to diagnosis. Minor observations with none of these reasons are not saved separately. No retained issues does not prove the session was correct.
168
+ By default, detection retains evidence-backed issues worth pursuing that have a project mechanism, an improvement direction and a minimal verification approach; the root cause may still be uncertain. It explains out-of-scope findings and missing actionability evidence, and still calls attention to serious problems. You can explicitly request a comprehensive quality audit or investigation of a specific symptom without an existing improvement lead. No retained issues does not prove the session was correct.
167
169
 
168
170
  The capture, detect, diagnose, optimize and verify Skills generate or update `.atk/traces/<session_id>/preview.html` at stage end without opening a browser. Use `$atk-visualize-trace` when you want to open it; refresh an already open page after the file changes. Initialization has no session trace and does not generate an empty page.
169
171
 
@@ -176,11 +178,13 @@ Use Trace IDs to locate evidence within the session and open issue details to re
176
178
  ```text
177
179
  $atk-trace-diagnose Investigate session <session-id> and propose repair and verification plans.
178
180
  $atk-trace-diagnose Investigate ISSUE-001 in session <session-id> and propose a repair and verification plan.
179
- $atk-trace-optimize Implement the selected plan for ISSUE-001 in session <session-id>.
181
+ $atk-trace-optimize Prepare a detailed implementation plan for ISSUE-001 in session <session-id>, then implement after confirmation.
180
182
  $atk-trace-verify Verify the candidate for ISSUE-001 in session <session-id> and check relevant behavior that should still work.
181
183
  ```
182
184
 
183
- Without specified issues, diagnosis reviews all available session traces and works through existing and newly found issues, prioritizing causes directly related to project code, configuration, tool contracts, Prompt or Skill. Findings established as unrelated to the existing implementation may be skipped with an explanation. Findings with uncertain relevance remain open for investigation. Specified issues or concrete symptoms limit the investigation scope. You can start directly with diagnosis without a separate detection invocation.
185
+ `$atk-trace-optimize` first lists the files, exact modification locations, before/after behavior and supporting checks in Codex. Discuss adjustments in chat; only after you confirm the final version does it save the detailed plan and edit the code. Material scope expansion requires another confirmation; an unchanged confirmed plan does not. Draft discussion stays in chat by default, while the session preview shows the final plan and actual changes.
186
+
187
+ Without specified issues, diagnosis reviews all available session traces, selects new issues within the tuning scope and reviews each existing issue. Findings established as unrelated to the implementation may be excluded with their reasons and history preserved; existing issues with uncertain relevance are not simply deleted. Specified issues or concrete symptoms define the investigation scope, and a temporary focus does not permanently exclude other issues. You can start directly with diagnosis without a separate detection invocation.
184
188
 
185
189
  Diagnoses and verification conclusions are saved per issue. If the evidence cannot establish which candidate loaded or whether key verification conditions were met, the verification outcome is `inconclusive`. Investigation results identify unread ranges and evidence gaps. As new issues surface, work through them individually or start another analysis with a new session trace.
186
190
 
@@ -140,16 +140,18 @@ Run `atk trace --help` to check whether your CLI supports trace tuning. If the c
140
140
  - **Langfuse v4**. Use `$atk-trace-init` to record project settings and configure read-only access on first setup. Configuration references credentials by environment-variable name. Then send `$atk-trace-capture Download session <session-id> from <start time> to <end time>`.
141
141
  - **Local files**. Send `$atk-trace-capture Import traces for session <session-id> from <file path>, with source <source>`. You can also provide files with verifiable ties to the session during analysis and let detection import them. Analyze an already archived session directly.
142
142
 
143
- The capture step downloads or imports data. Before saving, decide which content to retain and which fields to redact. ATK adds `.atk/traces/` to the project's `.gitignore`.
143
+ The capture step downloads or imports data. Before saving, decide which content to retain and which fields to redact. ATK checks whether Git ignores `.atk/traces/` and adds a rule to the project's `.gitignore` if needed.
144
+
145
+ `$atk-trace-init` infers and saves the tuning scope from project documents and implementation; later detection, diagnosis, repair and verification use it. No manual configuration is required. You can also say "For this run, focus on this project or component." When you skip initialization, analysis fills in the necessary context and explains any unresolved boundaries.
144
146
 
145
147
  ### 2. Analyze and Review Evidence
146
148
 
147
149
  ```text
148
- $atk-trace-detect Check whether session <session-id> completed its task correctly. List issues, evidence, and what you did not inspect.
150
+ $atk-trace-detect Analyze session <session-id> for issues actionable within this project. List evidence and what you did not inspect.
149
151
  $atk-visualize-trace Open the execution lanes for session <session-id> and jump from issues to the relevant trace segments and evidence fields.
150
152
  ```
151
153
 
152
- Detection retains issues with serious impact, recurrence, direct relevance to your stated focus, or a concrete implementation improvement lead, and explains the retention reason, evidence and inspection scope. Implementation leads include code, configuration, tool contracts, Prompt and Skill; an unresolved cause can proceed to diagnosis. Minor observations with none of these reasons are not saved separately. No retained issues does not prove the session was correct.
154
+ By default, detection retains evidence-backed issues worth pursuing that have a project mechanism, an improvement direction and a minimal verification approach; the root cause may still be uncertain. It explains out-of-scope findings and missing actionability evidence, and still calls attention to serious problems. You can explicitly request a comprehensive quality audit or investigation of a specific symptom without an existing improvement lead. No retained issues does not prove the session was correct.
153
155
 
154
156
  The capture, detect, diagnose, optimize and verify Skills generate or update `.atk/traces/<session_id>/preview.html` at stage end without opening a browser. Use `$atk-visualize-trace` when you want to open it; refresh an already open page after the file changes. Initialization has no session trace and does not generate an empty page.
155
157
 
@@ -162,11 +164,13 @@ Use Trace IDs to locate evidence within the session and open issue details to re
162
164
  ```text
163
165
  $atk-trace-diagnose Investigate session <session-id> and propose repair and verification plans.
164
166
  $atk-trace-diagnose Investigate ISSUE-001 in session <session-id> and propose a repair and verification plan.
165
- $atk-trace-optimize Implement the selected plan for ISSUE-001 in session <session-id>.
167
+ $atk-trace-optimize Prepare a detailed implementation plan for ISSUE-001 in session <session-id>, then implement after confirmation.
166
168
  $atk-trace-verify Verify the candidate for ISSUE-001 in session <session-id> and check relevant behavior that should still work.
167
169
  ```
168
170
 
169
- Without specified issues, diagnosis reviews all available session traces and works through existing and newly found issues, prioritizing causes directly related to project code, configuration, tool contracts, Prompt or Skill. Findings established as unrelated to the existing implementation may be skipped with an explanation. Findings with uncertain relevance remain open for investigation. Specified issues or concrete symptoms limit the investigation scope. You can start directly with diagnosis without a separate detection invocation.
171
+ `$atk-trace-optimize` first lists the files, exact modification locations, before/after behavior and supporting checks in Codex. Discuss adjustments in chat; only after you confirm the final version does it save the detailed plan and edit the code. Material scope expansion requires another confirmation; an unchanged confirmed plan does not. Draft discussion stays in chat by default, while the session preview shows the final plan and actual changes.
172
+
173
+ Without specified issues, diagnosis reviews all available session traces, selects new issues within the tuning scope and reviews each existing issue. Findings established as unrelated to the implementation may be excluded with their reasons and history preserved; existing issues with uncertain relevance are not simply deleted. Specified issues or concrete symptoms define the investigation scope, and a temporary focus does not permanently exclude other issues. You can start directly with diagnosis without a separate detection invocation.
170
174
 
171
175
  Diagnoses and verification conclusions are saved per issue. If the evidence cannot establish which candidate loaded or whether key verification conditions were met, the verification outcome is `inconclusive`. Investigation results identify unread ranges and evidence gaps. As new issues surface, work through them individually or start another analysis with a new session trace.
172
176
 
@@ -140,16 +140,18 @@ $atk-report
140
140
  - **Langfuse v4**。首次接入可用 `$atk-trace-init` 记录项目和只读来源配置。配置只引用凭据的环境变量名。然后发送 `$atk-trace-capture 下载 <session-id> 的会话,时间范围是 <开始时间> 到 <结束时间>`。
141
141
  - **本地文件**。发送 `$atk-trace-capture 从 <文件路径> 导入 <session-id> 的轨迹,来源是 <来源>`。也可在分析时提供可验证会话归属的文件,由分析流程导入。已归档的会话可直接分析。
142
142
 
143
- 采集步骤负责下载或导入。保存前确认哪些正文可以留存、哪些字段需要脱敏。`.atk/traces/` 会加入项目的 `.gitignore`。
143
+ 采集步骤负责下载或导入。保存前确认哪些正文可以留存、哪些字段需要脱敏。ATK 确保 Git 忽略 `.atk/traces/`,需要时会补写项目的 `.gitignore`。
144
+
145
+ `$atk-trace-init` 会根据项目说明和实现自动识别并保存调优范围,后续分析、诊断、修复和验证沿用该范围。无需手工配置;也可直接说明“本轮只看某个项目或组件”。跳过初始化时,分析流程会自动补齐必要上下文,无法确定的边界会明确说明。
144
146
 
145
147
  ### 2. 分析并查看证据
146
148
 
147
149
  ```text
148
- $atk-trace-detect 分析 <session-id> 的任务结果是否正确,列出问题、证据和未检查的范围。
150
+ $atk-trace-detect 分析 <session-id>,筛选当前项目可调优的问题,列出证据和未检查的范围。
149
151
  $atk-visualize-trace 打开 <session-id> 的执行泳道,从问题跳到相关轨迹片段和证据字段。
150
152
  ```
151
153
 
152
- 分析保留影响严重、反复出现、与你明确关注点相关,或有具体实现改进线索的问题,并说明保留理由、证据和检查范围。实现线索包括代码、配置、工具契约、Prompt 和 Skill;根因尚未确定也可进入后续诊断。轻微且无上述保留理由的观察不单独记录,没有保留问题不代表会话完全正确。
154
+ 分析默认保留有证据、值得投入,且能说明项目机制、改进方向和最小验证办法的问题;根因尚未确定也可进入后续诊断。范围外的问题说明未纳入原因,暂缺可处理性证据的问题说明缺口,严重问题仍会提示。需要全面质量审计或调查某个具体症状时可直接提出,不限于已有改进线索。没有保留问题不代表会话完全正确。
153
155
 
154
156
  采集、分析、诊断、修复和验证 Skill 在阶段结束后默认生成或更新 `.atk/traces/<session_id>/preview.html`,不自动打开浏览器。需要打开时使用 `$atk-visualize-trace`;已打开的页面在文件更新后需刷新。初始化没有会话轨迹,不生成空页面。
155
157
 
@@ -162,11 +164,13 @@ $atk-visualize-trace 打开 <session-id> 的执行泳道,从问题跳到相关
162
164
  ```text
163
165
  $atk-trace-diagnose 调查 <session-id>,给出修复和验证方案。
164
166
  $atk-trace-diagnose 调查 <session-id> 的 ISSUE-001,给出修复和验证方案。
165
- $atk-trace-optimize 实施 <session-id> 的 ISSUE-001 已选定的方案。
167
+ $atk-trace-optimize 为 <session-id> 的 ISSUE-001 准备详细修改方案,确认后实施。
166
168
  $atk-trace-verify 验证 <session-id> 的 ISSUE-001 对应候选,并检查相关正常行为。
167
169
  ```
168
170
 
169
- 未指定问题时,调查默认检查会话中可用的全部轨迹,逐项处理已记录和新发现的问题,优先定位与项目代码、配置、工具契约、Prompt 或 Skill 直接相关的原因。证据确认与现有实现无关的问题可以忽略,并说明理由。关联尚不明确的问题保留待查。指定问题或具体症状时,按指定范围调查。可以直接从调查开始,无需先单独执行检测。
171
+ `$atk-trace-optimize` 会先在 Codex 中列出具体文件、修改位置、前后行为和配套验证。你可以在对话中调整方案;确认最终版本后,才保存详细实施方案并修改代码。实质扩大范围时会再次确认,同一已确认方案无需重复确认。讨论稿默认保留在对话中;会话预览展示最终方案与实际修改。
172
+
173
+ 未指定问题时,调查默认检查会话中可用的全部轨迹,按调优范围筛选新问题,并逐项审阅已记录的问题。证据确认与现有实现无关的问题可以排除,并保留理由和历史;已记录但关联尚不明确的问题不会直接删除。指定问题或具体症状时,按指定范围调查,临时收窄范围不会永久排除其他问题。可以直接从调查开始,无需先单独执行检测。
170
174
 
171
175
  诊断和验证结论分别按问题保存。证据不足以确认实际加载的候选或关键验证条件时,验证效果记为 `inconclusive`(无法判断)。调查结果会说明未检查的范围和证据缺口。后续发现新的问题,可继续按问题处理,或用新会话的轨迹开始下一次分析。
172
176
 
@@ -1,3 +1,3 @@
1
1
  """Agent Tune Kit package."""
2
2
 
3
- __version__ = "2.4.1"
3
+ __version__ = "2.4.2"
@@ -4,6 +4,7 @@ import hashlib
4
4
  import json
5
5
  import os
6
6
  import re
7
+ import subprocess
7
8
  import uuid
8
9
  from contextlib import contextmanager
9
10
  from pathlib import Path
@@ -11,7 +12,7 @@ from urllib.parse import urlsplit
11
12
 
12
13
  from agent_tune_kit.errors import UserActionRequired
13
14
  from agent_tune_kit.results.evidence import digest_file, json_bytes, now, safe_path, write_manifest
14
- from agent_tune_kit.utils.files import write_text_atomic
15
+ from agent_tune_kit.utils.files import atomic_text_writer, write_text_atomic
15
16
 
16
17
  from . import archive
17
18
 
@@ -97,16 +98,41 @@ def trace_root(project_root):
97
98
  return safe_path(project, ".atk/traces")
98
99
 
99
100
 
101
+ def _trace_git_ignored(project):
102
+ try:
103
+ result = subprocess.run(
104
+ ["git", "check-ignore", "-q", "--no-index", "--", ".atk/traces/"],
105
+ cwd=project,
106
+ capture_output=True,
107
+ env={**os.environ, "LC_ALL": "C"},
108
+ check=False,
109
+ )
110
+ except FileNotFoundError:
111
+ return None
112
+ if result.returncode in {0, 1}:
113
+ return result.returncode == 0
114
+ if result.stderr.startswith((b"fatal: not a git repository", b"fatal: this operation must be run in a work tree")):
115
+ return None
116
+ raise UserActionRequired("Git could not check the Trace ignore rules. Check Git status in the project.")
117
+
118
+
100
119
  def ensure_workspace(project_root):
101
120
  project = Path(project_root).resolve()
102
121
  root = trace_root(project)
103
122
  ignore = safe_path(project, ".gitignore")
104
- text = ignore.read_text(encoding="utf-8") if ignore.exists() else ""
105
- # An explicit final rule also protects archives after a previous negated rule.
106
- rule = "/.atk/traces/"
107
- changed = not text.rstrip().endswith(rule)
108
- if changed:
109
- write_text_atomic(ignore, text + ("\n" if text and not text.endswith("\n") else "") + rule + "\n")
123
+ ignored = _trace_git_ignored(project)
124
+ changed = False
125
+ if ignored is not True:
126
+ text = ignore.read_bytes().decode("utf-8") if ignore.exists() else ""
127
+ rule = "/.atk/traces/"
128
+ changed = text.rstrip("\r\n").rsplit("\n", 1)[-1] != rule
129
+ if changed:
130
+ newline = "\r\n" if "\r\n" in text else "\n"
131
+ separator = newline if text and not text.endswith("\n") else ""
132
+ with atomic_text_writer(ignore, newline="") as handle:
133
+ handle.write(text + separator + rule + newline)
134
+ if ignored is False and not _trace_git_ignored(project):
135
+ raise UserActionRequired("Git still does not ignore .atk/traces/. Resolve the conflicting ignore rules.")
110
136
  root.mkdir(mode=0o700, parents=True, exist_ok=True)
111
137
  return root, changed
112
138
 
@@ -203,7 +203,9 @@ CSV-only judgments remain supported. Integrity is distinct from coverage, source
203
203
 
204
204
  ## Uncertainty confirmation pattern
205
205
 
206
- Each Skill should inspect repository files first, state the evidence it found, and ask a concise confirmation question only when acting without confirmation would likely corrupt data, write the wrong files, or misinterpret evaluation results.
206
+ Trace optimization additionally follows the [implementation plan confirmation workflow](trace-tuning.md): prepare the concrete file-level plan in chat, obtain confirmation, then save the final plan and modify the implementation. This applies even to reversible implementation edits; reuse an unchanged plan already confirmed in the conversation.
207
+
208
+ Outside that Trace implementation confirmation, each Skill should inspect repository files first, state the evidence it found, and ask a concise confirmation question only when acting without confirmation would likely corrupt data, write the wrong files, or misinterpret evaluation results.
207
209
 
208
210
  Ask before proceeding when any of these remain unresolved after inspection:
209
211
 
@@ -8,15 +8,15 @@ Use the seven independent Skills in your Agent project:
8
8
 
9
9
  | Skill | Delivers |
10
10
  | --- | --- |
11
- | `$atk-trace-init` | Project context, supported sources and specific missing facts |
11
+ | `$atk-trace-init` | Automatically inferred tuning boundary, project context, supported sources and specific missing facts |
12
12
  | `$atk-trace-capture` | A retained session snapshot; stops after acquisition |
13
- | `$atk-trace-detect` | Evidence-backed issues and actual inspection coverage |
13
+ | `$atk-trace-detect` | Evidence-backed, actionable tuning issues and actual inspection coverage |
14
14
  | `$atk-trace-diagnose` | Per-issue root-cause explanations and repair/verification plans, reviewing all session issues by default with an implementation focus |
15
15
  | `$atk-trace-optimize` | An actual repair, frozen adopted diagnosis and candidate identity |
16
16
  | `$atk-trace-verify` | Actual execution, candidate loading and per-issue effect judgments |
17
17
  | `$atk-visualize-trace` | A self-contained offline HTML browser from existing records |
18
18
 
19
- A known problem can go directly to diagnosis after binding its session and issue. Without specified issues or symptoms, diagnosis reviews all available session traces, handles existing and newly found issues, and saves each diagnosis separately. It prioritizes causes directly related to the project implementation and may skip findings established as unrelated, recording reasons and coverage gaps. Unknown attribution remains an open question. Detection invoked on its own normally stops at the issue list. An explicit continuous investigation/repair request can proceed within its authorized scope without fixed per-stage confirmations. Capture, detect, diagnose, optimize and verify Skills generate/update the session preview at stage end without opening a browser, including zero-issue and partial sessions. Init has no bound session and does not generate an empty preview.
19
+ A known problem can go directly to diagnosis after binding its session and issue. Without specified issues or symptoms, diagnosis reviews all available session traces, applies the tuning boundary to newly found issues, reviews existing issues without silently discarding them, and saves each diagnosis separately. It may skip findings established as outside the effective boundary, recording reasons and coverage gaps. Unknown attribution remains an open question. Detection invoked on its own normally stops at the issue list. An explicit continuous investigation/repair request can proceed through investigation and implementation preparation; optimize obtains confirmation of the concrete plan before saving its final version and editing target files. An unchanged plan already confirmed in chat needs no repeated confirmation. Capture, detect, diagnose, optimize and verify Skills generate/update the session preview at stage end without opening a browser, including zero-issue and partial sessions. Init has no bound session and does not generate an empty preview.
20
20
 
21
21
  Every session command takes `--session-id`, optional `--source <json-file>` to disambiguate, `--project-root` (default `.`), and `--json`. JSON-taking arguments such as `--ref`, `--source`, `--config`, `--data`, `--association` and `--retention` receive a JSON file path, not inline JSON text. Save a returned reference object to a file before using it with `show`. Trace IDs locate evidence inside a session; they are not independent import/download entry points. Missing native session identity or verifiable association does not create a replacement identity.
22
22
 
@@ -47,7 +47,7 @@ Use the actual origin/project namespace rather than inferring one from a filenam
47
47
  atk trace init --config /path/to/source-config.json --project-file /path/to/project-notes.md --json
48
48
  ```
49
49
 
50
- `project.md` records purpose, relevant code/Prompt/tool locations, known run/verification entry points, sources and unknowns. Existing human notes are preserved; the initial generated placeholder can be filled, while a conflicting supplied human document requires reconciling confirmed differences rather than overwriting it. Explicit configuration updates recursively preserve other manual fields, including nested entries. Session metadata records the source and latest import scope.
50
+ `project.md` records the [tuning boundary](#tuning-boundary), relevant code/Prompt/tool locations and known run/verification entry points. The init Skill researches and writes this context; the bare CLI command only creates a placeholder when no project notes are supplied. Existing human notes are preserved; the initial generated placeholder can be filled, while a conflicting supplied human document requires reconciling confirmed differences rather than overwriting it. Explicit configuration updates recursively preserve other manual fields, including nested entries. Session metadata records the source and latest import scope.
51
51
 
52
52
  For Langfuse v4, configure the actual deployment and credential references:
53
53
 
@@ -69,6 +69,28 @@ For Langfuse v4, configure the actual deployment and credential references:
69
69
 
70
70
  Provide credentials through the referenced environment variables or an existing secure environment; never put their values in configuration, archives, terminal output or HTML. A configured source or installed SDK does not establish server version, connection success or replay readiness. Initialization is local; capture tests the real source. Remote capture requires an explicit time range, from configuration `from_time`/`to_time` or command arguments; no recent-days range is assumed.
71
71
 
72
+ ## Tuning boundary
73
+
74
+ The host infers the default tuning boundary from the user's requirements, project responsibilities and implementation entry points; users need not fill out a scope form or approve routine inference. Persist it in `.atk/traces/project.md` in the user's language, covering these five items:
75
+
76
+ - **Goal:** which Agent behavior the project is intended to improve.
77
+ - **Included:** projects and mechanisms that support this goal, such as runtime code, configuration, tool contracts, Prompt, Skill or recovery behavior.
78
+ - **Excluded:** established exclusions and their reasons, distinguishing user task artifacts from the implementation that produces them.
79
+ - **Unknown:** unresolved responsibility, availability or controllability; missing evidence is not an exclusion.
80
+ - **Sources:** the user requirements, project documents and implementation locations supporting those judgments.
81
+
82
+ Reference stable IDs and paths in `projects.json` rather than copying the project registry. Repository presence, editability, a runtime location, `source.project` or `--project-root` does not establish tuning relevance or grant modification authority. An external failure can still have an in-scope handling defect; inspect the relevant call or recovery mechanism before treating it as outside scope.
83
+
84
+ Before init, detect, diagnose, optimize or verify makes scope decisions, read the existing `project.md`, optional `.atk/context.md`, the project registry and relevant project entry documents. Preserve human constraints. Fill missing, placeholder or incomplete boundary context in the current workflow using available evidence. For a new or placeholder `project.md`, save through `atk trace init --project-file <markdown-file> --json` to preserve workspace ignore rules; reconcile existing human notes with targeted edits. This reuses the CLI without requiring a separate init Skill invocation. Ask only when a material ambiguity cannot be resolved from the request or available sources. A missing checkout or unverified historical version stays explicit and does not establish irrelevance.
85
+
86
+ The current user request determines the effective scope and can override saved defaults. A temporary focus applies to that invocation and subsequent work on its selected issues; do not silently persist it as the new project default. Reconcile only affected default notes when the user requests a lasting change or reliable project evidence updates an inferred responsibility; preserve unrelated notes and explicit user restrictions. Explain unresolved conflicts before dependent work. Report the effective scope and important unknowns without imposing an extra confirmation step.
87
+
88
+ In ordinary project tuning, apply the [detect selection policy](../skills/atk-trace-detect/SKILL.md#which-findings-to-retain) before creating an Issue. A retained tuning candidate needs an evidence-informed connection to an in-scope mechanism, a plausible intervention direction and a smallest check that can distinguish explanations or assess improvement. Neither a proven root cause nor a successful repair is required. A task-artifact correction or generic reminder alone does not establish project actionability. Seriousness and recurrence prioritize findings; they do not supply a missing project mechanism. Honor explicitly requested symptoms and comprehensive quality audits even without an implementation lead, describing that purpose and the actionability gap rather than presenting every finding as a tuning candidate.
89
+
90
+ Record the effective boundary, overrides and their sources in the existing detection `scope`, alongside actual inspected and unread material. Put unresolved boundary evidence in `gaps`; briefly explain established exclusions and surface serious unresolved findings in the coverage and delivery. Subsequent diagnosis, repair and verification read this recorded scope as well as current project context and the user's request. Explain any scope change, preserve prior records, and check that causes, actual modification locations and verification targets remain aligned. This scope description is not a session-level union of Issue project associations.
91
+
92
+ Capture and visualization consult existing boundary context when interpreting the request, but do not require boundary initialization, narrow retained evidence or reclassify saved Issues because of it. Their acquisition, retention and display contracts remain intact. The boundary is a host judgment contract using existing files and fields, not a CLI semantic validator.
93
+
72
94
  ## Capture or import
73
95
 
74
96
  Download a declared session range using Langfuse's read-only Observations API v2:
@@ -145,14 +167,14 @@ The following are host-produced records, not automatic CLI diagnoses. Each `--da
145
167
  | --- | --- |
146
168
  | `atk trace issue --session-id ID --data FILE --json` | `title`, `description`; optional `selection_reason` (nonempty string), `category` (a project category ID), `project_links` (associated projects with reasons and evidence), `segments`, top-level `evidence`, stable `id`, `status`, `notes`; updates include `revision`. `--dry-run` validates and reports covered nodes without writing |
147
169
  | `atk trace category --list --json` / `atk trace category --data FILE --json` | Project-level, no Session ID. `--list` returns the vocabulary, its `revision` and per-session usage. `--data` adds or revises one category: `id`, `name`, `definition`, optional `deprecated`, and the current vocabulary `revision` once the vocabulary exists |
148
- | `atk trace detect --session-id ID --data FILE --json` | nonempty `scope` describing inspected and unread material, actual `status`, `gaps: []`; inputs bind current file digests; updates include `id`/`revision` |
170
+ | `atk trace detect --session-id ID --data FILE --json` | nonempty `scope` describing the effective tuning boundary, overrides and inspected/unread material, actual `status`, `gaps: []`; inputs bind current file digests; updates include `id`/`revision` |
149
171
  | `atk trace diagnose --session-id ID --issue-id ISSUE --file MD --expected-revision N --json` | Markdown combining observed issue/evidence, facts/hypotheses, cause, repair/verification plan and gaps; use the latest Issue revision after saving project associations; optional `--diagnosis-id`. Markdown may cite `ISSUE-001/S2` |
150
172
  | `atk trace change --session-id ID --issue-id ISSUE --data FILE --json` | Begin with `status: "running"`, nonempty `before` identifying actual baseline and adopted `diagnoses`; finish with same `id`/`revision`, actual `candidate`, `diff`, `checks: []`, `change_summary`, `remaining_verification` and `status: "completed"` |
151
173
  | `atk trace verify --session-id ID --issue-id OWNER --change-id CHANGE --data FILE --json` | Begin with actual intended `execution` and `status: "running"`; finish same `id`/`revision`, actual status, `candidate_loaded`, `loading_evidence`, `execution`, `verification_summary`, `conclusions`, `limitations`, `evidence` |
152
174
 
153
- Detection selects findings before creating Issues. The selection policy lives in [atk-trace-detect](../skills/atk-trace-detect/SKILL.md#which-findings-to-retain). Detection writes `selection_reason` to explain why an issue warrants investigation. The title and description first state a concrete, evidence-backed mismatch understandable without the trace, then add impact/recovery, relevant recurrence, implementation leads and unresolved questions. The [description guidance](../skills/atk-trace-detect/SKILL.md#write-a-recognizable-problem) defines the host's semantic check. The CLI validates record shape, not semantic quality. The reason remains optional for compatibility; omission during an update preserves it. Revisions retain the previous reason in history, and new diagnoses snapshot the reason when present.
175
+ Detection selects findings before creating Issues using the [effective tuning boundary](#tuning-boundary) and the [atk-trace-detect selection policy](../skills/atk-trace-detect/SKILL.md#which-findings-to-retain). Detection writes `selection_reason` to explain the issue's value, in-scope mechanism, intervention direction and smallest discriminating check, or the explicit audit/symptom request that warrants retaining a finding without that lead. The title and description first state a concrete, evidence-backed mismatch understandable without the trace, then add impact/recovery, relevant recurrence, implementation leads and unresolved questions. The [description guidance](../skills/atk-trace-detect/SKILL.md#write-a-recognizable-problem) defines the host's semantic check. The CLI validates record shape, not semantic quality. The reason remains optional for compatibility; omission during an update preserves it. Revisions retain the previous reason in history, and new diagnoses snapshot the reason when present.
154
176
 
155
- [Diagnosis](../skills/atk-trace-diagnose/SKILL.md) continues from those questions without treating selection as proof of a cause. Its description identifies the problem independently, each cause explains that problem, and each fix addresses a cause or uncertainty. Scope changes reconcile the live issue while preserving history. An independent defect without an established causal link is recorded separately. Final summaries draw from the saved explanations. Existing issues skipped as unrelated to the implementation receive `status: excluded` with an evidence-backed reason appended to their `notes`, preserving evidence and history. New findings already established as unrelated need only a brief exclusion reason in review coverage. A rejected hypothesis or missing evidence alone is insufficient for exclusion. Explicitly requested issues receive an attribution explanation even when unrelated. Coverage records the focus, selection scope and gaps. Zero retained issues is not a correctness verdict.
177
+ [Diagnosis](../skills/atk-trace-diagnose/SKILL.md) continues from those questions without treating selection as proof of a cause. Its description identifies the problem independently, each cause explains that problem, and each fix addresses a cause or uncertainty. Scope changes reconcile the live issue while preserving history. An independent defect without an established causal link follows the same selection policy before being recorded separately. Final summaries draw from the saved explanations. Existing issues skipped as unrelated to the implementation receive `status: excluded` with an evidence-backed reason appended to their `notes`, preserving evidence and history; a temporary focus does not permanently exclude other issues. New findings established as outside scope need only a brief exclusion reason in review coverage. Findings without enough actionability evidence remain coverage gaps, with serious unresolved findings surfaced explicitly. A rejected hypothesis, missing evidence or empty `project_links` alone is insufficient to exclude an existing issue. Explicitly requested issues receive an attribution explanation even when unrelated. Coverage records the focus, selection scope and gaps. Zero retained issues is not a correctness verdict.
156
178
 
157
179
  ### Issue categories
158
180
 
@@ -226,6 +248,12 @@ Segments are ordered by their scoped observations' start times. For a final answ
226
248
 
227
249
  Issue IDs are stable within the session. Omitting an old issue during new detection does not resolve it. Exclusion/correction needs a reason while preserving history. Detection coverage includes zero findings, checked/unread nodes, partial work and interruptions; an empty issue list does not prove correctness. Re-capture creates new unanalyzed material rather than rewriting previous coverage.
228
250
 
251
+ Optimize prepares and revises the file-level implementation plan in Codex chat. Include project/file/symbol or configuration/Skill section, concrete edits, before/after behavior, causal reason, necessary supporting changes and checks with pass criteria. Present the consolidated plan for confirmation. Drafts and review discussion stay in chat unless explicitly requested as a saved draft. General repair authorization and saved drafts do not confirm an undisclosed plan.
252
+
253
+ After confirmation, save exactly the agreed final plan as `### 详细实施方案` / `### Detailed implementation plan` under the diagnosis's third heading, preserving its description, causes and limits. Create a new immutable diagnosis snapshot (or reuse an identical one), then bind its path/digest in the running change before implementation. Saving failure prevents implementation. Shared repairs use one combined confirmed scope and one change binding each target's diagnosis. No approval metadata, progress state or review UI is added. A saved plan proves neither confirmation nor execution. The preview shows the detailed plan in diagnosis and actual edits in change summaries; the dashboard retains existing progress semantics.
254
+
255
+ Material scope changes require confirming the revised complete plan before additional edits and saving a new diagnosis. Routine choices within scope and unrelated repository changes need no new confirmation. If implementation has started, preserve actual progress and end that attempt before starting a new change bound to the revised diagnosis; never overwrite frozen references or blindly repeat work. On resumption, inspect Git/files and records and establish confirmation from the conversation. Delivery compares actual changes against the confirmed plan, including unimplemented items.
256
+
229
257
  Diagnoses are immutable Markdown and include an issue snapshot (including segments when present). Adopted diagnoses bind path and digest. Change `target_issues` may list several issues and `diagnoses` maps each target issue to its adopted reference. Save a shared modification once under its owner issue; the other issues explicitly reference that owner-relative change path. Completed candidates are frozen; a new diagnosis/candidate is a new record.
230
258
 
231
259
  A verification conclusion has this shape:
@@ -380,7 +408,7 @@ No private trace, credential, company gateway or business example is bundled. Au
380
408
 
381
409
  ## Projects and scope
382
410
 
383
- Use `atk trace project --list --json` to resolve existing project IDs, names, established abbreviations and workspace-relative paths. `--project-root` remains the archive workspace; it is not an attribution target. Prefer user-specified projects for investigation, then follow evidence into other projects. Never invent abbreviations. A caller, runtime location or proposed fix alone does not establish a project association.
411
+ Use `atk trace project --list --json` to resolve existing project IDs, names, established abbreviations and workspace-relative paths. `--project-root` remains the archive workspace; it is not an attribution target. Prefer user-specified projects for investigation; follow cross-project evidence without silently broadening the effective tuning boundary. Never invent abbreviations. A caller, runtime location or proposed fix alone does not establish a project association.
384
412
 
385
413
  Read the applicable project's README, AGENTS.md and CLAUDE.md (including actual filename case variants) before investigation or modification. Keep project IDs and workspace-relative paths consistent. State inspected and uninspected scope, proposed versus actual modifications, candidate versions and per-project loading evidence. When modifying another project, explain the tradeoff and remaining limits. Do not update parent gitlinks without explicit authorization.
386
414
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "agent-tune-kit"
7
- version = "2.4.1"
7
+ version = "2.4.2"
8
8
  description = "Local Codex plugin for iterative Agent tuning with guided Skills, reusable runner templates, versioned results, and static validation."
9
9
  readme = "README.en.md"
10
10
  requires-python = ">=3.11"
@@ -141,11 +141,11 @@ def require_uv() -> str:
141
141
 
142
142
 
143
143
  def run_static_python_checks() -> None:
144
- run(["uv", "run", "ruff", "format", "."])
145
- run(["uv", "run", "ruff", "check", "--fix", "."])
146
- run(["uv", "run", "ruff", "format", "--check", "."])
147
- run(["uv", "run", "ruff", "check", "."])
148
- run(["uv", "run", "python", "-m", "py_compile", *PYTHON_FILES], timeout=120)
144
+ run(["uv", "run", "--locked", "ruff", "format", "."])
145
+ run(["uv", "run", "--locked", "ruff", "check", "--fix", "."])
146
+ run(["uv", "run", "--locked", "ruff", "format", "--check", "."])
147
+ run(["uv", "run", "--locked", "ruff", "check", "."])
148
+ run(["uv", "run", "--locked", "python", "-m", "py_compile", *PYTHON_FILES], timeout=120)
149
149
 
150
150
 
151
151
  def read_project_identity() -> ProjectIdentity:
@@ -403,10 +403,10 @@ def main() -> int:
403
403
  assert_versions_aligned(identity)
404
404
  clean_generated_artifacts()
405
405
  try:
406
- run(["uv", "sync"], timeout=180)
406
+ run(["uv", "sync", "--locked"], timeout=180)
407
407
  run_static_python_checks()
408
- run(["uv", "run", "python", "scripts/validate_skill_pack.py"], timeout=120)
409
- run(["uv", "run", "pytest", "-q"], timeout=240)
408
+ run(["uv", "run", "--locked", "python", "scripts/validate_skill_pack.py"], timeout=120)
409
+ run(["uv", "run", "--locked", "pytest", "-q"], timeout=240)
410
410
  with tempfile.TemporaryDirectory(prefix="atk-release-check-") as tmp:
411
411
  temp_dir = Path(tmp)
412
412
  wheel, sdist = build_distributions(temp_dir / "dist", identity)
@@ -6,4 +6,4 @@ cd "$(dirname "${BASH_SOURCE[0]}")/.."
6
6
  # Credential handling lives in publish-release.py; it accepts UV_PUBLISH_TOKEN
7
7
  # or a matching ~/.pypirc section for the target repository.
8
8
  export UV_NO_CONFIG=1
9
- exec uv run python scripts/publish-release.py --repository pypi --publish
9
+ exec uv run --locked python scripts/publish-release.py --repository pypi --publish
@@ -292,7 +292,7 @@ def main() -> int:
292
292
  for artifact in artifacts:
293
293
  print(f"- {artifact.relative_to(REPO_ROOT)}")
294
294
  print(
295
- f"To publish: UV_PUBLISH_TOKEN='pypi-...' uv run python scripts/publish-release.py --repository {target.name} --publish"
295
+ f"To publish: UV_PUBLISH_TOKEN='pypi-...' UV_NO_CONFIG=1 uv run --locked python scripts/publish-release.py --repository {target.name} --publish"
296
296
  )
297
297
  return 0
298
298
 
@@ -87,9 +87,9 @@ def release_commands(
87
87
  commands = [
88
88
  ["git", "status", "--porcelain"],
89
89
  ["uv", "lock"],
90
- ["uv", "run", "pytest"],
91
- ["uv", "run", "atk", "--version"],
92
- ["uv", "run", "python", "scripts/validate_skill_pack.py"],
90
+ ["uv", "run", "--locked", "pytest"],
91
+ ["uv", "run", "--locked", "atk", "--version"],
92
+ ["uv", "run", "--locked", "python", "scripts/validate_skill_pack.py"],
93
93
  ["git", "diff", "--check"],
94
94
  ["git", "add", *RELEASE_FILES],
95
95
  ["git", "commit", "-m", f"Prepare Agent Tune Kit {version} release"],
@@ -101,6 +101,7 @@ def release_commands(
101
101
  publish_command = [
102
102
  "uv",
103
103
  "run",
104
+ "--locked",
104
105
  "python",
105
106
  "scripts/publish-release.py",
106
107
  "--repository",
@@ -130,9 +131,9 @@ def commit_message(version: str) -> list[str]:
130
131
  "-m",
131
132
  "Directive: use scripts/release-version.sh for future version bumps so tag, push, and publish steps remain consistent.",
132
133
  "-m",
133
- "Tested: uv run pytest; uv run atk --version; git diff --check",
134
+ "Tested: uv run --locked pytest; uv run --locked atk --version; git diff --check",
134
135
  "-m",
135
- "Not-tested: uv run python scripts/validate_skill_pack.py may report known README/plugin documentation phrase gaps unless strict mode is used.",
136
+ "Not-tested: uv run --locked python scripts/validate_skill_pack.py may report known README/plugin documentation phrase gaps unless strict mode is used.",
136
137
  "-m",
137
138
  "Co-authored-by: OmX <omx@oh-my-codex.dev>",
138
139
  ]
@@ -190,13 +191,13 @@ def main() -> int:
190
191
  print(f"- {path}")
191
192
 
192
193
  run(["uv", "lock"])
193
- run(["uv", "run", "pytest"])
194
- version_output = capture(["uv", "run", "atk", "--version"])
194
+ run(["uv", "run", "--locked", "pytest"])
195
+ version_output = capture(["uv", "run", "--locked", "atk", "--version"])
195
196
  expected_version_output = f"agent-tune-kit {args.version}"
196
197
  if version_output != expected_version_output:
197
198
  raise ReleaseVersionError(f"unexpected CLI version output: {version_output!r}")
198
199
 
199
- skill_pack = run(["uv", "run", "python", "scripts/validate_skill_pack.py"], check=False)
200
+ skill_pack = run(["uv", "run", "--locked", "python", "scripts/validate_skill_pack.py"], check=False)
200
201
  if skill_pack.returncode != 0 and args.strict_skill_pack:
201
202
  raise ReleaseVersionError("scripts/validate_skill_pack.py failed in strict mode")
202
203
  if skill_pack.returncode != 0:
@@ -213,6 +214,7 @@ def main() -> int:
213
214
  publish_command = [
214
215
  "uv",
215
216
  "run",
217
+ "--locked",
216
218
  "python",
217
219
  "scripts/publish-release.py",
218
220
  "--repository",
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ cd "$(dirname "${BASH_SOURCE[0]}")/.."
5
+
6
+ export UV_NO_CONFIG=1
7
+ exec uv run --locked python scripts/release-version.py "$@"
@@ -125,7 +125,7 @@ REQUIRED_FILES += TRACE_SKILL_FILES + [
125
125
  ]
126
126
 
127
127
  PER_FILE_PHRASES = {
128
- ".codex-plugin/plugin.json": ['"name": "agent-tune-kit"', '"version": "2.4.1"', '"skills": "./skills/"'],
128
+ ".codex-plugin/plugin.json": ['"name": "agent-tune-kit"', '"version": "2.4.2"', '"skills": "./skills/"'],
129
129
  "skills/atk-dataset/SKILL.md": [
130
130
  "## Purpose",
131
131
  "## Inputs",
@@ -21,7 +21,7 @@ Session identity, local path, actual trace/observation counts, selector/field sc
21
21
 
22
22
  ## Workflow
23
23
 
24
- 1. Resolve the session/source and inspect existing status before retrying. A running/interrupted capture may have performed requests; verify retained facts before repeating. Analysis of saved data does not require a new capture.
24
+ 1. Read the shared [tuning boundary](../../docs/trace-tuning.md#tuning-boundary) rules and existing `.atk/traces/project.md` when present. Capture follows the requested acquisition scope, not tuning eligibility: keep authorized evidence for outside or unknown components, and do not require init or boundary completion. Resolve the session/source and inspect existing status before retrying. A running/interrupted capture may have performed requests; verify retained facts before repeating. Analysis of saved data does not require a new capture.
25
25
  2. Reuse `.atk/traces/config.json` or an explicit config. Missing dataset, runner or Agent runtime is irrelevant. Ask only for necessary source settings; never invent a recent-days window or infer server version from an SDK/export wrapper.
26
26
  3. Use `atk trace fetch --session-id <id> --json`, optionally `--config <file> --from-time <timestamp> --to-time <timestamp>`. The CLI handles Session filtering, cursor pagination and updates by native Trace ID. Existing issues survive reimport.
27
27
  4. For local material use `atk trace import --session-id <id> --source <source-json> --path <file> --json`, repeating `--path`. Supply `--association <json>` only with sourced association proof; use `--retention <json>` as needed. A supplied ID or directory name alone is not ownership proof. Import necessary ATK execution evidence with original identities/provenance, not an entire project.