tradingcodex 2.1.0__tar.gz → 2.1.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-2.1.0 → tradingcodex-2.1.2}/CHANGELOG.md +19 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/PKG-INFO +1 -1
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/docs/deployment.md +2 -1
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/docs/generated-workspaces.md +6 -4
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/docs/harness.md +9 -4
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/docs/roles-skills-and-workflows.md +52 -27
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/docs/safety-policy-and-execution.md +22 -17
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_build_turn_grant.py +1 -1
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_codex_native_orchestration.py +10 -2
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_investment_brain_prompt_layers.py +4 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_investment_brain_provenance.py +10 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_investor_context.py +10 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_native_execution_gateway.py +20 -1
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_order_turn_grant.py +3 -1
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_release_contract.py +1 -1
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_source_snapshot_agent_contract.py +6 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex.egg-info/PKG-INFO +1 -1
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/commands/doctor.py +3 -2
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/execution_gateway.py +26 -12
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/skill_invocations.py +54 -21
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/mcp_runtime.py +3 -2
- tradingcodex-2.1.2/tradingcodex_service/version.py +1 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/codex-base/files/.codex/prompts/base_instructions/fixed-role.md +13 -3
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/codex-base/files/.codex/prompts/base_instructions/head-manager.md +10 -2
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/judgment-reviewer.toml +12 -9
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-allow/SKILL.md +10 -11
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-cancel/SKILL.md +4 -3
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-submit/SKILL.md +4 -3
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/SKILL.md +10 -2
- tradingcodex-2.1.2/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/judgment-reviewer/tcx-judgment/SKILL.md +106 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-evidence/SKILL.md +7 -1
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-source-gate/SKILL.md +16 -1
- tradingcodex-2.1.0/tradingcodex_service/version.py +0 -1
- tradingcodex-2.1.0/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/judgment-reviewer/tcx-judgment/SKILL.md +0 -72
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/CONTRIBUTING.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/LICENSE +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/MANIFEST.in +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/NOTICE +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/README.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/TRADEMARKS.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/__init__.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/audit/__init__.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/audit/admin.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/audit/apps.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/audit/migrations/0001_v1_initial.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/audit/migrations/__init__.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/audit/models.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/harness/__init__.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/harness/admin.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/harness/apps.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/harness/migrations/0001_v1_initial.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/harness/migrations/__init__.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/harness/models.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/harness/templatetags/__init__.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/integrations/__init__.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/integrations/admin.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/integrations/apps.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/integrations/migrations/0001_v1_initial.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/integrations/migrations/__init__.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/integrations/models.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/mcp/__init__.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/mcp/admin.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/mcp/apps.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/mcp/migrations/0001_v1_initial.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/mcp/migrations/0002_remove_external_mcp_gate.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/mcp/migrations/__init__.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/mcp/models.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/mcp/services.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/orders/__init__.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/orders/admin.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/orders/apps.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/orders/migrations/0001_v1_initial.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/orders/migrations/__init__.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/orders/models.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/orders/services.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/policy/__init__.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/policy/admin.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/policy/apps.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/policy/migrations/0001_v1_initial.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/policy/migrations/__init__.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/policy/models.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/policy/services.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/portfolio/__init__.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/portfolio/admin.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/portfolio/apps.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/portfolio/migrations/0001_v1_initial.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/portfolio/migrations/__init__.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/apps/portfolio/models.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/assets/tradingcodex-banner-v1.png +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/assets/tradingcodex-banner-v2.png +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/assets/tradingcodex-banner-v3.png +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/assets/tradingcodex-banner.svg +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/docs/README.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/docs/architecture.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/docs/codex-native-orchestration.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/docs/data-sources-and-openbb.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/docs/decision-memory.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/docs/financial-workflow-references.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/docs/guardrails.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/docs/improvement-loop.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/docs/interfaces-and-surfaces.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/docs/investment-brain-plugins.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/docs/knowledge-wikis.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/docs/licensing-and-commercialization.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/docs/product-direction.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/docs/release-readiness.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/docs/research-memory-and-artifacts.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/docs/user-facing-skills.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/docs/validation-and-test-plan.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/frontend/index.html +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/frontend/package-lock.json +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/frontend/package.json +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/frontend/src/App.tsx +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/frontend/src/ViewerShell.tsx +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/frontend/src/api.ts +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/frontend/src/domain.ts +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/frontend/src/features/EpisodesPage.tsx +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/frontend/src/features/LibraryPage.tsx +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/frontend/src/features/SystemPage.tsx +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/frontend/src/features/WikiPage.tsx +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/frontend/src/main.tsx +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/frontend/src/navigation.js +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/frontend/src/navigation.test.js +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/frontend/src/styles.css +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/frontend/src/ui.tsx +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/frontend/src/viewer-data.js +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/frontend/tsconfig.json +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/frontend/vite.config.ts +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/install.sh +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/installation.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/pyproject.toml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/setup.cfg +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_artifact_authentication.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_artifact_catalog.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_artifact_v2.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_brain_skill.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_broker_center_prd.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_build_contract_metadata.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_build_hook.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_calculation_runner.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_clean_v1_cli_audit.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_codex_capabilities.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_codex_cli_compat.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_codex_cli_contract.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_datasets.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_decision_memory_core.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_dev_bootstrap.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_dynamic_artifact_quality.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_e2e_user_scenarios.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_evaluation_lab_hardening.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_evaluation_profiles.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_guidebook_contract.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_investment_analysis.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_investment_brain_cli.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_investment_brain_registry.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_knowledge_wikis.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_mcp_broker_release_health.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_platform_runtime.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_provider_source_approval.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_research_forecast_surfaces.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_research_object_catalog.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_research_objects.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_research_spec_profiles.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_runtime_paths.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_runtime_profile.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_security_invariants.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_skill_runtime_boundaries.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_v1_migrations.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_v1_state_integrity.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_viewer.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tests/test_workspace_git_contract.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex.egg-info/SOURCES.txt +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex.egg-info/dependency_links.txt +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex.egg-info/entry_points.txt +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex.egg-info/requires.txt +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex.egg-info/top_level.txt +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/__init__.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/__main__.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/calculation-runtime-lock.json +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/calculation-runtime-requirements.txt +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/calculation_runner.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/commands/__init__.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/commands/bootstrap.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/commands/build.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/commands/connectors.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/commands/data_sources.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/commands/db.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/commands/decision.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/commands/evaluation.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/commands/forecast.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/commands/home.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/commands/investment_brains.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/commands/investor_context.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/commands/mcp.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/commands/orders.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/commands/policy.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/commands/profile.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/commands/research.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/commands/skills.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/commands/strategies.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/commands/subagents.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/commands/utils.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/commands/wikis.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/commands/workflow.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/commands/workspaces.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/generator.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/mcp_stdio.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/package_source.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/service_autostart.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/startup_status.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_cli/versioning.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/__init__.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/admin.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/api.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/__init__.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/agents.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/analysis_runs.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/artifact_bindings.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/artifact_catalog.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/artifact_quality.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/artifact_v2.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/audit.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/brokers.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/build_gateway.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/calculations.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/codex_capabilities.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/common.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/data_sources.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/datasets.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/decision_episodes.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/decision_packages.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/evaluation_lab.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/forecasting.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/git_subprocess.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/harness.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/health.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/investment_analysis.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/investment_brains.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/investor_context.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/judgment_postmortems.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/judgments.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/knowledge_wikis.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/managed_package_sources.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/markdown_preview.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/operator_authority.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/orders.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/policy.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/portfolio.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/postmortems.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/research.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/research_object_catalog.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/research_objects.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/research_specs.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/runtime.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/source_snapshots.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/viewer.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/wiki_viewer.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/workspace_git.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/application/workspaces.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/asgi.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/log_safety.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/runtime_profile.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/settings.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/static/tradingcodex_admin/favicon.svg +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/static/tradingcodex_web/assets/allPaths-DTYZmYwK.js +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/static/tradingcodex_web/assets/allPathsLoader-DcM0tTg5.js +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/static/tradingcodex_web/assets/index-Bb8LR_4w.css +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/static/tradingcodex_web/assets/index-C4QYjUvS.js +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/static/tradingcodex_web/assets/paths-BOuWfKow.js +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/static/tradingcodex_web/assets/paths-CI3Rjsyg.js +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/static/tradingcodex_web/assets/splitPathsBySizeLoader-B1K4iYsq.js +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/static/tradingcodex_web/index.html +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/urls.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/viewer_api.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/web.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/tradingcodex_service/wsgi.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/__init__.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/audit/files/.tradingcodex/audit/README.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/audit/files/trading/audit/.gitkeep +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/audit/module.json +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/codex-base/files/.codex/config.toml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/codex-base/files/.codex/hooks/tradingcodex_hook.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/codex-base/files/.codex/hooks.json +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/codex-base/files/.codex/rules/tradingcodex.rules +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/codex-base/files/.tradingcodex/cli.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/codex-base/files/.tradingcodex/config.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/codex-base/files/AGENTS.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/codex-base/files/pyproject.toml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/codex-base/files/tcx +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/codex-base/files/tcx-calc +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/codex-base/files/tcx-calc.cmd +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/codex-base/files/tcx.cmd +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/codex-base/module.json +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/policies/restricted-list.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/approval_receipt.schema.json +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/audit_event.schema.json +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/evidence_pack.schema.json +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/execution_result.schema.json +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/fundamental_report.schema.json +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/news_report.schema.json +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/order_ticket.schema.json +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/portfolio_review.schema.json +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/postmortem_report.schema.json +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/research_artifact.schema.json +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/risk_report.schema.json +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/technical_report.schema.json +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/thesis.schema.json +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/valuation.schema.json +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/enforcement-guardrails/module.json +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/fundamental-analyst.toml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/instrument-analyst.toml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/macro-analyst.toml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/news-analyst.toml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/portfolio-manager.toml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/risk-manager.toml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/technical-analyst.toml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/fixed-subagents/files/.codex/agents/valuation-analyst.toml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/fixed-subagents/files/.tradingcodex/mainagent/skill-change-proposals/.gitkeep +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/fixed-subagents/module.json +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/guidance-guardrails/files/.tradingcodex/guidance/guardrails.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/guidance-guardrails/files/.tradingcodex/guidance/task-quality-checklist.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/guidance-guardrails/module.json +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/information-barriers/files/.tradingcodex/secrets.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/information-barriers/files/trading/forecasts/.gitkeep +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/information-barriers/files/trading/market-data/.gitkeep +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/information-barriers/files/trading/portfolio/.gitkeep +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/information-barriers/files/trading/reports/fundamental/.gitkeep +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/information-barriers/files/trading/reports/instrument/.gitkeep +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/information-barriers/files/trading/reports/macro/.gitkeep +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/information-barriers/files/trading/reports/news/.gitkeep +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/information-barriers/files/trading/reports/policy/.gitkeep +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/information-barriers/files/trading/reports/portfolio/.gitkeep +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/information-barriers/files/trading/reports/postmortem/.gitkeep +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/information-barriers/files/trading/reports/risk/.gitkeep +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/information-barriers/files/trading/reports/technical/.gitkeep +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/information-barriers/files/trading/reports/valuation/.gitkeep +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/information-barriers/files/trading/research/.gitkeep +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/information-barriers/module.json +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/paper-trading/module.json +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-automate/SKILL.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-automate/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/SKILL.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/references/bundle-contract.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-build/SKILL.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-build/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-investor-context/SKILL.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-investor-context/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-memory/SKILL.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-memory/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-allow/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-cancel/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-submit/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-plan/SKILL.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-plan/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-server/SKILL.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-server/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-strategy/SKILL.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-strategy/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-wiki/SKILL.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-wiki/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-wiki/references/bundle-contract.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/playbooks/research-framing.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/fundamental-analyst/tcx-fundamental/SKILL.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/fundamental-analyst/tcx-fundamental/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/instrument-analyst/tcx-instrument/SKILL.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/instrument-analyst/tcx-instrument/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/judgment-reviewer/tcx-judgment/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/macro-analyst/tcx-macro/SKILL.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/macro-analyst/tcx-macro/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/news-analyst/tcx-news/SKILL.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/news-analyst/tcx-news/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-order-draft/SKILL.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-order-draft/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-portfolio/SKILL.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-portfolio/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-order-approve/SKILL.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-order-approve/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-policy/SKILL.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-policy/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-risk/SKILL.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-risk/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-anti-overfit/SKILL.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-anti-overfit/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-artifact/SKILL.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-artifact/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-calculation/SKILL.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-calculation/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-calculation/references/data-runtime.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-calculation/references/finance-methods.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-data-qc/SKILL.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-data-qc/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-evidence/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-forecast/SKILL.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-forecast/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-scenarios/SKILL.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-scenarios/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-source-gate/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-source-gate/references/openbb-mcp.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/technical-analyst/tcx-technical/SKILL.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/technical-analyst/tcx-technical/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/valuation-analyst/tcx-valuation/SKILL.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/valuation-analyst/tcx-valuation/agents/openai.yaml +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/repo-skills/module.json +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/enforcer/README.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/gateway/README.md +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/server.py +0 -0
- {tradingcodex-2.1.0 → tradingcodex-2.1.2}/workspace_templates/modules/tradingcodex-mcp/module.json +0 -0
|
@@ -2,6 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 2.1.2 - 2026-07-24
|
|
6
|
+
|
|
7
|
+
- Treat ASCII skill-name case and normalized whitespace layout as presentation
|
|
8
|
+
details, so Codex app skill-chip capitalization, Brain/Strategy selectors on
|
|
9
|
+
separate lines, and line-wrapped order arguments bind to their canonical
|
|
10
|
+
lowercase skills without weakening order flags, single-effect grants,
|
|
11
|
+
approvals, policy, idempotency, or audit enforcement.
|
|
12
|
+
- Let evidence-producing subagents autonomously fill newly discovered material
|
|
13
|
+
gaps and conflicts within their assigned question, specialty, user scope, and
|
|
14
|
+
read-only authority, using evidence value instead of fixed search or tool-call
|
|
15
|
+
counts while preserving source provenance, deduplication, and role ownership.
|
|
16
|
+
|
|
17
|
+
## 2.1.1 - 2026-07-24
|
|
18
|
+
|
|
19
|
+
- Reframe independent judgment review as task-relative adversarial adjudication:
|
|
20
|
+
test evidence, interpretation, and conclusions under the selected user
|
|
21
|
+
mandate, Investor Context, Brain, and Strategy without silently replacing
|
|
22
|
+
that governing frame or forcing Bull-versus-Bear onto incompatible tasks.
|
|
23
|
+
|
|
5
24
|
## 2.1.0 - 2026-07-23
|
|
6
25
|
|
|
7
26
|
- Ship the complete compact Artifact v2, receipt v4, canonical synthesis,
|
|
@@ -265,12 +265,13 @@ Pin the released version so verification cannot accidentally select a later
|
|
|
265
265
|
package. From the source checkout on POSIX:
|
|
266
266
|
|
|
267
267
|
```bash
|
|
268
|
+
set -eu
|
|
268
269
|
SOURCE_ROOT="$(pwd)"
|
|
269
270
|
RELEASE_VERSION="$(python3.11 -m tradingcodex_cli --version)"
|
|
270
271
|
SMOKE_ROOT="$(python3.11 -c 'import tempfile; print(tempfile.mkdtemp(prefix="tcx-pypi-"))')"
|
|
271
272
|
|
|
272
273
|
python3.11 -m venv "$SMOKE_ROOT/venv"
|
|
273
|
-
"$SMOKE_ROOT/venv/bin/pip" install "tradingcodex==$RELEASE_VERSION"
|
|
274
|
+
"$SMOKE_ROOT/venv/bin/pip" install --no-cache-dir "tradingcodex==$RELEASE_VERSION"
|
|
274
275
|
"$SMOKE_ROOT/venv/bin/tcx" --version
|
|
275
276
|
mkdir "$SMOKE_ROOT/workspace"
|
|
276
277
|
(
|
|
@@ -323,11 +323,13 @@ Generated workspaces contain:
|
|
|
323
323
|
reference a Head Manager may pass onward
|
|
324
324
|
- deterministic root-native action interception: before allocating an analysis
|
|
325
325
|
run, `UserPromptSubmit` reserves immediate `$tcx-order-submit` and
|
|
326
|
-
`$tcx-order-cancel`, accepts
|
|
327
|
-
grammar from a root native user turn
|
|
326
|
+
`$tcx-order-cancel`, accepts their complete literal `--name value`
|
|
327
|
+
grammar from a root native user turn while tolerating ASCII skill-name case
|
|
328
|
+
and whitespace line wrapping, creates a workspace-bound `native-user`
|
|
328
329
|
mandate, and calls the canonical Django execution gateway in-process. It also
|
|
329
|
-
reserves a first-meaningful
|
|
330
|
-
paper|validation|live
|
|
330
|
+
reserves a first-meaningful `$tcx-order-allow` invocation followed by
|
|
331
|
+
`--mode paper|validation|live` and a non-empty request on the same or later
|
|
332
|
+
lines, issues one workspace/session/turn/prompt/mode-bound
|
|
331
333
|
`OrderTurnGrant`, and then continues the normal workflow. Malformed reserved
|
|
332
334
|
actions, subagent actions, and retired
|
|
333
335
|
`$execute-paper-order` actions fail closed
|
|
@@ -67,10 +67,15 @@ adequate Snapshot/Dataset
|
|
|
67
67
|
-> explicit gap
|
|
68
68
|
```
|
|
69
69
|
|
|
70
|
-
Partial success is retained and
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
70
|
+
Partial success is retained and unsupported coverage falls through without
|
|
71
|
+
refetching adequate evidence. Within its assigned question and specialty, an
|
|
72
|
+
evidence-producing child may autonomously investigate a newly discovered
|
|
73
|
+
material gap or conflict; no fixed source or tool-call count applies. Broad
|
|
74
|
+
just-in-case collection and another role's complete data family remain out of
|
|
75
|
+
scope. External sources become SourceSnapshots; reusable structured rows
|
|
76
|
+
become immutable Datasets. Handoffs carry compact Snapshot/Dataset/Artifact IDs
|
|
77
|
+
rather than raw source dumps. This is skill guidance, not a provider router or
|
|
78
|
+
trust engine.
|
|
74
79
|
|
|
75
80
|
## Hook Boundary
|
|
76
81
|
|
|
@@ -68,9 +68,10 @@ external package safety limits remain separate from this authoring rule.
|
|
|
68
68
|
TradingCodex uses one lexical contract for managed, selection, and order
|
|
69
69
|
skills. It removes one UTF-8 BOM, normalizes CRLF, CR, NEL, and Unicode
|
|
70
70
|
line/paragraph separators to LF, tolerates leading and trailing blank lines,
|
|
71
|
-
and trims horizontal whitespace for recognizing an invocation.
|
|
72
|
-
case
|
|
73
|
-
|
|
71
|
+
and trims horizontal whitespace for recognizing an invocation. ASCII letter
|
|
72
|
+
case in a skill id is presentation-only and resolves to the canonical lowercase
|
|
73
|
+
id, which accommodates Codex app skill-chip rendering. The parser does not
|
|
74
|
+
normalize Unicode lookalikes, confusable separators, or zero-width characters.
|
|
74
75
|
|
|
75
76
|
A plain `$skill-id` and a Markdown link are equivalent only when the link label
|
|
76
77
|
is that exact id and its target resolves to the matching projected
|
|
@@ -81,12 +82,14 @@ distinct managed markers remain invalid. Brain and Strategy selection accepts a
|
|
|
81
82
|
projected link, deduplicates repeated references to the same id, and rejects
|
|
82
83
|
distinct multiple ids.
|
|
83
84
|
|
|
84
|
-
Order syntax is intentionally narrower
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
85
|
+
Order syntax is intentionally narrower than research selection, but whitespace
|
|
86
|
+
layout is not an authority boundary. `$tcx-order-allow`, its `--mode
|
|
87
|
+
paper|validation|live` argument, and the non-empty request may share a line or
|
|
88
|
+
wrap across lines. Immediate submit/cancel remains an action-only prompt with
|
|
89
|
+
literal `--name value` pairs, which may wrap across lines. A matching projected
|
|
90
|
+
Markdown skill link may replace only the skill token; case and whitespace
|
|
91
|
+
normalization do not relax flags, identifiers, duplicate detection, mode, or
|
|
92
|
+
the single-effect rule. Grant, mandate, and audit bindings continue to hash the
|
|
90
93
|
original unnormalized prompt.
|
|
91
94
|
|
|
92
95
|
## Fixed Team
|
|
@@ -210,18 +213,23 @@ only current-workflow artifact candidates and Dataset cards/manifests. It
|
|
|
210
213
|
assigns one producing owner and gives relevant children briefs that name that
|
|
211
214
|
owner, exact reusable IDs, and the needed or missing slice; roles do not browse
|
|
212
215
|
a whole catalog. A stale, incomplete, or mismatched record still contributes
|
|
213
|
-
its valid portion
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
216
|
+
its valid portion. The producing owner may autonomously collect additional
|
|
217
|
+
evidence when a newly discovered gap or conflict could materially change its
|
|
218
|
+
assigned answer, readiness, or confidence and remains within the user's scope
|
|
219
|
+
and that role's specialty; it does not need a Head Manager follow-up naming
|
|
220
|
+
every field or source. Other roles receive compact SourceSnapshot, Dataset, and
|
|
221
|
+
ResearchArtifact IDs. The producer follows the canonical `tcx-source-gate`
|
|
222
|
+
preference: reuse supplied evidence, use one relevant enabled user capability,
|
|
223
|
+
use optional direct OpenBB, prefer original public records, then reliable web
|
|
224
|
+
sources, and state a remaining gap.
|
|
219
225
|
|
|
220
226
|
This is agent guidance, not a Django routing state machine. The role names the
|
|
221
227
|
provider where possible, does not repeat unchanged calls to the same source,
|
|
222
|
-
and preserves a partial result while seeking
|
|
223
|
-
|
|
224
|
-
|
|
228
|
+
and preserves a partial result while seeking unsupported coverage rather than
|
|
229
|
+
refetching adequate coverage. There is no fixed source, search, or tool-call
|
|
230
|
+
count. Broad just-in-case collection and recreation of another role's complete
|
|
231
|
+
data family remain out of scope. User capabilities remain BYOR; TradingCodex
|
|
232
|
+
does not install, classify, proxy, approve, or audit them.
|
|
225
233
|
|
|
226
234
|
Use `record_source_snapshot` for every external source. Create a Dataset only
|
|
227
235
|
for reusable structured rows, and bind the resulting Snapshot and Dataset IDs to
|
|
@@ -334,7 +342,22 @@ not synthesis inputs.
|
|
|
334
342
|
|
|
335
343
|
Use `judgment-reviewer` for recommendations, portfolio/risk decisions,
|
|
336
344
|
material conflicts, and high-consequence uncertainty. Do not force it into a
|
|
337
|
-
narrow factual request.
|
|
345
|
+
narrow factual request or a task without a meaningful competing case. The
|
|
346
|
+
reviewer is an adversarial adjudicator, not a generic skeptic or a neutral
|
|
347
|
+
consensus engine. Head Manager supplies the exact decision and a compact frame
|
|
348
|
+
derived from the user mandate, applicable Investor Context, selected Brain
|
|
349
|
+
questions or falsifiers, selected Strategy rules, accepted Artifact IDs, and
|
|
350
|
+
the downstream consequence.
|
|
351
|
+
|
|
352
|
+
The reviewer tests whether authenticated evidence supports the artifact's
|
|
353
|
+
interpretation and conclusion under that frame. It may maintain, change,
|
|
354
|
+
qualify, or abstain from the current conclusion, but it cannot silently replace
|
|
355
|
+
the user mandate, Brain, or Strategy. Bull-versus-bear is one useful form for a
|
|
356
|
+
directional investment claim; other tasks use their strongest relevant
|
|
357
|
+
alternative hypothesis, adverse scenario, assumption challenge, or
|
|
358
|
+
claim-versus-refutation. A concern that the selected frame is inapplicable or
|
|
359
|
+
defective is reported separately for Head Manager or a later postmortem and
|
|
360
|
+
does not amend the current run.
|
|
338
361
|
|
|
339
362
|
Select a method profile that matches the task:
|
|
340
363
|
|
|
@@ -532,8 +555,8 @@ consumer; without proof injected by `PreToolUse` for the current exact
|
|
|
532
555
|
`$tcx-order-allow` turn, it has no execution authority.
|
|
533
556
|
|
|
534
557
|
For already-known canonical identifiers, the final external effect remains
|
|
535
|
-
available from a root native Codex user turn whose meaningful content
|
|
536
|
-
one
|
|
558
|
+
available from a root native Codex user turn whose meaningful content contains
|
|
559
|
+
one action-only skill invocation. The canonical single-line forms are:
|
|
537
560
|
|
|
538
561
|
```text
|
|
539
562
|
$tcx-order-submit --ticket-id <ticket-id> --approval-receipt-id <approval-receipt-id>
|
|
@@ -542,8 +565,9 @@ $tcx-order-cancel --ticket-id <ticket-id> --broker-order-id <broker-order-id> --
|
|
|
542
565
|
$tcx-order-cancel --ticket-id <ticket-id> --broker-order-id <broker-order-id> --approval-receipt-id <approval-receipt-id> --live-confirmation <token>
|
|
543
566
|
```
|
|
544
567
|
|
|
545
|
-
The leading skill token may be its matching
|
|
546
|
-
|
|
568
|
+
The leading skill token is ASCII case-insensitive and may be its matching
|
|
569
|
+
projected Markdown link. Whitespace, including normalized line breaks, may
|
|
570
|
+
separate tokens; every other part of the grammar remains literal. These two root skill bundles
|
|
547
571
|
describe a protocol and disable implicit invocation; they carry no MCP or
|
|
548
572
|
broker authority. `UserPromptSubmit` recognizes the reserved invocation,
|
|
549
573
|
rejects malformed or subagent forms,
|
|
@@ -552,7 +576,7 @@ parses the complete prompt deterministically, creates a workspace-bound
|
|
|
552
576
|
an analysis run begins.
|
|
553
577
|
|
|
554
578
|
For a workflow that creates or selects identifiers during the turn, the first
|
|
555
|
-
meaningful
|
|
579
|
+
meaningful invocation must instead be the order-allow skill:
|
|
556
580
|
|
|
557
581
|
```text
|
|
558
582
|
$tcx-order-allow --mode paper
|
|
@@ -560,9 +584,10 @@ $tcx-order-allow --mode validation
|
|
|
560
584
|
$tcx-order-allow --mode live
|
|
561
585
|
```
|
|
562
586
|
|
|
563
|
-
The skill token may be its matching projected Markdown link
|
|
564
|
-
|
|
565
|
-
hook requires a root native Codex
|
|
587
|
+
The skill token may be its matching projected Markdown link. Its mode and
|
|
588
|
+
non-empty workflow request may follow on the same line or later lines; line
|
|
589
|
+
layout does not change the grant. The hook requires a root native Codex
|
|
590
|
+
`session_id` and `turn_id`, issues one grant
|
|
566
591
|
bound to workspace, session, turn, original complete prompt hash, Codex permission
|
|
567
592
|
mode, and execution mode, then continues ordinary orchestration. Plan mode
|
|
568
593
|
rejects immediate order effects plus grant issuance and use. The grant expires
|
|
@@ -18,22 +18,23 @@ raise quality without becoming executable authorization.
|
|
|
18
18
|
Every final submit or cancel action follows one of two native-user entries:
|
|
19
19
|
|
|
20
20
|
```text
|
|
21
|
-
|
|
21
|
+
literal action-only root invocation -> deterministic hook parse -> native-user permission
|
|
22
22
|
-> policy -> payload validation -> approval/duplicate-request check
|
|
23
23
|
-> mandatory intent audit -> connection -> finalized/uncertain audit
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
first-meaningful $tcx-order-allow invocation -> workspace/session/turn/prompt/mode grant
|
|
26
26
|
-> canonical workflow state -> protected tool + PreToolUse proof
|
|
27
27
|
-> consume once -> the same policy/approval/idempotency/live/audit gates
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
This order matters:
|
|
31
31
|
|
|
32
|
-
1.
|
|
33
|
-
prompt or
|
|
34
|
-
paper|validation|live` on the current root
|
|
35
|
-
Markdown skill link may replace only the skill
|
|
36
|
-
|
|
32
|
+
1. Explicit user admission: require either one action-only immediate
|
|
33
|
+
submit/cancel prompt or a first-meaningful `$tcx-order-allow` invocation with
|
|
34
|
+
`--mode paper|validation|live` and a non-empty request on the current root
|
|
35
|
+
turn. A matching projected Markdown skill link may replace only the skill
|
|
36
|
+
token. ASCII skill-name case and whitespace layout are presentation details;
|
|
37
|
+
all arguments stay literal.
|
|
37
38
|
2. Parse: create a workspace-bound immediate mandate, or a workspace-,
|
|
38
39
|
session-, turn-, full-prompt-, and mode-bound single-use turn grant before
|
|
39
40
|
any model or subagent runs.
|
|
@@ -69,13 +70,14 @@ no local-loopback mutation exception. Remote mutation use always requires
|
|
|
69
70
|
staff/API-key authentication. Loopback is not generic mutation authority.
|
|
70
71
|
|
|
71
72
|
Immediate final submit and cancel do not use an agent MCP or REST identity. The
|
|
72
|
-
`UserPromptSubmit` hook accepts only
|
|
73
|
+
`UserPromptSubmit` hook accepts only a literal action-only root native prompt, binds a
|
|
73
74
|
short-lived mandate to the original prompt hash and workspace provenance, and
|
|
74
75
|
calls the canonical execution gateway in-process as `native-user`.
|
|
75
76
|
|
|
76
77
|
For a workflow that creates or selects canonical identifiers later in the
|
|
77
|
-
turn, the same hook accepts
|
|
78
|
-
|
|
78
|
+
turn, the same hook accepts a first-meaningful `$tcx-order-allow` invocation,
|
|
79
|
+
mode, and non-empty request across arbitrary normalized whitespace, requires
|
|
80
|
+
current Codex `session_id` and `turn_id`, and issues a grant
|
|
79
81
|
bound to workspace, session, turn, original full prompt hash, Codex permission mode, and
|
|
80
82
|
execution mode. Plan mode rejects both immediate execution and turn-grant
|
|
81
83
|
issuance or use; the user must start a new non-Plan root turn. The grant expires
|
|
@@ -579,19 +581,20 @@ has an approval receipt, and `submit_approved_order` includes
|
|
|
579
581
|
$tcx-order-cancel --ticket-id <ticket-id> --broker-order-id <broker-order-id> --approval-receipt-id <approval-receipt-id> --live-confirmation <token>
|
|
580
582
|
```
|
|
581
583
|
|
|
582
|
-
- The deterministic parser accepts only literal `--name value` pairs
|
|
584
|
+
- The deterministic parser accepts only literal `--name value` pairs, while
|
|
585
|
+
allowing normalized whitespace and line breaks between tokens. It rejects
|
|
583
586
|
prose, aliases, quotes, escapes, comments, duplicate or unknown flags,
|
|
584
587
|
`--name=value`, multiple actions, subagent turns, and the
|
|
585
588
|
retired `$execute-paper-order` invocation. A malformed prompt beginning with a
|
|
586
589
|
reserved token is blocked rather than falling through to analysis. One UTF-8
|
|
587
|
-
BOM, normalized line endings, leading/trailing blank lines, and a Markdown
|
|
590
|
+
BOM, ASCII skill-name case, normalized line endings, leading/trailing blank lines, and a Markdown
|
|
588
591
|
link whose label and target match the projected action skill do not relax
|
|
589
592
|
that action-only grammar.
|
|
590
593
|
- The two root skill bundles document this protocol but carry no tool authority.
|
|
591
594
|
The hook creates the in-memory mandate from the original user prompt, records
|
|
592
595
|
a redacted prompt hash and normalized identifiers, and calls the Django
|
|
593
596
|
gateway synchronously before normal Head Manager orchestration.
|
|
594
|
-
- A workflow may instead
|
|
597
|
+
- A workflow may instead begin with one order-allow invocation:
|
|
595
598
|
|
|
596
599
|
```text
|
|
597
600
|
$tcx-order-allow --mode paper
|
|
@@ -599,8 +602,9 @@ has an approval receipt, and `submit_approved_order` includes
|
|
|
599
602
|
$tcx-order-allow --mode live
|
|
600
603
|
```
|
|
601
604
|
|
|
602
|
-
The skill token may be its matching projected Markdown link. The
|
|
603
|
-
|
|
605
|
+
The skill token may be its matching projected Markdown link. The mode and
|
|
606
|
+
non-empty normal interactive or Scheduled Task request may share the first
|
|
607
|
+
meaningful line or wrap across later lines. This invocation
|
|
604
608
|
admits at most one later submit or cancel and does not itself perform an
|
|
605
609
|
effect. A free-form mention, later-line token, malformed mode, or subagent
|
|
606
610
|
turn grants nothing. The browser viewer exposes no prompt entrypoint. Scheduled and interactive prompts use the
|
|
@@ -621,8 +625,9 @@ has an approval receipt, and `submit_approved_order` includes
|
|
|
621
625
|
materially ambiguous, Head Manager asks the user or stops at `waiting` or
|
|
622
626
|
`blocked`.
|
|
623
627
|
- Order drafting and approval retain their role-owned structured tools. Final
|
|
624
|
-
cancellation and execution additionally require either the
|
|
625
|
-
native grammar and parser-issued mandate or the
|
|
628
|
+
cancellation and execution additionally require either the literal
|
|
629
|
+
action-only native grammar and parser-issued mandate or the first-meaningful
|
|
630
|
+
turn grant
|
|
626
631
|
plus protected proof, together with every deterministic principal,
|
|
627
632
|
capability, policy, approval, idempotency, connection, and audit gate.
|
|
628
633
|
Analytical prose cannot activate those paths.
|
|
@@ -107,7 +107,7 @@ def test_build_parser_accepts_first_meaningful_line_and_workspace_links(workspac
|
|
|
107
107
|
for prompt in accepted:
|
|
108
108
|
assert parse_build_invocation(prompt, workspace) is True
|
|
109
109
|
assert parse_build_invocation("Research how $tcx-build works without changing files.") is None
|
|
110
|
-
assert parse_build_invocation("$TCX-build\nUpdate the provider.") is
|
|
110
|
+
assert parse_build_invocation("$TCX-build\nUpdate the provider.") is True
|
|
111
111
|
assert parse_build_invocation("\u200b$tcx-build\nUpdate the provider.") is None
|
|
112
112
|
assert parse_build_invocation("$tcx-buіld\nUpdate the provider.") is None
|
|
113
113
|
|
|
@@ -70,7 +70,10 @@ def test_fixed_role_prompts_use_natural_evidence_distinctions() -> None:
|
|
|
70
70
|
assert "Keep disposable work under `$TRADINGCODEX_SCRATCH`" in flat_base
|
|
71
71
|
assert "never read audit records" in flat_base
|
|
72
72
|
assert "treat the new request as a bounded delta" in flat_base
|
|
73
|
-
assert "
|
|
73
|
+
assert "collect additional evidence whenever a newly discovered gap or conflict" in flat_base
|
|
74
|
+
assert "do not need a follow-up from Head Manager naming every field or source first" in flat_base
|
|
75
|
+
assert "there is no fixed search or tool-call count" in flat_base
|
|
76
|
+
assert "retrieve the coverage needed to resolve the delta" in flat_base
|
|
74
77
|
assert "answers the exact assigned question" in flat_base
|
|
75
78
|
assert "If the requested delta belongs to another specialty" in flat_base
|
|
76
79
|
for prompt in [base, *role_prompts, *role_skills]:
|
|
@@ -166,7 +169,7 @@ def test_child_briefs_and_artifact_skills_keep_capabilities_and_lineage_distinct
|
|
|
166
169
|
assert "triggering cross-role Artifact IDs (inputs)" in flat_fixed
|
|
167
170
|
assert "create a new artifact only when the brief explicitly says so" in flat_fixed
|
|
168
171
|
assert "Honor the brief's data-family owner" in flat_fixed
|
|
169
|
-
assert "
|
|
172
|
+
assert "Do not recollect another role's complete family" in flat_fixed
|
|
170
173
|
assert "Do not load `tcx-calculation` merely to quote or compare source-reported figures" in flat_fixed
|
|
171
174
|
|
|
172
175
|
assert "brief every child with that ownership, exact reusable IDs, and the missing slice" in flat_workflow
|
|
@@ -191,6 +194,11 @@ def test_child_briefs_and_artifact_skills_keep_capabilities_and_lineage_distinct
|
|
|
191
194
|
assert "exact conflict or review question" in flat_judgment
|
|
192
195
|
assert "accepted, authenticated Artifact IDs with their service receipts/content hashes" in flat_judgment
|
|
193
196
|
assert "paths and compact summaries as navigation aids, never substitutes" in flat_judgment
|
|
197
|
+
assert "Judgment tests the evidence-to-interpretation-to-conclusion link" in flat_judgment
|
|
198
|
+
assert "Never silently replace the mandate, Brain, or Strategy" in flat_judgment
|
|
199
|
+
assert "do not force it onto every request" in flat_judgment
|
|
200
|
+
assert "frame concern" in flat_judgment
|
|
201
|
+
assert "compact judgment frame derived from the user mandate" in flat_workflow
|
|
194
202
|
assert "briefs that name that owner, exact reusable IDs, and the needed or missing slice" in flat_docs
|
|
195
203
|
assert "target owner's Artifact ID to append or revise from triggering cross-role Artifact IDs consumed as inputs" in flat_docs
|
|
196
204
|
assert "when the evidence only supports that report, the role creates no duplicate evidence pack" in flat_docs
|
|
@@ -39,6 +39,8 @@ def test_head_manager_owns_typed_brain_translation_and_conflicts() -> None:
|
|
|
39
39
|
assert "independent current-run evidence view" in flat_prompt
|
|
40
40
|
assert "post-memory decision" in flat_prompt
|
|
41
41
|
assert "caller-authored Brain lineage" in flat_prompt
|
|
42
|
+
assert "compact frame derived from the mandate" in flat_prompt
|
|
43
|
+
assert "may overturn a conclusion under that frame but cannot replace the frame" in flat_prompt
|
|
42
44
|
|
|
43
45
|
|
|
44
46
|
def test_tcx_workflow_keeps_context_and_routing_native() -> None:
|
|
@@ -64,6 +66,8 @@ def test_tcx_workflow_keeps_context_and_routing_native() -> None:
|
|
|
64
66
|
assert "load `$tcx-source-gate`" in flat_skill
|
|
65
67
|
assert "current-workflow Snapshot/Dataset candidates" in flat_skill
|
|
66
68
|
assert "Preserve an independent current view before Decision Memory" in flat_skill
|
|
69
|
+
assert "compact judgment frame derived from the user mandate" in flat_skill
|
|
70
|
+
assert "not replace the frame" in flat_skill
|
|
67
71
|
assert "[Research Framing playbook](playbooks/research-framing.md)" in skill
|
|
68
72
|
assert "Skip the playbook for a narrow fact or recorded order" in flat_skill
|
|
69
73
|
assert "Frame research as a provisional causal map, not a request-shaped checklist" in flat_framing
|
|
@@ -123,6 +123,12 @@ def _research_args(artifact_id: str, artifact_type: str, run_id: str, *, inputs:
|
|
|
123
123
|
|
|
124
124
|
def test_explicit_brain_invocation_is_exact_and_single() -> None:
|
|
125
125
|
assert explicit_investment_brain_invocation(f"Use ${BRAIN_ID}.") == BRAIN_ID
|
|
126
|
+
assert explicit_investment_brain_invocation(
|
|
127
|
+
"$Investment-Brain-Quality-Growth\nAnalyze ACME."
|
|
128
|
+
) == BRAIN_ID
|
|
129
|
+
assert explicit_investment_brain_invocation(
|
|
130
|
+
f"${BRAIN_ID}\n$strategy-quality-watch\nAnalyze ACME."
|
|
131
|
+
) == BRAIN_ID
|
|
126
132
|
assert explicit_investment_brain_invocation(f"Use {BRAIN_ID}.") == ""
|
|
127
133
|
assert explicit_investment_brain_invocation(f"${BRAIN_ID} then ${BRAIN_ID}") == BRAIN_ID
|
|
128
134
|
with pytest.raises(ValueError, match="exactly one"):
|
|
@@ -159,6 +165,10 @@ def test_explicit_brain_invocation_accepts_only_the_projected_skill_link(
|
|
|
159
165
|
prompt = f"Use [${BRAIN_ID}]({target}) and ${BRAIN_ID}."
|
|
160
166
|
|
|
161
167
|
assert explicit_investment_brain_invocation(prompt, workspace) == BRAIN_ID
|
|
168
|
+
assert explicit_investment_brain_invocation(
|
|
169
|
+
f"Use [$Investment-Brain-Quality-Growth]({target}).",
|
|
170
|
+
workspace,
|
|
171
|
+
) == BRAIN_ID
|
|
162
172
|
with pytest.raises(ValueError, match="must target"):
|
|
163
173
|
explicit_investment_brain_invocation(
|
|
164
174
|
f"Use [${BRAIN_ID}]({workspace / '.agents/skills/tcx-build/SKILL.md'}).",
|
|
@@ -132,6 +132,12 @@ def test_analysis_run_seals_enabled_context_and_respects_workspace_default(tmp_p
|
|
|
132
132
|
|
|
133
133
|
def test_explicit_strategy_invocation_never_guesses_from_natural_language() -> None:
|
|
134
134
|
assert explicit_strategy_invocation("Use $strategy-quality-watch for this review.") == "strategy-quality-watch"
|
|
135
|
+
assert explicit_strategy_invocation(
|
|
136
|
+
"$Strategy-Quality-Watch\nReview this portfolio."
|
|
137
|
+
) == "strategy-quality-watch"
|
|
138
|
+
assert explicit_strategy_invocation(
|
|
139
|
+
"$investment-brain-quality-growth\n$strategy-quality-watch\nReview this portfolio."
|
|
140
|
+
) == "strategy-quality-watch"
|
|
135
141
|
assert explicit_strategy_invocation("Use strategy-quality-watch for this review.") == ""
|
|
136
142
|
assert explicit_strategy_invocation("Use $tcx-strategy to create a reusable strategy.") == ""
|
|
137
143
|
with pytest.raises(ValueError, match="exactly one"):
|
|
@@ -146,6 +152,10 @@ def test_explicit_strategy_invocation_accepts_only_the_projected_skill_link(tmp_
|
|
|
146
152
|
|
|
147
153
|
assert explicit_strategy_invocation(prompt, tmp_path) == "strategy-quality-watch"
|
|
148
154
|
assert explicit_strategy_invocation(f"{prompt} $strategy-quality-watch", tmp_path) == "strategy-quality-watch"
|
|
155
|
+
assert explicit_strategy_invocation(
|
|
156
|
+
f"[$Strategy-Quality-Watch]({skill})\nReview it.",
|
|
157
|
+
tmp_path,
|
|
158
|
+
) == "strategy-quality-watch"
|
|
149
159
|
with pytest.raises(ValueError, match="must target"):
|
|
150
160
|
explicit_strategy_invocation(
|
|
151
161
|
f"Use [$strategy-quality-watch]({tmp_path / 'other/SKILL.md'}).",
|
|
@@ -145,6 +145,26 @@ def test_native_invocation_accepts_formatting_and_exact_workspace_link(workspace
|
|
|
145
145
|
assert mandate.prompt_sha256 == hashlib.sha256(prompt.encode()).hexdigest()
|
|
146
146
|
|
|
147
147
|
|
|
148
|
+
@pytest.mark.parametrize(
|
|
149
|
+
"prompt",
|
|
150
|
+
[
|
|
151
|
+
"$TCX-ORDER-SUBMIT --ticket-id ticket-1 --approval-receipt-id receipt-1",
|
|
152
|
+
"$tcx-order-submit\n--ticket-id ticket-1\n--approval-receipt-id receipt-1",
|
|
153
|
+
"$tcx-order-submit --ticket-id ticket-1\n--approval-receipt-id receipt-1",
|
|
154
|
+
],
|
|
155
|
+
)
|
|
156
|
+
def test_native_invocation_accepts_case_and_line_wrapping(
|
|
157
|
+
workspace: Path,
|
|
158
|
+
prompt: str,
|
|
159
|
+
) -> None:
|
|
160
|
+
mandate = parse_native_execution_invocation(prompt, workspace)
|
|
161
|
+
|
|
162
|
+
assert mandate is not None
|
|
163
|
+
assert mandate.action == NATIVE_SUBMIT_ACTION
|
|
164
|
+
assert mandate.ticket_id == "ticket-1"
|
|
165
|
+
assert mandate.approval_receipt_id == "receipt-1"
|
|
166
|
+
|
|
167
|
+
|
|
148
168
|
def test_native_invocation_rejects_mismatched_workspace_link(workspace: Path) -> None:
|
|
149
169
|
prompt = (
|
|
150
170
|
f"[$tcx-order-submit]({workspace / '.agents/skills/tcx-order-cancel/SKILL.md'}) "
|
|
@@ -166,7 +186,6 @@ def test_native_invocation_rejects_mismatched_workspace_link(workspace: Path) ->
|
|
|
166
186
|
"$tcx-order-submit ticket-1 --approval-receipt-id receipt-1",
|
|
167
187
|
"$tcx-order-submit --ticket-id 'ticket-1' --approval-receipt-id receipt-1",
|
|
168
188
|
"$tcx-order-submit --ticket-id ticket\\-1 --approval-receipt-id receipt-1",
|
|
169
|
-
"$tcx-order-submit --ticket-id ticket-1\n--approval-receipt-id receipt-1",
|
|
170
189
|
"$tcx-order-submit --ticket-id ticket-1 --approval-receipt-id receipt-1 extra",
|
|
171
190
|
"$tcx-order-submit --ticket-id ticket-1 --approval-receipt-id receipt-1 "
|
|
172
191
|
"$tcx-order-cancel --ticket-id ticket-1",
|
|
@@ -144,6 +144,9 @@ def test_order_allow_parser_accepts_format_only_variants(workspace: Path, mode:
|
|
|
144
144
|
target = workspace / ".agents/skills/tcx-order-allow/SKILL.md"
|
|
145
145
|
prompts = (
|
|
146
146
|
order_allow_prompt(mode),
|
|
147
|
+
f"$TCX-ORDER-ALLOW --mode {mode}\nRun the requested task.",
|
|
148
|
+
f"$tcx-order-allow --mode {mode} Run the requested task.",
|
|
149
|
+
f"$tcx-order-allow\n--mode\n{mode}\nRun the requested task.",
|
|
147
150
|
f"$tcx-order-allow --mode {mode}\r\nRun the requested scheduled task.",
|
|
148
151
|
f"\ufeff\n \t$tcx-order-allow --mode {mode} \t\u2028Run the requested task.\n",
|
|
149
152
|
f"\u00a0$tcx-order-allow\u3000--mode {mode}\u00a0\nRun the requested task.",
|
|
@@ -161,7 +164,6 @@ def test_order_allow_parser_accepts_format_only_variants(workspace: Path, mode:
|
|
|
161
164
|
"$tcx-order-allow --mode paper\n\ufeff",
|
|
162
165
|
"$tcx-order-allow",
|
|
163
166
|
"$tcx-order-allow --mode=paper\nSubmit it.",
|
|
164
|
-
"$tcx-order-allow --mode PAPER\nSubmit it.",
|
|
165
167
|
"$tcx-order-allow --mode paper --extra yes\nSubmit it.",
|
|
166
168
|
"$tcx-order-allow --mode paper\n$tcx-build\nChange the connector.",
|
|
167
169
|
"$tcx-order-allow --mode paper\n\u200b$tcx-build\nChange the connector.",
|
|
@@ -118,7 +118,7 @@ def test_cli_hook_dispatch_preserves_standard_input_and_output(
|
|
|
118
118
|
def test_v2_package_metadata_has_one_stable_version_source() -> None:
|
|
119
119
|
project = tomllib.loads((ROOT / "pyproject.toml").read_text(encoding="utf-8"))
|
|
120
120
|
|
|
121
|
-
assert TRADINGCODEX_VERSION == "2.1.
|
|
121
|
+
assert TRADINGCODEX_VERSION == "2.1.2"
|
|
122
122
|
assert str(Version(TRADINGCODEX_VERSION)) == TRADINGCODEX_VERSION
|
|
123
123
|
assert project["project"]["dynamic"] == ["version"]
|
|
124
124
|
assert "version" not in project["project"]
|
|
@@ -203,6 +203,10 @@ def test_source_snapshot_api_tool_and_role_instructions_align() -> None:
|
|
|
203
203
|
assert "Treat\nOpenBB as access to its returned provider" in source_gate
|
|
204
204
|
assert "Secondary does not mean screen-only" in source_gate
|
|
205
205
|
assert "do not require a fixed source count" in source_gate
|
|
206
|
+
assert "not a one-call budget" in source_gate
|
|
207
|
+
assert "newly discovered gap, contradiction, stale anchor, or\nidentifier problem" in source_gate
|
|
208
|
+
assert "number and mix of useful sources" in source_gate
|
|
209
|
+
assert "another source is appropriate when\nit resolves a material gap or conflict" in source_gate
|
|
206
210
|
assert "Use `evidence_readiness: decision-grade` when every\nconclusion-driving claim" in source_gate
|
|
207
211
|
assert "not merely because a primary source is\nabsent" in source_gate
|
|
208
212
|
assert "latest completed period can be the current usable anchor" in source_gate
|
|
@@ -222,6 +226,8 @@ def test_source_snapshot_api_tool_and_role_instructions_align() -> None:
|
|
|
222
226
|
assert "SourceSnapshot" in openbb_reference and "Dataset" in openbb_reference
|
|
223
227
|
for field in ("snapshot_id", "retrieved_at", "recorded_at", "known_at"):
|
|
224
228
|
assert f"`{field}`" in collect_evidence
|
|
229
|
+
assert "without waiting for a new field-by-field\n instruction" in collect_evidence
|
|
230
|
+
assert "Use evidence value, not a fixed source or call count" in collect_evidence
|
|
225
231
|
|
|
226
232
|
artifact_cutoff = TOOL_REGISTRY["create_research_artifact"].input_schema[
|
|
227
233
|
"properties"
|
|
@@ -391,7 +391,8 @@ def _fixed_role_dispatch_checks(root: Path) -> list[dict[str, Any]]:
|
|
|
391
391
|
"Only an unavailable\n evidence-producing role may use a generic child",
|
|
392
392
|
"Do not replace an independent\n `risk-manager` or `judgment-reviewer` review",
|
|
393
393
|
"`followup_task`",
|
|
394
|
-
"`
|
|
394
|
+
"Use `judgment-reviewer` when",
|
|
395
|
+
"without a meaningful competing case",
|
|
395
396
|
)
|
|
396
397
|
)
|
|
397
398
|
return [
|
|
@@ -1087,7 +1088,7 @@ def _improvement_checks(root: Path) -> list[dict[str, Any]]:
|
|
|
1087
1088
|
checks.append(path_check(root, "improvement", "skill index projected", ".tradingcodex/generated/skill-index.json", False))
|
|
1088
1089
|
checks.append(path_check(root, "improvement", "projection manifest projected", ".tradingcodex/generated/projection-manifest.json", False))
|
|
1089
1090
|
checks.append(text_check(root, "improvement", "bounded evidence fallback installed", ".agents/skills/tcx-workflow/SKILL.md", "Only an unavailable\n evidence-producing role may use a generic child", False))
|
|
1090
|
-
checks.append(text_check(root, "improvement", "decision quality review installed", ".agents/skills/tcx-workflow/SKILL.md", "high-
|
|
1091
|
+
checks.append(text_check(root, "improvement", "decision quality review installed", ".agents/skills/tcx-workflow/SKILL.md", "high-consequence uncertainty", False))
|
|
1091
1092
|
checks.append(text_check(root, "improvement", "method profile routing installed", ".codex/prompts/base_instructions/head-manager.md", "listed-equity FCFF DCF", False))
|
|
1092
1093
|
checks.append(text_check(root, "improvement", "Codex-native workflow skill installed", ".agents/skills/tcx-workflow/SKILL.md", "## Fast Path", False))
|
|
1093
1094
|
checks.append(text_check(root, "improvement", "turn grant revocation hook installed", ".codex/hooks/tradingcodex_hook.py", "revoke_prior_order_turn", True))
|