tradingcodex 1.2.1__tar.gz → 1.2.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (401) hide show
  1. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/CHANGELOG.md +12 -0
  2. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/PKG-INFO +1 -1
  3. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/docs/codex-native-orchestration.md +11 -6
  4. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/docs/generated-workspaces.md +22 -13
  5. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/docs/roles-skills-and-workflows.md +6 -3
  6. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/docs/validation-and-test-plan.md +12 -8
  7. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/installation.md +5 -5
  8. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_codex_cli_compat.py +8 -4
  9. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_codex_native_orchestration.py +28 -4
  10. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_datasets.py +51 -1
  11. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_release_contract.py +2 -1
  12. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_research_forecast_surfaces.py +4 -1
  13. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex.egg-info/PKG-INFO +1 -1
  14. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/commands/doctor.py +12 -3
  15. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/agents.py +1 -1
  16. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/mcp_runtime.py +25 -0
  17. tradingcodex-1.2.2/tradingcodex_service/version.py +1 -0
  18. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/files/.codex/config.toml +0 -3
  19. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/files/.codex/prompts/base_instructions/fixed-role.md +1 -1
  20. tradingcodex-1.2.1/tradingcodex_service/version.py +0 -1
  21. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/CONTRIBUTING.md +0 -0
  22. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/LICENSE +0 -0
  23. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/MANIFEST.in +0 -0
  24. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/NOTICE +0 -0
  25. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/README.md +0 -0
  26. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/TRADEMARKS.md +0 -0
  27. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/__init__.py +0 -0
  28. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/audit/__init__.py +0 -0
  29. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/audit/admin.py +0 -0
  30. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/audit/apps.py +0 -0
  31. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/audit/migrations/0001_v1_initial.py +0 -0
  32. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/audit/migrations/__init__.py +0 -0
  33. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/audit/models.py +0 -0
  34. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/harness/__init__.py +0 -0
  35. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/harness/admin.py +0 -0
  36. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/harness/apps.py +0 -0
  37. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/harness/migrations/0001_v1_initial.py +0 -0
  38. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/harness/migrations/__init__.py +0 -0
  39. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/harness/models.py +0 -0
  40. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/harness/templatetags/__init__.py +0 -0
  41. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/integrations/__init__.py +0 -0
  42. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/integrations/admin.py +0 -0
  43. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/integrations/apps.py +0 -0
  44. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/integrations/migrations/0001_v1_initial.py +0 -0
  45. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/integrations/migrations/__init__.py +0 -0
  46. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/integrations/models.py +0 -0
  47. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/mcp/__init__.py +0 -0
  48. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/mcp/admin.py +0 -0
  49. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/mcp/apps.py +0 -0
  50. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/mcp/migrations/0001_v1_initial.py +0 -0
  51. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/mcp/migrations/0002_remove_external_mcp_gate.py +0 -0
  52. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/mcp/migrations/__init__.py +0 -0
  53. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/mcp/models.py +0 -0
  54. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/mcp/services.py +0 -0
  55. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/orders/__init__.py +0 -0
  56. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/orders/admin.py +0 -0
  57. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/orders/apps.py +0 -0
  58. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/orders/migrations/0001_v1_initial.py +0 -0
  59. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/orders/migrations/__init__.py +0 -0
  60. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/orders/models.py +0 -0
  61. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/orders/services.py +0 -0
  62. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/policy/__init__.py +0 -0
  63. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/policy/admin.py +0 -0
  64. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/policy/apps.py +0 -0
  65. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/policy/migrations/0001_v1_initial.py +0 -0
  66. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/policy/migrations/__init__.py +0 -0
  67. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/policy/models.py +0 -0
  68. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/policy/services.py +0 -0
  69. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/portfolio/__init__.py +0 -0
  70. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/portfolio/admin.py +0 -0
  71. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/portfolio/apps.py +0 -0
  72. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/portfolio/migrations/0001_v1_initial.py +0 -0
  73. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/portfolio/migrations/__init__.py +0 -0
  74. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/apps/portfolio/models.py +0 -0
  75. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/assets/tradingcodex-banner-v1.png +0 -0
  76. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/assets/tradingcodex-banner-v2.png +0 -0
  77. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/assets/tradingcodex-banner-v3.png +0 -0
  78. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/assets/tradingcodex-banner.svg +0 -0
  79. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/docs/README.md +0 -0
  80. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/docs/data-sources-and-openbb.md +0 -0
  81. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/docs/decision-memory.md +0 -0
  82. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/docs/deployment.md +0 -0
  83. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/docs/financial-workflow-references.md +0 -0
  84. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/docs/guardrails.md +0 -0
  85. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/docs/harness.md +0 -0
  86. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/docs/improvement-loop.md +0 -0
  87. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/docs/interfaces-and-surfaces.md +0 -0
  88. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/docs/investment-brain-plugins.md +0 -0
  89. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/docs/knowledge-wikis.md +0 -0
  90. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/docs/licensing-and-commercialization.md +0 -0
  91. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/docs/product-direction.md +0 -0
  92. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/docs/release-readiness.md +0 -0
  93. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/docs/research-memory-and-artifacts.md +0 -0
  94. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/docs/safety-policy-and-execution.md +0 -0
  95. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/docs/system-architecture.md +0 -0
  96. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/docs/user-facing-skills.md +0 -0
  97. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/frontend/index.html +0 -0
  98. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/frontend/package-lock.json +0 -0
  99. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/frontend/package.json +0 -0
  100. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/frontend/src/App.tsx +0 -0
  101. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/frontend/src/ViewerShell.tsx +0 -0
  102. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/frontend/src/api.ts +0 -0
  103. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/frontend/src/domain.ts +0 -0
  104. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/frontend/src/features/LibraryPage.tsx +0 -0
  105. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/frontend/src/features/SystemPage.tsx +0 -0
  106. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/frontend/src/features/WikiPage.tsx +0 -0
  107. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/frontend/src/main.tsx +0 -0
  108. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/frontend/src/navigation.js +0 -0
  109. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/frontend/src/navigation.test.js +0 -0
  110. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/frontend/src/styles.css +0 -0
  111. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/frontend/src/ui.tsx +0 -0
  112. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/frontend/src/viewer-data.js +0 -0
  113. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/frontend/tsconfig.json +0 -0
  114. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/frontend/vite.config.ts +0 -0
  115. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/install.sh +0 -0
  116. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/pyproject.toml +0 -0
  117. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/setup.cfg +0 -0
  118. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_artifact_authentication.py +0 -0
  119. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_artifact_catalog.py +0 -0
  120. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_brain_skill.py +0 -0
  121. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_broker_center_prd.py +0 -0
  122. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_build_contract_metadata.py +0 -0
  123. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_build_hook.py +0 -0
  124. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_build_turn_grant.py +0 -0
  125. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_calculation_runner.py +0 -0
  126. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_clean_v1_cli_audit.py +0 -0
  127. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_codex_capabilities.py +0 -0
  128. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_codex_cli_contract.py +0 -0
  129. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_decision_memory_core.py +0 -0
  130. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_dev_bootstrap.py +0 -0
  131. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_dynamic_artifact_quality.py +0 -0
  132. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_e2e_user_scenarios.py +0 -0
  133. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_evaluation_lab_hardening.py +0 -0
  134. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_evaluation_profiles.py +0 -0
  135. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_guidebook_contract.py +0 -0
  136. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_investment_analysis.py +0 -0
  137. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_investment_brain_cli.py +0 -0
  138. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_investment_brain_prompt_layers.py +0 -0
  139. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_investment_brain_provenance.py +0 -0
  140. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_investment_brain_registry.py +0 -0
  141. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_investor_context.py +0 -0
  142. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_knowledge_wikis.py +0 -0
  143. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_mcp_broker_release_health.py +0 -0
  144. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_native_execution_gateway.py +0 -0
  145. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_order_turn_grant.py +0 -0
  146. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_platform_runtime.py +0 -0
  147. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_provider_source_approval.py +0 -0
  148. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_research_object_catalog.py +0 -0
  149. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_research_objects.py +0 -0
  150. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_research_spec_profiles.py +0 -0
  151. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_runtime_paths.py +0 -0
  152. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_runtime_profile.py +0 -0
  153. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_security_invariants.py +0 -0
  154. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_skill_runtime_boundaries.py +0 -0
  155. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_source_snapshot_agent_contract.py +0 -0
  156. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_v1_migrations.py +0 -0
  157. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_v1_state_integrity.py +0 -0
  158. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_viewer.py +0 -0
  159. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tests/test_workspace_git_contract.py +0 -0
  160. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex.egg-info/SOURCES.txt +0 -0
  161. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex.egg-info/dependency_links.txt +0 -0
  162. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex.egg-info/entry_points.txt +0 -0
  163. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex.egg-info/requires.txt +0 -0
  164. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex.egg-info/top_level.txt +0 -0
  165. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/__init__.py +0 -0
  166. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/__main__.py +0 -0
  167. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/calculation-runtime-lock.json +0 -0
  168. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/calculation-runtime-requirements.txt +0 -0
  169. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/calculation_runner.py +0 -0
  170. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/commands/__init__.py +0 -0
  171. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/commands/bootstrap.py +0 -0
  172. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/commands/build.py +0 -0
  173. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/commands/connectors.py +0 -0
  174. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/commands/data_sources.py +0 -0
  175. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/commands/db.py +0 -0
  176. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/commands/decision.py +0 -0
  177. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/commands/evaluation.py +0 -0
  178. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/commands/forecast.py +0 -0
  179. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/commands/home.py +0 -0
  180. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/commands/investment_brains.py +0 -0
  181. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/commands/investor_context.py +0 -0
  182. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/commands/mcp.py +0 -0
  183. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/commands/orders.py +0 -0
  184. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/commands/policy.py +0 -0
  185. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/commands/profile.py +0 -0
  186. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/commands/research.py +0 -0
  187. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/commands/skills.py +0 -0
  188. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/commands/strategies.py +0 -0
  189. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/commands/subagents.py +0 -0
  190. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/commands/utils.py +0 -0
  191. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/commands/wikis.py +0 -0
  192. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/commands/workflow.py +0 -0
  193. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/commands/workspaces.py +0 -0
  194. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/generator.py +0 -0
  195. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/mcp_stdio.py +0 -0
  196. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/package_source.py +0 -0
  197. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/service_autostart.py +0 -0
  198. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/startup_status.py +0 -0
  199. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_cli/versioning.py +0 -0
  200. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/__init__.py +0 -0
  201. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/admin.py +0 -0
  202. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/api.py +0 -0
  203. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/__init__.py +0 -0
  204. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/analysis_runs.py +0 -0
  205. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/artifact_bindings.py +0 -0
  206. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/artifact_catalog.py +0 -0
  207. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/artifact_quality.py +0 -0
  208. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/audit.py +0 -0
  209. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/brokers.py +0 -0
  210. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/build_gateway.py +0 -0
  211. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/calculations.py +0 -0
  212. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/codex_capabilities.py +0 -0
  213. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/common.py +0 -0
  214. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/data_sources.py +0 -0
  215. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/datasets.py +0 -0
  216. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/decision_packages.py +0 -0
  217. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/evaluation_lab.py +0 -0
  218. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/execution_gateway.py +0 -0
  219. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/forecasting.py +0 -0
  220. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/git_subprocess.py +0 -0
  221. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/harness.py +0 -0
  222. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/health.py +0 -0
  223. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/investment_analysis.py +0 -0
  224. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/investment_brains.py +0 -0
  225. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/investor_context.py +0 -0
  226. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/knowledge_wikis.py +0 -0
  227. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/managed_package_sources.py +0 -0
  228. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/markdown_preview.py +0 -0
  229. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/operator_authority.py +0 -0
  230. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/orders.py +0 -0
  231. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/policy.py +0 -0
  232. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/portfolio.py +0 -0
  233. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/postmortems.py +0 -0
  234. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/research.py +0 -0
  235. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/research_object_catalog.py +0 -0
  236. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/research_objects.py +0 -0
  237. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/research_specs.py +0 -0
  238. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/runtime.py +0 -0
  239. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/skill_invocations.py +0 -0
  240. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/source_snapshots.py +0 -0
  241. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/viewer.py +0 -0
  242. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/wiki_viewer.py +0 -0
  243. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/workspace_git.py +0 -0
  244. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/application/workspaces.py +0 -0
  245. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/asgi.py +0 -0
  246. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/log_safety.py +0 -0
  247. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/runtime_profile.py +0 -0
  248. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/settings.py +0 -0
  249. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/static/tradingcodex_admin/favicon.svg +0 -0
  250. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/static/tradingcodex_web/assets/allPaths-DJ5oy6Ot.js +0 -0
  251. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/static/tradingcodex_web/assets/allPathsLoader-CRlwLu1z.js +0 -0
  252. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/static/tradingcodex_web/assets/index-c5e0ZsDr.js +0 -0
  253. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/static/tradingcodex_web/assets/index-y2v9zCLQ.css +0 -0
  254. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/static/tradingcodex_web/assets/paths-BDuITqPr.js +0 -0
  255. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/static/tradingcodex_web/assets/paths-CoispWSv.js +0 -0
  256. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/static/tradingcodex_web/assets/splitPathsBySizeLoader-x57jFwA3.js +0 -0
  257. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/static/tradingcodex_web/index.html +0 -0
  258. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/urls.py +0 -0
  259. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/viewer_api.py +0 -0
  260. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/web.py +0 -0
  261. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/tradingcodex_service/wsgi.py +0 -0
  262. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/__init__.py +0 -0
  263. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/audit/files/.tradingcodex/audit/README.md +0 -0
  264. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/audit/files/trading/audit/.gitkeep +0 -0
  265. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/audit/module.json +0 -0
  266. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/files/.codex/hooks/tradingcodex_hook.py +0 -0
  267. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/files/.codex/hooks.json +0 -0
  268. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/files/.codex/prompts/base_instructions/head-manager.md +0 -0
  269. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/files/.codex/rules/tradingcodex.rules +0 -0
  270. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/files/.tradingcodex/cli.py +0 -0
  271. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/files/.tradingcodex/config.yaml +0 -0
  272. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/files/AGENTS.md +0 -0
  273. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/files/pyproject.toml +0 -0
  274. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/files/tcx +0 -0
  275. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/files/tcx-calc +0 -0
  276. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/files/tcx-calc.cmd +0 -0
  277. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/files/tcx.cmd +0 -0
  278. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/module.json +0 -0
  279. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/policies/restricted-list.yaml +0 -0
  280. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/approval_receipt.schema.json +0 -0
  281. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/audit_event.schema.json +0 -0
  282. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/evidence_pack.schema.json +0 -0
  283. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/execution_result.schema.json +0 -0
  284. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/fundamental_report.schema.json +0 -0
  285. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/news_report.schema.json +0 -0
  286. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/order_ticket.schema.json +0 -0
  287. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/portfolio_review.schema.json +0 -0
  288. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/postmortem_report.schema.json +0 -0
  289. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/research_artifact.schema.json +0 -0
  290. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/risk_report.schema.json +0 -0
  291. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/technical_report.schema.json +0 -0
  292. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/thesis.schema.json +0 -0
  293. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/valuation.schema.json +0 -0
  294. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/module.json +0 -0
  295. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/fundamental-analyst.toml +0 -0
  296. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/instrument-analyst.toml +0 -0
  297. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/judgment-reviewer.toml +0 -0
  298. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/macro-analyst.toml +0 -0
  299. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/news-analyst.toml +0 -0
  300. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/portfolio-manager.toml +0 -0
  301. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/risk-manager.toml +0 -0
  302. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/technical-analyst.toml +0 -0
  303. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/valuation-analyst.toml +0 -0
  304. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/fixed-subagents/files/.tradingcodex/mainagent/skill-change-proposals/.gitkeep +0 -0
  305. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/fixed-subagents/module.json +0 -0
  306. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/guidance-guardrails/files/.tradingcodex/guidance/guardrails.md +0 -0
  307. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/guidance-guardrails/files/.tradingcodex/guidance/task-quality-checklist.md +0 -0
  308. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/guidance-guardrails/module.json +0 -0
  309. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/.tradingcodex/secrets.md +0 -0
  310. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/trading/forecasts/.gitkeep +0 -0
  311. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/trading/market-data/.gitkeep +0 -0
  312. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/trading/portfolio/.gitkeep +0 -0
  313. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/trading/reports/fundamental/.gitkeep +0 -0
  314. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/trading/reports/instrument/.gitkeep +0 -0
  315. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/trading/reports/macro/.gitkeep +0 -0
  316. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/trading/reports/news/.gitkeep +0 -0
  317. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/trading/reports/policy/.gitkeep +0 -0
  318. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/trading/reports/portfolio/.gitkeep +0 -0
  319. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/trading/reports/postmortem/.gitkeep +0 -0
  320. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/trading/reports/risk/.gitkeep +0 -0
  321. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/trading/reports/technical/.gitkeep +0 -0
  322. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/trading/reports/valuation/.gitkeep +0 -0
  323. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/trading/research/.gitkeep +0 -0
  324. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/module.json +0 -0
  325. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/paper-trading/module.json +0 -0
  326. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-automate/SKILL.md +0 -0
  327. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-automate/agents/openai.yaml +0 -0
  328. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/SKILL.md +0 -0
  329. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/agents/openai.yaml +0 -0
  330. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/references/bundle-contract.md +0 -0
  331. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-build/SKILL.md +0 -0
  332. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-build/agents/openai.yaml +0 -0
  333. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-investor-context/SKILL.md +0 -0
  334. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-investor-context/agents/openai.yaml +0 -0
  335. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-memory/SKILL.md +0 -0
  336. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-memory/agents/openai.yaml +0 -0
  337. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-allow/SKILL.md +0 -0
  338. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-allow/agents/openai.yaml +0 -0
  339. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-cancel/SKILL.md +0 -0
  340. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-cancel/agents/openai.yaml +0 -0
  341. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-submit/SKILL.md +0 -0
  342. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-submit/agents/openai.yaml +0 -0
  343. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-plan/SKILL.md +0 -0
  344. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-plan/agents/openai.yaml +0 -0
  345. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-server/SKILL.md +0 -0
  346. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-server/agents/openai.yaml +0 -0
  347. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-strategy/SKILL.md +0 -0
  348. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-strategy/agents/openai.yaml +0 -0
  349. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-wiki/SKILL.md +0 -0
  350. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-wiki/agents/openai.yaml +0 -0
  351. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-wiki/references/bundle-contract.md +0 -0
  352. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/SKILL.md +0 -0
  353. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/agents/openai.yaml +0 -0
  354. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/fundamental-analyst/tcx-fundamental/SKILL.md +0 -0
  355. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/fundamental-analyst/tcx-fundamental/agents/openai.yaml +0 -0
  356. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/instrument-analyst/tcx-instrument/SKILL.md +0 -0
  357. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/instrument-analyst/tcx-instrument/agents/openai.yaml +0 -0
  358. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/judgment-reviewer/tcx-judgment/SKILL.md +0 -0
  359. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/judgment-reviewer/tcx-judgment/agents/openai.yaml +0 -0
  360. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/macro-analyst/tcx-macro/SKILL.md +0 -0
  361. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/macro-analyst/tcx-macro/agents/openai.yaml +0 -0
  362. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/news-analyst/tcx-news/SKILL.md +0 -0
  363. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/news-analyst/tcx-news/agents/openai.yaml +0 -0
  364. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-order-draft/SKILL.md +0 -0
  365. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-order-draft/agents/openai.yaml +0 -0
  366. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-portfolio/SKILL.md +0 -0
  367. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-portfolio/agents/openai.yaml +0 -0
  368. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-order-approve/SKILL.md +0 -0
  369. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-order-approve/agents/openai.yaml +0 -0
  370. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-policy/SKILL.md +0 -0
  371. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-policy/agents/openai.yaml +0 -0
  372. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-risk/SKILL.md +0 -0
  373. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-risk/agents/openai.yaml +0 -0
  374. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-anti-overfit/SKILL.md +0 -0
  375. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-anti-overfit/agents/openai.yaml +0 -0
  376. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-artifact/SKILL.md +0 -0
  377. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-artifact/agents/openai.yaml +0 -0
  378. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-calculation/SKILL.md +0 -0
  379. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-calculation/agents/openai.yaml +0 -0
  380. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-calculation/references/data-runtime.md +0 -0
  381. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-calculation/references/finance-methods.md +0 -0
  382. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-data-qc/SKILL.md +0 -0
  383. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-data-qc/agents/openai.yaml +0 -0
  384. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-evidence/SKILL.md +0 -0
  385. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-evidence/agents/openai.yaml +0 -0
  386. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-forecast/SKILL.md +0 -0
  387. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-forecast/agents/openai.yaml +0 -0
  388. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-scenarios/SKILL.md +0 -0
  389. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-scenarios/agents/openai.yaml +0 -0
  390. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-source-gate/SKILL.md +0 -0
  391. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-source-gate/agents/openai.yaml +0 -0
  392. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-source-gate/references/openbb-mcp.md +0 -0
  393. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/technical-analyst/tcx-technical/SKILL.md +0 -0
  394. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/technical-analyst/tcx-technical/agents/openai.yaml +0 -0
  395. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/valuation-analyst/tcx-valuation/SKILL.md +0 -0
  396. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/valuation-analyst/tcx-valuation/agents/openai.yaml +0 -0
  397. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/module.json +0 -0
  398. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/enforcer/README.md +0 -0
  399. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/gateway/README.md +0 -0
  400. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/server.py +0 -0
  401. {tradingcodex-1.2.1 → tradingcodex-1.2.2}/workspace_templates/modules/tradingcodex-mcp/module.json +0 -0
