tradingcodex 1.0.0__tar.gz → 1.0.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 (368) hide show
  1. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/CHANGELOG.md +17 -0
  2. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/PKG-INFO +1 -1
  3. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/docs/README.md +1 -1
  4. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/docs/deployment.md +1 -1
  5. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/docs/execution-without-subagent-plan.md +1 -1
  6. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/docs/generated-workspaces.md +4 -4
  7. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/docs/release-readiness.md +44 -17
  8. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/docs/research-memory-and-artifacts.md +6 -0
  9. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/docs/roles-skills-and-workflows.md +9 -1
  10. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/docs/user-facing-skills.md +5 -1
  11. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/installation.md +1 -1
  12. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_codex_cli_compat.py +4 -4
  13. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_codex_native_orchestration.py +20 -1
  14. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_dynamic_artifact_quality.py +21 -0
  15. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_e2e_user_scenarios.py +3 -2
  16. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_platform_runtime.py +7 -6
  17. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_release_contract.py +4 -4
  18. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_research_forecast_surfaces.py +45 -0
  19. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_security_invariants.py +16 -0
  20. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_skill_runtime_boundaries.py +4 -1
  21. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex.egg-info/PKG-INFO +1 -1
  22. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex.egg-info/SOURCES.txt +2 -0
  23. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/commands/doctor.py +3 -1
  24. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/agents.py +16 -10
  25. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/artifact_quality.py +25 -6
  26. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/forecasting.py +2 -2
  27. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/mcp_runtime.py +88 -11
  28. tradingcodex-1.0.1/tradingcodex_service/version.py +1 -0
  29. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/codex-base/files/.codex/prompts/base_instructions/head-manager.md +1 -0
  30. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/research_artifact.schema.json +33 -3
  31. tradingcodex-1.0.1/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-artifact/SKILL.md +64 -0
  32. tradingcodex-1.0.1/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-artifact/agents/openai.yaml +6 -0
  33. tradingcodex-1.0.0/tradingcodex_service/version.py +0 -1
  34. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/CONTRIBUTING.md +0 -0
  35. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/LICENSE +0 -0
  36. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/MANIFEST.in +0 -0
  37. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/NOTICE +0 -0
  38. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/README.md +0 -0
  39. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/TRADEMARKS.md +0 -0
  40. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/__init__.py +0 -0
  41. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/audit/__init__.py +0 -0
  42. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/audit/admin.py +0 -0
  43. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/audit/apps.py +0 -0
  44. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/audit/migrations/0001_v1_initial.py +0 -0
  45. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/audit/migrations/__init__.py +0 -0
  46. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/audit/models.py +0 -0
  47. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/harness/__init__.py +0 -0
  48. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/harness/admin.py +0 -0
  49. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/harness/apps.py +0 -0
  50. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/harness/migrations/0001_v1_initial.py +0 -0
  51. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/harness/migrations/__init__.py +0 -0
  52. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/harness/models.py +0 -0
  53. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/harness/templatetags/__init__.py +0 -0
  54. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/integrations/__init__.py +0 -0
  55. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/integrations/admin.py +0 -0
  56. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/integrations/apps.py +0 -0
  57. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/integrations/migrations/0001_v1_initial.py +0 -0
  58. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/integrations/migrations/__init__.py +0 -0
  59. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/integrations/models.py +0 -0
  60. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/mcp/__init__.py +0 -0
  61. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/mcp/admin.py +0 -0
  62. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/mcp/apps.py +0 -0
  63. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/mcp/migrations/0001_v1_initial.py +0 -0
  64. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/mcp/migrations/__init__.py +0 -0
  65. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/mcp/models.py +0 -0
  66. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/mcp/services.py +0 -0
  67. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/orders/__init__.py +0 -0
  68. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/orders/admin.py +0 -0
  69. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/orders/apps.py +0 -0
  70. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/orders/migrations/0001_v1_initial.py +0 -0
  71. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/orders/migrations/__init__.py +0 -0
  72. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/orders/models.py +0 -0
  73. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/orders/services.py +0 -0
  74. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/policy/__init__.py +0 -0
  75. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/policy/admin.py +0 -0
  76. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/policy/apps.py +0 -0
  77. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/policy/migrations/0001_v1_initial.py +0 -0
  78. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/policy/migrations/__init__.py +0 -0
  79. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/policy/models.py +0 -0
  80. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/policy/services.py +0 -0
  81. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/portfolio/__init__.py +0 -0
  82. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/portfolio/admin.py +0 -0
  83. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/portfolio/apps.py +0 -0
  84. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/portfolio/migrations/0001_v1_initial.py +0 -0
  85. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/portfolio/migrations/__init__.py +0 -0
  86. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/apps/portfolio/models.py +0 -0
  87. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/assets/tradingcodex-banner.svg +0 -0
  88. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/docs/codex-native-orchestration.md +0 -0
  89. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/docs/components.md +0 -0
  90. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/docs/core-concepts-and-rules.md +0 -0
  91. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/docs/decision-memory.md +0 -0
  92. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/docs/financial-workflow-references.md +0 -0
  93. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/docs/guardrails.md +0 -0
  94. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/docs/harness.md +0 -0
  95. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/docs/improvement-loop.md +0 -0
  96. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/docs/interfaces-and-surfaces.md +0 -0
  97. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/docs/investment-brain-plugins.md +0 -0
  98. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/docs/licensing-and-commercialization.md +0 -0
  99. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/docs/product-direction.md +0 -0
  100. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/docs/safety-policy-and-execution.md +0 -0
  101. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/docs/system-architecture.md +0 -0
  102. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/docs/validation-and-test-plan.md +0 -0
  103. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/frontend/index.html +0 -0
  104. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/frontend/package-lock.json +0 -0
  105. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/frontend/package.json +0 -0
  106. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/frontend/src/App.tsx +0 -0
  107. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/frontend/src/api.ts +0 -0
  108. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/frontend/src/domain.ts +0 -0
  109. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/frontend/src/features/LibraryPage.tsx +0 -0
  110. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/frontend/src/features/SkillsPage.tsx +0 -0
  111. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/frontend/src/features/SystemPage.tsx +0 -0
  112. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/frontend/src/main.tsx +0 -0
  113. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/frontend/src/navigation.js +0 -0
  114. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/frontend/src/navigation.test.js +0 -0
  115. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/frontend/src/styles.css +0 -0
  116. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/frontend/src/ui.tsx +0 -0
  117. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/frontend/src/viewer-data.js +0 -0
  118. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/frontend/tsconfig.json +0 -0
  119. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/frontend/vite.config.ts +0 -0
  120. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/install.sh +0 -0
  121. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/pyproject.toml +0 -0
  122. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/setup.cfg +0 -0
  123. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_artifact_authentication.py +0 -0
  124. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_brain_skill.py +0 -0
  125. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_broker_center_prd.py +0 -0
  126. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_build_contract_metadata.py +0 -0
  127. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_build_hook.py +0 -0
  128. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_build_turn_grant.py +0 -0
  129. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_clean_v1_cli_audit.py +0 -0
  130. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_codex_cli_contract.py +0 -0
  131. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_dashboard_skill.py +0 -0
  132. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_decision_memory_core.py +0 -0
  133. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_dev_bootstrap.py +0 -0
  134. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_evaluation_lab_hardening.py +0 -0
  135. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_evaluation_profiles.py +0 -0
  136. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_investment_analysis.py +0 -0
  137. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_investment_brain_cli.py +0 -0
  138. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_investment_brain_prompt_layers.py +0 -0
  139. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_investment_brain_provenance.py +0 -0
  140. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_investment_brain_registry.py +0 -0
  141. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_investor_context.py +0 -0
  142. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_mcp_broker_release_health.py +0 -0
  143. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_mcp_operator_authority.py +0 -0
  144. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_native_execution_gateway.py +0 -0
  145. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_order_turn_grant.py +0 -0
  146. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_provider_source_approval.py +0 -0
  147. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_research_spec_profiles.py +0 -0
  148. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_runtime_paths.py +0 -0
  149. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_runtime_profile.py +0 -0
  150. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_source_snapshot_agent_contract.py +0 -0
  151. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_v1_migrations.py +0 -0
  152. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_v1_state_integrity.py +0 -0
  153. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_viewer.py +0 -0
  154. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tests/test_workspace_git_contract.py +0 -0
  155. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex.egg-info/dependency_links.txt +0 -0
  156. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex.egg-info/entry_points.txt +0 -0
  157. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex.egg-info/requires.txt +0 -0
  158. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex.egg-info/top_level.txt +0 -0
  159. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/__init__.py +0 -0
  160. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/__main__.py +0 -0
  161. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/commands/__init__.py +0 -0
  162. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/commands/bootstrap.py +0 -0
  163. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/commands/build.py +0 -0
  164. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/commands/connectors.py +0 -0
  165. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/commands/db.py +0 -0
  166. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/commands/decision.py +0 -0
  167. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/commands/evaluation.py +0 -0
  168. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/commands/forecast.py +0 -0
  169. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/commands/home.py +0 -0
  170. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/commands/investment_brains.py +0 -0
  171. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/commands/investor_context.py +0 -0
  172. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/commands/mcp.py +0 -0
  173. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/commands/mode.py +0 -0
  174. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/commands/orders.py +0 -0
  175. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/commands/policy.py +0 -0
  176. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/commands/profile.py +0 -0
  177. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/commands/research.py +0 -0
  178. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/commands/skills.py +0 -0
  179. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/commands/strategies.py +0 -0
  180. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/commands/subagents.py +0 -0
  181. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/commands/utils.py +0 -0
  182. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/commands/workflow.py +0 -0
  183. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/commands/workspaces.py +0 -0
  184. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/generator.py +0 -0
  185. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/mcp_stdio.py +0 -0
  186. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/package_source.py +0 -0
  187. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/service_autostart.py +0 -0
  188. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/startup_status.py +0 -0
  189. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_cli/versioning.py +0 -0
  190. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/__init__.py +0 -0
  191. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/admin.py +0 -0
  192. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/api.py +0 -0
  193. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/__init__.py +0 -0
  194. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/analysis_runs.py +0 -0
  195. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/artifact_bindings.py +0 -0
  196. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/audit.py +0 -0
  197. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/brokers.py +0 -0
  198. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/build_gateway.py +0 -0
  199. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/common.py +0 -0
  200. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/components.py +0 -0
  201. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/context_budget.py +0 -0
  202. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/customization.py +0 -0
  203. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/decision_packages.py +0 -0
  204. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/evaluation_lab.py +0 -0
  205. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/execution_gateway.py +0 -0
  206. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/git_subprocess.py +0 -0
  207. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/harness.py +0 -0
  208. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/health.py +0 -0
  209. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/investment_analysis.py +0 -0
  210. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/investment_brains.py +0 -0
  211. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/investor_context.py +0 -0
  212. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/markdown_preview.py +0 -0
  213. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/operator_authority.py +0 -0
  214. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/orders.py +0 -0
  215. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/policy.py +0 -0
  216. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/portfolio.py +0 -0
  217. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/postmortems.py +0 -0
  218. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/research.py +0 -0
  219. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/research_specs.py +0 -0
  220. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/runtime.py +0 -0
  221. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/runtime_mode.py +0 -0
  222. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/source_snapshots.py +0 -0
  223. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/viewer.py +0 -0
  224. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/workspace_git.py +0 -0
  225. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/application/workspaces.py +0 -0
  226. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/asgi.py +0 -0
  227. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/log_safety.py +0 -0
  228. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/runtime_profile.py +0 -0
  229. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/settings.py +0 -0
  230. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/static/tradingcodex_admin/favicon.svg +0 -0
  231. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/static/tradingcodex_web/assets/index-CFoXYUtq.js +0 -0
  232. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/static/tradingcodex_web/assets/index-DYzj_xRR.css +0 -0
  233. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/static/tradingcodex_web/index.html +0 -0
  234. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/urls.py +0 -0
  235. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/viewer_api.py +0 -0
  236. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/web.py +0 -0
  237. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/tradingcodex_service/wsgi.py +0 -0
  238. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/__init__.py +0 -0
  239. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/audit/files/.tradingcodex/audit/README.md +0 -0
  240. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/audit/files/trading/audit/.gitkeep +0 -0
  241. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/audit/module.json +0 -0
  242. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/codex-base/files/.codex/config.toml +0 -0
  243. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/codex-base/files/.codex/hooks/tradingcodex_hook.py +0 -0
  244. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/codex-base/files/.codex/hooks.json +0 -0
  245. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/codex-base/files/.codex/rules/tradingcodex.rules +0 -0
  246. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/codex-base/files/.tradingcodex/cli.py +0 -0
  247. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/codex-base/files/.tradingcodex/config.yaml +0 -0
  248. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/codex-base/files/AGENTS.md +0 -0
  249. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/codex-base/files/pyproject.toml +0 -0
  250. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/codex-base/files/tcx +0 -0
  251. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/codex-base/files/tcx.cmd +0 -0
  252. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/codex-base/module.json +0 -0
  253. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/policies/restricted-list.yaml +0 -0
  254. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/approval_receipt.schema.json +0 -0
  255. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/audit_event.schema.json +0 -0
  256. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/evidence_pack.schema.json +0 -0
  257. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/execution_result.schema.json +0 -0
  258. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/fundamental_report.schema.json +0 -0
  259. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/news_report.schema.json +0 -0
  260. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/order_ticket.schema.json +0 -0
  261. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/portfolio_review.schema.json +0 -0
  262. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/postmortem_report.schema.json +0 -0
  263. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/risk_report.schema.json +0 -0
  264. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/technical_report.schema.json +0 -0
  265. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/thesis.schema.json +0 -0
  266. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/valuation.schema.json +0 -0
  267. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/enforcement-guardrails/module.json +0 -0
  268. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/fundamental-analyst.toml +0 -0
  269. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/instrument-analyst.toml +0 -0
  270. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/judgment-reviewer.toml +0 -0
  271. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/macro-analyst.toml +0 -0
  272. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/news-analyst.toml +0 -0
  273. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/portfolio-manager.toml +0 -0
  274. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/risk-manager.toml +0 -0
  275. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/technical-analyst.toml +0 -0
  276. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/valuation-analyst.toml +0 -0
  277. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/fixed-subagents/files/.tradingcodex/mainagent/skill-change-proposals/.gitkeep +0 -0
  278. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/fixed-subagents/module.json +0 -0
  279. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/guidance-guardrails/files/.tradingcodex/guidance/guardrails.md +0 -0
  280. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/guidance-guardrails/files/.tradingcodex/guidance/task-quality-checklist.md +0 -0
  281. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/guidance-guardrails/module.json +0 -0
  282. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/information-barriers/files/.tradingcodex/secrets.md +0 -0
  283. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/information-barriers/files/trading/forecasts/.gitkeep +0 -0
  284. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/information-barriers/files/trading/market-data/.gitkeep +0 -0
  285. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/information-barriers/files/trading/portfolio/.gitkeep +0 -0
  286. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/information-barriers/files/trading/reports/fundamental/.gitkeep +0 -0
  287. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/information-barriers/files/trading/reports/instrument/.gitkeep +0 -0
  288. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/information-barriers/files/trading/reports/macro/.gitkeep +0 -0
  289. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/information-barriers/files/trading/reports/news/.gitkeep +0 -0
  290. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/information-barriers/files/trading/reports/policy/.gitkeep +0 -0
  291. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/information-barriers/files/trading/reports/portfolio/.gitkeep +0 -0
  292. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/information-barriers/files/trading/reports/postmortem/.gitkeep +0 -0
  293. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/information-barriers/files/trading/reports/risk/.gitkeep +0 -0
  294. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/information-barriers/files/trading/reports/technical/.gitkeep +0 -0
  295. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/information-barriers/files/trading/reports/valuation/.gitkeep +0 -0
  296. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/information-barriers/files/trading/research/.gitkeep +0 -0
  297. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/information-barriers/module.json +0 -0
  298. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/paper-trading/module.json +0 -0
  299. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-automate/SKILL.md +0 -0
  300. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-automate/agents/openai.yaml +0 -0
  301. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/SKILL.md +0 -0
  302. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/agents/openai.yaml +0 -0
  303. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/references/bundle-contract.md +0 -0
  304. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-build/SKILL.md +0 -0
  305. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-build/agents/openai.yaml +0 -0
  306. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-dashboard/SKILL.md +0 -0
  307. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-dashboard/agents/openai.yaml +0 -0
  308. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-investor-context/SKILL.md +0 -0
  309. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-investor-context/agents/openai.yaml +0 -0
  310. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-memory/SKILL.md +0 -0
  311. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-memory/agents/openai.yaml +0 -0
  312. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-allow/SKILL.md +0 -0
  313. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-allow/agents/openai.yaml +0 -0
  314. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-cancel/SKILL.md +0 -0
  315. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-cancel/agents/openai.yaml +0 -0
  316. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-submit/SKILL.md +0 -0
  317. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-submit/agents/openai.yaml +0 -0
  318. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-plan/SKILL.md +0 -0
  319. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-plan/agents/openai.yaml +0 -0
  320. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-server/SKILL.md +0 -0
  321. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-server/agents/openai.yaml +0 -0
  322. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-strategy/SKILL.md +0 -0
  323. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-strategy/agents/openai.yaml +0 -0
  324. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/SKILL.md +0 -0
  325. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/agents/openai.yaml +0 -0
  326. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/references/context-and-override.md +0 -0
  327. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/references/decision-quality-spine.md +0 -0
  328. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/fundamental-analyst/tcx-fundamental/SKILL.md +0 -0
  329. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/fundamental-analyst/tcx-fundamental/agents/openai.yaml +0 -0
  330. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/instrument-analyst/tcx-instrument/SKILL.md +0 -0
  331. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/instrument-analyst/tcx-instrument/agents/openai.yaml +0 -0
  332. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/judgment-reviewer/tcx-judgment/SKILL.md +0 -0
  333. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/judgment-reviewer/tcx-judgment/agents/openai.yaml +0 -0
  334. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/macro-analyst/tcx-macro/SKILL.md +0 -0
  335. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/macro-analyst/tcx-macro/agents/openai.yaml +0 -0
  336. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/news-analyst/tcx-news/SKILL.md +0 -0
  337. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/news-analyst/tcx-news/agents/openai.yaml +0 -0
  338. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-order-draft/SKILL.md +0 -0
  339. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-order-draft/agents/openai.yaml +0 -0
  340. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-portfolio/SKILL.md +0 -0
  341. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-portfolio/agents/openai.yaml +0 -0
  342. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-order-approve/SKILL.md +0 -0
  343. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-order-approve/agents/openai.yaml +0 -0
  344. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-policy/SKILL.md +0 -0
  345. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-policy/agents/openai.yaml +0 -0
  346. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-risk/SKILL.md +0 -0
  347. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-risk/agents/openai.yaml +0 -0
  348. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-anti-overfit/SKILL.md +0 -0
  349. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-anti-overfit/agents/openai.yaml +0 -0
  350. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-data-qc/SKILL.md +0 -0
  351. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-data-qc/agents/openai.yaml +0 -0
  352. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-evidence/SKILL.md +0 -0
  353. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-evidence/agents/openai.yaml +0 -0
  354. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-forecast/SKILL.md +0 -0
  355. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-forecast/agents/openai.yaml +0 -0
  356. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-scenarios/SKILL.md +0 -0
  357. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-scenarios/agents/openai.yaml +0 -0
  358. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-source-gate/SKILL.md +0 -0
  359. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-source-gate/agents/openai.yaml +0 -0
  360. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/technical-analyst/tcx-technical/SKILL.md +0 -0
  361. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/technical-analyst/tcx-technical/agents/openai.yaml +0 -0
  362. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/valuation-analyst/tcx-valuation/SKILL.md +0 -0
  363. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/valuation-analyst/tcx-valuation/agents/openai.yaml +0 -0
  364. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/repo-skills/module.json +0 -0
  365. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/enforcer/README.md +0 -0
  366. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/gateway/README.md +0 -0
  367. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/server.py +0 -0
  368. {tradingcodex-1.0.0 → tradingcodex-1.0.1}/workspace_templates/modules/tradingcodex-mcp/module.json +0 -0
