tradingcodex 1.0.2__tar.gz → 1.1.1__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 (384) hide show
  1. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/CHANGELOG.md +53 -2
  2. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/PKG-INFO +6 -10
  3. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/README.md +5 -9
  4. tradingcodex-1.1.1/apps/mcp/admin.py +20 -0
  5. tradingcodex-1.1.1/apps/mcp/migrations/0002_remove_external_mcp_gate.py +22 -0
  6. tradingcodex-1.1.1/apps/mcp/models.py +45 -0
  7. tradingcodex-1.1.1/apps/mcp/services.py +103 -0
  8. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/README.md +4 -4
  9. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/components.md +2 -2
  10. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/core-concepts-and-rules.md +4 -2
  11. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/decision-memory.md +12 -2
  12. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/deployment.md +13 -4
  13. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/execution-without-subagent-plan.md +24 -18
  14. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/generated-workspaces.md +181 -84
  15. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/harness.md +24 -21
  16. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/interfaces-and-surfaces.md +84 -65
  17. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/investment-brain-plugins.md +4 -3
  18. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/product-direction.md +1 -1
  19. tradingcodex-1.1.1/docs/release-readiness.md +190 -0
  20. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/research-memory-and-artifacts.md +28 -0
  21. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/roles-skills-and-workflows.md +54 -19
  22. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/safety-policy-and-execution.md +137 -120
  23. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/system-architecture.md +13 -15
  24. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/user-facing-skills.md +46 -24
  25. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/validation-and-test-plan.md +138 -30
  26. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/src/features/SystemPage.tsx +6 -3
  27. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/installation.md +67 -3
  28. tradingcodex-1.1.1/tests/test_artifact_catalog.py +203 -0
  29. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_brain_skill.py +1 -1
  30. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_broker_center_prd.py +28 -79
  31. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_build_contract_metadata.py +5 -40
  32. tradingcodex-1.1.1/tests/test_build_hook.py +2326 -0
  33. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_build_turn_grant.py +94 -51
  34. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_clean_v1_cli_audit.py +1 -88
  35. tradingcodex-1.1.1/tests/test_codex_capabilities.py +160 -0
  36. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_investment_brain_prompt_layers.py +6 -1
  37. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_investment_brain_provenance.py +39 -1
  38. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_investor_context.py +76 -0
  39. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_mcp_broker_release_health.py +3 -236
  40. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_native_execution_gateway.py +101 -11
  41. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_order_turn_grant.py +29 -9
  42. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_platform_runtime.py +481 -70
  43. tradingcodex-1.1.1/tests/test_provider_source_approval.py +1041 -0
  44. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_release_contract.py +40 -127
  45. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_research_forecast_surfaces.py +19 -4
  46. tradingcodex-1.1.1/tests/test_v1_migrations.py +106 -0
  47. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex.egg-info/PKG-INFO +6 -10
  48. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex.egg-info/SOURCES.txt +7 -3
  49. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/__main__.py +3 -3
  50. tradingcodex-1.1.1/tradingcodex_cli/commands/build.py +61 -0
  51. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/connectors.py +7 -0
  52. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/doctor.py +80 -31
  53. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/mcp.py +15 -267
  54. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/mode.py +1 -1
  55. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/research.py +37 -0
  56. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/generator.py +288 -27
  57. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/startup_status.py +15 -5
  58. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/api.py +49 -0
  59. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/agents.py +18 -3
  60. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/analysis_runs.py +71 -13
  61. tradingcodex-1.1.1/tradingcodex_service/application/artifact_catalog.py +721 -0
  62. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/brokers.py +573 -310
  63. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/build_gateway.py +129 -88
  64. tradingcodex-1.1.1/tradingcodex_service/application/codex_capabilities.py +284 -0
  65. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/components.py +19 -19
  66. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/execution_gateway.py +105 -40
  67. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/operator_authority.py +1 -89
  68. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/runtime.py +9 -0
  69. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/runtime_mode.py +4 -1
  70. tradingcodex-1.1.1/tradingcodex_service/application/skill_invocations.py +354 -0
  71. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/viewer.py +2 -4
  72. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/mcp_runtime.py +73 -164
  73. tradingcodex-1.0.2/tradingcodex_service/static/tradingcodex_web/assets/index-CFoXYUtq.js → tradingcodex-1.1.1/tradingcodex_service/static/tradingcodex_web/assets/index-_2ys6WhF.js +1 -1
  74. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/static/tradingcodex_web/index.html +1 -1
  75. tradingcodex-1.1.1/tradingcodex_service/version.py +1 -0
  76. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/codex-base/files/.codex/config.toml +72 -6
  77. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/codex-base/files/.codex/hooks/tradingcodex_hook.py +1902 -121
  78. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/codex-base/files/.codex/hooks.json +1 -1
  79. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/codex-base/files/.codex/prompts/base_instructions/head-manager.md +111 -52
  80. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/codex-base/files/.codex/rules/tradingcodex.rules +0 -7
  81. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/codex-base/files/AGENTS.md +41 -20
  82. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/guidance-guardrails/files/.tradingcodex/guidance/task-quality-checklist.md +1 -1
  83. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-automate/SKILL.md +24 -14
  84. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/SKILL.md +13 -7
  85. tradingcodex-1.1.1/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-build/SKILL.md +193 -0
  86. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-dashboard/SKILL.md +2 -2
  87. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-allow/SKILL.md +12 -7
  88. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-cancel/SKILL.md +7 -3
  89. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-submit/SKILL.md +7 -3
  90. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-server/SKILL.md +17 -4
  91. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-strategy/SKILL.md +14 -8
  92. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/SKILL.md +12 -6
  93. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/references/context-and-override.md +4 -1
  94. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/tradingcodex-mcp/module.json +0 -1
  95. tradingcodex-1.0.2/apps/mcp/admin.py +0 -40
  96. tradingcodex-1.0.2/apps/mcp/models.py +0 -182
  97. tradingcodex-1.0.2/apps/mcp/services.py +0 -1381
  98. tradingcodex-1.0.2/docs/release-readiness.md +0 -288
  99. tradingcodex-1.0.2/tests/test_build_hook.py +0 -1283
  100. tradingcodex-1.0.2/tests/test_mcp_operator_authority.py +0 -524
  101. tradingcodex-1.0.2/tests/test_provider_source_approval.py +0 -413
  102. tradingcodex-1.0.2/tests/test_v1_migrations.py +0 -46
  103. tradingcodex-1.0.2/tradingcodex_cli/commands/build.py +0 -128
  104. tradingcodex-1.0.2/tradingcodex_service/application/customization.py +0 -457
  105. tradingcodex-1.0.2/tradingcodex_service/version.py +0 -1
  106. tradingcodex-1.0.2/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-build/SKILL.md +0 -94
  107. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/CONTRIBUTING.md +0 -0
  108. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/LICENSE +0 -0
  109. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/MANIFEST.in +0 -0
  110. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/NOTICE +0 -0
  111. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/TRADEMARKS.md +0 -0
  112. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/__init__.py +0 -0
  113. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/audit/__init__.py +0 -0
  114. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/audit/admin.py +0 -0
  115. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/audit/apps.py +0 -0
  116. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/audit/migrations/0001_v1_initial.py +0 -0
  117. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/audit/migrations/__init__.py +0 -0
  118. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/audit/models.py +0 -0
  119. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/harness/__init__.py +0 -0
  120. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/harness/admin.py +0 -0
  121. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/harness/apps.py +0 -0
  122. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/harness/migrations/0001_v1_initial.py +0 -0
  123. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/harness/migrations/__init__.py +0 -0
  124. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/harness/models.py +0 -0
  125. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/harness/templatetags/__init__.py +0 -0
  126. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/integrations/__init__.py +0 -0
  127. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/integrations/admin.py +0 -0
  128. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/integrations/apps.py +0 -0
  129. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/integrations/migrations/0001_v1_initial.py +0 -0
  130. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/integrations/migrations/__init__.py +0 -0
  131. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/integrations/models.py +0 -0
  132. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/mcp/__init__.py +0 -0
  133. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/mcp/apps.py +0 -0
  134. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/mcp/migrations/0001_v1_initial.py +0 -0
  135. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/mcp/migrations/__init__.py +0 -0
  136. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/orders/__init__.py +0 -0
  137. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/orders/admin.py +0 -0
  138. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/orders/apps.py +0 -0
  139. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/orders/migrations/0001_v1_initial.py +0 -0
  140. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/orders/migrations/__init__.py +0 -0
  141. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/orders/models.py +0 -0
  142. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/orders/services.py +0 -0
  143. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/policy/__init__.py +0 -0
  144. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/policy/admin.py +0 -0
  145. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/policy/apps.py +0 -0
  146. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/policy/migrations/0001_v1_initial.py +0 -0
  147. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/policy/migrations/__init__.py +0 -0
  148. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/policy/models.py +0 -0
  149. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/policy/services.py +0 -0
  150. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/portfolio/__init__.py +0 -0
  151. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/portfolio/admin.py +0 -0
  152. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/portfolio/apps.py +0 -0
  153. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/portfolio/migrations/0001_v1_initial.py +0 -0
  154. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/portfolio/migrations/__init__.py +0 -0
  155. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/portfolio/models.py +0 -0
  156. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/assets/tradingcodex-banner.svg +0 -0
  157. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/codex-native-orchestration.md +0 -0
  158. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/financial-workflow-references.md +0 -0
  159. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/guardrails.md +0 -0
  160. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/improvement-loop.md +0 -0
  161. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/licensing-and-commercialization.md +0 -0
  162. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/index.html +0 -0
  163. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/package-lock.json +0 -0
  164. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/package.json +0 -0
  165. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/src/App.tsx +0 -0
  166. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/src/api.ts +0 -0
  167. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/src/domain.ts +0 -0
  168. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/src/features/LibraryPage.tsx +0 -0
  169. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/src/features/SkillsPage.tsx +0 -0
  170. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/src/main.tsx +0 -0
  171. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/src/navigation.js +0 -0
  172. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/src/navigation.test.js +0 -0
  173. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/src/styles.css +0 -0
  174. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/src/ui.tsx +0 -0
  175. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/src/viewer-data.js +0 -0
  176. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/tsconfig.json +0 -0
  177. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/vite.config.ts +0 -0
  178. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/install.sh +0 -0
  179. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/pyproject.toml +0 -0
  180. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/setup.cfg +0 -0
  181. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_artifact_authentication.py +0 -0
  182. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_codex_cli_compat.py +0 -0
  183. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_codex_cli_contract.py +0 -0
  184. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_codex_native_orchestration.py +0 -0
  185. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_dashboard_skill.py +0 -0
  186. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_decision_memory_core.py +0 -0
  187. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_dev_bootstrap.py +0 -0
  188. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_dynamic_artifact_quality.py +0 -0
  189. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_e2e_user_scenarios.py +0 -0
  190. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_evaluation_lab_hardening.py +0 -0
  191. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_evaluation_profiles.py +0 -0
  192. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_guidebook_contract.py +0 -0
  193. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_investment_analysis.py +0 -0
  194. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_investment_brain_cli.py +0 -0
  195. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_investment_brain_registry.py +0 -0
  196. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_research_spec_profiles.py +0 -0
  197. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_runtime_paths.py +0 -0
  198. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_runtime_profile.py +0 -0
  199. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_security_invariants.py +0 -0
  200. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_skill_runtime_boundaries.py +0 -0
  201. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_source_snapshot_agent_contract.py +0 -0
  202. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_v1_state_integrity.py +0 -0
  203. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_viewer.py +0 -0
  204. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_workspace_git_contract.py +0 -0
  205. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex.egg-info/dependency_links.txt +0 -0
  206. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex.egg-info/entry_points.txt +0 -0
  207. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex.egg-info/requires.txt +0 -0
  208. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex.egg-info/top_level.txt +0 -0
  209. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/__init__.py +0 -0
  210. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/__init__.py +0 -0
  211. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/bootstrap.py +0 -0
  212. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/db.py +0 -0
  213. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/decision.py +0 -0
  214. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/evaluation.py +0 -0
  215. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/forecast.py +0 -0
  216. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/home.py +0 -0
  217. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/investment_brains.py +0 -0
  218. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/investor_context.py +0 -0
  219. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/orders.py +0 -0
  220. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/policy.py +0 -0
  221. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/profile.py +0 -0
  222. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/skills.py +0 -0
  223. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/strategies.py +0 -0
  224. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/subagents.py +0 -0
  225. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/utils.py +0 -0
  226. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/workflow.py +0 -0
  227. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/workspaces.py +0 -0
  228. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/mcp_stdio.py +0 -0
  229. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/package_source.py +0 -0
  230. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/service_autostart.py +0 -0
  231. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/versioning.py +0 -0
  232. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/__init__.py +0 -0
  233. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/admin.py +0 -0
  234. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/__init__.py +0 -0
  235. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/artifact_bindings.py +0 -0
  236. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/artifact_quality.py +0 -0
  237. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/audit.py +0 -0
  238. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/common.py +0 -0
  239. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/context_budget.py +0 -0
  240. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/decision_packages.py +0 -0
  241. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/evaluation_lab.py +0 -0
  242. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/forecasting.py +0 -0
  243. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/git_subprocess.py +0 -0
  244. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/harness.py +0 -0
  245. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/health.py +0 -0
  246. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/investment_analysis.py +0 -0
  247. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/investment_brains.py +0 -0
  248. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/investor_context.py +0 -0
  249. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/markdown_preview.py +0 -0
  250. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/orders.py +0 -0
  251. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/policy.py +0 -0
  252. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/portfolio.py +0 -0
  253. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/postmortems.py +0 -0
  254. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/research.py +0 -0
  255. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/research_specs.py +0 -0
  256. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/source_snapshots.py +0 -0
  257. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/workspace_git.py +0 -0
  258. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/workspaces.py +0 -0
  259. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/asgi.py +0 -0
  260. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/log_safety.py +0 -0
  261. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/runtime_profile.py +0 -0
  262. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/settings.py +0 -0
  263. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/static/tradingcodex_admin/favicon.svg +0 -0
  264. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/static/tradingcodex_web/assets/index-DYzj_xRR.css +0 -0
  265. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/urls.py +0 -0
  266. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/viewer_api.py +0 -0
  267. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/web.py +0 -0
  268. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/wsgi.py +0 -0
  269. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/__init__.py +0 -0
  270. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/audit/files/.tradingcodex/audit/README.md +0 -0
  271. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/audit/files/trading/audit/.gitkeep +0 -0
  272. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/audit/module.json +0 -0
  273. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/codex-base/files/.tradingcodex/cli.py +0 -0
  274. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/codex-base/files/.tradingcodex/config.yaml +0 -0
  275. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/codex-base/files/pyproject.toml +0 -0
  276. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/codex-base/files/tcx +0 -0
  277. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/codex-base/files/tcx.cmd +0 -0
  278. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/codex-base/module.json +0 -0
  279. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/policies/restricted-list.yaml +0 -0
  280. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/approval_receipt.schema.json +0 -0
  281. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/audit_event.schema.json +0 -0
  282. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/evidence_pack.schema.json +0 -0
  283. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/execution_result.schema.json +0 -0
  284. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/fundamental_report.schema.json +0 -0
  285. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/news_report.schema.json +0 -0
  286. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/order_ticket.schema.json +0 -0
  287. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/portfolio_review.schema.json +0 -0
  288. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/postmortem_report.schema.json +0 -0
  289. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/research_artifact.schema.json +0 -0
  290. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/risk_report.schema.json +0 -0
  291. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/technical_report.schema.json +0 -0
  292. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/thesis.schema.json +0 -0
  293. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/valuation.schema.json +0 -0
  294. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/module.json +0 -0
  295. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/fundamental-analyst.toml +0 -0
  296. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/instrument-analyst.toml +0 -0
  297. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/judgment-reviewer.toml +0 -0
  298. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/macro-analyst.toml +0 -0
  299. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/news-analyst.toml +0 -0
  300. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/portfolio-manager.toml +0 -0
  301. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/risk-manager.toml +0 -0
  302. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/technical-analyst.toml +0 -0
  303. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/valuation-analyst.toml +0 -0
  304. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/fixed-subagents/files/.tradingcodex/mainagent/skill-change-proposals/.gitkeep +0 -0
  305. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/fixed-subagents/module.json +0 -0
  306. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/guidance-guardrails/files/.tradingcodex/guidance/guardrails.md +0 -0
  307. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/guidance-guardrails/module.json +0 -0
  308. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/.tradingcodex/secrets.md +0 -0
  309. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/trading/forecasts/.gitkeep +0 -0
  310. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/trading/market-data/.gitkeep +0 -0
  311. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/trading/portfolio/.gitkeep +0 -0
  312. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/trading/reports/fundamental/.gitkeep +0 -0
  313. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/trading/reports/instrument/.gitkeep +0 -0
  314. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/trading/reports/macro/.gitkeep +0 -0
  315. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/trading/reports/news/.gitkeep +0 -0
  316. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/trading/reports/policy/.gitkeep +0 -0
  317. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/trading/reports/portfolio/.gitkeep +0 -0
  318. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/trading/reports/postmortem/.gitkeep +0 -0
  319. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/trading/reports/risk/.gitkeep +0 -0
  320. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/trading/reports/technical/.gitkeep +0 -0
  321. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/trading/reports/valuation/.gitkeep +0 -0
  322. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/trading/research/.gitkeep +0 -0
  323. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/module.json +0 -0
  324. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/paper-trading/module.json +0 -0
  325. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-automate/agents/openai.yaml +0 -0
  326. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/agents/openai.yaml +0 -0
  327. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/references/bundle-contract.md +0 -0
  328. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-build/agents/openai.yaml +0 -0
  329. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-dashboard/agents/openai.yaml +0 -0
  330. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-investor-context/SKILL.md +0 -0
  331. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-investor-context/agents/openai.yaml +0 -0
  332. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-memory/SKILL.md +0 -0
  333. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-memory/agents/openai.yaml +0 -0
  334. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-allow/agents/openai.yaml +0 -0
  335. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-cancel/agents/openai.yaml +0 -0
  336. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-submit/agents/openai.yaml +0 -0
  337. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-plan/SKILL.md +0 -0
  338. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-plan/agents/openai.yaml +0 -0
  339. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-server/agents/openai.yaml +0 -0
  340. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-strategy/agents/openai.yaml +0 -0
  341. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/agents/openai.yaml +0 -0
  342. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/references/decision-quality-spine.md +0 -0
  343. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/fundamental-analyst/tcx-fundamental/SKILL.md +0 -0
  344. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/fundamental-analyst/tcx-fundamental/agents/openai.yaml +0 -0
  345. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/instrument-analyst/tcx-instrument/SKILL.md +0 -0
  346. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/instrument-analyst/tcx-instrument/agents/openai.yaml +0 -0
  347. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/judgment-reviewer/tcx-judgment/SKILL.md +0 -0
  348. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/judgment-reviewer/tcx-judgment/agents/openai.yaml +0 -0
  349. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/macro-analyst/tcx-macro/SKILL.md +0 -0
  350. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/macro-analyst/tcx-macro/agents/openai.yaml +0 -0
  351. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/news-analyst/tcx-news/SKILL.md +0 -0
  352. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/news-analyst/tcx-news/agents/openai.yaml +0 -0
  353. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-order-draft/SKILL.md +0 -0
  354. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-order-draft/agents/openai.yaml +0 -0
  355. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-portfolio/SKILL.md +0 -0
  356. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-portfolio/agents/openai.yaml +0 -0
  357. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-order-approve/SKILL.md +0 -0
  358. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-order-approve/agents/openai.yaml +0 -0
  359. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-policy/SKILL.md +0 -0
  360. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-policy/agents/openai.yaml +0 -0
  361. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-risk/SKILL.md +0 -0
  362. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-risk/agents/openai.yaml +0 -0
  363. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-anti-overfit/SKILL.md +0 -0
  364. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-anti-overfit/agents/openai.yaml +0 -0
  365. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-artifact/SKILL.md +0 -0
  366. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-artifact/agents/openai.yaml +0 -0
  367. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-data-qc/SKILL.md +0 -0
  368. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-data-qc/agents/openai.yaml +0 -0
  369. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-evidence/SKILL.md +0 -0
  370. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-evidence/agents/openai.yaml +0 -0
  371. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-forecast/SKILL.md +0 -0
  372. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-forecast/agents/openai.yaml +0 -0
  373. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-scenarios/SKILL.md +0 -0
  374. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-scenarios/agents/openai.yaml +0 -0
  375. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-source-gate/SKILL.md +0 -0
  376. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-source-gate/agents/openai.yaml +0 -0
  377. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/technical-analyst/tcx-technical/SKILL.md +0 -0
  378. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/technical-analyst/tcx-technical/agents/openai.yaml +0 -0
  379. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/valuation-analyst/tcx-valuation/SKILL.md +0 -0
  380. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/valuation-analyst/tcx-valuation/agents/openai.yaml +0 -0
  381. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/module.json +0 -0
  382. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/enforcer/README.md +0 -0
  383. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/gateway/README.md +0 -0
  384. {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/server.py +0 -0
@@ -2,6 +2,57 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 1.1.1 - 2026-07-16
6
+
7
+ - Remove the legacy user-capability gate, its CLI and broker-import paths,
8
+ and its active database tables. User-installed MCP servers, skills, plugins,
9
+ apps, and hooks now remain BYOR native Codex capabilities for root and fixed
10
+ agents. Add a secret-free read-only capability inventory to MCP and System,
11
+ preserve non-reserved user Codex configuration across update, and keep all
12
+ TradingCodex principals, grants, protected proofs, and order effects behind
13
+ the existing service boundary.
14
+
15
+ ## 1.1.0 - 2026-07-16
16
+
17
+ - Make managed skill invocation resilient without weakening authority: Build,
18
+ Brain, Strategy, and native order entrypoints now share one lexical parser
19
+ that accepts the first meaningful line, matching projected-skill Markdown
20
+ links, same-line requests, BOMs, and cross-platform newline forms. Prompt
21
+ proofs remain bound to the original bytes, and order flags, approvals,
22
+ confirmations, one-effect limits, and replay protection remain strict.
23
+ - Give `trading-build` credential-free, limited public HTTP(S) and HTTPS Git
24
+ retrieval while keeping root native web search disabled. Public source files
25
+ are staged only below the workspace-specific cache-backed scratch provider
26
+ directory, remain inert, and may be hashed, diffed, inspected, or
27
+ syntax-checked but not installed or executed. The proxy uses full HTTP
28
+ transport only for Git Smart HTTP's read-only protocol POST; ordinary HTTP
29
+ remains GET/HEAD-only and general POST stays blocked. Authentication,
30
+ model-authored request bodies, private/local targets, shell pipelines,
31
+ dependency installation, direct `trading/` downloads, Git publication, and
32
+ broker effects remain blocked.
33
+ - Make the active Build-turn shell a narrow, non-extensible review lane. Edits
34
+ use `apply_patch`; admitted commands are public GET/HEAD, enumerated read-only
35
+ HTTPS Git, limited workspace reads, inert provider hash/diff/Git inspection,
36
+ exact isolated `py_compile`, and allowlisted workspace-launcher operations.
37
+ General interpreters, helper scripts, test runners, build systems, shell
38
+ composition, model-authored POST, and native browser/web/network tools now
39
+ fail closed during Build while Research browser behavior remains unchanged.
40
+ - Add provider source provenance, full bundle hashing, secret/VCS/symlink
41
+ rejection, immutable approval snapshots, and provider-first connector
42
+ onboarding. Build-side inspection can return an inert bundle-only hash and
43
+ `service_check_required` posture without reading the central ledger; only the
44
+ interactive operator path resolves canonical approval state. Missing-provider
45
+ connection requests no longer leave dead-end connector scaffolds; explicit
46
+ scaffold-only requests remain available.
47
+ - Preserve the v1 update contract for existing workspaces. `tcx update`
48
+ refreshes the generated invocation, permission, hook, and skill surfaces
49
+ without a database migration, keeps workspace identity and user-owned
50
+ artifacts, and retains the existing explicit home, database, and service
51
+ address. Fully restart Codex and open a new task after updating so an older
52
+ task cannot retain its prior hook snapshot. Existing manual provider bundles
53
+ may omit provenance, while changed or newly unsafe bundles must be reviewed
54
+ and approved again.
55
+
5
56
  ## 1.0.2 - 2026-07-15
6
57
 
7
58
  - Preserve an attached release workspace's explicit `TRADINGCODEX_HOME`,
@@ -127,8 +178,8 @@
127
178
  user-terminal handoffs instead of attempting a blocked model shell.
128
179
  - Replace agent-side connector `connect`/write-style scaffold MCP operations
129
180
  with read-only, content-addressed scaffold rendering plus native patching.
130
- External MCP lifecycle/consent and provider-source approval remain
131
- interactive operator actions protected by one-use service capabilities.
181
+ Provider-source approval remains an interactive operator action protected by
182
+ a one-use service capability.
132
183
  - Add the explicit-only `tcx-order-allow` bundle and `OrderTurnGrant`: only a
133
184
  physical first line `$tcx-order-allow --mode paper|validation|live` can admit one
134
185
  later submit or cancel in that root turn. Grants bind workspace, session,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tradingcodex
3
- Version: 1.0.2
3
+ Version: 1.1.1
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
@@ -132,15 +132,6 @@ needs revision, or is blocked.
132
132
  | **Django service** | Enforces artifact identity, policy, approval, broker, idempotency, execution, and audit rules through shared application services. | It does not replace Codex with a semantic router, preset team, or stored workflow DAG. |
133
133
  | **Read-only viewer** | Lets you browse Library artifacts, Skills, System posture, and registered workspaces. | It does not launch Codex, write workspace files, or mutate orders, brokers, skills, or policy. |
134
134
 
135
- ```mermaid
136
- flowchart LR
137
- question[Your mandate] --> codex[Native Codex task]
138
- codex --> team[Head Manager and fixed-role evidence]
139
- team --> artifacts[Authenticated research artifacts]
140
- artifacts --> viewer[Read-only Library and System viewer]
141
- artifacts --> service[Policy, approval, broker, and audit gates]
142
- ```
143
-
144
135
  ## What You Keep
145
136
 
146
137
  TradingCodex keeps the work inspectable after the chat ends:
@@ -165,6 +156,11 @@ that state in prompts or workspace files.
165
156
  - Fixed roles have bounded tools and handoff responsibilities. A final order
166
157
  path is available only from an exact root-native protocol, never from the
167
158
  viewer, a subagent, public REST, generic CLI, or direct MCP call.
159
+ - User-installed MCP servers, skills, and plugins are BYOR native Codex
160
+ capabilities. TradingCodex neither recommends nor verifies them; their
161
+ licenses, data terms, costs, and side effects remain the user/provider's
162
+ responsibility, and TradingCodex guarantees cover only its own capabilities,
163
+ state, and actions.
168
164
  - Raw credentials do not belong in prompts, workspace files, reports, API/MCP
169
165
  output, or audit data.
170
166
 
@@ -95,15 +95,6 @@ needs revision, or is blocked.
95
95
  | **Django service** | Enforces artifact identity, policy, approval, broker, idempotency, execution, and audit rules through shared application services. | It does not replace Codex with a semantic router, preset team, or stored workflow DAG. |
96
96
  | **Read-only viewer** | Lets you browse Library artifacts, Skills, System posture, and registered workspaces. | It does not launch Codex, write workspace files, or mutate orders, brokers, skills, or policy. |
97
97
 
98
- ```mermaid
99
- flowchart LR
100
- question[Your mandate] --> codex[Native Codex task]
101
- codex --> team[Head Manager and fixed-role evidence]
102
- team --> artifacts[Authenticated research artifacts]
103
- artifacts --> viewer[Read-only Library and System viewer]
104
- artifacts --> service[Policy, approval, broker, and audit gates]
105
- ```
106
-
107
98
  ## What You Keep
108
99
 
109
100
  TradingCodex keeps the work inspectable after the chat ends:
@@ -128,6 +119,11 @@ that state in prompts or workspace files.
128
119
  - Fixed roles have bounded tools and handoff responsibilities. A final order
129
120
  path is available only from an exact root-native protocol, never from the
130
121
  viewer, a subagent, public REST, generic CLI, or direct MCP call.
122
+ - User-installed MCP servers, skills, and plugins are BYOR native Codex
123
+ capabilities. TradingCodex neither recommends nor verifies them; their
124
+ licenses, data terms, costs, and side effects remain the user/provider's
125
+ responsibility, and TradingCodex guarantees cover only its own capabilities,
126
+ state, and actions.
131
127
  - Raw credentials do not belong in prompts, workspace files, reports, API/MCP
132
128
  output, or audit data.
133
129
 
@@ -0,0 +1,20 @@
1
+ from django.contrib import admin
2
+
3
+ from apps.mcp.models import McpToolCall, McpToolDefinition
4
+
5
+
6
+ class ReadOnlyAdmin(admin.ModelAdmin):
7
+ def get_readonly_fields(self, request, obj=None):
8
+ return tuple(field.name for field in self.model._meta.fields)
9
+
10
+ def has_add_permission(self, request) -> bool:
11
+ return False
12
+
13
+ def has_change_permission(self, request, obj=None) -> bool:
14
+ return False
15
+
16
+ def has_delete_permission(self, request, obj=None) -> bool:
17
+ return False
18
+
19
+
20
+ admin.site.register([McpToolDefinition, McpToolCall], ReadOnlyAdmin)
@@ -0,0 +1,22 @@
1
+ from django.db import migrations
2
+
3
+
4
+ def remove_gate_broker_connections(apps, schema_editor):
5
+ BrokerConnection = apps.get_model("integrations", "BrokerConnection")
6
+ BrokerConnection.objects.filter(provider_id="external-mcp", transport="mcp").delete()
7
+
8
+
9
+ class Migration(migrations.Migration):
10
+ dependencies = [
11
+ ("integrations", "0001_v1_initial"),
12
+ ("mcp", "0001_v1_initial"),
13
+ ]
14
+
15
+ operations = [
16
+ migrations.RunPython(remove_gate_broker_connections, migrations.RunPython.noop),
17
+ migrations.DeleteModel(name="McpExternalPermissionRequest"),
18
+ migrations.DeleteModel(name="McpExternalToolCall"),
19
+ migrations.DeleteModel(name="McpExternalToolPermission"),
20
+ migrations.DeleteModel(name="McpExternalTool"),
21
+ migrations.DeleteModel(name="McpRouter"),
22
+ ]
@@ -0,0 +1,45 @@
1
+ from django.db import models
2
+
3
+
4
+ class McpToolDefinition(models.Model):
5
+ name = models.CharField(max_length=160, unique=True)
6
+ description = models.TextField(blank=True)
7
+ category = models.CharField(max_length=64, default="general")
8
+ capability_required = models.CharField(max_length=160, blank=True)
9
+ input_schema = models.JSONField(default=dict, blank=True)
10
+ risk_level = models.CharField(max_length=32, default="read")
11
+ allowed_roles = models.JSONField(default=list, blank=True)
12
+ requires_approval = models.BooleanField(default=False)
13
+ audit_required = models.BooleanField(default=True)
14
+ experimental = models.BooleanField(default=False)
15
+ enabled = models.BooleanField(default=True)
16
+ updated_at = models.DateTimeField(auto_now=True)
17
+
18
+ class Meta:
19
+ verbose_name = "MCP tool definition"
20
+ verbose_name_plural = "MCP tool definitions"
21
+
22
+ def __str__(self) -> str:
23
+ return self.name
24
+
25
+
26
+ class McpToolCall(models.Model):
27
+ created_at = models.DateTimeField(auto_now_add=True)
28
+ tool_name = models.CharField(max_length=160)
29
+ principal_id = models.CharField(max_length=128, default="unknown")
30
+ status = models.CharField(max_length=32, default="recorded")
31
+ request = models.JSONField(default=dict, blank=True)
32
+ response = models.JSONField(default=dict, blank=True)
33
+ workspace_context = models.JSONField(default=dict, blank=True)
34
+ request_hash = models.CharField(max_length=64, blank=True)
35
+ result_hash = models.CharField(max_length=64, blank=True)
36
+ error = models.TextField(blank=True)
37
+ duration_ms = models.PositiveIntegerField(default=0)
38
+
39
+ class Meta:
40
+ ordering = ["-created_at", "-id"]
41
+ verbose_name = "MCP tool call"
42
+ verbose_name_plural = "MCP tool calls"
43
+
44
+ def __str__(self) -> str:
45
+ return f"{self.tool_name} {self.status}"
@@ -0,0 +1,103 @@
1
+ from __future__ import annotations
2
+
3
+ import re
4
+ from typing import Any
5
+
6
+ from tradingcodex_service.log_safety import redact_log_text
7
+
8
+
9
+ REDACTED = "<redacted>"
10
+ SAFE_REFERENCE_RE = re.compile(r"^env:[A-Za-z_][A-Za-z0-9_]*$")
11
+
12
+
13
+ def redact_sensitive_data(value: Any, *, secret_values: tuple[str, ...] = ()) -> Any:
14
+ """Redact credentials from MCP requests, responses, audit data, and errors."""
15
+
16
+ secrets = tuple(secret for secret in secret_values if secret)
17
+ if isinstance(value, dict):
18
+ redacted: dict[str, Any] = {}
19
+ for raw_key, item in value.items():
20
+ key = str(raw_key)
21
+ if key.lower() == "env":
22
+ redacted[key] = _redact_environment(item)
23
+ elif key.lower() == "credential_ref" and _is_safe_reference(item):
24
+ redacted[key] = str(item)
25
+ elif _is_sensitive_field(key):
26
+ redacted[key] = REDACTED
27
+ else:
28
+ redacted[key] = redact_sensitive_data(item, secret_values=secrets)
29
+ return redacted
30
+ if isinstance(value, list):
31
+ redacted_items: list[Any] = []
32
+ redact_next = False
33
+ for item in value:
34
+ if redact_next:
35
+ redacted_items.append(REDACTED)
36
+ redact_next = False
37
+ continue
38
+ redacted_items.append(redact_sensitive_data(item, secret_values=secrets))
39
+ redact_next = isinstance(item, str) and bool(
40
+ re.fullmatch(
41
+ r"--?(?:api[_-]?key|token|secret|password|credential|authorization)",
42
+ item,
43
+ flags=re.I,
44
+ )
45
+ )
46
+ return redacted_items
47
+ if isinstance(value, tuple):
48
+ return [redact_sensitive_data(item, secret_values=secrets) for item in value]
49
+ if isinstance(value, str):
50
+ return _redact_sensitive_text(value, secrets)
51
+ return value
52
+
53
+
54
+ def _redact_environment(value: Any) -> dict[str, str] | str:
55
+ if not isinstance(value, dict):
56
+ return REDACTED
57
+ result: dict[str, str] = {}
58
+ for key, item in value.items():
59
+ text = str(item or "")
60
+ result[str(key)] = text if SAFE_REFERENCE_RE.fullmatch(text) else REDACTED
61
+ return result
62
+
63
+
64
+ def _is_safe_reference(value: Any) -> bool:
65
+ text = str(value or "")
66
+ return bool(
67
+ SAFE_REFERENCE_RE.fullmatch(text)
68
+ or re.fullmatch(r"(?:os-keychain|keyring|secret)://[A-Za-z0-9._~:/@+-]+", text)
69
+ )
70
+
71
+
72
+ def _is_sensitive_field(key: str) -> bool:
73
+ normalized = re.sub(r"[^a-z0-9]", "", str(key).lower())
74
+ return normalized.endswith(
75
+ (
76
+ "secret",
77
+ "secrets",
78
+ "password",
79
+ "passphrase",
80
+ "credential",
81
+ "credentials",
82
+ "apikey",
83
+ "accesstoken",
84
+ "refreshtoken",
85
+ "token",
86
+ "authorization",
87
+ "cookie",
88
+ )
89
+ )
90
+
91
+
92
+ def _redact_sensitive_text(value: str, secret_values: tuple[str, ...] = ()) -> str:
93
+ text = str(value or "")
94
+ for secret in sorted((item for item in secret_values if item), key=len, reverse=True):
95
+ text = text.replace(secret, REDACTED)
96
+ text = re.sub(r"(?i)(bearer\s+)[^\s,;]+", rf"\1{REDACTED}", text)
97
+ text = re.sub(
98
+ r"(?i)((?:api[_-]?key|token|secret|password|credential|authorization)\s*[:=]\s*)([^\s,;&]+)",
99
+ rf"\1{REDACTED}",
100
+ text,
101
+ )
102
+ text = re.sub(r"(?i)([a-z][a-z0-9+.-]*://)[^/@\s]+@", rf"\1{REDACTED}@", text)
103
+ return redact_log_text(text)
@@ -47,7 +47,7 @@ If these layers disagree, treat `docs/` as the durable product intent and fix th
47
47
 
48
48
  | Document | Purpose |
49
49
  | --- | --- |
50
- | [release-readiness.md](./release-readiness.md) | v1.0.1 source readiness, final-commit and exact-artifact validation, and pending tag, publication, and post-publish gates. |
50
+ | [release-readiness.md](./release-readiness.md) | Current v1 release readiness, prior-version update compatibility, exact-artifact validation, and tag, publication, and post-publish gates. |
51
51
 
52
52
  ## Workflow And Agent Documents
53
53
 
@@ -65,7 +65,7 @@ If these layers disagree, treat `docs/` as the durable product intent and fix th
65
65
  | Document | Owns |
66
66
  | --- | --- |
67
67
  | [guardrails.md](./guardrails.md) | Guardrail taxonomy: guidance, enforcement, and information barriers. |
68
- | [safety-policy-and-execution.md](./safety-policy-and-execution.md) | Permission checks, approval rules, execution lifecycle, adapter boundary, external MCP gate, blocked actions, and secret handling. |
68
+ | [safety-policy-and-execution.md](./safety-policy-and-execution.md) | Permission checks, approval rules, execution lifecycle, adapter boundary, BYOR Codex capability boundary, blocked actions, and secret handling. |
69
69
  | [improvement-loop.md](./improvement-loop.md) | Workflow quality, research memory, improve records, skill evolution, postmortem review, validation feedback, and quality-learning loops. |
70
70
 
71
71
  ## Implementation And Operations Documents
@@ -73,7 +73,7 @@ If these layers disagree, treat `docs/` as the durable product intent and fix th
73
73
  | Document | Owns |
74
74
  | --- | --- |
75
75
  | [system-architecture.md](./system-architecture.md) | Django modular monolith, central DB ownership, app boundaries, runtime planes, service-layer use cases, and core models. |
76
- | [interfaces-and-surfaces.md](./interfaces-and-surfaces.md) | Product web, Django Admin, Django Ninja API, MCP boundary, CLI, generated wrapper behavior, and external MCP surface. |
76
+ | [interfaces-and-surfaces.md](./interfaces-and-surfaces.md) | Product web, Django Admin, Django Ninja API, MCP boundary, CLI, generated wrapper behavior, and read-only Codex capability inventory. |
77
77
  | [generated-workspaces.md](./generated-workspaces.md) | `tcx attach`, `tcx update`, generated files, project-scoped MCP config, hooks, workspace provenance, profile scope, and template rules. |
78
78
  | [investment-brain-plugins.md](./investment-brain-plugins.md) | Product plan for high-freedom community TradingCodex Investment Brain plugins, Codex-skill projection, layer/override semantics, Decision Memory boundaries, and Git-managed user workspaces. |
79
79
  | [validation-and-test-plan.md](./validation-and-test-plan.md) | Required validation commands, unit/API/generator/smoke coverage, MCP smokes, broker provider smokes, routing scenarios, and release-sensitive checks. |
@@ -89,7 +89,7 @@ If these layers disagree, treat `docs/` as the durable product intent and fix th
89
89
  | User-facing request scoping, investor-context suitability, plain-English output, or professional finance framing | `financial-workflow-references.md`, `interfaces-and-surfaces.md`, `roles-skills-and-workflows.md` |
90
90
  | Role roster, model policy, head-manager dispatch, skills, Investment Brain plugins, strategy behavior, routing, information barriers, or handoff quality | `release-readiness.md`, `investment-brain-plugins.md`, `codex-native-orchestration.md`, `roles-skills-and-workflows.md`, `harness.md`, `generated-workspaces.md`, `core-concepts-and-rules.md` |
91
91
  | Research or decision memory, source snapshots, ResearchSpec/replay/ExperimentRun, forecast/calibration ledgers, postmortem lessons, search indexes, readiness labels, artifact paths, report quality, or markdown preview | `decision-memory.md`, `research-memory-and-artifacts.md`, `improvement-loop.md`, `codex-native-orchestration.md` |
92
- | Policy, permissions, approvals, idempotency, execution, adapters, broker safety, external MCP gate, or secret handling | `safety-policy-and-execution.md`, `guardrails.md`, `core-concepts-and-rules.md` |
92
+ | Policy, permissions, approvals, idempotency, execution, adapters, broker safety, BYOR capabilities, or secret handling | `safety-policy-and-execution.md`, `guardrails.md`, `core-concepts-and-rules.md` |
93
93
  | Django apps, models, service-layer contracts, central DB ownership, or runtime topology | `system-architecture.md` |
94
94
  | Product web, Admin, REST, MCP, CLI, or generated wrapper behavior | `interfaces-and-surfaces.md` |
95
95
  | Workspace templates, bootstrap, hooks, project MCP config, generated files, or update behavior | `generated-workspaces.md` |
@@ -60,14 +60,14 @@ clear.
60
60
  | `investment-brain-plugins` | Supports privacy-reviewed user-owned local Brain authoring, strict community bundle validation, explicit Head Manager-only projection, immutable versions, and receipt-authenticated run/artifact/Decision Memory provenance. | `guardrail.guidance`, `improvement.skill_evolution`, `improvement.research_memory` |
61
61
  | `fixed-role-dispatch` | Maintains head-manager, fixed subagent routing, and no-overlap handoff boundaries in native Codex. | `guardrail.guidance`, `guardrail.information_barrier`, `improvement.workflow_quality` |
62
62
  | `versioned-workspace` | Keeps generated workspaces in user-owned Git worktrees with privacy-first ignores and no automatic stage, commit, remote, or publication. | `guardrail.guidance`, `guardrail.information_barrier`, `improvement.validation_feedback` |
63
- | `research-memory` | Stores source-aware research artifacts, versions, snapshots, Evidence Run Cards, Validation Cards, and exports. | `improvement.research_memory` |
63
+ | `research-memory` | Stores source-aware research artifacts, versions, snapshots, Evidence Run Cards, Validation Cards, and rebuildable research/cross-artifact search projections. | `improvement.research_memory` |
64
64
  | `workflow-quality-gates` | Defines artifact quality, Decision Quality Spine, agent judgment review, claim discipline, and synthesis lineage without a Django workflow loop. | `guardrail.guidance`, `improvement.workflow_quality` |
65
65
  | `decision-package` | Freezes run provenance, artifact paths, forecasts, investor-context gaps, and outcomes in Codex-readable workspace records. | `guardrail.guidance`, `improvement.workflow_quality`, `improvement.research_memory` |
66
66
  | `artifact-quality-contract` | Evaluates workspace artifacts, Evidence Run Cards, Validation Cards, source snapshots, and forecast ledgers for source/as-of posture, source trust, data-boundary warnings, claim tags, handoff state, confidence, missing evidence, judgment-review fields, and next-recipient routing metadata. | `guardrail.guidance`, `improvement.workflow_quality`, `improvement.research_memory` |
67
67
  | `context-efficiency-contract` | Keeps workflows bounded through compact briefs, artifact references, context summaries, source snapshot IDs, targeted full-artifact reads, and `subagents context-audit` validation. | `guardrail.guidance`, `guardrail.information_barrier`, `improvement.workflow_quality`, `improvement.context_efficiency` |
68
68
  | `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` |
69
69
  | `tcx-source-gate` | Keeps external evidence read-only and source-aware. | `guardrail.guidance`, `improvement.workflow_quality` |
70
- | `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` |
70
+ | `codex-capability-inventory` | Lists sanitized native Codex MCP, skill, plugin, app, and hook metadata without managing or endorsing user-installed capabilities. | `guardrail.guidance`, `guardrail.information_barrier` |
71
71
  | `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` |
72
72
  | `secret-wall` | Blocks raw broker secrets from workspace files, prompts, shell paths, and role context. | `guardrail.enforcement`, `guardrail.information_barrier` |
73
73
  | `policy-and-restricted-list` | Evaluates principals, capabilities, explicit deny rules, restricted symbols, and limits. | `guardrail.enforcement` |
@@ -122,7 +122,7 @@ exact root native action -> deterministic hook parse -> native-user permission
122
122
  -> policy -> payload validation -> approval/duplicate-request check
123
123
  -> mandatory intent audit -> connection -> finalized/uncertain audit
124
124
 
125
- exact first-line $tcx-order-allow -> workspace/session/turn/prompt/mode grant
125
+ exact first-meaningful-line $tcx-order-allow -> workspace/session/turn/prompt/mode grant
126
126
  -> protected use_order_turn_grant + PreToolUse proof -> consume once
127
127
  -> the same canonical policy/approval/idempotency/live/audit gates
128
128
  ```
@@ -131,8 +131,10 @@ The root `tcx-order-submit` and `tcx-order-cancel` skill bundles
131
131
  carry no tools. Their complete exact prompt grammar is intercepted by
132
132
  `UserPromptSubmit` and dispatched in-process to the service gateway before any
133
133
  model runs. The separate `tcx-order-allow` bundle documents current-turn admission:
134
- an exact physical first line issues one `OrderTurnGrant`, and only root Head
134
+ an exact first meaningful line issues one `OrderTurnGrant`, and only root Head
135
135
  Manager can select one later submit or cancel through `use_order_turn_grant`.
136
+ The leading skill may be a plain token or its matching projected Markdown link;
137
+ the order mode and immediate action grammars remain literal.
136
138
  `PreToolUse` injects proof that model input and direct MCP callers cannot supply.
137
139
  The browser viewer has no mutation route. Fixed roles, public REST, generic
138
140
  CLI, and unproven direct MCP calls cannot invoke the final mutation.
@@ -71,6 +71,16 @@ The source of truth is the existing file-native record:
71
71
  Existing events are not edited to make history look cleaner. Corrections,
72
72
  revisions, supersession, disputes, and retirement are new records.
73
73
 
74
+ The rebuildable v2 artifact catalog provides a discovery projection across
75
+ these file-native records without becoming Decision Memory itself. New
76
+ type-specific service output projects with full canonical identity metadata;
77
+ older files remain unchanged and may project as `legacy_partial`. Malformed
78
+ records are quarantined as `invalid`. A point-in-time catalog query uses each
79
+ type's explicit `knowledge_cutoff` or `known_at` field and excludes missing,
80
+ malformed, or later values, so legacy discovery does not silently become
81
+ historical provenance. The catalog can be discarded and recreated from source
82
+ artifacts and verified forecast-ledger state.
83
+
74
84
  ### Time contract
75
85
 
76
86
  Decision Memory needs more than a document `updated_at`. Records should
@@ -355,8 +365,8 @@ Memory remains independent of the Brain that produced a decision:
355
365
  provenance.
356
366
 
357
367
  Learning from memory into a Brain is a separate user-controlled curation path.
358
- Writing requires a root native Codex prompt whose exact physical first line is
359
- `$tcx-brain`, an explicit source-authoring request below it, an
368
+ Writing requires a root native Codex prompt whose first meaningful invocation
369
+ is `$tcx-brain`, an explicit source-authoring request on that line or below it, an
360
370
  actual Codex sandbox that permits the required workspace-local writes, exact
361
371
  user-selected source episodes, and counterexamples. The Brain-scoped grant is
362
372
  bound to that turn, cannot authorize Build or Strategy work, and does not carry
@@ -79,7 +79,6 @@ the backend listener private. Invalid remote settings fail before binding.
79
79
  - service autostart, `tcx service status`, compatibility checks, and `doctor`
80
80
  consume readiness rather than treating a reachable process as ready.
81
81
  - service logs rotate at 5 MiB with three backups by default.
82
- - external MCP stderr rotates separately at 1 MiB with two backups.
83
82
  - persisted logs redact known secrets, authorization values,
84
83
  credential-shaped fields, and URL user-info.
85
84
 
@@ -150,12 +149,20 @@ find . -maxdepth 1 -name '*.egg-info' -type d -exec rm -rf {} +
150
149
  python3.11 -m build
151
150
  python3.11 -m twine check dist/*
152
151
  python3.11 tests/platform_wheel_smoke.py --wheel-dir dist
152
+ python3.11 tests/release_upgrade_smoke.py --wheel-dir dist --from-version 1.0.2
153
153
  ```
154
154
 
155
155
  The wheel smoke installs only the built wheel into a clean virtual environment,
156
156
  checks distribution metadata against the runtime version, attaches a workspace,
157
157
  validates native launchers and generated configuration, runs hooks and MCP
158
158
  stdio, exercises the local service, and loads the packaged SPA and assets.
159
+ The release-upgrade smoke starts from the published `1.0.2` package, updates
160
+ that attached workspace with the built candidate wheel, and verifies preserved
161
+ workspace and runtime identity, user-owned state, and explicit home, DB, and
162
+ service-address settings alongside the refreshed generated contract. It also
163
+ preserves the exact provider approval identity and timestamp, compares every
164
+ byte in the immutable provider snapshot, and proves that the candidate runtime
165
+ loads that approved snapshot after the update.
159
166
 
160
167
  Harness, role, prompt, skill, hook, policy, MCP, or generated-template changes
161
168
  also require the disposable-workspace and Codex-native checks documented in
@@ -165,7 +172,8 @@ also require the disposable-workspace and Codex-native checks documented in
165
172
 
166
173
  `.github/workflows/ci.yml` is test-only. One Ubuntu/Python 3.11 job runs the
167
174
  frontend build, complete Python suite and framework gates, clean package
168
- construction, and the wheel smoke. Guide-only pushes skip this workflow because
175
+ construction, the wheel smoke, and the prior-release update smoke. Guide-only
176
+ pushes skip this workflow because
169
177
  the Pages workflow validates and deploys only static guide files. CI never
170
178
  publishes.
171
179
 
@@ -179,7 +187,8 @@ publishes.
179
187
  - the workflow ref is exactly `refs/tags/v<release_version>`
180
188
  - the tagged commit is on `origin/main`
181
189
  - the wheel and source-distribution filenames carry the same version
182
- - the built wheel passes the Ubuntu smoke
190
+ - `dist/` contains exactly that one wheel and one source distribution
191
+ - the built wheel passes the Ubuntu wheel and prior-release update smokes
183
192
  - the protected `pypi` environment approves Trusted Publishing
184
193
 
185
194
  The release workflow has one build/verification job. When publication is
@@ -261,7 +270,7 @@ sh "$SOURCE_ROOT/install.sh" \
261
270
  On native Windows PowerShell:
262
271
 
263
272
  ```powershell
264
- $ReleaseVersion = "1.0.2"
273
+ $ReleaseVersion = "1.1.1"
265
274
  $Workspace = Join-Path $env:TEMP "tcx-pypi-$ReleaseVersion"
266
275
  New-Item -ItemType Directory -Force $Workspace | Out-Null
267
276
  Set-Location $Workspace
@@ -26,7 +26,7 @@ design, migration, and validation evidence.
26
26
  author every class of Codex app Scheduled Task, from simple research and
27
27
  monitoring through optional turn-authorized execution.
28
28
  - [x] Issue a workspace-, session-, turn-, prompt-, and mode-bound single-use
29
- grant only for an exact physical first line `$tcx-order-allow --mode
29
+ grant only for an exact first meaningful line `$tcx-order-allow --mode
30
30
  paper|validation|live`; revoke it after one submit or cancel, after one hour,
31
31
  on `Stop`, or when the next user turn starts.
32
32
  - [x] Protect `use_order_turn_grant` so only root Head Manager can select the
@@ -82,9 +82,9 @@ Remove `execution-operator` from the fixed-role roster. Native Codex keeps the
82
82
  exact immediate submit/cancel path for already-known canonical identifiers and
83
83
  adds a separate single-turn path for workflows that create the ticket or
84
84
  approval during the turn. The immediate path executes in `UserPromptSubmit`
85
- before Head Manager runs. The turn path begins only when the physical first
86
- line is exact `$tcx-order-allow --mode paper|validation|live`, then continues the
87
- normal workflow with a single-use service grant.
85
+ before Head Manager runs. The turn path begins only when the first meaningful
86
+ line is exactly `$tcx-order-allow --mode paper|validation|live`, then continues
87
+ the normal workflow with a single-use service grant.
88
88
 
89
89
  `tcx-automate` authors Codex app Scheduled Tasks; it is not a scheduler or
90
90
  the skill invoked recursively by each run. Research, monitoring, recurring
@@ -109,7 +109,7 @@ UserPromptSubmit -> deterministic parse and native-user mandate
109
109
  Django service -> authorize, reserve, audit, invoke adapter, finalize
110
110
  Head Manager -> summarize the already-recorded result; no action authority
111
111
 
112
- native/scheduled user -> exact physical first-line $tcx-order-allow mode
112
+ native/scheduled user -> exact first-meaningful-line $tcx-order-allow mode
113
113
  UserPromptSubmit -> bind one grant to workspace + session + turn + prompt + mode
114
114
  roles/services -> create and approve canonical ticket state
115
115
  Head Manager -> call protected use_order_turn_grant once
@@ -152,7 +152,8 @@ Each bundle follows the normal TradingCodex skill shape, including `SKILL.md`
152
152
  and `agents/openai.yaml`, but contains no tool authority. The skill documents an
153
153
  action syntax intercepted by the hook before the model runs.
154
154
 
155
- The complete trimmed user prompt must have one of these forms:
155
+ The complete meaningful user prompt must have one of these canonical plain
156
+ forms:
156
157
 
157
158
  ```text
158
159
  $tcx-order-submit --ticket-id <ticket-id> --approval-receipt-id <receipt-id>
@@ -162,10 +163,13 @@ $tcx-order-cancel --ticket-id <ticket-id> --broker-order-id <broker-order-id> --
162
163
  $tcx-order-cancel --ticket-id <ticket-id> --broker-order-id <broker-order-id> --approval-receipt-id <receipt-id> --live-confirmation <token>
163
164
  ```
164
165
 
165
- Parsing rules are intentionally strict:
166
+ Parsing rules are intentionally strict. One UTF-8 BOM, normalized CRLF/CR/NEL/
167
+ Unicode line separators, leading/trailing blank lines, and a Markdown link whose
168
+ label and target match the projected workspace action skill are presentation
169
+ variants only:
166
170
 
167
171
  - Parse with `shlex.split`; never use a shell or evaluate prompt content.
168
- - Require the skill token to be the first token and the entire prompt to be the
172
+ - Require the skill invocation to be first and the entire meaningful prompt to be the
169
173
  action. Free-form prefixes, suffixes, comments, quotations, or a second skill
170
174
  invocation are invalid.
171
175
  - Accept only the documented `--name value` form. Reject `--name=value`, unknown
@@ -191,8 +195,8 @@ must not fall through to Head Manager as ordinary analysis.
191
195
 
192
196
  ## Turn-Scoped Order Allow Contract
193
197
 
194
- For a workflow that may create its final identifiers during the turn, the
195
- physical first line must be exactly one of:
198
+ For a workflow that may create its final identifiers during the turn, the first
199
+ meaningful line must be exactly one of:
196
200
 
197
201
  ```text
198
202
  $tcx-order-allow --mode paper
@@ -200,9 +204,10 @@ $tcx-order-allow --mode validation
200
204
  $tcx-order-allow --mode live
201
205
  ```
202
206
 
203
- The rest of the prompt is the ordinary interactive or Codex app Scheduled Task
204
- request. The line accepts no aliases, comments, quotes, extra flags, embedded
205
- prose, or `--mode=value` form. A free-form mention or later-line occurrence
207
+ The skill token may be its matching projected Markdown link. The rest of the
208
+ prompt is a non-empty ordinary interactive or Codex app Scheduled Task request.
209
+ The line accepts no aliases, comments, quotes, extra flags, embedded prose, or
210
+ `--mode=value` form. A free-form mention or later-meaningful-line occurrence
206
211
  does not grant authority. Scheduled and interactive turns use the same parser;
207
212
  there is no Automation-origin branch.
208
213
 
@@ -252,7 +257,7 @@ normal analysis context:
252
257
  canonical ids. If this audit is unavailable, fail closed before service
253
258
  invocation.
254
259
  4. Call the execution gateway synchronously and in-process. Do not launch a
255
- shell, subprocess, external MCP proxy, or Head Manager tool call.
260
+ shell, subprocess, user-installed capability, or Head Manager tool call.
256
261
  5. Emit only an allowlisted result projection as `UserPromptSubmit` additional
257
262
  context with marker `tradingcodex-native-execution-result`.
258
263
  6. Instruct Head Manager to report the recorded result without spawning roles,
@@ -264,7 +269,7 @@ normal analysis context:
264
269
  The existing provider-call idempotency remains the replay defense if the hook
265
270
  event is delivered more than once.
266
271
 
267
- For `$tcx-order-allow`, `UserPromptSubmit` instead validates the exact first line,
272
+ For `$tcx-order-allow`, `UserPromptSubmit` instead validates the exact first meaningful line,
268
273
  requires root native `session_id` and `turn_id`, revokes the session's older
269
274
  grant, issues the new bounded grant, and continues normal analysis allocation.
270
275
  The additional context contains only mode, expiry, single-use posture, and the
@@ -400,8 +405,9 @@ map, or safety routing would otherwise become misleading.
400
405
  - Prove that unavailable hook audit blocks before reservation/provider use.
401
406
  - Prove that hook result projection contains no raw prompt, reasoning, secrets,
402
407
  credentials, raw provider payload, or unallowlisted error text.
403
- - Accept only the three exact physical-first-line `$tcx-order-allow` modes; reject
404
- later-line, malformed, subagent, Workbench, missing-session, and missing-turn
408
+ - Accept only the three exact first-meaningful-line `$tcx-order-allow` modes;
409
+ reject later-meaningful-line, malformed, subagent, Workbench,
410
+ missing-session, and missing-turn
405
411
  forms without issuing a grant.
406
412
  - Prove grant binding to workspace, session, turn, prompt hash, mode, and
407
413
  tool-use id; prove one-hour, `Stop`, next-turn, and consumption revocation.
@@ -465,7 +471,7 @@ The change is complete only when all of the following are true:
465
471
  8. Generated workspace update safely retires unmodified agent files and
466
472
  preserves modified-file conflict protection.
467
473
  9. A saved Scheduled Task prompt is processed as an ordinary root turn on each
468
- run; only an exact `$tcx-order-allow` physical first line can create one bounded
474
+ run; only an exact `$tcx-order-allow` first meaningful line can create one bounded
469
475
  effect grant, and no Automation-origin detector is involved.
470
476
 
471
477
  ## Explicit Non-Goals