tradingcodex 1.2.2__tar.gz → 2.1.0__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 (417) hide show
  1. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/CHANGELOG.md +26 -0
  2. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/PKG-INFO +1 -1
  3. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/docs/README.md +10 -10
  4. tradingcodex-1.2.2/docs/system-architecture.md → tradingcodex-2.1.0/docs/architecture.md +104 -43
  5. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/docs/codex-native-orchestration.md +1 -1
  6. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/docs/data-sources-and-openbb.md +28 -5
  7. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/docs/decision-memory.md +41 -13
  8. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/docs/deployment.md +22 -16
  9. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/docs/generated-workspaces.md +23 -19
  10. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/docs/interfaces-and-surfaces.md +33 -23
  11. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/docs/investment-brain-plugins.md +1 -1
  12. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/docs/product-direction.md +1 -1
  13. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/docs/research-memory-and-artifacts.md +129 -165
  14. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/docs/roles-skills-and-workflows.md +60 -15
  15. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/docs/safety-policy-and-execution.md +1 -1
  16. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/docs/validation-and-test-plan.md +45 -21
  17. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/frontend/src/App.tsx +6 -3
  18. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/frontend/src/ViewerShell.tsx +3 -2
  19. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/frontend/src/domain.ts +9 -8
  20. tradingcodex-2.1.0/frontend/src/features/EpisodesPage.tsx +105 -0
  21. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/frontend/src/features/LibraryPage.tsx +13 -5
  22. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/frontend/src/navigation.js +3 -3
  23. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/frontend/src/navigation.test.js +18 -4
  24. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/frontend/src/styles.css +16 -0
  25. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/installation.md +9 -3
  26. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_artifact_authentication.py +228 -48
  27. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_artifact_catalog.py +9 -9
  28. tradingcodex-2.1.0/tests/test_artifact_v2.py +829 -0
  29. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_build_hook.py +38 -3
  30. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_calculation_runner.py +31 -28
  31. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_clean_v1_cli_audit.py +3 -3
  32. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_codex_native_orchestration.py +338 -106
  33. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_decision_memory_core.py +46 -43
  34. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_dev_bootstrap.py +2 -2
  35. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_dynamic_artifact_quality.py +89 -100
  36. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_e2e_user_scenarios.py +91 -83
  37. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_investment_brain_prompt_layers.py +39 -20
  38. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_investment_brain_provenance.py +42 -41
  39. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_platform_runtime.py +23 -5
  40. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_release_contract.py +7 -8
  41. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_research_forecast_surfaces.py +2 -2
  42. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_security_invariants.py +60 -20
  43. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_source_snapshot_agent_contract.py +25 -1
  44. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_viewer.py +33 -1
  45. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex.egg-info/PKG-INFO +1 -1
  46. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex.egg-info/SOURCES.txt +15 -8
  47. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/commands/bootstrap.py +4 -1
  48. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/commands/decision.py +32 -10
  49. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/commands/doctor.py +41 -1
  50. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/commands/orders.py +10 -2
  51. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/commands/research.py +32 -65
  52. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/commands/utils.py +1 -0
  53. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/generator.py +45 -10
  54. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/startup_status.py +5 -1
  55. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/api.py +81 -68
  56. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/agents.py +5 -0
  57. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/artifact_bindings.py +114 -8
  58. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/artifact_catalog.py +39 -5
  59. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/artifact_quality.py +102 -0
  60. tradingcodex-2.1.0/tradingcodex_service/application/artifact_v2.py +571 -0
  61. tradingcodex-2.1.0/tradingcodex_service/application/decision_episodes.py +226 -0
  62. tradingcodex-2.1.0/tradingcodex_service/application/judgment_postmortems.py +370 -0
  63. tradingcodex-2.1.0/tradingcodex_service/application/judgments.py +349 -0
  64. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/postmortems.py +17 -5
  65. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/research.py +132 -24
  66. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/viewer.py +17 -2
  67. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/mcp_runtime.py +337 -235
  68. tradingcodex-2.1.0/tradingcodex_service/static/tradingcodex_web/assets/allPaths-DTYZmYwK.js +1 -0
  69. tradingcodex-2.1.0/tradingcodex_service/static/tradingcodex_web/assets/allPathsLoader-DcM0tTg5.js +2 -0
  70. tradingcodex-1.2.2/tradingcodex_service/static/tradingcodex_web/assets/index-y2v9zCLQ.css → tradingcodex-2.1.0/tradingcodex_service/static/tradingcodex_web/assets/index-Bb8LR_4w.css +1 -1
  71. tradingcodex-2.1.0/tradingcodex_service/static/tradingcodex_web/assets/index-C4QYjUvS.js +9 -0
  72. tradingcodex-1.2.2/tradingcodex_service/static/tradingcodex_web/assets/paths-CoispWSv.js → tradingcodex-2.1.0/tradingcodex_service/static/tradingcodex_web/assets/paths-BOuWfKow.js +1 -1
  73. tradingcodex-1.2.2/tradingcodex_service/static/tradingcodex_web/assets/paths-BDuITqPr.js → tradingcodex-2.1.0/tradingcodex_service/static/tradingcodex_web/assets/paths-CI3Rjsyg.js +1 -1
  74. tradingcodex-2.1.0/tradingcodex_service/static/tradingcodex_web/assets/splitPathsBySizeLoader-B1K4iYsq.js +2 -0
  75. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/static/tradingcodex_web/index.html +2 -2
  76. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/urls.py +2 -0
  77. tradingcodex-2.1.0/tradingcodex_service/version.py +1 -0
  78. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/viewer_api.py +22 -0
  79. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/codex-base/files/.codex/hooks/tradingcodex_hook.py +3 -0
  80. tradingcodex-2.1.0/workspace_templates/modules/codex-base/files/.codex/prompts/base_instructions/fixed-role.md +28 -0
  81. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/codex-base/files/.codex/prompts/base_instructions/head-manager.md +7 -0
  82. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/codex-base/files/AGENTS.md +10 -7
  83. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/fixed-subagents/files/.codex/agents/fundamental-analyst.toml +2 -2
  84. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/fixed-subagents/files/.codex/agents/instrument-analyst.toml +1 -1
  85. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/fixed-subagents/files/.codex/agents/macro-analyst.toml +2 -2
  86. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/fixed-subagents/files/.codex/agents/news-analyst.toml +2 -2
  87. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/fixed-subagents/files/.codex/agents/technical-analyst.toml +2 -2
  88. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/fixed-subagents/files/.codex/agents/valuation-analyst.toml +2 -2
  89. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-memory/SKILL.md +17 -17
  90. tradingcodex-2.1.0/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/SKILL.md +148 -0
  91. tradingcodex-2.1.0/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/playbooks/research-framing.md +49 -0
  92. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/fundamental-analyst/tcx-fundamental/SKILL.md +9 -8
  93. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/instrument-analyst/tcx-instrument/SKILL.md +1 -3
  94. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/judgment-reviewer/tcx-judgment/SKILL.md +19 -9
  95. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/macro-analyst/tcx-macro/SKILL.md +6 -4
  96. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/news-analyst/tcx-news/SKILL.md +3 -5
  97. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-portfolio/SKILL.md +1 -3
  98. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-policy/SKILL.md +1 -4
  99. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-risk/SKILL.md +1 -3
  100. tradingcodex-2.1.0/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-artifact/SKILL.md +67 -0
  101. tradingcodex-2.1.0/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-evidence/SKILL.md +62 -0
  102. tradingcodex-2.1.0/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-evidence/agents/openai.yaml +6 -0
  103. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-source-gate/SKILL.md +24 -6
  104. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/technical-analyst/tcx-technical/SKILL.md +6 -4
  105. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/valuation-analyst/tcx-valuation/SKILL.md +15 -9
  106. tradingcodex-1.2.2/tradingcodex_service/static/tradingcodex_web/assets/allPaths-DJ5oy6Ot.js +0 -1
  107. tradingcodex-1.2.2/tradingcodex_service/static/tradingcodex_web/assets/allPathsLoader-CRlwLu1z.js +0 -2
  108. tradingcodex-1.2.2/tradingcodex_service/static/tradingcodex_web/assets/index-c5e0ZsDr.js +0 -9
  109. tradingcodex-1.2.2/tradingcodex_service/static/tradingcodex_web/assets/splitPathsBySizeLoader-x57jFwA3.js +0 -2
  110. tradingcodex-1.2.2/tradingcodex_service/version.py +0 -1
  111. tradingcodex-1.2.2/workspace_templates/modules/codex-base/files/.codex/prompts/base_instructions/fixed-role.md +0 -16
  112. tradingcodex-1.2.2/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/SKILL.md +0 -161
  113. tradingcodex-1.2.2/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-artifact/SKILL.md +0 -70
  114. tradingcodex-1.2.2/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-evidence/SKILL.md +0 -41
  115. tradingcodex-1.2.2/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-evidence/agents/openai.yaml +0 -6
  116. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/CONTRIBUTING.md +0 -0
  117. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/LICENSE +0 -0
  118. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/MANIFEST.in +0 -0
  119. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/NOTICE +0 -0
  120. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/README.md +0 -0
  121. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/TRADEMARKS.md +0 -0
  122. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/__init__.py +0 -0
  123. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/audit/__init__.py +0 -0
  124. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/audit/admin.py +0 -0
  125. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/audit/apps.py +0 -0
  126. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/audit/migrations/0001_v1_initial.py +0 -0
  127. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/audit/migrations/__init__.py +0 -0
  128. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/audit/models.py +0 -0
  129. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/harness/__init__.py +0 -0
  130. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/harness/admin.py +0 -0
  131. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/harness/apps.py +0 -0
  132. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/harness/migrations/0001_v1_initial.py +0 -0
  133. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/harness/migrations/__init__.py +0 -0
  134. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/harness/models.py +0 -0
  135. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/harness/templatetags/__init__.py +0 -0
  136. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/integrations/__init__.py +0 -0
  137. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/integrations/admin.py +0 -0
  138. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/integrations/apps.py +0 -0
  139. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/integrations/migrations/0001_v1_initial.py +0 -0
  140. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/integrations/migrations/__init__.py +0 -0
  141. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/integrations/models.py +0 -0
  142. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/mcp/__init__.py +0 -0
  143. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/mcp/admin.py +0 -0
  144. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/mcp/apps.py +0 -0
  145. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/mcp/migrations/0001_v1_initial.py +0 -0
  146. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/mcp/migrations/0002_remove_external_mcp_gate.py +0 -0
  147. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/mcp/migrations/__init__.py +0 -0
  148. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/mcp/models.py +0 -0
  149. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/mcp/services.py +0 -0
  150. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/orders/__init__.py +0 -0
  151. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/orders/admin.py +0 -0
  152. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/orders/apps.py +0 -0
  153. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/orders/migrations/0001_v1_initial.py +0 -0
  154. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/orders/migrations/__init__.py +0 -0
  155. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/orders/models.py +0 -0
  156. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/orders/services.py +0 -0
  157. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/policy/__init__.py +0 -0
  158. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/policy/admin.py +0 -0
  159. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/policy/apps.py +0 -0
  160. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/policy/migrations/0001_v1_initial.py +0 -0
  161. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/policy/migrations/__init__.py +0 -0
  162. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/policy/models.py +0 -0
  163. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/policy/services.py +0 -0
  164. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/portfolio/__init__.py +0 -0
  165. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/portfolio/admin.py +0 -0
  166. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/portfolio/apps.py +0 -0
  167. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/portfolio/migrations/0001_v1_initial.py +0 -0
  168. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/portfolio/migrations/__init__.py +0 -0
  169. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/apps/portfolio/models.py +0 -0
  170. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/assets/tradingcodex-banner-v1.png +0 -0
  171. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/assets/tradingcodex-banner-v2.png +0 -0
  172. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/assets/tradingcodex-banner-v3.png +0 -0
  173. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/assets/tradingcodex-banner.svg +0 -0
  174. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/docs/financial-workflow-references.md +0 -0
  175. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/docs/guardrails.md +0 -0
  176. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/docs/harness.md +0 -0
  177. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/docs/improvement-loop.md +0 -0
  178. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/docs/knowledge-wikis.md +0 -0
  179. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/docs/licensing-and-commercialization.md +0 -0
  180. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/docs/release-readiness.md +0 -0
  181. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/docs/user-facing-skills.md +0 -0
  182. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/frontend/index.html +0 -0
  183. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/frontend/package-lock.json +0 -0
  184. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/frontend/package.json +0 -0
  185. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/frontend/src/api.ts +0 -0
  186. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/frontend/src/features/SystemPage.tsx +0 -0
  187. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/frontend/src/features/WikiPage.tsx +0 -0
  188. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/frontend/src/main.tsx +0 -0
  189. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/frontend/src/ui.tsx +0 -0
  190. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/frontend/src/viewer-data.js +0 -0
  191. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/frontend/tsconfig.json +0 -0
  192. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/frontend/vite.config.ts +0 -0
  193. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/install.sh +0 -0
  194. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/pyproject.toml +0 -0
  195. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/setup.cfg +0 -0
  196. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_brain_skill.py +0 -0
  197. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_broker_center_prd.py +0 -0
  198. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_build_contract_metadata.py +0 -0
  199. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_build_turn_grant.py +0 -0
  200. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_codex_capabilities.py +0 -0
  201. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_codex_cli_compat.py +0 -0
  202. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_codex_cli_contract.py +0 -0
  203. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_datasets.py +0 -0
  204. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_evaluation_lab_hardening.py +0 -0
  205. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_evaluation_profiles.py +0 -0
  206. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_guidebook_contract.py +0 -0
  207. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_investment_analysis.py +0 -0
  208. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_investment_brain_cli.py +0 -0
  209. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_investment_brain_registry.py +0 -0
  210. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_investor_context.py +0 -0
  211. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_knowledge_wikis.py +0 -0
  212. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_mcp_broker_release_health.py +0 -0
  213. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_native_execution_gateway.py +0 -0
  214. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_order_turn_grant.py +0 -0
  215. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_provider_source_approval.py +0 -0
  216. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_research_object_catalog.py +0 -0
  217. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_research_objects.py +0 -0
  218. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_research_spec_profiles.py +0 -0
  219. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_runtime_paths.py +0 -0
  220. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_runtime_profile.py +0 -0
  221. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_skill_runtime_boundaries.py +0 -0
  222. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_v1_migrations.py +0 -0
  223. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_v1_state_integrity.py +0 -0
  224. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tests/test_workspace_git_contract.py +0 -0
  225. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex.egg-info/dependency_links.txt +0 -0
  226. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex.egg-info/entry_points.txt +0 -0
  227. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex.egg-info/requires.txt +0 -0
  228. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex.egg-info/top_level.txt +0 -0
  229. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/__init__.py +0 -0
  230. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/__main__.py +0 -0
  231. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/calculation-runtime-lock.json +0 -0
  232. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/calculation-runtime-requirements.txt +0 -0
  233. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/calculation_runner.py +0 -0
  234. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/commands/__init__.py +0 -0
  235. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/commands/build.py +0 -0
  236. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/commands/connectors.py +0 -0
  237. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/commands/data_sources.py +0 -0
  238. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/commands/db.py +0 -0
  239. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/commands/evaluation.py +0 -0
  240. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/commands/forecast.py +0 -0
  241. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/commands/home.py +0 -0
  242. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/commands/investment_brains.py +0 -0
  243. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/commands/investor_context.py +0 -0
  244. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/commands/mcp.py +0 -0
  245. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/commands/policy.py +0 -0
  246. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/commands/profile.py +0 -0
  247. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/commands/skills.py +0 -0
  248. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/commands/strategies.py +0 -0
  249. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/commands/subagents.py +0 -0
  250. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/commands/wikis.py +0 -0
  251. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/commands/workflow.py +0 -0
  252. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/commands/workspaces.py +0 -0
  253. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/mcp_stdio.py +0 -0
  254. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/package_source.py +0 -0
  255. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/service_autostart.py +0 -0
  256. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_cli/versioning.py +0 -0
  257. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/__init__.py +0 -0
  258. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/admin.py +0 -0
  259. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/__init__.py +0 -0
  260. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/analysis_runs.py +0 -0
  261. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/audit.py +0 -0
  262. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/brokers.py +0 -0
  263. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/build_gateway.py +0 -0
  264. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/calculations.py +0 -0
  265. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/codex_capabilities.py +0 -0
  266. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/common.py +0 -0
  267. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/data_sources.py +0 -0
  268. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/datasets.py +0 -0
  269. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/decision_packages.py +0 -0
  270. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/evaluation_lab.py +0 -0
  271. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/execution_gateway.py +0 -0
  272. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/forecasting.py +0 -0
  273. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/git_subprocess.py +0 -0
  274. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/harness.py +0 -0
  275. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/health.py +0 -0
  276. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/investment_analysis.py +0 -0
  277. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/investment_brains.py +0 -0
  278. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/investor_context.py +0 -0
  279. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/knowledge_wikis.py +0 -0
  280. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/managed_package_sources.py +0 -0
  281. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/markdown_preview.py +0 -0
  282. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/operator_authority.py +0 -0
  283. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/orders.py +0 -0
  284. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/policy.py +0 -0
  285. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/portfolio.py +0 -0
  286. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/research_object_catalog.py +0 -0
  287. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/research_objects.py +0 -0
  288. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/research_specs.py +0 -0
  289. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/runtime.py +0 -0
  290. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/skill_invocations.py +0 -0
  291. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/source_snapshots.py +0 -0
  292. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/wiki_viewer.py +0 -0
  293. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/workspace_git.py +0 -0
  294. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/application/workspaces.py +0 -0
  295. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/asgi.py +0 -0
  296. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/log_safety.py +0 -0
  297. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/runtime_profile.py +0 -0
  298. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/settings.py +0 -0
  299. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/static/tradingcodex_admin/favicon.svg +0 -0
  300. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/web.py +0 -0
  301. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/tradingcodex_service/wsgi.py +0 -0
  302. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/__init__.py +0 -0
  303. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/audit/files/.tradingcodex/audit/README.md +0 -0
  304. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/audit/files/trading/audit/.gitkeep +0 -0
  305. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/audit/module.json +0 -0
  306. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/codex-base/files/.codex/config.toml +0 -0
  307. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/codex-base/files/.codex/hooks.json +0 -0
  308. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/codex-base/files/.codex/rules/tradingcodex.rules +0 -0
  309. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/codex-base/files/.tradingcodex/cli.py +0 -0
  310. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/codex-base/files/.tradingcodex/config.yaml +0 -0
  311. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/codex-base/files/pyproject.toml +0 -0
  312. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/codex-base/files/tcx +0 -0
  313. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/codex-base/files/tcx-calc +0 -0
  314. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/codex-base/files/tcx-calc.cmd +0 -0
  315. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/codex-base/files/tcx.cmd +0 -0
  316. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/codex-base/module.json +0 -0
  317. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/policies/restricted-list.yaml +0 -0
  318. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/approval_receipt.schema.json +0 -0
  319. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/audit_event.schema.json +0 -0
  320. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/evidence_pack.schema.json +0 -0
  321. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/execution_result.schema.json +0 -0
  322. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/fundamental_report.schema.json +0 -0
  323. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/news_report.schema.json +0 -0
  324. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/order_ticket.schema.json +0 -0
  325. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/portfolio_review.schema.json +0 -0
  326. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/postmortem_report.schema.json +0 -0
  327. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/research_artifact.schema.json +0 -0
  328. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/risk_report.schema.json +0 -0
  329. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/technical_report.schema.json +0 -0
  330. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/thesis.schema.json +0 -0
  331. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/valuation.schema.json +0 -0
  332. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/enforcement-guardrails/module.json +0 -0
  333. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/fixed-subagents/files/.codex/agents/judgment-reviewer.toml +0 -0
  334. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/fixed-subagents/files/.codex/agents/portfolio-manager.toml +0 -0
  335. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/fixed-subagents/files/.codex/agents/risk-manager.toml +0 -0
  336. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/fixed-subagents/files/.tradingcodex/mainagent/skill-change-proposals/.gitkeep +0 -0
  337. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/fixed-subagents/module.json +0 -0
  338. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/guidance-guardrails/files/.tradingcodex/guidance/guardrails.md +0 -0
  339. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/guidance-guardrails/files/.tradingcodex/guidance/task-quality-checklist.md +0 -0
  340. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/guidance-guardrails/module.json +0 -0
  341. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/information-barriers/files/.tradingcodex/secrets.md +0 -0
  342. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/information-barriers/files/trading/forecasts/.gitkeep +0 -0
  343. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/information-barriers/files/trading/market-data/.gitkeep +0 -0
  344. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/information-barriers/files/trading/portfolio/.gitkeep +0 -0
  345. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/information-barriers/files/trading/reports/fundamental/.gitkeep +0 -0
  346. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/information-barriers/files/trading/reports/instrument/.gitkeep +0 -0
  347. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/information-barriers/files/trading/reports/macro/.gitkeep +0 -0
  348. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/information-barriers/files/trading/reports/news/.gitkeep +0 -0
  349. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/information-barriers/files/trading/reports/policy/.gitkeep +0 -0
  350. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/information-barriers/files/trading/reports/portfolio/.gitkeep +0 -0
  351. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/information-barriers/files/trading/reports/postmortem/.gitkeep +0 -0
  352. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/information-barriers/files/trading/reports/risk/.gitkeep +0 -0
  353. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/information-barriers/files/trading/reports/technical/.gitkeep +0 -0
  354. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/information-barriers/files/trading/reports/valuation/.gitkeep +0 -0
  355. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/information-barriers/files/trading/research/.gitkeep +0 -0
  356. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/information-barriers/module.json +0 -0
  357. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/paper-trading/module.json +0 -0
  358. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-automate/SKILL.md +0 -0
  359. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-automate/agents/openai.yaml +0 -0
  360. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/SKILL.md +0 -0
  361. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/agents/openai.yaml +0 -0
  362. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/references/bundle-contract.md +0 -0
  363. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-build/SKILL.md +0 -0
  364. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-build/agents/openai.yaml +0 -0
  365. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-investor-context/SKILL.md +0 -0
  366. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-investor-context/agents/openai.yaml +0 -0
  367. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-memory/agents/openai.yaml +0 -0
  368. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-allow/SKILL.md +0 -0
  369. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-allow/agents/openai.yaml +0 -0
  370. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-cancel/SKILL.md +0 -0
  371. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-cancel/agents/openai.yaml +0 -0
  372. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-submit/SKILL.md +0 -0
  373. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-submit/agents/openai.yaml +0 -0
  374. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-plan/SKILL.md +0 -0
  375. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-plan/agents/openai.yaml +0 -0
  376. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-server/SKILL.md +0 -0
  377. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-server/agents/openai.yaml +0 -0
  378. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-strategy/SKILL.md +0 -0
  379. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-strategy/agents/openai.yaml +0 -0
  380. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-wiki/SKILL.md +0 -0
  381. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-wiki/agents/openai.yaml +0 -0
  382. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-wiki/references/bundle-contract.md +0 -0
  383. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/agents/openai.yaml +0 -0
  384. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/fundamental-analyst/tcx-fundamental/agents/openai.yaml +0 -0
  385. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/instrument-analyst/tcx-instrument/agents/openai.yaml +0 -0
  386. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/judgment-reviewer/tcx-judgment/agents/openai.yaml +0 -0
  387. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/macro-analyst/tcx-macro/agents/openai.yaml +0 -0
  388. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/news-analyst/tcx-news/agents/openai.yaml +0 -0
  389. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-order-draft/SKILL.md +0 -0
  390. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-order-draft/agents/openai.yaml +0 -0
  391. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-portfolio/agents/openai.yaml +0 -0
  392. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-order-approve/SKILL.md +0 -0
  393. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-order-approve/agents/openai.yaml +0 -0
  394. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-policy/agents/openai.yaml +0 -0
  395. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-risk/agents/openai.yaml +0 -0
  396. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-anti-overfit/SKILL.md +0 -0
  397. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-anti-overfit/agents/openai.yaml +0 -0
  398. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-artifact/agents/openai.yaml +0 -0
  399. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-calculation/SKILL.md +0 -0
  400. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-calculation/agents/openai.yaml +0 -0
  401. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-calculation/references/data-runtime.md +0 -0
  402. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-calculation/references/finance-methods.md +0 -0
  403. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-data-qc/SKILL.md +0 -0
  404. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-data-qc/agents/openai.yaml +0 -0
  405. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-forecast/SKILL.md +0 -0
  406. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-forecast/agents/openai.yaml +0 -0
  407. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-scenarios/SKILL.md +0 -0
  408. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-scenarios/agents/openai.yaml +0 -0
  409. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-source-gate/agents/openai.yaml +0 -0
  410. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-source-gate/references/openbb-mcp.md +0 -0
  411. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/technical-analyst/tcx-technical/agents/openai.yaml +0 -0
  412. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/valuation-analyst/tcx-valuation/agents/openai.yaml +0 -0
  413. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/repo-skills/module.json +0 -0
  414. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/enforcer/README.md +0 -0
  415. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/gateway/README.md +0 -0
  416. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/server.py +0 -0
  417. {tradingcodex-1.2.2 → tradingcodex-2.1.0}/workspace_templates/modules/tradingcodex-mcp/module.json +0 -0
