tradingcodex 1.2.0__tar.gz → 1.2.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 (403) hide show
  1. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/CHANGELOG.md +20 -0
  2. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/PKG-INFO +1 -1
  3. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/docs/README.md +2 -1
  4. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/docs/data-sources-and-openbb.md +17 -0
  5. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/docs/deployment.md +24 -21
  6. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/docs/generated-workspaces.md +13 -10
  7. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/docs/harness.md +1 -1
  8. tradingcodex-1.2.1/docs/release-readiness.md +70 -0
  9. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/docs/roles-skills-and-workflows.md +9 -4
  10. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/docs/system-architecture.md +1 -1
  11. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/docs/user-facing-skills.md +5 -6
  12. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/docs/validation-and-test-plan.md +12 -8
  13. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_codex_native_orchestration.py +10 -9
  14. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_e2e_user_scenarios.py +3 -15
  15. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_guidebook_contract.py +8 -0
  16. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_investment_brain_provenance.py +3 -8
  17. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_native_execution_gateway.py +2 -0
  18. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_order_turn_grant.py +7 -15
  19. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_platform_runtime.py +2 -0
  20. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_release_contract.py +52 -17
  21. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_skill_runtime_boundaries.py +17 -0
  22. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_source_snapshot_agent_contract.py +8 -0
  23. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex.egg-info/PKG-INFO +1 -1
  24. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/commands/doctor.py +1 -1
  25. tradingcodex-1.2.1/tradingcodex_service/version.py +1 -0
  26. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/codex-base/files/.codex/config.toml +2 -0
  27. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/codex-base/files/.codex/hooks/tradingcodex_hook.py +1 -34
  28. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/codex-base/files/.codex/hooks.json +1 -1
  29. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/codex-base/files/AGENTS.md +6 -3
  30. tradingcodex-1.2.1/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-investor-context/SKILL.md +89 -0
  31. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/SKILL.md +38 -36
  32. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-data-qc/SKILL.md +6 -3
  33. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-source-gate/SKILL.md +17 -0
  34. tradingcodex-1.2.0/docs/release-readiness.md +0 -151
  35. tradingcodex-1.2.0/tradingcodex_service/version.py +0 -1
  36. tradingcodex-1.2.0/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-investor-context/SKILL.md +0 -92
  37. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/CONTRIBUTING.md +0 -0
  38. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/LICENSE +0 -0
  39. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/MANIFEST.in +0 -0
  40. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/NOTICE +0 -0
  41. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/README.md +0 -0
  42. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/TRADEMARKS.md +0 -0
  43. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/__init__.py +0 -0
  44. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/audit/__init__.py +0 -0
  45. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/audit/admin.py +0 -0
  46. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/audit/apps.py +0 -0
  47. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/audit/migrations/0001_v1_initial.py +0 -0
  48. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/audit/migrations/__init__.py +0 -0
  49. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/audit/models.py +0 -0
  50. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/harness/__init__.py +0 -0
  51. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/harness/admin.py +0 -0
  52. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/harness/apps.py +0 -0
  53. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/harness/migrations/0001_v1_initial.py +0 -0
  54. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/harness/migrations/__init__.py +0 -0
  55. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/harness/models.py +0 -0
  56. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/harness/templatetags/__init__.py +0 -0
  57. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/integrations/__init__.py +0 -0
  58. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/integrations/admin.py +0 -0
  59. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/integrations/apps.py +0 -0
  60. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/integrations/migrations/0001_v1_initial.py +0 -0
  61. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/integrations/migrations/__init__.py +0 -0
  62. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/integrations/models.py +0 -0
  63. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/mcp/__init__.py +0 -0
  64. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/mcp/admin.py +0 -0
  65. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/mcp/apps.py +0 -0
  66. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/mcp/migrations/0001_v1_initial.py +0 -0
  67. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/mcp/migrations/0002_remove_external_mcp_gate.py +0 -0
  68. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/mcp/migrations/__init__.py +0 -0
  69. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/mcp/models.py +0 -0
  70. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/mcp/services.py +0 -0
  71. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/orders/__init__.py +0 -0
  72. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/orders/admin.py +0 -0
  73. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/orders/apps.py +0 -0
  74. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/orders/migrations/0001_v1_initial.py +0 -0
  75. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/orders/migrations/__init__.py +0 -0
  76. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/orders/models.py +0 -0
  77. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/orders/services.py +0 -0
  78. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/policy/__init__.py +0 -0
  79. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/policy/admin.py +0 -0
  80. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/policy/apps.py +0 -0
  81. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/policy/migrations/0001_v1_initial.py +0 -0
  82. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/policy/migrations/__init__.py +0 -0
  83. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/policy/models.py +0 -0
  84. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/policy/services.py +0 -0
  85. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/portfolio/__init__.py +0 -0
  86. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/portfolio/admin.py +0 -0
  87. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/portfolio/apps.py +0 -0
  88. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/portfolio/migrations/0001_v1_initial.py +0 -0
  89. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/portfolio/migrations/__init__.py +0 -0
  90. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/apps/portfolio/models.py +0 -0
  91. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/assets/tradingcodex-banner-v1.png +0 -0
  92. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/assets/tradingcodex-banner-v2.png +0 -0
  93. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/assets/tradingcodex-banner-v3.png +0 -0
  94. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/assets/tradingcodex-banner.svg +0 -0
  95. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/docs/codex-native-orchestration.md +0 -0
  96. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/docs/decision-memory.md +0 -0
  97. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/docs/financial-workflow-references.md +0 -0
  98. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/docs/guardrails.md +0 -0
  99. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/docs/improvement-loop.md +0 -0
  100. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/docs/interfaces-and-surfaces.md +0 -0
  101. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/docs/investment-brain-plugins.md +0 -0
  102. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/docs/knowledge-wikis.md +0 -0
  103. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/docs/licensing-and-commercialization.md +0 -0
  104. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/docs/product-direction.md +0 -0
  105. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/docs/research-memory-and-artifacts.md +0 -0
  106. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/docs/safety-policy-and-execution.md +0 -0
  107. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/frontend/index.html +0 -0
  108. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/frontend/package-lock.json +0 -0
  109. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/frontend/package.json +0 -0
  110. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/frontend/src/App.tsx +0 -0
  111. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/frontend/src/ViewerShell.tsx +0 -0
  112. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/frontend/src/api.ts +0 -0
  113. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/frontend/src/domain.ts +0 -0
  114. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/frontend/src/features/LibraryPage.tsx +0 -0
  115. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/frontend/src/features/SystemPage.tsx +0 -0
  116. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/frontend/src/features/WikiPage.tsx +0 -0
  117. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/frontend/src/main.tsx +0 -0
  118. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/frontend/src/navigation.js +0 -0
  119. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/frontend/src/navigation.test.js +0 -0
  120. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/frontend/src/styles.css +0 -0
  121. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/frontend/src/ui.tsx +0 -0
  122. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/frontend/src/viewer-data.js +0 -0
  123. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/frontend/tsconfig.json +0 -0
  124. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/frontend/vite.config.ts +0 -0
  125. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/install.sh +0 -0
  126. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/installation.md +0 -0
  127. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/pyproject.toml +0 -0
  128. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/setup.cfg +0 -0
  129. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_artifact_authentication.py +0 -0
  130. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_artifact_catalog.py +0 -0
  131. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_brain_skill.py +0 -0
  132. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_broker_center_prd.py +0 -0
  133. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_build_contract_metadata.py +0 -0
  134. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_build_hook.py +0 -0
  135. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_build_turn_grant.py +0 -0
  136. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_calculation_runner.py +0 -0
  137. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_clean_v1_cli_audit.py +0 -0
  138. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_codex_capabilities.py +0 -0
  139. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_codex_cli_compat.py +0 -0
  140. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_codex_cli_contract.py +0 -0
  141. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_datasets.py +0 -0
  142. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_decision_memory_core.py +0 -0
  143. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_dev_bootstrap.py +0 -0
  144. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_dynamic_artifact_quality.py +0 -0
  145. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_evaluation_lab_hardening.py +0 -0
  146. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_evaluation_profiles.py +0 -0
  147. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_investment_analysis.py +0 -0
  148. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_investment_brain_cli.py +0 -0
  149. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_investment_brain_prompt_layers.py +0 -0
  150. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_investment_brain_registry.py +0 -0
  151. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_investor_context.py +0 -0
  152. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_knowledge_wikis.py +0 -0
  153. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_mcp_broker_release_health.py +0 -0
  154. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_provider_source_approval.py +0 -0
  155. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_research_forecast_surfaces.py +0 -0
  156. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_research_object_catalog.py +0 -0
  157. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_research_objects.py +0 -0
  158. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_research_spec_profiles.py +0 -0
  159. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_runtime_paths.py +0 -0
  160. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_runtime_profile.py +0 -0
  161. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_security_invariants.py +0 -0
  162. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_v1_migrations.py +0 -0
  163. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_v1_state_integrity.py +0 -0
  164. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_viewer.py +0 -0
  165. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tests/test_workspace_git_contract.py +0 -0
  166. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex.egg-info/SOURCES.txt +0 -0
  167. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex.egg-info/dependency_links.txt +0 -0
  168. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex.egg-info/entry_points.txt +0 -0
  169. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex.egg-info/requires.txt +0 -0
  170. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex.egg-info/top_level.txt +0 -0
  171. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/__init__.py +0 -0
  172. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/__main__.py +0 -0
  173. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/calculation-runtime-lock.json +0 -0
  174. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/calculation-runtime-requirements.txt +0 -0
  175. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/calculation_runner.py +0 -0
  176. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/commands/__init__.py +0 -0
  177. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/commands/bootstrap.py +0 -0
  178. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/commands/build.py +0 -0
  179. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/commands/connectors.py +0 -0
  180. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/commands/data_sources.py +0 -0
  181. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/commands/db.py +0 -0
  182. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/commands/decision.py +0 -0
  183. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/commands/evaluation.py +0 -0
  184. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/commands/forecast.py +0 -0
  185. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/commands/home.py +0 -0
  186. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/commands/investment_brains.py +0 -0
  187. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/commands/investor_context.py +0 -0
  188. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/commands/mcp.py +0 -0
  189. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/commands/orders.py +0 -0
  190. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/commands/policy.py +0 -0
  191. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/commands/profile.py +0 -0
  192. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/commands/research.py +0 -0
  193. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/commands/skills.py +0 -0
  194. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/commands/strategies.py +0 -0
  195. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/commands/subagents.py +0 -0
  196. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/commands/utils.py +0 -0
  197. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/commands/wikis.py +0 -0
  198. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/commands/workflow.py +0 -0
  199. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/commands/workspaces.py +0 -0
  200. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/generator.py +0 -0
  201. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/mcp_stdio.py +0 -0
  202. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/package_source.py +0 -0
  203. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/service_autostart.py +0 -0
  204. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/startup_status.py +0 -0
  205. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_cli/versioning.py +0 -0
  206. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/__init__.py +0 -0
  207. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/admin.py +0 -0
  208. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/api.py +0 -0
  209. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/__init__.py +0 -0
  210. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/agents.py +0 -0
  211. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/analysis_runs.py +0 -0
  212. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/artifact_bindings.py +0 -0
  213. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/artifact_catalog.py +0 -0
  214. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/artifact_quality.py +0 -0
  215. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/audit.py +0 -0
  216. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/brokers.py +0 -0
  217. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/build_gateway.py +0 -0
  218. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/calculations.py +0 -0
  219. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/codex_capabilities.py +0 -0
  220. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/common.py +0 -0
  221. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/data_sources.py +0 -0
  222. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/datasets.py +0 -0
  223. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/decision_packages.py +0 -0
  224. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/evaluation_lab.py +0 -0
  225. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/execution_gateway.py +0 -0
  226. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/forecasting.py +0 -0
  227. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/git_subprocess.py +0 -0
  228. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/harness.py +0 -0
  229. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/health.py +0 -0
  230. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/investment_analysis.py +0 -0
  231. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/investment_brains.py +0 -0
  232. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/investor_context.py +0 -0
  233. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/knowledge_wikis.py +0 -0
  234. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/managed_package_sources.py +0 -0
  235. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/markdown_preview.py +0 -0
  236. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/operator_authority.py +0 -0
  237. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/orders.py +0 -0
  238. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/policy.py +0 -0
  239. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/portfolio.py +0 -0
  240. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/postmortems.py +0 -0
  241. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/research.py +0 -0
  242. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/research_object_catalog.py +0 -0
  243. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/research_objects.py +0 -0
  244. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/research_specs.py +0 -0
  245. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/runtime.py +0 -0
  246. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/skill_invocations.py +0 -0
  247. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/source_snapshots.py +0 -0
  248. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/viewer.py +0 -0
  249. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/wiki_viewer.py +0 -0
  250. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/workspace_git.py +0 -0
  251. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/application/workspaces.py +0 -0
  252. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/asgi.py +0 -0
  253. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/log_safety.py +0 -0
  254. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/mcp_runtime.py +0 -0
  255. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/runtime_profile.py +0 -0
  256. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/settings.py +0 -0
  257. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/static/tradingcodex_admin/favicon.svg +0 -0
  258. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/static/tradingcodex_web/assets/allPaths-DJ5oy6Ot.js +0 -0
  259. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/static/tradingcodex_web/assets/allPathsLoader-CRlwLu1z.js +0 -0
  260. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/static/tradingcodex_web/assets/index-c5e0ZsDr.js +0 -0
  261. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/static/tradingcodex_web/assets/index-y2v9zCLQ.css +0 -0
  262. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/static/tradingcodex_web/assets/paths-BDuITqPr.js +0 -0
  263. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/static/tradingcodex_web/assets/paths-CoispWSv.js +0 -0
  264. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/static/tradingcodex_web/assets/splitPathsBySizeLoader-x57jFwA3.js +0 -0
  265. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/static/tradingcodex_web/index.html +0 -0
  266. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/urls.py +0 -0
  267. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/viewer_api.py +0 -0
  268. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/web.py +0 -0
  269. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/tradingcodex_service/wsgi.py +0 -0
  270. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/__init__.py +0 -0
  271. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/audit/files/.tradingcodex/audit/README.md +0 -0
  272. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/audit/files/trading/audit/.gitkeep +0 -0
  273. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/audit/module.json +0 -0
  274. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/codex-base/files/.codex/prompts/base_instructions/fixed-role.md +0 -0
  275. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/codex-base/files/.codex/prompts/base_instructions/head-manager.md +0 -0
  276. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/codex-base/files/.codex/rules/tradingcodex.rules +0 -0
  277. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/codex-base/files/.tradingcodex/cli.py +0 -0
  278. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/codex-base/files/.tradingcodex/config.yaml +0 -0
  279. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/codex-base/files/pyproject.toml +0 -0
  280. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/codex-base/files/tcx +0 -0
  281. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/codex-base/files/tcx-calc +0 -0
  282. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/codex-base/files/tcx-calc.cmd +0 -0
  283. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/codex-base/files/tcx.cmd +0 -0
  284. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/codex-base/module.json +0 -0
  285. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/policies/restricted-list.yaml +0 -0
  286. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/approval_receipt.schema.json +0 -0
  287. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/audit_event.schema.json +0 -0
  288. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/evidence_pack.schema.json +0 -0
  289. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/execution_result.schema.json +0 -0
  290. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/fundamental_report.schema.json +0 -0
  291. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/news_report.schema.json +0 -0
  292. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/order_ticket.schema.json +0 -0
  293. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/portfolio_review.schema.json +0 -0
  294. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/postmortem_report.schema.json +0 -0
  295. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/research_artifact.schema.json +0 -0
  296. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/risk_report.schema.json +0 -0
  297. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/technical_report.schema.json +0 -0
  298. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/thesis.schema.json +0 -0
  299. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/valuation.schema.json +0 -0
  300. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/enforcement-guardrails/module.json +0 -0
  301. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/fundamental-analyst.toml +0 -0
  302. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/instrument-analyst.toml +0 -0
  303. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/judgment-reviewer.toml +0 -0
  304. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/macro-analyst.toml +0 -0
  305. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/news-analyst.toml +0 -0
  306. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/portfolio-manager.toml +0 -0
  307. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/risk-manager.toml +0 -0
  308. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/technical-analyst.toml +0 -0
  309. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/valuation-analyst.toml +0 -0
  310. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/fixed-subagents/files/.tradingcodex/mainagent/skill-change-proposals/.gitkeep +0 -0
  311. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/fixed-subagents/module.json +0 -0
  312. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/guidance-guardrails/files/.tradingcodex/guidance/guardrails.md +0 -0
  313. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/guidance-guardrails/files/.tradingcodex/guidance/task-quality-checklist.md +0 -0
  314. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/guidance-guardrails/module.json +0 -0
  315. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/information-barriers/files/.tradingcodex/secrets.md +0 -0
  316. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/information-barriers/files/trading/forecasts/.gitkeep +0 -0
  317. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/information-barriers/files/trading/market-data/.gitkeep +0 -0
  318. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/information-barriers/files/trading/portfolio/.gitkeep +0 -0
  319. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/information-barriers/files/trading/reports/fundamental/.gitkeep +0 -0
  320. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/information-barriers/files/trading/reports/instrument/.gitkeep +0 -0
  321. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/information-barriers/files/trading/reports/macro/.gitkeep +0 -0
  322. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/information-barriers/files/trading/reports/news/.gitkeep +0 -0
  323. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/information-barriers/files/trading/reports/policy/.gitkeep +0 -0
  324. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/information-barriers/files/trading/reports/portfolio/.gitkeep +0 -0
  325. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/information-barriers/files/trading/reports/postmortem/.gitkeep +0 -0
  326. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/information-barriers/files/trading/reports/risk/.gitkeep +0 -0
  327. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/information-barriers/files/trading/reports/technical/.gitkeep +0 -0
  328. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/information-barriers/files/trading/reports/valuation/.gitkeep +0 -0
  329. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/information-barriers/files/trading/research/.gitkeep +0 -0
  330. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/information-barriers/module.json +0 -0
  331. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/paper-trading/module.json +0 -0
  332. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-automate/SKILL.md +0 -0
  333. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-automate/agents/openai.yaml +0 -0
  334. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/SKILL.md +0 -0
  335. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/agents/openai.yaml +0 -0
  336. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/references/bundle-contract.md +0 -0
  337. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-build/SKILL.md +0 -0
  338. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-build/agents/openai.yaml +0 -0
  339. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-investor-context/agents/openai.yaml +0 -0
  340. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-memory/SKILL.md +0 -0
  341. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-memory/agents/openai.yaml +0 -0
  342. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-allow/SKILL.md +0 -0
  343. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-allow/agents/openai.yaml +0 -0
  344. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-cancel/SKILL.md +0 -0
  345. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-cancel/agents/openai.yaml +0 -0
  346. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-submit/SKILL.md +0 -0
  347. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-submit/agents/openai.yaml +0 -0
  348. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-plan/SKILL.md +0 -0
  349. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-plan/agents/openai.yaml +0 -0
  350. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-server/SKILL.md +0 -0
  351. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-server/agents/openai.yaml +0 -0
  352. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-strategy/SKILL.md +0 -0
  353. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-strategy/agents/openai.yaml +0 -0
  354. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-wiki/SKILL.md +0 -0
  355. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-wiki/agents/openai.yaml +0 -0
  356. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-wiki/references/bundle-contract.md +0 -0
  357. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/agents/openai.yaml +0 -0
  358. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/fundamental-analyst/tcx-fundamental/SKILL.md +0 -0
  359. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/fundamental-analyst/tcx-fundamental/agents/openai.yaml +0 -0
  360. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/instrument-analyst/tcx-instrument/SKILL.md +0 -0
  361. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/instrument-analyst/tcx-instrument/agents/openai.yaml +0 -0
  362. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/judgment-reviewer/tcx-judgment/SKILL.md +0 -0
  363. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/judgment-reviewer/tcx-judgment/agents/openai.yaml +0 -0
  364. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/macro-analyst/tcx-macro/SKILL.md +0 -0
  365. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/macro-analyst/tcx-macro/agents/openai.yaml +0 -0
  366. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/news-analyst/tcx-news/SKILL.md +0 -0
  367. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/news-analyst/tcx-news/agents/openai.yaml +0 -0
  368. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-order-draft/SKILL.md +0 -0
  369. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-order-draft/agents/openai.yaml +0 -0
  370. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-portfolio/SKILL.md +0 -0
  371. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-portfolio/agents/openai.yaml +0 -0
  372. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-order-approve/SKILL.md +0 -0
  373. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-order-approve/agents/openai.yaml +0 -0
  374. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-policy/SKILL.md +0 -0
  375. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-policy/agents/openai.yaml +0 -0
  376. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-risk/SKILL.md +0 -0
  377. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-risk/agents/openai.yaml +0 -0
  378. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-anti-overfit/SKILL.md +0 -0
  379. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-anti-overfit/agents/openai.yaml +0 -0
  380. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-artifact/SKILL.md +0 -0
  381. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-artifact/agents/openai.yaml +0 -0
  382. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-calculation/SKILL.md +0 -0
  383. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-calculation/agents/openai.yaml +0 -0
  384. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-calculation/references/data-runtime.md +0 -0
  385. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-calculation/references/finance-methods.md +0 -0
  386. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-data-qc/agents/openai.yaml +0 -0
  387. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-evidence/SKILL.md +0 -0
  388. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-evidence/agents/openai.yaml +0 -0
  389. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-forecast/SKILL.md +0 -0
  390. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-forecast/agents/openai.yaml +0 -0
  391. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-scenarios/SKILL.md +0 -0
  392. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-scenarios/agents/openai.yaml +0 -0
  393. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-source-gate/agents/openai.yaml +0 -0
  394. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-source-gate/references/openbb-mcp.md +0 -0
  395. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/technical-analyst/tcx-technical/SKILL.md +0 -0
  396. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/technical-analyst/tcx-technical/agents/openai.yaml +0 -0
  397. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/valuation-analyst/tcx-valuation/SKILL.md +0 -0
  398. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/valuation-analyst/tcx-valuation/agents/openai.yaml +0 -0
  399. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/repo-skills/module.json +0 -0
  400. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/enforcer/README.md +0 -0
  401. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/gateway/README.md +0 -0
  402. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/server.py +0 -0
  403. {tradingcodex-1.2.0 → tradingcodex-1.2.1}/workspace_templates/modules/tradingcodex-mcp/module.json +0 -0