@@ -2,6 +2,18 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 1.2.2 - 2026-07-22
6
+
7
+ - Validate Codex CLI 0.145.0 as the current reference while retaining 0.144.4
8
+ as the compatibility floor; adopt its stable MultiAgent V2 schema by leaving
9
+ nesting and concurrency to native Codex while preserving strict config,
10
+ permission, hook, MCP, and role-model projection checks.
11
+ - Restore the Head Manager's generated `export_dataset_csv` projection by
12
+ registering its canonical MCP schema, role boundary, and export capability,
13
+ with a generated-config-to-registry regression check.
14
+ - Stop automated GitHub Release notes at the next changelog heading so a
15
+ release contains only its matching version section.
16
+
5
17
  ## 1.2.1 - 2026-07-21
6
18
 
7
19
  - Create or refresh the GitHub Release from the exact verified distributions
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tradingcodex
3
- Version: 1.2.1
3
+ Version: 1.2.2
4
4
  Summary: Local-first investment operating system for Codex-native research and service-gated execution.
5
5
  Author: TradingCodex Authors
6
6
  License-Expression: Apache-2.0
@@ -81,7 +81,8 @@ conflicts with Strategy.
81
81
 
82
82
  ## Delegation Contract
83
83
 
84
- MultiAgent V2 exposes the generated role profiles with a depth-one boundary.
84
+ MultiAgent V2 exposes the generated role profiles through native Codex
85
+ delegation.
85
86
  Head Manager prefers an exact profile when its specialty is useful and passes a
