tradingcodex 1.2.0__tar.gz → 1.2.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/CHANGELOG.md +32 -0
  2. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/PKG-INFO +1 -1
  3. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/docs/README.md +2 -1
  4. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/docs/codex-native-orchestration.md +11 -6
  5. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/docs/data-sources-and-openbb.md +17 -0
  6. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/docs/deployment.md +24 -21
  7. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/docs/generated-workspaces.md +35 -23
  8. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/docs/harness.md +1 -1
  9. tradingcodex-1.2.2/docs/release-readiness.md +70 -0
  10. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/docs/roles-skills-and-workflows.md +15 -7
  11. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/docs/system-architecture.md +1 -1
  12. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/docs/user-facing-skills.md +5 -6
  13. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/docs/validation-and-test-plan.md +24 -16
  14. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/installation.md +5 -5
  15. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_codex_cli_compat.py +8 -4
  16. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_codex_native_orchestration.py +38 -13
  17. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_datasets.py +51 -1
  18. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_e2e_user_scenarios.py +3 -15
  19. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_guidebook_contract.py +8 -0
  20. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_investment_brain_provenance.py +3 -8
  21. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_native_execution_gateway.py +2 -0
  22. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_order_turn_grant.py +7 -15
  23. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_platform_runtime.py +2 -0
  24. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_release_contract.py +53 -17
  25. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_research_forecast_surfaces.py +4 -1
  26. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_skill_runtime_boundaries.py +17 -0
  27. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_source_snapshot_agent_contract.py +8 -0
  28. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex.egg-info/PKG-INFO +1 -1
  29. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/commands/doctor.py +13 -4
  30. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/agents.py +1 -1
  31. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/mcp_runtime.py +25 -0
  32. tradingcodex-1.2.2/tradingcodex_service/version.py +1 -0
  33. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/files/.codex/config.toml +2 -3
  34. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/files/.codex/hooks/tradingcodex_hook.py +1 -34
  35. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/files/.codex/hooks.json +1 -1
  36. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/files/.codex/prompts/base_instructions/fixed-role.md +1 -1
  37. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/files/AGENTS.md +6 -3
  38. tradingcodex-1.2.2/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-investor-context/SKILL.md +89 -0
  39. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/SKILL.md +38 -36
  40. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-data-qc/SKILL.md +6 -3
  41. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-source-gate/SKILL.md +17 -0
  42. tradingcodex-1.2.0/docs/release-readiness.md +0 -151
  43. tradingcodex-1.2.0/tradingcodex_service/version.py +0 -1
  44. tradingcodex-1.2.0/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-investor-context/SKILL.md +0 -92
  45. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/CONTRIBUTING.md +0 -0
  46. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/LICENSE +0 -0
  47. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/MANIFEST.in +0 -0
  48. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/NOTICE +0 -0
  49. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/README.md +0 -0
  50. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/TRADEMARKS.md +0 -0
  51. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/__init__.py +0 -0
  52. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/audit/__init__.py +0 -0
  53. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/audit/admin.py +0 -0
  54. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/audit/apps.py +0 -0
  55. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/audit/migrations/0001_v1_initial.py +0 -0
  56. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/audit/migrations/__init__.py +0 -0
  57. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/audit/models.py +0 -0
  58. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/harness/__init__.py +0 -0
  59. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/harness/admin.py +0 -0
  60. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/harness/apps.py +0 -0
  61. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/harness/migrations/0001_v1_initial.py +0 -0
  62. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/harness/migrations/__init__.py +0 -0
  63. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/harness/models.py +0 -0
  64. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/harness/templatetags/__init__.py +0 -0
  65. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/integrations/__init__.py +0 -0
  66. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/integrations/admin.py +0 -0
  67. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/integrations/apps.py +0 -0
  68. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/integrations/migrations/0001_v1_initial.py +0 -0
  69. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/integrations/migrations/__init__.py +0 -0
  70. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/integrations/models.py +0 -0
  71. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/mcp/__init__.py +0 -0
  72. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/mcp/admin.py +0 -0
  73. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/mcp/apps.py +0 -0
  74. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/mcp/migrations/0001_v1_initial.py +0 -0
  75. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/mcp/migrations/0002_remove_external_mcp_gate.py +0 -0
  76. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/mcp/migrations/__init__.py +0 -0
  77. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/mcp/models.py +0 -0
  78. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/mcp/services.py +0 -0
  79. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/orders/__init__.py +0 -0
  80. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/orders/admin.py +0 -0
  81. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/orders/apps.py +0 -0
  82. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/orders/migrations/0001_v1_initial.py +0 -0
  83. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/orders/migrations/__init__.py +0 -0
  84. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/orders/models.py +0 -0
  85. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/orders/services.py +0 -0
  86. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/policy/__init__.py +0 -0
  87. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/policy/admin.py +0 -0
  88. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/policy/apps.py +0 -0
  89. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/policy/migrations/0001_v1_initial.py +0 -0
  90. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/policy/migrations/__init__.py +0 -0
  91. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/policy/models.py +0 -0
  92. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/policy/services.py +0 -0
  93. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/portfolio/__init__.py +0 -0
  94. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/portfolio/admin.py +0 -0
  95. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/portfolio/apps.py +0 -0
  96. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/portfolio/migrations/0001_v1_initial.py +0 -0
  97. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/portfolio/migrations/__init__.py +0 -0
  98. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/apps/portfolio/models.py +0 -0
  99. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/assets/tradingcodex-banner-v1.png +0 -0
  100. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/assets/tradingcodex-banner-v2.png +0 -0
  101. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/assets/tradingcodex-banner-v3.png +0 -0
  102. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/assets/tradingcodex-banner.svg +0 -0
  103. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/docs/decision-memory.md +0 -0
  104. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/docs/financial-workflow-references.md +0 -0
  105. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/docs/guardrails.md +0 -0
  106. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/docs/improvement-loop.md +0 -0
  107. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/docs/interfaces-and-surfaces.md +0 -0
  108. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/docs/investment-brain-plugins.md +0 -0
  109. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/docs/knowledge-wikis.md +0 -0
  110. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/docs/licensing-and-commercialization.md +0 -0
  111. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/docs/product-direction.md +0 -0
  112. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/docs/research-memory-and-artifacts.md +0 -0
  113. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/docs/safety-policy-and-execution.md +0 -0
  114. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/frontend/index.html +0 -0
  115. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/frontend/package-lock.json +0 -0
  116. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/frontend/package.json +0 -0
  117. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/frontend/src/App.tsx +0 -0
  118. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/frontend/src/ViewerShell.tsx +0 -0
  119. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/frontend/src/api.ts +0 -0
  120. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/frontend/src/domain.ts +0 -0
  121. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/frontend/src/features/LibraryPage.tsx +0 -0
  122. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/frontend/src/features/SystemPage.tsx +0 -0
  123. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/frontend/src/features/WikiPage.tsx +0 -0
  124. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/frontend/src/main.tsx +0 -0
  125. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/frontend/src/navigation.js +0 -0
  126. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/frontend/src/navigation.test.js +0 -0
  127. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/frontend/src/styles.css +0 -0
  128. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/frontend/src/ui.tsx +0 -0
  129. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/frontend/src/viewer-data.js +0 -0
  130. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/frontend/tsconfig.json +0 -0
  131. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/frontend/vite.config.ts +0 -0
  132. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/install.sh +0 -0
  133. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/pyproject.toml +0 -0
  134. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/setup.cfg +0 -0
  135. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_artifact_authentication.py +0 -0
  136. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_artifact_catalog.py +0 -0
  137. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_brain_skill.py +0 -0
  138. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_broker_center_prd.py +0 -0
  139. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_build_contract_metadata.py +0 -0
  140. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_build_hook.py +0 -0
  141. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_build_turn_grant.py +0 -0
  142. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_calculation_runner.py +0 -0
  143. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_clean_v1_cli_audit.py +0 -0
  144. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_codex_capabilities.py +0 -0
  145. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_codex_cli_contract.py +0 -0
  146. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_decision_memory_core.py +0 -0
  147. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_dev_bootstrap.py +0 -0
  148. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_dynamic_artifact_quality.py +0 -0
  149. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_evaluation_lab_hardening.py +0 -0
  150. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_evaluation_profiles.py +0 -0
  151. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_investment_analysis.py +0 -0
  152. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_investment_brain_cli.py +0 -0
  153. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_investment_brain_prompt_layers.py +0 -0
  154. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_investment_brain_registry.py +0 -0
  155. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_investor_context.py +0 -0
  156. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_knowledge_wikis.py +0 -0
  157. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_mcp_broker_release_health.py +0 -0
  158. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_provider_source_approval.py +0 -0
  159. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_research_object_catalog.py +0 -0
  160. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_research_objects.py +0 -0
  161. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_research_spec_profiles.py +0 -0
  162. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_runtime_paths.py +0 -0
  163. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_runtime_profile.py +0 -0
  164. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_security_invariants.py +0 -0
  165. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_v1_migrations.py +0 -0
  166. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_v1_state_integrity.py +0 -0
  167. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_viewer.py +0 -0
  168. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tests/test_workspace_git_contract.py +0 -0
  169. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex.egg-info/SOURCES.txt +0 -0
  170. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex.egg-info/dependency_links.txt +0 -0
  171. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex.egg-info/entry_points.txt +0 -0
  172. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex.egg-info/requires.txt +0 -0
  173. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex.egg-info/top_level.txt +0 -0
  174. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/__init__.py +0 -0
  175. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/__main__.py +0 -0
  176. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/calculation-runtime-lock.json +0 -0
  177. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/calculation-runtime-requirements.txt +0 -0
  178. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/calculation_runner.py +0 -0
  179. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/commands/__init__.py +0 -0
  180. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/commands/bootstrap.py +0 -0
  181. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/commands/build.py +0 -0
  182. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/commands/connectors.py +0 -0
  183. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/commands/data_sources.py +0 -0
  184. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/commands/db.py +0 -0
  185. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/commands/decision.py +0 -0
  186. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/commands/evaluation.py +0 -0
  187. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/commands/forecast.py +0 -0
  188. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/commands/home.py +0 -0
  189. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/commands/investment_brains.py +0 -0
  190. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/commands/investor_context.py +0 -0
  191. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/commands/mcp.py +0 -0
  192. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/commands/orders.py +0 -0
  193. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/commands/policy.py +0 -0
  194. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/commands/profile.py +0 -0
  195. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/commands/research.py +0 -0
  196. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/commands/skills.py +0 -0
  197. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/commands/strategies.py +0 -0
  198. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/commands/subagents.py +0 -0
  199. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/commands/utils.py +0 -0
  200. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/commands/wikis.py +0 -0
  201. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/commands/workflow.py +0 -0
  202. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/commands/workspaces.py +0 -0
  203. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/generator.py +0 -0
  204. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/mcp_stdio.py +0 -0
  205. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/package_source.py +0 -0
  206. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/service_autostart.py +0 -0
  207. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/startup_status.py +0 -0
  208. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_cli/versioning.py +0 -0
  209. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/__init__.py +0 -0
  210. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/admin.py +0 -0
  211. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/api.py +0 -0
  212. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/__init__.py +0 -0
  213. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/analysis_runs.py +0 -0
  214. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/artifact_bindings.py +0 -0
  215. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/artifact_catalog.py +0 -0
  216. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/artifact_quality.py +0 -0
  217. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/audit.py +0 -0
  218. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/brokers.py +0 -0
  219. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/build_gateway.py +0 -0
  220. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/calculations.py +0 -0
  221. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/codex_capabilities.py +0 -0
  222. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/common.py +0 -0
  223. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/data_sources.py +0 -0
  224. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/datasets.py +0 -0
  225. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/decision_packages.py +0 -0
  226. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/evaluation_lab.py +0 -0
  227. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/execution_gateway.py +0 -0
  228. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/forecasting.py +0 -0
  229. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/git_subprocess.py +0 -0
  230. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/harness.py +0 -0
  231. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/health.py +0 -0
  232. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/investment_analysis.py +0 -0
  233. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/investment_brains.py +0 -0
  234. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/investor_context.py +0 -0
  235. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/knowledge_wikis.py +0 -0
  236. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/managed_package_sources.py +0 -0
  237. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/markdown_preview.py +0 -0
  238. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/operator_authority.py +0 -0
  239. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/orders.py +0 -0
  240. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/policy.py +0 -0
  241. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/portfolio.py +0 -0
  242. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/postmortems.py +0 -0
  243. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/research.py +0 -0
  244. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/research_object_catalog.py +0 -0
  245. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/research_objects.py +0 -0
  246. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/research_specs.py +0 -0
  247. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/runtime.py +0 -0
  248. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/skill_invocations.py +0 -0
  249. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/source_snapshots.py +0 -0
  250. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/viewer.py +0 -0
  251. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/wiki_viewer.py +0 -0
  252. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/workspace_git.py +0 -0
  253. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/application/workspaces.py +0 -0
  254. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/asgi.py +0 -0
  255. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/log_safety.py +0 -0
  256. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/runtime_profile.py +0 -0
  257. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/settings.py +0 -0
  258. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/static/tradingcodex_admin/favicon.svg +0 -0
  259. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/static/tradingcodex_web/assets/allPaths-DJ5oy6Ot.js +0 -0
  260. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/static/tradingcodex_web/assets/allPathsLoader-CRlwLu1z.js +0 -0
  261. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/static/tradingcodex_web/assets/index-c5e0ZsDr.js +0 -0
  262. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/static/tradingcodex_web/assets/index-y2v9zCLQ.css +0 -0
  263. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/static/tradingcodex_web/assets/paths-BDuITqPr.js +0 -0
  264. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/static/tradingcodex_web/assets/paths-CoispWSv.js +0 -0
  265. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/static/tradingcodex_web/assets/splitPathsBySizeLoader-x57jFwA3.js +0 -0
  266. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/static/tradingcodex_web/index.html +0 -0
  267. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/urls.py +0 -0
  268. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/viewer_api.py +0 -0
  269. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/web.py +0 -0
  270. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/tradingcodex_service/wsgi.py +0 -0
  271. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/__init__.py +0 -0
  272. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/audit/files/.tradingcodex/audit/README.md +0 -0
  273. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/audit/files/trading/audit/.gitkeep +0 -0
  274. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/audit/module.json +0 -0
  275. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/files/.codex/prompts/base_instructions/head-manager.md +0 -0
  276. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/files/.codex/rules/tradingcodex.rules +0 -0
  277. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/files/.tradingcodex/cli.py +0 -0
  278. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/files/.tradingcodex/config.yaml +0 -0
  279. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/files/pyproject.toml +0 -0
  280. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/files/tcx +0 -0
  281. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/files/tcx-calc +0 -0
  282. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/files/tcx-calc.cmd +0 -0
  283. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/files/tcx.cmd +0 -0
  284. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/codex-base/module.json +0 -0
  285. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/policies/restricted-list.yaml +0 -0
  286. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/approval_receipt.schema.json +0 -0
  287. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/audit_event.schema.json +0 -0
  288. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/evidence_pack.schema.json +0 -0
  289. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/execution_result.schema.json +0 -0
  290. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/fundamental_report.schema.json +0 -0
  291. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/news_report.schema.json +0 -0
  292. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/order_ticket.schema.json +0 -0
  293. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/portfolio_review.schema.json +0 -0
  294. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/postmortem_report.schema.json +0 -0
  295. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/research_artifact.schema.json +0 -0
  296. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/risk_report.schema.json +0 -0
  297. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/technical_report.schema.json +0 -0
  298. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/thesis.schema.json +0 -0
  299. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/valuation.schema.json +0 -0
  300. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/enforcement-guardrails/module.json +0 -0
  301. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/fundamental-analyst.toml +0 -0
  302. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/instrument-analyst.toml +0 -0
  303. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/judgment-reviewer.toml +0 -0
  304. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/macro-analyst.toml +0 -0
  305. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/news-analyst.toml +0 -0
  306. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/portfolio-manager.toml +0 -0
  307. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/risk-manager.toml +0 -0
  308. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/technical-analyst.toml +0 -0
  309. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/valuation-analyst.toml +0 -0
  310. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/fixed-subagents/files/.tradingcodex/mainagent/skill-change-proposals/.gitkeep +0 -0
  311. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/fixed-subagents/module.json +0 -0
  312. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/guidance-guardrails/files/.tradingcodex/guidance/guardrails.md +0 -0
  313. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/guidance-guardrails/files/.tradingcodex/guidance/task-quality-checklist.md +0 -0
  314. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/guidance-guardrails/module.json +0 -0
  315. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/.tradingcodex/secrets.md +0 -0
  316. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/trading/forecasts/.gitkeep +0 -0
  317. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/trading/market-data/.gitkeep +0 -0
  318. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/trading/portfolio/.gitkeep +0 -0
  319. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/trading/reports/fundamental/.gitkeep +0 -0
  320. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/trading/reports/instrument/.gitkeep +0 -0
  321. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/trading/reports/macro/.gitkeep +0 -0
  322. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/trading/reports/news/.gitkeep +0 -0
  323. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/trading/reports/policy/.gitkeep +0 -0
  324. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/trading/reports/portfolio/.gitkeep +0 -0
  325. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/trading/reports/postmortem/.gitkeep +0 -0
  326. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/trading/reports/risk/.gitkeep +0 -0
  327. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/trading/reports/technical/.gitkeep +0 -0
  328. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/trading/reports/valuation/.gitkeep +0 -0
  329. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/files/trading/research/.gitkeep +0 -0
  330. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/information-barriers/module.json +0 -0
  331. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/paper-trading/module.json +0 -0
  332. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-automate/SKILL.md +0 -0
  333. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-automate/agents/openai.yaml +0 -0
  334. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/SKILL.md +0 -0
  335. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/agents/openai.yaml +0 -0
  336. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/references/bundle-contract.md +0 -0
  337. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-build/SKILL.md +0 -0
  338. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-build/agents/openai.yaml +0 -0
  339. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-investor-context/agents/openai.yaml +0 -0
  340. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-memory/SKILL.md +0 -0
  341. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-memory/agents/openai.yaml +0 -0
  342. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-allow/SKILL.md +0 -0
  343. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-allow/agents/openai.yaml +0 -0
  344. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-cancel/SKILL.md +0 -0
  345. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-cancel/agents/openai.yaml +0 -0
  346. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-submit/SKILL.md +0 -0
  347. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-submit/agents/openai.yaml +0 -0
  348. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-plan/SKILL.md +0 -0
  349. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-plan/agents/openai.yaml +0 -0
  350. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-server/SKILL.md +0 -0
  351. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-server/agents/openai.yaml +0 -0
  352. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-strategy/SKILL.md +0 -0
  353. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-strategy/agents/openai.yaml +0 -0
  354. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-wiki/SKILL.md +0 -0
  355. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-wiki/agents/openai.yaml +0 -0
  356. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-wiki/references/bundle-contract.md +0 -0
  357. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/agents/openai.yaml +0 -0
  358. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-artifact/SKILL.md +0 -0
  381. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/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.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-calculation/SKILL.md +0 -0
  383. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/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.2}/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.2}/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.2}/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.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-evidence/SKILL.md +0 -0
  388. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/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.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-forecast/SKILL.md +0 -0
  390. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/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.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-scenarios/SKILL.md +0 -0
  392. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/workspace_templates/modules/repo-skills/module.json +0 -0
  400. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/enforcer/README.md +0 -0
  401. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/gateway/README.md +0 -0
  402. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/server.py +0 -0
  403. {tradingcodex-1.2.0 → tradingcodex-1.2.2}/workspace_templates/modules/tradingcodex-mcp/module.json +0 -0