@@ -2,6 +2,26 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 1.2.1 - 2026-07-21
6
+
7
+ - Create or refresh the GitHub Release from the exact verified distributions
8
+ and matching changelog section only after protected PyPI publication succeeds.
9
+ - Run Python and frontend CI gates in parallel, verify releases on Apple Silicon
10
+ macOS, retain temporary distributions for seven days, remove the duplicate
11
+ Ubuntu wheel smoke, and reduce upgrade validation to the latest public
12
+ predecessor-to-candidate path.
13
+
14
+ - Let users author Investor Context directly with native Codex while retaining
15
+ lifecycle protection for enable, disable, and clear operations.
16
+ - Judge research evidence by the claim, intended use, and update cadence rather
17
+ than by an official-versus-available source label; preserve valid partial
18
+ fields and fetch only the missing decision-relevant coverage.
19
+ - Remove the generic analysis prompt-submit hook from ordinary requests while
20
+ retaining grant revocation and reserved safety actions.
21
+ - For short-horizon directional questions, resolve the relevant market session
22
+ and include market-wide or macro expertise when transmission could materially
23
+ change direction, range, or scenario weights without imposing a fixed roster.
24
+
5
25
  ## 1.2.0 - 2026-07-20
6
26
 
7
27
  - Refresh the manual GitHub Pages workflow to the current Node 24 action
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tradingcodex
3
- Version: 1.2.0
3
+ Version: 1.2.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
@@ -84,7 +84,8 @@ into every layer. If two layers disagree, fix the owning `docs/` page first.
84
84
 