86
87
  compact role-owned brief rather than the full root history. Role TOML supplies
87
88
  the direct fixed model settings; their values and fallback eligibility are owned
@@ -98,11 +99,15 @@ Use `followup_task` when a live child still owns a correction or clarification.
98
99
  Start another child for a new specialty, an unavailable session, or independent
99
100
  review. Apply the canonical fallback boundary in
100
101
  [Roles, Skills, And Workflows](roles-skills-and-workflows.md). A child cannot
101
- approve, execute, access a broker, or emulate Head Manager. Children never
102
- delegate recursively. Head Manager waits only while a live child has useful work
103
- and reports lifecycle events only from native tool and child-lifecycle results
104
- in the current run. Native wait is wait-any and may serialize with no explicit
105
- target list; that representation is not failure by itself.
102
+ approve, execute, access a broker, or emulate Head Manager. Whether to delegate
103
+ a distinct child-owned subtask further is a native Codex decision, not a
104
+ TradingCodex workflow requirement. Every descendant remains subject to its
105
+ selected projected role and the shared evidence, authority, and safety
106
+ boundaries. Head Manager
107
+ waits only while a live child has useful work and reports lifecycle events only
108
+ from native tool and child-lifecycle results in the current run. Native wait is
109
+ wait-any and may serialize with no explicit target list; that representation is
110
+ not failure by itself.
106
111
 
