tradingcodex 1.1.1__tar.gz → 1.1.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (392) hide show
  1. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/CHANGELOG.md +80 -0
  2. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/MANIFEST.in +2 -0
  3. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/PKG-INFO +7 -2
  4. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/README.md +5 -1
  5. tradingcodex-1.1.2/assets/tradingcodex-banner-v3.png +0 -0
  6. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/docs/components.md +1 -0
  7. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/docs/deployment.md +35 -22
  8. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/docs/execution-without-subagent-plan.md +1 -1
  9. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/docs/generated-workspaces.md +118 -35
  10. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/docs/harness.md +40 -6
  11. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/docs/interfaces-and-surfaces.md +70 -6
  12. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/docs/release-readiness.md +41 -25
  13. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/docs/research-memory-and-artifacts.md +208 -24
  14. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/docs/roles-skills-and-workflows.md +59 -3
  15. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/docs/safety-policy-and-execution.md +23 -6
  16. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/docs/system-architecture.md +55 -4
  17. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/docs/user-facing-skills.md +5 -1
  18. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/docs/validation-and-test-plan.md +90 -13
  19. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/frontend/src/App.tsx +5 -2
  20. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/frontend/src/domain.ts +43 -0
  21. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/frontend/src/features/LibraryPage.tsx +50 -3
  22. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/installation.md +8 -8
  23. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/pyproject.toml +2 -0
  24. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_build_hook.py +47 -0
  25. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_build_turn_grant.py +14 -0
  26. tradingcodex-1.1.2/tests/test_calculation_runner.py +1290 -0
  27. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_codex_capabilities.py +44 -2
  28. tradingcodex-1.1.2/tests/test_datasets.py +358 -0
  29. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_dynamic_artifact_quality.py +100 -1
  30. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_e2e_user_scenarios.py +4 -3
  31. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_native_execution_gateway.py +191 -1
  32. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_platform_runtime.py +129 -12
  33. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_release_contract.py +56 -8
  34. tradingcodex-1.1.2/tests/test_research_object_catalog.py +272 -0
  35. tradingcodex-1.1.2/tests/test_research_objects.py +48 -0
  36. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_skill_runtime_boundaries.py +64 -1
  37. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_viewer.py +13 -3
  38. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_workspace_git_contract.py +3 -0
  39. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex.egg-info/PKG-INFO +7 -2
  40. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex.egg-info/SOURCES.txt +19 -1
  41. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex.egg-info/requires.txt +1 -0
  42. tradingcodex-1.1.2/tradingcodex_cli/calculation-runtime-lock.json +31 -0
  43. tradingcodex-1.1.2/tradingcodex_cli/calculation-runtime-requirements.txt +297 -0
  44. tradingcodex-1.1.2/tradingcodex_cli/calculation_runner.py +828 -0
  45. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/commands/doctor.py +144 -0
  46. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/generator.py +498 -2
  47. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/api.py +1 -0
  48. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/agents.py +73 -7
  49. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/artifact_bindings.py +86 -5
  50. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/artifact_catalog.py +44 -1
  51. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/artifact_quality.py +31 -1
  52. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/build_gateway.py +2 -1
  53. tradingcodex-1.1.2/tradingcodex_service/application/calculations.py +1642 -0
  54. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/codex_capabilities.py +40 -2
  55. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/common.py +3 -3
  56. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/components.py +60 -0
  57. tradingcodex-1.1.2/tradingcodex_service/application/datasets.py +1306 -0
  58. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/portfolio.py +76 -0
  59. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/research.py +118 -29
  60. tradingcodex-1.1.2/tradingcodex_service/application/research_object_catalog.py +1096 -0
  61. tradingcodex-1.1.2/tradingcodex_service/application/research_objects.py +214 -0
  62. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/research_specs.py +31 -29
  63. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/source_snapshots.py +6 -4
  64. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/viewer.py +35 -0
  65. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/workspace_git.py +1 -0
  66. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/mcp_runtime.py +332 -0
  67. tradingcodex-1.1.2/tradingcodex_service/static/tradingcodex_web/assets/index-gUVw-08l.js +9 -0
  68. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/static/tradingcodex_web/index.html +1 -1
  69. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/urls.py +6 -0
  70. tradingcodex-1.1.2/tradingcodex_service/version.py +1 -0
  71. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/viewer_api.py +25 -0
  72. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/codex-base/files/.codex/config.toml +7 -2
  73. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/codex-base/files/.codex/hooks/tradingcodex_hook.py +72 -3
  74. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/codex-base/files/.codex/prompts/base_instructions/head-manager.md +58 -3
  75. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/codex-base/files/AGENTS.md +7 -3
  76. tradingcodex-1.1.2/workspace_templates/modules/codex-base/files/tcx-calc +13 -0
  77. tradingcodex-1.1.2/workspace_templates/modules/codex-base/files/tcx-calc.cmd +11 -0
  78. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/codex-base/module.json +1 -0
  79. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/research_artifact.schema.json +21 -0
  80. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/fundamental-analyst.toml +2 -1
  81. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/instrument-analyst.toml +1 -0
  82. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/judgment-reviewer.toml +2 -0
  83. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/macro-analyst.toml +2 -1
  84. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/news-analyst.toml +1 -0
  85. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/portfolio-manager.toml +3 -1
  86. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/risk-manager.toml +3 -1
  87. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/technical-analyst.toml +2 -1
  88. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/valuation-analyst.toml +2 -1
  89. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/SKILL.md +21 -8
  90. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-artifact/SKILL.md +2 -0
  91. tradingcodex-1.1.2/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-calculation/SKILL.md +56 -0
  92. tradingcodex-1.1.2/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-calculation/agents/openai.yaml +6 -0
  93. tradingcodex-1.1.2/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-calculation/references/data-runtime.md +65 -0
  94. tradingcodex-1.1.2/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-calculation/references/finance-methods.md +72 -0
  95. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-source-gate/SKILL.md +17 -5
  96. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/module.json +1 -0
  97. tradingcodex-1.1.1/tradingcodex_service/static/tradingcodex_web/assets/index-_2ys6WhF.js +0 -9
  98. tradingcodex-1.1.1/tradingcodex_service/version.py +0 -1
  99. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/CONTRIBUTING.md +0 -0
  100. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/LICENSE +0 -0
  101. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/NOTICE +0 -0
  102. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/TRADEMARKS.md +0 -0
  103. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/__init__.py +0 -0
  104. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/audit/__init__.py +0 -0
  105. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/audit/admin.py +0 -0
  106. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/audit/apps.py +0 -0
  107. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/audit/migrations/0001_v1_initial.py +0 -0
  108. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/audit/migrations/__init__.py +0 -0
  109. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/audit/models.py +0 -0
  110. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/harness/__init__.py +0 -0
  111. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/harness/admin.py +0 -0
  112. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/harness/apps.py +0 -0
  113. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/harness/migrations/0001_v1_initial.py +0 -0
  114. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/harness/migrations/__init__.py +0 -0
  115. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/harness/models.py +0 -0
  116. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/harness/templatetags/__init__.py +0 -0
  117. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/integrations/__init__.py +0 -0
  118. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/integrations/admin.py +0 -0
  119. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/integrations/apps.py +0 -0
  120. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/integrations/migrations/0001_v1_initial.py +0 -0
  121. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/integrations/migrations/__init__.py +0 -0
  122. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/integrations/models.py +0 -0
  123. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/mcp/__init__.py +0 -0
  124. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/mcp/admin.py +0 -0
  125. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/mcp/apps.py +0 -0
  126. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/mcp/migrations/0001_v1_initial.py +0 -0
  127. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/mcp/migrations/0002_remove_external_mcp_gate.py +0 -0
  128. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/mcp/migrations/__init__.py +0 -0
  129. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/mcp/models.py +0 -0
  130. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/mcp/services.py +0 -0
  131. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/orders/__init__.py +0 -0
  132. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/orders/admin.py +0 -0
  133. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/orders/apps.py +0 -0
  134. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/orders/migrations/0001_v1_initial.py +0 -0
  135. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/orders/migrations/__init__.py +0 -0
  136. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/orders/models.py +0 -0
  137. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/orders/services.py +0 -0
  138. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/policy/__init__.py +0 -0
  139. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/policy/admin.py +0 -0
  140. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/policy/apps.py +0 -0
  141. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/policy/migrations/0001_v1_initial.py +0 -0
  142. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/policy/migrations/__init__.py +0 -0
  143. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/policy/models.py +0 -0
  144. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/policy/services.py +0 -0
  145. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/portfolio/__init__.py +0 -0
  146. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/portfolio/admin.py +0 -0
  147. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/portfolio/apps.py +0 -0
  148. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/portfolio/migrations/0001_v1_initial.py +0 -0
  149. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/portfolio/migrations/__init__.py +0 -0
  150. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/apps/portfolio/models.py +0 -0
  151. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/assets/tradingcodex-banner.svg +0 -0
  152. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/docs/README.md +0 -0
  153. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/docs/codex-native-orchestration.md +0 -0
  154. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/docs/core-concepts-and-rules.md +0 -0
  155. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/docs/decision-memory.md +0 -0
  156. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/docs/financial-workflow-references.md +0 -0
  157. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/docs/guardrails.md +0 -0
  158. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/docs/improvement-loop.md +0 -0
  159. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/docs/investment-brain-plugins.md +0 -0
  160. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/docs/licensing-and-commercialization.md +0 -0
  161. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/docs/product-direction.md +0 -0
  162. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/frontend/index.html +0 -0
  163. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/frontend/package-lock.json +0 -0
  164. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/frontend/package.json +0 -0
  165. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/frontend/src/api.ts +0 -0
  166. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/frontend/src/features/SkillsPage.tsx +0 -0
  167. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/frontend/src/features/SystemPage.tsx +0 -0
  168. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/frontend/src/main.tsx +0 -0
  169. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/frontend/src/navigation.js +0 -0
  170. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/frontend/src/navigation.test.js +0 -0
  171. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/frontend/src/styles.css +0 -0
  172. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/frontend/src/ui.tsx +0 -0
  173. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/frontend/src/viewer-data.js +0 -0
  174. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/frontend/tsconfig.json +0 -0
  175. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/frontend/vite.config.ts +0 -0
  176. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/install.sh +0 -0
  177. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/setup.cfg +0 -0
  178. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_artifact_authentication.py +0 -0
  179. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_artifact_catalog.py +0 -0
  180. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_brain_skill.py +0 -0
  181. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_broker_center_prd.py +0 -0
  182. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_build_contract_metadata.py +0 -0
  183. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_clean_v1_cli_audit.py +0 -0
  184. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_codex_cli_compat.py +0 -0
  185. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_codex_cli_contract.py +0 -0
  186. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_codex_native_orchestration.py +0 -0
  187. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_dashboard_skill.py +0 -0
  188. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_decision_memory_core.py +0 -0
  189. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_dev_bootstrap.py +0 -0
  190. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_evaluation_lab_hardening.py +0 -0
  191. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_evaluation_profiles.py +0 -0
  192. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_guidebook_contract.py +0 -0
  193. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_investment_analysis.py +0 -0
  194. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_investment_brain_cli.py +0 -0
  195. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_investment_brain_prompt_layers.py +0 -0
  196. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_investment_brain_provenance.py +0 -0
  197. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_investment_brain_registry.py +0 -0
  198. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_investor_context.py +0 -0
  199. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_mcp_broker_release_health.py +0 -0
  200. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_order_turn_grant.py +0 -0
  201. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_provider_source_approval.py +0 -0
  202. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_research_forecast_surfaces.py +0 -0
  203. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_research_spec_profiles.py +0 -0
  204. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_runtime_paths.py +0 -0
  205. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_runtime_profile.py +0 -0
  206. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_security_invariants.py +0 -0
  207. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_source_snapshot_agent_contract.py +0 -0
  208. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_v1_migrations.py +0 -0
  209. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tests/test_v1_state_integrity.py +0 -0
  210. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex.egg-info/dependency_links.txt +0 -0
  211. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex.egg-info/entry_points.txt +0 -0
  212. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex.egg-info/top_level.txt +0 -0
  213. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/__init__.py +0 -0
  214. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/__main__.py +0 -0
  215. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/commands/__init__.py +0 -0
  216. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/commands/bootstrap.py +0 -0
  217. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/commands/build.py +0 -0
  218. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/commands/connectors.py +0 -0
  219. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/commands/db.py +0 -0
  220. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/commands/decision.py +0 -0
  221. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/commands/evaluation.py +0 -0
  222. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/commands/forecast.py +0 -0
  223. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/commands/home.py +0 -0
  224. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/commands/investment_brains.py +0 -0
  225. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/commands/investor_context.py +0 -0
  226. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/commands/mcp.py +0 -0
  227. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/commands/mode.py +0 -0
  228. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/commands/orders.py +0 -0
  229. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/commands/policy.py +0 -0
  230. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/commands/profile.py +0 -0
  231. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/commands/research.py +0 -0
  232. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/commands/skills.py +0 -0
  233. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/commands/strategies.py +0 -0
  234. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/commands/subagents.py +0 -0
  235. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/commands/utils.py +0 -0
  236. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/commands/workflow.py +0 -0
  237. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/commands/workspaces.py +0 -0
  238. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/mcp_stdio.py +0 -0
  239. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/package_source.py +0 -0
  240. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/service_autostart.py +0 -0
  241. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/startup_status.py +0 -0
  242. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_cli/versioning.py +0 -0
  243. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/__init__.py +0 -0
  244. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/admin.py +0 -0
  245. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/__init__.py +0 -0
  246. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/analysis_runs.py +0 -0
  247. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/audit.py +0 -0
  248. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/brokers.py +0 -0
  249. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/context_budget.py +0 -0
  250. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/decision_packages.py +0 -0
  251. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/evaluation_lab.py +0 -0
  252. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/execution_gateway.py +0 -0
  253. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/forecasting.py +0 -0
  254. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/git_subprocess.py +0 -0
  255. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/harness.py +0 -0
  256. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/health.py +0 -0
  257. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/investment_analysis.py +0 -0
  258. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/investment_brains.py +0 -0
  259. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/investor_context.py +0 -0
  260. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/markdown_preview.py +0 -0
  261. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/operator_authority.py +0 -0
  262. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/orders.py +0 -0
  263. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/policy.py +0 -0
  264. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/postmortems.py +0 -0
  265. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/runtime.py +0 -0
  266. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/runtime_mode.py +0 -0
  267. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/skill_invocations.py +0 -0
  268. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/application/workspaces.py +0 -0
  269. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/asgi.py +0 -0
  270. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/log_safety.py +0 -0
  271. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/runtime_profile.py +0 -0
  272. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/settings.py +0 -0
  273. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/static/tradingcodex_admin/favicon.svg +0 -0
  274. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/static/tradingcodex_web/assets/index-DYzj_xRR.css +0 -0
  275. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/web.py +0 -0
  276. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/tradingcodex_service/wsgi.py +0 -0
  277. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/__init__.py +0 -0
  278. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/audit/files/.tradingcodex/audit/README.md +0 -0
  279. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/audit/files/trading/audit/.gitkeep +0 -0
  280. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/audit/module.json +0 -0
  281. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/codex-base/files/.codex/hooks.json +0 -0
  282. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/codex-base/files/.codex/rules/tradingcodex.rules +0 -0
  283. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/codex-base/files/.tradingcodex/cli.py +0 -0
  284. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/codex-base/files/.tradingcodex/config.yaml +0 -0
  285. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/codex-base/files/pyproject.toml +0 -0
  286. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/codex-base/files/tcx +0 -0
  287. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/codex-base/files/tcx.cmd +0 -0
  288. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/policies/restricted-list.yaml +0 -0
  289. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/approval_receipt.schema.json +0 -0
  290. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/audit_event.schema.json +0 -0
  291. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/evidence_pack.schema.json +0 -0
  292. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/execution_result.schema.json +0 -0
  293. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/fundamental_report.schema.json +0 -0
  294. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/news_report.schema.json +0 -0
  295. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/order_ticket.schema.json +0 -0
  296. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/portfolio_review.schema.json +0 -0
  297. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/postmortem_report.schema.json +0 -0
  298. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/risk_report.schema.json +0 -0
  299. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/technical_report.schema.json +0 -0
  300. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/thesis.schema.json +0 -0
  301. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/valuation.schema.json +0 -0
  302. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/enforcement-guardrails/module.json +0 -0
  303. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/fixed-subagents/files/.tradingcodex/mainagent/skill-change-proposals/.gitkeep +0 -0
  304. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/fixed-subagents/module.json +0 -0
  305. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/guidance-guardrails/files/.tradingcodex/guidance/guardrails.md +0 -0
  306. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/guidance-guardrails/files/.tradingcodex/guidance/task-quality-checklist.md +0 -0
  307. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/guidance-guardrails/module.json +0 -0
  308. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/information-barriers/files/.tradingcodex/secrets.md +0 -0
  309. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/information-barriers/files/trading/forecasts/.gitkeep +0 -0
  310. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/information-barriers/files/trading/market-data/.gitkeep +0 -0
  311. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/information-barriers/files/trading/portfolio/.gitkeep +0 -0
  312. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/information-barriers/files/trading/reports/fundamental/.gitkeep +0 -0
  313. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/information-barriers/files/trading/reports/instrument/.gitkeep +0 -0
  314. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/information-barriers/files/trading/reports/macro/.gitkeep +0 -0
  315. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/information-barriers/files/trading/reports/news/.gitkeep +0 -0
  316. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/information-barriers/files/trading/reports/policy/.gitkeep +0 -0
  317. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/information-barriers/files/trading/reports/portfolio/.gitkeep +0 -0
  318. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/information-barriers/files/trading/reports/postmortem/.gitkeep +0 -0
  319. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/information-barriers/files/trading/reports/risk/.gitkeep +0 -0
  320. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/information-barriers/files/trading/reports/technical/.gitkeep +0 -0
  321. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/information-barriers/files/trading/reports/valuation/.gitkeep +0 -0
  322. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/information-barriers/files/trading/research/.gitkeep +0 -0
  323. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/information-barriers/module.json +0 -0
  324. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/paper-trading/module.json +0 -0
  325. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-automate/SKILL.md +0 -0
  326. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-automate/agents/openai.yaml +0 -0
  327. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/SKILL.md +0 -0
  328. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/agents/openai.yaml +0 -0
  329. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/references/bundle-contract.md +0 -0
  330. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-build/SKILL.md +0 -0
  331. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-build/agents/openai.yaml +0 -0
  332. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-dashboard/SKILL.md +0 -0
  333. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-dashboard/agents/openai.yaml +0 -0
  334. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-investor-context/SKILL.md +0 -0
  335. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-investor-context/agents/openai.yaml +0 -0
  336. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-memory/SKILL.md +0 -0
  337. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-memory/agents/openai.yaml +0 -0
  338. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-allow/SKILL.md +0 -0
  339. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-allow/agents/openai.yaml +0 -0
  340. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-cancel/SKILL.md +0 -0
  341. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-cancel/agents/openai.yaml +0 -0
  342. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-submit/SKILL.md +0 -0
  343. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-submit/agents/openai.yaml +0 -0
  344. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-plan/SKILL.md +0 -0
  345. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-plan/agents/openai.yaml +0 -0
  346. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-server/SKILL.md +0 -0
  347. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-server/agents/openai.yaml +0 -0
  348. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-strategy/SKILL.md +0 -0
  349. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-strategy/agents/openai.yaml +0 -0
  350. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/agents/openai.yaml +0 -0
  351. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/references/context-and-override.md +0 -0
  352. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/references/decision-quality-spine.md +0 -0
  353. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/fundamental-analyst/tcx-fundamental/SKILL.md +0 -0
  354. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/fundamental-analyst/tcx-fundamental/agents/openai.yaml +0 -0
  355. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/instrument-analyst/tcx-instrument/SKILL.md +0 -0
  356. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/instrument-analyst/tcx-instrument/agents/openai.yaml +0 -0
  357. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/judgment-reviewer/tcx-judgment/SKILL.md +0 -0
  358. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/judgment-reviewer/tcx-judgment/agents/openai.yaml +0 -0
  359. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/macro-analyst/tcx-macro/SKILL.md +0 -0
  360. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/macro-analyst/tcx-macro/agents/openai.yaml +0 -0
  361. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/news-analyst/tcx-news/SKILL.md +0 -0
  362. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/news-analyst/tcx-news/agents/openai.yaml +0 -0
  363. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-order-draft/SKILL.md +0 -0
  364. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-order-draft/agents/openai.yaml +0 -0
  365. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-portfolio/SKILL.md +0 -0
  366. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-portfolio/agents/openai.yaml +0 -0
  367. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-order-approve/SKILL.md +0 -0
  368. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-order-approve/agents/openai.yaml +0 -0
  369. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-policy/SKILL.md +0 -0
  370. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-policy/agents/openai.yaml +0 -0
  371. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-risk/SKILL.md +0 -0
  372. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-risk/agents/openai.yaml +0 -0
  373. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-anti-overfit/SKILL.md +0 -0
  374. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-anti-overfit/agents/openai.yaml +0 -0
  375. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-artifact/agents/openai.yaml +0 -0
  376. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-data-qc/SKILL.md +0 -0
  377. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-data-qc/agents/openai.yaml +0 -0
  378. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-evidence/SKILL.md +0 -0
  379. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-evidence/agents/openai.yaml +0 -0
  380. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-forecast/SKILL.md +0 -0
  381. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-forecast/agents/openai.yaml +0 -0
  382. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-scenarios/SKILL.md +0 -0
  383. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-scenarios/agents/openai.yaml +0 -0
  384. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-source-gate/agents/openai.yaml +0 -0
  385. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/technical-analyst/tcx-technical/SKILL.md +0 -0
  386. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/technical-analyst/tcx-technical/agents/openai.yaml +0 -0
  387. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/valuation-analyst/tcx-valuation/SKILL.md +0 -0
  388. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/valuation-analyst/tcx-valuation/agents/openai.yaml +0 -0
  389. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/enforcer/README.md +0 -0
  390. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/gateway/README.md +0 -0
  391. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/server.py +0 -0
  392. {tradingcodex-1.1.1 → tradingcodex-1.1.2}/workspace_templates/modules/tradingcodex-mcp/module.json +0 -0