85
85
  - [Validation And Test Plan](validation-and-test-plan.md) — complete validation
86
86
  matrix; use the smallest relevant subset during iteration.
87
- - [Release Readiness](release-readiness.md) — release-specific evidence.
87
+ - [Release Readiness](release-readiness.md) — reusable release and publication
88
+ checklist; live status remains in GitHub and PyPI.
88
89
  - [Deployment](deployment.md) — packaging, publication, update, and CI policy.
89
90
  - [Licensing And Commercialization](licensing-and-commercialization.md) — open
90
91
  source, generated workspace, trademark, and legal-review boundaries.
@@ -31,6 +31,23 @@ they are not the user capability in step 2. For structured prices, OHLCV,
31
31
  fundamentals, estimates, or macro series, an available direct OpenBB route is
32
32
  attempted before that fallback unless the user selected another provider.
33
33
 
34
+ Evidence is fit to a claim and intended use rather than accepted or rejected by
35
+ provider class. Original public records remain preferred when a claim requires
36
+ source-of-record authority, but attributable non-primary evidence may support
37
+ the fields and periods it actually covers. Missing or ambiguous coverage limits
38
+ only dependent claims and actions; it does not erase independent valid fields
39
+ or prevent factual and screen-grade research. This preserves the distinction
40
+ between evidence usability and decision or execution readiness without adding
41
+ a provider trust score, allowlist, or routing registry.
42
+
43
+ Freshness is relative to the requested as-of, the source's observation or
44
+ publication cadence, the relevant instrument or venue session, and the claim.
45
+ The latest completed period may be the current usable anchor before another
46
+ period exists. Offset-free provider timestamps remain explicitly ambiguous and
47
+ epoch values are converted once; neither is repaired by inventing a timezone.
48
+ A material missing slice that remains obtainable is fetched from the next
49
+ relevant source or returned to its live owner before an evidence-gap abstention.
50
+
34
51
  The procedure adds point-in-time context only when structured or historical