107
112
  When a Brain applies, the assignment contains the question Head Manager derived
108
113
  from it, not the Brain body or a delegation of Brain authority. Brain content is
@@ -534,7 +534,7 @@ That explicit overlay rule applies to external skill procedures, not to
534
534
  read-only app, connector, MCP, or data tools used as evidence. A role whose
535
535
  assignment needs external data or preserves a user-named provider first checks
536
536
  the current task's callable tool surface and uses the runtime's available
537
- deferred-tool discovery surface when needed. The Codex 0.144.4 reference
537
+ deferred-tool discovery surface when needed. The Codex 0.145.0 reference
538
538
  contract first resolves at most 12 names with
539
539
  `text(ALL_TOOLS.filter(x => x.name.includes("<provider-or-keyword>")).slice(0, 12).map(x => x.name))`.
540
540
  One supported query may combine one to four literal `name.includes`
@@ -586,14 +586,22 @@ runs, hard-failure checks, blind review, and resolved outcomes.
586
586
  Generated `.codex/config.toml` enables MultiAgent V2 with visible spawn
587
587
  metadata and the `agents` tool namespace. It keeps every
588
588
  `.codex/agents/*.toml` role discoverable while setting
589
- `features.multi_agent_v2.enabled = true` and `agents.max_depth = 1`. The
590
- V1-only `agents.max_threads` key is absent because Codex rejects it when V2 is
591
- enabled. Codex owns concurrency and scheduling. Head Manager chooses useful
592
- profiles and follows up with an owner when appropriate. Role eligibility and
593
- fallback are defined in [Roles, Skills, And Workflows](roles-skills-and-workflows.md).
594
- Children cannot recursively dispatch. Root model and reasoning settings are
595
- inherited, and direct fixed-role TOML model settings are projected, but `doctor`
596
- does not duplicate native model availability or lifecycle checks.
589
+ `features.multi_agent_v2.enabled = true`. TradingCodex does not set
590
+ `agents.max_depth`, `agents.max_threads`, or
591
+ `agents.max_concurrent_threads_per_session`; Codex 0.145.0 ignores
592
+ `agents.max_depth` for V2, retains `agents.max_threads` as a compatibility
593
+ alias, and owns nesting, concurrency, and scheduling. Head Manager chooses
594
+ useful profiles and follows up with an owner when appropriate. Role eligibility
595
+ and fallback are defined in [Roles, Skills, And Workflows](roles-skills-and-workflows.md).
596
+ Whether to delegate distinct child-owned work further is a native Codex
597
+ decision, not a TradingCodex workflow requirement. Every descendant remains
598
+ subject to its selected projected role and TradingCodex safety and service
599
+ gates. Root model and reasoning settings are inherited, and direct fixed-role
600
+ TOML model settings are projected, but `doctor` does not duplicate native model
601
+ availability or lifecycle checks. Codex 0.145.0 exposes optional per-spawn model
602
+ and reasoning overrides by default; TradingCodex neither disables nor requires
603
+ them. A spawn without an explicit override follows native inheritance and role
604
+ config resolution.
597
605
 