@@ -2,6 +2,38 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 1.2.2 - 2026-07-22
6
+
7
+ - Validate Codex CLI 0.145.0 as the current reference while retaining 0.144.4
8
+ as the compatibility floor; adopt its stable MultiAgent V2 schema by leaving
9
+ nesting and concurrency to native Codex while preserving strict config,
10
+ permission, hook, MCP, and role-model projection checks.
11
+ - Restore the Head Manager's generated `export_dataset_csv` projection by
12
+ registering its canonical MCP schema, role boundary, and export capability,
13
+ with a generated-config-to-registry regression check.
14
+ - Stop automated GitHub Release notes at the next changelog heading so a
15
+ release contains only its matching version section.
16
+
17
+ ## 1.2.1 - 2026-07-21
18
+
19
+ - Create or refresh the GitHub Release from the exact verified distributions
20
+ and matching changelog section only after protected PyPI publication succeeds.
21
+ - Run Python and frontend CI gates in parallel, verify releases on Apple Silicon
22
+ macOS, retain temporary distributions for seven days, remove the duplicate
23
+ Ubuntu wheel smoke, and reduce upgrade validation to the latest public
24
+ predecessor-to-candidate path.
25
+
26
+ - Let users author Investor Context directly with native Codex while retaining
27
+ lifecycle protection for enable, disable, and clear operations.
28
+ - Judge research evidence by the claim, intended use, and update cadence rather
29
+ than by an official-versus-available source label; preserve valid partial
30
+ fields and fetch only the missing decision-relevant coverage.
31
+ - Remove the generic analysis prompt-submit hook from ordinary requests while
32
+ retaining grant revocation and reserved safety actions.
33
+ - For short-horizon directional questions, resolve the relevant market session
34
+ and include market-wide or macro expertise when transmission could materially
35
+ change direction, range, or scenario weights without imposing a fixed roster.
36
+
5
37
  ## 1.2.0 - 2026-07-20