@@ -2,6 +2,86 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 1.1.2 - 2026-07-17
6
+
7
+ - Add a cross-platform fixed-role calculation surface with generated
8
+ `tcx-calc`/`tcx-calc.cmd` launchers and a content-addressed runtime v2 outside
9
+ Django, MCP, the service home, DB, workspace, and scratch. Its wheel-only
10
+ per-artifact hash resource pins the complete 12-package direct/transitive
11
+ set around NumPy, pandas, SciPy, statsmodels, numpy-financial, and PyArrow.
12
+ The exact basename-only contract replaces host-dependent system
13
+ Python and heredocs, sanitizes environment and temp state before exposing the
14
+ verified runtime, rejects links and compound forms, applies resource bounds,
15
+ blocks child-process and network escape paths in prepared mode, verifies the
16
+ generated launcher hashes in doctor, and remains inside the native Codex OS
17
+ sandbox. Windows scratch now uses `TradingCodexScratch` so it cannot overlap
18
+ the default service home. Native Windows release smoke invokes both generated
19
+ batch launchers through tokenized `cmd /c call` commands so workspace paths
20
+ containing spaces retain their argument boundaries. Pinned packages may load
21
+ native libraries only from absolute paths inside the verified runtime and
22
+ only from an imported runtime-package frame; their process-local ctypes
23
+ bootstrap remains available, including CPython's exact Windows `kernel32`
24
+ import bootstrap. Scratch calls and external, other bare-name, or raw-integer-
25
+ handle loading remain denied. The explicit manual
26
+ release workflow gates the exact wheel through an x86-64 Linux/macOS/Windows
27
+ and Python 3.11-3.14 runtime matrix.
28
+ - Separate ordinary GitHub uploads from deployment work. Normal source CI keeps
29
+ source, framework, and deterministic frontend checks but does not build or
30
+ upload distributions, run release-upgrade or platform matrices, or publish.
31
+ Documentation-only pushes and pull requests skip source CI, GitHub Pages
32
+ becomes manual-only, and package build/publication remains confined to
33
+ explicit Manual Release dispatches.
34
+ - Add immutable Dataset memory with Source Snapshot lineage, explicit typed
35
+ manifests, content-addressed canonical Parquet payloads, append-only license
36
+ withdrawals, bounded card/manifest/profile/slice retrieval, and a managed
37
+ Git ignore rule for payload objects. A rebuildable SQLite+FTS v3 catalog now
38
+ unifies existing research artifacts with Dataset and Calculation objects,
39
+ reprojects only changed files, rebuilds after corruption, and continues the
40
+ legacy JSON exports for one compatibility release. Lineage timestamps cannot
41
+ predate their Source Snapshot or parent Dataset, withdrawn shared payloads
42
+ cannot be profiled, malformed manifests fail closed per object, and L0 cards
43
+ are size-bounded. Internally generated `Path` objects are normalized to the
44
+ portable forward-slash workspace form on native Windows while caller-supplied
45
+ backslash paths remain rejected.
46
+ - Add prepared CalculationSpec/Run memory around `tcx-calc`, including declared
47
+ scratch inputs/outputs, typed finite result envelopes, exact full-fingerprint
48
+ reuse with a current-workflow reuse Run, comparison by requested metric, and
49
+ private-ledger snapshot hash binding without durable input values. The new
50
+ shared `tcx-calculation` skill gives the six financial calculation roles the
51
+ bounded procedure; Head Manager receives card-only planning discovery and
52
+ the viewer remains read-only. Calculation cards also project bounded symbols
53
+ and immutable Dataset relations so instrument-scoped role searches do not
54
+ miss an existing exact calculation. Prepared recording independently
55
+ revalidates script/input/sidecar/runtime/output hashes and schemas; Dataset
56
+ materializations and private central-ledger snapshots are service-bound
57
+ rather than caller-asserted.
58
+ - Route legacy Source Snapshot, ResearchSpec, ReplayManifest, and ExperimentRun
59
+ path construction, regular-file reads, hash verification, and immutable
60
+ writes through the shared Research Object primitives while preserving their
61
+ released v1 hash encoding and IDs without migration.
62
+ - Enable Head Manager live web search for narrow workflow-planning
63
+ reconnaissance. Durable root instructions and `tcx-workflow` keep raw search
64
+ results untrusted and prohibit using them as accepted evidence or synthesis
65
+ support; material facts must be reacquired by producing roles. Portfolio,
66
+ risk, and judgment-review roles explicitly keep web search disabled, and the
67
+ existing Build hook continues to block native web and browser tools.
68
+ - Fix BYOR Codex capability use after the 1.1.1 gate removal. Head Manager and
69
+ fixed roles now distinguish explicit external skill overlays from read-only
70
+ app, connector, MCP, and data tools; inspect the current task's callable
71
+ surface before falling back or declaring a provider unavailable; and treat
72
+ the sanitized inventory as configuration evidence rather than runtime
73
+ callability proof. Capability inventory now names plugin app/MCP/hook
74
+ components from secret-free top-level identifiers and includes compatible
75
+ user skills discovered below `CODEX_HOME/skills`. Generated workspaces no
76
+ longer disable Codex apps, leaving app exposure to user, organization, and
77
+ host policy.
78
+ - Align observed E2E behavior with the workspace contract: fixed roles may edit
79
+ files in their dedicated private scratch root while arbitrary external paths
80
+ remain blocked; viewer write-shaped requests consistently return GET-only
81
+ `405` responses even with CSRF enforcement; managed Brain and Strategy proof
82
+ errors name their own entrypoints; and E2E hooks execute through the generated
83
+ launcher runtime.
84
+
5
85
  ## 1.1.1 - 2026-07-16