@@ -2,6 +2,32 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 2.1.0 - 2026-07-23
6
+
7
+ - Ship the complete compact Artifact v2, receipt v4, canonical synthesis,
8
+ JudgmentSnapshot/User Adoption, and Decision Episode vertical slice across
9
+ CLI, MCP, REST, generated workspaces, and the read-only Viewer.
10
+ - Make outcome-blind process review ordering enforceable, bind JudgmentSnapshot
11
+ Forecast posture to the authenticated synthesis, and retain durable blocked
12
+ abstentions without granting action authority.
13
+ - Fail closed on unauthenticated run-bound cards and Episode lineage, expose
14
+ locked process reviews and bounded lifecycle records in Episodes, reject
15
+ unknown nested REST envelope fields, and document the explicit v1-to-v2
16
+ workspace transition.
17
+
18
+ ## 2.0.0 - 2026-07-23
19
+
20
+ - Replace the public research-artifact write and read contracts with compact v2
21
+ envelopes, two-axis readiness, receipt v4 provenance, and one canonical Head
22
+ Manager synthesis identity per analysis run while preserving authenticated v1
23
+ files and receipts byte-for-byte through an explicit v1-to-v2 update path.
24
+ - Add evidence-only JudgmentSnapshots, explicit terminal-recorded User Adoption
25
+ events, judgment-bound postmortems, and read-only Decision Episode projections
26
+ across MCP, API, CLI, and the workspace Viewer.
27
+ - Make final Head Manager answers self-contained and decision-focused; durable
28
+ reports retain full provenance and are linked as supporting records instead of
29
+ being restated as a table of contents in chat.
30
+
5
31
  ## 1.2.2 - 2026-07-22