@@ -2,6 +2,23 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 1.0.1 - 2026-07-15
6
+
7
+ - Add the shared `tcx-artifact` skill to all nine producing fixed roles so
8
+ deferred MCP calls receive the exact research-artifact, thesis-lifecycle,
9
+ retry, and forecast persistence procedure.
10
+ - Expand `create_research_artifact` and `issue_forecast` MCP schemas to expose
11
+ state-specific lifecycle fields, one-range probability rules, RFC 3339
12
+ timestamps, and the complete base-rate contract before a call is attempted.
13
+ Artifact validation errors now name the supported alternative fields, and
14
+ MCP resource-template discovery returns an empty supported list. Omitted
15
+ forecast `issued_at` and revision `revised_at` values now reuse the same
16
+ service receipt timestamp as `recorded_at`, eliminating a microsecond race
17
+ that rejected otherwise valid agent calls.
18
+ - Require Codex CLI 0.144.4, the validated reference for generated permission
19
+ profiles, V2 fixed-role dispatch, hooks, and deferred TradingCodex MCP calls.
20
+ Older clients now fail the runtime doctor check with upgrade guidance.
21
+
5
22
  ## 1.0.0 - 2026-07-15
6
23
 
7
24
  - Raise the validated Codex CLI reference to 0.144.4 while retaining the
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tradingcodex
3
- Version: 1.0.0
3
+ Version: 1.0.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
@@ -47,7 +47,7 @@ If these layers disagree, treat `docs/` as the durable product intent and fix th
47
47
 
