codex-usage-tracking 0.12.0__tar.gz → 0.13.0__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 (383) hide show
  1. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/.codex-plugin/plugin.json +1 -1
  2. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/CHANGELOG.md +15 -0
  3. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/PKG-INFO +7 -3
  4. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/README.md +5 -1
  5. codex_usage_tracking-0.13.0/docs/adoption-hardening-roadmap.md +130 -0
  6. codex_usage_tracking-0.13.0/docs/architecture/decisions/0001-package-domain-boundaries.md +7 -0
  7. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/cli-json-schemas.md +1 -0
  8. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/cli-reference.md +2 -0
  9. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/development.md +10 -7
  10. codex_usage_tracking-0.13.0/docs/first-five-minutes.md +93 -0
  11. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/install.md +3 -1
  12. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/maintainability-roadmap.md +93 -0
  13. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/one-dot-oh-readiness.md +8 -8
  14. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/pyproject.toml +10 -10
  15. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/scripts/benchmark_synthetic_history.py +5 -5
  16. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/scripts/check_release.py +1 -1
  17. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/scripts/install_local_plugin.py +5 -2
  18. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/scripts/model_usage_drain.py +7 -4
  19. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/scripts/smoke_installed_package.py +199 -3
  20. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/skills/codex-usage-tracker/scripts/run_mcp.py +2 -2
  21. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/__init__.py +2 -2
  22. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/__main__.py +1 -1
  23. codex_usage_tracking-0.13.0/src/codex_usage_tracker/allowance.py +9 -0
  24. codex_usage_tracking-0.13.0/src/codex_usage_tracker/cli/__init__.py +19 -0
  25. codex_usage_tracking-0.13.0/src/codex_usage_tracker/cli/__main__.py +10 -0
  26. codex_usage_tracking-0.12.0/src/codex_usage_tracker/cli_config.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/cli/config.py +6 -6
  27. codex_usage_tracking-0.12.0/src/codex_usage_tracker/cli_dashboard.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/cli/dashboard.py +6 -6
  28. codex_usage_tracking-0.12.0/src/codex_usage_tracker/cli_diagnostics.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/cli/diagnostics.py +3 -3
  29. codex_usage_tracking-0.12.0/src/codex_usage_tracker/cli.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/cli/main.py +35 -23
  30. {codex_usage_tracking-0.12.0/src/codex_usage_tracker → codex_usage_tracking-0.13.0/src/codex_usage_tracker/cli}/mcp_server.py +13 -13
  31. codex_usage_tracking-0.12.0/src/codex_usage_tracker/cli_parser.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/cli/parser.py +6 -6
  32. codex_usage_tracking-0.12.0/src/codex_usage_tracker/cli_parser_diagnostics.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/cli/parser_diagnostics.py +1 -1
  33. {codex_usage_tracking-0.12.0/src/codex_usage_tracker → codex_usage_tracking-0.13.0/src/codex_usage_tracker/cli}/plugin_installer.py +1 -1
  34. codex_usage_tracking-0.13.0/src/codex_usage_tracker/context/__init__.py +15 -0
  35. codex_usage_tracking-0.13.0/src/codex_usage_tracker/context/api.py +99 -0
  36. codex_usage_tracking-0.13.0/src/codex_usage_tracker/context/constants.py +7 -0
  37. codex_usage_tracking-0.12.0/src/codex_usage_tracker/context_loader.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/context/loader.py +2 -2
  38. codex_usage_tracking-0.12.0/src/codex_usage_tracker/context.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/context/reader.py +11 -76
  39. codex_usage_tracking-0.12.0/src/codex_usage_tracker/context_serialized.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/context/serialized.py +2 -2
  40. codex_usage_tracking-0.12.0/src/codex_usage_tracker/context_summaries.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/context/summaries.py +1 -1
  41. codex_usage_tracking-0.12.0/src/codex_usage_tracker/context_values.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/context/values.py +1 -1
  42. codex_usage_tracking-0.13.0/src/codex_usage_tracker/core/__init__.py +1 -0
  43. {codex_usage_tracking-0.12.0/src/codex_usage_tracker → codex_usage_tracking-0.13.0/src/codex_usage_tracker/core}/formatting.py +41 -0
  44. codex_usage_tracking-0.13.0/src/codex_usage_tracker/core/json_contract_cli.py +244 -0
  45. codex_usage_tracking-0.13.0/src/codex_usage_tracker/core/json_contract_common.py +22 -0
  46. codex_usage_tracking-0.13.0/src/codex_usage_tracker/core/json_contract_diagnostics.py +168 -0
  47. codex_usage_tracking-0.13.0/src/codex_usage_tracker/core/json_contract_server.py +106 -0
  48. codex_usage_tracking-0.13.0/src/codex_usage_tracker/core/json_contracts.py +26 -0
  49. {codex_usage_tracking-0.12.0/src/codex_usage_tracker → codex_usage_tracking-0.13.0/src/codex_usage_tracker/core}/projects.py +1 -1
  50. codex_usage_tracking-0.13.0/src/codex_usage_tracker/dashboard/__init__.py +15 -0
  51. codex_usage_tracking-0.12.0/src/codex_usage_tracker/dashboard.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/dashboard/api.py +23 -23
  52. codex_usage_tracking-0.12.0/src/codex_usage_tracker/dashboard_assets.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/dashboard/assets.py +1 -1
  53. codex_usage_tracking-0.13.0/src/codex_usage_tracker/diagnostics/__init__.py +15 -0
  54. codex_usage_tracking-0.12.0/src/codex_usage_tracker/diagnostics.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/diagnostics/api.py +121 -11
  55. codex_usage_tracking-0.12.0/src/codex_usage_tracker/diagnostic_fact_classifiers.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/diagnostics/fact_classifiers.py +1 -1
  56. codex_usage_tracking-0.12.0/src/codex_usage_tracker/diagnostic_facts.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/diagnostics/facts.py +2 -2
  57. codex_usage_tracking-0.12.0/src/codex_usage_tracker/diagnostics_mcp.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/diagnostics/mcp.py +3 -3
  58. codex_usage_tracking-0.12.0/src/codex_usage_tracker/diagnostic_reports.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/diagnostics/reports.py +3 -3
  59. codex_usage_tracking-0.12.0/src/codex_usage_tracker/diagnostic_snapshot_analysis.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/diagnostics/snapshot_analysis.py +5 -5
  60. codex_usage_tracking-0.12.0/src/codex_usage_tracker/diagnostic_snapshot_concentration.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/diagnostics/snapshot_concentration.py +2 -2
  61. codex_usage_tracking-0.12.0/src/codex_usage_tracker/diagnostic_snapshot_payloads.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/diagnostics/snapshot_payloads.py +3 -3
  62. codex_usage_tracking-0.12.0/src/codex_usage_tracker/diagnostic_snapshot_report.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/diagnostics/snapshot_report.py +2 -2
  63. codex_usage_tracking-0.12.0/src/codex_usage_tracker/diagnostic_snapshot_rows.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/diagnostics/snapshot_rows.py +1 -1
  64. codex_usage_tracking-0.12.0/src/codex_usage_tracker/diagnostic_snapshot_source_logs.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/diagnostics/snapshot_source_logs.py +6 -6
  65. codex_usage_tracking-0.12.0/src/codex_usage_tracker/diagnostic_snapshot_source_scan.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/diagnostics/snapshot_source_scan.py +1 -1
  66. codex_usage_tracking-0.12.0/src/codex_usage_tracker/diagnostic_snapshots.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/diagnostics/snapshots.py +16 -16
  67. codex_usage_tracking-0.13.0/src/codex_usage_tracker/mcp_server.py +13 -0
  68. codex_usage_tracking-0.13.0/src/codex_usage_tracker/parser/__init__.py +15 -0
  69. codex_usage_tracking-0.12.0/src/codex_usage_tracker/parser.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/parser/api.py +6 -6
  70. codex_usage_tracking-0.12.0/src/codex_usage_tracker/parser_jsonl_v1.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/parser/jsonl_v1.py +5 -5
  71. codex_usage_tracking-0.12.0/src/codex_usage_tracker/parser_jsonl_values.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/parser/jsonl_values.py +2 -2
  72. codex_usage_tracking-0.12.0/src/codex_usage_tracker/parser_state.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/parser/state.py +3 -3
  73. codex_usage_tracking-0.13.0/src/codex_usage_tracker/plugin_installer.py +9 -0
  74. codex_usage_tracking-0.13.0/src/codex_usage_tracker/pricing/__init__.py +15 -0
  75. codex_usage_tracking-0.13.0/src/codex_usage_tracker/pricing/allowance.py +63 -0
  76. codex_usage_tracking-0.12.0/src/codex_usage_tracker/allowance.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/pricing/allowance_config.py +4 -207
  77. {codex_usage_tracking-0.12.0/src/codex_usage_tracker → codex_usage_tracking-0.13.0/src/codex_usage_tracker/pricing}/allowance_rate_card.py +1 -1
  78. codex_usage_tracking-0.13.0/src/codex_usage_tracker/pricing/allowance_usage.py +200 -0
  79. codex_usage_tracking-0.12.0/src/codex_usage_tracker/pricing.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/pricing/api.py +10 -10
  80. codex_usage_tracking-0.12.0/src/codex_usage_tracker/pricing_config.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/pricing/config.py +1 -1
  81. {codex_usage_tracking-0.12.0/src/codex_usage_tracker → codex_usage_tracking-0.13.0/src/codex_usage_tracker/pricing}/costing.py +2 -2
  82. codex_usage_tracking-0.12.0/src/codex_usage_tracker/pricing_openai.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/pricing/openai.py +3 -3
  83. codex_usage_tracking-0.13.0/src/codex_usage_tracker/reports/__init__.py +15 -0
  84. codex_usage_tracking-0.12.0/src/codex_usage_tracker/reports.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/reports/api.py +19 -19
  85. codex_usage_tracking-0.12.0/src/codex_usage_tracker/report_project_summary.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/reports/project_summary.py +3 -3
  86. {codex_usage_tracking-0.12.0/src/codex_usage_tracker → codex_usage_tracking-0.13.0/src/codex_usage_tracker/reports}/recommendations.py +1 -1
  87. {codex_usage_tracking-0.12.0/src/codex_usage_tracker → codex_usage_tracking-0.13.0/src/codex_usage_tracker/reports}/support.py +102 -12
  88. codex_usage_tracking-0.13.0/src/codex_usage_tracker/server/__init__.py +22 -0
  89. codex_usage_tracking-0.13.0/src/codex_usage_tracker/server/api.py +133 -0
  90. codex_usage_tracking-0.12.0/src/codex_usage_tracker/server_call_detail.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/server/call_detail.py +2 -2
  91. codex_usage_tracking-0.12.0/src/codex_usage_tracker/server_call_lists.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/server/call_lists.py +2 -2
  92. codex_usage_tracking-0.12.0/src/codex_usage_tracker/server_context.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/server/context.py +2 -2
  93. codex_usage_tracking-0.12.0/src/codex_usage_tracker/server_context_settings.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/server/context_settings.py +1 -1
  94. codex_usage_tracking-0.12.0/src/codex_usage_tracker/server_dashboard_shell.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/server/dashboard_shell.py +3 -3
  95. codex_usage_tracking-0.12.0/src/codex_usage_tracker/server_diagnostic_facts.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/server/diagnostic_facts.py +2 -2
  96. codex_usage_tracking-0.12.0/src/codex_usage_tracker/server_diagnostic_routes.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/server/diagnostic_routes.py +3 -3
  97. codex_usage_tracking-0.12.0/src/codex_usage_tracker/server_diagnostic_snapshots.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/server/diagnostic_snapshots.py +2 -2
  98. codex_usage_tracking-0.12.0/src/codex_usage_tracker/server.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/server/handler.py +25 -120
  99. codex_usage_tracking-0.12.0/src/codex_usage_tracker/server_live_queries.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/server/live_queries.py +1 -1
  100. codex_usage_tracking-0.12.0/src/codex_usage_tracker/server_live_rows.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/server/live_rows.py +11 -8
  101. codex_usage_tracking-0.12.0/src/codex_usage_tracker/server_open_investigator.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/server/open_investigator.py +1 -1
  102. codex_usage_tracking-0.12.0/src/codex_usage_tracker/server_recommendations.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/server/recommendations.py +2 -2
  103. codex_usage_tracking-0.12.0/src/codex_usage_tracker/server_request_guards.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/server/request_guards.py +1 -1
  104. codex_usage_tracking-0.12.0/src/codex_usage_tracker/server_responses.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/server/responses.py +1 -1
  105. codex_usage_tracking-0.12.0/src/codex_usage_tracker/server_status.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/server/status.py +2 -2
  106. codex_usage_tracking-0.12.0/src/codex_usage_tracker/server_summary.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/server/summary.py +2 -2
  107. codex_usage_tracking-0.12.0/src/codex_usage_tracker/server_threads.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/server/threads.py +2 -2
  108. codex_usage_tracking-0.12.0/src/codex_usage_tracker/server_usage_refresh.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/server/usage_refresh.py +4 -4
  109. codex_usage_tracking-0.13.0/src/codex_usage_tracker/store/__init__.py +15 -0
  110. codex_usage_tracking-0.12.0/src/codex_usage_tracker/store.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/store/api.py +31 -31
  111. codex_usage_tracking-0.12.0/src/codex_usage_tracker/store_connection.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/store/connection.py +1 -1
  112. codex_usage_tracking-0.12.0/src/codex_usage_tracker/store_dashboard_queries.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/store/dashboard_queries.py +6 -6
  113. codex_usage_tracking-0.12.0/src/codex_usage_tracker/store_diagnostic_call_queries.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/store/diagnostic_call_queries.py +6 -6
  114. codex_usage_tracking-0.12.0/src/codex_usage_tracker/store_diagnostic_queries.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/store/diagnostic_queries.py +5 -5
  115. codex_usage_tracking-0.12.0/src/codex_usage_tracker/store_exports.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/store/exports.py +7 -7
  116. codex_usage_tracking-0.12.0/src/codex_usage_tracker/store_refresh.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/store/refresh.py +8 -8
  117. codex_usage_tracking-0.12.0/src/codex_usage_tracker/store_schema.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/store/schema.py +1 -1
  118. codex_usage_tracking-0.12.0/src/codex_usage_tracker/store_sources.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/store/sources.py +2 -2
  119. codex_usage_tracking-0.12.0/src/codex_usage_tracker/store_summary_queries.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/store/summary_queries.py +5 -5
  120. codex_usage_tracking-0.12.0/src/codex_usage_tracker/store_thread_summaries.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/store/thread_summaries.py +5 -5
  121. codex_usage_tracking-0.12.0/src/codex_usage_tracker/store_usage_api_queries.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/store/usage_api_queries.py +6 -6
  122. codex_usage_tracking-0.12.0/src/codex_usage_tracker/store_usage_record_queries.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/store/usage_record_queries.py +6 -6
  123. codex_usage_tracking-0.13.0/src/codex_usage_tracker/support.py +9 -0
  124. codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/__init__.py +1 -0
  125. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_allowance_breakpoints.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/allowance_breakpoints.py +7 -7
  126. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_allowance_fits.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/allowance_fits.py +7 -7
  127. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_allowance_online.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/allowance_online.py +4 -4
  128. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_boundary_delta.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/boundary_delta.py +2 -2
  129. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_boundary_delta_core.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/boundary_delta_core.py +5 -5
  130. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_boundary_delta_rows.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/boundary_delta_rows.py +5 -5
  131. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_boundary_delta_summary.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/boundary_delta_summary.py +7 -7
  132. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_boundary_summary.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/boundary_summary.py +12 -12
  133. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_capacity_specs.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/capacity_specs.py +2 -2
  134. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_error_diagnostics.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/error_diagnostics.py +2 -2
  135. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_feature_history.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/feature_history.py +1 -1
  136. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_features.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/features.py +2 -2
  137. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_grace.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/grace.py +4 -4
  138. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_history_state.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/history_state.py +3 -3
  139. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_model.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/model.py +31 -31
  140. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_predictive.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/predictive.py +6 -6
  141. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_predictive_specs.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/predictive_specs.py +1 -1
  142. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_proxy_fit.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/proxy_fit.py +9 -9
  143. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_regime_labels.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/regime_labels.py +1 -1
  144. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_regime_segments.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/regime_segments.py +11 -11
  145. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_regression.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/regression.py +2 -2
  146. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_reports.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/reports.py +12 -9
  147. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_spans.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/spans.py +1 -1
  148. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_state_buckets.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/state_buckets.py +3 -3
  149. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_state_diagnostics.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/state_diagnostics.py +2 -2
  150. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_summary_metrics.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/summary_metrics.py +3 -3
  151. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_time_series.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/time_series.py +1 -1
  152. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_token_components.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/token_components.py +5 -5
  153. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_transition_gates.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/transition_gates.py +2 -2
  154. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_transition_metrics.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/transition_metrics.py +4 -4
  155. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_utils.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/utils.py +1 -1
  156. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_walk_forward.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/walk_forward.py +12 -12
  157. codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_walk_forward_rows.py → codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/walk_forward_rows.py +22 -22
  158. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracking.egg-info/PKG-INFO +7 -3
  159. codex_usage_tracking-0.13.0/src/codex_usage_tracking.egg-info/SOURCES.txt +379 -0
  160. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracking.egg-info/requires.txt +1 -1
  161. codex_usage_tracking-0.13.0/tests/__init__.py +1 -0
  162. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/cli}/test_cli_lifecycle.py +6 -3
  163. codex_usage_tracking-0.13.0/tests/cli/test_cli_module_entrypoints.py +35 -0
  164. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/cli}/test_cli_parser_diagnostics.py +1 -1
  165. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/cli}/test_cli_release.py +19 -19
  166. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/cli}/test_mcp_integration.py +12 -13
  167. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/cli}/test_mcp_launcher.py +1 -1
  168. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/cli}/test_plugin_installer.py +2 -2
  169. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/context}/test_context_action_timing.py +1 -1
  170. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/context}/test_context_evidence.py +8 -8
  171. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/context}/test_context_scan.py +3 -4
  172. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/context}/test_context_serialized.py +1 -1
  173. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/context}/test_context_summaries.py +1 -1
  174. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/context}/test_context_token_estimates.py +1 -1
  175. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/context}/test_context_values.py +1 -1
  176. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/core}/test_call_origin.py +1 -1
  177. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/core}/test_formatting.py +1 -1
  178. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/core}/test_i18n.py +11 -11
  179. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/core}/test_json_contracts.py +11 -11
  180. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/core}/test_privacy.py +7 -7
  181. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/core}/test_projects.py +1 -1
  182. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/core}/test_redaction.py +1 -1
  183. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/core}/test_schema.py +3 -3
  184. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/core}/test_threads.py +1 -1
  185. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/dashboard}/test_dashboard_data.py +2 -2
  186. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/dashboard}/test_dashboard_diagnostics_snapshots.py +1 -1
  187. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/dashboard}/test_dashboard_live.py +2 -2
  188. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/dashboard}/test_dashboard_payload.py +9 -9
  189. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/dashboard}/test_dashboard_pricing_snapshot.py +1 -1
  190. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/dashboard}/test_dashboard_server.py +19 -19
  191. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/dashboard}/test_dashboard_state.py +1 -1
  192. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/dashboard}/test_dashboard_status.py +1 -1
  193. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/diagnostics}/test_diagnostic_fact_classifiers.py +2 -2
  194. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/diagnostics}/test_diagnostic_reports.py +1 -1
  195. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/diagnostics}/test_diagnostic_snapshot_events.py +1 -1
  196. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/diagnostics}/test_diagnostic_snapshot_report.py +2 -2
  197. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/diagnostics}/test_diagnostic_snapshot_source_scan.py +1 -1
  198. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/diagnostics}/test_diagnostic_snapshots.py +12 -13
  199. codex_usage_tracking-0.13.0/tests/diagnostics/test_doctor_first_run.py +42 -0
  200. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/parser}/test_parser.py +3 -3
  201. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/parser}/test_parser_inspect_log.py +2 -3
  202. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/parser}/test_parser_state.py +3 -3
  203. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/pricing}/test_allowance.py +1 -1
  204. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/pricing}/test_pricing.py +1 -1
  205. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/reports}/test_recommendations.py +1 -1
  206. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/reports}/test_support.py +13 -2
  207. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/server}/test_server_call_detail.py +1 -1
  208. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/server}/test_server_call_lists.py +1 -1
  209. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/server}/test_server_context.py +1 -1
  210. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/server}/test_server_context_settings.py +1 -1
  211. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/server}/test_server_dashboard_shell.py +1 -1
  212. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/server}/test_server_diagnostic_facts.py +1 -1
  213. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/server}/test_server_diagnostic_refresh_auth.py +1 -1
  214. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/server}/test_server_diagnostic_snapshots.py +1 -1
  215. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/server}/test_server_live_queries.py +1 -1
  216. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/server}/test_server_live_rows.py +1 -1
  217. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/server}/test_server_open_investigator.py +1 -1
  218. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/server}/test_server_recommendations.py +1 -1
  219. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/server}/test_server_request_guards.py +1 -1
  220. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/server}/test_server_responses.py +1 -1
  221. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/server}/test_server_routes.py +1 -1
  222. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/server}/test_server_status.py +1 -1
  223. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/server}/test_server_summary.py +1 -1
  224. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/server}/test_server_threads.py +1 -1
  225. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/server}/test_server_usage_refresh.py +1 -1
  226. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/store}/test_store_dashboard_mcp.py +13 -13
  227. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/store}/test_store_dashboard_queries.py +2 -2
  228. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/store}/test_store_large_batches.py +3 -3
  229. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/store}/test_store_migrations.py +2 -2
  230. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/store}/test_store_query_sql.py +1 -1
  231. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/store}/test_store_sources.py +4 -5
  232. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/tests/store_dashboard_helpers.py +3 -3
  233. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/usage_drain}/test_usage_drain_allowance_fits.py +2 -2
  234. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/usage_drain}/test_usage_drain_boundary_delta.py +1 -1
  235. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/usage_drain}/test_usage_drain_boundary_delta_summary.py +1 -1
  236. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/usage_drain}/test_usage_drain_boundary_summary.py +1 -1
  237. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/usage_drain}/test_usage_drain_error_diagnostics.py +2 -2
  238. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/usage_drain}/test_usage_drain_feature_history.py +1 -1
  239. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/usage_drain}/test_usage_drain_model.py +1 -1
  240. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/usage_drain}/test_usage_drain_one_percent_capacity.py +1 -1
  241. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/usage_drain}/test_usage_drain_predictive.py +1 -1
  242. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/usage_drain}/test_usage_drain_regime_segments.py +2 -2
  243. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/usage_drain}/test_usage_drain_regression.py +2 -2
  244. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/usage_drain}/test_usage_drain_report_records.py +2 -2
  245. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/usage_drain}/test_usage_drain_reports.py +9 -7
  246. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/usage_drain}/test_usage_drain_state_buckets.py +1 -1
  247. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/usage_drain}/test_usage_drain_state_diagnostics.py +1 -1
  248. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/usage_drain}/test_usage_drain_summary_metrics.py +1 -1
  249. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/usage_drain}/test_usage_drain_thread_curves.py +1 -1
  250. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/usage_drain}/test_usage_drain_token_components.py +2 -2
  251. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/usage_drain}/test_usage_drain_transition_gates.py +1 -1
  252. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/usage_drain}/test_usage_drain_transition_metrics.py +1 -1
  253. {codex_usage_tracking-0.12.0/tests → codex_usage_tracking-0.13.0/tests/usage_drain}/test_usage_drain_walk_forward.py +2 -2
  254. codex_usage_tracking-0.12.0/src/codex_usage_tracker/json_contracts.py +0 -515
  255. codex_usage_tracking-0.12.0/src/codex_usage_tracking.egg-info/SOURCES.txt +0 -348
  256. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/.mcp.json +0 -0
  257. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/AGENTS.md +0 -0
  258. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/CONTRIBUTING.md +0 -0
  259. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/LICENSE +0 -0
  260. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/MANIFEST.in +0 -0
  261. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/SECURITY.md +0 -0
  262. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/assets/icon.svg +0 -0
  263. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/architecture-boundary-map.md +0 -0
  264. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/architecture.md +0 -0
  265. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/assets/dashboard-call-investigator-evidence.png +0 -0
  266. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/assets/dashboard-call-investigator-preview.png +0 -0
  267. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/assets/dashboard-call-investigator.png +0 -0
  268. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/assets/dashboard-calls-preview.png +0 -0
  269. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/assets/dashboard-calls.png +0 -0
  270. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/assets/dashboard-details.png +0 -0
  271. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/assets/dashboard-diagnostics-git-expanded.png +0 -0
  272. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/assets/dashboard-diagnostics.png +0 -0
  273. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/assets/dashboard-insights.png +0 -0
  274. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/assets/dashboard-threads.png +0 -0
  275. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/assets/plugin-prompts.png +0 -0
  276. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/assets/plugin-thread-leaderboard.png +0 -0
  277. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/assets/ux/call-detail-panel.png +0 -0
  278. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/assets/ux/insight-overview.png +0 -0
  279. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/assets/ux/thread-investigation.png +0 -0
  280. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/call-drilldown-performance-checklist.md +0 -0
  281. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/dashboard-guide.md +0 -0
  282. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/maintainability-scorecard.md +0 -0
  283. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/mcp.md +0 -0
  284. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/pricing-and-credits.md +0 -0
  285. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/privacy.md +0 -0
  286. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/ui-ux-improvement-plan.md +0 -0
  287. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/docs/usage-drain-modeling.md +0 -0
  288. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/scripts/check_wemake_baseline.py +0 -0
  289. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/setup.cfg +0 -0
  290. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/skills/codex-usage-api/SKILL.md +0 -0
  291. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/skills/codex-usage-tracker/SKILL.md +0 -0
  292. /codex_usage_tracking-0.12.0/src/codex_usage_tracker/cli_output.py → /codex_usage_tracking-0.13.0/src/codex_usage_tracker/cli/output.py +0 -0
  293. /codex_usage_tracking-0.12.0/src/codex_usage_tracker/context_action_timing.py → /codex_usage_tracking-0.13.0/src/codex_usage_tracker/context/action_timing.py +0 -0
  294. /codex_usage_tracking-0.12.0/src/codex_usage_tracker/context_token_estimates.py → /codex_usage_tracking-0.13.0/src/codex_usage_tracker/context/token_estimates.py +0 -0
  295. {codex_usage_tracking-0.12.0/src/codex_usage_tracker → codex_usage_tracking-0.13.0/src/codex_usage_tracker/core}/api_payloads.py +0 -0
  296. {codex_usage_tracking-0.12.0/src/codex_usage_tracker → codex_usage_tracking-0.13.0/src/codex_usage_tracker/core}/call_origin.py +0 -0
  297. {codex_usage_tracking-0.12.0/src/codex_usage_tracker → codex_usage_tracking-0.13.0/src/codex_usage_tracker/core}/i18n.py +0 -0
  298. {codex_usage_tracking-0.12.0/src/codex_usage_tracker → codex_usage_tracking-0.13.0/src/codex_usage_tracker/core}/json_contract_validation.py +0 -0
  299. {codex_usage_tracking-0.12.0/src/codex_usage_tracker → codex_usage_tracking-0.13.0/src/codex_usage_tracker/core}/models.py +0 -0
  300. {codex_usage_tracking-0.12.0/src/codex_usage_tracker → codex_usage_tracking-0.13.0/src/codex_usage_tracker/core}/paths.py +0 -0
  301. {codex_usage_tracking-0.12.0/src/codex_usage_tracker → codex_usage_tracking-0.13.0/src/codex_usage_tracker/core}/redaction.py +0 -0
  302. {codex_usage_tracking-0.12.0/src/codex_usage_tracker → codex_usage_tracking-0.13.0/src/codex_usage_tracker/core}/schema.py +0 -0
  303. {codex_usage_tracking-0.12.0/src/codex_usage_tracker → codex_usage_tracking-0.13.0/src/codex_usage_tracker/core}/threads.py +0 -0
  304. /codex_usage_tracking-0.12.0/src/codex_usage_tracker/dashboard_pricing_snapshot.py → /codex_usage_tracking-0.13.0/src/codex_usage_tracker/dashboard/pricing_snapshot.py +0 -0
  305. /codex_usage_tracking-0.12.0/src/codex_usage_tracker/diagnostic_action_hints.py → /codex_usage_tracking-0.13.0/src/codex_usage_tracker/diagnostics/action_hints.py +0 -0
  306. /codex_usage_tracking-0.12.0/src/codex_usage_tracker/diagnostic_snapshot_constants.py → /codex_usage_tracking-0.13.0/src/codex_usage_tracker/diagnostics/snapshot_constants.py +0 -0
  307. /codex_usage_tracking-0.12.0/src/codex_usage_tracker/diagnostic_snapshot_events.py → /codex_usage_tracking-0.13.0/src/codex_usage_tracker/diagnostics/snapshot_events.py +0 -0
  308. /codex_usage_tracking-0.12.0/src/codex_usage_tracker/diagnostics_types.py → /codex_usage_tracking-0.13.0/src/codex_usage_tracker/diagnostics/types.py +0 -0
  309. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/__init__.py +0 -0
  310. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/assets/icon.svg +0 -0
  311. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard.css +0 -0
  312. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard.js +0 -0
  313. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_actions.js +0 -0
  314. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_analysis.js +0 -0
  315. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_call.css +0 -0
  316. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_call_diagnostics.js +0 -0
  317. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_call_investigator.js +0 -0
  318. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_cells.js +0 -0
  319. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_data.js +0 -0
  320. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_detail.css +0 -0
  321. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_details.js +0 -0
  322. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_diagnostics.js +0 -0
  323. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_diagnostics_facts.js +0 -0
  324. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_diagnostics_snapshots.js +0 -0
  325. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_events.js +0 -0
  326. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_filters.js +0 -0
  327. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_format.js +0 -0
  328. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_i18n.js +0 -0
  329. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_insights.css +0 -0
  330. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_insights.js +0 -0
  331. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_layout.css +0 -0
  332. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_live.js +0 -0
  333. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_payload_cache.js +0 -0
  334. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_responsive.css +0 -0
  335. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_state.js +0 -0
  336. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_status.js +0 -0
  337. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_tables.css +0 -0
  338. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_tables.js +0 -0
  339. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_template.html +0 -0
  340. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_tooltips.js +0 -0
  341. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/ar.json +0 -0
  342. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/de.json +0 -0
  343. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/en.json +0 -0
  344. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/es.json +0 -0
  345. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/fr.json +0 -0
  346. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/it.json +0 -0
  347. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/ja.json +0 -0
  348. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/ko.json +0 -0
  349. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/pt.json +0 -0
  350. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/ru.json +0 -0
  351. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/vi.json +0 -0
  352. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/zh-Hans.json +0 -0
  353. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-call-investigator-evidence.png +0 -0
  354. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-call-investigator-preview.png +0 -0
  355. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-call-investigator.png +0 -0
  356. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-calls-preview.png +0 -0
  357. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-calls.png +0 -0
  358. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-details.png +0 -0
  359. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-diagnostics-git-expanded.png +0 -0
  360. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-diagnostics.png +0 -0
  361. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-insights.png +0 -0
  362. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-threads.png +0 -0
  363. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/docs/assets/plugin-prompts.png +0 -0
  364. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/docs/assets/plugin-thread-leaderboard.png +0 -0
  365. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/docs/dashboard-guide.html +0 -0
  366. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/rate_cards/codex-credit-rates.json +0 -0
  367. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/skills/codex-usage-api/SKILL.md +0 -0
  368. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracker/plugin_data/skills/codex-usage-tracker/SKILL.md +0 -0
  369. {codex_usage_tracking-0.12.0/src/codex_usage_tracker → codex_usage_tracking-0.13.0/src/codex_usage_tracker/pricing}/allowance_text.py +0 -0
  370. /codex_usage_tracking-0.12.0/src/codex_usage_tracker/pricing_estimates.py → /codex_usage_tracking-0.13.0/src/codex_usage_tracker/pricing/estimates.py +0 -0
  371. /codex_usage_tracking-0.12.0/src/codex_usage_tracker/report_filters.py → /codex_usage_tracking-0.13.0/src/codex_usage_tracker/reports/filters.py +0 -0
  372. /codex_usage_tracking-0.12.0/src/codex_usage_tracker/report_recommendations.py → /codex_usage_tracking-0.13.0/src/codex_usage_tracker/reports/recommendation_builder.py +0 -0
  373. /codex_usage_tracking-0.12.0/src/codex_usage_tracker/server_routes.py → /codex_usage_tracking-0.13.0/src/codex_usage_tracker/server/routes.py +0 -0
  374. /codex_usage_tracking-0.12.0/src/codex_usage_tracker/server_utils.py → /codex_usage_tracking-0.13.0/src/codex_usage_tracker/server/utils.py +0 -0
  375. /codex_usage_tracking-0.12.0/src/codex_usage_tracker/store_query_sql.py → /codex_usage_tracking-0.13.0/src/codex_usage_tracker/store/query_sql.py +0 -0
  376. /codex_usage_tracking-0.12.0/src/codex_usage_tracker/store_rows.py → /codex_usage_tracking-0.13.0/src/codex_usage_tracker/store/rows.py +0 -0
  377. /codex_usage_tracking-0.12.0/src/codex_usage_tracker/store_usage_timing.py → /codex_usage_tracking-0.13.0/src/codex_usage_tracker/store/usage_timing.py +0 -0
  378. /codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_boundary_scopes.py → /codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/boundary_scopes.py +0 -0
  379. /codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_thread_curves.py → /codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/thread_curves.py +0 -0
  380. /codex_usage_tracking-0.12.0/src/codex_usage_tracker/usage_drain_types.py → /codex_usage_tracking-0.13.0/src/codex_usage_tracker/usage_drain/types.py +0 -0
  381. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracking.egg-info/dependency_links.txt +0 -0
  382. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracking.egg-info/entry_points.txt +0 -0
  383. {codex_usage_tracking-0.12.0 → codex_usage_tracking-0.13.0}/src/codex_usage_tracking.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-usage-tracker",