6
32
 
7
33
  - Validate Codex CLI 0.145.0 as the current reference while retaining 0.144.4
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tradingcodex
3
- Version: 1.2.2
3
+ Version: 2.1.0
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
@@ -5,9 +5,9 @@ the reasons behind it; it is not a second user guide or a source-file index.
5
5
 
6
6
  - New users start with the [User Guide](https://monarchjuno.github.io/tradingcodex/).
7
7
  - Operators start with [installation.md](../installation.md).
8
- - Maintainers start with [AGENTS.md](../AGENTS.md) and
9
- [openwiki/quickstart.md](../openwiki/quickstart.md), then read the owning page
10
- below before changing behavior.
8
+ - Maintainers start with [AGENTS.md](../AGENTS.md) and the codebase
9
+ [Architecture](architecture.md), then read the owning page below before
10
+ changing behavior.
11
11
 
12
12
  ## Documentation Ownership
13
13
 
@@ -17,7 +17,6 @@ the reasons behind it; it is not a second user guide or a source-file index.
17
17
  | `installation.md` | Setup, update, and operator recovery. |
18
18
  | `docs/` | Canonical product behavior, architecture, safety, and rationale. |
19
19
  | `guidebook/` | Short task-first instructions for end users. |
20
- | `openwiki/` | Source ownership and validation routing for coding agents. |
21
20
  | `AGENTS.md` | Repository-wide development rules. |
22
21
 
23
22
  Keep a concept in one owning document and link to it elsewhere. Update another
@@ -29,14 +28,14 @@ into every layer. If two layers disagree, fix the owning `docs/` page first.
29
28
  | Goal | Canonical page | Useful follow-up |
30
29
  | --- | --- | --- |
31
30
  | Understand the product and its design posture | [Product Direction](product-direction.md) | [Harness](harness.md) |
32
- | Understand runtime and source ownership | [System Architecture](system-architecture.md) | [Interfaces And Surfaces](interfaces-and-surfaces.md) |
31
+ | Understand runtime and source ownership | [Architecture](architecture.md) | [Interfaces And Surfaces](interfaces-and-surfaces.md) |
33
32
  | Change Head Manager, roles, skills, or research flow | [Roles, Skills, And Workflows](roles-skills-and-workflows.md) | [Codex-Native Orchestration](codex-native-orchestration.md) |
34
33
  | Work with research evidence, datasets, and artifacts | [Research Memory And Artifacts](research-memory-and-artifacts.md) | [Data Sources And OpenBB](data-sources-and-openbb.md) |
35
34
  | Work with reusable company, product, technology, science, industry, or value-chain knowledge | [Knowledge Wikis](knowledge-wikis.md) | [Investment Brain Plugins](investment-brain-plugins.md) |
36
35
  | Understand saved decisions and improvement | [Decision Memory](decision-memory.md) | [Improvement Loop](improvement-loop.md) |
37
36
  | Change policy, approvals, brokers, or execution | [Safety, Policy, And Execution](safety-policy-and-execution.md) | [Guardrails](guardrails.md) |
38
37
  | Change attach/update or generated workspace files | [Generated Workspaces](generated-workspaces.md) | [Deployment](deployment.md) |
39
- | Change the viewer, API, MCP, Admin, or CLI | [Interfaces And Surfaces](interfaces-and-surfaces.md) | [System Architecture](system-architecture.md) |
38
+ | Change the viewer, API, MCP, Admin, or CLI | [Interfaces And Surfaces](interfaces-and-surfaces.md) | [Architecture](architecture.md) |
40
39
  | Choose or verify validation | [Validation And Test Plan](validation-and-test-plan.md) | [Release Readiness](release-readiness.md) |
41
40
 
42
41
  ## Reference By Domain
@@ -70,8 +69,8 @@ into every layer. If two layers disagree, fix the owning `docs/` page first.
70
69
  sensitive-action, approval, broker, secret, and audit boundary.
71
70
  - [Guardrails](guardrails.md) — guidance, enforcement, and information-barrier
72
71
  taxonomy.
73
- - [System Architecture](system-architecture.md) — runtime planes, central DB,
74
- app boundaries, and service ownership.
72
+ - [Architecture](architecture.md) — codebase map, consequential request flow,
73
+ runtime planes, central DB, app boundaries, and service ownership.
75
74
  - [Interfaces And Surfaces](interfaces-and-surfaces.md) — viewer, Admin, API,
76
75
  MCP, CLI, and generated wrapper boundaries.
77
76
  - [Generated Workspaces](generated-workspaces.md) — attach/update, generated
@@ -94,8 +93,9 @@ into every layer. If two layers disagree, fix the owning `docs/` page first.
94
93
 
95
94
  - Document durable behavior, not temporary implementation plans or completed
96
95
  checklists; Git history preserves those.
97
- - Prefer links to repeated explanations. `openwiki/` should contain paths and
98
- checks, not a second architecture narrative.
96
+ - Prefer links to repeated explanations. Keep the codebase map in
97
+ `architecture.md` and validation routing in `AGENTS.md`, not in parallel
98
+ documentation layers.
99
99
  - Keep user procedures in `guidebook/`; keep internal source paths out of it.
100
100
  - Keep product copy in English unless a reviewed localization layer is added.
101
101
  - A behavior change updates its owning page in the same change. A code-only
@@ -1,7 +1,10 @@
1
- # System Architecture
1
+ # TradingCodex Architecture
2
2
 
3
- This document owns TradingCodex architecture, Django app boundaries, central DB
4
- ownership, service-layer use cases, runtime planes, and core model ownership.
3
+ This document is the codebase map and canonical architecture reference for
4
+ TradingCodex. It owns runtime and dependency boundaries, source and state
5
+ ownership, Django app boundaries, central DB ownership, service-layer use
6
+ cases, and core model ownership. Repository-wide development constraints and
7
+ the minimum validation route remain in [`AGENTS.md`](../AGENTS.md).
5
8
 
6
9
  ## Architecture Summary
7
10
 
@@ -31,43 +34,82 @@ optional role skills, and `strategy-*` skills are managed user overlays. The
31
34
  harness coordinates those layers; it is not the product definition and an
32
35
  overlay never replaces the kernel.
33
36
 
34
- ## Source Tree
37
+ ## Model-Aware Consequence Flow
38
+
39
+ The Codex agent changing this repository and agents running inside a
40
+ TradingCodex workspace may use the same GPT/Codex model family. The
41
+ implementing agent's own likely interpretation and behavior are therefore a
42
+ useful design signal, especially when reviewing prompts, skills, tool exposure,
43
+ and delegation. They are not proof of identical runtime behavior: system
44
+ instructions, context, enabled capabilities, permissions, model versions, and
45
+ reasoning settings may differ.
46
+
47
+ Trace consequential behavior end to end before adding or changing harness
48
+ machinery:
49
+
50
+ ```text
51
+ user request
52
+ -> model interpretation and chosen response path
53
+ -> prompt, skill, and available-context guidance
54
+ -> tool or subagent selection
55
+ -> TradingCodex interface and application-service boundary
56
+ -> workspace artifact, durable record, or external action
57
+ -> safety, audit, latency, context, and user-visible consequences
58
+ ```
59
+
60
+ Fix behavior at the earliest canonical layer that causes it. Do not add a
61
+ router, validator, retry loop, registry, or state machine merely to compensate
62
+ for behavior native Codex already handles or that clearer context and guidance
63
+ can resolve. For consequential prompt, skill, tool, or orchestration changes,
64
+ observe the actual generated TradingCodex harness; unit tests and assumptions
65
+ about the model cover deterministic contracts but do not replace runtime
66
+ evidence.
67
+
68
+ ## Codebase Map
69
+
70
+ Use this map to find the canonical owner, then inspect that owner, its callers,
71
+ and focused tests. It intentionally lists stable directories and entrypoints
72
+ rather than every file.
73
+
74
+ | Path | Ownership |
75
+ | --- | --- |
76
+ | `tradingcodex_service/application/` | Canonical durable use cases, state transitions, provenance, projections, and sensitive-action gates. |
77
+ | `apps/*/models.py`, `apps/*/admin.py` | Central Django ledger models, migrations, and local Admin inspection. Thin `services.py` modules re-export canonical application services where required. |
78
+ | `tradingcodex_service/api.py`, `viewer_api.py`, `web.py` | Local API and read-only web surfaces; these call application services and own no parallel business logic. |
79
+ | `tradingcodex_service/mcp_runtime.py` | TradingCodex MCP definitions, role visibility, validation, and dispatch into application services. |
80
+ | `tradingcodex_cli/` | Attach/update, generated-workspace lifecycle, operator commands, service startup, and the isolated calculation runner. |
81
+ | `workspace_templates/modules/*/files/` | Source templates for projected prompts, skills, agents, hooks, policies, launchers, and workspace contracts. Generated copies are not edited directly. |
82
+ | `frontend/` | Maintainer-only React/TypeScript viewer source. |
83
+ | `tradingcodex_service/static/tradingcodex_web/` | Deterministic generated frontend build served by Django; never hand-edited. |
84
+ | `tests/` | Unit, contract, safety, generated-workspace, platform, and native Codex validation. |
85
+ | `docs/` | Canonical product behavior, architecture, safety, workflow, validation, and release rationale. |
86
+ | `guidebook/` | Concise, task-first user instructions. |
87
+ | `README.md`, `installation.md`, `install.sh` | Product entrypoint, installation contract, and source-development bootstrap. |
88
+
89
+ ### Domain Owners
90
+
91
+ | Concern | Primary source |
92
+ | --- | --- |
93
+ | Runtime home, workspace identity, and service lifecycle | `tradingcodex_service/application/runtime.py`, `workspaces.py`, `health.py`; `tradingcodex_cli/generator.py`, `startup_status.py` |
94
+ | Agent roles, skills, analysis runs, and harness display | `tradingcodex_service/application/agents.py`, `analysis_runs.py`, `harness.py`; `workspace_templates/modules/` |
95
+ | File-native research, datasets, calculations, and provenance | `tradingcodex_service/application/artifact_v2.py`, `research.py`, `research_objects.py`, `datasets.py`, `calculations.py`, `artifact_bindings.py`, `artifact_catalog.py` |
96
+ | Judgments, adoption, forecasts, postmortems, and episode projection | `tradingcodex_service/application/judgments.py`, `decision_episodes.py`, `judgment_postmortems.py`, `forecasting.py`; `decision_packages.py` and `postmortems.py` remain legacy read paths |
97
+ | Knowledge Wikis and managed packages | `tradingcodex_service/application/knowledge_wikis.py`, `managed_package_sources.py`, `wiki_viewer.py` |
98
+ | Policy, orders, approvals, brokers, and final execution | `tradingcodex_service/application/policy.py`, `orders.py`, `execution_gateway.py`, `brokers.py`, plus the corresponding `apps/` models |
99
+ | Viewer, API, Admin, CLI, and MCP surfaces | Interface entrypoints above; all durable behavior remains in `application/` |
100
+ | Generated workspace projection | `tradingcodex_cli/generator.py`, module manifests, and `workspace_templates/modules/*/files/` |
101
+
102
+ ## Conceptual Source Tree
35
103
 
36
104
  ```text
105
+ README.md / installation.md / install.sh
37
106
  pyproject.toml
38
107
  manage.py
39
108
  frontend/
40
- package.json
41
109
  src/
42
- vite.config.ts
43
110
  tradingcodex_service/
44
- static/tradingcodex_web/
45
111
  application/
46
- brokers.py
47
- build_gateway.py
48
- common.py
49
- execution_gateway.py
50
- runtime.py
51
- orders.py
52
- portfolio.py
53
- policy.py
54
- research.py
55
- research_objects.py
56
- research_object_catalog.py
57
- datasets.py
58
- calculations.py
59
- research_specs.py
60
- investment_analysis.py
61
- forecasting.py
62
- evaluation_lab.py
63
- audit.py
64
- harness.py
65
- analysis_runs.py
66
- investment_brains.py
67
- viewer.py
68
- workspace_git.py
69
- workspaces.py
70
- health.py
112
+ static/tradingcodex_web/ # generated frontend build
71
113
  tradingcodex_cli/
72
114
  commands/
73
115
  apps/
@@ -78,16 +120,16 @@ apps/
78
120
  orders/
79
121
  policy/
80
122
  portfolio/
81
- research/
82
- workflows/
83
123
  workspace_templates/
124
+ modules/
84
125
  tests/
85
126
  docs/
127
+ guidebook/
86
128
  ```
87
129
 
88
130
  The source tree above is conceptual. Large service modules may be refactored
89
131
  into packages under `tradingcodex_service/application/` when that improves
90
- maintainability. For the v1 release contract, implementation should split by
132
+ maintainability. For the current release contract, implementation should split by
91
133
  durable service use case rather than by interface surface. Web, API, CLI, MCP,
92
134
  and generated hooks should continue calling the
93
135
  same application services instead of growing separate policy, execution,
@@ -102,7 +144,7 @@ update` never run npm.
102
144
 
103
145
  Durable service implementation lives under
104
146
  `tradingcodex_service/application/`. CLI command implementations live under
105
- `tradingcodex_cli/commands/`. The v1 codebase uses these canonical modules
147
+ `tradingcodex_cli/commands/`. The codebase uses these canonical modules
106
148
  directly.
107
149
 
108
150
  ## Runtime Planes
@@ -280,11 +322,15 @@ refuses remote hosts or an unverified listener PID.
280
322
  | `policy` | Principals, capabilities, restricted list, limits, policy decisions. |
281
323
  | `orders` | Canonical order tickets, order checks, approval receipts, current-turn order grants, broker order timeline, fills, and execution attempts/results. |
282
324
  | `portfolio` | Cash, positions, exposure snapshots, normalized ledger events, broker sync runs, reconciliation runs, paper portfolio state. |
283
- | `research` | Workspace markdown research artifacts, artifact versions, evidence packs, report metadata, file-native source/as-of snapshots, immutable Dataset and Calculation objects, and rebuildable catalog projections. No Django DB models or Admin DB surface. |
284
325
  | `audit` | Append-only audit events, request hashes, result hashes, policy/action provenance. |
285
326
  | `mcp` | Protocol adapter metadata, tool registry, and non-research tool call ledger. |
286
327
  | `integrations` | Broker connections, broker accounts, instrument maps, paper and validation-only execution paths, read-only data adapters, future broker adapter definitions. |
287
328
 
329
+ File-native research has no Django app, DB models, or Admin DB surface.
330
+ Workspace markdown artifacts, versions, evidence packs, source/as-of snapshots,
331
+ immutable Dataset and Calculation objects, and rebuildable catalog projections
332
+ are owned by `tradingcodex_service/application/` services.
333
+
288
334
  ## Service Layer Rules
289
335
 
290
336
  Interfaces must call shared service functions rather than duplicating durable
@@ -394,18 +440,26 @@ Read/write research and audit use cases:
394
440
  - `get_forecast`
395
441
  - `list_forecasts`
396
442
  - `calibration_report`
443
+ - `record_judgment_snapshot`
444
+ - `get_judgment_snapshot`
445
+ - `list_judgment_snapshots`
446
+ - `record_decision_adoption`
447
+ - `record_judgment_process_review`
448
+ - `create_judgment_postmortem`
449
+ - `list_decision_episodes`
450
+ - `get_decision_episode`
397
451
  - `create_evaluation_corpus`
398
452
  - `record_evaluation_run`
399
453
  - `record_blind_human_review`
400
454
  - `compare_evaluation_runs`
401
455
  - `record_audit_event`
402
456
 
403
- Research artifact writes preserve workspace markdown as the source of truth and
404
- carry handoff metadata for source/as-of posture, clear distinctions among facts,
405
- analysis, and assumptions, confidence, missing evidence, next-recipient routing, blocked actions, and
406
- source snapshots. `quality-check --strict` validates the markdown handoff
407
- contract, Evidence Run Card shape, and Validation Card shape without moving
408
- research memory into the central DB.
457
+ Research artifact writes preserve workspace markdown as the source of truth.
458
+ V2 stores a compact identity, status, summary, requirement, and lineage
459
+ envelope in Markdown; receipt v4 seals the exact versions, hashes, and run
460
+ context omitted from that reader-facing file. `quality-check --strict`
461
+ validates the markdown handoff contract, Evidence Run Card shape, and
462
+ Validation Card shape without moving research memory into the central DB.
409
463
 
410
464
  Dataset manifests and Calculation specs/runs use the same immutable research-
411
465
  object primitives as Source Snapshots, ResearchSpecs, and ExperimentRuns.
@@ -462,6 +516,13 @@ producer, exact inputs, and Brain/Strategy/Investor Context lineage. Synthesis,
462
516
  forecasts, and Decision Memory reverify receipts instead of trusting Markdown
463
517
  frontmatter or caller-supplied lineage.
464
518
 
519
+ The Decision Episode viewer is a read projection, not another workflow state
520
+ store. It joins the run, authenticated synthesis and role artifacts, forecasts,
521
+ JudgmentSnapshot, explicit User Adoption, process review/Postmortem, and lesson
522
+ status by `workflow_run_id`. Each lifecycle dimension remains independently
523
+ projected, and ambiguous legacy synthesis candidates are surfaced rather than
524
+ chosen by the viewer.
525
+
465
526
  The viewer adds no run state beside the lightweight native run under
466
527
  `.tradingcodex/mainagent/runs/<analysis-run-id>/` and launches no Codex process.
467
528
  It reads canonical activity and accepted artifacts through the shared service
@@ -1,6 +1,6 @@
1
1
  # Codex-Native Orchestration
2
2
 
3
- Status: v1 contract
3
+ Status: current contract
4
4
 
5
5
  TradingCodex uses Codex itself as the investment research orchestrator. Head
6
6
  Manager interprets the user's original language, answers narrow trusted facts
@@ -34,11 +34,34 @@ attempted before that fallback unless the user selected another provider.
34
34
  Evidence is fit to a claim and intended use rather than accepted or rejected by
35
35
  provider class. Original public records remain preferred when a claim requires
36
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.
37
+ the fields and periods it actually covers. OpenBB is an access layer, not a
38
+ source class: judge a result by its returned provider, identifiers, periods,
39
+ units, adjustments, freshness, and coverage. Current attributable data from a
40
+ credible OpenBB provider is usable on the same terms as data retrieved from
41
+ that provider directly.
42
+
43
+ Use source-of-record evidence when exact legal, regulatory, contractual,
44
+ accounting, filing, or official-policy status is itself material. For market
45
+ prices, normalized fundamentals, estimates, industry developments, event
46
+ chronology, and interpretation, a credible institutional provider or reputable
47
+ secondary publication may support a conclusion when it is attributable,
48
+ current for the claim, within the source's competence, and free of unresolved
49
+ material conflict. Secondary does not mean screen-only. Corroborate in
50
+ proportion to consequence: independently check a conclusion-driving claim when
51
+ it is surprising, disputed, transformed from raw data, or weakly attributed;
52
+ do not impose a fixed source count on ordinary well-supported facts.
53
+
54
+ Missing or ambiguous coverage limits only dependent claims and actions; it
55
+ does not erase independent valid fields or automatically downgrade the whole
56
+ artifact. `decision-grade` evidence may use a mixture of official records,
57
+ OpenBB/provider data, and reputable secondary evidence when every
58
+ conclusion-driving claim has fit-for-purpose support, a current market anchor
59
+ exists when relevant, and material conflicts and gaps are explicit.
60
+ `screen` evidence readiness is for a gap that materially prevents responsible decision
61
+ support, not for the mere absence of a primary source. Confidence records the
62
+ strength and independence of support separately from readiness. This preserves
63
+ evidence usability and decision readiness without adding a provider trust
64
+ score, allowlist, or routing registry.
42
65
 
43
66
  Freshness is relative to the requested as-of, the source's observation or
44
67
  publication cadence, the relevant instrument or venue session, and the claim.
@@ -34,13 +34,13 @@ tools, persistence, memory, policy, approval, broker, order, or execution.
34
34
  ## Canonical Architecture
35
35
 
36
36
  ```text
37
- raw source snapshots
37
+ Research Artifacts
38
38
  |
39
- immutable ResearchSpec + replay manifest
39
+ point-in-time Synthesis
40
40
  |
41
- frozen decision package + forecast events
41
+ Judgment Snapshot + optional User Adoption
42
42
  |
43
- separately observed outcome + proper score
43
+ Forecast outcome + proper score
44
44
  |
45
45
  two-pass postmortem
46
46
  |
@@ -61,8 +61,9 @@ The source of truth is the existing file-native record:
61
61
  - immutable ResearchSpecs and replay manifests;
62
62
  - experiment runs that bind code, data, config, model, prompt, tool, and trial
63
63
  provenance;
64
- - planned Decision Packages, immutable accepted decision snapshots, and
65
- accepted role artifacts;
64
+ - accepted role artifacts and canonical synthesis, immutable JudgmentSnapshots,
65
+ explicit User Adoption events, and legacy DecisionSnapshots retained
66
+ read-only;
66
67
  - append-only forecast issue, revision, resolution, dispute, and score events;
67
68
  - audit-backed postmortems and append-only improve records; and
68
69
  - Investment Brain id/version/content digest, Strategy hash, and Investor
@@ -71,7 +72,7 @@ The source of truth is the existing file-native record:
71
72
  Existing events are not edited to make history look cleaner. Corrections,
72
73
  revisions, supersession, disputes, and retirement are new records.
73
74
 
74
- The rebuildable v2 artifact catalog provides a discovery projection across
75
+ The rebuildable v3 artifact catalog provides a discovery projection across
75
76
  these file-native records without becoming Decision Memory itself. New
76
77
  type-specific service output projects with full canonical identity metadata;
77
78
  older files remain unchanged and may project as `legacy_partial`. Malformed
@@ -260,16 +261,43 @@ selection bias.
260
261
  A good process can have a bad outcome, and a poor process can have a profitable
261
262
  outcome. Outcome knowledge must not rewrite what was reasonably knowable.
262
263
 
263
- The skill seals accepted decision-time state with `./tcx decision snapshot
264
- record`, locks the outcome-blind first pass with `./tcx postmortem
265
- process-review`, and only then creates the outcome-attached report with `./tcx
266
- postmortem create`. These commands accept a JSON payload file or `-` for stdin;
267
- they validate recorded workflow, artifact, forecast, strategy, and
268
- investor-context hashes instead of trusting free-form Markdown. Lesson
264
+ Head Manager autonomously seals an evaluable accepted synthesis with the
265
+ role-scoped `record_judgment_snapshot` MCP tool. Factual and screening synthesis
266
+ is not frozen. A durable `insufficient` abstention may still be frozen when its
267
+ future process or outcome is worth evaluating; it remains action-blocked. The
268
+ snapshot binds the canonical synthesis receipt, analysis run context, cutoff,
269
+ and Forecast refs or the canonical reason Forecast was inapplicable. Caller
270
+ input cannot contradict the synthesis Forecast posture. It has
271
+ `authority: evidence_only` and creates no execution permission.
272
+
273
+ User Adoption is separate. TradingCodex never infers it from conversation,
274
+ viewer activity, a recommendation, or order preparation. The user explicitly
275
+ records an immutable event with `./tcx decision adopt <payload.json|->`; it
276
+ binds the Judgment hash and user's decision statement and may supersede an
277
+ earlier Adoption. Adoption still is not order approval or execution authority.
278
+
279
+ Postmortem locks the outcome-blind first pass with `./tcx postmortem
280
+ process-review`, then creates the outcome-attached report with `./tcx
281
+ postmortem create`. Process quality can be assessed against Judgment alone;
282
+ claims about what the user actually decided require an Adoption ref. Lesson
269
283
  promotion has no direct or generic CLI path: an authenticated
270
284
  `judgment-reviewer` performs it through the role-scoped `promote_lesson` MCP
271
285
  tool.
272
286
 
287
+ ### Decision Episode projection
288
+
289
+ `Decision Episode` is a read model, not stored workflow state. It groups by
290
+ `workflow_run_id`: run record, verified synthesis and role artifacts, Forecast
291
+ events, JudgmentSnapshot, User Adoption, process review/Postmortem, and Lesson
292
+ status. Analysis, judgment, adoption, forecast, postmortem, and lesson keep
293
+ separate statuses; there is no lifecycle enum that falsely implies a single
294
+ linear state machine. Legacy runs with one synthesis use it; multiple legacy
295
+ synthesis candidates produce `ambiguous_legacy_synthesis` and are never
296
+ resolved by guessing. Public cards, search, Library, and Episode projections
297
+ verify every run-bound artifact receipt before displaying its fields or using
298
+ its Dataset and Calculation lineage. The Episode exposes a locked process
299
+ review independently from a completed Postmortem.
300
+
273
301
  ### Separate error loops
274
302
 
275
303
  Do not combine every failure into one Error Book:
@@ -8,18 +8,24 @@ templates, Django Admin, MCP gateway, and the committed React viewer build.
8
8
  Django and WhiteNoise serve the viewer. End users and generated workspaces
9
9
  do not need Node or npm.
10
10
 
11
- ## v1 Release Contract
11
+ ## v2 Release Contract
12
12
 
13
- `1.0.0` is the first supported public contract for the current Web, Admin, API,
14
- CLI, MCP, generated workspace, application-service, policy, approval, audit,
15
- and execution boundaries.
13
+ `2.0.0` introduced the breaking public contract for compact Artifact v2,
14
+ receipt v4,
15
+ JudgmentSnapshot/User Adoption, and Decision Episode reads across Web, API,
16
+ CLI, MCP, and application services. Existing authenticated v1 Markdown,
17
+ version archives, and receipts remain byte-preserved and readable through the
18
+ v2 projection; all new artifact writes use v2. `2.1.0` is the first hardened
19
+ minor release of that contract, adding fail-closed public projections,
20
+ outcome-blind ordering enforcement, and complete Episode lifecycle detail.
16
21
 
17
- The v1 baseline is intentionally clean:
22
+ The release baseline is intentionally clean:
18
23
 
19
24
  - new installations attach an empty workspace with `tcx attach`
20
- - v1 workspaces update through the documented v1 package and workspace flow
21
- - generated files, runtime state, and database schema use the v1 contract
22
- - historical prerelease compatibility surfaces are not part of the v1 runtime
25
+ - v1 workspaces upgrade only through the explicit documented v1-to-v2 update
26
+ path; other major-version mismatches fail closed
27
+ - generated files, runtime state, and database schema use the v2 contract
28
+ - old public artifact request fields are rejected rather than accepted as aliases
23
29
  - paper execution is built in; live execution remains disabled by default and
24
30
  requires an installed provider plus every policy, approval, idempotency,
25
31
  connection, confirmation, sync, and audit gate
@@ -28,7 +34,7 @@ If the selected runtime database contains prerelease migrations or project
28
34
  tables without clean v1 migration history, startup and bootstrap fail closed.
29
35
  The error reports the selected `TRADINGCODEX_HOME` and database path.
30
36
  TradingCodex does not migrate, delete, archive, or back up incompatible
31
- prerelease/non-v1 state.
37
+ prerelease state.
32
38
 
33
39
  The operator must choose one explicit recovery path:
34
40
 
@@ -38,7 +44,7 @@ The operator must choose one explicit recovery path:
38
44
  2. Stop every TradingCodex process, then archive or remove the old selected
39
45
  home/database manually before retrying.
40
46
 
41
- There is no automatic prerelease migration or fallback path in v1.
47
+ There is no automatic prerelease migration or fallback path.
42
48
 
43
49
  TradingCodex releases software; they do not promote a model policy or establish
44
50
  investment-performance claims. Those claims require the independent evidence
@@ -183,8 +189,8 @@ also require the disposable-workspace and Codex-native checks documented in
183
189
  `.github/workflows/ci.yml` is test-only. Parallel Ubuntu jobs run the frontend
184
190
  determinism check and the Python 3.11 source/framework gates. It does
185
191
  not construct or upload a wheel or source distribution, run release-upgrade or
186
- native-runtime matrices, or publish anything. Documentation-, guide-, OpenWiki-,
187
- and asset-only pushes or pull requests skip this workflow. Source-bearing pull
192
+ native-runtime matrices, or publish anything. Documentation-, guide-, and
193
+ asset-only pushes or pull requests skip this workflow. Source-bearing pull
188
194
  requests and pushes still receive the normal source-quality checks.
189
195
 
190
196
  `.github/workflows/release.yml` is manual-only. Every run requires an explicit
@@ -297,14 +303,14 @@ uvx --refresh --from "tradingcodex==$ReleaseVersion" tcx attach . --from "tradin
297
303
  Verify the PyPI project page, filenames, metadata, and release notes after the
298
304
  smokes pass.
299
305
 
300
- ## v1 Update Policy
306
+ ## v2 Update Policy
301
307
 
302
- TradingCodex has two update layers within the v1 line:
308
+ TradingCodex has two update layers within the v2 line:
303
309
 
304
310
  - package update: run the desired package with `uvx --refresh`, upgrade an
305
311
  installed `uv` tool, or use `install.sh --update`
306
312
  - workspace update: run `tcx update <workspace>` from that package to refresh
307
- generated files, indexes, project MCP configuration, hooks, and the v1 schema
313
+ generated files, indexes, project MCP configuration, hooks, and the v2 schema
308
314
 
309
315
  `tcx update` preserves workspace identity and workspace-native user artifacts.
310
316
  It may replace only generated paths owned by
@@ -313,7 +319,7 @@ Codex and open a new task so project configuration, prompts, skills, hooks, and
313
319
  MCP state reload together.
314
320
 
315
321
  A future major-version migration requires its own explicit product contract and
316
- validation. v1 release automation does not infer one.
322
+ validation. Release automation does not infer one.
317
323
 
318
324
  ## What Is Not Deployed
319
325
 
@@ -20,7 +20,7 @@ binding load together. Start a new task after restart rather than resuming an
20
20
  already-open task, which can retain the prior generated hook snapshot.
21
21
 
22
22
  The template source tree may be refactored for maintainability, but generated
23
- output paths are the v1 release contract. Module ids, module dependency
23
+ output paths are the current release contract. Module ids, module dependency
24
24
  resolution, and rendered paths such as `.codex/config.toml`, `.agents/skills/*`,
25
25
  `.tradingcodex/*`, `trading/*`, and `./tcx` must remain stable unless docs and
26
26
  tests intentionally change the generated workspace contract. The generated
@@ -256,19 +256,19 @@ Generated workspaces contain:
256
256
  - Codex-style operating style in the root `head-manager` prompt: scoped
257
257
  `AGENTS.md` handling, concise preambles, selective planning, exact safe
258
258
  workspace reads, native `apply_patch` edits, dirty-worktree respect, concise
259
- maintenance handoffs, and brief chat replies that point to saved head-manager
260
- synthesis reports once accepted artifacts exist without making the saved
261
- research report shallow
259
+ maintenance handoffs, and self-contained user answers whose saved synthesis
260
+ link supplements rather than replaces the conclusion and evidence
262
261
  - instruction/skill separation: root `head-manager` instructions own identity,
263
262
  root coordination, durable root safety boundaries, fail-closed dispatch,
264
263
  skill routing, optional-skill management, and approved action boundaries;
265
264
  `fixed-role.md` owns shared child safety, evidence, compact artifact, and
266
265
  evidence-backed gap handling; fixed subagent TOML files own specialist identity,
267
266
  MCP/tool config, and role-specific prohibitions; repo skills are
268
- dependency-light capability procedures for workflow maps, compact
269
- assignment-envelope templates, optional skill file management, quality
270
- gates, synthesis, and postmortems, without declaring role ownership or
271
- direct inter-skill call chains
267
+ canonical bundles with concise `SKILL.md` entrypoints and task-routed
268
+ resources at purpose-named paths. They provide dependency-light capability
269
+ procedures for workflow maps, compact assignment-envelope templates,
270
+ optional skill file management, quality gates, synthesis, and postmortems,
271
+ without declaring role ownership or direct inter-skill call chains
272
272
  - no-overlap handoff contract: each role owns its specialist question, downstream roles consume accepted artifacts, and missing/stale/weak upstream work returns `revise`, `blocked`, or `waiting` instead of being silently redone by another role
273
273
  - source routing: an evidence producer follows `tcx-source-gate` and hands
274
274
  compact SourceSnapshot/Dataset IDs forward. A Dataset is created only for
@@ -389,12 +389,11 @@ Generated workspaces contain:
389
389
  - verification-budget copy is task-specific: native actions, connector, and
390
390
  strategy work verifies its own service or validation evidence instead of
391
391
  research source-freshness fields
392
- - context-efficient research handoffs: stored markdown frontmatter includes
393
- `context_summary` so downstream roles can consume artifact paths and summaries
394
- before opening full markdown; bounded name-only deferred-tool discovery plus
395
- at most one selected schema avoids injecting whole provider catalogs or
396
- multiple schemas into context; `reader_summary` and `next_action` keep the
397
- first-read experience clear for non-expert users
392
+ - context-efficient research handoffs: compact v2 frontmatter includes one
393
+ shared `summary`, two readiness axes, exact IDs, and only applicable blocks;
394
+ receipt-only hashes and run-context digests stay out of Markdown. Bounded
395
+ name-only deferred-tool discovery plus at most one selected schema avoids
396
+ injecting whole provider catalogs or multiple schemas into context
398
397
  - lightweight analysis run state:
399
398
  `.tradingcodex/mainagent/runs/<analysis-run-id>/run.json` stores only run
400
399
  identity, request hash/size, timestamps, and sealed strategy/Investor Context
@@ -645,9 +644,10 @@ a generated-file inventory. The module lock is an exact schema: it contains
645
644
  only `format`, `schema_version`, `generated_at`, `workspace_id`,
646
645
  `tradingcodex_version`, `tradingcodex_package_spec`, `tradingcodex_home`,
647
646
  `home_source`, `tradingcodex_db_path`, `db_source`, `modules`, and
648
- `generated_files`. Versions use canonical PEP 440 syntax and stay within the
649
- running package's major version; status inspection alone may read a newer
650
- same-major lock so it can direct the user to refresh the package. Module entries
647
+ `generated_files`. Versions use canonical PEP 440 syntax. Routine updates stay
648
+ within the running package's major version; the one explicit cross-major path is
649
+ an authenticated v1 workspace updating to v2. Status inspection alone may read
650
+ a newer same-major lock so it can direct the user to refresh the package. Module entries
651
651
  contain exactly `id`, `description`, and `capabilities` with unique ids.
652
652
  Generated-file records contain exactly a lowercase SHA-256 and an owner of
653
653
  `template` or `projection`. Timestamps must be timezone-aware, workspace ids use
@@ -1139,8 +1139,12 @@ service, the hook separately surfaces direct Viewer and Wiki links as a Codex
1139
1139
  `systemMessage`. It emits no viewer URL for an incompatible or unreachable
1140
1140
  service. When an update is available and recommendations are not suppressed,
1141
1141
  the same message also includes the workspace/latest versions, workspace
1142
- launcher command, and restart step. Update details are not added to agent
1143
- context, and the warning never grants update authority.
1142
+ launcher command, and restart step. On `source=startup` only, the hook also
1143
+ copies that compact update message into optional `first_response_notice`
1144
+ developer context so Head Manager includes it once at the end of the first
1145
+ user-facing response; resume, clear, compact, and missing-source starts omit
1146
+ the field. The full update status is never added to agent context, and neither
1147
+ notice grants update authority.
1144
1148
 
1145
1149
  Build authorization retains `exact_first_line` and managed-skill authorization
1146
1150
  retains `exact_first_lines` as canonical plain-token examples for copy/paste