6
38
 
7
39
  - 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.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
@@ -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.
@@ -81,7 +81,8 @@ conflicts with Strategy.
81
81
 
82
82
  ## Delegation Contract
83
83
 
84
- MultiAgent V2 exposes the generated role profiles with a depth-one boundary.
84
+ MultiAgent V2 exposes the generated role profiles through native Codex
85
+ delegation.
85
86
  Head Manager prefers an exact profile when its specialty is useful and passes a
86
87
  compact role-owned brief rather than the full root history. Role TOML supplies
87
88
  the direct fixed model settings; their values and fallback eligibility are owned
@@ -98,11 +99,15 @@ Use `followup_task` when a live child still owns a correction or clarification.
98
99
  Start another child for a new specialty, an unavailable session, or independent
99
100
  review. Apply the canonical fallback boundary in
100
101
  [Roles, Skills, And Workflows](roles-skills-and-workflows.md). A child cannot
101
- approve, execute, access a broker, or emulate Head Manager. Children never
102
- delegate recursively. Head Manager waits only while a live child has useful work
103
- and reports lifecycle events only from native tool and child-lifecycle results
104
- in the current run. Native wait is wait-any and may serialize with no explicit
105
- target list; that representation is not failure by itself.
102
+ approve, execute, access a broker, or emulate Head Manager. Whether to delegate
103
+ a distinct child-owned subtask further is a native Codex decision, not a
104
+ TradingCodex workflow requirement. Every descendant remains subject to its
105
+ selected projected role and the shared evidence, authority, and safety
106
+ boundaries. Head Manager
107
+ waits only while a live child has useful work and reports lifecycle events only
108
+ from native tool and child-lifecycle results in the current run. Native wait is
109
+ wait-any and may serialize with no explicit target list; that representation is
110
+ not failure by itself.
106
111
 