48
48
  | Document | Purpose |
49
49
  | --- | --- |
50
- | [release-readiness.md](./release-readiness.md) | v1.0.0 source readiness, final-commit and exact-artifact validation, and pending tag, publication, and post-publish gates. |
50
+ | [release-readiness.md](./release-readiness.md) | v1.0.1 source readiness, final-commit and exact-artifact validation, and pending tag, publication, and post-publish gates. |
51
51
 
52
52
  ## Workflow And Agent Documents
53
53
 
@@ -252,7 +252,7 @@ sh "$SOURCE_ROOT/install.sh" \
252
252
  On native Windows PowerShell:
253
253
 
254
254
  ```powershell
255
- $ReleaseVersion = "1.0.0"
255
+ $ReleaseVersion = "1.0.1"
256
256
  $Workspace = Join-Path $env:TEMP "tcx-pypi-$ReleaseVersion"
257
257
  New-Item -ItemType Directory -Force $Workspace | Out-Null
258
258
  Set-Location $Workspace
@@ -60,7 +60,7 @@ design, migration, and validation evidence.
60
60
  - Provider canary regressions prove that submit/cancel results, health details,
61
61
  account-sync exceptions, and successful account display metadata do not
62
62
  reappear in DB rows, API/MCP projections, execution results, or audit events.
63
- - A disposable generated workspace reports nine fixed roles and 31 skills,
63
+ - A disposable generated workspace reports nine fixed roles and 32 skills,
64
64
  contains no retired execution role, and exposes no ungated submit, cancel, or
65
65
  broker status-refresh mutation. Its one execution-risk MCP tool is
66
66
  `use_order_turn_grant`, which has no authority without hook-injected proof.
@@ -737,11 +737,11 @@ uvx --refresh --from tradingcodex tcx update . --from tradingcodex
737
737
  Generated root config sets `default_permissions = "trading-research"` and
738
738
  defines two custom profiles. It deliberately omits legacy `sandbox_mode` from
739
739
  the root and every fixed-role TOML because any loaded `sandbox_mode` overrides
740
- custom permission profiles in Codex. This contract supports Codex CLI 0.144.1
740
+ custom permission profiles in Codex. This contract requires Codex CLI 0.144.4
741
741
  or later on a locally supported platform. Version 0.144.4 is the current
742
- release-validation reference for permission profiles, hooks, required MCP
743
- startup, and the explicit V2 feature table. Older compatible patch versions
744
- warn but do not fail ordinary doctor checks. These remain version-sensitive
742
+ release-validation reference for permission profiles, hooks, required MCP,
743
+ deferred MCP calls, and the explicit V2 feature table. Older versions fail the
744
+ Codex runtime doctor check. These remain version-sensitive
745
745
  surfaces, so release validation includes strict config/feature inspection and
746
746
  a real native smoke.
747
747
  See the [Codex permissions reference](https://learn.chatgpt.com/docs/permissions).
@@ -1,15 +1,15 @@
1
- # TradingCodex 1.0.0 Release Status
1
+ # TradingCodex 1.0.1 Release Status
2
2
 
3
- Status: release-branch implementation, broad suite, native workflow, browser,
4
- and exact Ubuntu/macOS/Windows distribution acceptance validated; merge CI,
5
- tag-bound rehearsal, tag, and publication remain pending
3
+ Status: local source, frontend, disposable native workflow, and exact
4
+ distribution gates complete; candidate CI, tag-bound rehearsal, tag, and
5
+ publication remain pending
6
6
  Updated: 2026-07-15
7
7
 
8
- This page records the current `1.0.0` release state. It is not an implementation
8
+ This page records the current `1.0.1` release state. It is not an implementation
9
9
  roadmap and does not treat source changes as proof that an exact distribution
10
10
  artifact or public release has passed its gates.
11
11
 
12
- ## v1.0.0 Contract
12
+ ## v1.0.1 Contract
13
13
 
14
14
  - `tradingcodex_service/version.py` is the single version source for package
15
15
  metadata, `tcx --version`, generated workspaces, release input, and tags.
@@ -33,22 +33,49 @@ artifact or public release has passed its gates.
33
33
 
34
34
  | Area | Current state | Evidence or remaining gate |
35
35
  | --- | --- | --- |
36
- | Version identity | Verified in the working tree | `TRADINGCODEX_VERSION` is `1.0.0`; `pyproject.toml` reads it dynamically; `tcx --version` uses the same source. |
36
+ | Version identity | Verified in the working tree | `TRADINGCODEX_VERSION` is `1.0.1`; `pyproject.toml` reads it dynamically; `tcx --version` uses the same source. |
37
37
  | Schema baseline | Verified in the working tree | Project apps contain only `0001_v1_initial`; migration-graph and model-state checks live in `tests/test_v1_migrations.py`. |
38
- | Workspace baseline | Current-reference preflight, release-branch native acceptance, and exact-wheel CI verified | A disposable development workspace passed strict pinned-reference config, explicit V2, persisted trust for all eight project hooks, the final artifact-to-synthesis workflow, and the disabled-dispatch fail-closed check after the prepublication quality-gate fix. GitHub CI then passed the exact release-branch wheel on macOS and Windows. |
39
- | Interfaces and safety | Verified on the release branch | GitHub CI passed 614 tests on each of Python 3.11, 3.12, 3.13, and 3.14, plus Django checks, migration checks, compile passes, focused safety invariants, frontend verification, clean-wheel construction, and native acceptance. |
38
+ | Workspace baseline | Exact candidate native acceptance passes locally | The v1.0.1 candidate projects the shared artifact skill to all producing roles, requires the current reference Codex client, and exposes the nested MCP contracts. A disposable generated workspace passed strict config/hook preflight plus artifact, forecast, and proof-protected Brain MCP smokes. |
39
+ | Interfaces and safety | Full local candidate suite passes | MCP schema, lifecycle-error, skill-projection, resource-template discovery, Codex-version, forecast receipt-time, Django, migration, compile, and full test gates pass. |
40
40
  | Frontend | Viewer source, build, and browser acceptance pass | Ten focused tests, typecheck/build, deterministic committed assets, three-section routing, read-only source checks, 1440px/900px/600px layouts, keyboard focus, workspace switching, long-label containment, and invalid-selection failure rendering pass. |
41
41
  | Release automation | Structurally verified | The release contract suite verifies tag and artifact gating; a manual `publish_pypi=false` rehearsal remains required. |
42
- | Distribution artifacts | Exact release-branch artifacts verified on Ubuntu, macOS, and Windows | Fresh `1.0.0` sdist/wheel build, `twine check`, and packaged-wheel smoke passed locally; GitHub CI built one clean wheel, passed its Ubuntu smoke, and reused the uploaded artifact for native macOS and Windows smokes. |
43
- | Git tag and PyPI | Not performed by this status | Merge/CI, annotated `v1.0.0` tag, protected-environment approval, and manual publication remain release-operator actions. |
42
+ | Distribution artifacts | Exact local candidate passes | Fresh `1.0.1` sdist/wheel build, `twine check`, and the isolated macOS packaged-wheel smoke pass. Native CI reuse on Ubuntu, macOS, and Windows remains required. |
43
+ | Git tag and PyPI | Not performed by this status | Merge/CI, annotated `v1.0.1` tag, protected-environment approval, and manual publication remain release-operator actions. |
44
44
  | Post-publish verification | Blocked on publication | Exact-version POSIX and native Windows attach/doctor smokes run only after PyPI contains the immutable artifacts. |
45
45
 
46
46
  Release-branch status describes candidate source shape, not release sign-off.
47
47
  The merged commit and exact uploaded artifacts remain authoritative.
48
48
 
49
- Current release-branch evidence recorded on 2026-07-15 is listed below. It
50
- authorizes merge of the candidate but does not substitute for CI on the merged
51
- commit or the tag-bound rehearsal of the immutable release artifacts:
49
+ The local v1.0.1 candidate evidence recorded on 2026-07-15 is:
50
+
51
+ - `python3.11 -m pytest`: **617 passed** with three dependency-level Pydantic
52
+ deprecation warnings and no failures.
53
+ - `python3.11 manage.py check`, migration dry-run, compile pass, skill
54
+ validation, JSON-schema validation, and diff checks: passed.
55
+ - `npm ci --prefix frontend`, the ten-test frontend suite, typecheck/build, and
56
+ deterministic committed-asset comparison: passed.
57
+ - A fresh `tradingcodex-1.0.1` sdist and wheel built in isolation; both passed
58
+ `twine check`, and the wheel passed the macOS isolated-install platform smoke
59
+ with runtime version `1.0.1`.
60
+ - A fresh generated development workspace passed `tcx doctor` and the strict
61
+ current-reference Codex CLI contract, including all eight trusted hooks.
62
+ - Native artifact persistence completed with one exact
63
+ `fundamental-analyst` child after it loaded `tcx-artifact`; the accepted
64
+ artifact id was
65
+ `research_report-ACME-synthetic-fixture-fundamental-artifact-persistence-smoke-76d0866c5fa1`.
66
+ - Native forecast persistence completed in one exact child without an MCP
67
+ retry: artifact
68
+ `fundamental_report-receipt-race-fixed-synthetic-recurring-revenue-smoke-e3e03d1566da`
69
+ produced forecast `forecast-261e59a11d6d4bb39fe0e8c80c95042d`.
70
+ The omitted caller timestamp resolved to one service receipt time, so
71
+ `issued_at` equaled `recorded_at`.
72
+ - A fresh exact `$tcx-brain` management turn received the hook-owned build-turn
73
+ proof and completed the protected list call, confirming the current-reference
74
+ deferred MCP proof path.
75
+
76
+ The v1.0.0 baseline evidence recorded on 2026-07-15 is listed below. It does
77
+ not substitute for v1.0.1 validation, CI on the candidate commit, or the
78
+ tag-bound rehearsal of the immutable patch artifacts:
52
79
 
53
80
  - GitHub Actions [CI run 29403737708](https://github.com/monarchjuno/tradingcodex/actions/runs/29403737708)
54
81
  passed on release-branch commit `12649b0`: the safety and financial invariant
@@ -223,13 +250,13 @@ Trusted Publisher configuration must be reviewed before publication.
223
250
  ## Tag And Publication State
224
251
 
225
252
  This document does not assert that the final commit is on `main`, CI is green,
226
- the tag exists, or PyPI contains `1.0.0`. After every final-commit and artifact
253
+ the tag exists, or PyPI contains `1.0.1`. After every final-commit and artifact
227
254
  gate passes:
228
255
 
229
256
  1. Merge the release commit to `main` and wait for CI.
230
- 2. Create and push the annotated tag `v1.0.0` at that commit.
257
+ 2. Create and push the annotated tag `v1.0.1` at that commit.
231
258
  3. Rehearse the manual workflow with `publish_pypi=false` and
232
- `release_version=1.0.0`.
259
+ `release_version=1.0.1`.
233
260
  4. With protected-environment approval, run the same tag with
234
261
  `publish_pypi=true`.
235
262
  5. Verify the immutable PyPI files, release notes, and exact-version POSIX and
@@ -243,6 +243,12 @@ Codex and subagents should use service-layer tools when available:
243
243
  `create_blind_review_assignment`, `get_blind_review_packet`,
244
244
  `record_blind_human_review`, and `compare_evaluation_runs`
245
245
 
246
+ For forecast issue and revision, agents normally omit `issued_at` and
247
+ `revised_at`. The service assigns the event time and `recorded_at` from one
248
+ receipt timestamp, avoiding client-clock drift and preserving the invariant
249
+ that an event cannot occur after its system record. Explicit caller timestamps
250
+ remain timezone-aware and fail closed when they are in the future.
251
+
246
252
  `source_snapshot_ids` are service-issued references, not agent-authored labels.
247
253
  When reproducibility requires a snapshot, the producing role calls
248
254
  `record_source_snapshot` first and copies only the exact returned `snapshot_id`
@@ -118,6 +118,14 @@ Required quality includes source/as-of posture, non-empty readiness label,
118
118
  context and reader summaries, confidence, missing evidence, next action,
119
119
  blocked actions, and explicit handoff state.
120
120
 
121
+ Every producing fixed role receives the shared `tcx-artifact` skill. It maps
122
+ the service's state-specific thesis lifecycle, single-range probability,
123
+ follow-up request, RFC 3339, and complete forecast base-rate requirements into
124
+ a compact persistence procedure. MCP schemas expose the same nested fields so
125
+ deferred tool discovery supplies the contract before the call. A role applies
126
+ all returned corrections in one targeted retry and stops in `waiting` if the
127
+ same contract error repeats.
128
+
121
129
  For run-bound artifacts, provide `workflow_run_id` and exact consumed
122
130
  `input_artifact_ids`. The service derives producer identity, schema version,
123
131
  content hash, and input hashes. `plan_hash`, `stage_id`, and `task_id` are not v1
@@ -328,7 +336,7 @@ judgment, or mutate state. Operational diagnosis and recovery remain
328
336
 
329
337
  ## Validation
330
338
 
331
- Validate the nine-role fixed roster and projections, 31 skill bundles, absence
339
+ Validate the nine-role fixed roster and projections, 32 skill bundles, absence
332
340
  of raw public execution-mutation tools, protected grant-tool proof behavior,
333
341
  deterministic native-action and `$tcx-order-allow` hook behavior,
334
342
  exact V2 dispatch, multilingual analysis requests,
@@ -6,7 +6,7 @@ shape, automate, or review workflows without granting extra authority.
6
6
 
7
7
  ## Naming Contract
8
8
 
9
- All 31 bundled TradingCodex skills use the `tcx-` namespace. Prefer one word
9
+ All 32 bundled TradingCodex skills use the `tcx-` namespace. Prefer one word
10
10
  after the prefix and use at most two words when clarity or safety requires it,
11
11
  as in `tcx-order-submit` or `tcx-investor-context`. Folder names, frontmatter
12
12
  names, registry ids, projected paths, UI metadata, and explicit `$` invocations
@@ -16,6 +16,10 @@ The namespace is reserved for bundled product skills. User-owned
16
16
  `strategy-*`, `investment-brain-*`, and optional role skills remain separate;
17
17
  an optional skill cannot claim a `tcx-*` id.
18
18
 
19
+ The shared internal `tcx-artifact` skill is projected to every producing fixed
20
+ role. It teaches the exact research-artifact, thesis-lifecycle, and forecast
21
+ ledger contracts; users do not invoke it as a Head Manager entrypoint.
22
+
19
23
  ## Primary Entrypoints
20
24
 
21
25
  | Skill | Primary use | Main output |
@@ -48,7 +48,7 @@ The target workspace should be empty. A directory with only `.git` already
48
48
  initialized is fine, as is an empty directory inside an existing parent
49
49
  worktree.
50
50
 
51
- Use Codex CLI 0.144.1 or later on macOS, Linux, WSL, or native Windows. Version
51
+ Use Codex CLI 0.144.4 or later on macOS, Linux, WSL, or native Windows. Version
52
52
  0.144.4 is the current TradingCodex reference for custom permission profiles,
53
53
  hooks, required MCP startup, and explicit MultiAgent V2 configuration. Verify
54
54
  with `codex --version`; `./tcx doctor --layer guidance` fails below the
@@ -12,8 +12,8 @@ from tradingcodex_cli.commands import doctor
12
12
  ("installed", "ok", "warn"),
13
13
  [
14
14
  ("0.144.0", False, False),
15
- ("0.144.1", True, True),
16
- ("0.144.2", True, True),
15
+ ("0.144.1", False, False),
16
+ ("0.144.2", False, False),
17
17
  ("0.144.4", True, False),
18
18
  ("0.145.0", True, True),
19
19
  ],
@@ -41,10 +41,10 @@ def test_codex_cli_reference_version_check(
41
41
  assert result["ok"] is ok
42
42
  assert bool(result.get("warn")) is warn
43
43
  assert f"installed={installed}" in result["detail"]
44
- assert "required>=0.144.1" in result["detail"]
44
+ assert "required>=0.144.4" in result["detail"]
45
45
  assert "reference=0.144.4" in result["detail"]
46
46
  if installed in {"0.144.1", "0.144.2"}:
47
- assert "compatible but older than reference" in result["detail"]
47
+ assert "older than required" in result["detail"]
48
48
  if installed == "0.145.0":
49
49
  assert "newer client requires harness revalidation" in result["detail"]
50
50
 
@@ -72,6 +72,25 @@ def test_mcp_surface_has_one_lightweight_run_tool_and_no_server_orchestrator() -
72
72
  improvement_item = artifact_properties["improvements"]["items"]
73
73
  assert improvement_item["type"] == "object"
74
74
  assert improvement_item["additionalProperties"] is False
75
+ lifecycle = artifact_properties["thesis_lifecycle"]
76
+ assert lifecycle["required"] == ["state"]
77
+ assert lifecycle["properties"]["state"]["enum"] == [
78
+ "exploring",
79
+ "testing",
80
+ "validated",
81
+ "rejected",
82
+ "monitoring",
83
+ ]
84
+ assert {"monitoring_artifact", "review_cadence"} <= set(lifecycle["properties"])
85
+ forecast_properties = TOOL_REGISTRY["issue_forecast"].input_schema["properties"]
86
+ assert forecast_properties["horizon"]["format"] == "date-time"
87
+ assert forecast_properties["issued_at"]["description"].startswith("Optional")
88
+ assert forecast_properties["base_rate"]["required"] == [
89
+ "cohort",
90
+ "source_snapshot_id",
91
+ "sample_size",
92
+ "selection_rule",
93
+ ]
75
94
 
76
95
 
77
96
  def test_authenticated_artifacts_bind_run_local_lineage(tmp_path: Path) -> None:
@@ -256,7 +275,7 @@ def test_generated_contract_projects_sol_head_and_terra_roles(workspace: Path) -
256
275
  assert 'enabled = true' in config
257
276
  assert 'max_concurrent_threads_per_session = 7' in config
258
277
  assert 'max_threads = 6' not in config
259
- assert model_policy["roles"]["head-manager"]["minimum_codex_version"] == "0.144.1"
278
+ assert model_policy["roles"]["head-manager"]["minimum_codex_version"] == "0.144.4"
260
279
  assert model_policy["roles"]["head-manager"]["reference_codex_version"] == "0.144.4"
261
280
  assert "required = true" in config
262
281
  assert '"begin_analysis_run"' in config
@@ -81,6 +81,27 @@ def test_explicit_quality_requirements_still_fail_closed(tmp_path: Path) -> None
81
81
  assert "decision_quality.contrary_evidence" in result["required_fields_missing"]
82
82
 
83
83
 
84
+ def test_monitoring_lifecycle_error_names_the_two_supported_fields(tmp_path: Path) -> None:
85
+ artifact_path = _write_artifact(
86
+ tmp_path,
87
+ "decision_quality_required: true\n"
88
+ "contrary_evidence: []\n"
89
+ "update_triggers: []\n"
90
+ "invalidation_conditions: []\n"
91
+ "source_trust_notes: []\n"
92
+ "thesis_lifecycle:\n"
93
+ " state: monitoring\n",
94
+ )
95
+
96
+ result = evaluate_decision_quality(tmp_path, artifact_path, strict=True)
97
+
98
+ assert "decision_quality.thesis_lifecycle.monitoring_artifact_or_cadence" in result["required_fields_missing"]
99
+ assert (
100
+ "thesis_lifecycle.state=monitoring requires either monitoring_artifact or review_cadence"
101
+ in result["warnings"]
102
+ )
103
+
104
+
84
105
  def test_explicit_context_gate_is_not_suppressed_by_producer_role(tmp_path: Path) -> None:
85
106
  artifact_path = _write_artifact(
86
107
  tmp_path,
@@ -242,7 +242,7 @@ def test_generated_workspace_codex_cli_user_scenario_matrix(tmp_path: Path) -> N
242
242
  status = json.loads(tcx(workspace, env_extra, "subagents", "status").stdout)
243
243
  assert status["installed_count"] == 9
244
244
  assert status["fixed_roster_ok"] is True
245
- assert status["skills_installed"] == 31
245
+ assert status["skills_installed"] == 32
246
246
  plan = json.loads(tcx(workspace, env_extra, "subagents", "plan", "--all").stdout)
247
247
  assert plan["requested_count"] == 9
248
248
  assert plan["parallel_spawn_ok"] is False
@@ -254,10 +254,11 @@ def test_generated_workspace_codex_cli_user_scenario_matrix(tmp_path: Path) -> N
254
254
  "tcx-data-qc",
255
255
  "tcx-scenarios",
256
256
  "tcx-forecast",
257
+ "tcx-artifact",
257
258
  "tcx-fundamental",
258
259
  ]
259
260
  judgment_inspect = json.loads(tcx(workspace, env_extra, "subagents", "inspect", "judgment-reviewer").stdout)
260
- assert judgment_inspect["effective_skills"] == ["tcx-judgment"]
261
+ assert judgment_inspect["effective_skills"] == ["tcx-artifact", "tcx-judgment"]
261
262
 
262
263
  optional_body = workspace / "source-quality-body.md"
263
264
  optional_body.write_text("# Source Quality Check\n\nCheck source dates and cite stale evidence warnings.\n", encoding="utf-8")
@@ -53,6 +53,7 @@ from tradingcodex_service.application.common import (
53
53
  workspace_launcher_command,
54
54
  )
55
55
  from tradingcodex_service.application.customization import write_codex_mcp_server_config
56
+ from tradingcodex_service.version import TRADINGCODEX_VERSION
56
57
 
57
58
 
58
59
  ROOT = Path(__file__).resolve().parents[1]
@@ -785,7 +786,7 @@ def test_service_version_mismatch_never_exposes_explicit_local_source(
785
786
  monkeypatch.setenv("TRADINGCODEX_MCP_PACKAGE_SPEC", str(local_source))
786
787
  monkeypatch.setenv(PACKAGE_SOURCE_KIND_ENV, "local-explicit")
787
788
 
788
- action = _version_mismatch_next_action("1.0.1", "127.0.0.1:48267")
789
+ action = _version_mismatch_next_action("1.0.2", "127.0.0.1:48267")
789
790
 
790
791
  assert str(local_source) not in action
791
792
  assert "<package-spec>" in action
@@ -858,7 +859,7 @@ def test_real_custom_source_attach_patch_update_and_same_version_refresh(
858
859
  assert first_python.is_file()
859
860
 
860
861
  version_path = source / "tradingcodex_service/version.py"
861
- version_path.write_text('TRADINGCODEX_VERSION = "1.0.1"\n', encoding="utf-8")
862
+ version_path.write_text('TRADINGCODEX_VERSION = "1.0.2"\n', encoding="utf-8")
862
863
  before_explicit_override = {
863
864
  path: path.read_bytes()
864
865
  for path in (
@@ -913,7 +914,7 @@ def test_real_custom_source_attach_patch_update_and_same_version_refresh(
913
914
  lock = json.loads(
914
915
  (workspace / ".tradingcodex/generated/module-lock.json").read_text(encoding="utf-8")
915
916
  )
916
- assert lock["tradingcodex_version"] == "1.0.1"
917
+ assert lock["tradingcodex_version"] == "1.0.2"
917
918
  assert lock["tradingcodex_package_spec"] == LOCAL_EXECUTABLE_SOURCE_PROVENANCE
918
919
 
919
920
  main_path = source / "tradingcodex_cli/__main__.py"
@@ -956,7 +957,7 @@ def test_real_custom_source_attach_patch_update_and_same_version_refresh(
956
957
  timeout=60,
957
958
  check=True,
958
959
  )
959
- assert version.stdout.strip() == f"{marker}:1.0.1"
960
+ assert version.stdout.strip() == f"{marker}:1.0.2"
960
961
 
961
962
  request = '{"jsonrpc":"2.0","id":1,"method":"tools/list"}\n'
962
963
  config_paths = [
@@ -1029,7 +1030,7 @@ def test_uv_cache_removal_leaves_launchers_and_all_role_mcp_runnable(
1029
1030
  timeout=30,
1030
1031
  check=True,
1031
1032
  )
1032
- assert version.stdout.strip() == "1.0.0"
1033
+ assert version.stdout.strip() == TRADINGCODEX_VERSION
1033
1034
 
1034
1035
  request = '{"jsonrpc":"2.0","id":1,"method":"tools/list"}\n'
1035
1036
  for config in parsed:
@@ -1445,7 +1446,7 @@ def test_update_rejects_workspace_downgrade_before_writing(
1445
1446
  bootstrap_workspace(workspace)
1446
1447
  lock_path = workspace / ".tradingcodex/generated/module-lock.json"
1447
1448
  lock = json.loads(lock_path.read_text(encoding="utf-8"))
1448
- lock["tradingcodex_version"] = "1.0.1"
1449
+ lock["tradingcodex_version"] = "1.0.2"
1449
1450
  lock_path.write_text(json.dumps(lock, indent=2) + "\n", encoding="utf-8")
1450
1451
  before = {path.relative_to(workspace).as_posix(): path.read_bytes() for path in workspace.rglob("*") if path.is_file()}
1451
1452
 
@@ -80,7 +80,7 @@ def test_cli_hook_dispatch_preserves_standard_input_and_output(
80
80
  def test_v1_package_metadata_has_one_stable_version_source() -> None:
81
81
  project = tomllib.loads((ROOT / "pyproject.toml").read_text(encoding="utf-8"))
82
82
 
83
- assert TRADINGCODEX_VERSION == "1.0.0"
83
+ assert TRADINGCODEX_VERSION == "1.0.1"
84
84
  assert str(Version(TRADINGCODEX_VERSION)) == TRADINGCODEX_VERSION
85
85
  assert project["project"]["dynamic"] == ["version"]
86
86
  assert "version" not in project["project"]
@@ -145,7 +145,7 @@ def test_v1_release_checklist_does_not_preapprove_gates() -> None:
145
145
  assert re.search(r"(?<![\d.])v?0\.\d+\.\d+\b", deployment) is None
146
146
  assert re.search(r"(?<![\d.])v?0\.\d+\.\d+\b", checklist) is None
147
147
  assert "- [x]" not in checklist.lower()
148
- assert "release_version=1.0.0" in checklist
148
+ assert "release_version=1.0.1" in checklist
149
149
 
150
150
 
151
151
  def test_attach_contract_has_no_overwrite_or_init_compatibility() -> None:
@@ -374,7 +374,7 @@ def test_update_status_requires_package_refresh_for_newer_workspace(monkeypatch,
374
374
  "schema_version": 1,
375
375
  "generated_at": "2026-07-11T00:00:00Z",
376
376
  "workspace_id": "tcxw_" + "a" * 32,
377
- "tradingcodex_version": "1.0.1",
377
+ "tradingcodex_version": "1.0.2",
378
378
  "tradingcodex_package_spec": "tradingcodex",
379
379
  "tradingcodex_home": str((tmp_path / "home").resolve()),
380
380
  "home_source": "environment_override",
@@ -534,7 +534,7 @@ def test_update_status_never_treats_local_provenance_as_an_executable_spec(
534
534
  "schema_version": 1,
535
535
  "generated_at": "2026-07-11T00:00:00Z",
536
536
  "workspace_id": "tcxw_" + "a" * 32,
537
- "tradingcodex_version": "1.0.1",
537
+ "tradingcodex_version": "1.0.2",
538
538
  "tradingcodex_package_spec": "local-explicit",
539
539
  "tradingcodex_home": str((tmp_path / "home").resolve()),
540
540
  "home_source": "environment_override",
@@ -134,6 +134,51 @@ def test_research_and_forecast_lists_filter_run_before_limit(monkeypatch, tmp_pa
134
134
  assert [item["forecast_id"] for item in forecasts] == ["older-target"]
135
135
 
136
136
 
137
+ def test_omitted_forecast_event_times_use_the_same_system_receipt_time(
138
+ monkeypatch: pytest.MonkeyPatch,
139
+ tmp_path: Path,
140
+ ) -> None:
141
+ base_snapshot_id = _snapshot(tmp_path, "base-rate", 0.45)
142
+ forecast_id = f"receipt-time-{uuid.uuid4().hex[:10]}"
143
+ issue_times = iter(
144
+ [
145
+ "2026-01-02T00:00:00.000000Z",
146
+ "2026-01-02T00:00:00.000001Z",
147
+ ]
148
+ )
149
+ monkeypatch.setattr(forecasting_module, "now_iso", lambda: next(issue_times))
150
+ payload = _forecast_payload(base_snapshot_id, forecast_id)
151
+ payload.pop("issued_at")
152
+
153
+ issued = call_mcp_tool(
154
+ tmp_path,
155
+ "issue_forecast",
156
+ {"principal_id": "fundamental-analyst", **payload},
157
+ )["forecast"]
158
+
159
+ assert issued["issued_at"] == issued["recorded_at"]
160
+
161
+ revision_times = iter(
162
+ [
163
+ "2026-01-03T00:00:00.000000Z",
164
+ "2026-01-03T00:00:00.000001Z",
165
+ ]
166
+ )
167
+ monkeypatch.setattr(forecasting_module, "now_iso", lambda: next(revision_times))
168
+ revised = call_mcp_tool(
169
+ tmp_path,
170
+ "revise_forecast",
171
+ {
172
+ "principal_id": "fundamental-analyst",
173
+ "forecast_id": forecast_id,
174
+ "revision_reason": "receipt-time regression check",
175
+ "probability": 0.61,
176
+ },
177
+ )["forecast"]
178
+
179
+ assert revised["revised_at"] == revised["recorded_at"]
180
+
181
+
137
182
  def test_mcp_research_and_forecast_lifecycle_enforces_role_separation(monkeypatch, tmp_path: Path) -> None:
138
183
  clock = ["2026-01-03T00:00:00Z"]
139
184
  monkeypatch.setattr(forecasting_module, "now_iso", lambda: clock[0])
@@ -128,6 +128,22 @@ def test_mcp_transport_principal_cannot_be_spoofed_or_omitted(monkeypatch, tmp_p
128
128
  assert spoofed and "does not match" in spoofed["error"]["message"]
129
129
 
130
130
 
131
+ def test_mcp_resource_template_discovery_returns_an_empty_supported_list(tmp_path: Path) -> None:
132
+ workspace = tmp_path / "resource-template-workspace"
133
+ bootstrap_workspace(workspace)
134
+
135
+ response = handle_mcp_rpc(
136
+ workspace,
137
+ {"jsonrpc": "2.0", "id": 1, "method": "resources/templates/list"},
138
+ )
139
+
140
+ assert response == {
141
+ "jsonrpc": "2.0",
142
+ "id": 1,
143
+ "result": {"resourceTemplates": []},
144
+ }
145
+
146
+
131
147
  def test_mcp_registry_failure_exposes_only_static_safe_reads(monkeypatch, tmp_path: Path) -> None:
132
148
  import tradingcodex_service.mcp_runtime as runtime
133
149
 
@@ -48,7 +48,7 @@ def test_bundled_skills_use_the_compact_tcx_namespace(tmp_path: Path) -> None:
48
48
  if record["layer"] == "bundled_core"
49
49
  }
50
50
 
51
- assert len(SKILL_SPECS) == 31
51
+ assert len(SKILL_SPECS) == 32
52
52
  assert set(bundled) == set(SKILL_SPECS)
53
53
  for skill_id, record in bundled.items():
54
54
  assert SKILL_SPECS[skill_id].id == skill_id
@@ -67,6 +67,9 @@ def test_bundled_skills_use_the_compact_tcx_namespace(tmp_path: Path) -> None:
67
67
  for agent in state["agents"].values()
68
68
  for skill_id in agent["builtin_skills"]
69
69
  )
70
+ for role, agent in state["agents"].items():
71
+ if role != "head-manager":
72
+ assert "tcx-artifact" in agent["builtin_skills"]
70
73
 
71
74
  legacy_ids = {
72
75
  "automate-workflow",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tradingcodex
3
- Version: 1.0.0
3
+ Version: 1.0.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
@@ -343,6 +343,8 @@ workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/ris
343
343
  workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-risk/agents/openai.yaml
344
344
  workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-anti-overfit/SKILL.md
345
345
  workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-anti-overfit/agents/openai.yaml
346
+ workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-artifact/SKILL.md
347
+ workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-artifact/agents/openai.yaml
346
348
  workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-data-qc/SKILL.md
347
349
  workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-data-qc/agents/openai.yaml
348
350
  workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-evidence/SKILL.md
@@ -205,7 +205,9 @@ def _codex_cli_runtime_check() -> dict[str, Any]:
205
205
  compatible = parsed >= minimum
206
206
  differs_from_reference = parsed != reference
207
207
  reference_note = ""
208
- if compatible and parsed < reference:
208
+ if not compatible:
209
+ reference_note = "; older than required; upgrade Codex before using the generated harness"
210
+ elif parsed < reference:
209
211
  reference_note = "; compatible but older than reference; upgrade before release validation"
210
212
  elif parsed > reference:
211
213
  reference_note = "; newer client requires harness revalidation"