6
86
 
7
87
  - Remove the legacy user-capability gate, its CLI and broker-import paths,
@@ -11,5 +11,7 @@ recursive-include frontend *.css *.html *.json *.js *.ts *.tsx
11
11
  recursive-include workspace_templates *
12
12
  recursive-include workspace_templates .*
13
13
  recursive-include tradingcodex_service/static *
14
+ include tradingcodex_cli/calculation-runtime-lock.json
15
+ include tradingcodex_cli/calculation-runtime-requirements.txt
14
16
  recursive-exclude frontend/node_modules *
15
17
  global-exclude *.py[cod]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tradingcodex
3
- Version: 1.1.1
3
+ Version: 1.1.2
4
4
  Summary: Local-first investment operating system for Codex-native research and service-gated execution.
5
5
  Author: TradingCodex Authors
6
6
  License-Expression: Apache-2.0
@@ -29,13 +29,18 @@ Requires-Dist: markdown-it-py<5,>=3
29
29
  Requires-Dist: nh3<0.4,>=0.3
30
30
  Requires-Dist: packaging>=24
31
31
  Requires-Dist: pydantic>=2
32
+ Requires-Dist: pyarrow==25.0.0
32
33
  Requires-Dist: PyYAML>=6
33
34
  Requires-Dist: whitenoise<7,>=6.12