107
112
  When a Brain applies, the assignment contains the question Head Manager derived
108
113
  from it, not the Brain body or a delegation of Brain authority. Brain content is
@@ -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
@@ -534,7 +534,7 @@ That explicit overlay rule applies to external skill procedures, not to
534
534
  read-only app, connector, MCP, or data tools used as evidence. A role whose
535
535
  assignment needs external data or preserves a user-named provider first checks
536
536
  the current task's callable tool surface and uses the runtime's available
537
- deferred-tool discovery surface when needed. The Codex 0.144.4 reference
537
+ deferred-tool discovery surface when needed. The Codex 0.145.0 reference
538
538
  contract first resolves at most 12 names with
539
539
  `text(ALL_TOOLS.filter(x => x.name.includes("<provider-or-keyword>")).slice(0, 12).map(x => x.name))`.
540
540
  One supported query may combine one to four literal `name.includes`
@@ -586,14 +586,22 @@ runs, hard-failure checks, blind review, and resolved outcomes.
586
586
  Generated `.codex/config.toml` enables MultiAgent V2 with visible spawn
587
587
  metadata and the `agents` tool namespace. It keeps every
588
588
  `.codex/agents/*.toml` role discoverable while setting
589
- `features.multi_agent_v2.enabled = true` and `agents.max_depth = 1`. The
590
- V1-only `agents.max_threads` key is absent because Codex rejects it when V2 is
591
- enabled. Codex owns concurrency and scheduling. Head Manager chooses useful
592
- profiles and follows up with an owner when appropriate. Role eligibility and
593
- fallback are defined in [Roles, Skills, And Workflows](roles-skills-and-workflows.md).
594
- Children cannot recursively dispatch. Root model and reasoning settings are
595
- inherited, and direct fixed-role TOML model settings are projected, but `doctor`
596
- does not duplicate native model availability or lifecycle checks.
589
+ `features.multi_agent_v2.enabled = true`. TradingCodex does not set
590
+ `agents.max_depth`, `agents.max_threads`, or
591
+ `agents.max_concurrent_threads_per_session`; Codex 0.145.0 ignores
592
+ `agents.max_depth` for V2, retains `agents.max_threads` as a compatibility
593
+ alias, and owns nesting, concurrency, and scheduling. Head Manager chooses
594
+ useful profiles and follows up with an owner when appropriate. Role eligibility
595
+ and fallback are defined in [Roles, Skills, And Workflows](roles-skills-and-workflows.md).
596
+ Whether to delegate distinct child-owned work further is a native Codex
597
+ decision, not a TradingCodex workflow requirement. Every descendant remains
598
+ subject to its selected projected role and TradingCodex safety and service
599
+ gates. Root model and reasoning settings are inherited, and direct fixed-role
600
+ TOML model settings are projected, but `doctor` does not duplicate native model
601
+ availability or lifecycle checks. Codex 0.145.0 exposes optional per-spawn model
602
+ and reasoning overrides by default; TradingCodex neither disables nor requires
603
+ them. A spawn without an explicit override follows native inheritance and role
604
+ config resolution.
597
605
 