3
- "version": "0.12.0",
3
+ "version": "0.13.0",
4
4
  "description": "Unofficial local tracker for aggregate Codex token usage from local session logs.",
5
5
  "author": {
6
6
  "name": "Douglas Monsky"
@@ -2,6 +2,21 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.13.0 - 2026-06-30
6
+
7
+ - Add first-run onboarding docs covering install, setup, live-dashboard launch, empty-dashboard troubleshooting, plugin discovery, and safe issue diagnostics.
8
+ - Improve `doctor --json` first-run environment reporting so support requests can distinguish missing logs, empty history, and plugin/runtime path issues faster.
9
+ - Add safe support-bundle issue-report fields and issue-template guidance so users can attach diagnostics without leaking prompts, tool outputs, commands, patches, or raw paths in strict mode.
10
+ - Strengthen installed-wheel lifecycle smoke coverage across setup, doctor, dashboard generation, strict support bundles, and plugin resources.
11
+ - Harden strict support-bundle redaction for nested diagnostic paths, Python executable paths, and resolved `/private/var`-style platform path aliases.
12
+
13
+ ## 0.12.1 - 2026-06-29
14
+
15
+ - Ship the package-domain boundary refactor behind compatibility facades so existing CLI, imports, dashboard routes, JSON payloads, and MCP entrypoints keep working while the source tree is organized by responsibility.
16
+ - Add Tach domain configuration files, refreshed Agent Maintainer baselines, and package-boundary documentation for the new module layout.
17
+ - Restore `python -m codex_usage_tracker.cli` after the CLI package split and add regression coverage for both module entrypoints.
18
+ - Split allowance pricing helpers into smaller modules while preserving the public allowance facade.
19
+
5
20
  ## 0.12.0 - 2026-06-29
6
21
 
7
22
  - Refactor CLI, dashboard server routing, SQLite store/query boundaries, context parsing, diagnostics, and usage-drain modeling into smaller modules with compatibility facades.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codex-usage-tracking
3
- Version: 0.12.0
3
+ Version: 0.13.0
4
4
  Summary: Unofficial local Codex plugin and dashboard for investigating aggregate token usage, costs, caching, and thread patterns.
5
5
  Author: Douglas Monsky
6
6
  License-Expression: MIT
@@ -28,7 +28,7 @@ License-File: LICENSE
28
28
  Requires-Dist: mcp>=1.2.0
29
29
  Requires-Dist: tiktoken>=0.13.0
30
30
  Provides-Extra: dev
31
- Requires-Dist: agent-maintainer[core]==0.1.0b1; python_version >= "3.11" and extra == "dev"
31
+ Requires-Dist: agent-maintainer[core]>=0.1.0b1; python_version >= "3.11" and extra == "dev"
32
32
  Requires-Dist: actionlint-py>=1.7.12.24; python_version >= "3.11" and extra == "dev"
33
33
  Requires-Dist: build>=1.2; extra == "dev"
34
34
  Requires-Dist: git-agent-ratchet>=1.3.0; python_version >= "3.11" and extra == "dev"
@@ -53,7 +53,7 @@ Local-first dashboard, Codex plugin, and companion skill for understanding where
53
53
 
54
54
  [![CI](https://github.com/douglasmonsky/codex-usage-tracker/actions/workflows/ci.yml/badge.svg)](https://github.com/douglasmonsky/codex-usage-tracker/actions/workflows/ci.yml)
55
55
  [![PyPI](https://img.shields.io/pypi/v/codex-usage-tracking.svg)](https://pypi.org/project/codex-usage-tracking/)
56
- [![PyPI Downloads](https://static.pepy.tech/personalized-badge/codex-usage-tracking?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=BLUE&left_text=downloads)](https://pepy.tech/projects/codex-usage-tracking)
56
+ [![PyPI Downloads](https://static.pepy.tech/personalized-badge/codex-usage-tracking?period=total&units=INTERNATIONAL_SYSTEM&left_color=GREY&right_color=RED&left_text=downloads)](https://pepy.tech/projects/codex-usage-tracking)
57
57
  ![Python 3.10-3.14](https://img.shields.io/badge/python-3.10--3.14-blue)
58
58
  [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
59
59
 
@@ -78,6 +78,8 @@ codex-usage-tracker serve-dashboard --open
78
78
  Use your normal Python launcher for your platform: `python3` is common on macOS/Linux, and `py` may be preferable on Windows. On macOS with Homebrew, `brew install pipx` is also fine.
79
79
  If `codex-usage-tracker` is not found after installing with pipx, open a new terminal or add the binary directory printed by `pipx ensurepath` to your `PATH`.
80
80
 
81
+ First install? Start with the [First Five Minutes guide](docs/first-five-minutes.md) for setup, verification, empty-dashboard checks, and safe issue diagnostics.
82
+
81
83
  `serve-dashboard` refreshes active-session usage before opening by default. Use `--no-refresh` only when you intentionally want to inspect the cached local index.
82
84
 
83
85
  Package naming: the PyPI distribution is `codex-usage-tracking`; the installed command is `codex-usage-tracker`; the GitHub repository remains `douglasmonsky/codex-usage-tracker`. The `codex-usage-tracker` PyPI name is not this project, so avoid similarly named packages when following these docs.
@@ -319,6 +321,8 @@ This is optional. The normal shell install above is the fastest trusted path for
319
321
 
320
322
  ## Roadmap
321
323
 
324
+ The next phase is adoption hardening: better first-run setup, safer support bundles, clearer guided diagnostics, and scale/reliability checks now that more people are trying the project. See [Adoption Hardening Roadmap](docs/adoption-hardening-roadmap.md) for the branch-by-branch plan.
325
+
322
326
  - Keep Python runtime support validated with CI matrix coverage, package classifiers, release docs, and installed-package smoke tests.
323
327
  - Improve the `Set limits` flow with a paste/import experience for 5-hour and weekly allowance snapshots.
324
328
  - Track allowance snapshot history so local Codex credits can be compared against visible remaining-usage changes over time.
@@ -9,7 +9,7 @@ Local-first dashboard, Codex plugin, and companion skill for understanding where
9
9
 
10
10
  [![CI](https://github.com/douglasmonsky/codex-usage-tracker/actions/workflows/ci.yml/badge.svg)](https://github.com/douglasmonsky/codex-usage-tracker/actions/workflows/ci.yml)
11
11
  [![PyPI](https://img.shields.io/pypi/v/codex-usage-tracking.svg)](https://pypi.org/project/codex-usage-tracking/)
12
- [![PyPI Downloads](https://static.pepy.tech/personalized-badge/codex-usage-tracking?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=BLUE&left_text=downloads)](https://pepy.tech/projects/codex-usage-tracking)
12
+ [![PyPI Downloads](https://static.pepy.tech/personalized-badge/codex-usage-tracking?period=total&units=INTERNATIONAL_SYSTEM&left_color=GREY&right_color=RED&left_text=downloads)](https://pepy.tech/projects/codex-usage-tracking)
13
13
  ![Python 3.10-3.14](https://img.shields.io/badge/python-3.10--3.14-blue)
14
14
  [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
15
15
 
@@ -34,6 +34,8 @@ codex-usage-tracker serve-dashboard --open
34
34
  Use your normal Python launcher for your platform: `python3` is common on macOS/Linux, and `py` may be preferable on Windows. On macOS with Homebrew, `brew install pipx` is also fine.
35
35
  If `codex-usage-tracker` is not found after installing with pipx, open a new terminal or add the binary directory printed by `pipx ensurepath` to your `PATH`.
36
36
 
37
+ First install? Start with the [First Five Minutes guide](docs/first-five-minutes.md) for setup, verification, empty-dashboard checks, and safe issue diagnostics.
38
+
37
39
  `serve-dashboard` refreshes active-session usage before opening by default. Use `--no-refresh` only when you intentionally want to inspect the cached local index.
38
40
 
39
41
  Package naming: the PyPI distribution is `codex-usage-tracking`; the installed command is `codex-usage-tracker`; the GitHub repository remains `douglasmonsky/codex-usage-tracker`. The `codex-usage-tracker` PyPI name is not this project, so avoid similarly named packages when following these docs.
@@ -275,6 +277,8 @@ This is optional. The normal shell install above is the fastest trusted path for
275
277
 
276
278
  ## Roadmap
277
279
 
280
+ The next phase is adoption hardening: better first-run setup, safer support bundles, clearer guided diagnostics, and scale/reliability checks now that more people are trying the project. See [Adoption Hardening Roadmap](docs/adoption-hardening-roadmap.md) for the branch-by-branch plan.
281
+
278
282
  - Keep Python runtime support validated with CI matrix coverage, package classifiers, release docs, and installed-package smoke tests.
279
283
  - Improve the `Set limits` flow with a paste/import experience for 5-hour and weekly allowance snapshots.
280
284
  - Track allowance snapshot history so local Codex credits can be compared against visible remaining-usage changes over time.
@@ -0,0 +1,130 @@
1
+ # Adoption Hardening Roadmap
2
+
3
+ This roadmap covers the next phase after the `0.12.x` architecture repair. The project is now getting enough outside attention that the priority shifts from fast feature expansion to making first-run setup, support, diagnostics, and large-history behavior boring for new users.
4
+
5
+ ## Current Signals
6
+
7
+ - GitHub interest has moved beyond personal-use scale: stars, forks, clones, and traffic are all growing.
8
+ - The project has already handled outside bug reports around Windows dashboard serving and large-history SQLite limits.
9
+ - The release cadence has been fast, so the next minor releases should tighten trust and support surfaces before adding more complex diagnostics.
10
+ - Current local gates are healthy: Ruff, MyPy, Tach, release checks, Agent Maintainer fast profile, and pytest pass.
11
+ - Main technical debt is no longer giant files, but there are still dense domains: `usage_drain`, `server`, dashboard APIs, and large integration tests.
12
+
13
+ ## Operating Rules
14
+
15
+ - Keep `main` always releasable.
16
+ - Use one short-lived branch per reviewable capability.
17
+ - Prefer PRs even for solo-maintainer work so each change has a review artifact.
18
+ - Avoid stacking branches unless a later branch truly depends on an earlier one.
19
+ - Do not release every small branch. Release after a coherent group of user-facing improvements lands.
20
+ - Preserve privacy guarantees: no raw prompts, assistant messages, tool outputs, patch text, secrets, or private config values in stored snapshots, support bundles, screenshots, generated dashboards, or test fixtures.
21
+
22
+ ## 0.13: Adoption Hardening
23
+
24
+ Goal: make first-time installs and bug reports easier for users who did not build the tool.
25
+
26
+ Branches:
27
+
28
+ - `feature/doctor-first-run-report`
29
+ - Make `doctor` clearly report Python version, package version, Codex log discovery, tracker DB path, dashboard asset health, plugin registration state, and common Windows/browser pitfalls.
30
+ - Add `--json` parity for any new fields shown in text output.
31
+ - Acceptance: focused doctor tests plus installed-package smoke coverage.
32
+
33
+ - `feature/support-bundle-issue-flow`
34
+ - Improve strict support bundle output for issue reports.
35
+ - Add a short CLI hint showing which safe fields users can paste into GitHub issues.
36
+ - Acceptance: privacy tests prove strict bundles do not leak raw prompts, outputs, full paths, tokens, or private config values.
37
+
38
+ - `test/installed-wheel-platform-smokes`
39
+ - Strengthen wheel-level smoke tests for setup, dashboard generation, `serve-dashboard --help`, `doctor`, support bundle, and bundled dashboard assets.
40
+ - Keep CI runtime reasonable by using synthetic logs and selected commands.
41
+ - Acceptance: wheel smoke catches entrypoint and package-data regressions before release.
42
+
43
+ - `docs/first-five-minutes-onboarding`
44
+ - Add a concise first-run walkthrough: install, setup, launch, verify, troubleshoot.
45
+ - Include "what to do if the dashboard is empty" and "what to attach to an issue" sections.
46
+ - Acceptance: README stays scannable; deeper details live in docs.
47
+
48
+ Release target:
49
+
50
+ - Ship `0.13.0` once the user-facing flow feels reliable.
51
+
52
+ ## 0.14: Guided Diagnostics
53
+
54
+ Goal: turn powerful diagnostics into plain answers before exposing more raw charts.
55
+
56
+ Branches:
57
+
58
+ - `feature/guided-usage-summary`
59
+ - Add a "What is driving my usage?" report across dashboard and CLI.
60
+ - Prioritize threads, models, effort, cache misses, subagents, command/tool activity, and usage-drain signals.
61
+
62
+ - `feature/weekly-allowance-change-report`
63
+ - Add a guided report explaining projected weekly credits, confidence bands, observed usage coverage, and caveats.
64
+ - Avoid overclaiming; frame changes as local evidence, not universal allowance proof.
65
+
66
+ - `feature/thread-efficiency-report`
67
+ - Add thread-level efficiency indicators: cost per visible call, cache behavior, cold resume signs, context pressure, and long-thread tradeoffs.
68
+
69
+ - `feature/diagnostics-refresh-diff`
70
+ - Show what changed since the previous diagnostics refresh.
71
+ - Keep this snapshot-based and on demand.
72
+
73
+ Release target:
74
+
75
+ - Ship `0.14.0` when at least two guided reports are useful end to end.
76
+
77
+ ## 0.15: Reliability And Scale
78
+
79
+ Goal: make large histories and long diagnostics predictable.
80
+
81
+ Branches:
82
+
83
+ - `perf/large-history-refresh-benchmarks`
84
+ - Add synthetic benchmark thresholds for setup, refresh, diagnostics refresh, and dashboard API payloads.
85
+
86
+ - `feature/diagnostics-refresh-progress`
87
+ - Add progress/status for expensive diagnostics refreshes so users know whether work is running, stale, failed, or complete.
88
+
89
+ - `fix/resumable-diagnostic-snapshots`
90
+ - Make failed diagnostic snapshot refreshes isolated and resumable by section.
91
+
92
+ - `test/parser-compat-fixtures`
93
+ - Add focused parser fixtures for new Codex log shapes as users report them.
94
+
95
+ Release target:
96
+
97
+ - Ship `0.15.0` when refresh behavior is explainable for both normal and large histories.
98
+
99
+ ## 0.16: Maintainability Ratchet
100
+
101
+ Goal: keep the project easy to change while adoption grows.
102
+
103
+ Branches:
104
+
105
+ - `refactor/usage-drain-subpackages`
106
+ - Split usage-drain internals by spans, features, models, reports, charts, and allowance helpers.
107
+
108
+ - `refactor/server-api-boundaries`
109
+ - Split server routing, static assets, diagnostics APIs, usage APIs, and response helpers.
110
+
111
+ - `refactor/xenon-b-ranked-modules`
112
+ - Reduce the current B-ranked Xenon modules until `xenon --max-absolute B --max-modules A --max-average A src` can pass.
113
+
114
+ - `chore/expand-mypy-coverage`
115
+ - Expand MyPy coverage in small safe slices.
116
+
117
+ Release target:
118
+
119
+ - These can land behind compatibility facades and may ship as `0.16.0` or be spread across smaller minors if that materially reduces release risk.
120
+
121
+ ## 1.0 Readiness Bar
122
+
123
+ Do not call the project `1.0` until:
124
+
125
+ - First-run setup is boring on macOS, Windows, and Linux.
126
+ - The support-bundle issue flow is privacy-safe and easy to use.
127
+ - Dashboard and CLI JSON contracts are documented and stable.
128
+ - Diagnostics are useful but clearly caveated where inference is uncertain.
129
+ - Large-history refresh behavior is predictable.
130
+ - Several outside issue reports have been handled without emergency patch churn.
@@ -0,0 +1,7 @@
1
+ # Package Domain Boundaries
2
+
3
+ The package-domain refactor moves the previously flat `codex_usage_tracker` source tree into responsibility folders and switches Tach from one large root module list to per-domain `tach.domain.toml` files.
4
+
5
+ The initial domain policy declares dependencies that match the current implementation after the move. Circular dependency blocking remains disabled because the existing parser, diagnostics, and store flow still has a real cycle: parser state feeds diagnostic facts, diagnostics snapshots read persisted state, and store helpers import parser state metadata. That cycle is preserved for behavior compatibility and should be reduced in a later, focused branch.
6
+
7
+ This is an architecture policy change, not an attempt to bypass drift: the old Tach module paths no longer exist after the file move, and per-domain files give each responsibility folder local ownership of its boundary declaration.
@@ -37,6 +37,7 @@ Tracked schema ids:
37
37
  | --- | --- |
38
38
  | `codex-usage-tracker-setup-v1` | CLI `setup --json` |
39
39
  | `codex-usage-tracker-doctor-v1` | CLI `doctor --json`, MCP `usage_doctor(response_format="json")` |
40
+ | | Includes an `environment` object with package and Python versions, important local paths, lightweight Codex log discovery counts, and packaged dashboard asset health. Support bundles sanitize this payload according to the selected privacy mode. |
40
41
  | `codex-usage-tracker-plugin-install-v1` | CLI `install-plugin --json`, setup plugin payload |
41
42
  | `codex-usage-tracker-plugin-upgrade-v1` | CLI `upgrade-plugin --json` |
42
43
  | `codex-usage-tracker-plugin-uninstall-v1` | CLI `uninstall-plugin --json` |
@@ -187,6 +187,8 @@ codex-usage-tracker --privacy-mode strict support-bundle --output ~/.codex-usage
187
187
 
188
188
  Support bundles are diagnostic summaries for issues. They include package, platform, doctor, schema, parser, pricing, allowance, threshold, project-config, and privacy metadata. They exclude raw logs, aggregate rows, prompts, assistant messages, tool output, and context text.
189
189
 
190
+ Strict support bundles include an `issue_report` section that lists the paste-safe sections and fields for GitHub issues. Review the JSON before posting, and do not add raw JSONL logs, prompts, assistant messages, tool output, command text, patch text, full local paths, secrets, credentials, or private config values.
191
+
190
192
  ## Local Config
191
193
 
192
194
  ```bash
@@ -38,7 +38,7 @@ fix/<issue-number>-short-description
38
38
  docs/<issue-number>-short-description
39
39
  chore/<issue-number>-short-description
40
40
  test/<issue-number>-short-description
41
- release/0.12.0
41
+ release/0.13.0
42
42
  hotfix/0.3.3
43
43
  ```
44
44
 
@@ -91,7 +91,10 @@ blocked
91
91
  Recommended milestones:
92
92
 
93
93
  ```text
94
- 0.12.0
94
+ 0.13-adoption-hardening
95
+ 0.14-guided-diagnostics
96
+ 0.15-reliability-scale
97
+ 0.16-maintainability-ratchet
95
98
  1.0-readiness
96
99
  1.0.0
97
100
  ```
@@ -146,8 +149,8 @@ python scripts/smoke_installed_package.py --docker
146
149
  To verify the public PyPI package instead of the local checkout:
147
150
 
148
151
  ```bash
149
- python scripts/smoke_installed_package.py --from-pypi --version 0.12.0
150
- python scripts/smoke_installed_package.py --docker --from-pypi --version 0.12.0
152
+ python scripts/smoke_installed_package.py --from-pypi --version 0.13.0
153
+ python scripts/smoke_installed_package.py --docker --from-pypi --version 0.13.0
151
154
  ```
152
155
 
153
156
  `scripts/check_release.py` treats these public-package smoke commands as release-state claims. Keep their `--version` and `codex-usage-tracking==...` values aligned with `pyproject.toml`; the release gate fails when the docs claim a different public version. It also checks that install docs point at the real PyPI distribution, `codex-usage-tracking`, and keep the warning that `codex-usage-tracker` is a different PyPI package.
@@ -294,8 +297,8 @@ After the release branch merges, tag from updated `main`, not from an unreviewed
294
297
  ```bash
295
298
  git switch main
296
299
  git pull --ff-only
297
- git tag -a v0.12.0 -m "codex-usage-tracker 0.12.0"
298
- git push origin v0.12.0
300
+ git tag -a v0.13.0 -m "codex-usage-tracker 0.13.0"
301
+ git push origin v0.13.0
299
302
  ```
300
303
 
301
304
  Do not create or push release tags without maintainer approval.
@@ -304,7 +307,7 @@ Do not create or push release tags without maintainer approval.
304
307
 
305
308
  Publishing uses GitHub Actions Trusted Publishing through `.github/workflows/publish.yml`; do not upload from a local machine and do not add PyPI or TestPyPI API tokens.
306
309
 
307
- The first public package release, `0.3.0`, was published on June 8, 2026. Patch release `0.3.1` followed the same day to ship the live-dashboard skill launch fix. Patch release `0.3.2` made dashboard launch refresh the default and added runtime enablement for context loading. Minor release `0.4.0` added Python 3.14 support, release recovery docs, stricter privacy/support-bundle regression coverage, and large-history benchmark thresholds. Patch release `0.4.1` was published by workflow dispatch from `main`; it hardened the PyPI publish workflow and checked off completed 1.0 readiness gates. Minor release `0.5.0` added dashboard localization support and initial language catalogs. Minor release `0.6.0` is the performance and call-drilldown release with SQL-backed live API slices, materialized thread summaries, faster evidence loading, and dashboard runtime module refactors. Patch release `0.6.1` aligns the final README/package screenshots and companion plugin assets. Minor release `0.7.0` adds observed usage snapshots and the latest-observed dashboard card while keeping raw evidence on demand only. Minor release `0.8.0` adds aggregate diagnostics, source-offset context seeking, and live dashboard loading hardening. Patch release `0.8.1` improves Diagnostics fact table readability with pinned fact names and sortable fact columns. Minor release `0.9.0` adds persisted diagnostic snapshots, on-demand diagnostic refresh, tool/command/file-read/concentration reports, and Diagnostics dashboard panels. Minor release `0.10.0` adds Git/GitHub CLI diagnostics, file-modification diagnostics, and derived call timing fields across the dashboard and API. Patch release `0.10.1` adds lightweight action timing to context evidence and ships the synthetic Git Interactions README screenshot. Minor release `0.11.0` adds usage-drain diagnostic reports, projected weekly credit charts, and cumulative thread cost curves. Patch release `0.11.1` improves the Diagnostics weekly projection table and stale snapshot reload controls. Patch release `0.11.2` fixes served dashboard shell hydration and hardens the synthetic source-log benchmark smoke test. Patch release `0.11.3` fixes Windows live dashboard asset MIME handling. Patch release `0.11.4` fixes large-history setup refresh failures from SQLite variable limits. Minor release `0.12.0` ships the maintainability architecture repair, dashboard diagnostics hardening, Agent Maintainer ratchets, and warning-clean test suite.
310
+ The first public package release, `0.3.0`, was published on June 8, 2026. Patch release `0.3.1` followed the same day to ship the live-dashboard skill launch fix. Patch release `0.3.2` made dashboard launch refresh the default and added runtime enablement for context loading. Minor release `0.4.0` added Python 3.14 support, release recovery docs, stricter privacy/support-bundle regression coverage, and large-history benchmark thresholds. Patch release `0.4.1` was published by workflow dispatch from `main`; it hardened the PyPI publish workflow and checked off completed 1.0 readiness gates. Minor release `0.5.0` added dashboard localization support and initial language catalogs. Minor release `0.6.0` is the performance and call-drilldown release with SQL-backed live API slices, materialized thread summaries, faster evidence loading, and dashboard runtime module refactors. Patch release `0.6.1` aligns the final README/package screenshots and companion plugin assets. Minor release `0.7.0` adds observed usage snapshots and the latest-observed dashboard card while keeping raw evidence on demand only. Minor release `0.8.0` adds aggregate diagnostics, source-offset context seeking, and live dashboard loading hardening. Patch release `0.8.1` improves Diagnostics fact table readability with pinned fact names and sortable fact columns. Minor release `0.9.0` adds persisted diagnostic snapshots, on-demand diagnostic refresh, tool/command/file-read/concentration reports, and Diagnostics dashboard panels. Minor release `0.10.0` adds Git/GitHub CLI diagnostics, file-modification diagnostics, and derived call timing fields across the dashboard and API. Patch release `0.10.1` adds lightweight action timing to context evidence and ships the synthetic Git Interactions README screenshot. Minor release `0.11.0` adds usage-drain diagnostic reports, projected weekly credit charts, and cumulative thread cost curves. Patch release `0.11.1` improves the Diagnostics weekly projection table and stale snapshot reload controls. Patch release `0.11.2` fixes served dashboard shell hydration and hardens the synthetic source-log benchmark smoke test. Patch release `0.11.3` fixes Windows live dashboard asset MIME handling. Patch release `0.11.4` fixes large-history setup refresh failures from SQLite variable limits. Minor release `0.12.0` ships the maintainability architecture repair, dashboard diagnostics hardening, Agent Maintainer ratchets, and warning-clean test suite. Patch release `0.12.1` ships the package-domain boundary split, allowance helper split, refreshed maintainability baselines, and CLI module entrypoint fix. Minor release `0.13.0` ships adoption-hardening onboarding, first-run diagnostics, support-bundle issue guidance, and installed-wheel lifecycle smoke hardening.
308
311
 
309
312
  - GitHub Release: `https://github.com/douglasmonsky/codex-usage-tracker/releases/tag/v0.3.0`
310
313
  - GitHub Release: `https://github.com/douglasmonsky/codex-usage-tracker/releases/tag/v0.3.1`
@@ -0,0 +1,93 @@
1
+ # First Five Minutes
2
+
3
+ This is the shortest path from a fresh machine to a working local dashboard.
4
+
5
+ ## 1. Install
6
+
7
+ Use `pipx` so the tracker runs as its own command-line app:
8
+
9
+ ```bash
10
+ python -m pip install --user pipx
11
+ python -m pipx ensurepath
12
+ pipx install codex-usage-tracking
13
+ ```
14
+
15
+ Use `python3` on macOS/Linux if that is your normal launcher. On Windows, `py -m pip install --user pipx` and `py -m pipx ensurepath` may be the right form. If `codex-usage-tracker` is not found after install, open a new terminal or add the path printed by `pipx ensurepath`.
16
+
17
+ ## 2. Set Up
18
+
19
+ ```bash
20
+ codex-usage-tracker setup
21
+ ```
22
+
23
+ `setup` installs the local Codex plugin wrapper, initializes local config templates, refreshes the aggregate SQLite index from local Codex logs, and runs `doctor`. Restart Codex after setup if you want the companion MCP tools and skills to appear in new Codex sessions.
24
+
25
+ ## 3. Launch
26
+
27
+ ```bash
28
+ codex-usage-tracker serve-dashboard --open
29
+ ```
30
+
31
+ This starts a localhost dashboard and refreshes active-session usage first. Keep the terminal running while using the live dashboard.
32
+
33
+ ## 4. Verify
34
+
35
+ The first healthy state usually looks like this:
36
+
37
+ - Browser opens a `127.0.0.1` dashboard URL.
38
+ - The top badge says `Live`, not only `Static`.
39
+ - `Visible Calls` is greater than zero if local Codex logs exist.
40
+ - `doctor` does not report a `fail` status:
41
+
42
+ ```bash
43
+ codex-usage-tracker doctor --suggest-repair
44
+ ```
45
+
46
+ ## If The Dashboard Is Empty
47
+
48
+ Run these checks in order:
49
+
50
+ ```bash
51
+ codex-usage-tracker doctor --suggest-repair
52
+ codex-usage-tracker refresh
53
+ codex-usage-tracker serve-dashboard --open --refresh
54
+ ```
55
+
56
+ Common causes:
57
+
58
+ - No local Codex logs exist yet on that machine.
59
+ - Codex logs are somewhere other than `~/.codex`; use `--codex-home <path>` with `setup`, `refresh`, or `serve-dashboard`.
60
+ - You are looking only at active sessions while the data is archived; use the dashboard `History` selector or run with `--include-archived`.
61
+ - Browser cached an old static file; reload the `serve-dashboard` URL.
62
+ - On Windows, use a recent version if JavaScript files fail to load. Older releases could inherit a `.js` MIME type from the Windows registry.
63
+
64
+ ## If The Plugin Does Not Show In Codex
65
+
66
+ The dashboard can work even when plugin discovery is not active. For plugin discovery:
67
+
68
+ ```bash
69
+ codex-usage-tracker doctor --suggest-repair
70
+ codex-usage-tracker install-plugin
71
+ ```
72
+
73
+ Then restart Codex and start a fresh Codex session.
74
+
75
+ ## What To Attach To Issues
76
+
77
+ For public GitHub issues, prefer a strict support bundle:
78
+
79
+ ```bash
80
+ codex-usage-tracker --privacy-mode strict support-bundle --output ~/.codex-usage-tracker/support-bundle.json
81
+ ```
82
+
83
+ Review the JSON before posting it. The bundle's `issue_report.safe_fields` lists the safest fields to paste. Do not add raw Codex JSONL logs, prompts, assistant messages, tool output, command text, patch text, full local paths, secrets, credentials, or private config values.
84
+
85
+ ## Next Useful Commands
86
+
87
+ ```bash
88
+ codex-usage-tracker summary --preset last-7-days
89
+ codex-usage-tracker query --min-tokens 100000
90
+ codex-usage-tracker diagnostics overview --refresh
91
+ ```
92
+
93
+ For deeper details, see the [Install Guide](install.md), [Dashboard Guide](dashboard-guide.md), and [CLI Reference](cli-reference.md).
@@ -1,5 +1,7 @@
1
1
  # Install Guide
2
2
 
3
+ New user? Start with the [First Five Minutes](first-five-minutes.md) guide, then return here for deeper install details.
4
+
3
5
  ## Recommended Install
4
6
 
5
7
  Use `pipx` so the tracker is installed from PyPI as a command-line app without mixing dependencies into another project.
@@ -150,6 +152,6 @@ codex-usage-tracker reset-db --yes
150
152
  codex-usage-tracker --privacy-mode strict support-bundle --output ~/.codex-usage-tracker/support-bundle.json
151
153
  ```
152
154
 
153
- `support-bundle` writes package, Python, OS/platform, doctor status, database schema, parser diagnostics, pricing status, allowance status, threshold status, project config status, and privacy metadata. It does not include raw logs, prompts, assistant messages, tool output, context text, or aggregate rows.
155
+ `support-bundle` writes package, Python, OS/platform, doctor status, database schema, parser diagnostics, pricing status, allowance status, threshold status, project config status, privacy metadata, and an `issue_report` list of paste-safe issue fields. It does not include raw logs, prompts, assistant messages, tool output, context text, or aggregate rows.
154
156
 
155
157
  Default `support-bundle` mode keeps local diagnostic paths because they can help troubleshoot setup on your machine. Use `--privacy-mode strict` before sharing: strict mode redacts local diagnostic path strings in the bundle and doctor details while preserving existence flags, counts, parser diagnostics, and status fields.
@@ -67,6 +67,99 @@ xenon --max-absolute B --max-modules A --max-average A src
67
67
 
68
68
  ## Branch Ledger
69
69
 
70
+ ### `chore/reset-maintainability-baseline`
71
+
72
+ Goal:
73
+
74
+ - Reset the Agent Maintainer file-length baseline after the package-domain
75
+ boundary migration so future branches fail only when they worsen current
76
+ oversized-file debt.
77
+ - Keep file-length thresholds unchanged.
78
+
79
+ Completed:
80
+
81
+ - Regenerated `.agent-maintainer/file-length-baseline.json` against the current
82
+ domain-package layout.
83
+ - Removed stale pre-refactor flat-module entries from the baseline and recorded
84
+ current oversized source/test files by their new package paths.
85
+ - Confirmed no threshold loosening was required: `file_length_max_physical`
86
+ remains `600`, and `file_length_max_source` remains `450`.
87
+
88
+ Checks:
89
+
90
+ - `.venv/bin/python -m agent_maintainer verify --profile fast`: passed with
91
+ non-blocking structure-cohesion warnings for `server` and `usage_drain`.
92
+
93
+ Remaining risks / next handoff:
94
+
95
+ - The baseline intentionally accepts existing oversized files as current debt.
96
+ - Continue cleanly from this baseline with small branches that reduce
97
+ `dashboard/api.py`, `store/api.py`, `usage_drain/reports.py`,
98
+ `diagnostics/snapshots.py`, CLI parser/main, and the largest tests.
99
+
100
+ ### `refactor/split-oversized-modules`
101
+
102
+ Goal:
103
+
104
+ - Continue the post-domain-move handoff by clearing one moved source module from
105
+ the Agent Maintainer file-length ratchet.
106
+ - Keep the slice small enough to review independently after the broad package
107
+ boundary merge.
108
+
109
+ Completed:
110
+
111
+ - Split `src/codex_usage_tracker/pricing/allowance.py` into a compatibility
112
+ facade plus `pricing/allowance_config.py` and `pricing/allowance_usage.py`.
113
+ - Kept the public `codex_usage_tracker.pricing.allowance` import surface stable.
114
+ - Verified the pricing-scoped Agent Maintainer fast profile passes.
115
+
116
+ Checks:
117
+
118
+ - `.venv/bin/python -m ruff check src/codex_usage_tracker/pricing/allowance.py src/codex_usage_tracker/pricing/allowance_config.py src/codex_usage_tracker/pricing/allowance_usage.py tests/pricing/test_allowance.py`: passed.
119
+ - `.venv/bin/python -m pytest tests/pricing/test_allowance.py -q`: passed, 8 tests.
120
+ - `.venv/bin/python -m agent_maintainer verify --profile fast --file-length-path src/codex_usage_tracker/pricing/allowance.py --file-length-path src/codex_usage_tracker/pricing/allowance_config.py --file-length-path src/codex_usage_tracker/pricing/allowance_usage.py`: passed with non-blocking structure/change-budget warnings.
121
+
122
+ Remaining risks / next handoff:
123
+
124
+ - Full `agent_maintainer verify --profile fast` still fails on the remaining
125
+ oversized moved modules/tests: CLI parser/main, usage-drain model/reports,
126
+ dashboard API, diagnostics snapshots, store API, and several large tests.
127
+ - Next source candidates: `dashboard/api.py` or `store/api.py` if prioritizing
128
+ runtime blast radius; `tests/dashboard/test_dashboard_server.py` if
129
+ prioritizing the largest test file.
130
+
131
+ ### `refactor/package-domain-boundaries`
132
+
133
+ Goal:
134
+ - Move the flat `codex_usage_tracker` package into responsibility folders.
135
+ - Move tests into matching responsibility folders.
136
+ - Preserve stable CLI, MCP launcher, and compatibility import behavior.
137
+ - Adopt Tach domain configs now that the installed Agent Maintainer/Tach stack supports them.
138
+
139
+ Completed:
140
+ - Installed Agent Maintainer from `douglasmonsky/agent-maintainer@main`, resolving locally to `0.1.0b4`.
141
+ - Relaxed the PyPI dev extra pin so the GitHub-installed tool is not downgraded by normal editable dev installs.
142
+ - Added `requirements/agent-maintainer-github.txt` for the local repo-source maintainer install path.
143
+ - Added per-domain packages and `tach.domain.toml` files for `core`, `pricing`, `parser`, `context`, `store`, `diagnostics`, `usage_drain`, `server`, `cli`, `dashboard`, and `reports`.
144
+ - Kept compatibility wrappers/facades for stable imports including `codex_usage_tracker.cli`, `codex_usage_tracker.store`, `codex_usage_tracker.server`, `codex_usage_tracker.mcp_server`, `codex_usage_tracker.plugin_installer`, `codex_usage_tracker.allowance`, and `codex_usage_tracker.support`.
145
+ - Split the moved context reader, server handler, and JSON contract modules enough to avoid new oversized-file failures for those specific moved files.
146
+ - Moved tests under matching domain folders and updated repo-root/helper imports.
147
+
148
+ Checks:
149
+ - `.venv/bin/python -m ruff check .`: passed.
150
+ - `.venv/bin/python -m mypy`: passed.
151
+ - `.venv/bin/python -m pytest -q`: passed, 534 tests.
152
+ - `.venv/bin/python -m pytest --cov=codex_usage_tracker --cov-report=term-missing -q`: passed, 534 tests, 86% total coverage.
153
+ - `.venv/bin/python -m compileall -q src tests`: passed.
154
+ - `.venv/bin/tach check`: passed.
155
+ - `.venv/bin/python scripts/check_release.py`: passed.
156
+ - `git diff --check`: passed.
157
+
158
+ Remaining risks / next handoff:
159
+ - Agent Maintainer `verify --profile fast` still flags several moved legacy modules and moved tests as new oversized files because their paths changed. This branch reduced three immediate moved-file violations but did not try to split every existing large module/test in the same commit.
160
+ - The next branch should continue splitting remaining large files, with highest-value candidates: `dashboard/api.py`, `store/api.py`, `usage_drain/reports.py`, `diagnostics/snapshots.py`, `cli/parser.py`, `cli/main.py`, and the largest dashboard/store tests.
161
+ - The parser/diagnostics/store Tach cycle is documented in `docs/architecture/decisions/0001-package-domain-boundaries.md` and should be reduced in a focused later branch.
162
+
70
163
  ### `chore/maintainability-agent-maintainer-baseline`
71
164
 
72
165
  Goal:
@@ -24,12 +24,12 @@ Not guaranteed:
24
24
 
25
25
  ## 1. Public Install And Package Metadata
26
26
 
27
- - [x] Verify the current public PyPI version is visible as `0.12.0`: `python -c "import json, urllib.request; print(json.load(urllib.request.urlopen('https://pypi.org/pypi/codex-usage-tracking/json'))['info']['version'])"`.
28
- - [x] Verify public venv install for `0.12.0`: `python -m venv /tmp/codex-usage-pypi-smoke && . /tmp/codex-usage-pypi-smoke/bin/activate && python -m pip install codex-usage-tracking==0.12.0 && codex-usage-tracker --version`.
29
- - [x] Verify public pipx install path for `0.12.0`: `PIPX_HOME=/tmp/codex-usage-pipx-home PIPX_BIN_DIR=/tmp/codex-usage-pipx-bin pipx install codex-usage-tracking==0.12.0 && /tmp/codex-usage-pipx-bin/codex-usage-tracker --version`.
27
+ - [x] Verify the current public PyPI version is visible as `0.13.0`: `python -c "import json, urllib.request; print(json.load(urllib.request.urlopen('https://pypi.org/pypi/codex-usage-tracking/json'))['info']['version'])"`.
28
+ - [x] Verify public venv install for `0.13.0`: `python -m venv /tmp/codex-usage-pypi-smoke && . /tmp/codex-usage-pypi-smoke/bin/activate && python -m pip install codex-usage-tracking==0.13.0 && codex-usage-tracker --version`.
29
+ - [x] Verify public pipx install path for `0.13.0`: `PIPX_HOME=/tmp/codex-usage-pipx-home PIPX_BIN_DIR=/tmp/codex-usage-pipx-bin pipx install codex-usage-tracking==0.13.0 && /tmp/codex-usage-pipx-bin/codex-usage-tracker --version`.
30
30
  - [x] Verify installed package resources from a built wheel: `python scripts/smoke_installed_package.py`.
31
31
  - [x] Verify installed package resources in Linux Docker: `python scripts/smoke_installed_package.py --docker`.
32
- - [x] Verify public PyPI package in Docker: `python scripts/smoke_installed_package.py --docker --from-pypi --version 0.12.0`.
32
+ - [x] Verify public PyPI package in Docker: `python scripts/smoke_installed_package.py --docker --from-pypi --version 0.13.0`.
33
33
  - [x] Verify PyPI metadata names remain unchanged: `python scripts/check_release.py`.
34
34
  - [x] Add Python 3.14 as an official support target after CI, package classifiers, docs, and installed-package smoke coverage were added. Docker smoke coverage uses `python:3.14-slim` by default. Track this in issue #12.
35
35
 
@@ -134,14 +134,14 @@ Not guaranteed:
134
134
 
135
135
  ## Evidence References
136
136
 
137
- These references are the concrete proof behind completed checklist items. Public package smoke commands are version-specific to `0.12.0`; all repo tests use synthetic or aggregate-only data.
137
+ These references are the concrete proof behind completed checklist items. Public package smoke commands are version-specific to `0.13.0`; all repo tests use synthetic or aggregate-only data.
138
138
 
139
139
  ### Public Install And Package Metadata
140
140
 
141
141
  - Public PyPI version, public venv install, and public pipx install are proven by the exact public-install commands in section 1.
142
142
  - Built-wheel and installed-resource coverage is proven by `scripts/smoke_installed_package.py` and `tests/test_cli_release.py::test_installed_package_smoke_checks_help_for_stable_commands`.
143
143
  - Linux package-resource coverage is proven by `scripts/smoke_installed_package.py --docker`.
144
- - Public PyPI Docker coverage is proven by `scripts/smoke_installed_package.py --docker --from-pypi --version 0.12.0`.
144
+ - Public PyPI Docker coverage is proven by `scripts/smoke_installed_package.py --docker --from-pypi --version 0.13.0`.
145
145
  - PyPI metadata, package/distribution names, package resources, source/wheel member names, Python 3.10-3.14 support metadata, CI workflow requirements, publish workflow safety text, and tracked secret patterns are proven by `scripts/check_release.py`, `scripts/check_release.py --dist`, and `tests/test_cli_release.py::test_release_check_script_passes`.
146
146
 
147
147
  ### Upgrade And Migration
@@ -219,8 +219,8 @@ These references are the concrete proof behind completed checklist items. Public
219
219
  - Publish workflow package name, Trusted Publishing, TestPyPI/PyPI job presence, event guards, no push/PR publishing, no token/password publishing, and manual PyPI main/tag preflight are proven by `scripts/check_release.py::_check_publish_workflow`.
220
220
  - The GitHub `pypi` environment gate is proven by `gh api repos/douglasmonsky/codex-usage-tracker/environments/pypi`, which reports a `required_reviewers` protection rule and `can_admins_bypass=false`.
221
221
  - Dist filename and wheel/sdist member checks are proven by `python -m build`, `python -m twine check dist/*`, and `python scripts/check_release.py --dist`.
222
- - TestPyPI publish process is proven by a workflow-dispatch run on `main`, followed by TestPyPI metadata and clean virtualenv install checks for `codex-usage-tracking==0.12.0`.
223
- - PyPI publish process is proven by a workflow-dispatch run on `main`, protected `pypi` environment approval, PyPI metadata visibility, clean virtualenv install, temporary pipx install, and Docker public-package smoke for `codex-usage-tracking==0.12.0`.
222
+ - TestPyPI publish process is proven by a workflow-dispatch run on `main`, followed by TestPyPI metadata and clean virtualenv install checks for `codex-usage-tracking==0.13.0`.
223
+ - PyPI publish process is proven by a workflow-dispatch run on `main`, protected `pypi` environment approval, PyPI metadata visibility, clean virtualenv install, temporary pipx install, and Docker public-package smoke for `codex-usage-tracking==0.13.0`.
224
224
  - Release recovery documentation is proven by `scripts/check_release.py` required-file and docs checks.
225
225
 
226
226
  ### Known Limitations
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "codex-usage-tracking"
7
- version = "0.12.0"
7
+ version = "0.13.0"
8
8
  description = "Unofficial local Codex plugin and dashboard for investigating aggregate token usage, costs, caching, and thread patterns."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -42,7 +42,7 @@ Changelog = "https://github.com/douglasmonsky/codex-usage-tracker/blob/main/CHAN
42
42
 
43
43
  [project.optional-dependencies]
44
44
  dev = [
45
- "agent-maintainer[core]==0.1.0b1; python_version >= '3.11'",
45
+ "agent-maintainer[core]>=0.1.0b1; python_version >= '3.11'",
46
46
  "actionlint-py>=1.7.12.24; python_version >= '3.11'",
47
47
  "build>=1.2",
48
48
  "git-agent-ratchet>=1.3.0; python_version >= '3.11'",
@@ -148,12 +148,12 @@ log_dir = ".verify-logs"
148
148
  python_version = "3.10"
149
149
  warn_unused_configs = true
150
150
  files = [
151
- "src/codex_usage_tracker/json_contracts.py",
152
- "src/codex_usage_tracker/models.py",
153
- "src/codex_usage_tracker/recommendations.py",
154
- "src/codex_usage_tracker/reports.py",
155
- "src/codex_usage_tracker/schema.py",
156
- "src/codex_usage_tracker/store.py",
157
- "src/codex_usage_tracker/usage_drain_reports.py",
158
- "src/codex_usage_tracker/usage_drain_time_series.py",
151
+ "src/codex_usage_tracker/core/json_contracts.py",
152
+ "src/codex_usage_tracker/core/models.py",
153
+ "src/codex_usage_tracker/reports/recommendations.py",
154
+ "src/codex_usage_tracker/reports/api.py",
155
+ "src/codex_usage_tracker/core/schema.py",
156
+ "src/codex_usage_tracker/store/api.py",
157
+ "src/codex_usage_tracker/usage_drain/reports.py",
158
+ "src/codex_usage_tracker/usage_drain/time_series.py",
159
159
  ]