34
35
  Provides-Extra: dev
35
36
  Requires-Dist: pytest>=8; extra == "dev"
36
37
  Dynamic: license-file
37
38
 
38
- # TradingCodex
39
+ <h1 align="center">TradingCodex</h1>
40
+
41
+ <p align="center">
42
+ <img src="assets/tradingcodex-banner-v3.png" alt="TradingCodex transforms fragmented investment tools into a native Codex research workflow" width="100%">
43
+ </p>
39
44
 
40
45
  <div align="center">
41
46
  <a href="https://pypi.org/project/tradingcodex/"><img alt="PyPI" src="https://img.shields.io/pypi/v/tradingcodex?label=PyPI"></a>
@@ -1,4 +1,8 @@
1
- # TradingCodex
1
+ <h1 align="center">TradingCodex</h1>
2
+
3
+ <p align="center">
4
+ <img src="assets/tradingcodex-banner-v3.png" alt="TradingCodex transforms fragmented investment tools into a native Codex research workflow" width="100%">
5
+ </p>
2
6
 
3
7
  <div align="center">
4
8
  <a href="https://pypi.org/project/tradingcodex/"><img alt="PyPI" src="https://img.shields.io/pypi/v/tradingcodex?label=PyPI"></a>
@@ -61,6 +61,7 @@ clear.
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
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
+ | `dataset-calculation-memory` | Stores immutable Dataset manifests/content-addressed Parquet payloads and conclusion-relevant CalculationSpec/Run records, projects them into the rebuildable SQLite+FTS v3 catalog, and reuses only exact successful fingerprints through the wheel-locked finance runtime v2. | `guardrail.information_barrier`, `improvement.research_memory`, `improvement.context_efficiency`, `improvement.validation_feedback` |
64
65
  | `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
66
  | `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