598
606
  Workspace template modules are deployment projections. Agent and skill
599
607
  ownership comes from the Python agent registry and is projected
@@ -823,7 +831,10 @@ Inside a generated workspace, normal `head-manager` and fixed-role analysis
823
831
  threads inherit the `trading-research` permission profile. They can use normal
824
832
  shell, data tools, and credential-free public HTTP, read ordinary
825
833
  workspace inputs, and write user-owned files outside `trading/`; disposable
826
- intermediates belong under `$TRADINGCODEX_SCRATCH`. Fixed-role Python
834
+ intermediates belong under `$TRADINGCODEX_SCRATCH`. The exact
835
+ `.tradingcodex/user/` subtree is also user-owned and writable so confirmed
836
+ Investor Context can be managed with native file tools; the rest of
837
+ `.tradingcodex/` remains protected. Fixed-role Python
827
838
  calculations use only the generated scratch-local `tcx-calc` contract. They
828
839
  cannot modify
829
840
  `trading/`, generated control files, or the TradingCodex home, DB, attached
@@ -865,10 +876,11 @@ Generated root config sets `default_permissions = "trading-research"` and
865
876
  defines two custom profiles. It deliberately omits legacy `sandbox_mode` from
866
877
  the root and every fixed-role TOML because any loaded `sandbox_mode` overrides