35
52
  evidence matters to a conclusion. It preserves issuer identity and
36
53
  instrument/venue, unit/currency/timezone, raw-versus-adjusted price policy,
@@ -109,9 +109,9 @@ files are never replaced.
109
109
  ## Maintainer Prerequisites
110
110
 
111
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.
112
+ frontend gates. The release workflow then builds the candidate once, and the
113
+ calculation-runtime matrix reuses that exact wheel on x86-64 Linux, Apple
114
+ Silicon macOS, and native Windows under Python 3.11, 3.12, 3.13, and 3.14.
115
115
  Each matrix job provisions the hash-locked runtime and exercises attach,
116
116
  doctor, direct package imports, exploratory compatibility, prepared recording,
117
117
  and exact reuse. Node remains a maintainer-only build dependency and is not
@@ -156,7 +156,7 @@ find . -maxdepth 1 -name '*.egg-info' -type d -exec rm -rf {} +
156
156
  python3.11 -m build
157
157
  python3.11 -m twine check dist/*
158
158
  python3.11 tests/platform_wheel_smoke.py --wheel-dir dist
159
- python3.11 tests/release_upgrade_smoke.py --wheel-dir dist --from-version 1.0.2
159
+ python3.11 tests/release_upgrade_smoke.py --wheel-dir dist
160
160
  ```
161
161
 
162
162
  The wheel smoke installs only the built wheel into a clean virtual environment,
@@ -166,13 +166,13 @@ stdio, exercises the local service, and loads the packaged SPA and assets.
166
166
  It also provisions the content-addressed calculation runtime, verifies its
167
167
  manifest/lock/launcher hashes and exact imports, and exercises prepared and
168
168
  exploratory `tcx-calc` modes without importing Django from the runner.
169
- The release-upgrade smoke starts from the published `1.0.2` package, updates
170
- that attached workspace with the built candidate wheel, and verifies preserved
171
- workspace and runtime identity, user-owned state, and explicit home, DB, and
172
- service-address settings alongside the refreshed generated contract. It also
173
- preserves the exact provider approval identity and timestamp, compares every
174
- byte in the immutable provider snapshot, and proves that the candidate runtime
175
- loads that approved snapshot after the update.
169
+ The release-upgrade smoke reads the candidate version from the built wheel,
170
+ selects the latest preceding stable release published on PyPI, and verifies
171
+ that single predecessor-to-candidate path. It preserves workspace and runtime
172
+ identity, user-owned state, explicit home, DB, service-address settings, and
173
+ provider approval evidence alongside the refreshed generated contract. Older
174
+ release pairs are not replayed unless a separate migration contract explicitly
175
+ requires them.
176
176
 
177
177
  Harness, role, prompt, skill, hook, policy, MCP, or generated-template changes
178
178
  also require the disposable-workspace and Codex-native checks documented in
@@ -180,8 +180,8 @@ also require the disposable-workspace and Codex-native checks documented in
180
180
 
181
181
  ## CI And Release Automation
182
182
 
183
- `.github/workflows/ci.yml` is test-only. One Ubuntu/Python 3.11 job runs the
184
- frontend determinism check, complete Python suite, and framework gates. It does
183
+ `.github/workflows/ci.yml` is test-only. Parallel Ubuntu jobs run the frontend
184
+ determinism check and the Python 3.11 source/framework gates. It does
185
185
  not construct or upload a wheel or source distribution, run release-upgrade or
186
186
  native-runtime matrices, or publish anything. Documentation-, guide-, OpenWiki-,
187
187
  and asset-only pushes or pull requests skip this workflow. Source-bearing pull
@@ -198,16 +198,18 @@ requests and pushes still receive the normal source-quality checks.
198
198
  - the tagged commit is on `origin/main`
199
199
  - the wheel and source-distribution filenames carry the same version
200
200
  - `dist/` contains exactly that one wheel and one source distribution
201
- - the built wheel passes the Ubuntu wheel and prior-release update smokes
201
+ - the built wheel passes the prior-release update smoke and the platform matrix
202
202
  - the protected `pypi` environment approves Trusted Publishing
203
203
 
204
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
205
+ Python 3.11-3.14 Linux, Apple-Silicon-macOS, and native-Windows calculation-runtime
206
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.
207
+ exact artifact and uploads it. After PyPI succeeds, a GitHub Release job
208
+ downloads the same artifact, uses the matching `CHANGELOG.md` section as its
209
+ notes, and creates or refreshes the tag's wheel and source-distribution assets.
210
+ No job rebuilds the distribution after verification. These distribution and
211
+ platform jobs run only after an explicit `Manual Release` dispatch, never
212
+ because a branch, tag, development commit, or documentation change was pushed.
211
213
 
212
214
  ## User Guide Pages
213
215
 
@@ -246,7 +248,8 @@ The guide for this repository is published at
246
248
  5. In GitHub Actions, run `Manual Release` from that tag with the exact
247
249
  `release_version`. Use `publish_pypi=true` for an approved publication; use
248
250
  the optional `publish_pypi=false` rehearsal when release risk warrants an
249
- additional hosted build.
251
+ additional hosted build. A successful approved publication also creates or
252
+ refreshes the matching GitHub Release from the verified artifacts.
250
253
 
251
254
  Pushing a branch or tag does not publish by itself.
252
255
 
@@ -283,7 +286,7 @@ sh "$SOURCE_ROOT/install.sh" \
283
286
  On native Windows PowerShell:
284
287
 
285
288
  ```powershell
286
- $ReleaseVersion = "1.2.0"
289
+ $ReleaseVersion = "<released-version>"
287
290
  $Workspace = Join-Path $env:TEMP "tcx-pypi-$ReleaseVersion"
288
291
  New-Item -ItemType Directory -Force $Workspace | Out-Null
289
292
  Set-Location $Workspace
@@ -130,10 +130,10 @@ paths, reserved namespaces, and managed block markers define the boundary:
130
130
  | Class | Representative paths | Update contract |
131
131
  | --- | --- | --- |
132
132
  | Release-managed generated files | `AGENTS.md`, `pyproject.toml`, `tcx`, `tcx.cmd`, `.codex/config.toml`, `.codex/agents/*.toml`, `.codex/hooks/*`, `.agents/skills/tcx-*`, bundled `.tradingcodex/subagents/skills/**/tcx-*`, schemas, policies, launchers, generated indexes, and protocol-owned workspace identity/status files | Template and projection files are listed and hashed in the module lock. The lock cannot inventory itself; the immutable workspace manifest and rebuildable bootstrap/status files are separately protocol-owned. Update re-renders or re-projects these files from the current package and canonical state. Direct edits are unsupported and may be replaced. |
133
- | User-selected managed overlays | `.tradingcodex/agent-instructions/*.md`, `.tradingcodex/user/*`, `.agents/skills/strategy-*`, optional role skills, `investment-brains/*` authoring sources, `wiki-packages/*` shareable Wiki sources, `wikis/local`, and installed Brain/Wiki registries, packages, and projections | The owning lifecycle service validates managed state. Update preserves canonical state, user-owned Wiki/Brain sources, local Wiki pages, installed packages, registries, and active projections. |
133
+ | User-selected managed overlays | `.tradingcodex/agent-instructions/*.md`, `.agents/skills/strategy-*`, optional role skills, `investment-brains/*` authoring sources, `wiki-packages/*` shareable Wiki sources, `wikis/local`, and installed Brain/Wiki registries, packages, and projections | The owning lifecycle service validates managed state. Update preserves canonical state, user-owned Wiki/Brain sources, local Wiki pages, installed packages, registries, and active projections. |
134
134
  | Workflow and research artifacts | `trading/research/`, `trading/reports/`, `trading/forecasts/`, `trading/decisions/`, `trading/evaluations/`, postmortems, lesson state, and per-run provenance | These are workspace state, not release payload. Update preserves them; template-owned `.gitkeep` files in the same directories do not transfer ownership of sibling artifacts. |
135
135
  | Local/private runtime state | The external `TRADINGCODEX_HOME`, central DB, ignored session/status/cache/audit files, secrets, credentials, and private Investor Context | These remain outside versionable product state or inside the managed privacy-ignore block. Rebuildable status/cache files may be refreshed; durable authority never moves into the workspace. |
136
- | Ordinary user files | Any non-reserved path not listed in the generated-file inventory | Update leaves them untouched. A file placed in a reserved managed namespace may be rejected as a collision rather than adopted or deleted. |
136
+ | Ordinary user files | `.tradingcodex/user/*` and any non-reserved path not listed in the generated-file inventory | Native workspace tools may update these files within the active permission profile. Update leaves them untouched. A file placed in another reserved managed namespace may be rejected as a collision rather than adopted or deleted. |
137
137
 
138
138
  In particular, `.tradingcodex/config.yaml` is a generated control input despite
139
139
  its name; use the documented customization and lifecycle surfaces instead of
@@ -289,9 +289,9 @@ Generated workspaces contain:
289
289
  - no default ticker team: a broad company prompt does not expand to a fixed
290
290
  analyst roster. Head Manager derives current questions, dispatches only roles
291
291
  justified by them, and reassesses from authenticated evidence
292
- - compact hook context contains session health or an analysis-start hint only;
293
- Head Manager owns run creation, decision-quality, forecast, Investor Context,
294
- and method choices
292
+ - compact hook context contains session health or explicit current-turn
293
+ authority context only; Head Manager owns run creation, decision-quality,
294
+ forecast, Investor Context, and method choices
295
295
  - native role-profile delegation: generated config exposes the nine specialist
296
296
  profiles through MultiAgent V2. Head Manager prefers the exact profile, uses
297
297
  `followup_task` for owner corrections, and follows the canonical role and
@@ -823,7 +823,10 @@ Inside a generated workspace, normal `head-manager` and fixed-role analysis
823
823
  threads inherit the `trading-research` permission profile. They can use normal
824
824
  shell, data tools, and credential-free public HTTP, read ordinary
825
825
  workspace inputs, and write user-owned files outside `trading/`; disposable
826
- intermediates belong under `$TRADINGCODEX_SCRATCH`. Fixed-role Python
826
+ intermediates belong under `$TRADINGCODEX_SCRATCH`. The exact
827
+ `.tradingcodex/user/` subtree is also user-owned and writable so confirmed
828
+ Investor Context can be managed with native file tools; the rest of
829
+ `.tradingcodex/` remains protected. Fixed-role Python
827
830
  calculations use only the generated scratch-local `tcx-calc` contract. They
828
831
  cannot modify
829
832
  `trading/`, generated control files, or the TradingCodex home, DB, attached
@@ -1357,10 +1360,10 @@ because hook policy is an agent-runtime boundary.
1357
1360
  detector participates
1358
1361
  - compact `SessionStart` health context with service status, viewer location,
1359
1362
  and restart posture only
1360
- - compact `UserPromptSubmit` analysis-start hint: Head Manager interprets the
1361
- request directly, keeps narrow answers direct, calls `begin_analysis_run`
1362
- only for a new workflow that needs durable provenance, and reuses the current
1363
- task's run ID when continuing that workflow
1363
+ - ordinary `UserPromptSubmit` turns emit no analysis context. Head Manager
1364
+ interprets the request directly, keeps narrow answers direct, calls
1365
+ `begin_analysis_run` only for a new workflow that needs durable provenance,
1366
+ and reuses the current task's run ID when continuing that workflow
1364
1367
  - audit records TradingCodex safety gates, grants, immediate execution, and
1365
1368
  service failures. `PreToolUse` also records a sanitized external-tool
1366
1369
  observation containing only the exact tool FQN, a secret-free canonical
@@ -76,7 +76,7 @@ source dumps. This is skill guidance, not a provider router or trust engine.
76
76
 
77
77
  The generated hook is deliberately small. It owns:
78
78
 
79
- - compact session health and a stateless analysis-start hint;
79
+ - compact session health and explicit current-turn authority context;
80
80
  - exact parsing of reserved root action prompts;
81
81
  - current-turn proof issue, reservation, and injection for Build, Brain,
82
82
  Strategy, and final order service calls;
@@ -0,0 +1,70 @@
1
+ # Release Readiness
2
+
3
+ This is a reusable release checklist, not a live status page. GitHub Actions,
4
+ GitHub Releases, and PyPI own the current state of a particular release.
5
+
6
+ ## Candidate Contract
7
+
8
+ - `tradingcodex_service/version.py` is the only package-version source.
9
+ - `CHANGELOG.md` contains a matching dated release section.
10
+ - The release tag is the annotated `v<version>` tag on a commit in `main`.
11
+ - One build produces exactly one wheel and one source distribution. Every
12
+ later job downloads those files instead of rebuilding them.
13
+
14
+ ## Required Gates
15
+
16
+ | Area | Evidence required |
17
+ | --- | --- |
18
+ | Source and schema | Full Python suite, Django check, migration dry-run, compileall, and whitespace review pass. |
19
+ | Frontend | Locked tests and build pass; committed static assets are deterministic. |
20
+ | Generated workspace | A disposable development workspace passes doctor, service, launcher, MCP, and affected projection checks. |
21
+ | Native Codex | Prompt, role, skill, hook, or orchestration changes pass the observed acceptance route in the validation plan. |
22
+ | Distribution | Wheel and source distribution pass metadata checks and the clean-wheel smoke. |
23
+ | Platform runtime | The exact wheel passes Python 3.11-3.14 on supported Linux, Apple Silicon macOS, and native Windows runners. |
24
+ | Upgrade | The latest preceding stable PyPI release updates to the candidate while preserving user and service identity. |
25
+ | Publication | Protected PyPI publishing succeeds before the matching GitHub Release is created or refreshed. |
26
+ | Post-publish | A pinned PyPI install passes fresh attach, doctor, metadata, and update checks. |
27
+
28
+ Use the smallest applicable gates while iterating. Run the complete release
29
+ set only for a candidate that is ready to publish.
30
+
31
+ ## Upgrade Gate
32
+
33
+ The default and only routine cross-version check is:
34
+
35
+ ```text
36
+ latest preceding public release -> candidate release
37
+ ```
38
+
39
+ `tests/release_upgrade_smoke.py` reads the candidate version from the built
40
+ wheel and selects the greatest stable PyPI version below it. It does not replay
41
+ every historical release pair. A major-version migration or an explicitly
42
+ supported older direct-upgrade path requires its own documented gate.
43
+
44
+ ```bash
45
+ python3.11 tests/release_upgrade_smoke.py --wheel-dir dist
46
+ ```
47
+
48
+ The smoke verifies preserved workspace identity, paper scope, workspace-native
49
+ artifacts, user-owned Brains and Strategies, connector state, runtime home,
50
+ database override, service address, and provider approval evidence.
51
+
52
+ ## Publish
53
+
54
+ After the candidate gates pass:
55
+
56
+ 1. Merge the release commit to `main` and wait for CI.
57
+ 2. Create and push the annotated `v<version>` tag.
58
+ 3. In GitHub Actions, dispatch `Manual Release` from that tag with
59
+ `release_version=$RELEASE_VERSION` and `publish_pypi=true`.
60
+ 4. Approve the protected `pypi` environment.
61
+ 5. Verify the exact PyPI files and GitHub Release, then run the post-publish
62
+ checks from [Deployment](deployment.md).
63
+
64
+ Pushing a branch or tag alone does not publish anything.
65
+
66
+ ## Claim Boundary
67
+
68
+ Software release readiness does not establish investment performance, return
69
+ improvement, model superiority, or financial safety. Those claims require
70
+ separate evidence and review.
@@ -14,7 +14,7 @@ orchestration, handoffs, overlays, and execution separation.
14
14
  | Fixed-role base prompt | shared child safety, evidence/handoff invariants, compact artifact reads, and gap handling | provider procedure, specialist identity, cross-role scheduling |
15
15
  | Fixed-role TOML | concise specialist identity, unique boundary, web posture, tools, and MCP principal | shared evidence procedure, cross-role scheduling, or model policy |
16
16
  | Role skills | domain procedure and output quality | role identity or authority |
17
- | Hooks | compact session health and stateless analysis hints, reserved action parsing, proof injection, and TradingCodex-owned safety-gate audit | natural-language routing, run/session ownership, child lifecycle, role selection, generic shell/network policy, or lane/team/DAG selection |
17
+ | Hooks | compact session health and current-turn authority context, reserved action parsing, proof injection, and TradingCodex-owned safety-gate audit | natural-language routing, run/session ownership, child lifecycle, role selection, generic shell/network policy, or lane/team/DAG selection |
18
18
  | Django services/MCP | run provenance, principal/tool checks, artifact lineage, policy/order/approval/broker/execution/audit state; one protected turn-grant consumer plus no raw final mutation | investment research orchestration or model-granted execution authority |
19
19
 
20
20
  The current Codex authoring contract follows the official
@@ -143,9 +143,14 @@ readiness limits. It does not impose sentence tags or a template on narrow
143
143
  answers or intermediate role work.
144
144
 
145
145
  Broad analysis is not a fixed template. A factual company profile may need one
146
- fundamental role. A near-term market forecast may begin with macro, technical,
147
- and news roles. A recommendation or portfolio/risk decision usually needs
148
- independent judgment. Evidence can change the next role.
146
+ fundamental role. For a horizon-sensitive directional forecast, Head Manager
147
+ first resolves the relevant market session and separates instrument-specific
148
+ from market-wide drivers. At one market session or less, market-wide regime or
149
+ cross-asset transmission is presumed material unless the request isolates an
150
+ idiosyncratic event; `macro-analyst` owns that question when it could change
151
+ direction, range, or scenario weights. This is a causal-coverage rule, not a
152
+ fixed macro/technical/news roster. A recommendation or portfolio/risk decision
153
+ usually needs independent judgment. Evidence can change the next role.
149
154
 
150
155
  The shared workflow treats inside-out economics, outside-in peers and base
151
156
  rates, upstream/downstream value-chain position, time and expectations, and
@@ -137,7 +137,7 @@ Control-plane maintainability depends on clear ownership:
137
137
  and the three native execution protocol bundles;
138
138
  `.tradingcodex/subagents/skills/*` owns role procedures and output shape.
139
139
  Skill files do not own durable role eligibility or MCP authority.
140
- - `.codex/hooks/*` owns compact session health and analysis-start hints, exact
140
+ - `.codex/hooks/*` owns compact session health and current-turn authority context, exact
141
141
  explicit extension syntax reporting, safety-gate audit, and deterministic interception of
142
142
  the three root-native execution skills plus normalized first-meaningful-line
143
143
  `$tcx-build`, `$tcx-brain`, `$tcx-wiki`, and `$tcx-strategy` contracts. It does not classify natural language, select roles,
@@ -44,7 +44,7 @@ is not a Head Manager entrypoint.
44
44
  | --- | --- | --- |
45
45
  | `tcx-plan` | Clarify scope, constraints, action boundaries, and stop conditions before an immediate or recurring task. | Compact user mandate and missing-field or blocked posture; never a server dispatch plan or selected team. |
46
46
  | `tcx-automate` | Create or update Codex app Scheduled Tasks for simple research, monitoring, recurring analysis, portfolio/status review, order drafting, assisted execution, optional turn-authorized execution, or explicitly delegated turn-authorized Build work. | Schedule plus a durable runtime prompt that invokes the actual work skill, not `tcx-automate` recursively. |
47
- | `tcx-investor-context` | Interview and preview workspace suitability context; persistent status/update/enable/disable/clear is handed to an explicit user-terminal command. | User-confirmed proposed values, exact terminal action, default application state, and remaining gaps. |
47
+ | `tcx-investor-context` | Interview and manage workspace suitability context as an ordinary user-owned file. | Confirmed saved values, default application state, and remaining gaps. |
48
48
 
49
49
  ## Entrypoint Rules
50
50
 
@@ -107,11 +107,10 @@ answer ends with one concise `Wiki used:` line containing only the
107
107
  workspace-relative paths of pages actually used. Current facts that support an
108
108
  investment conclusion still require normal Source Gate verification.
109
109
 
110
- `tcx-investor-context` interviews and previews only the optional
111
- workspace-local suitability file in the Codex turn. Persistent status, update,
112
- enable, disable, or clear is performed by the user with the exact interactive
113
- terminal command returned after confirmation; the skill does not bypass the
114
- Build shell gate. Its persistent enable/disable state is separate from skill availability,
110
+ `tcx-investor-context` reads, interviews for, previews, and updates the optional
111
+ workspace-local suitability file with native workspace file tools after user
112
+ confirmation. This ordinary user-owned file does not require a Build turn, MCP
113
+ service, or terminal handoff. Its persistent enable/disable state is separate from skill availability,
115
114
  strategy rules, and internal paper account scope. It does not run investment
116
115
  analysis or grant authority. Native run binding follows the saved workspace default;
117
116
  the read-only viewer offers no one-run override and never rewrites the file.
@@ -293,21 +293,22 @@ flags and fixed read-only Codex inventory subprocess handling.
293
293
 
294
294
  Calculation runtime release coverage must additionally resolve the complete
295
295
  hash-locked wheel set for Python 3.11, 3.12, 3.13, and 3.14 on supported
296
- macOS, Linux, and native Windows x86-64 targets. Every target verifies the
297
- runtime manifest, launcher hash, exact package imports, one prepared envelope,
298
- and one exploratory compatibility run. Missing wheels must fail attach before
299
- workspace mutation; validation must never permit a source build as fallback.
296
+ Apple Silicon macOS, Linux x86-64, and native Windows x86-64 targets. Every
297
+ target verifies the runtime manifest, launcher hash, exact package imports, one
298
+ prepared envelope, and one exploratory compatibility run. Missing wheels must
299
+ fail attach before workspace mutation; validation must never permit a source
300
+ build as fallback.
300
301
 
301
302
  After building a wheel, run:
302
303
 
303
304
  ```bash
304
305
  python tests/platform_wheel_smoke.py --wheel-dir dist
305
- python tests/release_upgrade_smoke.py --wheel-dir dist --from-version 1.0.2
306
+ python tests/release_upgrade_smoke.py --wheel-dir dist
306
307
  ```
307
308
 
308
309
  GitHub Actions keeps the complete Python/Django suite on Ubuntu/Python 3.11 and
309
310
  then runs that same clean-wheel helper for Python 3.11-3.14 on x86-64 Linux,
310
- Intel macOS, and native Windows. Release publication depends on the full matrix.
311
+ Apple Silicon macOS, and native Windows. Release publication depends on the full matrix.
311
312
  The helper uses
312
313
  `tempfile`, a space-containing wheel path and workspace, parses root plus all
313
314
  role TOML and generated YAML/JSON, runs `tcx` on POSIX or `tcx.cmd` on Windows,
@@ -645,7 +646,7 @@ Scenarios should include:
645
646
  - explicit investor-context updates persist to the workspace Markdown file;
646
647
  enable/disable changes the default, native run binding follows that default,
647
648
  while the viewer offers no one-run override
648
- - Codex `UserPromptSubmit` generated hooks keep analysis-start hints under budget
649
+ - Codex `UserPromptSubmit` generated hooks emit no context for ordinary prompts
649
650
  and never classify meaning, choose roles, or create a run; `begin_analysis_run` seals enabled
650
651
  workspace Investor Context and an exact explicitly invoked `$strategy-*`
651
652
  before Head Manager dispatches any role
@@ -923,7 +924,10 @@ Also install the built wheel in a clean environment and run:
923
924
 
924
925
  ```bash
925
926
  python tests/platform_wheel_smoke.py --wheel-dir dist
926
- python tests/release_upgrade_smoke.py --wheel-dir dist --from-version 1.0.2
927
+ python tests/release_upgrade_smoke.py --wheel-dir dist
927
928
  ```
928
929
 
930
+ The upgrade smoke selects only the latest stable PyPI release preceding the
931
+ candidate version. Historical release pairs are not replayed by default.
932
+
929
933
  Detailed release workflow lives in [deployment.md](./deployment.md).
@@ -329,7 +329,8 @@ def test_generated_hook_leaves_native_child_lifecycle_to_codex(workspace: Path)
329
329
  source = hook.read_text(encoding="utf-8")
330
330
  hooks = json.loads((workspace / ".codex/hooks.json").read_text(encoding="utf-8"))["hooks"]
331
331
  assert set(hooks) == {"SessionStart", "UserPromptSubmit", "PreToolUse", "PermissionRequest", "Stop"}
332
- assert "begin_analysis_run" in source
332
+ assert "analysis_prompt_context" not in source
333
+ assert "tradingcodex-agentic-analysis" not in source
333
334
  assert "classify_starter_request" not in source
334
335
  assert "record_workflow_plan" not in source
335
336
  assert "dispatch_tasks_for_state" not in source
@@ -344,14 +345,7 @@ def test_generated_hook_leaves_native_child_lifecycle_to_codex(workspace: Path)
344
345
  env={**os.environ, "PYTHONPATH": str(ROOT)},
345
346
  check=True,
346
347
  )
347
- context = json.loads(json.loads(prompt.stdout)["hookSpecificOutput"]["additionalContext"])
348
- assert context["orchestration_owner"] == "codex-head-manager"
349
- assert context["run_start_tool"] == "begin_analysis_run"
350
- assert "run_status" not in context
351
- assert "workflow_run_id" not in context
352
- assert "reuse its existing workflow_run_id" in context["planning_instruction"]
353
- assert "lane" not in context
354
- assert "selected_team" not in context
348
+ assert prompt.stdout == ""
355
349
  assert not (workspace / ".tradingcodex/mainagent/session-workflow-runs.json").exists()
356
350
 
357
351
  def pre_spawn(tool_input: dict[str, object]) -> dict[str, object] | None:
@@ -473,6 +467,13 @@ def test_generated_contract_inherits_root_model_and_keeps_role_profiles_optional
473
467
  assert "causal cruxes" in flat_skill
474
468
  assert "dependent repetition is not confirmation" in flat_skill
475
469
  assert "likely to change the answer or readiness" in flat_skill
470
+ assert "material missing slice remains obtainable" in flat_skill
471
+ assert "one bounded follow-up" in flat_skill
472
+ assert "resolve the relevant market session" in flat_skill
473
+ assert "separate instrument-specific from market-wide drivers" in flat_skill
474
+ assert "At one market session or less" in flat_skill
475
+ assert "change direction, range, or scenario weights" in flat_skill
476
+ assert "fixed forecast roster" in flat_skill
476
477
  assert "ALL_TOOLS.filter" not in head + fixed_role + skill
477
478
  assert "record_workflow_plan" not in head + role + skill
478
479
 
@@ -98,9 +98,7 @@ def test_generated_workspace_connects_mock_broker(
98
98
  ) -> None:
99
99
  workspace, env_extra = init_workspace(tmp_path)
100
100
  gate = hook_context(workspace, "Connect mock-json broker. No order, no trading, do not read secrets.", env_extra)
101
- assert gate is not None
102
- assert gate["orchestration_owner"] == "codex-head-manager"
103
- assert "heuristic_lane" not in gate
101
+ assert gate is None
104
102
 
105
103
  write_mock_provider(
106
104
  workspace,
@@ -217,13 +215,7 @@ def test_generated_workspace_codex_cli_user_scenario_matrix(tmp_path: Path) -> N
217
215
  ]
218
216
  for index, prompt in enumerate(prompt_cases):
219
217
  context = hook_context(workspace, prompt, env_extra, via_hooks_json=index == 0)
220
- assert context is not None
221
- assert context["orchestration_owner"] == "codex-head-manager"
222
- assert context["run_start_tool"] == "begin_analysis_run"
223
- assert "heuristic_lane" not in context
224
- assert "heuristic_roles" not in context
225
- assert "starter_prompt" not in context
226
- assert len(json.dumps(context, ensure_ascii=False)) < 1800
218
+ assert context is None
227
219
 
228
220
  assert not (workspace / "trading" / "audit" / "codex-hooks.jsonl").exists()
229
221
 
@@ -463,11 +455,7 @@ def test_long_multi_subagent_artifacts_keep_context_compact_without_lifecycle_st
463
455
 
464
456
  for round_index, (prompt, roles) in enumerate(scenarios, start=1):
465
457
  context = hook_context(workspace, prompt, env_extra)
466
- assert context is not None
467
- assert context["orchestration_owner"] == "codex-head-manager"
468
- assert "heuristic_lane" not in context
469
- assert "starter_prompt" not in context
470
- assert len(json.dumps(context, ensure_ascii=False)) < 1600
458
+ assert context is None
471
459
 
472
460
  for role in roles:
473
461
  artifact_id = f"long-{round_index}-{role}"
@@ -81,3 +81,11 @@ def test_full_desktop_shell_does_not_double_count_viewport_gutters() -> None:
81
81
  assert "max-width: 1460px" in shell_rule
82
82
  assert "padding: 2.75rem 1.5rem" in shell_rule
83
83
  assert "calc((100vw - 1460px) / 2)" not in shell_rule
84
+
85
+
86
+ def test_investor_context_guide_uses_direct_workspace_updates() -> None:
87
+ page = _html(GUIDEBOOK / "skill-investor-context.html")
88
+
89
+ assert "Codex updates the workspace-local Investor Context file directly" in page
90
+ assert "need neither a Build turn nor a terminal command" in page
91
+ assert "gives one exact user-terminal command" not in page
@@ -298,7 +298,7 @@ def test_artifacts_and_decision_memory_derive_immutable_brain_lineage(
298
298
  assert get_decision_snapshot(workspace, "brain-decision")["verification_status"] == "verified"
299
299
 
300
300
 
301
- def test_generated_hook_reports_explicit_syntax_without_semantic_routing(
301
+ def test_generated_hook_leaves_explicit_brain_binding_to_analysis_run(
302
302
  brain_workspace: tuple[Path, dict[str, object]],
303
303
  ) -> None:
304
304
  workspace, _installed = brain_workspace
@@ -312,11 +312,7 @@ def test_generated_hook_reports_explicit_syntax_without_semantic_routing(
312
312
  env={**os.environ, "PYTHONPATH": str(ROOT)},
313
313
  check=True,
314
314
  )
315
- context = json.loads(json.loads(result.stdout)["hookSpecificOutput"]["additionalContext"])
316
- assert context["investment_brain_id"] == BRAIN_ID
317
- assert context["run_start_tool"] == "begin_analysis_run"
318
- assert "selected_team" not in context
319
- assert "DAG" not in context
315
+ assert result.stdout == ""
320
316
 
321
317
 
322
318
  def test_native_skill_loading_and_run_binding_own_brain_references(
@@ -335,8 +331,7 @@ def test_native_skill_loading_and_run_binding_own_brain_references(
335
331
  env={**os.environ, "PYTHONPATH": str(ROOT)},
336
332
  check=True,
337
333
  )
338
- context = json.loads(json.loads(submitted.stdout)["hookSpecificOutput"]["additionalContext"])
339
- assert "workflow_run_id" not in context
334
+ assert submitted.stdout == ""
340
335
  run_id = "analysis-brain-native-skill"
341
336
  run = begin_analysis_run(
342
337
  workspace,
@@ -480,6 +480,7 @@ def test_generated_hook_covers_current_exec_tool_names_and_disables_unified_exec
480
480
  assert research["filesystem"][":workspace_roots"][".git"] == "read"
481
481
  assert research["filesystem"][":workspace_roots"][".gitignore"] == "read"
482
482
  assert research["filesystem"][":workspace_roots"][".agents"] == "read"
483
+ assert research["filesystem"][":workspace_roots"][".tradingcodex/user"] == "write"
483
484
  assert research["filesystem"][":workspace_roots"]["AGENTS.md"] == "read"
484
485
  assert research["filesystem"][":workspace_roots"]["tcx"] == "read"
485
486
  assert research["filesystem"][":workspace_roots"]["tcx.cmd"] == "read"
@@ -497,6 +498,7 @@ def test_generated_hook_covers_current_exec_tool_names_and_disables_unified_exec
497
498
  assert build["filesystem"][":workspace_roots"]["."] == "write"
498
499
  assert build["filesystem"][":workspace_roots"][".tradingcodex/cli.py"] == "read"
499
500
  assert build["filesystem"][":workspace_roots"][".tradingcodex/workspace.json"] == "read"
501
+ assert build["filesystem"][":workspace_roots"][".tradingcodex/user"] == "write"
500
502
  assert build["filesystem"][":workspace_roots"]["trading/reports"] == "deny"
501
503
  assert build["network"] == {
502
504
  "enabled": True,