67
  | `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` |
@@ -108,13 +108,20 @@ files are never replaced.
108
108
 
109
109
  ## Maintainer Prerequisites
110
110
 
111
- Release verification uses Python 3.11 and Node 22. The hosted CI budget runs
112
- the complete source, frontend, and package gates once on Python 3.11 instead
113
- of multiplying every push across the supported Python range and native
114
- platforms. Maintainers run additional supported-version or native-platform
115
- checks locally or through an explicit temporary/manual workflow when a change
116
- touches compatibility-sensitive code. Node is a maintainer-only build
117
- dependency.
111
+ Release verification uses Python 3.11 and Node 22 for the complete source and
112
+ frontend gates. After that single quality job builds the candidate
113
+ distribution, the calculation-runtime matrix reuses the exact wheel on x86-64
114
+ Linux, Intel macOS, and native Windows under Python 3.11, 3.12, 3.13, and 3.14.
115
+ Each matrix job provisions the hash-locked runtime and exercises attach,
116
+ doctor, direct package imports, exploratory compatibility, prepared recording,
117
+ and exact reuse. Node remains a maintainer-only build dependency and is not
118
+ installed by matrix workspaces.
119
+
120
+ Calculation runtime changes are compatibility-sensitive even when the main
121
+ source suite is unchanged. Before release, resolve and verify every hash-locked
122
+ wheel for the complete 12-package `finance-*` runtime on supported Python
123
+ 3.11–3.14 macOS, Linux, and native Windows x86-64 targets. Missing wheels fail
124
+ the target; release validation never permits a source build as fallback.
118
125
 
119
126
  Configure PyPI Trusted Publishing for:
120
127
 
@@ -156,6 +163,9 @@ The wheel smoke installs only the built wheel into a clean virtual environment,
156
163
  checks distribution metadata against the runtime version, attaches a workspace,
157
164
  validates native launchers and generated configuration, runs hooks and MCP
158
165
  stdio, exercises the local service, and loads the packaged SPA and assets.
166
+ It also provisions the content-addressed calculation runtime, verifies its
167
+ manifest/lock/launcher hashes and exact imports, and exercises prepared and
168
+ exploratory `tcx-calc` modes without importing Django from the runner.
159
169
  The release-upgrade smoke starts from the published `1.0.2` package, updates
160
170
  that attached workspace with the built candidate wheel, and verifies preserved
161
171
  workspace and runtime identity, user-owned state, and explicit home, DB, and
@@ -171,11 +181,11 @@ also require the disposable-workspace and Codex-native checks documented in
171
181
  ## CI And Release Automation
172
182
 
173
183
  `.github/workflows/ci.yml` is test-only. One Ubuntu/Python 3.11 job runs the
174
- frontend build, complete Python suite and framework gates, clean package
175
- construction, the wheel smoke, and the prior-release update smoke. Guide-only
176
- pushes skip this workflow because
177
- the Pages workflow validates and deploys only static guide files. CI never
178
- publishes.
184
+ frontend determinism check, complete Python suite, and framework gates. It does
185
+ not construct or upload a wheel or source distribution, run release-upgrade or
186
+ native-runtime matrices, or publish anything. Documentation-, guide-, OpenWiki-,
187
+ and asset-only pushes or pull requests skip this workflow. Source-bearing pull
188
+ requests and pushes still receive the normal source-quality checks.
179
189
 
180
190
  `.github/workflows/release.yml` is manual-only. Every run requires an explicit
181
191
  `release_version`. A dry run may build from any selected ref with
@@ -191,11 +201,13 @@ publishes.
191
201
  - the built wheel passes the Ubuntu wheel and prior-release update smokes
192
202
  - the protected `pypi` environment approves Trusted Publishing
193
203
 
194
- The release workflow has one build/verification job. When publication is
195
- requested, one protected PyPI job downloads that exact artifact and uploads it;
196
- no job rebuilds the distribution after verification. Native macOS and Windows
197
- release smokes are local or explicitly scheduled maintainer gates rather than
198
- automatic jobs on every release.
204
+ The release workflow has one build/verification job followed by the required
205
+ Python 3.11-3.14 Linux, Intel-macOS, and native-Windows calculation-runtime
206
+ matrix. When publication is requested, one protected PyPI job downloads that
207
+ exact artifact and uploads it; no job rebuilds the distribution after
208
+ verification. These distribution and platform jobs run only after an explicit
209
+ `Manual Release` dispatch, never because a branch, tag, development commit, or
210
+ documentation change was pushed.
199
211
 
200
212
  ## User Guide Pages
201
213
 
@@ -206,10 +218,11 @@ prompts, workspace viewing, reusable skills, and everyday recovery. The detailed
206
218
  product rules remain canonical in `README.md`, `installation.md`, and `docs/`;
207
219
  the guide links back to those sources rather than replacing them.
208
220
 
209
- `.github/workflows/deploy-user-guide.yml` uses one job to configure, upload,
210
- and deploy only `guidebook/` to GitHub Pages after a push to `main` that changes
211
- the guide or its workflow. It can also be run manually. It does not build or
212
- deploy the Python package, the Django service, or a production Node runtime.
221
+ `.github/workflows/deploy-user-guide.yml` is manual-only. An explicit workflow
222
+ dispatch uses one job to configure, upload, and deploy only `guidebook/` to
223
+ GitHub Pages. A normal branch push or documentation-only change neither deploys
224
+ Pages nor builds or deploys the Python package, Django service, or a production
225
+ Node runtime.
213
226
 
214
227
  GitHub Pages is configured to use **GitHub Actions** as its publishing source.
215
228
  The guide for this repository is published at
@@ -270,7 +283,7 @@ sh "$SOURCE_ROOT/install.sh" \
270
283
  On native Windows PowerShell:
271
284
 