867
878
  custom permission profiles in Codex. This contract requires Codex CLI 0.144.4
868
- or later on a locally supported platform. Version 0.144.4 is the current
879
+ or later on a locally supported platform. Version 0.145.0 is the current
869
880
  release-validation reference for permission profiles, hooks, required MCP,
870
- deferred MCP calls, and the explicit V2 feature table. Older versions fail the
871
- Codex runtime doctor check. These remain version-sensitive
881
+ deferred MCP calls, and the explicit V2 feature table. Versions below the
882
+ compatibility floor fail the Codex runtime doctor check; compatible non-reference
883
+ versions warn. These remain version-sensitive
872
884
  surfaces, so release validation includes strict config/feature inspection and
873
885
  a real native smoke.
874
886
  See the [Codex permissions reference](https://learn.chatgpt.com/docs/permissions).
@@ -1357,10 +1369,10 @@ because hook policy is an agent-runtime boundary.
1357
1369
  detector participates
1358
1370
  - compact `SessionStart` health context with service status, viewer location,
1359
1371
  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
1372
+ - ordinary `UserPromptSubmit` turns emit no analysis context. Head Manager
1373
+ interprets the request directly, keeps narrow answers direct, calls
1374
+ `begin_analysis_run` only for a new workflow that needs durable provenance,
1375
+ and reuses the current task's run ID when continuing that workflow
1364
1376
  - audit records TradingCodex safety gates, grants, immediate execution, and
1365
1377
  service failures. `PreToolUse` also records a sanitized external-tool
1366
1378
  observation containing only the exact tool FQN, a secret-free canonical
@@ -1579,7 +1591,7 @@ Codex-native bootstrap verification:
1579
1591
  workspace. The canonical workspace must
1580
1592
  either be interactively trusted or receive the one-run `projects={...}` trust
1581
1593
  override shown in `AGENTS.md`. A full fixed-role lifecycle smoke must use
1582
- persisted trust for all five generated project hooks. Codex 0.144.4 does not
1594
+ persisted trust for all five generated project hooks. Codex 0.145.0 does not
1583
1595
  carry the one-run `--dangerously-bypass-hook-trust` flag through the role
1584
1596
  config reload used by an exact V2 child, so that flag may be used only for
1585
1597
  root/config diagnostics and is not lifecycle acceptance. It also does not
@@ -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
@@ -221,8 +226,11 @@ Start a fresh child for a new specialty, an unavailable session, or independent
221
226
  review. The Dynamic Workflow fallback boundary applies here. A generic child
222
227
  retains the same research-only scope, evidence standard, no-secret boundary,
223
228
  and no-order boundary; it cannot approve, execute, access a broker, or act as
224
- Head Manager. Children never delegate recursively. Wait only while a live child
225
- has useful work. Native
229
+ Head Manager. Whether to delegate a distinct child-owned subtask further is a
230
+ native Codex decision, not a workflow requirement. Each descendant remains
231
+ subject to its selected projected role and the shared evidence, authority, and
232
+ safety boundaries. Wait only while a live child has useful work.
233
+ Native
226
234
  wait-any may serialize without explicit targets; verify lifecycle through the
227
235
  native tool result and child session events rather than treating that as failure.
228
236
 
@@ -255,7 +263,7 @@ same contract error repeats.
255
263
  The same bounded rule applies across role MCP use: a documented terminal
256
264
  outcome such as stored, updated, existing, reused, or prepared ends that call;
257
265
  an unchanged deterministic failure is never blindly resubmitted. Under the
258
- Codex 0.144.4 deferred-tool contract, unknown-provider resolution starts with
266
+ Codex 0.145.0 deferred-tool contract, unknown-provider resolution starts with
259
267
  the canonical names-only query
260
268
  `text(ALL_TOOLS.filter(x => x.name.includes("<provider-or-keyword>")).slice(0, 12).map(x => x.name))`.
261
269
  One names-only query may combine at most four literal `name.includes`
@@ -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.
@@ -266,8 +266,9 @@ Smoke coverage should verify:
266
266
  Manager and role-owned live research for the six evidence producers without
267
267
  treating a host finance skill as a dependency
268
268
  - generated `.codex/config.toml` explicitly enables MultiAgent V2, reports it
269
- enabled through `codex features list`, leaves concurrency to Codex, and omits
270
- the incompatible V1 `agents.max_threads` key
269
+ enabled through `codex features list`, leaves nesting and concurrency to
270
+ Codex, and omits TradingCodex-owned `agents.max_depth`,
271
+ `agents.max_threads`, and `agents.max_concurrent_threads_per_session`
271
272
  - skill/projection manifests identify the finite managed inventory, declare
272
273
  runtime discovery incomplete, and resolve exact root/role skill paths
273
274
  - two generated workspaces have different workspace ids
@@ -293,21 +294,22 @@ flags and fixed read-only Codex inventory subprocess handling.
293
294
 
294
295
  Calculation runtime release coverage must additionally resolve the complete
295
296
  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.
297
+ Apple Silicon macOS, Linux x86-64, and native Windows x86-64 targets. Every
298
+ target verifies the runtime manifest, launcher hash, exact package imports, one
299
+ prepared envelope, and one exploratory compatibility run. Missing wheels must
300
+ fail attach before workspace mutation; validation must never permit a source
301
+ build as fallback.
300
302
 
301
303
  After building a wheel, run:
302
304
 
303
305
  ```bash
304
306
  python tests/platform_wheel_smoke.py --wheel-dir dist
305
- python tests/release_upgrade_smoke.py --wheel-dir dist --from-version 1.0.2
307
+ python tests/release_upgrade_smoke.py --wheel-dir dist
306
308
  ```
307
309
 
308
310
  GitHub Actions keeps the complete Python/Django suite on Ubuntu/Python 3.11 and
309
311
  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.
312
+ Apple Silicon macOS, and native Windows. Release publication depends on the full matrix.
311
313
  The helper uses
312
314
  `tempfile`, a space-containing wheel path and workspace, parses root plus all
313
315
  role TOML and generated YAML/JSON, runs `tcx` on POSIX or `tcx.cmd` on Windows,
@@ -645,7 +647,7 @@ Scenarios should include:
645
647
  - explicit investor-context updates persist to the workspace Markdown file;
646
648
  enable/disable changes the default, native run binding follows that default,
647
649
  while the viewer offers no one-run override
648
- - Codex `UserPromptSubmit` generated hooks keep analysis-start hints under budget
650
+ - Codex `UserPromptSubmit` generated hooks emit no context for ordinary prompts
649
651
  and never classify meaning, choose roles, or create a run; `begin_analysis_run` seals enabled
650
652
  workspace Investor Context and an exact explicitly invoked `$strategy-*`
651
653
  before Head Manager dispatches any role
@@ -815,7 +817,7 @@ stop without an order, approval, execution, cancellation, broker mutation, or
815
817
  secret action. Record an unavailable Codex/auth blocker rather than replacing this with a
816
818
  claim based only on the fake subprocess test.
817
819
 
818
- Reference acceptance uses Codex CLI 0.144.4. Run
820
+ Reference acceptance uses Codex CLI 0.145.0. Run
819
821
  `python tests/codex_cli_contract.py --workspace <workspace>
820
822
  --require-reference --require-hook-trust` first, after opening the disposable
821
823
  workspace in interactive Codex and persistently trusting all five generated
@@ -825,7 +827,7 @@ configuration, readable sandbox settings, the expected enabled/disabled
825
827
  feature states, and trusted lifecycle hooks. Native `codex exec` smokes must
826
828
  also pass `--strict-config`, so a newly unknown or removed project key fails
827
829
  before model behavior is accepted. Do not use `--ignore-user-config` or
828
- `--dangerously-bypass-hook-trust` for lifecycle acceptance: in 0.144.4 the
830
+ `--dangerously-bypass-hook-trust` for lifecycle acceptance: in 0.145.0 the
829
831
  one-run bypass is not inherited when a V2 child reloads an exact role config.
830
832
  On platforms where a temporary directory has a symlinked alias, resolve the
831
833
  workspace once with `realpath` or `Path.resolve()` and use that same physical
@@ -838,10 +840,13 @@ Run native CLI smokes that inspect observable tool calls and child lifecycle
838
840
  results from Codex. Cover the direct fast path, one exact profile, a same-owner
839
841
  `followup_task`, and a bounded evidence-role generic fallback when a profile is
840
842
  unavailable. Briefs must stay compact, generated TOML must retain the fixed
841
- model settings and the project-wide `trading-research` profile, and no child may
842
- recursively delegate. A missing independent risk or judgment profile must remain
843
- explicit rather than becoming a generic review. Run a sequential two-child smoke plus one artifact-to-synthesis
844
- workflow because lifecycle failures may appear only after the first child exits.
843
+ model settings and the project-wide `trading-research` profile. When native
844
+ Codex delegates a child-owned subtask further, inspect the descendant lifecycle
845
+ and verify that its effective role, model, permission profile, MCP principal,
846
+ evidence boundary, and no-order boundary match the selected role. A missing independent risk or judgment
847
+ profile must remain explicit rather than becoming a generic review. Run a
848
+ sequential two-child smoke plus one artifact-to-synthesis workflow because
849
+ lifecycle failures may appear only after the first child exits.
845
850
 
846
851
  For a full research smoke, inspect root and child JSONL as observable behavior,
847
852
  not private chain of thought. Require a compact bounded child brief; reject broad
@@ -923,7 +928,10 @@ Also install the built wheel in a clean environment and run:
923
928
 
924
929
  ```bash
925
930
  python tests/platform_wheel_smoke.py --wheel-dir dist
926
- python tests/release_upgrade_smoke.py --wheel-dir dist --from-version 1.0.2
931
+ python tests/release_upgrade_smoke.py --wheel-dir dist
927
932
  ```
928
933
 
934
+ The upgrade smoke selects only the latest stable PyPI release preceding the
935
+ candidate version. Historical release pairs are not replayed by default.
936
+
929
937
  Detailed release workflow lives in [deployment.md](./deployment.md).