598
606
  Workspace template modules are deployment projections. Agent and skill
599
607
  ownership comes from the Python agent registry and is projected
@@ -868,10 +876,11 @@ Generated root config sets `default_permissions = "trading-research"` and
868
876
  defines two custom profiles. It deliberately omits legacy `sandbox_mode` from
869
877
  the root and every fixed-role TOML because any loaded `sandbox_mode` overrides
870
878
  custom permission profiles in Codex. This contract requires Codex CLI 0.144.4
871
- or later on a locally supported platform. Version 0.144.4 is the current
879
+ or later on a locally supported platform. Version 0.145.0 is the current
872
880
  release-validation reference for permission profiles, hooks, required MCP,
873
- deferred MCP calls, and the explicit V2 feature table. Older versions fail the
874
- Codex runtime doctor check. These remain version-sensitive
881
+ deferred MCP calls, and the explicit V2 feature table. Versions below the
882
+ compatibility floor fail the Codex runtime doctor check; compatible non-reference
883
+ versions warn. These remain version-sensitive
875
884
  surfaces, so release validation includes strict config/feature inspection and
876
885
  a real native smoke.
877
886
  See the [Codex permissions reference](https://learn.chatgpt.com/docs/permissions).
@@ -1582,7 +1591,7 @@ Codex-native bootstrap verification:
1582
1591
  workspace. The canonical workspace must
1583
1592
  either be interactively trusted or receive the one-run `projects={...}` trust
1584
1593
  override shown in `AGENTS.md`. A full fixed-role lifecycle smoke must use
1585
- persisted trust for all five generated project hooks. Codex 0.144.4 does not
1594
+ persisted trust for all five generated project hooks. Codex 0.145.0 does not
1586
1595
  carry the one-run `--dangerously-bypass-hook-trust` flag through the role
1587
1596
  config reload used by an exact V2 child, so that flag may be used only for
1588
1597
  root/config diagnostics and is not lifecycle acceptance. It also does not
@@ -226,8 +226,11 @@ Start a fresh child for a new specialty, an unavailable session, or independent
226
226
  review. The Dynamic Workflow fallback boundary applies here. A generic child
227
227
  retains the same research-only scope, evidence standard, no-secret boundary,
228
228
  and no-order boundary; it cannot approve, execute, access a broker, or act as
229
- Head Manager. Children never delegate recursively. Wait only while a live child
230
- has useful work. Native
229
+ Head Manager. Whether to delegate a distinct child-owned subtask further is a
230
+ native Codex decision, not a workflow requirement. Each descendant remains
231
+ subject to its selected projected role and the shared evidence, authority, and
232
+ safety boundaries. Wait only while a live child has useful work.
233
+ Native
231
234
  wait-any may serialize without explicit targets; verify lifecycle through the
232
235
  native tool result and child session events rather than treating that as failure.
233
236
 
@@ -260,7 +263,7 @@ same contract error repeats.
260
263
  The same bounded rule applies across role MCP use: a documented terminal
261
264
  outcome such as stored, updated, existing, reused, or prepared ends that call;
262
265
  an unchanged deterministic failure is never blindly resubmitted. Under the
263
- Codex 0.144.4 deferred-tool contract, unknown-provider resolution starts with
266
+ Codex 0.145.0 deferred-tool contract, unknown-provider resolution starts with
264
267
  the canonical names-only query
265
268
  `text(ALL_TOOLS.filter(x => x.name.includes("<provider-or-keyword>")).slice(0, 12).map(x => x.name))`.
266
269
  One names-only query may combine at most four literal `name.includes`
@@ -266,8 +266,9 @@ Smoke coverage should verify:
266
266
  Manager and role-owned live research for the six evidence producers without
267
267
  treating a host finance skill as a dependency
268
268
  - generated `.codex/config.toml` explicitly enables MultiAgent V2, reports it
269
- enabled through `codex features list`, leaves concurrency to Codex, and omits
270
- the incompatible V1 `agents.max_threads` key
269
+ enabled through `codex features list`, leaves nesting and concurrency to
270
+ Codex, and omits TradingCodex-owned `agents.max_depth`,
271
+ `agents.max_threads`, and `agents.max_concurrent_threads_per_session`
271
272
  - skill/projection manifests identify the finite managed inventory, declare
272
273
  runtime discovery incomplete, and resolve exact root/role skill paths
273
274
  - two generated workspaces have different workspace ids
@@ -816,7 +817,7 @@ stop without an order, approval, execution, cancellation, broker mutation, or
816
817
  secret action. Record an unavailable Codex/auth blocker rather than replacing this with a
817
818
  claim based only on the fake subprocess test.
818
819
 
819
- Reference acceptance uses Codex CLI 0.144.4. Run
820
+ Reference acceptance uses Codex CLI 0.145.0. Run
820
821
  `python tests/codex_cli_contract.py --workspace <workspace>
821
822
  --require-reference --require-hook-trust` first, after opening the disposable
822
823
  workspace in interactive Codex and persistently trusting all five generated
@@ -826,7 +827,7 @@ configuration, readable sandbox settings, the expected enabled/disabled
826
827
  feature states, and trusted lifecycle hooks. Native `codex exec` smokes must
827
828
  also pass `--strict-config`, so a newly unknown or removed project key fails
828
829
  before model behavior is accepted. Do not use `--ignore-user-config` or
829
- `--dangerously-bypass-hook-trust` for lifecycle acceptance: in 0.144.4 the
830
+ `--dangerously-bypass-hook-trust` for lifecycle acceptance: in 0.145.0 the
830
831
  one-run bypass is not inherited when a V2 child reloads an exact role config.
831
832
  On platforms where a temporary directory has a symlinked alias, resolve the
832
833
  workspace once with `realpath` or `Path.resolve()` and use that same physical
@@ -839,10 +840,13 @@ Run native CLI smokes that inspect observable tool calls and child lifecycle
839
840
  results from Codex. Cover the direct fast path, one exact profile, a same-owner
840
841
  `followup_task`, and a bounded evidence-role generic fallback when a profile is
841
842
  unavailable. Briefs must stay compact, generated TOML must retain the fixed
842
- model settings and the project-wide `trading-research` profile, and no child may
843
- recursively delegate. A missing independent risk or judgment profile must remain
844
- explicit rather than becoming a generic review. Run a sequential two-child smoke plus one artifact-to-synthesis
845
- workflow because lifecycle failures may appear only after the first child exits.
843
+ model settings and the project-wide `trading-research` profile. When native
844
+ Codex delegates a child-owned subtask further, inspect the descendant lifecycle
845
+ and verify that its effective role, model, permission profile, MCP principal,
846
+ evidence boundary, and no-order boundary match the selected role. A missing independent risk or judgment
847
+ profile must remain explicit rather than becoming a generic review. Run a
848
+ sequential two-child smoke plus one artifact-to-synthesis workflow because
849
+ lifecycle failures may appear only after the first child exits.
846
850
 
847
851
  For a full research smoke, inspect root and child JSONL as observable behavior,
848
852
  not private chain of thought. Require a compact bounded child brief; reject broad
@@ -49,7 +49,7 @@ initialized is fine, as is an empty directory inside an existing parent
49
49
  worktree.
50
50
 
51
51
  Use Codex CLI 0.144.4 or later on macOS, Linux, WSL, or native Windows. Version
52
- 0.144.4 is the current TradingCodex reference for custom permission profiles,
52
+ 0.145.0 is the current TradingCodex reference for custom permission profiles,
53
53
  hooks, required MCP startup, and explicit MultiAgent V2 configuration. Verify
54
54
  with `codex --version`; `./tcx doctor --layer guidance` fails below the
55
55
  compatibility floor and warns when the installed CLI is older or newer than the
@@ -375,10 +375,10 @@ Generated root work inherits the user's active Codex model and reasoning
375
375
  settings. All nine fixed subagents use `gpt-5.6-terra` with `high` reasoning.
376
376
  Final execution is service-owned and runs no model.
377
377
  MultiAgent V2 exposes exact custom-role routing through the `agents` namespace;
378
- each task uses `fork_turns="none"` and a fresh role-bound child. The generated
379
- V2 table explicitly sets `enabled = true` and `max_depth = 1`; concurrency
380
- capacity remains owned by native Codex and user/host configuration rather than
381
- a projected V1 thread cap.
378
+ exact custom-role dispatch uses `fork_turns="none"` so Codex applies the fresh
379
+ role-bound config layer. The generated V2 table explicitly sets `enabled = true`
380
+ but does not set nesting or concurrency controls; native Codex and user/host
381
+ configuration own those choices.
382
382
  Inspect `.codex/config.toml`, `.codex/agents/`, and `./tcx doctor` after an
383
383
  update to verify the generated Codex contract. There is no model-policy
384
384
  manifest, runtime model fallback, or rollout control.
@@ -14,8 +14,10 @@ from tradingcodex_cli.commands import doctor
14
14
  ("0.144.0", False, False),
15
15
  ("0.144.1", False, False),
16
16
  ("0.144.2", False, False),
17
- ("0.144.4", True, False),
18
- ("0.145.0", True, True),
17
+ ("0.144.4", True, True),
18
+ ("0.144.5", True, True),
19
+ ("0.145.0", True, False),
20
+ ("0.145.1", True, True),
19
21
  ],