272
285
  ```powershell
273
- $ReleaseVersion = "1.1.1"
286
+ $ReleaseVersion = "1.1.2"
274
287
  $Workspace = Join-Path $env:TEMP "tcx-pypi-$ReleaseVersion"
275
288
  New-Item -ItemType Directory -Force $Workspace | Out-Null
276
289
  Set-Location $Workspace
@@ -60,7 +60,7 @@ design, migration, and validation evidence.
60
60
  - Provider canary regressions prove that submit/cancel results, health details,
61
61
  account-sync exceptions, and successful account display metadata do not
62
62
  reappear in DB rows, API/MCP projections, execution results, or audit events.
63
- - A disposable generated workspace reports nine fixed roles and 32 skills,
63
+ - A disposable generated workspace reports nine fixed roles and 33 skills,
64
64
  contains no retired execution role, and exposes no ungated submit, cancel, or
65
65
  broker status-refresh mutation. Its one execution-risk MCP tool is
66
66
  `use_order_turn_grant`, which has no authority without hook-injected proof.
@@ -23,7 +23,9 @@ The template source tree may be refactored for maintainability, but generated
23
23
  output paths are the v1 release contract. Module ids, module dependency
24
24
  resolution, and rendered paths such as `.codex/config.toml`, `.agents/skills/*`,
25
25
  `.tradingcodex/*`, `trading/*`, and `./tcx` must remain stable unless docs and
26
- tests intentionally change the generated workspace contract.
26
+ tests intentionally change the generated workspace contract. The generated
27
+ `tcx-calc` and `tcx-calc.cmd` names are likewise stable; the cache key behind
28
+ them is content-addressed and may change when the locked runtime changes.
27
29
 
28
30
  Template bodies should remain ordinary source files under
29
31
  `workspace_templates/modules/*/files` whenever the generated artifact is meant
@@ -43,6 +45,7 @@ The generated workspace is ready for:
43
45
  - `./tcx investor-context status`
44
46
  - MCP ledger inspection
45
47
  - research-memory commands
48
+ - prepared and exploratory `tcx-calc` workflows
46
49
  - local React viewer/Admin service access
47
50
  - Codex-native role prompts and skills
48
51
 
@@ -159,8 +162,9 @@ The managed `.gitignore` block excludes local/private state by default:
159
162
  - process, session, and service-status state, including
160
163
  `.tradingcodex/mainagent/session-start.json`;
161
164
  - transient audit streams;
162
- - Python/tool caches, rebuildable research and artifact-catalog indexes, and
163
- native lock files;
165
+ - Python/tool caches, rebuildable research and artifact-catalog indexes,
166
+ content-addressed Dataset payloads under
167
+ `trading/research/datasets/objects/`, and native lock files;
164
168
  - raw secrets, credentials, local environment files, keys, and certificates;
165
169
  and
166
170
  - the private workspace Investor Context plus its per-run sealed snapshot.
@@ -256,21 +260,25 @@ Generated workspaces contain:
256
260
  `agents` tool namespace; every task uses a fresh custom role, a compact
257
261
  assignment envelope, and `fork_turns="none"`; `followup_task` and generic
258
262
  role emulation are forbidden
259
- - role-scoped web search: root `.codex/config.toml` sets
260
- `web_search="disabled"`; only the fundamental, technical, news, macro,
261
- instrument, and valuation custom-agent TOML files override it with
262
- `web_search="live"`. Codex applies the spawned custom-agent config to that
263
- child, so evidence collection stays in producing roles while Head Manager and
264
- downstream portfolio/risk/judgment roles remain unable to
265
- pre-research through live web search
263
+ - role-scoped web search: root `.codex/config.toml` sets `web_search="live"`
264
+ so Head Manager can perform narrow planning reconnaissance before choosing or
265
+ revising the team. Those results are untrusted planning leads, never accepted
266
+ investment evidence, and every material fact must be reacquired by a producing
267
+ role through an authenticated run-local artifact. The six evidence-producing
268
+ custom agents also use live search; portfolio, risk, and judgment-review TOML
269
+ files explicitly set `web_search="disabled"`
266
270
  - fail-closed spawn hook: `PreToolUse` permits `spawn_agent` only for an exact
267
271
  registered `agent_type`, `fork_turns="none"`, an underscore-only task name,
268
272
  and a valid lightweight analysis run id in the compact message; no semantic
269
273
  plan or server task is consulted
270
274
  - native Research permission runtime: `head-manager` and every fixed role
271
- inherit `trading-research`; ordinary shell/Python and credential-free public
272
- HTTP are available, user-owned paths outside `trading/` are readable and
273
- writable, and disposable intermediates stay under `$TRADINGCODEX_SCRATCH`.
275
+ inherit `trading-research`; ordinary shell and credential-free public HTTP
276
+ are available, user-owned paths outside `trading/` are readable and writable,
277
+ and disposable intermediates stay under `$TRADINGCODEX_SCRATCH`. Fixed roles
278
+ stage one direct scratch-local `.py` file with native `apply_patch` and run it
279
+ only through `./tcx-calc <filename.py>` or native Windows
280
+ `.\tcx-calc.cmd <filename.py>`; system Python, heredocs, `-c`, `-m`, paths,
281
+ and extra arguments are outside that contract.
274
282
  The `trading/` tree, control files, TradingCodex runtime/DB, protected
275
283
  artifacts, credentials, local/private destinations, and Unix sockets remain
276
284
  protected. Durable workflow, role-report, and synthesis writes go through
@@ -385,12 +393,13 @@ Generated workspaces contain:
385
393
  - project-local additional agent instructions under `.tradingcodex/agent-instructions/<role>.md`; projection appends them after generated default instructions for `head-manager` and fixed subagents as a managed overlay, without permitting them to replace core role, quality, policy, approval, or execution boundaries
386
394
  - an immutable core/extension footer projected after project-local additional
387
395
  instructions for both `head-manager` and fixed roles
388
- - disabled root web search in `.codex/config.toml` plus live web search only in
389
- the six evidence-producing custom-agent TOML files; this preserves a pristine
390
- public-source baseline without letting Head Manager research around the
391
- dispatch gate, and source/as-of and evidence rules still apply
396
+ - planning-only root live web search in `.codex/config.toml`, with durable Head
397
+ Manager and `tcx-workflow` instructions that prohibit using reconnaissance to
398
+ answer the mandate or support synthesis claims. Live evidence search remains
399
+ enabled for the six producing roles, while portfolio, risk, and judgment
400
+ review explicitly disable it
392
401
  - workspace customization preferences under `.tradingcodex/user/customization.json`, merged over `preferences/customization.json` in the canonical platform home; these files store UX/config metadata and never raw credentials
393
- - thirty-one bundled repo skills across project-scope mainagent skills and
402
+ - thirty-three bundled repo skills across project-scope mainagent skills and
394
403
  subagent skill directories, each with `SKILL.md` frontmatter for document
395
404
  metadata and UI metadata when projected
396
405
  - one compact bundled namespace: every core skill id is `tcx-` plus one suffix
@@ -474,9 +483,10 @@ Generated workspaces contain:
474
483
  copies are not generated
475
484
  - append-only forecast ledger directory at `trading/forecasts/`
476
485
  - immutable point-in-time research directories for specs, replay manifests,
477
- experiments, causal analyses, blind judgment priors/reviews, and a
478
- rebuildable research and cross-artifact catalog indexes under
479
- `trading/research/`
486
+ experiments, causal analyses, blind judgment priors/reviews, Dataset
487
+ manifests/payloads/withdrawals, Calculation specs/runs, and the rebuildable
488
+ SQLite+FTS v3 research-object catalog plus temporary legacy JSON exports
489
+ under `trading/research/`
480
490
  - research-only model-evaluation directories under `trading/evaluations/` for
481
491
  frozen corpora, control/candidate runs, blind reviews, and comparisons
482
492
 
@@ -490,6 +500,19 @@ baseline and must enter a workflow only through explicit user opt-in for that
490
500
  current workflow or a managed activation path that preserves role, quality,
491
501
  policy, approval, and execution boundaries.
492
502
 
503
+ That explicit overlay rule applies to external skill procedures, not to
504
+ read-only app, connector, MCP, or data tools used as evidence. A role whose
505
+ assignment needs external data or preserves a user-named provider first checks
506
+ the current task's callable tool surface and uses the runtime's available
507
+ deferred-tool discovery surface when needed. It attempts the narrowest
508
+ relevant read-only call before a public web fallback. Sanitized capability
509
+ inventory is configuration evidence only:
510
+ installed/enabled state neither proves nor disproves that a tool was loaded
511
+ into the current task. A capability added or changed after task start may
512
+ require a new task or full Codex restart. Generated workspace configuration
513
+ does not override Codex's `features.apps` setting; user, organization, and
514
+ host policy continue to decide whether installed apps are exposed.
515
+
493
516
  Workspace projection and role-local skill lists reduce accidental mixing, but
494
517
  they are not by themselves proof of hard runtime isolation from every
495
518
  host-discoverable skill. Documentation and release claims must not promise hard
@@ -550,6 +573,10 @@ configuration. TradingCodex preserves their non-reserved project entries and
550
573
  directories during update, and Codex exposes them to root and fixed-role agents
551
574
  through normal configuration inheritance. TradingCodex owns only its reserved
552
575
  entries and does not install, review, classify, or recommend user capabilities.
576
+ The read-only inventory covers canonical repository and user `.agents/skills`
577
+ locations plus compatible direct skills below `CODEX_HOME/skills`; plugin
578
+ component records use only top-level app, MCP-server, and hook identifiers and
579
+ never return component bodies or launch settings.
553
580
 
554
581
  ## Attach-First UX
555
582
 
@@ -635,6 +662,45 @@ through the native Windows batch shim. On update it prefers
635
662
  run `.\tcx.cmd` in PowerShell; native Windows validation never treats the Bash
636
663
  shim as executable evidence.
637
664
 
665
+ Calculation does not reuse that launcher or its package-bearing interpreter.
666
+ Attach/update provisions one `finance-*` calculation runtime v2 in a separate,
667
+ content-addressed platform cache and renders `tcx-calc` plus `tcx-calc.cmd`.
668
+ The wheel-only, per-artifact hash resource pins the complete 12-package direct
669
+ and transitive runtime around
670
+ `numpy==2.3.5`, `pandas==2.3.3`, `scipy==1.16.3`,
671
+ `statsmodels==0.14.6`, `numpy-financial==1.0.0`, and
672
+ `pyarrow==25.0.0`; source builds and agent-initiated `pip`/`uv` installation
673
+ are forbidden. A platform without a locked Python 3.11–3.14 wheel fails attach
674
+ clearly instead of compiling a dependency.
675
+
676
+ The launcher accepts one basename-only script already staged in the exact
677
+ workspace scratch, sanitizes environment first, starts Python with `-I -B -S`,
678
+ and then adds only the verified runtime site-packages path. It clears
679
+ service/DB/credential environment variables, maps home and temp to scratch,
680
+ bounds CPU, wall time, file count, file size, and normal text output, and
681
+ rejects links and oversized source. It never imports or starts Django, MCP, the
682
+ service, or the ledger. The runner also denies process creation and replacement,
683
+ shell/system execution, sockets and network access, package bootstrap, and
684
+ dangerous dynamic-library loading. A pinned package may bootstrap a native
685
+ library only when the initiating imported package frame is inside the verified
686
+ content-addressed runtime; a named target must also be an absolute file inside
687
+ that runtime. The same trusted bootstrap may initialize its process-local
688
+ ctypes handle. On Windows, importing ctypes itself requires CPython's exact
689
+ `kernel32` bootstrap name, which is the only trusted bare system-library
690
+ exception. Scratch code, other bare or system-library names, raw integer handles,
691
+ and paths outside that runtime remain denied. This is a constrained calculation
692
+ surface inside the existing Codex OS sandbox, not a new Python security sandbox
693
+ or a Django-owned Python environment.
694
+
695
+ Without a service-authored sidecar, `tcx-calc` is exploratory compatibility
696
+ mode and cannot support an accepted research conclusion. Prepared mode binds
697
+ the script, declared input/output basenames, runtime lock, typed result schema,
698
+ cutoff, and CalculationSpec fingerprint. The runner permits only declared
699
+ scratch input/output plus runtime, stdlib, and required system-library reads,
700
+ and writes a bounded success or failure envelope for
701
+ `record_calculation_run`. `tcx doctor` verifies the launcher hash, runtime
702
+ manifest and lock hashes, exact package versions, and imports.
703
+
638
704
  The POSIX shim resolves its canonical workspace root but does not `cd` back to
639
705
  the same absolute path when it is already running there. This keeps the normal
640
706
  workspace-root contract while avoiding a redundant path re-entry that native
@@ -705,9 +771,11 @@ discovered locator into provenance. Ordinary PyPI
705
771
 
706
772
  Inside a generated workspace, normal `head-manager` and fixed-role analysis
707
773
  threads inherit the `trading-research` permission profile. They can use normal
708
- shell, Python, data tools, and credential-free public HTTP, read ordinary
774
+ shell, data tools, and credential-free public HTTP, read ordinary
709
775
  workspace inputs, and write user-owned files outside `trading/`; disposable
710
- intermediates belong under `$TRADINGCODEX_SCRATCH`. They cannot modify
776
+ intermediates belong under `$TRADINGCODEX_SCRATCH`. Fixed-role Python
777
+ calculations use only the generated scratch-local `tcx-calc` contract. They
778
+ cannot modify
711
779
  `trading/`, generated control files, or the TradingCodex home, DB, attached
712
780
  runtime, protected artifact paths, credential files, local/private
713
781
  destinations, or Unix sockets. Authenticated service/MCP tools own durable
@@ -764,8 +832,12 @@ cache-backed path is writable as `$TRADINGCODEX_SCRATCH` and is projected as
764
832
  `TMPDIR`/`TEMP`/`TMP`; the broader temp roots are denied. The scratch root lives
765
833
  under the platform cache tree (`~/Library/Caches/TradingCodex` on macOS,
766
834
  `$XDG_CACHE_HOME/tradingcodex` or `~/.cache/tradingcodex` on Linux, and
767
- `%LOCALAPPDATA%\TradingCodex` on Windows), not inside the workspace and not in
835
+ `%LOCALAPPDATA%\TradingCodexScratch` on Windows), not inside the workspace and not in
768
836
  the broad OS temporary tree.
837
+ The calculation runtime uses a separate sibling cache
838
+ (`TradingCodexCalculation`/`tradingcodex-calculation`) and is explicitly
839
+ read-only in Research and denied in Build. Neither cache overlaps the service
840
+ home, DB, workspace, Codex home, or the other cache.
769
841
  Credential-bearing home paths such as Codex auth state, SSH/cloud/CLI config,
770
842
  keyrings, credential files, and shell histories are explicitly denied. The
771
843
  narrow read-only `~/.codex/packages/standalone` exception permits the installed
@@ -804,12 +876,12 @@ blocked. Its limited-public
804
876
  network permits credential-free HTTP(S) GET/HEAD and public HTTPS Git retrieval
805
877
  while blocking authenticated requests, bodies/uploads, local/private targets,
806
878
  non-HTTP(S) transports, package installation, fetch-to-execute pipelines,
807
- remote mutation, and broker access. Native `web_search` remains disabled.
808
- The generated `PreToolUse` matcher covers every tool name, then policy remains
809
- a no-op for ordinary Research tools while an active Build grant rejects native
810
- browser, web, HTTP, fetch, and navigation tools,
811
- so retrieval cannot reuse authenticated browser state; Research browser
812
- behavior is unchanged.
879
+ remote mutation, and broker access. Root `web_search="live"` supports only
880
+ Research workflow planning; the generated `PreToolUse` matcher covers every
881
+ tool name, and an active Build grant rejects native web search, browser, web,
882
+ HTTP, fetch, and navigation tools, so retrieval cannot reuse authenticated
883
+ browser state. Policy otherwise remains a no-op for ordinary Research tools;
884
+ Research browser behavior is unchanged.
813
885
  The Build profile uses the proxy's full HTTP transport mode because Git Smart
814
886
  HTTP needs a small POST exchange even for read-only clone/fetch/ls-remote.
815
887
  That does not open general POST access: the Build hook admits only public
@@ -902,13 +974,20 @@ generated bindings are refreshed.
902
974
 
903
975
  TradingCodex owns only the `tradingcodex` MCP entry in project config. Other
904
976
  MCP, plugin, and skill entries are user-owned Codex configuration and survive
905
- update. Root web search stays disabled. The six evidence-producing custom agents may use
906
- their role-local live web override and available native Codex capabilities to gather public
907
- filings, disclosures, news, web sources, and market-data references while the
908
- filesystem remains read-only. TradingCodex does not classify or block those
909
- user-installed capabilities. Codex sandbox, approval, and organization
977
+ update. Root live web search is limited by durable instructions to
978
+ planning-only reconnaissance; raw results cannot support accepted evidence or
979
+ synthesis claims. The six evidence-producing custom agents may use their
980
+ role-local live web setting and available native Codex capabilities to gather
981
+ public filings, disclosures, news, web sources, and market-data references
982
+ while the filesystem remains read-only. TradingCodex does not classify or
983
+ block those user-installed capabilities. Codex sandbox, approval, and organization
910
984
  requirements still apply, while TradingCodex service policy continues to protect
911
985
  its own principals, grants, order proofs, protected state, and execution path.
986
+ Current-task callable tools, not the System inventory or the TradingCodex MCP
987
+ allowlist alone, determine whether an external data call can be made. Agents
988
+ must try the narrow read-only tool before reporting a capability or data field
989
+ unavailable and must state separately whether configuration was discovered and
990
+ whether the current task exposed or successfully called the tool.
912
991
  Broker APIs are attached through provider-driven TradingCodex connector profiles
913
992
  using canonical MCP tools such as `list_broker_adapter_providers`,
914
993
  `render_broker_connector_scaffold`, `register_broker_connector`,
@@ -1412,6 +1491,10 @@ or broker tools.
1412
1491
  Codex-native bootstrap verification:
1413
1492
 
1414
1493
  - `./tcx doctor` checks generated project MCP server shape and role allowlists.
1494
+ - `./tcx doctor` also checks the calculation launcher hash, `finance-*` runtime
1495
+ v2 manifest and lock hashes, all 12 exact package versions/imports, and emits
1496
+ a warning rather than disabling structured catalog search when SQLite lacks
1497
+ FTS5.
1415
1498
  - `./tcx update --no-doctor` verifies the generated update path without running
1416
1499
  the full doctor twice in installer smoke tests.
1417
1500
  - `./tcx mcp stdio` `tools/list` verifies the TradingCodex MCP bridge and tool annotations.
@@ -23,13 +23,25 @@ Head Manager uses `gpt-5.6-sol` with `xhigh` reasoning. Analytical fixed roles
23
23
  use `gpt-5.6-terra` with `high` reasoning. Final provider effects are not a role
24
24
  and run through the deterministic service gateway rather than an execution
25
25
  model. All analysis sessions inherit the project-wide `trading-research`
26
- permission profile: ordinary shell/Python and credential-free public HTTP are
26
+ permission profile: ordinary shell and credential-free public HTTP are
27
27
  available, and user-owned files outside `trading/` are readable and writable.
28
- Disposable intermediates stay under `$TRADINGCODEX_SCRATCH`; `trading/`,
28
+ For deterministic Python calculations, a fixed role stages one direct `.py`
29
+ file under `$TRADINGCODEX_SCRATCH` with `apply_patch` and invokes only the
30
+ platform-native `tcx-calc` launcher. Its content-addressed runtime v2 contains
31
+ only the wheel-locked NumPy, pandas, SciPy, statsmodels, numpy-financial, and
32
+ PyArrow stack and remains separate from Django, MCP, the service runtime, and
33
+ the DB; the Codex OS sandbox remains the authority boundary. Conclusion-
34
+ relevant work uses the prepared CalculationSpec/Run flow, while a direct run
35
+ without its service-authored sidecar is exploratory only. Disposable
36
+ intermediates stay under
37
+ `$TRADINGCODEX_SCRATCH`; `trading/`,
29
38
  generated control files, TradingCodex runtime/DB, protected artifacts,
30
39
  credentials, local/private network targets, and Unix sockets remain protected.
31
- Evidence roles receive live web search through their role config; Head Manager
32
- does not.
40
+ Head Manager receives live web search only for narrow workflow-planning
41
+ reconnaissance. Its raw results are untrusted planning leads and cannot support
42
+ synthesis claims; material facts must be reacquired through producing-role
43
+ artifacts. The six evidence roles retain live search, while portfolio, risk,
44
+ and judgment review explicitly disable it.
33
45
 
34
46
  MultiAgent V2 must expose exact `agent_type`. Every TradingCodex spawn uses a
35
47
  fresh child, compact underscore-only task name, compact assignment, and
@@ -38,6 +50,25 @@ role emulation, and model overrides are invalid. Generated config explicitly
38
50
  enables V2 and uses its session-wide concurrency setting; the incompatible V1
39
51
  `agents.max_threads` key is not projected.
40
52
 
53
+ External skills and external data tools have different runtime semantics.
54
+ Host-global or plugin skills remain explicit current-workflow overlays, while
55
+ read-only app, connector, MCP, and data tools may supply evidence when the task
56
+ requires them. Head Manager preserves a user-named provider in the role brief;
57
+ root and evidence roles inspect the current task's callable surface, use the
58
+ runtime's available deferred-tool discovery surface when needed, and attempt
59
+ the smallest relevant read-only call before public-web fallback. The sanitized System inventory reports
60
+ discovered configuration, not current-task callability.
61
+
62
+ Reusable tabular evidence and calculations remain file-native research
63
+ objects. A Source Snapshot can be promoted to an immutable Dataset manifest
64
+ plus content-addressed Parquet payload when its rows will be reused. Agents
65
+ search cards first, inspect manifest/profile metadata next, and materialize a
66
+ typed scratch slice only when a role needs rows. Exact successful calculation
67
+ fingerprints may be reused, but every reuse creates a current-run record and
68
+ retains the original Run lineage. Head Manager receives discovery cards only;
69
+ the six calculation roles receive the bounded write/execution groups, and the
70
+ viewer remains read-only.
71
+
41
72
  ## Hooks
42
73
 
43
74
  Hooks own only:
@@ -214,8 +245,11 @@ After harness changes:
214
245
  modes, binding/revocation/proof injection, subagent/direct-MCP
215
246
  rejection, ordinary analysis transport behavior, and exact V2 dispatch;
216
247
  5. run a real Korean request and inspect parent/child JSONL, role model, sandbox, and artifacts;
217
- 6. verify viewer workspace selection and sanitized artifact/skill detail;
218
- 7. run focused pytest, Django check, compile, and the full suite.
248
+ 6. with a user-enabled read-only test plugin or MCP, verify current-task tool
249
+ discovery and one narrow successful call, then verify the same prompt reports
250
+ a distinct loading gap when the tool is intentionally absent;
251
+ 7. verify viewer workspace selection and sanitized artifact/skill detail;
252
+ 8. run focused pytest, Django check, compile, and the full suite.
219
253
 
220
254
  See [Codex-Native Orchestration](codex-native-orchestration.md),
221
255
  [Roles, Skills, And Workflows](roles-skills-and-workflows.md), and