tradingcodex 1.0.0__tar.gz → 1.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/CHANGELOG.md +32 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/PKG-INFO +1 -1
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/docs/README.md +1 -1
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/docs/deployment.md +24 -15
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/docs/execution-without-subagent-plan.md +1 -1
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/docs/generated-workspaces.md +13 -4
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/docs/release-readiness.md +64 -29
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/docs/research-memory-and-artifacts.md +6 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/docs/roles-skills-and-workflows.md +9 -1
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/docs/user-facing-skills.md +5 -1
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/installation.md +9 -1
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_codex_cli_compat.py +4 -4
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_codex_native_orchestration.py +20 -1
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_dynamic_artifact_quality.py +21 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_e2e_user_scenarios.py +3 -2
- tradingcodex-1.0.2/tests/test_guidebook_contract.py +71 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_platform_runtime.py +62 -6
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_release_contract.py +22 -11
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_research_forecast_surfaces.py +45 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_security_invariants.py +16 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_skill_runtime_boundaries.py +4 -1
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex.egg-info/PKG-INFO +1 -1
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex.egg-info/SOURCES.txt +3 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/commands/bootstrap.py +46 -1
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/commands/doctor.py +3 -1
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/agents.py +16 -10
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/artifact_quality.py +25 -6
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/forecasting.py +2 -2
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/mcp_runtime.py +88 -11
- tradingcodex-1.0.2/tradingcodex_service/version.py +1 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/codex-base/files/.codex/prompts/base_instructions/head-manager.md +1 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/research_artifact.schema.json +33 -3
- tradingcodex-1.0.2/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-artifact/SKILL.md +64 -0
- tradingcodex-1.0.2/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-artifact/agents/openai.yaml +6 -0
- tradingcodex-1.0.0/tradingcodex_service/version.py +0 -1
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/CONTRIBUTING.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/LICENSE +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/MANIFEST.in +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/NOTICE +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/README.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/TRADEMARKS.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/__init__.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/audit/__init__.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/audit/admin.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/audit/apps.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/audit/migrations/0001_v1_initial.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/audit/migrations/__init__.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/audit/models.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/harness/__init__.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/harness/admin.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/harness/apps.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/harness/migrations/0001_v1_initial.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/harness/migrations/__init__.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/harness/models.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/harness/templatetags/__init__.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/integrations/__init__.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/integrations/admin.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/integrations/apps.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/integrations/migrations/0001_v1_initial.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/integrations/migrations/__init__.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/integrations/models.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/mcp/__init__.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/mcp/admin.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/mcp/apps.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/mcp/migrations/0001_v1_initial.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/mcp/migrations/__init__.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/mcp/models.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/mcp/services.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/orders/__init__.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/orders/admin.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/orders/apps.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/orders/migrations/0001_v1_initial.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/orders/migrations/__init__.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/orders/models.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/orders/services.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/policy/__init__.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/policy/admin.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/policy/apps.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/policy/migrations/0001_v1_initial.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/policy/migrations/__init__.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/policy/models.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/policy/services.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/portfolio/__init__.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/portfolio/admin.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/portfolio/apps.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/portfolio/migrations/0001_v1_initial.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/portfolio/migrations/__init__.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/apps/portfolio/models.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/assets/tradingcodex-banner.svg +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/docs/codex-native-orchestration.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/docs/components.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/docs/core-concepts-and-rules.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/docs/decision-memory.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/docs/financial-workflow-references.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/docs/guardrails.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/docs/harness.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/docs/improvement-loop.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/docs/interfaces-and-surfaces.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/docs/investment-brain-plugins.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/docs/licensing-and-commercialization.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/docs/product-direction.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/docs/safety-policy-and-execution.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/docs/system-architecture.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/docs/validation-and-test-plan.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/frontend/index.html +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/frontend/package-lock.json +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/frontend/package.json +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/frontend/src/App.tsx +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/frontend/src/api.ts +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/frontend/src/domain.ts +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/frontend/src/features/LibraryPage.tsx +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/frontend/src/features/SkillsPage.tsx +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/frontend/src/features/SystemPage.tsx +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/frontend/src/main.tsx +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/frontend/src/navigation.js +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/frontend/src/navigation.test.js +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/frontend/src/styles.css +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/frontend/src/ui.tsx +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/frontend/src/viewer-data.js +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/frontend/tsconfig.json +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/frontend/vite.config.ts +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/install.sh +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/pyproject.toml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/setup.cfg +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_artifact_authentication.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_brain_skill.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_broker_center_prd.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_build_contract_metadata.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_build_hook.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_build_turn_grant.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_clean_v1_cli_audit.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_codex_cli_contract.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_dashboard_skill.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_decision_memory_core.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_dev_bootstrap.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_evaluation_lab_hardening.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_evaluation_profiles.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_investment_analysis.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_investment_brain_cli.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_investment_brain_prompt_layers.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_investment_brain_provenance.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_investment_brain_registry.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_investor_context.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_mcp_broker_release_health.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_mcp_operator_authority.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_native_execution_gateway.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_order_turn_grant.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_provider_source_approval.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_research_spec_profiles.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_runtime_paths.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_runtime_profile.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_source_snapshot_agent_contract.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_v1_migrations.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_v1_state_integrity.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_viewer.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tests/test_workspace_git_contract.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex.egg-info/dependency_links.txt +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex.egg-info/entry_points.txt +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex.egg-info/requires.txt +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex.egg-info/top_level.txt +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/__init__.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/__main__.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/commands/__init__.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/commands/build.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/commands/connectors.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/commands/db.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/commands/decision.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/commands/evaluation.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/commands/forecast.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/commands/home.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/commands/investment_brains.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/commands/investor_context.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/commands/mcp.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/commands/mode.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/commands/orders.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/commands/policy.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/commands/profile.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/commands/research.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/commands/skills.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/commands/strategies.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/commands/subagents.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/commands/utils.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/commands/workflow.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/commands/workspaces.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/generator.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/mcp_stdio.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/package_source.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/service_autostart.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/startup_status.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_cli/versioning.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/__init__.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/admin.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/api.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/__init__.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/analysis_runs.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/artifact_bindings.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/audit.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/brokers.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/build_gateway.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/common.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/components.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/context_budget.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/customization.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/decision_packages.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/evaluation_lab.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/execution_gateway.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/git_subprocess.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/harness.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/health.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/investment_analysis.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/investment_brains.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/investor_context.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/markdown_preview.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/operator_authority.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/orders.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/policy.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/portfolio.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/postmortems.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/research.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/research_specs.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/runtime.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/runtime_mode.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/source_snapshots.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/viewer.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/workspace_git.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/application/workspaces.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/asgi.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/log_safety.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/runtime_profile.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/settings.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/static/tradingcodex_admin/favicon.svg +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/static/tradingcodex_web/assets/index-CFoXYUtq.js +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/static/tradingcodex_web/assets/index-DYzj_xRR.css +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/static/tradingcodex_web/index.html +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/urls.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/viewer_api.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/web.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/tradingcodex_service/wsgi.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/__init__.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/audit/files/.tradingcodex/audit/README.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/audit/files/trading/audit/.gitkeep +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/audit/module.json +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/codex-base/files/.codex/config.toml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/codex-base/files/.codex/hooks/tradingcodex_hook.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/codex-base/files/.codex/hooks.json +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/codex-base/files/.codex/rules/tradingcodex.rules +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/codex-base/files/.tradingcodex/cli.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/codex-base/files/.tradingcodex/config.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/codex-base/files/AGENTS.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/codex-base/files/pyproject.toml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/codex-base/files/tcx +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/codex-base/files/tcx.cmd +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/codex-base/module.json +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/policies/restricted-list.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/approval_receipt.schema.json +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/audit_event.schema.json +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/evidence_pack.schema.json +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/execution_result.schema.json +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/fundamental_report.schema.json +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/news_report.schema.json +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/order_ticket.schema.json +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/portfolio_review.schema.json +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/postmortem_report.schema.json +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/risk_report.schema.json +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/technical_report.schema.json +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/thesis.schema.json +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/valuation.schema.json +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/enforcement-guardrails/module.json +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/fundamental-analyst.toml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/instrument-analyst.toml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/judgment-reviewer.toml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/macro-analyst.toml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/news-analyst.toml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/portfolio-manager.toml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/risk-manager.toml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/technical-analyst.toml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/valuation-analyst.toml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/fixed-subagents/files/.tradingcodex/mainagent/skill-change-proposals/.gitkeep +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/fixed-subagents/module.json +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/guidance-guardrails/files/.tradingcodex/guidance/guardrails.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/guidance-guardrails/files/.tradingcodex/guidance/task-quality-checklist.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/guidance-guardrails/module.json +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/information-barriers/files/.tradingcodex/secrets.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/information-barriers/files/trading/forecasts/.gitkeep +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/information-barriers/files/trading/market-data/.gitkeep +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/information-barriers/files/trading/portfolio/.gitkeep +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/information-barriers/files/trading/reports/fundamental/.gitkeep +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/information-barriers/files/trading/reports/instrument/.gitkeep +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/information-barriers/files/trading/reports/macro/.gitkeep +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/information-barriers/files/trading/reports/news/.gitkeep +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/information-barriers/files/trading/reports/policy/.gitkeep +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/information-barriers/files/trading/reports/portfolio/.gitkeep +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/information-barriers/files/trading/reports/postmortem/.gitkeep +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/information-barriers/files/trading/reports/risk/.gitkeep +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/information-barriers/files/trading/reports/technical/.gitkeep +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/information-barriers/files/trading/reports/valuation/.gitkeep +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/information-barriers/files/trading/research/.gitkeep +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/information-barriers/module.json +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/paper-trading/module.json +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-automate/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-automate/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/references/bundle-contract.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-build/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-build/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-dashboard/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-dashboard/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-investor-context/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-investor-context/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-memory/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-memory/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-allow/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-allow/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-cancel/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-cancel/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-submit/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-submit/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-plan/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-plan/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-server/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-server/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-strategy/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-strategy/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/references/context-and-override.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/references/decision-quality-spine.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/fundamental-analyst/tcx-fundamental/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/fundamental-analyst/tcx-fundamental/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/instrument-analyst/tcx-instrument/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/instrument-analyst/tcx-instrument/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/judgment-reviewer/tcx-judgment/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/judgment-reviewer/tcx-judgment/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/macro-analyst/tcx-macro/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/macro-analyst/tcx-macro/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/news-analyst/tcx-news/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/news-analyst/tcx-news/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-order-draft/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-order-draft/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-portfolio/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-portfolio/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-order-approve/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-order-approve/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-policy/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-policy/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-risk/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-risk/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-anti-overfit/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-anti-overfit/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-data-qc/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-data-qc/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-evidence/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-evidence/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-forecast/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-forecast/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-scenarios/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-scenarios/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-source-gate/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-source-gate/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/technical-analyst/tcx-technical/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/technical-analyst/tcx-technical/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/valuation-analyst/tcx-valuation/SKILL.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/valuation-analyst/tcx-valuation/agents/openai.yaml +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/repo-skills/module.json +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/enforcer/README.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/gateway/README.md +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/server.py +0 -0
- {tradingcodex-1.0.0 → tradingcodex-1.0.2}/workspace_templates/modules/tradingcodex-mcp/module.json +0 -0
|
@@ -2,6 +2,38 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 1.0.2 - 2026-07-15
|
|
6
|
+
|
|
7
|
+
- Preserve an attached release workspace's explicit `TRADINGCODEX_HOME`,
|
|
8
|
+
explicit database override, and projected service address when an update is
|
|
9
|
+
launched through `uvx` instead of the generated wrapper. This prevents a
|
|
10
|
+
custom or isolated v1.0.0 workspace from silently switching to the platform
|
|
11
|
+
default ledger during a package refresh.
|
|
12
|
+
- Fix the public guide's full-width desktop grid so viewport gutters no longer
|
|
13
|
+
collapse the reading column, and align the provider-to-order header with the
|
|
14
|
+
primary Guide/Reference/GitHub navigation. Add route, fragment, mobile-menu,
|
|
15
|
+
and desktop-layout contract tests.
|
|
16
|
+
- Reduce hosted automation usage: normal CI, GitHub Pages deployment, and
|
|
17
|
+
release verification now use one job each; PyPI publication adds only its
|
|
18
|
+
protected upload job. Guide-only pushes skip the source CI workflow.
|
|
19
|
+
|
|
20
|
+
## 1.0.1 - 2026-07-15
|
|
21
|
+
|
|
22
|
+
- Add the shared `tcx-artifact` skill to all nine producing fixed roles so
|
|
23
|
+
deferred MCP calls receive the exact research-artifact, thesis-lifecycle,
|
|
24
|
+
retry, and forecast persistence procedure.
|
|
25
|
+
- Expand `create_research_artifact` and `issue_forecast` MCP schemas to expose
|
|
26
|
+
state-specific lifecycle fields, one-range probability rules, RFC 3339
|
|
27
|
+
timestamps, and the complete base-rate contract before a call is attempted.
|
|
28
|
+
Artifact validation errors now name the supported alternative fields, and
|
|
29
|
+
MCP resource-template discovery returns an empty supported list. Omitted
|
|
30
|
+
forecast `issued_at` and revision `revised_at` values now reuse the same
|
|
31
|
+
service receipt timestamp as `recorded_at`, eliminating a microsecond race
|
|
32
|
+
that rejected otherwise valid agent calls.
|
|
33
|
+
- Require Codex CLI 0.144.4, the validated reference for generated permission
|
|
34
|
+
profiles, V2 fixed-role dispatch, hooks, and deferred TradingCodex MCP calls.
|
|
35
|
+
Older clients now fail the runtime doctor check with upgrade guidance.
|
|
36
|
+
|
|
5
37
|
## 1.0.0 - 2026-07-15
|
|
6
38
|
|
|
7
39
|
- Raise the validated Codex CLI reference to 0.144.4 while retaining the
|
|
@@ -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.
|
|
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
|
|
|
@@ -109,8 +109,12 @@ files are never replaced.
|
|
|
109
109
|
|
|
110
110
|
## Maintainer Prerequisites
|
|
111
111
|
|
|
112
|
-
Release verification uses Python 3.11 and Node 22
|
|
113
|
-
|
|
112
|
+
Release verification uses Python 3.11 and Node 22. The hosted CI budget runs
|
|
113
|
+
the complete source, frontend, and package gates once on Python 3.11 instead
|
|
114
|
+
of multiplying every push across the supported Python range and native
|
|
115
|
+
platforms. Maintainers run additional supported-version or native-platform
|
|
116
|
+
checks locally or through an explicit temporary/manual workflow when a change
|
|
117
|
+
touches compatibility-sensitive code. Node is a maintainer-only build
|
|
114
118
|
dependency.
|
|
115
119
|
|
|
116
120
|
Configure PyPI Trusted Publishing for:
|
|
@@ -159,9 +163,11 @@ also require the disposable-workspace and Codex-native checks documented in
|
|
|
159
163
|
|
|
160
164
|
## CI And Release Automation
|
|
161
165
|
|
|
162
|
-
`.github/workflows/ci.yml` is test-only.
|
|
163
|
-
|
|
164
|
-
|
|
166
|
+
`.github/workflows/ci.yml` is test-only. One Ubuntu/Python 3.11 job runs the
|
|
167
|
+
frontend build, complete Python suite and framework gates, clean package
|
|
168
|
+
construction, and the wheel smoke. Guide-only pushes skip this workflow because
|
|
169
|
+
the Pages workflow validates and deploys only static guide files. CI never
|
|
170
|
+
publishes.
|
|
165
171
|
|
|
166
172
|
`.github/workflows/release.yml` is manual-only. Every run requires an explicit
|
|
167
173
|
`release_version`. A dry run may build from any selected ref with
|
|
@@ -174,11 +180,13 @@ macOS and Windows wheel smokes. It never publishes.
|
|
|
174
180
|
- the tagged commit is on `origin/main`
|
|
175
181
|
- the wheel and source-distribution filenames carry the same version
|
|
176
182
|
- the built wheel passes the Ubuntu smoke
|
|
177
|
-
- the exact uploaded artifact passes native macOS and Windows smokes
|
|
178
183
|
- the protected `pypi` environment approves Trusted Publishing
|
|
179
184
|
|
|
180
|
-
The
|
|
181
|
-
|
|
185
|
+
The release workflow has one build/verification job. When publication is
|
|
186
|
+
requested, one protected PyPI job downloads that exact artifact and uploads it;
|
|
187
|
+
no job rebuilds the distribution after verification. Native macOS and Windows
|
|
188
|
+
release smokes are local or explicitly scheduled maintainer gates rather than
|
|
189
|
+
automatic jobs on every release.
|
|
182
190
|
|
|
183
191
|
## User Guide Pages
|
|
184
192
|
|
|
@@ -189,10 +197,10 @@ prompts, workspace viewing, reusable skills, and everyday recovery. The detailed
|
|
|
189
197
|
product rules remain canonical in `README.md`, `installation.md`, and `docs/`;
|
|
190
198
|
the guide links back to those sources rather than replacing them.
|
|
191
199
|
|
|
192
|
-
`.github/workflows/deploy-user-guide.yml`
|
|
193
|
-
|
|
194
|
-
It can also be run manually. It does not build or
|
|
195
|
-
the Django service, or a production Node runtime.
|
|
200
|
+
`.github/workflows/deploy-user-guide.yml` uses one job to configure, upload,
|
|
201
|
+
and deploy only `guidebook/` to GitHub Pages after a push to `main` that changes
|
|
202
|
+
the guide or its workflow. It can also be run manually. It does not build or
|
|
203
|
+
deploy the Python package, the Django service, or a production Node runtime.
|
|
196
204
|
|
|
197
205
|
GitHub Pages is configured to use **GitHub Actions** as its publishing source.
|
|
198
206
|
The guide for this repository is published at
|
|
@@ -214,8 +222,9 @@ The guide for this repository is published at
|
|
|
214
222
|
```
|
|
215
223
|
|
|
216
224
|
5. In GitHub Actions, run `Manual Release` from that tag with the exact
|
|
217
|
-
`release_version`. Use `publish_pypi=
|
|
218
|
-
`publish_pypi=
|
|
225
|
+
`release_version`. Use `publish_pypi=true` for an approved publication; use
|
|
226
|
+
the optional `publish_pypi=false` rehearsal when release risk warrants an
|
|
227
|
+
additional hosted build.
|
|
219
228
|
|
|
220
229
|
Pushing a branch or tag does not publish by itself.
|
|
221
230
|
|
|
@@ -252,7 +261,7 @@ sh "$SOURCE_ROOT/install.sh" \
|
|
|
252
261
|
On native Windows PowerShell:
|
|
253
262
|
|
|
254
263
|
```powershell
|
|
255
|
-
$ReleaseVersion = "1.0.
|
|
264
|
+
$ReleaseVersion = "1.0.2"
|
|
256
265
|
$Workspace = Join-Path $env:TEMP "tcx-pypi-$ReleaseVersion"
|
|
257
266
|
New-Item -ItemType Directory -Force $Workspace | Out-Null
|
|
258
267
|
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
|
|
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
|
|
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
|
-
|
|
744
|
-
|
|
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).
|
|
@@ -1212,6 +1212,15 @@ service address projected by the launcher. Explicit process environment values s
|
|
|
1212
1212
|
doctor then validates both home and DB projection and requires update when the
|
|
1213
1213
|
generated ledger contract is stale.
|
|
1214
1214
|
|
|
1215
|
+
An index/package-runner update such as `uvx --refresh --from tradingcodex tcx
|
|
1216
|
+
update . --from tradingcodex` does not pass through the generated wrapper.
|
|
1217
|
+
Before regeneration, update therefore restores a validated workspace's
|
|
1218
|
+
recorded explicit home and DB override plus the service address from its
|
|
1219
|
+
generated project MCP configuration. It does not pin a recorded
|
|
1220
|
+
`platform_default` absolute path, so a copied workspace can resolve the native
|
|
1221
|
+
default on its destination platform. A new explicit process value remains the
|
|
1222
|
+
only implicit-free way to select a different runtime identity.
|
|
1223
|
+
|
|
1215
1224
|
TOML, YAML, JSON, POSIX shell, CMD, and Python values are serialized with
|
|
1216
1225
|
format-specific literals. This is required for macOS paths with spaces and
|
|
1217
1226
|
Windows drive-letter/backslash paths. Generated code/config uses LF line
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
# TradingCodex 1.0.
|
|
1
|
+
# TradingCodex 1.0.2 Release Status
|
|
2
2
|
|
|
3
|
-
Status:
|
|
4
|
-
|
|
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, and publication remain pending
|
|
6
5
|
Updated: 2026-07-15
|
|
7
6
|
|
|
8
|
-
This page records the current `1.0.
|
|
7
|
+
This page records the current `1.0.2` release state. It is not an implementation
|
|
9
8
|
roadmap and does not treat source changes as proof that an exact distribution
|
|
10
9
|
artifact or public release has passed its gates.
|
|
11
10
|
|
|
12
|
-
## v1.0.
|
|
11
|
+
## v1.0.2 Contract
|
|
13
12
|
|
|
14
13
|
- `tradingcodex_service/version.py` is the single version source for package
|
|
15
14
|
metadata, `tcx --version`, generated workspaces, release input, and tags.
|
|
@@ -26,29 +25,63 @@ artifact or public release has passed its gates.
|
|
|
26
25
|
requires an installed provider plus every documented safety gate.
|
|
27
26
|
- The React viewer is a committed static build served by Django and
|
|
28
27
|
WhiteNoise; Node remains a maintainer-only build dependency.
|
|
29
|
-
-
|
|
30
|
-
|
|
28
|
+
- Package-runner updates preserve validated explicit home, database, and
|
|
29
|
+
service-address identity unless the operator supplies a replacement.
|
|
30
|
+
- PyPI publication is manual and tag-bound. Hosted automation uses one full CI
|
|
31
|
+
job, one Pages job, and one release build job; publication adds only the
|
|
32
|
+
protected artifact-upload job.
|
|
31
33
|
|
|
32
34
|
## Current Readiness
|
|
33
35
|
|
|
34
36
|
| Area | Current state | Evidence or remaining gate |
|
|
35
37
|
| --- | --- | --- |
|
|
36
|
-
| Version identity | Verified in the working tree | `TRADINGCODEX_VERSION` is `1.0.
|
|
38
|
+
| Version identity | Verified in the working tree | `TRADINGCODEX_VERSION` is `1.0.2`; `pyproject.toml` reads it dynamically; `tcx --version` uses the same source. |
|
|
37
39
|
| 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 |
|
|
39
|
-
| Interfaces and safety |
|
|
40
|
-
| Frontend | Viewer
|
|
41
|
-
| Release automation | Structurally verified |
|
|
42
|
-
| Distribution artifacts | Exact
|
|
43
|
-
| Git tag and PyPI | Not performed by this status |
|
|
40
|
+
| Workspace baseline | Exact candidate update acceptance passes locally | A disposable explicit-home/explicit-DB workspace updated through a package-runner-style process with those paths and its custom service address preserved. Prior v1.0.1 native role/artifact acceptance remains the unchanged harness baseline. |
|
|
41
|
+
| 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. |
|
|
42
|
+
| Frontend and guidebook | Viewer and guide browser acceptance pass | Ten viewer tests and deterministic build pass. The guide passes local route/fragment checks, 1920px layout with a 768px reading column, consistent provider navigation, and real 390px mobile menu routing without horizontal overflow. |
|
|
43
|
+
| Release automation | Structurally verified | Contract tests enforce one normal CI job, one Pages deploy job, and one release build plus optional protected publication job. A dry-run rehearsal remains available when release risk warrants the extra hosted run. |
|
|
44
|
+
| Distribution artifacts | Exact local candidate passes | Fresh `1.0.2` sdist/wheel, `twine check`, and isolated packaged-wheel smoke passed on macOS. |
|
|
45
|
+
| Git tag and PyPI | Not performed by this status | Main CI, annotated `v1.0.2` tag, protected-environment approval, and manual publication remain release-operator actions. |
|
|
44
46
|
| Post-publish verification | Blocked on publication | Exact-version POSIX and native Windows attach/doctor smokes run only after PyPI contains the immutable artifacts. |
|
|
45
47
|
|
|
46
48
|
Release-branch status describes candidate source shape, not release sign-off.
|
|
47
49
|
The merged commit and exact uploaded artifacts remain authoritative.
|
|
48
50
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
The local v1.0.2 candidate evidence recorded on 2026-07-15 is:
|
|
52
|
+
|
|
53
|
+
- The first full suite found six stale next-version fixtures after the version
|
|
54
|
+
bump; after correcting those fixtures, the final full-suite rerun reported
|
|
55
|
+
**624 passed** with three existing Pydantic deprecation warnings.
|
|
56
|
+
- `python3.11 manage.py check`, migration dry-run, compile pass, skill
|
|
57
|
+
validation, JSON-schema validation, and diff checks: passed.
|
|
58
|
+
- `npm ci --prefix frontend`, the ten-test frontend suite, typecheck/build, and
|
|
59
|
+
deterministic committed-asset comparison: passed.
|
|
60
|
+
- A package-runner-style update smoke preserved an explicit home, explicit DB,
|
|
61
|
+
and custom loopback service address while moving the workspace runtime to
|
|
62
|
+
`1.0.2`.
|
|
63
|
+
- Fresh `1.0.2` source and wheel distributions passed `twine check`; an
|
|
64
|
+
isolated macOS wheel install reported runtime version `1.0.2` and completed
|
|
65
|
+
the native platform smoke with a user-home path containing spaces.
|
|
66
|
+
- A fresh generated development workspace passed `tcx doctor` and the strict
|
|
67
|
+
current-reference Codex CLI contract, including all eight trusted hooks.
|
|
68
|
+
- Native artifact persistence completed with one exact
|
|
69
|
+
`fundamental-analyst` child after it loaded `tcx-artifact`; the accepted
|
|
70
|
+
artifact id was
|
|
71
|
+
`research_report-ACME-synthetic-fixture-fundamental-artifact-persistence-smoke-76d0866c5fa1`.
|
|
72
|
+
- Native forecast persistence completed in one exact child without an MCP
|
|
73
|
+
retry: artifact
|
|
74
|
+
`fundamental_report-receipt-race-fixed-synthetic-recurring-revenue-smoke-e3e03d1566da`
|
|
75
|
+
produced forecast `forecast-261e59a11d6d4bb39fe0e8c80c95042d`.
|
|
76
|
+
The omitted caller timestamp resolved to one service receipt time, so
|
|
77
|
+
`issued_at` equaled `recorded_at`.
|
|
78
|
+
- A fresh exact `$tcx-brain` management turn received the hook-owned build-turn
|
|
79
|
+
proof and completed the protected list call, confirming the current-reference
|
|
80
|
+
deferred MCP proof path.
|
|
81
|
+
|
|
82
|
+
The v1.0.0 baseline evidence recorded on 2026-07-15 is listed below. It does
|
|
83
|
+
not substitute for v1.0.2 validation, CI on the candidate commit, or the
|
|
84
|
+
tag-bound verification of the immutable patch artifacts:
|
|
52
85
|
|
|
53
86
|
- GitHub Actions [CI run 29403737708](https://github.com/monarchjuno/tradingcodex/actions/runs/29403737708)
|
|
54
87
|
passed on release-branch commit `12649b0`: the safety and financial invariant
|
|
@@ -168,8 +201,9 @@ and created no child event, role artifact, or synthesis.
|
|
|
168
201
|
|
|
169
202
|
This is release-branch evidence. The candidate is ready to merge, but the
|
|
170
203
|
release remains not ready to tag until the merged commit passes GitHub CI. The
|
|
171
|
-
|
|
172
|
-
|
|
204
|
+
tag-bound release build must verify the immutable artifacts before its optional
|
|
205
|
+
protected publication job can run. Use the separate `publish_pypi=false`
|
|
206
|
+
rehearsal when release risk warrants another hosted run.
|
|
173
207
|
|
|
174
208
|
### Workspace viewer browser acceptance
|
|
175
209
|
|
|
@@ -216,22 +250,23 @@ python3.11 -m twine check dist/*
|
|
|
216
250
|
python3.11 tests/platform_wheel_smoke.py --wheel-dir dist
|
|
217
251
|
```
|
|
218
252
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
253
|
+
The hosted release build validates the exact uploaded artifact on Ubuntu.
|
|
254
|
+
Compatibility-sensitive native macOS, Windows, or alternate-Python checks are
|
|
255
|
+
local or explicitly scheduled maintainer gates instead of default jobs. The
|
|
256
|
+
protected `pypi` environment and Trusted Publisher configuration must be
|
|
257
|
+
reviewed before publication.
|
|
222
258
|
|
|
223
259
|
## Tag And Publication State
|
|
224
260
|
|
|
225
261
|
This document does not assert that the final commit is on `main`, CI is green,
|
|
226
|
-
the tag exists, or PyPI contains `1.0.
|
|
262
|
+
the tag exists, or PyPI contains `1.0.2`. After every final-commit and artifact
|
|
227
263
|
gate passes:
|
|
228
264
|
|
|
229
265
|
1. Merge the release commit to `main` and wait for CI.
|
|
230
|
-
2. Create and push the annotated tag `v1.0.
|
|
231
|
-
3.
|
|
232
|
-
`release_version=1.0.
|
|
233
|
-
4. With protected-environment approval, run the
|
|
234
|
-
`publish_pypi=true`.
|
|
266
|
+
2. Create and push the annotated tag `v1.0.2` at that commit.
|
|
267
|
+
3. When release risk warrants the extra hosted run, rehearse with
|
|
268
|
+
`publish_pypi=false` and `release_version=1.0.2`.
|
|
269
|
+
4. With protected-environment approval, run the tag with `publish_pypi=true`.
|
|
235
270
|
5. Verify the immutable PyPI files, release notes, and exact-version POSIX and
|
|
236
271
|
native Windows attach/doctor flows.
|
|
237
272
|
|
|
@@ -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,
|
|
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
|
|
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.
|
|
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
|
|
@@ -227,6 +227,14 @@ uvx --refresh --from tradingcodex tcx update . --from tradingcodex
|
|
|
227
227
|
refreshes generated indexes, applies central DB migrations, records workspace
|
|
228
228
|
provenance, and runs `./tcx doctor` unless `--no-doctor` is passed.
|
|
229
229
|
|
|
230
|
+
When the package refresh is launched directly through `uvx`, the updater also
|
|
231
|
+
restores an existing explicit `TRADINGCODEX_HOME`, explicit
|
|
232
|
+
`TRADINGCODEX_DB_NAME`, and projected loopback service address from the
|
|
233
|
+
validated workspace before regeneration. Explicit environment values on the
|
|
234
|
+
new update command still win, so a deliberate runtime move remains possible.
|
|
235
|
+
Platform-default homes are resolved again on the destination platform rather
|
|
236
|
+
than pinning an absolute path from a copied workspace.
|
|
237
|
+
|
|
230
238
|
Inside a generated Codex workspace, the default `trading-research` profile and
|
|
231
239
|
Plan mode cannot run workspace updates because update rewrites protected `.codex`
|
|
232
240
|
prompt/config/hook surfaces. Research may still create and edit ordinary
|
|
@@ -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",
|
|
16
|
-
("0.144.2",
|
|
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.
|
|
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 "
|
|
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.
|
|
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"] ==
|
|
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")
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import re
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
from urllib.parse import unquote, urlsplit
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
ROOT = Path(__file__).resolve().parents[1]
|
|
9
|
+
GUIDEBOOK = ROOT / "guidebook"
|
|
10
|
+
HREF_RE = re.compile(r'href="([^"]+)"')
|
|
11
|
+
ID_RE = re.compile(r'id="([^"]+)"')
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def _html(path: Path) -> str:
|
|
15
|
+
return path.read_text(encoding="utf-8")
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def test_guidebook_local_routes_and_fragments_resolve() -> None:
|
|
19
|
+
pages = sorted(GUIDEBOOK.glob("*.html"))
|
|
20
|
+
known_fragments = {
|
|
21
|
+
page.resolve(): set(ID_RE.findall(_html(page)))
|
|
22
|
+
for page in pages
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
for page in pages:
|
|
26
|
+
for raw_href in HREF_RE.findall(_html(page)):
|
|
27
|
+
parsed = urlsplit(raw_href)
|
|
28
|
+
if parsed.scheme or parsed.netloc or raw_href.startswith(("mailto:", "tel:")):
|
|
29
|
+
continue
|
|
30
|
+
target = page if not parsed.path else (page.parent / unquote(parsed.path)).resolve()
|
|
31
|
+
assert target.exists(), f"{page.name}: missing route {raw_href}"
|
|
32
|
+
if parsed.fragment and target.suffix == ".html":
|
|
33
|
+
assert parsed.fragment in known_fragments[target], (
|
|
34
|
+
f"{page.name}: missing fragment {raw_href}"
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def test_provider_onboarding_uses_the_primary_guide_navigation() -> None:
|
|
39
|
+
page = _html(GUIDEBOOK / "provider-to-order.html")
|
|
40
|
+
header = page.split('<header class="global-header">', 1)[1].split("</header>", 1)[0]
|
|
41
|
+
assert re.findall(r">([^<>]+)</a>", header)[-3:] == ["Guide", "Reference", "GitHub"]
|
|
42
|
+
assert 'href="index.html" aria-current="page">Guide</a>' in header
|
|
43
|
+
assert 'href="https://github.com/monarchjuno/tradingcodex/tree/main/docs">Reference</a>' in header
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def test_provider_mobile_menu_reaches_every_guide_section() -> None:
|
|
47
|
+
page = _html(GUIDEBOOK / "provider-to-order.html")
|
|
48
|
+
mobile = page.split('<details class="mobile-nav">', 1)[1].split("</details>", 1)[0]
|
|
49
|
+
assert HREF_RE.findall(mobile) == [
|
|
50
|
+
"index.html",
|
|
51
|
+
"dynamic-workflow.html",
|
|
52
|
+
"harness.html",
|
|
53
|
+
"decision-memory.html",
|
|
54
|
+
"reusable-context.html",
|
|
55
|
+
"execution-boundary.html",
|
|
56
|
+
"provider-to-order.html",
|
|
57
|
+
"skills.html",
|
|
58
|
+
"research.html",
|
|
59
|
+
"order.html",
|
|
60
|
+
"improve.html",
|
|
61
|
+
"customize.html",
|
|
62
|
+
"help-status.html",
|
|
63
|
+
]
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def test_full_desktop_shell_does_not_double_count_viewport_gutters() -> None:
|
|
67
|
+
css = (GUIDEBOOK / "assets" / "site.css").read_text(encoding="utf-8")
|
|
68
|
+
shell_rule = css.split(".docs-shell {", 1)[1].split("}", 1)[0]
|
|
69
|
+
assert "max-width: 1460px" in shell_rule
|
|
70
|
+
assert "padding: 2.75rem 1.5rem" in shell_rule
|
|
71
|
+
assert "calc((100vw - 1460px) / 2)" not in shell_rule
|