tradingcodex 0.2.4__tar.gz → 0.2.6__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 (303) hide show
  1. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/MANIFEST.in +1 -1
  2. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/PKG-INFO +23 -17
  3. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/README.md +22 -16
  4. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/docs/components.md +1 -1
  5. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/docs/core-concepts-and-rules.md +3 -3
  6. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/docs/deployment.md +16 -10
  7. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/docs/generated-workspaces.md +32 -12
  8. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/docs/guardrails.md +1 -1
  9. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/docs/interfaces-and-surfaces.md +11 -10
  10. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/docs/product-direction.md +3 -3
  11. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/docs/roles-skills-and-workflows.md +34 -11
  12. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/docs/safety-policy-and-execution.md +43 -43
  13. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/docs/system-architecture.md +6 -5
  14. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/docs/validation-and-test-plan.md +25 -42
  15. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/pyproject.toml +2 -1
  16. tradingcodex-0.2.6/tests/test_broker_center_prd.py +790 -0
  17. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tests/test_e2e_user_scenarios.py +89 -2
  18. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tests/test_python_migration.py +259 -146
  19. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex.egg-info/PKG-INFO +23 -17
  20. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex.egg-info/SOURCES.txt +4 -17
  21. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_cli/__main__.py +1 -1
  22. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_cli/commands/connectors.py +41 -8
  23. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_cli/commands/doctor.py +5 -6
  24. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_cli/commands/mcp.py +5 -2
  25. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_cli/commands/utils.py +4 -17
  26. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_cli/startup_status.py +57 -13
  27. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/application/agents.py +220 -79
  28. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/application/brokers.py +585 -816
  29. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/application/components.py +9 -6
  30. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/application/harness.py +29 -47
  31. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/application/markdown_preview.py +19 -42
  32. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/application/orders.py +184 -35
  33. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/application/policy.py +12 -8
  34. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/mcp_runtime.py +120 -84
  35. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/settings.py +3 -3
  36. {tradingcodex-0.2.4 → tradingcodex-0.2.6/tradingcodex_service}/static/tradingcodex_web/app.css +1729 -4
  37. tradingcodex-0.2.6/tradingcodex_service/static/tradingcodex_web/app.js +186 -0
  38. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/templates/web/base.html +6 -29
  39. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/templates/web/brokers.html +21 -4
  40. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/templates/web/fragments/topology_canvas.html +7 -17
  41. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/templates/web/fragments/workspace_card.html +2 -2
  42. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/templates/web/mcp_router.html +17 -19
  43. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/urls.py +1 -2
  44. tradingcodex-0.2.6/tradingcodex_service/version.py +1 -0
  45. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/web.py +22 -0
  46. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/codex-base/files/.codex/config.toml +7 -1
  47. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/codex-base/files/.codex/hooks/tradingcodex_hook.py +8 -0
  48. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/codex-base/files/.codex/prompts/base_instructions/head-manager.md +24 -3
  49. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/codex-base/files/AGENTS.md +4 -3
  50. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/fixed-subagents/files/.codex/agents/execution-operator.toml +3 -3
  51. tradingcodex-0.2.6/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-build/SKILL.md +34 -0
  52. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-build/agents/openai.yaml +2 -2
  53. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-server/SKILL.md +1 -0
  54. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/execution-operator/execute-paper-order/SKILL.md +7 -7
  55. tradingcodex-0.2.4/apps/integrations/services.py +0 -31
  56. tradingcodex-0.2.4/apps/research/admin.py +0 -1
  57. tradingcodex-0.2.4/apps/research/apps.py +0 -8
  58. tradingcodex-0.2.4/apps/research/models.py +0 -1
  59. tradingcodex-0.2.4/apps/workflows/migrations/__init__.py +0 -0
  60. tradingcodex-0.2.4/static/tradingcodex_web/app.js +0 -74
  61. tradingcodex-0.2.4/static/tradingcodex_web/workbench.css +0 -1726
  62. tradingcodex-0.2.4/static/vendor/alpine/alpine.min.js +0 -5
  63. tradingcodex-0.2.4/tests/test_broker_center_prd.py +0 -587
  64. tradingcodex-0.2.4/tradingcodex_service/mcp_http.py +0 -60
  65. tradingcodex-0.2.4/tradingcodex_service/version.py +0 -1
  66. tradingcodex-0.2.4/workspace_templates/__init__.py +0 -1
  67. tradingcodex-0.2.4/workspace_templates/modules/paper-trading/files/.tradingcodex/mcp/adapters/paper-trading.py +0 -4
  68. tradingcodex-0.2.4/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-build/SKILL.md +0 -31
  69. tradingcodex-0.2.4/workspace_templates/modules/stub-execution/files/.tradingcodex/mcp/adapters/stub-execution.py +0 -4
  70. tradingcodex-0.2.4/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/adapters/live-adapter.contract.md +0 -25
  71. tradingcodex-0.2.4/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/smoke-call.py +0 -18
  72. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/CONTRIBUTING.md +0 -0
  73. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/LICENSE +0 -0
  74. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/NOTICE +0 -0
  75. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/TRADEMARKS.md +0 -0
  76. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/__init__.py +0 -0
  77. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/audit/__init__.py +0 -0
  78. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/audit/admin.py +0 -0
  79. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/audit/apps.py +0 -0
  80. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/audit/migrations/0001_initial.py +0 -0
  81. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/audit/migrations/__init__.py +0 -0
  82. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/audit/models.py +0 -0
  83. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/harness/__init__.py +0 -0
  84. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/harness/admin.py +0 -0
  85. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/harness/apps.py +0 -0
  86. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/harness/migrations/0001_initial.py +0 -0
  87. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/harness/migrations/__init__.py +0 -0
  88. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/harness/models.py +0 -0
  89. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/harness/templatetags/__init__.py +0 -0
  90. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/integrations/__init__.py +0 -0
  91. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/integrations/admin.py +0 -0
  92. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/integrations/apps.py +0 -0
  93. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/integrations/migrations/0001_initial.py +0 -0
  94. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/integrations/migrations/0002_brokerconnection_brokeraccount_instrumentmap.py +0 -0
  95. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/integrations/migrations/__init__.py +0 -0
  96. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/integrations/models.py +0 -0
  97. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/mcp/__init__.py +0 -0
  98. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/mcp/admin.py +0 -0
  99. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/mcp/apps.py +0 -0
  100. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/mcp/migrations/0001_initial.py +0 -0
  101. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/mcp/migrations/__init__.py +0 -0
  102. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/mcp/models.py +0 -0
  103. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/mcp/services.py +0 -0
  104. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/orders/__init__.py +0 -0
  105. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/orders/admin.py +0 -0
  106. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/orders/apps.py +0 -0
  107. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/orders/migrations/0001_initial.py +0 -0
  108. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/orders/migrations/0002_approvalreceipt_approved_order_type_and_more.py +0 -0
  109. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/orders/migrations/0003_migrate_orderintent_to_orderticket.py +0 -0
  110. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/orders/migrations/0004_remove_order_intent_compat_fields.py +0 -0
  111. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/orders/migrations/__init__.py +0 -0
  112. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/orders/models.py +0 -0
  113. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/orders/services.py +0 -0
  114. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/policy/__init__.py +0 -0
  115. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/policy/admin.py +0 -0
  116. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/policy/apps.py +0 -0
  117. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/policy/migrations/0001_initial.py +0 -0
  118. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/policy/migrations/__init__.py +0 -0
  119. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/policy/models.py +0 -0
  120. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/policy/services.py +0 -0
  121. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/portfolio/__init__.py +0 -0
  122. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/portfolio/admin.py +0 -0
  123. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/portfolio/apps.py +0 -0
  124. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/portfolio/migrations/0001_initial.py +0 -0
  125. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/portfolio/migrations/0002_brokersyncrun_portfolioledgerevent_reconciliationrun.py +0 -0
  126. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/portfolio/migrations/__init__.py +0 -0
  127. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/portfolio/models.py +0 -0
  128. {tradingcodex-0.2.4/apps/research → tradingcodex-0.2.6/apps/workflows}/__init__.py +0 -0
  129. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/workflows/admin.py +0 -0
  130. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/workflows/apps.py +0 -0
  131. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/workflows/migrations/0001_initial.py +0 -0
  132. {tradingcodex-0.2.4/apps/research → tradingcodex-0.2.6/apps/workflows}/migrations/__init__.py +0 -0
  133. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/apps/workflows/models.py +0 -0
  134. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/assets/tradingcodex-banner.svg +0 -0
  135. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/docs/README.md +0 -0
  136. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/docs/financial-workflow-references.md +0 -0
  137. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/docs/harness.md +0 -0
  138. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/docs/improvement-loop.md +0 -0
  139. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/docs/licensing-and-commercialization.md +0 -0
  140. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/docs/research-memory-and-artifacts.md +0 -0
  141. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/install.sh +0 -0
  142. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/installation.md +0 -0
  143. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/setup.cfg +0 -0
  144. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex.egg-info/dependency_links.txt +0 -0
  145. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex.egg-info/entry_points.txt +0 -0
  146. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex.egg-info/requires.txt +0 -0
  147. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex.egg-info/top_level.txt +0 -0
  148. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_cli/__init__.py +0 -0
  149. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_cli/commands/__init__.py +0 -0
  150. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_cli/commands/bootstrap.py +0 -0
  151. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_cli/commands/db.py +0 -0
  152. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_cli/commands/mode.py +0 -0
  153. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_cli/commands/orders.py +0 -0
  154. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_cli/commands/policy.py +0 -0
  155. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_cli/commands/profile.py +0 -0
  156. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_cli/commands/research.py +0 -0
  157. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_cli/commands/skills.py +0 -0
  158. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_cli/commands/strategies.py +0 -0
  159. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_cli/commands/subagents.py +0 -0
  160. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_cli/commands/workspaces.py +0 -0
  161. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_cli/generator.py +0 -0
  162. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_cli/mcp_stdio.py +0 -0
  163. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_cli/service_autostart.py +0 -0
  164. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/__init__.py +0 -0
  165. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/admin.py +0 -0
  166. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/api.py +0 -0
  167. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/application/__init__.py +0 -0
  168. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/application/artifact_quality.py +0 -0
  169. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/application/audit.py +0 -0
  170. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/application/common.py +0 -0
  171. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/application/context_budget.py +0 -0
  172. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/application/portfolio.py +0 -0
  173. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/application/research.py +0 -0
  174. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/application/runtime.py +0 -0
  175. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/application/runtime_mode.py +0 -0
  176. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/asgi.py +0 -0
  177. {tradingcodex-0.2.4 → tradingcodex-0.2.6/tradingcodex_service}/static/tradingcodex_admin/favicon.svg +0 -0
  178. {tradingcodex-0.2.4 → tradingcodex-0.2.6/tradingcodex_service}/static/vendor/htmx/htmx.min.js +0 -0
  179. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/templates/web/activity.html +0 -0
  180. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/templates/web/agent_skills.html +0 -0
  181. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/templates/web/agents.html +0 -0
  182. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/templates/web/dashboard.html +0 -0
  183. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/templates/web/fragments/role_inspector.html +0 -0
  184. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/templates/web/fragments/starter_prompt.html +0 -0
  185. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/templates/web/harness.html +0 -0
  186. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/templates/web/orders.html +0 -0
  187. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/templates/web/policy.html +0 -0
  188. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/templates/web/portfolio.html +0 -0
  189. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/templates/web/research.html +0 -0
  190. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/templates/web/starter_prompt.html +0 -0
  191. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/templates/web/strategies.html +0 -0
  192. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/tradingcodex_service/wsgi.py +0 -0
  193. {tradingcodex-0.2.4/apps/workflows → tradingcodex-0.2.6/workspace_templates}/__init__.py +0 -0
  194. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/audit/files/.tradingcodex/audit/README.md +0 -0
  195. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/audit/files/trading/audit/.gitkeep +0 -0
  196. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/audit/module.json +0 -0
  197. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/codex-base/files/.codex/hooks.json +0 -0
  198. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/codex-base/files/.codex/rules/tradingcodex.rules +0 -0
  199. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/codex-base/files/.tradingcodex/capabilities.yaml +0 -0
  200. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/codex-base/files/.tradingcodex/cli.py +0 -0
  201. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/codex-base/files/.tradingcodex/config.yaml +0 -0
  202. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/codex-base/files/.tradingcodex/policies/policy-bindings.yaml +0 -0
  203. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/codex-base/files/.tradingcodex/policies/principals.yaml +0 -0
  204. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/codex-base/files/.tradingcodex/policies/roles.yaml +0 -0
  205. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/codex-base/files/pyproject.toml +0 -0
  206. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/codex-base/files/tcx +0 -0
  207. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/codex-base/module.json +0 -0
  208. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/policies/access-policies.yaml +0 -0
  209. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/policies/restricted-list.yaml +0 -0
  210. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/approval_receipt.schema.json +0 -0
  211. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/audit_event.schema.json +0 -0
  212. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/evidence_pack.schema.json +0 -0
  213. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/execution_result.schema.json +0 -0
  214. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/fundamental_report.schema.json +0 -0
  215. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/news_report.schema.json +0 -0
  216. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/order_ticket.schema.json +0 -0
  217. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/portfolio_review.schema.json +0 -0
  218. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/postmortem_report.schema.json +0 -0
  219. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/research_artifact.schema.json +0 -0
  220. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/risk_report.schema.json +0 -0
  221. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/technical_report.schema.json +0 -0
  222. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/thesis.schema.json +0 -0
  223. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/valuation.schema.json +0 -0
  224. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/enforcement-guardrails/module.json +0 -0
  225. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/fixed-subagents/files/.codex/agents/fundamental-analyst.toml +0 -0
  226. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/fixed-subagents/files/.codex/agents/instrument-analyst.toml +0 -0
  227. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/fixed-subagents/files/.codex/agents/macro-analyst.toml +0 -0
  228. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/fixed-subagents/files/.codex/agents/news-analyst.toml +0 -0
  229. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/fixed-subagents/files/.codex/agents/portfolio-manager.toml +0 -0
  230. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/fixed-subagents/files/.codex/agents/risk-manager.toml +0 -0
  231. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/fixed-subagents/files/.codex/agents/technical-analyst.toml +0 -0
  232. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/fixed-subagents/files/.codex/agents/valuation-analyst.toml +0 -0
  233. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/fixed-subagents/files/.tradingcodex/mainagent/head-manager.yaml +0 -0
  234. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/fixed-subagents/files/.tradingcodex/mainagent/skill-change-proposals/.gitkeep +0 -0
  235. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/fixed-subagents/files/.tradingcodex/mainagent/subagent-registry.yaml +0 -0
  236. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/fixed-subagents/module.json +0 -0
  237. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/guidance-guardrails/files/.tradingcodex/guidance/guardrails.md +0 -0
  238. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/guidance-guardrails/files/.tradingcodex/guidance/task-quality-checklist.md +0 -0
  239. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/guidance-guardrails/module.json +0 -0
  240. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/information-barriers/files/.tradingcodex/policies/information-barriers.yaml +0 -0
  241. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/information-barriers/files/.tradingcodex/secrets.md +0 -0
  242. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/information-barriers/files/trading/approvals/.gitkeep +0 -0
  243. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/information-barriers/files/trading/market-data/.gitkeep +0 -0
  244. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/information-barriers/files/trading/orders/approved/.gitkeep +0 -0
  245. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/information-barriers/files/trading/orders/draft/.gitkeep +0 -0
  246. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/information-barriers/files/trading/orders/executed/.gitkeep +0 -0
  247. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/information-barriers/files/trading/orders/rejected/.gitkeep +0 -0
  248. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/information-barriers/files/trading/portfolio/.gitkeep +0 -0
  249. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/information-barriers/files/trading/reports/fundamental/.gitkeep +0 -0
  250. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/information-barriers/files/trading/reports/instrument/.gitkeep +0 -0
  251. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/information-barriers/files/trading/reports/macro/.gitkeep +0 -0
  252. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/information-barriers/files/trading/reports/news/.gitkeep +0 -0
  253. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/information-barriers/files/trading/reports/policy/.gitkeep +0 -0
  254. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/information-barriers/files/trading/reports/portfolio/.gitkeep +0 -0
  255. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/information-barriers/files/trading/reports/postmortem/.gitkeep +0 -0
  256. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/information-barriers/files/trading/reports/risk/.gitkeep +0 -0
  257. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/information-barriers/files/trading/reports/technical/.gitkeep +0 -0
  258. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/information-barriers/files/trading/reports/valuation/.gitkeep +0 -0
  259. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/information-barriers/files/trading/research/.gitkeep +0 -0
  260. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/information-barriers/module.json +0 -0
  261. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/paper-trading/module.json +0 -0
  262. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/postmortem/files/.tradingcodex/workflows/postmortem.yaml +0 -0
  263. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/postmortem/module.json +0 -0
  264. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.agents/skills/postmortem/SKILL.md +0 -0
  265. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.agents/skills/postmortem/agents/openai.yaml +0 -0
  266. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.agents/skills/strategy-creator/SKILL.md +0 -0
  267. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.agents/skills/strategy-creator/agents/openai.yaml +0 -0
  268. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-server/agents/openai.yaml +0 -0
  269. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/SKILL.md +0 -0
  270. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/agents/openai.yaml +0 -0
  271. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/execution-operator/execute-paper-order/agents/openai.yaml +0 -0
  272. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/fundamental-analyst/fundamental-analysis/SKILL.md +0 -0
  273. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/fundamental-analyst/fundamental-analysis/agents/openai.yaml +0 -0
  274. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/instrument-analyst/instrument-analysis/SKILL.md +0 -0
  275. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/instrument-analyst/instrument-analysis/agents/openai.yaml +0 -0
  276. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/macro-analyst/macro-analysis/SKILL.md +0 -0
  277. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/macro-analyst/macro-analysis/agents/openai.yaml +0 -0
  278. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/news-analyst/news-analysis/SKILL.md +0 -0
  279. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/news-analyst/news-analysis/agents/openai.yaml +0 -0
  280. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/create-order-ticket/SKILL.md +0 -0
  281. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/create-order-ticket/agents/openai.yaml +0 -0
  282. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/portfolio-review/SKILL.md +0 -0
  283. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/portfolio-review/agents/openai.yaml +0 -0
  284. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/approve-order/SKILL.md +0 -0
  285. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/approve-order/agents/openai.yaml +0 -0
  286. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/policy-review/SKILL.md +0 -0
  287. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/policy-review/agents/openai.yaml +0 -0
  288. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/review-risk/SKILL.md +0 -0
  289. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/review-risk/agents/openai.yaml +0 -0
  290. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/collect-evidence/SKILL.md +0 -0
  291. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/collect-evidence/agents/openai.yaml +0 -0
  292. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/external-data-source-gate/SKILL.md +0 -0
  293. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/external-data-source-gate/agents/openai.yaml +0 -0
  294. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/technical-analyst/technical-analysis/SKILL.md +0 -0
  295. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/technical-analyst/technical-analysis/agents/openai.yaml +0 -0
  296. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/valuation-analyst/valuation-review/SKILL.md +0 -0
  297. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/valuation-analyst/valuation-review/agents/openai.yaml +0 -0
  298. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/repo-skills/module.json +0 -0
  299. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/stub-execution/module.json +0 -0
  300. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/enforcer/README.md +0 -0
  301. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/gateway/README.md +0 -0
  302. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/server.py +0 -0
  303. {tradingcodex-0.2.4 → tradingcodex-0.2.6}/workspace_templates/modules/tradingcodex-mcp/module.json +0 -0