20
22
  )
21
23
  def test_codex_cli_reference_version_check(
@@ -42,10 +44,12 @@ def test_codex_cli_reference_version_check(
42
44
  assert bool(result.get("warn")) is warn
43
45
  assert f"installed={installed}" in result["detail"]
44
46
  assert "required>=0.144.4" in result["detail"]
45
- assert "reference=0.144.4" in result["detail"]
47
+ assert "reference=0.145.0" in result["detail"]
46
48
  if installed in {"0.144.1", "0.144.2"}:
47
49
  assert "older than required" in result["detail"]
48
- if installed == "0.145.0":
50
+ if installed in {"0.144.4", "0.144.5"}:
51
+ assert "older than reference" in result["detail"]
52
+ if installed == "0.145.1":
49
53
  assert "newer client requires harness revalidation" in result["detail"]
50
54
 
51
55
 
@@ -418,8 +418,8 @@ def test_generated_contract_inherits_root_model_and_keeps_role_profiles_optional
418
418
  assert '[features.multi_agent_v2]' in config
419
419
  assert 'enabled = true' in config
420
420
  assert "max_concurrent_threads_per_session" not in config
421
- assert "max_depth = 1" in config
422
- assert 'max_threads = 6' not in config
421
+ assert "max_depth" not in config_values.get("agents", {})
422
+ assert "max_threads" not in config_values.get("agents", {})
423
423
  assert "required = true" in config
424
424
  assert '"begin_analysis_run"' in config
425
425
  assert "record_workflow_plan" not in config
@@ -432,8 +432,8 @@ def test_generated_contract_inherits_root_model_and_keeps_role_profiles_optional
432
432
  assert "You are the `head-manager` agent" not in fixed_role
433
433
  assert "# Role And Safety" in fixed_role
434
434
  assert "authenticated TradingCodex MCP" in fixed_role
435
- assert "depth-1 child" in fixed_role
436
- assert "never spawn, coordinate" in fixed_role
435
+ assert "Whether to delegate" not in fixed_role
436
+ assert "All work performed on your behalf remains subject" in fixed_role
437
437
  assert "$tcx-source-gate" in fixed_role
438
438
  assert "Snapshot/Dataset/Artifact IDs" in fixed_role
439
439
  assert "do not duplicate or invent provider policy here" in fixed_role
@@ -484,6 +484,13 @@ def test_generated_contract_inherits_root_model_and_keeps_role_profiles_optional
484
484
  enabled_tools = set(role_config["mcp_servers"]["tradingcodex"]["enabled_tools"])
485
485
  assert role_config["model"] == "gpt-5.6-terra"
486
486
  assert role_config["model_reasoning_effort"] == "high"
487
+ assert role_config.get("agents", {}).get("enabled") is not False
488
+ assert (
489
+ role_config.get("features", {})
490
+ .get("multi_agent_v2", {})
491
+ .get("enabled")
492
+ is not False
493
+ )
487
494
  assert "get_research_artifact" in enabled_tools
488
495
  assert ARTIFACT_DISCOVERY_TOOLS.isdisjoint(enabled_tools)
489
496
  assert role_config["model_instructions_file"] == FIXED_ROLE_MODEL_INSTRUCTIONS
@@ -494,6 +501,23 @@ def test_generated_contract_inherits_root_model_and_keeps_role_profiles_optional
494
501
  assert "Artifact handoff:" not in role_instructions
495
502
 
496
503
 
504
+ def test_generated_mcp_allowlists_reference_only_registered_tools(workspace: Path) -> None:
505
+ config_paths = [
506
+ workspace / ".codex/config.toml",
507
+ *(workspace / ".codex/agents").glob("*.toml"),
508
+ ]
509
+
510
+ for config_path in config_paths:
511
+ config = tomllib.loads(config_path.read_text(encoding="utf-8"))
512
+ enabled_tools = set(
513
+ config["mcp_servers"]["tradingcodex"]["enabled_tools"]
514
+ )
515
+ assert enabled_tools <= TOOL_REGISTRY.keys(), (
516
+ f"{config_path.relative_to(workspace)} references unregistered "
517
+ f"TradingCodex MCP tools: {sorted(enabled_tools - TOOL_REGISTRY.keys())}"
518
+ )
519
+
520
+
497
521
  def test_doctor_requires_fixed_role_base_and_per_role_override(workspace: Path) -> None:
498
522
  doctor = subprocess.run(
499
523
  [str(workspace / "tcx"), "doctor", "--verbose"],
@@ -1,7 +1,8 @@
1
1
  from __future__ import annotations
2
2
 
3
- import json
3
+ import csv
4
4
  import hmac
5
+ import json
5
6
  import os
6
7
  from pathlib import Path
7
8
 
@@ -20,6 +21,7 @@ from tradingcodex_service.application.datasets import (
20
21
  )
21
22
  from tradingcodex_service.application.research import record_source_snapshot
22
23
  from tradingcodex_service.application.runtime import ensure_workspace_manifest
24
+ from tradingcodex_service.mcp_runtime import call_mcp_tool
23
25
 
24
26
 
25
27
  pytest.importorskip("pyarrow", reason="dataset tests require the pinned PyArrow runtime")
@@ -167,6 +169,54 @@ def test_dataset_ingest_is_immutable_idempotent_searchable_and_sliceable(
167
169
  )
168
170
 
169
171
 
172
+ def test_dataset_csv_export_is_registered_idempotent_and_license_gated(
173
+ workspace_and_scratch: tuple[Path, Path, str],
174
+ ) -> None:
175
+ root, scratch, snapshot_id = workspace_and_scratch
176
+ exportable = record_dataset_snapshot(
177
+ root,
178
+ {**_args(snapshot_id), "redistribution": "allowed"},
179
+ scratch_root=scratch,
180
+ )
181
+ export_args = {
182
+ "principal_id": "head-manager",
183
+ "dataset_id": exportable["dataset_id"],
184
+ "columns": ["timestamp", "close"],
185
+ "export_path": "trading/research/datasets/exports/btc-close.csv",
186
+ }
187
+
188
+ exported = call_mcp_tool(root, "export_dataset_csv", export_args)
189
+ assert exported["status"] == "exported"
190
+ assert exported["columns"] == ["timestamp", "close"]
191
+ assert exported["row_count"] == 3
192
+ export_path = root / exported["export_path"]
193
+ with export_path.open(encoding="utf-8", newline="") as handle:
194
+ assert list(csv.DictReader(handle)) == [
195
+ {"timestamp": "2026-01-01 00:00:00.000000Z", "close": "100"},
196
+ {"timestamp": "2026-01-02 00:00:00.000000Z", "close": "110"},
197
+ {"timestamp": "2026-01-03 00:00:00.000000Z", "close": "121"},
198
+ ]
199
+
200
+ repeated = call_mcp_tool(root, "export_dataset_csv", export_args)
201
+ assert repeated["status"] == "existing"
202
+ assert repeated["content_hash"] == exported["content_hash"]
203
+
204
+ restricted = record_dataset_snapshot(
205
+ root,
206
+ _args(snapshot_id, title="Restricted BTC daily prices"),
207
+ scratch_root=scratch,
208
+ )
209
+ with pytest.raises(PermissionError, match="redistribution is not explicitly allowed"):
210
+ call_mcp_tool(
211
+ root,
212
+ "export_dataset_csv",
213
+ {
214
+ "principal_id": "head-manager",
215
+ "dataset_id": restricted["dataset_id"],
216
+ },
217
+ )
218
+
219
+
170
220
  def test_dataset_rejects_unsafe_sources_and_withdrawal_is_explicit(
171
221
  workspace_and_scratch: tuple[Path, Path, str],
172
222
  ) -> None:
@@ -118,7 +118,7 @@ def test_cli_hook_dispatch_preserves_standard_input_and_output(
118
118
  def test_v1_package_metadata_has_one_stable_version_source() -> None:
119
119
  project = tomllib.loads((ROOT / "pyproject.toml").read_text(encoding="utf-8"))
120
120
 
121
- assert TRADINGCODEX_VERSION == "1.2.1"
121
+ assert TRADINGCODEX_VERSION == "1.2.2"
122
122
  assert str(Version(TRADINGCODEX_VERSION)) == TRADINGCODEX_VERSION
123
123
  assert project["project"]["dynamic"] == ["version"]
124
124
  assert "version" not in project["project"]
@@ -711,6 +711,7 @@ def test_release_publish_is_tag_bound_and_reuses_one_verified_build() -> None:
711
711
  assert any("download-artifact" in step.get("uses", "") for step in github_release["steps"])
712
712
  assert "CHANGELOG.md" in release_job_steps
713
713
  assert "release-notes.md" in release_job_steps
714
+ assert ' - [^\\n]*$\\n.*?(?=^## |\\Z)' in release_job_steps
714
715
  assert "gh release create" in release_job_steps
715
716
  assert "gh release edit" in release_job_steps
716
717
  assert "gh release upload" in release_job_steps
@@ -275,6 +275,7 @@ def test_generated_projection_and_registry_keep_evidence_roles_narrow(tmp_path:
275
275
  "list_artifact_catalog",
276
276
  "search_artifact_catalog",
277
277
  "rebuild_artifact_catalog",
278
+ "export_dataset_csv",
278
279
  }
279
280
  assert expected.issubset(TOOL_REGISTRY)
280
281
  assert TOOL_REGISTRY["create_causal_equity_analysis"].allowed_roles == {"valuation-analyst"}
@@ -284,6 +285,8 @@ def test_generated_projection_and_registry_keep_evidence_roles_narrow(tmp_path:
284
285
  assert TOOL_REGISTRY["create_evaluation_corpus"].allowed_roles == {"head-manager"}
285
286
  assert TOOL_REGISTRY["record_blind_human_review"].allowed_roles == {"judgment-reviewer"}
286
287
  assert TOOL_REGISTRY["rebuild_artifact_catalog"].allowed_roles == {"head-manager"}
288
+ assert TOOL_REGISTRY["export_dataset_csv"].allowed_roles == {"head-manager"}
289
+ assert TOOL_REGISTRY["export_dataset_csv"].capability_required == "dataset.export"
287
290
  assert all("execution-operator" not in TOOL_REGISTRY[name].allowed_roles for name in expected)
288
291
  assert {"get_research_spec", "list_research_specs", "get_forecast", "list_forecasts", "get_forecast_calibration_report", "list_artifact_catalog", "search_artifact_catalog"}.issubset(SAFE_HOME_TOOL_NAMES)
289
292
  snapshot_schema = TOOL_REGISTRY["record_source_snapshot"].input_schema
@@ -297,7 +300,7 @@ def test_generated_projection_and_registry_keep_evidence_roles_narrow(tmp_path:
297
300
  valuation_tools = set(tomllib.loads((workspace / ".codex/agents/valuation-analyst.toml").read_text(encoding="utf-8"))["mcp_servers"]["tradingcodex"]["enabled_tools"])
298
301
  judgment_tools = set(tomllib.loads((workspace / ".codex/agents/judgment-reviewer.toml").read_text(encoding="utf-8"))["mcp_servers"]["tradingcodex"]["enabled_tools"])
299
302
  assert not (workspace / ".codex/agents/execution-operator.toml").exists()
300
- assert {"create_research_spec", "create_evaluation_corpus", "score_forecast", "list_artifact_catalog", "search_artifact_catalog", "rebuild_artifact_catalog"}.issubset(root_tools)
303
+ assert {"create_research_spec", "create_evaluation_corpus", "score_forecast", "list_artifact_catalog", "search_artifact_catalog", "rebuild_artifact_catalog", "export_dataset_csv"}.issubset(root_tools)
301
304
  assert {"create_causal_equity_analysis", "issue_forecast"}.issubset(valuation_tools)
302
305
  assert {"record_blind_judgment_prior", "complete_judgment_review", "resolve_forecast", "promote_lesson", "record_blind_human_review"}.issubset(judgment_tools)
303
306
  artifact_discovery_tools = {
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tradingcodex
3
- Version: 1.2.1
3
+ Version: 1.2.2
4
4
  Summary: Local-first investment operating system for Codex-native research and service-gated execution.
5
5
  Author: TradingCodex Authors
6
6
  License-Expression: Apache-2.0
@@ -366,13 +366,22 @@ def _fixed_role_dispatch_checks(root: Path) -> list[dict[str, Any]]:
366
366
  }]
367
367
  features = config.get("features") if isinstance(config.get("features"), dict) else {}
368
368
  multi_agent_v2 = features.get("multi_agent_v2") if isinstance(features.get("multi_agent_v2"), dict) else {}
369
+ agents = config.get("agents") if isinstance(config.get("agents"), dict) else {}
370
+ orchestration_overrides = {
371
+ key: agents[key]
372
+ for key in (
373
+ "max_depth",
374
+ "max_threads",
375
+ "max_concurrent_threads_per_session",
376
+ )
377
+ if key in agents
378
+ }
369
379
  exact_runtime = (
370
380
  features.get("multi_agent") is True
371
381
  and multi_agent_v2.get("enabled") is True
372
382
  and multi_agent_v2.get("hide_spawn_agent_metadata") is False
373
383
  and multi_agent_v2.get("tool_namespace") == "agents"
374
- and config.get("agents", {}).get("max_depth") == 1
375
- and "max_threads" not in (config.get("agents") or {})
384
+ and not orchestration_overrides
376
385
  )
377
386
  workflow_path = root / ".agents" / "skills" / "tcx-workflow" / "SKILL.md"
378
387
  workflow = workflow_path.read_text(encoding="utf-8") if workflow_path.is_file() else ""
@@ -396,7 +405,7 @@ def _fixed_role_dispatch_checks(root: Path) -> list[dict[str, Any]]:
396
405
  f"multi_agent_v2={multi_agent_v2.get('enabled')}, "
397
406
  f"hide_spawn_agent_metadata={multi_agent_v2.get('hide_spawn_agent_metadata')}, "
398
407
  f"tool_namespace={multi_agent_v2.get('tool_namespace')}, "
399
- f"max_depth={config.get('agents', {}).get('max_depth')}"
408
+ f"orchestration_overrides={orchestration_overrides}"
400
409
  ),
401
410
  },
402
411
  {
@@ -46,7 +46,7 @@ class AgentSpec:
46
46
  forbidden_skill_tags: tuple[str, ...] = ()
47
47
  MODEL_TOOL_PROFILE_REVISION = "2026-07-role-allowlists-v1"
48
48
  MINIMUM_CODEX_VERSION = "0.144.4"
49
- REFERENCE_CODEX_VERSION = "0.144.4"
49
+ REFERENCE_CODEX_VERSION = "0.145.0"
50
50
 
51
51
 
52
52
  RESEARCH_ROLES = (
@@ -1373,6 +1373,31 @@ TOOL_SPECS: tuple[McpToolSpec, ...] = (
1373
1373
  additional_properties=False,
1374
1374
  ),
1375
1375
  ),
1376
+ McpToolSpec(
1377
+ name="export_dataset_csv",
1378
+ description=(
1379
+ "Export selected columns from an immutable Dataset to a workspace-managed CSV "
1380
+ "only when its manifest explicitly permits redistribution."
1381
+ ),
1382
+ category="research",
1383
+ risk_level="write",
1384
+ allowed_roles=roles_with_mcp_tool("export_dataset_csv"),
1385
+ handler_name="export_dataset_csv",
1386
+ input_schema=object_schema(
1387
+ {
1388
+ "dataset_id": {"type": "string"},
1389
+ "columns": {
1390
+ "type": "array",
1391
+ "items": {"type": "string"},
1392
+ "maxItems": 100,
1393
+ },
1394
+ "export_path": {"type": "string"},
1395
+ },
1396
+ ["dataset_id"],
1397
+ additional_properties=False,
1398
+ ),
1399
+ capability_required="dataset.export",
1400
+ ),
1376
1401
  McpToolSpec(
1377
1402
  name="profile_dataset",
1378
1403
  description="Profile selected Dataset columns and return bounded statistics plus at most 20 sample rows.",
@@ -0,0 +1 @@
1
+ TRADINGCODEX_VERSION = "1.2.2"
@@ -219,9 +219,6 @@ enabled = true
219
219
  hide_spawn_agent_metadata = false
220
220
  tool_namespace = "agents"
221
221
 
222
- [agents]
223
- max_depth = 1
224
-
225
222
  [[skills.config]]
226
223
  path = "../.agents/skills/tcx-plan/SKILL.md"
227
224
  enabled = true
@@ -2,7 +2,7 @@ You are a fixed-role child in TradingCodex, a local-first investment OS built on
2
2
 
3
3
  # Role And Safety
4
4
 
5
- - Stay within the assigned role and question. You are a depth-1 child: never spawn, coordinate, begin a run, synthesize, use Build/Brain/Strategy/order-turn authority, or emulate another role.
5
+ - Stay within the assigned role and question. All work performed on your behalf remains subject to the applicable projected evidence, authority, and safety boundaries. Do not begin a run, synthesize the Head Manager's decision, use Build/Brain/Strategy/order-turn authority, or emulate another role.
6
6
  - Read only task-relevant projected skills. Skills are procedures, not authority.
7
7
  - Keep disposable work under `$TRADINGCODEX_SCRATCH`. Use authenticated TradingCodex MCP for durable research; never access secrets, broker APIs, private services, approvals, orders, audit records, or protected state.
8
8
  - Never submit/cancel an order or mutate a broker. Language, assignments, skills, and tools do not grant that authority.
@@ -1 +0,0 @@
1
- TRADINGCODEX_VERSION = "1.2.1"
File without changes
File without changes
File without changes
File without changes
File without changes