@@ -9,5 +9,5 @@ recursive-include docs *
9
9
  recursive-include workspace_templates *
10
10
  recursive-include workspace_templates .*
11
11
  recursive-include tradingcodex_service/templates *
12
- recursive-include static *
12
+ recursive-include tradingcodex_service/static *
13
13
  global-exclude *.py[cod]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tradingcodex
3
- Version: 0.2.4
3
+ Version: 0.2.6
4
4
  Summary: Codex-native trading harness with a Django service plane and approved action boundary.
5
5
  Author: TradingCodex Authors
6
6
  License-Expression: Apache-2.0
@@ -59,8 +59,8 @@ Dynamic: license-file
59
59
 
60
60
  TradingCodex is a local-first Python/Django trading harness for rigorous
61
61
  Codex-assisted research, portfolio review, order-ticket checks, approvals, and
62
- experimental non-live submission checks. Codex coordinates the work, Django
63
- owns the durable service plane, and TradingCodex owns the executable boundary.
62
+ service-gated execution checks. Codex coordinates the work, Django owns the
63
+ durable service plane, and TradingCodex owns the executable boundary.
64
64
 
65
65
  [Quick Start](#installation) | [Docs](docs/README.md) | [Safety](docs/safety-policy-and-execution.md) | [Architecture](docs/system-architecture.md) | [Contributing](CONTRIBUTING.md) | [License](LICENSE)
66
66
 
@@ -78,7 +78,8 @@ policy and approval services, a central local ledger, and a local web dashboard
78
78
  for review.
79
79
 
80
80
  It is not an autonomous trading bot. Natural-language answers do not become
81
- broker actions. Live broker adapters are not shipped in the initial core.
81
+ broker actions. The core ships paper execution by default; live broker support
82
+ comes only from installed, reviewed providers and explicit live gates.
82
83
 
83
84
  ---
84
85
 
@@ -92,7 +93,7 @@ broker actions. Live broker adapters are not shipped in the initial core.
92
93
  | Fixed-role workflows | Specialist agents own bounded questions across fundamentals, technicals, news, macro, instruments, valuation, portfolio, risk, and execution. |
93
94
  | Approved action boundary | Actions are typed, role-scoped, policy-checked, approval-aware, duplicate-request checked, connection-gated, and audited. |
94
95
  | Local web dashboard | Review agents, skills, strategy skills, research markdown, Broker Center, Data Sources, order tickets, portfolio state, and activity at `127.0.0.1:48267`. |
95
- | Broker Center foundations | Register connector profiles, inspect capability profiles, run read-only paper sync, review instrument constraints, and reconcile portfolio state. |
96
+ | Broker Center foundations | Connect provider-driven broker profiles, list installed providers, scaffold/register advanced connectors, inspect capability profiles, run account sync, review instrument constraints, and reconcile portfolio state. |
96
97
  | OrderTicket lifecycle | Draft, check, approve, submit, cancel, refresh, and inspect order tickets through central DB records and service-layer state transitions. |
97
98
  | Data Sources gate | Import external source discovery metadata, review available actions, scope role access, and block unsafe raw execution or secret paths by default. |
98
99
  | Improvement loop | Quality gates, postmortems, optional skills, strategy skills, strict artifact checks, and generated workspace smoke tests turn process gaps into durable improvements. |
@@ -169,8 +170,13 @@ boundaries rather than on black-box automation.
169
170
  - Deterministic executable boundary: every executable path follows
170
171
  a fixed requester, permission, policy, payload, approval, duplicate-request,
171
172
  connection, and audit sequence.
172
- - Safety-first broker posture: live broker execution is excluded; paper and
173
- reviewed test/sandbox validation remain experimental local harness flows.
173
+ - Safety-first broker posture: paper is built in; live broker execution requires
174
+ an installed provider plus workspace config, policy, environment opt-in,
175
+ approval, confirmation, idempotency, sync, and audit gates.
176
+ - Broker control plane: TradingCodex stores connector state, capability
177
+ profiles, mapping review, approval, execution, reconciliation, and audit;
178
+ provider adapters absorb broker-specific REST, SDK, MCP, or manual interface
179
+ differences behind canonical service/MCP tools.
174
180
 
175
181
  ---
176
182
 
@@ -180,7 +186,7 @@ TradingCodex is designed around handoffs:
180
186
 
181
187
  ```text
182
188
  evidence -> analysis -> valuation -> portfolio fit -> risk review
183
- -> draft order -> approval receipt -> approved non-live submission
189
+ -> draft order -> approval receipt -> approved service-gated submission
184
190
  -> connection result -> audit/postmortem
185
191
  ```
186
192
 
@@ -204,7 +210,7 @@ workflow has earned. Weak, stale, missing, or out-of-scope upstream work returns
204
210
  | Decision review | `valuation-analyst` | Valuation ranges, scenario assumptions, multiples, sensitivity, and decision-quality gaps. |
205
211
  | Portfolio | `portfolio-manager` | Portfolio fit, sizing, concentration, liquidity, opportunity cost, and draft order-ticket readiness. |
206
212
  | Risk | `risk-manager` | Downside, restricted-list checks, policy readiness, approval readiness, and approval receipts. |
207
- | Execution | `execution-operator` | Approved non-live submission through the TradingCodex service boundary only. |
213
+ | Execution | `execution-operator` | Approved submission/cancel/status through the TradingCodex service boundary only; live requires all gates. |
208
214
 
209
215
  ---
210
216
 
@@ -218,9 +224,9 @@ workflow has earned. Weak, stale, missing, or out-of-scope upstream work returns
218
224
  | MCP | Agent/tool boundary with typed tools, role scopes, policy checks, approval checks, and audit. |
219
225
  | CLI | Local operator commands plus generated workspace `./tcx` wrapper behavior. |
220
226
 
221
- The baseline frontend uses Django templates, local static HTMX, and local
222
- static Alpine. There is no Node, bundler, React, or frontend build step in the
223
- core package.
227
+ The baseline frontend uses Django templates, local static HTMX, and small plain
228
+ JavaScript. There is no Node, bundler, React, or frontend build step in the core
229
+ package.
224
230
 
225
231
  ---
226
232
 
@@ -236,8 +242,8 @@ TradingCodex blocks or constrains:
236
242
  - duplicate approved-order submissions
237
243
  - raw secrets in workspace files, prompts, API responses, MCP responses, audit
238
244
  payloads, generated docs, or shell output
239
- - unsupported live execution for crypto, macro, options, credit, FX, rates,
240
- commodities, or other instruments
245
+ - unsupported live execution through any provider, instrument, account, or
246
+ policy posture that has not passed the explicit live gate
241
247
 
242
248
  TradingCodex is research, workflow, and execution-guardrail tooling. It is not
243
249
  financial, investment, legal, tax, or regulatory advice, and it does not
@@ -250,9 +256,9 @@ provide investment recommendations or guarantee returns.
250
256
  | Status | Milestone |
251
257
  | --- | --- |
252
258
  | Shipped | Generated Codex workspace, fixed role roster, project MCP config, Django service plane, local web dashboard, Admin, Ninja API, file-native research memory, component registry, policy/audit primitives. |
253
- | Current `0.2.x` | Central-DB `OrderTicket` rewrite, Broker Center foundations, Data Sources gate, role-scoped actions, non-live execution lifecycle, and Python `>=3.11,<3.15` support. |
254
- | Next | Deeper validation scenarios, richer connector capability profiles, stronger generated-workspace smoke coverage, and improved artifact quality tooling. |
255
- | Future | Separately governed verified adapters, hosted/managed services, enterprise policy/compliance packs, and live broker support only after explicit product, policy, adapter, and validation work. |
259
+ | Current `0.2.x` | Central-DB `OrderTicket` rewrite, provider-driven Broker Center foundations, Data Sources gate, role-scoped actions, live-gated execution lifecycle, and Python `>=3.11,<3.15` support. |
260
+ | Next | Deeper validation scenarios, richer provider capability profiles, stronger generated-workspace smoke coverage, and improved artifact quality tooling. |
261
+ | Future | Separately governed verified adapters, hosted/managed services, enterprise policy/compliance packs, and broker-specific live providers only after explicit product, policy, adapter, and validation work. |
256
262
 
257
263
  ---
258
264
 
@@ -28,8 +28,8 @@
28
28
 
29
29
  TradingCodex is a local-first Python/Django trading harness for rigorous
30
30
  Codex-assisted research, portfolio review, order-ticket checks, approvals, and
31
- experimental non-live submission checks. Codex coordinates the work, Django
32
- owns the durable service plane, and TradingCodex owns the executable boundary.
31
+ service-gated execution checks. Codex coordinates the work, Django owns the
32
+ durable service plane, and TradingCodex owns the executable boundary.
33
33
 
34
34
  [Quick Start](#installation) | [Docs](docs/README.md) | [Safety](docs/safety-policy-and-execution.md) | [Architecture](docs/system-architecture.md) | [Contributing](CONTRIBUTING.md) | [License](LICENSE)
35
35
 
@@ -47,7 +47,8 @@ policy and approval services, a central local ledger, and a local web dashboard
47
47
  for review.
48
48
 
49
49
  It is not an autonomous trading bot. Natural-language answers do not become
50
- broker actions. Live broker adapters are not shipped in the initial core.
50
+ broker actions. The core ships paper execution by default; live broker support
51
+ comes only from installed, reviewed providers and explicit live gates.
51
52
 
52
53
  ---
53
54
 
@@ -61,7 +62,7 @@ broker actions. Live broker adapters are not shipped in the initial core.
61
62
  | Fixed-role workflows | Specialist agents own bounded questions across fundamentals, technicals, news, macro, instruments, valuation, portfolio, risk, and execution. |
62
63
  | Approved action boundary | Actions are typed, role-scoped, policy-checked, approval-aware, duplicate-request checked, connection-gated, and audited. |
63
64
  | Local web dashboard | Review agents, skills, strategy skills, research markdown, Broker Center, Data Sources, order tickets, portfolio state, and activity at `127.0.0.1:48267`. |
64
- | Broker Center foundations | Register connector profiles, inspect capability profiles, run read-only paper sync, review instrument constraints, and reconcile portfolio state. |
65
+ | Broker Center foundations | Connect provider-driven broker profiles, list installed providers, scaffold/register advanced connectors, inspect capability profiles, run account sync, review instrument constraints, and reconcile portfolio state. |
65
66
  | OrderTicket lifecycle | Draft, check, approve, submit, cancel, refresh, and inspect order tickets through central DB records and service-layer state transitions. |
66
67
  | Data Sources gate | Import external source discovery metadata, review available actions, scope role access, and block unsafe raw execution or secret paths by default. |
67
68
  | Improvement loop | Quality gates, postmortems, optional skills, strategy skills, strict artifact checks, and generated workspace smoke tests turn process gaps into durable improvements. |
@@ -138,8 +139,13 @@ boundaries rather than on black-box automation.
138
139
  - Deterministic executable boundary: every executable path follows
139
140
  a fixed requester, permission, policy, payload, approval, duplicate-request,
140
141
  connection, and audit sequence.
141
- - Safety-first broker posture: live broker execution is excluded; paper and
142
- reviewed test/sandbox validation remain experimental local harness flows.
142
+ - Safety-first broker posture: paper is built in; live broker execution requires
143
+ an installed provider plus workspace config, policy, environment opt-in,
144
+ approval, confirmation, idempotency, sync, and audit gates.
145
+ - Broker control plane: TradingCodex stores connector state, capability
146
+ profiles, mapping review, approval, execution, reconciliation, and audit;
147
+ provider adapters absorb broker-specific REST, SDK, MCP, or manual interface
148
+ differences behind canonical service/MCP tools.
143
149
 
144
150
  ---
145
151
 
@@ -149,7 +155,7 @@ TradingCodex is designed around handoffs:
149
155
 
150
156
  ```text
151
157
  evidence -> analysis -> valuation -> portfolio fit -> risk review
152
- -> draft order -> approval receipt -> approved non-live submission
158
+ -> draft order -> approval receipt -> approved service-gated submission
153
159
  -> connection result -> audit/postmortem
154
160
  ```
155
161
 
@@ -173,7 +179,7 @@ workflow has earned. Weak, stale, missing, or out-of-scope upstream work returns
173
179
  | Decision review | `valuation-analyst` | Valuation ranges, scenario assumptions, multiples, sensitivity, and decision-quality gaps. |
174
180
  | Portfolio | `portfolio-manager` | Portfolio fit, sizing, concentration, liquidity, opportunity cost, and draft order-ticket readiness. |
175
181
  | Risk | `risk-manager` | Downside, restricted-list checks, policy readiness, approval readiness, and approval receipts. |
176
- | Execution | `execution-operator` | Approved non-live submission through the TradingCodex service boundary only. |
182
+ | Execution | `execution-operator` | Approved submission/cancel/status through the TradingCodex service boundary only; live requires all gates. |
177
183
 
178
184
  ---
179
185
 
@@ -187,9 +193,9 @@ workflow has earned. Weak, stale, missing, or out-of-scope upstream work returns
187
193
  | MCP | Agent/tool boundary with typed tools, role scopes, policy checks, approval checks, and audit. |
188
194
  | CLI | Local operator commands plus generated workspace `./tcx` wrapper behavior. |
189
195
 
190
- The baseline frontend uses Django templates, local static HTMX, and local
191
- static Alpine. There is no Node, bundler, React, or frontend build step in the
192
- core package.
196
+ The baseline frontend uses Django templates, local static HTMX, and small plain
197
+ JavaScript. There is no Node, bundler, React, or frontend build step in the core
198
+ package.
193
199
 
194
200
  ---
195
201
 
@@ -205,8 +211,8 @@ TradingCodex blocks or constrains:
205
211
  - duplicate approved-order submissions
206
212
  - raw secrets in workspace files, prompts, API responses, MCP responses, audit
207
213
  payloads, generated docs, or shell output
208
- - unsupported live execution for crypto, macro, options, credit, FX, rates,
209
- commodities, or other instruments
214
+ - unsupported live execution through any provider, instrument, account, or
215
+ policy posture that has not passed the explicit live gate
210
216
 
211
217
  TradingCodex is research, workflow, and execution-guardrail tooling. It is not
212
218
  financial, investment, legal, tax, or regulatory advice, and it does not
@@ -219,9 +225,9 @@ provide investment recommendations or guarantee returns.
219
225
  | Status | Milestone |
220
226
  | --- | --- |
221
227
  | Shipped | Generated Codex workspace, fixed role roster, project MCP config, Django service plane, local web dashboard, Admin, Ninja API, file-native research memory, component registry, policy/audit primitives. |
222
- | Current `0.2.x` | Central-DB `OrderTicket` rewrite, Broker Center foundations, Data Sources gate, role-scoped actions, non-live execution lifecycle, and Python `>=3.11,<3.15` support. |
223
- | Next | Deeper validation scenarios, richer connector capability profiles, stronger generated-workspace smoke coverage, and improved artifact quality tooling. |
224
- | Future | Separately governed verified adapters, hosted/managed services, enterprise policy/compliance packs, and live broker support only after explicit product, policy, adapter, and validation work. |
228
+ | Current `0.2.x` | Central-DB `OrderTicket` rewrite, provider-driven Broker Center foundations, Data Sources gate, role-scoped actions, live-gated execution lifecycle, and Python `>=3.11,<3.15` support. |
229
+ | Next | Deeper validation scenarios, richer provider capability profiles, stronger generated-workspace smoke coverage, and improved artifact quality tooling. |
230
+ | Future | Separately governed verified adapters, hosted/managed services, enterprise policy/compliance packs, and broker-specific live providers only after explicit product, policy, adapter, and validation work. |
225
231
 
226
232
  ---
227
233
 
@@ -44,7 +44,7 @@ paths clear.
44
44
  | `responsibility-boundary-contract` | Separates durable role identity, tool permissions, skill procedures, artifact contracts, and projection ownership so changes stay local. | `guardrail.guidance`, `guardrail.information_barrier`, `improvement.workflow_quality`, `improvement.skill_evolution` |
45
45
  | `external-data-source-gate` | Keeps external evidence read-only and source-aware. | `guardrail.guidance`, `improvement.workflow_quality` |
46
46
  | `external-mcp-proxy-gate` | Registers external MCP connections, imports metadata, classifies risk, manages lifecycle/review state, and blocks unsafe direct connection paths. | `guardrail.enforcement`, `guardrail.information_barrier` |
47
- | `broker-center` | Normalizes native broker connector profiles, read-only account discovery, sync runs, instrument constraints, and order-translation previews. | `guardrail.enforcement`, `improvement.workflow_quality` |
47
+ | `broker-center` | Acts as the local broker control plane for connector state, capability profiles, source drift, read-only account discovery, sync runs, mapping review, reconciliation, and service-gated execution. | `guardrail.enforcement`, `improvement.workflow_quality` |
48
48
  | `secret-wall` | Blocks raw broker secrets from workspace files, prompts, shell paths, and role context. | `guardrail.enforcement`, `guardrail.information_barrier` |
49
49
  | `policy-and-restricted-list` | Evaluates principals, capabilities, explicit deny rules, restricted symbols, and limits. | `guardrail.enforcement` |
50
50
  | `approval-gate` | Validates order tickets, JSON order inputs, and approval receipts before execution-sensitive action. | `guardrail.enforcement` |
@@ -59,7 +59,7 @@ Use [harness.md](./harness.md) for the top-level model,
59
59
  | Plane | Responsibility | Source document |
60
60
  | --- | --- | --- |
61
61
  | Codex control plane | Agent behavior, workflow, tool surface, prompts, skills, hooks, and Codex-level guidance | [roles-skills-and-workflows.md](./roles-skills-and-workflows.md), [generated-workspaces.md](./generated-workspaces.md) |
62
- | Django service plane | Durable policy/order/portfolio/audit/harness/integration logic, product web, Admin, Ninja, MCP HTTP endpoint, and research file indexing | [system-architecture.md](./system-architecture.md), [interfaces-and-surfaces.md](./interfaces-and-surfaces.md) |
62
+ | Django service plane | Durable policy/order/portfolio/audit/harness/integration logic, product web, Admin, Ninja, stdio MCP bridge, and research file indexing | [system-architecture.md](./system-architecture.md), [interfaces-and-surfaces.md](./interfaces-and-surfaces.md) |
63
63
  | Workspace system plane | Generated schemas, policy exports, MCP wrappers, research markdown, readable artifacts, audit directories | [generated-workspaces.md](./generated-workspaces.md), [research-memory-and-artifacts.md](./research-memory-and-artifacts.md) |
64
64
 
65
65
  Workspace identity is the Codex workbench identity. Research handoffs are
@@ -76,7 +76,7 @@ portfolio state or execution policy.
76
76
  | --- | --- | --- | --- |
77
77
  | Guidance guardrail | Reduce risky behavior before it reaches execution. | `AGENTS.md`, skills, role prompts, hooks, checklists | [roles-skills-and-workflows.md](./roles-skills-and-workflows.md) |
78
78
  | Enforcement guardrail | Deterministically block risky action completion. | permissions, policy, approval checks, MCP allowlists | [safety-policy-and-execution.md](./safety-policy-and-execution.md) |
79
- | Information barrier | Control knowledge and file-access flow. | role file walls, restricted list, secret wall | [roles-skills-and-workflows.md](./roles-skills-and-workflows.md), [safety-policy-and-execution.md](./safety-policy-and-execution.md) |
79
+ | Information barrier | Control knowledge and file-access flow. | role skill-source boundaries, restricted list, secret wall | [roles-skills-and-workflows.md](./roles-skills-and-workflows.md), [safety-policy-and-execution.md](./safety-policy-and-execution.md) |
80
80
  | Improvement loop | Standardize artifact quality, learn from outcomes, and improve future workflow behavior. | workflows, quality gates, readiness labels, research memory, file-native skill proposals, postmortems, validation feedback | [improvement-loop.md](./improvement-loop.md), [research-memory-and-artifacts.md](./research-memory-and-artifacts.md), [roles-skills-and-workflows.md](./roles-skills-and-workflows.md) |
81
81
 
82
82
  ## Role Boundary Snapshot
@@ -91,7 +91,7 @@ subagents. Detailed responsibilities live in
91
91
  | analyst roles | research, evidence, valuation, market/instrument context | order approval, execution, secret read |
92
92
  | `portfolio-manager` | portfolio fit and draft order ticket | self-approval, execution, arbitrary policy change |
93
93
  | `risk-manager` | risk review, policy review, approval receipt | order drafting, execution, arbitrary policy change |
94
- | `execution-operator` | submit approved non-live orders through the TradingCodex service boundary | raw broker API, secret read, policy change |
94
+ | `execution-operator` | submit/cancel approved orders through the TradingCodex service boundary; live only after all gates pass | raw broker API, secret read, policy change |
95
95
 
96
96
  Handoff states are `accepted`, `revise`, `blocked`, or `waiting`. Only accepted
97
97
  artifacts move downstream. `head-manager` may synthesize accepted outputs and
@@ -5,8 +5,9 @@ TradingCodex is distributed as a Python package on PyPI. The package name is
5
5
 
6
6
  TradingCodex is local-first software. A PyPI release ships the CLI, Django
7
7
  service plane, generated workspace templates, Admin/Web templates, static
8
- assets, and MCP gateway code. It does not deploy a hosted service and it does
9
- not ship live broker execution.
8
+ assets, and MCP gateway code. It does not deploy a hosted service. Core ships
9
+ paper execution by default; broker-specific live execution requires installed,
10
+ reviewed providers and explicit live gates.
10
11
 
11
12
  ## Release Policy
12
13
 
@@ -18,9 +19,9 @@ application-service surfaces are the supported contract.
18
19
 
19
20
  Execution status for this release line:
20
21
 
21
- - live broker execution is excluded
22
- - paper and validation-only execution code remains in the package for local harness tests
23
- - non-live execution is experimental and not production trading
22
+ - paper execution is built in
23
+ - validation and live-capable provider code must be installed/reviewed before use
24
+ - live submission is disabled by default and requires config, policy, environment, adapter, health, approval, confirmation, idempotency, sync, and audit gates
24
25
  - execution MCP tools must stay behind policy, approval, duplicate-request,
25
26
  connection, and audit checks
26
27
 
@@ -140,7 +141,7 @@ python3.11 -m venv /tmp/tcx-testpypi
140
141
  /tmp/tcx-testpypi/bin/pip install \
141
142
  --index-url https://test.pypi.org/simple/ \
142
143
  --extra-index-url https://pypi.org/simple/ \
143
- tradingcodex==0.2.4
144
+ tradingcodex==0.2.6
144
145
  rm -rf /tmp/tcx-testpypi-smoke
145
146
  mkdir -p /tmp/tcx-testpypi-smoke
146
147
  cd /tmp/tcx-testpypi-smoke
@@ -156,8 +157,8 @@ available on TestPyPI.
156
157
  Before pushing the release tag:
157
158
 
158
159
  - verify `pyproject.toml` version is the intended release version
159
- - verify `README.md` describes execution as experimental
160
- - verify docs mention that live broker execution is excluded
160
+ - verify `README.md` describes execution as service-gated
161
+ - verify docs mention that live broker execution requires installed providers and explicit gates
161
162
  - run local build verification
162
163
  - run a TestPyPI release when packaging changed
163
164
 
@@ -169,7 +170,7 @@ After the PyPI workflow completes:
169
170
 
170
171
  ```bash
171
172
  python3.11 -m venv /tmp/tcx-pypi
172
- /tmp/tcx-pypi/bin/pip install tradingcodex==0.2.4
173
+ /tmp/tcx-pypi/bin/pip install tradingcodex==0.2.6
173
174
  rm -rf /tmp/tcx-pypi-smoke
174
175
  mkdir -p /tmp/tcx-pypi-smoke
175
176
  cd /tmp/tcx-pypi-smoke
@@ -251,7 +252,12 @@ Use PEP 440 versions:
251
252
  ticket isolation, workspace-scoped transition audit, and startup/status fixes
252
253
  - `0.2.4` for the operate/build/execution plane rewrite, compact startup
253
254
  context, build-mode updates, and connector scaffold workflow
254
- - later patch releases for compatible fixes after `0.2.4`
255
+ - `0.2.5` for packaged web static assets and startup service mismatch notices
256
+ reaching head-manager compact context
257
+ - `0.2.6` for provider-driven Broker Center foundations, live-gated provider
258
+ execution paths, runtime surface simplification, and stricter subagent skill
259
+ boundaries after `0.2.5`
260
+ - later patch releases for compatible fixes after `0.2.6`
255
261
  - pre-releases such as `0.3.0a1`, `0.3.0b1`, or `0.3.0rc1` when preparing
256
262
  the next minor contract
257
263
 
@@ -122,14 +122,14 @@ Generated workspaces contain:
122
122
  - fixed subagent `nickname_candidates` set to a single item matching the exact role `name`
123
123
  - fixed subagent identities kept in `.codex/agents/*.toml` `developer_instructions`, as required by Codex custom agent files
124
124
  - project-local additional agent instructions under `.tradingcodex/agent-instructions/<role>.md`; projection appends them after generated default instructions for `head-manager` and fixed subagents
125
- - twenty-four core repo skills across project-scope mainagent skills and subagent skill directories, each with `SKILL.md` frontmatter for document metadata and `agents/openai.yaml` UI metadata
125
+ - nineteen core repo skills across project-scope mainagent skills and subagent skill directories, each with `SKILL.md` frontmatter for document metadata and `agents/openai.yaml` UI metadata
126
126
  - standalone `strategy-*` skills under `.agents/skills/strategy-*` for user-approved agent-readable investment strategies, created through `strategy-creator`, CLI, API, or service-layer flows and exposed to the root `head-manager` through the strategy marker block in `.codex/config.toml`; Django web lists and previews them read-only
127
- - file-native agent/skill projection: role skill state is expressed in `.codex/agents/*.toml`, `.agents/skills/*`, `.tradingcodex/subagents/skills/*`, `.codex/config.toml`, `.tradingcodex/mainagent/skill-change-proposals/*.yaml`, and `.tradingcodex/generated/*.json`, not Django skill DB tables
127
+ - file-native agent/skill projection: head-manager and strategy skills live under `.agents/skills/*`, role-owned subagent skills live under `.tradingcodex/subagents/skills/*`, and role TOML embeds the allowed role skill source list; state is expressed in `.codex/agents/*.toml`, `.codex/config.toml`, `.tradingcodex/mainagent/skill-change-proposals/*.yaml`, and `.tradingcodex/generated/*.json`, not Django skill DB tables
128
128
  - optional subagent skills are created, updated, activated, archived, deleted, and validated through the shared application service used by `head-manager`, CLI, API, and Django web
129
129
  - information-barrier policies
130
130
  - order/approval schemas
131
131
  - restricted-list policy
132
- - paper and validation-only non-live adapters
132
+ - built-in paper provider plus provider-driven validation/live gates
133
133
  - audit directories
134
134
  - central local SQLite service access through `~/.tradingcodex/state/tradingcodex.sqlite3`
135
135
  - workspace identity through `.tradingcodex/workspace.json`
@@ -250,9 +250,10 @@ Generated permission profiles allow network access for public evidence
250
250
  gathering, such as filings, disclosures, news, web sources, and market-data
251
251
  references. They still deny workspace secret paths and do not authorize direct
252
252
  broker APIs, broker-specific Codex MCP servers, approval bypass, or execution.
253
- Broker APIs are attached through native TradingCodex connector profiles using
254
- canonical MCP tools such as `list_broker_connector_templates`,
255
- `register_broker_connector`, `get_broker_capability_profile`,
253
+ Broker APIs are attached through provider-driven TradingCodex connector profiles
254
+ using canonical MCP tools such as `list_broker_adapter_providers`,
255
+ `scaffold_broker_connector`, `register_broker_connector`,
256
+ `validate_broker_connector_build`, `get_broker_capability_profile`,
256
257
  `get_broker_instrument_constraints`, and `preview_order_translation`.
257
258
 
258
259
  Generated Codex config declares the TradingCodex home directory, normally
@@ -308,6 +309,13 @@ when explicitly asked. If project MCP config was created or changed, the user
308
309
  must fully quit and restart Codex and start a new thread because Codex may not
309
310
  hot reload project MCP config.
310
311
 
312
+ Startup context preserves incompatible service detail from `./tcx service
313
+ status`, including `service_issue`, service/package versions, DB paths, and the
314
+ recorded next action. If the issue is `version_mismatch`, `db_mismatch`, or
315
+ `port_occupied`, `head-manager` must mention the startup notice in its first
316
+ user-facing response and avoid presenting the dashboard as ready until the
317
+ recovery path is handled.
318
+
311
319
  Startup health may compare the generated workspace version in
312
320
  `.tradingcodex/generated/module-lock.json` with the installed/running `tcx`
313
321
  package version and the latest known TradingCodex release. If update is needed
@@ -324,8 +332,9 @@ Build mode is per workspace and explicit:
324
332
  - `./tcx mode set build --reason "<reason>"`
325
333
  - `./tcx mode set operate`
326
334
 
327
- Build mode may update TradingCodex, templates, and broker/API adapter
328
- scaffolds. It never enables live execution. Update recommendations are scoped
335
+ Build mode may update TradingCodex, templates, and broker/API provider
336
+ scaffolds, including live-capable provider code. It never submits live orders;
337
+ live submission remains behind the service gates. Update recommendations are scoped
329
338
  to the new-conversation health pass, not every user turn. If the user declines
330
339
  update prompts, `head-manager` records the TradingCodex home preference file,
331
340
  normally `~/.tradingcodex/preferences/update.json`, with
@@ -333,9 +342,20 @@ normally `~/.tradingcodex/preferences/update.json`, with
333
342
  recommend automatic workspace updates unless the user removes or changes that
334
343
  flag, or explicitly asks for an update.
335
344
 
336
- Connector scaffold commands accept short aliases such as `binance`, `kis`,
337
- `한투`, `upbit`, and `alpaca`; the generated connector profile still records
338
- the canonical template ID.
345
+ Connector onboarding is connect-first: `tcx connectors connect <broker>` wraps
346
+ provider discovery, scaffold, registration, validation, and plain status output.
347
+ Advanced scaffold/register/validate commands remain available. If the requested
348
+ provider is not installed, the generated connector profile records
349
+ `provider_development_required` instead of pretending the broker is already
350
+ supported.
351
+
352
+ Broker provider build work is separate from the running operate server. A
353
+ generated workspace may already have TradingCodex MCP autostarting the Django
354
+ service; provider file changes must not be treated as hot-loaded live execution
355
+ authority. Connector profiles record provider source hashes, status calls report
356
+ `service_restart_required` when source changed after registration, and live
357
+ execution remains blocked until the service is restarted and the connector is
358
+ revalidated.
339
359
 
340
360
  ## Hooks
341
361
 
@@ -357,7 +377,7 @@ enforcement.
357
377
  - execution negation routing such as "no order" and "no trading"
358
378
  - strategy authoring prompts remain in `strategy-creator`/strategy CRUD scope
359
379
  instead of auto-dispatching fixed investment subagents
360
- - connector implementation prompts such as "binance 붙여줘" or "connect KIS"
380
+ - connector implementation prompts such as "connect this broker"
361
381
  route to the `connector_build` lane and `$tcx-build`, not investment
362
382
  dispatch
363
383
  - secret-only routing: credential, token, password, broker-key, or `.env`
@@ -69,7 +69,7 @@ Information barriers cover:
69
69
  - execution walls
70
70
  - policy walls
71
71
  - secret walls
72
- - role file boundaries
72
+ - role skill-source boundaries
73
73
  - role-specific MCP allowlists
74
74
  - generated subagent permission profiles
75
75
 
@@ -1,7 +1,7 @@
1
1
  # Interfaces And Surfaces
2
2
 
3
3
  This document owns the behavior of TradingCodex product web, Django Admin,
4
- Django Ninja API, Django-hosted MCP, CLI, and generated workspace wrappers.
4
+ Django Ninja API, stdio MCP, CLI, and generated workspace wrappers.
5
5
 
6
6
  ## Interface Rule
7
7
 
@@ -57,8 +57,8 @@ of the primary product navigation:
57
57
  - `/policy/` restricted list and policy decision review
58
58
  - `/activity/` MCP call ledger, audit events, and workflow activity
59
59
 
60
- The product web app uses Django templates, local static HTMX, and local static
61
- Alpine. There is no Node, bundler, React, or frontend build step in the
60
+ The product web app uses Django templates, local static HTMX, and small plain
61
+ JavaScript. There is no Node, bundler, React, or frontend build step in the
62
62
  baseline. Its visual language follows a compact dark dashboard style inspired
63
63
  by shadcn `new-york` components, implemented with vanilla CSS over Django
64
64
  templates rather than React or Tailwind.
@@ -232,8 +232,7 @@ workspace provenance stay in the same approved action boundary.
232
232
 
233
233
  TradingCodex exposes the official Codex MCP path through project-scoped stdio:
234
234
  `tcx mcp stdio`. MCP is intentionally selected service-layer use cases, not an
235
- automatic REST mirror. The Django `/mcp` endpoint is retained only as a
236
- legacy/debug transport and is not the generated Codex workspace path.
235
+ automatic REST mirror.
237
236
 
238
237
  Minimum MCP protocol surface:
239
238
 
@@ -364,8 +363,10 @@ Generated workspace wrapper commands:
364
363
  - `./tcx mode set build --reason "<reason>"`
365
364
  - `./tcx mode set operate`
366
365
  - `./tcx connectors status`
367
- - `./tcx connectors scaffold <template-or-alias> --broker-id <id>`
368
- - `./tcx connectors register <template-or-alias> --broker-id <id> --credential-ref <ref> --environment <paper|sandbox|testnet>`
366
+ - `./tcx connectors providers`
367
+ - `./tcx connectors connect <broker> [--provider <provider-id>] [--credential-ref <ref>] [--mode read-only|validation|live-request]`
368
+ - `./tcx connectors scaffold <broker-id> [--provider <provider-id>] [--credential-ref <ref>] [--environment <env>]`
369
+ - `./tcx connectors register --provider <provider-id> --broker-id <id> --credential-ref <ref> [--environment <env>]`
369
370
  - `./tcx connectors validate <broker-id>`
370
371
  - `./tcx workspace status|list`
371
372
  - `./tcx profile status|list|create|select|update`
@@ -373,9 +374,9 @@ Generated workspace wrapper commands:
373
374
  - `./tcx subagents prompt [--json|--explain] "<request>"`
374
375
  - `./tcx skills optional list|inspect|create|update|activate|archive|delete`
375
376
 
376
- Short aliases such as `binance`, `kis`, `한투`, `upbit`, and `alpaca` resolve
377
- to canonical connector templates while generated profiles keep the canonical
378
- template ID.
377
+ Connector setup is provider-first. Core ships the `paper` provider only; a
378
+ named broker request routes to `$tcx-build` to install or develop a reviewed
379
+ provider, then registration stores only provider metadata and `credential_ref`.
379
380
  - `./tcx strategies list|inspect|create|update|activate|archive|delete`
380
381
  - `./tcx validate order <path>`
381
382
  - `./tcx approve <path>`
@@ -58,8 +58,8 @@ guidance emitted by the product should remain English.
58
58
  | Python | Use the current supported Python line defined in `pyproject.toml` and release docs. |
59
59
  | Django | Use the latest LTS-oriented Django service plane, currently Django 5.2.x. |
60
60
  | Database | Default to central local SQLite; design models so PostgreSQL remains viable later. |
61
- | Frontend | Use Django templates, local static HTMX, and local static Alpine; no Node, bundler, React, or frontend build step in the baseline. |
62
- | MCP | Host MCP inside Django and provide stdio bridge support for Codex environments that require stdio. |
61
+ | Frontend | Use Django templates, local static HTMX, and small plain JavaScript; no Node, bundler, React, or frontend build step in the baseline. |
62
+ | MCP | Provide project-scoped stdio bridge support for Codex environments. |
63
63
  | Deployment | Local-first. PyPI installs the local package; initial scope does not provide a hosted service. |
64
64
 
65
65
  ## Goals In Detail
@@ -81,7 +81,7 @@ guidance emitted by the product should remain English.
81
81
 
82
82
  | Non-goal | Reason |
83
83
  | --- | --- |
84
- | Built-in live broker execution | The initial core must prove policy, approval, duplicate-request, connection, and audit behavior before live broker support. |
84
+ | Built-in named live broker execution | Core ships paper only; broker-specific live support is request-built provider work behind the TradingCodex broker control plane and must pass provider review, policy, approval, duplicate-request, connection, sync, and audit gates. |
85
85
  | Raw credential storage | Secrets do not belong in generated workspaces, prompt output, API responses, MCP responses, logs, or audit output. |
86
86
  | REST execution bypass | REST endpoints may validate or call service-layer use cases, but cannot bypass MCP/service execution rules. |
87
87
  | Product web orchestration | The web dashboard reviews state and previews workflow handoffs; it does not spawn subagents or perform investment analysis. |
@@ -43,7 +43,7 @@ artifact.
43
43
  | `valuation-analyst` | valuation range, scenario assumptions, market-implied expectations, sensitivity | accepted research artifacts and user-stated method constraints | valuation report with assumptions, sensitivity, confidence, and readiness for portfolio/risk review |
44
44
  | `portfolio-manager` | portfolio fit, sizing context, concentration, liquidity, opportunity cost, draft order-ticket readiness | accepted research/valuation artifacts and portfolio state | portfolio report and, only when allowed, draft order-ticket readiness or draft ticket |
45
45
  | `risk-manager` | downside, restricted-list and policy readiness, limits, approval readiness, approval receipt | accepted portfolio/order artifacts, policy state, restricted-list state, audit evidence | risk/policy report, approval readiness state, approval receipt when allowed, or blocked reasons |
46
- | `execution-operator` | approved non-live order-ticket submission through the TradingCodex service boundary | approved order ticket, matching approval receipt, policy allow state | execution result, MCP response, audit reference, or rejected/blocked reasons |
46
+ | `execution-operator` | approved submit/cancel/status through the TradingCodex service boundary; live only when every live gate passes | approved order ticket, matching approval receipt, policy allow state | execution result, MCP response, audit reference, or rejected/blocked reasons |
47
47
 
48
48
  Downstream roles handle weak upstream work by returning a revision request or
49
49
  `blocked` readiness state. They do not repair missing upstream analysis inside
@@ -100,7 +100,7 @@ they are not required before `head-manager` routes the work.
100
100
  | --- | --- |
101
101
  | General investment request, such as "Analyze Apple stock" | `UserPromptSubmit` injects compact auto-dispatch context with lane, selected team, blocked actions, and the persisted prompt-gate path; `head-manager` dispatches or reuses selected subagents before analysis. |
102
102
  | Explicit `$tcx-workflow` request | The workflow skill becomes the primary manual-control orchestrator and dispatches selected subagents. |
103
- | Connector build request, such as "binance 붙여줘" or "connect KIS API" | Route to the `connector_build` lane and `$tcx-build`; scaffold/register/validate read/test connector metadata only, without investment dispatch or live execution. |
103
+ | Broker/provider build request, such as "connect this broker" | Route to the `connector_build` lane and `$tcx-build`; connect/scaffold/register/validate provider metadata without investment dispatch or live submission. |
104
104
  | Runtime/server request, such as "open dashboard" or "check TradingCodex status" | Route to `$tcx-server`; report service/MCP/update posture and use CLI recovery commands without changing execution authority. |
105
105
  | Explicit subagent/parallel/delegated request | `UserPromptSubmit` records the explicit activation source; the skill checks existing subagent state before creating/reusing sessions. |
106
106
  | Strategy authoring request, such as "Create a quality income strategy" | Do not auto-dispatch investment subagents. Route through `strategy-creator`, CLI, API, or service-layer flows so the strategy skill is created and projected as a root/head-manager strategy entry. Django web previews strategies read-only. |
@@ -147,7 +147,7 @@ boundary, approval requirements, or information barriers.
147
147
  | --- | --- | --- |
148
148
  | Broad analysis such as "Analyze Apple stock" | auto-dispatch or reuse selected subagents, then wait for outputs before synthesis | Direct business/price/news/recommendation analysis |
149
149
  | Explicit workflow request such as "$tcx-workflow analyze Apple" | Spawn selected team or reuse active/completed roles, wait for outputs, then synthesize | Analyze without dispatch |
150
- | Connector build request such as "binance 붙여줘" | Check full-access plus TCX build mode, scaffold/register/validate connector metadata through `$tcx-build`, and keep `live_order` disabled | Dispatch investment subagents, ask for raw secrets, or expose raw broker SDK tools |
150
+ | Broker/provider build request | Check full-access plus TCX build mode, connect/scaffold/register/validate provider metadata through `$tcx-build`, and keep live submission inside service gates | Dispatch investment subagents, ask for raw secrets, or expose raw broker SDK tools |
151
151
  | Decision support such as "Should I buy?" | Dispatch analyst/valuation/portfolio/risk team and explain required artifacts/gates | Offer buy/sell opinion without subagent output |
152
152
  | Dispatch unavailable, role routing unverified, or dispatch failed | Provide `waiting_for_subagent_dispatch` state and task briefs only | Switch to "I will analyze it myself" |
153
153
  | Subagent artifacts exist | Summarize role outputs, conflicts, confidence/missing evidence, and next allowed action | Override subagent evidence with unsupported certainty |
@@ -155,9 +155,12 @@ boundary, approval requirements, or information barriers.
155
155
 
156
156
  ## Skills And Context
157
157
 
158
- Repo-local skills live under `.agents/skills/*` so they are discoverable at the
159
- workspace level. TradingCodex treats role-owned skills as an ownership contract
160
- and config boundary.
158
+ Head-manager and strategy skills live under `.agents/skills/*` so they are
159
+ discoverable to the root workspace coordinator. Role-owned subagent skills live
160
+ under `.tradingcodex/subagents/skills/*`; each fixed-role TOML file projects
161
+ only that role's allowed skill source list into developer instructions so a
162
+ custom subagent can apply its own procedures without importing root, strategy,
163
+ or out-of-role skill files.
161
164
 
162
165
  Instruction/skill separation:
163
166
 
@@ -229,11 +232,31 @@ Head-manager skill responsibilities:
229
232
  | --- | --- |
230
233
  | `tcx-workflow` | compact workflow routing, selected-team dispatch/reuse, handoff quality states, and synthesis after accepted artifacts |
231
234
  | `tcx-server` | startup health, local dashboard URL guidance, explicit user-requested dashboard opening, Codex restart guidance, TradingCodex MCP setup, update-status explanation, read-only broker/status inspection, and service troubleshooting without granting execution authority |
232
- | `tcx-build` | full-access plus TCX-build-mode gated self-update, template/harness edits, broker/API connector scaffold/register/validate flows, credential-ref handling, and live-order blocking |
235
+ | `tcx-build` | full-access plus TCX-build-mode gated self-update, template/harness edits, broker/API provider connect/scaffold/register/validate flows, credential-ref handling, and live-submit blocking outside service gates |
233
236
  | `external-data-source-gate` | read-only external evidence-source constraints and External MCP Gate honesty |
234
237
  | `strategy-creator` | create, update, validate, and activate user-approved `strategy-*` skills as strategy library entries without granting policy, approval, execution, MCP, or role-boundary authority |
235
238
  | `postmortem` | audit-backed process review and improvement proposals after failures, thesis changes, rejected orders, or executions |
236
239
 
240
+ ## Broker Control Plane
241
+
242
+ TradingCodex is the local broker control plane, not a bundled collection of
243
+ broker SDK shortcuts. Codex may prepare a broker connector from natural
244
+ language, but the server owns connector state, provider capability profiles,
245
+ mapping review, account sync, order tickets, approvals, idempotency, broker
246
+ order status, reconciliation, and audit.
247
+
248
+ Broker-specific REST, SDK, MCP, CSV, or manual interfaces belong behind
249
+ provider adapters. The server calls only the small canonical broker contract for
250
+ health, account/cash/position reads, constraints, preview/validation, and
251
+ reviewed live submit/cancel/status methods.
252
+
253
+ `execution-operator` uses TradingCodex MCP canonical tools such as
254
+ `submit_approved_order`, `cancel_approved_order`, `refresh_broker_order_status`,
255
+ `get_order_ticket`, and `run_order_checks`. It never calls broker APIs, broker
256
+ SDKs, shell scripts, or broker-specific MCP tools directly. If a broker is MCP
257
+ backed, the reviewed broker MCP mapping stays behind the TradingCodex service
258
+ execution path.
259
+
237
260
  ## Strategy Skills
238
261
 
239
262
  Output language precedence is:
@@ -299,7 +322,7 @@ user or web request -> shared service validation -> workspace file edit -> TOML
299
322
 
300
323
  Codex-visible state is file-native: `.codex/agents/*.toml`,
301
324
  `.agents/skills/*`, `.tradingcodex/subagents/skills/*`,
302
- `.codex/config.toml`, and
325
+ `.codex/config.toml`, role-projected skill source blocks, and
303
326
  `.tradingcodex/generated/projection-manifest.json`. Django DB does not store
304
327
  skill proposals, role-skill assignments, optional skill CRUD state, or skill
305
328
  application audit state.
@@ -346,13 +369,13 @@ approval, or execution authority.
346
369
  Generated Codex permission profiles allow public web, filing, disclosure, news,
347
370
  and market-data network access for evidence gathering. Direct broker APIs,
348
371
  broker-specific Codex MCP servers, raw secrets, approval bypasses, and execution
349
- remain blocked by role instructions, file walls, TradingCodex MCP allowlists,
350
- and service-layer policy.
372
+ remain blocked by role instructions, projected role skill-source boundaries,
373
+ TradingCodex MCP allowlists, and service-layer policy.
351
374
 
352
375
  ## Hooks Are Guidance
353
376
 
354
377
  - `UserPromptSubmit` handles prompt classification, secret warnings, direct-answer prevention context, and duplicate marker management.
355
- - `SessionStart` writes compact TradingCodex mode, permission, update, server/MCP, and routing diagnostics for `head-manager`; startup recovery and dashboard URL guidance stay in `$tcx-server`, while self-update and connector implementation stay in `$tcx-build`.
378
+ - `SessionStart` writes compact TradingCodex mode, permission, update, server/MCP, and routing diagnostics for `head-manager`; incompatible service details such as version mismatch, DB mismatch, and occupied ports must survive into compact context so `head-manager` can mention the startup notice before claiming dashboard readiness. Startup recovery and dashboard URL guidance stay in `$tcx-server`, while self-update and connector implementation stay in `$tcx-build`.
356
379
  - Official `UserPromptSubmit` matchers are ignored, so classification happens inside the hook script.
357
380
  - Hooks use command type only and do not rely on ordering or concurrency between hooks.
358
381
  - Project-local hooks load only in trusted projects and may be disabled when `features.hooks=false`.