tradingcodex 1.0.2__tar.gz → 1.1.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/CHANGELOG.md +53 -2
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/PKG-INFO +6 -10
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/README.md +5 -9
- tradingcodex-1.1.1/apps/mcp/admin.py +20 -0
- tradingcodex-1.1.1/apps/mcp/migrations/0002_remove_external_mcp_gate.py +22 -0
- tradingcodex-1.1.1/apps/mcp/models.py +45 -0
- tradingcodex-1.1.1/apps/mcp/services.py +103 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/README.md +4 -4
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/components.md +2 -2
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/core-concepts-and-rules.md +4 -2
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/decision-memory.md +12 -2
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/deployment.md +13 -4
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/execution-without-subagent-plan.md +24 -18
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/generated-workspaces.md +181 -84
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/harness.md +24 -21
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/interfaces-and-surfaces.md +84 -65
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/investment-brain-plugins.md +4 -3
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/product-direction.md +1 -1
- tradingcodex-1.1.1/docs/release-readiness.md +190 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/research-memory-and-artifacts.md +28 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/roles-skills-and-workflows.md +54 -19
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/safety-policy-and-execution.md +137 -120
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/system-architecture.md +13 -15
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/user-facing-skills.md +46 -24
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/validation-and-test-plan.md +138 -30
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/src/features/SystemPage.tsx +6 -3
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/installation.md +67 -3
- tradingcodex-1.1.1/tests/test_artifact_catalog.py +203 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_brain_skill.py +1 -1
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_broker_center_prd.py +28 -79
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_build_contract_metadata.py +5 -40
- tradingcodex-1.1.1/tests/test_build_hook.py +2326 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_build_turn_grant.py +94 -51
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_clean_v1_cli_audit.py +1 -88
- tradingcodex-1.1.1/tests/test_codex_capabilities.py +160 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_investment_brain_prompt_layers.py +6 -1
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_investment_brain_provenance.py +39 -1
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_investor_context.py +76 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_mcp_broker_release_health.py +3 -236
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_native_execution_gateway.py +101 -11
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_order_turn_grant.py +29 -9
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_platform_runtime.py +481 -70
- tradingcodex-1.1.1/tests/test_provider_source_approval.py +1041 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_release_contract.py +40 -127
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_research_forecast_surfaces.py +19 -4
- tradingcodex-1.1.1/tests/test_v1_migrations.py +106 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex.egg-info/PKG-INFO +6 -10
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex.egg-info/SOURCES.txt +7 -3
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/__main__.py +3 -3
- tradingcodex-1.1.1/tradingcodex_cli/commands/build.py +61 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/connectors.py +7 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/doctor.py +80 -31
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/mcp.py +15 -267
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/mode.py +1 -1
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/research.py +37 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/generator.py +288 -27
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/startup_status.py +15 -5
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/api.py +49 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/agents.py +18 -3
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/analysis_runs.py +71 -13
- tradingcodex-1.1.1/tradingcodex_service/application/artifact_catalog.py +721 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/brokers.py +573 -310
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/build_gateway.py +129 -88
- tradingcodex-1.1.1/tradingcodex_service/application/codex_capabilities.py +284 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/components.py +19 -19
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/execution_gateway.py +105 -40
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/operator_authority.py +1 -89
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/runtime.py +9 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/runtime_mode.py +4 -1
- tradingcodex-1.1.1/tradingcodex_service/application/skill_invocations.py +354 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/viewer.py +2 -4
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/mcp_runtime.py +73 -164
- tradingcodex-1.0.2/tradingcodex_service/static/tradingcodex_web/assets/index-CFoXYUtq.js → tradingcodex-1.1.1/tradingcodex_service/static/tradingcodex_web/assets/index-_2ys6WhF.js +1 -1
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/static/tradingcodex_web/index.html +1 -1
- tradingcodex-1.1.1/tradingcodex_service/version.py +1 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/codex-base/files/.codex/config.toml +72 -6
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/codex-base/files/.codex/hooks/tradingcodex_hook.py +1902 -121
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/codex-base/files/.codex/hooks.json +1 -1
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/codex-base/files/.codex/prompts/base_instructions/head-manager.md +111 -52
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/codex-base/files/.codex/rules/tradingcodex.rules +0 -7
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/codex-base/files/AGENTS.md +41 -20
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/guidance-guardrails/files/.tradingcodex/guidance/task-quality-checklist.md +1 -1
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-automate/SKILL.md +24 -14
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/SKILL.md +13 -7
- tradingcodex-1.1.1/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-build/SKILL.md +193 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-dashboard/SKILL.md +2 -2
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-allow/SKILL.md +12 -7
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-cancel/SKILL.md +7 -3
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-submit/SKILL.md +7 -3
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-server/SKILL.md +17 -4
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-strategy/SKILL.md +14 -8
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/SKILL.md +12 -6
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/references/context-and-override.md +4 -1
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/tradingcodex-mcp/module.json +0 -1
- tradingcodex-1.0.2/apps/mcp/admin.py +0 -40
- tradingcodex-1.0.2/apps/mcp/models.py +0 -182
- tradingcodex-1.0.2/apps/mcp/services.py +0 -1381
- tradingcodex-1.0.2/docs/release-readiness.md +0 -288
- tradingcodex-1.0.2/tests/test_build_hook.py +0 -1283
- tradingcodex-1.0.2/tests/test_mcp_operator_authority.py +0 -524
- tradingcodex-1.0.2/tests/test_provider_source_approval.py +0 -413
- tradingcodex-1.0.2/tests/test_v1_migrations.py +0 -46
- tradingcodex-1.0.2/tradingcodex_cli/commands/build.py +0 -128
- tradingcodex-1.0.2/tradingcodex_service/application/customization.py +0 -457
- tradingcodex-1.0.2/tradingcodex_service/version.py +0 -1
- tradingcodex-1.0.2/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-build/SKILL.md +0 -94
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/CONTRIBUTING.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/LICENSE +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/MANIFEST.in +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/NOTICE +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/TRADEMARKS.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/__init__.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/audit/__init__.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/audit/admin.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/audit/apps.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/audit/migrations/0001_v1_initial.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/audit/migrations/__init__.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/audit/models.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/harness/__init__.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/harness/admin.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/harness/apps.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/harness/migrations/0001_v1_initial.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/harness/migrations/__init__.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/harness/models.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/harness/templatetags/__init__.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/integrations/__init__.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/integrations/admin.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/integrations/apps.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/integrations/migrations/0001_v1_initial.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/integrations/migrations/__init__.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/integrations/models.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/mcp/__init__.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/mcp/apps.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/mcp/migrations/0001_v1_initial.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/mcp/migrations/__init__.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/orders/__init__.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/orders/admin.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/orders/apps.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/orders/migrations/0001_v1_initial.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/orders/migrations/__init__.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/orders/models.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/orders/services.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/policy/__init__.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/policy/admin.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/policy/apps.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/policy/migrations/0001_v1_initial.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/policy/migrations/__init__.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/policy/models.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/policy/services.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/portfolio/__init__.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/portfolio/admin.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/portfolio/apps.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/portfolio/migrations/0001_v1_initial.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/portfolio/migrations/__init__.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/apps/portfolio/models.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/assets/tradingcodex-banner.svg +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/codex-native-orchestration.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/financial-workflow-references.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/guardrails.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/improvement-loop.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/docs/licensing-and-commercialization.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/index.html +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/package-lock.json +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/package.json +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/src/App.tsx +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/src/api.ts +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/src/domain.ts +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/src/features/LibraryPage.tsx +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/src/features/SkillsPage.tsx +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/src/main.tsx +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/src/navigation.js +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/src/navigation.test.js +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/src/styles.css +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/src/ui.tsx +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/src/viewer-data.js +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/tsconfig.json +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/frontend/vite.config.ts +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/install.sh +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/pyproject.toml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/setup.cfg +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_artifact_authentication.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_codex_cli_compat.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_codex_cli_contract.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_codex_native_orchestration.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_dashboard_skill.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_decision_memory_core.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_dev_bootstrap.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_dynamic_artifact_quality.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_e2e_user_scenarios.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_evaluation_lab_hardening.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_evaluation_profiles.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_guidebook_contract.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_investment_analysis.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_investment_brain_cli.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_investment_brain_registry.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_research_spec_profiles.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_runtime_paths.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_runtime_profile.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_security_invariants.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_skill_runtime_boundaries.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_source_snapshot_agent_contract.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_v1_state_integrity.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_viewer.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tests/test_workspace_git_contract.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex.egg-info/dependency_links.txt +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex.egg-info/entry_points.txt +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex.egg-info/requires.txt +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex.egg-info/top_level.txt +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/__init__.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/__init__.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/bootstrap.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/db.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/decision.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/evaluation.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/forecast.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/home.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/investment_brains.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/investor_context.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/orders.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/policy.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/profile.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/skills.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/strategies.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/subagents.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/utils.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/workflow.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/commands/workspaces.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/mcp_stdio.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/package_source.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/service_autostart.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_cli/versioning.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/__init__.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/admin.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/__init__.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/artifact_bindings.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/artifact_quality.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/audit.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/common.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/context_budget.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/decision_packages.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/evaluation_lab.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/forecasting.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/git_subprocess.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/harness.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/health.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/investment_analysis.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/investment_brains.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/investor_context.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/markdown_preview.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/orders.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/policy.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/portfolio.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/postmortems.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/research.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/research_specs.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/source_snapshots.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/workspace_git.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/application/workspaces.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/asgi.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/log_safety.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/runtime_profile.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/settings.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/static/tradingcodex_admin/favicon.svg +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/static/tradingcodex_web/assets/index-DYzj_xRR.css +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/urls.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/viewer_api.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/web.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/tradingcodex_service/wsgi.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/__init__.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/audit/files/.tradingcodex/audit/README.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/audit/files/trading/audit/.gitkeep +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/audit/module.json +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/codex-base/files/.tradingcodex/cli.py +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/codex-base/files/.tradingcodex/config.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/codex-base/files/pyproject.toml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/codex-base/files/tcx +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/codex-base/files/tcx.cmd +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/codex-base/module.json +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/policies/restricted-list.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/approval_receipt.schema.json +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/audit_event.schema.json +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/evidence_pack.schema.json +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/execution_result.schema.json +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/fundamental_report.schema.json +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/news_report.schema.json +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/order_ticket.schema.json +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/portfolio_review.schema.json +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/postmortem_report.schema.json +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/research_artifact.schema.json +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/risk_report.schema.json +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/technical_report.schema.json +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/thesis.schema.json +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/files/.tradingcodex/schemas/valuation.schema.json +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/enforcement-guardrails/module.json +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/fundamental-analyst.toml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/instrument-analyst.toml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/judgment-reviewer.toml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/macro-analyst.toml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/news-analyst.toml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/portfolio-manager.toml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/risk-manager.toml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/technical-analyst.toml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/fixed-subagents/files/.codex/agents/valuation-analyst.toml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/fixed-subagents/files/.tradingcodex/mainagent/skill-change-proposals/.gitkeep +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/fixed-subagents/module.json +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/guidance-guardrails/files/.tradingcodex/guidance/guardrails.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/guidance-guardrails/module.json +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/.tradingcodex/secrets.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/trading/forecasts/.gitkeep +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/trading/market-data/.gitkeep +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/trading/portfolio/.gitkeep +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/trading/reports/fundamental/.gitkeep +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/trading/reports/instrument/.gitkeep +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/trading/reports/macro/.gitkeep +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/trading/reports/news/.gitkeep +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/trading/reports/policy/.gitkeep +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/trading/reports/portfolio/.gitkeep +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/trading/reports/postmortem/.gitkeep +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/trading/reports/risk/.gitkeep +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/trading/reports/technical/.gitkeep +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/trading/reports/valuation/.gitkeep +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/files/trading/research/.gitkeep +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/information-barriers/module.json +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/paper-trading/module.json +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-automate/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-brain/references/bundle-contract.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-build/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-dashboard/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-investor-context/SKILL.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-investor-context/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-memory/SKILL.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-memory/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-allow/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-cancel/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-order-submit/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-plan/SKILL.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-plan/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-server/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-strategy/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.agents/skills/tcx-workflow/references/decision-quality-spine.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/fundamental-analyst/tcx-fundamental/SKILL.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/fundamental-analyst/tcx-fundamental/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/instrument-analyst/tcx-instrument/SKILL.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/instrument-analyst/tcx-instrument/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/judgment-reviewer/tcx-judgment/SKILL.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/judgment-reviewer/tcx-judgment/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/macro-analyst/tcx-macro/SKILL.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/macro-analyst/tcx-macro/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/news-analyst/tcx-news/SKILL.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/news-analyst/tcx-news/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-order-draft/SKILL.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-order-draft/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-portfolio/SKILL.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/portfolio-manager/tcx-portfolio/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-order-approve/SKILL.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-order-approve/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-policy/SKILL.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-policy/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-risk/SKILL.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/risk-manager/tcx-risk/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-anti-overfit/SKILL.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-anti-overfit/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-artifact/SKILL.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-artifact/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-data-qc/SKILL.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-data-qc/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-evidence/SKILL.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-evidence/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-forecast/SKILL.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-forecast/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-scenarios/SKILL.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-scenarios/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-source-gate/SKILL.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/shared/tcx-source-gate/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/technical-analyst/tcx-technical/SKILL.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/technical-analyst/tcx-technical/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/valuation-analyst/tcx-valuation/SKILL.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/files/.tradingcodex/subagents/skills/valuation-analyst/tcx-valuation/agents/openai.yaml +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/repo-skills/module.json +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/enforcer/README.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/gateway/README.md +0 -0
- {tradingcodex-1.0.2 → tradingcodex-1.1.1}/workspace_templates/modules/tradingcodex-mcp/files/.tradingcodex/mcp/server.py +0 -0
|
@@ -2,6 +2,57 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 1.1.1 - 2026-07-16
|
|
6
|
+
|
|
7
|
+
- Remove the legacy user-capability gate, its CLI and broker-import paths,
|
|
8
|
+
and its active database tables. User-installed MCP servers, skills, plugins,
|
|
9
|
+
apps, and hooks now remain BYOR native Codex capabilities for root and fixed
|
|
10
|
+
agents. Add a secret-free read-only capability inventory to MCP and System,
|
|
11
|
+
preserve non-reserved user Codex configuration across update, and keep all
|
|
12
|
+
TradingCodex principals, grants, protected proofs, and order effects behind
|
|
13
|
+
the existing service boundary.
|
|
14
|
+
|
|
15
|
+
## 1.1.0 - 2026-07-16
|
|
16
|
+
|
|
17
|
+
- Make managed skill invocation resilient without weakening authority: Build,
|
|
18
|
+
Brain, Strategy, and native order entrypoints now share one lexical parser
|
|
19
|
+
that accepts the first meaningful line, matching projected-skill Markdown
|
|
20
|
+
links, same-line requests, BOMs, and cross-platform newline forms. Prompt
|
|
21
|
+
proofs remain bound to the original bytes, and order flags, approvals,
|
|
22
|
+
confirmations, one-effect limits, and replay protection remain strict.
|
|
23
|
+
- Give `trading-build` credential-free, limited public HTTP(S) and HTTPS Git
|
|
24
|
+
retrieval while keeping root native web search disabled. Public source files
|
|
25
|
+
are staged only below the workspace-specific cache-backed scratch provider
|
|
26
|
+
directory, remain inert, and may be hashed, diffed, inspected, or
|
|
27
|
+
syntax-checked but not installed or executed. The proxy uses full HTTP
|
|
28
|
+
transport only for Git Smart HTTP's read-only protocol POST; ordinary HTTP
|
|
29
|
+
remains GET/HEAD-only and general POST stays blocked. Authentication,
|
|
30
|
+
model-authored request bodies, private/local targets, shell pipelines,
|
|
31
|
+
dependency installation, direct `trading/` downloads, Git publication, and
|
|
32
|
+
broker effects remain blocked.
|
|
33
|
+
- Make the active Build-turn shell a narrow, non-extensible review lane. Edits
|
|
34
|
+
use `apply_patch`; admitted commands are public GET/HEAD, enumerated read-only
|
|
35
|
+
HTTPS Git, limited workspace reads, inert provider hash/diff/Git inspection,
|
|
36
|
+
exact isolated `py_compile`, and allowlisted workspace-launcher operations.
|
|
37
|
+
General interpreters, helper scripts, test runners, build systems, shell
|
|
38
|
+
composition, model-authored POST, and native browser/web/network tools now
|
|
39
|
+
fail closed during Build while Research browser behavior remains unchanged.
|
|
40
|
+
- Add provider source provenance, full bundle hashing, secret/VCS/symlink
|
|
41
|
+
rejection, immutable approval snapshots, and provider-first connector
|
|
42
|
+
onboarding. Build-side inspection can return an inert bundle-only hash and
|
|
43
|
+
`service_check_required` posture without reading the central ledger; only the
|
|
44
|
+
interactive operator path resolves canonical approval state. Missing-provider
|
|
45
|
+
connection requests no longer leave dead-end connector scaffolds; explicit
|
|
46
|
+
scaffold-only requests remain available.
|
|
47
|
+
- Preserve the v1 update contract for existing workspaces. `tcx update`
|
|
48
|
+
refreshes the generated invocation, permission, hook, and skill surfaces
|
|
49
|
+
without a database migration, keeps workspace identity and user-owned
|
|
50
|
+
artifacts, and retains the existing explicit home, database, and service
|
|
51
|
+
address. Fully restart Codex and open a new task after updating so an older
|
|
52
|
+
task cannot retain its prior hook snapshot. Existing manual provider bundles
|
|
53
|
+
may omit provenance, while changed or newly unsafe bundles must be reviewed
|
|
54
|
+
and approved again.
|
|
55
|
+
|
|
5
56
|
## 1.0.2 - 2026-07-15
|
|
6
57
|
|
|
7
58
|
- Preserve an attached release workspace's explicit `TRADINGCODEX_HOME`,
|
|
@@ -127,8 +178,8 @@
|
|
|
127
178
|
user-terminal handoffs instead of attempting a blocked model shell.
|
|
128
179
|
- Replace agent-side connector `connect`/write-style scaffold MCP operations
|
|
129
180
|
with read-only, content-addressed scaffold rendering plus native patching.
|
|
130
|
-
|
|
131
|
-
|
|
181
|
+
Provider-source approval remains an interactive operator action protected by
|
|
182
|
+
a one-use service capability.
|
|
132
183
|
- Add the explicit-only `tcx-order-allow` bundle and `OrderTurnGrant`: only a
|
|
133
184
|
physical first line `$tcx-order-allow --mode paper|validation|live` can admit one
|
|
134
185
|
later submit or cancel in that root turn. Grants bind workspace, session,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tradingcodex
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.1.1
|
|
4
4
|
Summary: Local-first investment operating system for Codex-native research and service-gated execution.
|
|
5
5
|
Author: TradingCodex Authors
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -132,15 +132,6 @@ needs revision, or is blocked.
|
|
|
132
132
|
| **Django service** | Enforces artifact identity, policy, approval, broker, idempotency, execution, and audit rules through shared application services. | It does not replace Codex with a semantic router, preset team, or stored workflow DAG. |
|
|
133
133
|
| **Read-only viewer** | Lets you browse Library artifacts, Skills, System posture, and registered workspaces. | It does not launch Codex, write workspace files, or mutate orders, brokers, skills, or policy. |
|
|
134
134
|
|
|
135
|
-
```mermaid
|
|
136
|
-
flowchart LR
|
|
137
|
-
question[Your mandate] --> codex[Native Codex task]
|
|
138
|
-
codex --> team[Head Manager and fixed-role evidence]
|
|
139
|
-
team --> artifacts[Authenticated research artifacts]
|
|
140
|
-
artifacts --> viewer[Read-only Library and System viewer]
|
|
141
|
-
artifacts --> service[Policy, approval, broker, and audit gates]
|
|
142
|
-
```
|
|
143
|
-
|
|
144
135
|
## What You Keep
|
|
145
136
|
|
|
146
137
|
TradingCodex keeps the work inspectable after the chat ends:
|
|
@@ -165,6 +156,11 @@ that state in prompts or workspace files.
|
|
|
165
156
|
- Fixed roles have bounded tools and handoff responsibilities. A final order
|
|
166
157
|
path is available only from an exact root-native protocol, never from the
|
|
167
158
|
viewer, a subagent, public REST, generic CLI, or direct MCP call.
|
|
159
|
+
- User-installed MCP servers, skills, and plugins are BYOR native Codex
|
|
160
|
+
capabilities. TradingCodex neither recommends nor verifies them; their
|
|
161
|
+
licenses, data terms, costs, and side effects remain the user/provider's
|
|
162
|
+
responsibility, and TradingCodex guarantees cover only its own capabilities,
|
|
163
|
+
state, and actions.
|
|
168
164
|
- Raw credentials do not belong in prompts, workspace files, reports, API/MCP
|
|
169
165
|
output, or audit data.
|
|
170
166
|
|
|
@@ -95,15 +95,6 @@ needs revision, or is blocked.
|
|
|
95
95
|
| **Django service** | Enforces artifact identity, policy, approval, broker, idempotency, execution, and audit rules through shared application services. | It does not replace Codex with a semantic router, preset team, or stored workflow DAG. |
|
|
96
96
|
| **Read-only viewer** | Lets you browse Library artifacts, Skills, System posture, and registered workspaces. | It does not launch Codex, write workspace files, or mutate orders, brokers, skills, or policy. |
|
|
97
97
|
|
|
98
|
-
```mermaid
|
|
99
|
-
flowchart LR
|
|
100
|
-
question[Your mandate] --> codex[Native Codex task]
|
|
101
|
-
codex --> team[Head Manager and fixed-role evidence]
|
|
102
|
-
team --> artifacts[Authenticated research artifacts]
|
|
103
|
-
artifacts --> viewer[Read-only Library and System viewer]
|
|
104
|
-
artifacts --> service[Policy, approval, broker, and audit gates]
|
|
105
|
-
```
|
|
106
|
-
|
|
107
98
|
## What You Keep
|
|
108
99
|
|
|
109
100
|
TradingCodex keeps the work inspectable after the chat ends:
|
|
@@ -128,6 +119,11 @@ that state in prompts or workspace files.
|
|
|
128
119
|
- Fixed roles have bounded tools and handoff responsibilities. A final order
|
|
129
120
|
path is available only from an exact root-native protocol, never from the
|
|
130
121
|
viewer, a subagent, public REST, generic CLI, or direct MCP call.
|
|
122
|
+
- User-installed MCP servers, skills, and plugins are BYOR native Codex
|
|
123
|
+
capabilities. TradingCodex neither recommends nor verifies them; their
|
|
124
|
+
licenses, data terms, costs, and side effects remain the user/provider's
|
|
125
|
+
responsibility, and TradingCodex guarantees cover only its own capabilities,
|
|
126
|
+
state, and actions.
|
|
131
127
|
- Raw credentials do not belong in prompts, workspace files, reports, API/MCP
|
|
132
128
|
output, or audit data.
|
|
133
129
|
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
from django.contrib import admin
|
|
2
|
+
|
|
3
|
+
from apps.mcp.models import McpToolCall, McpToolDefinition
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class ReadOnlyAdmin(admin.ModelAdmin):
|
|
7
|
+
def get_readonly_fields(self, request, obj=None):
|
|
8
|
+
return tuple(field.name for field in self.model._meta.fields)
|
|
9
|
+
|
|
10
|
+
def has_add_permission(self, request) -> bool:
|
|
11
|
+
return False
|
|
12
|
+
|
|
13
|
+
def has_change_permission(self, request, obj=None) -> bool:
|
|
14
|
+
return False
|
|
15
|
+
|
|
16
|
+
def has_delete_permission(self, request, obj=None) -> bool:
|
|
17
|
+
return False
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
admin.site.register([McpToolDefinition, McpToolCall], ReadOnlyAdmin)
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
from django.db import migrations
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def remove_gate_broker_connections(apps, schema_editor):
|
|
5
|
+
BrokerConnection = apps.get_model("integrations", "BrokerConnection")
|
|
6
|
+
BrokerConnection.objects.filter(provider_id="external-mcp", transport="mcp").delete()
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class Migration(migrations.Migration):
|
|
10
|
+
dependencies = [
|
|
11
|
+
("integrations", "0001_v1_initial"),
|
|
12
|
+
("mcp", "0001_v1_initial"),
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
operations = [
|
|
16
|
+
migrations.RunPython(remove_gate_broker_connections, migrations.RunPython.noop),
|
|
17
|
+
migrations.DeleteModel(name="McpExternalPermissionRequest"),
|
|
18
|
+
migrations.DeleteModel(name="McpExternalToolCall"),
|
|
19
|
+
migrations.DeleteModel(name="McpExternalToolPermission"),
|
|
20
|
+
migrations.DeleteModel(name="McpExternalTool"),
|
|
21
|
+
migrations.DeleteModel(name="McpRouter"),
|
|
22
|
+
]
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
from django.db import models
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class McpToolDefinition(models.Model):
|
|
5
|
+
name = models.CharField(max_length=160, unique=True)
|
|
6
|
+
description = models.TextField(blank=True)
|
|
7
|
+
category = models.CharField(max_length=64, default="general")
|
|
8
|
+
capability_required = models.CharField(max_length=160, blank=True)
|
|
9
|
+
input_schema = models.JSONField(default=dict, blank=True)
|
|
10
|
+
risk_level = models.CharField(max_length=32, default="read")
|
|
11
|
+
allowed_roles = models.JSONField(default=list, blank=True)
|
|
12
|
+
requires_approval = models.BooleanField(default=False)
|
|
13
|
+
audit_required = models.BooleanField(default=True)
|
|
14
|
+
experimental = models.BooleanField(default=False)
|
|
15
|
+
enabled = models.BooleanField(default=True)
|
|
16
|
+
updated_at = models.DateTimeField(auto_now=True)
|
|
17
|
+
|
|
18
|
+
class Meta:
|
|
19
|
+
verbose_name = "MCP tool definition"
|
|
20
|
+
verbose_name_plural = "MCP tool definitions"
|
|
21
|
+
|
|
22
|
+
def __str__(self) -> str:
|
|
23
|
+
return self.name
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class McpToolCall(models.Model):
|
|
27
|
+
created_at = models.DateTimeField(auto_now_add=True)
|
|
28
|
+
tool_name = models.CharField(max_length=160)
|
|
29
|
+
principal_id = models.CharField(max_length=128, default="unknown")
|
|
30
|
+
status = models.CharField(max_length=32, default="recorded")
|
|
31
|
+
request = models.JSONField(default=dict, blank=True)
|
|
32
|
+
response = models.JSONField(default=dict, blank=True)
|
|
33
|
+
workspace_context = models.JSONField(default=dict, blank=True)
|
|
34
|
+
request_hash = models.CharField(max_length=64, blank=True)
|
|
35
|
+
result_hash = models.CharField(max_length=64, blank=True)
|
|
36
|
+
error = models.TextField(blank=True)
|
|
37
|
+
duration_ms = models.PositiveIntegerField(default=0)
|
|
38
|
+
|
|
39
|
+
class Meta:
|
|
40
|
+
ordering = ["-created_at", "-id"]
|
|
41
|
+
verbose_name = "MCP tool call"
|
|
42
|
+
verbose_name_plural = "MCP tool calls"
|
|
43
|
+
|
|
44
|
+
def __str__(self) -> str:
|
|
45
|
+
return f"{self.tool_name} {self.status}"
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import re
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
from tradingcodex_service.log_safety import redact_log_text
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
REDACTED = "<redacted>"
|
|
10
|
+
SAFE_REFERENCE_RE = re.compile(r"^env:[A-Za-z_][A-Za-z0-9_]*$")
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def redact_sensitive_data(value: Any, *, secret_values: tuple[str, ...] = ()) -> Any:
|
|
14
|
+
"""Redact credentials from MCP requests, responses, audit data, and errors."""
|
|
15
|
+
|
|
16
|
+
secrets = tuple(secret for secret in secret_values if secret)
|
|
17
|
+
if isinstance(value, dict):
|
|
18
|
+
redacted: dict[str, Any] = {}
|
|
19
|
+
for raw_key, item in value.items():
|
|
20
|
+
key = str(raw_key)
|
|
21
|
+
if key.lower() == "env":
|
|
22
|
+
redacted[key] = _redact_environment(item)
|
|
23
|
+
elif key.lower() == "credential_ref" and _is_safe_reference(item):
|
|
24
|
+
redacted[key] = str(item)
|
|
25
|
+
elif _is_sensitive_field(key):
|
|
26
|
+
redacted[key] = REDACTED
|
|
27
|
+
else:
|
|
28
|
+
redacted[key] = redact_sensitive_data(item, secret_values=secrets)
|
|
29
|
+
return redacted
|
|
30
|
+
if isinstance(value, list):
|
|
31
|
+
redacted_items: list[Any] = []
|
|
32
|
+
redact_next = False
|
|
33
|
+
for item in value:
|
|
34
|
+
if redact_next:
|
|
35
|
+
redacted_items.append(REDACTED)
|
|
36
|
+
redact_next = False
|
|
37
|
+
continue
|
|
38
|
+
redacted_items.append(redact_sensitive_data(item, secret_values=secrets))
|
|
39
|
+
redact_next = isinstance(item, str) and bool(
|
|
40
|
+
re.fullmatch(
|
|
41
|
+
r"--?(?:api[_-]?key|token|secret|password|credential|authorization)",
|
|
42
|
+
item,
|
|
43
|
+
flags=re.I,
|
|
44
|
+
)
|
|
45
|
+
)
|
|
46
|
+
return redacted_items
|
|
47
|
+
if isinstance(value, tuple):
|
|
48
|
+
return [redact_sensitive_data(item, secret_values=secrets) for item in value]
|
|
49
|
+
if isinstance(value, str):
|
|
50
|
+
return _redact_sensitive_text(value, secrets)
|
|
51
|
+
return value
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def _redact_environment(value: Any) -> dict[str, str] | str:
|
|
55
|
+
if not isinstance(value, dict):
|
|
56
|
+
return REDACTED
|
|
57
|
+
result: dict[str, str] = {}
|
|
58
|
+
for key, item in value.items():
|
|
59
|
+
text = str(item or "")
|
|
60
|
+
result[str(key)] = text if SAFE_REFERENCE_RE.fullmatch(text) else REDACTED
|
|
61
|
+
return result
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def _is_safe_reference(value: Any) -> bool:
|
|
65
|
+
text = str(value or "")
|
|
66
|
+
return bool(
|
|
67
|
+
SAFE_REFERENCE_RE.fullmatch(text)
|
|
68
|
+
or re.fullmatch(r"(?:os-keychain|keyring|secret)://[A-Za-z0-9._~:/@+-]+", text)
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def _is_sensitive_field(key: str) -> bool:
|
|
73
|
+
normalized = re.sub(r"[^a-z0-9]", "", str(key).lower())
|
|
74
|
+
return normalized.endswith(
|
|
75
|
+
(
|
|
76
|
+
"secret",
|
|
77
|
+
"secrets",
|
|
78
|
+
"password",
|
|
79
|
+
"passphrase",
|
|
80
|
+
"credential",
|
|
81
|
+
"credentials",
|
|
82
|
+
"apikey",
|
|
83
|
+
"accesstoken",
|
|
84
|
+
"refreshtoken",
|
|
85
|
+
"token",
|
|
86
|
+
"authorization",
|
|
87
|
+
"cookie",
|
|
88
|
+
)
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def _redact_sensitive_text(value: str, secret_values: tuple[str, ...] = ()) -> str:
|
|
93
|
+
text = str(value or "")
|
|
94
|
+
for secret in sorted((item for item in secret_values if item), key=len, reverse=True):
|
|
95
|
+
text = text.replace(secret, REDACTED)
|
|
96
|
+
text = re.sub(r"(?i)(bearer\s+)[^\s,;]+", rf"\1{REDACTED}", text)
|
|
97
|
+
text = re.sub(
|
|
98
|
+
r"(?i)((?:api[_-]?key|token|secret|password|credential|authorization)\s*[:=]\s*)([^\s,;&]+)",
|
|
99
|
+
rf"\1{REDACTED}",
|
|
100
|
+
text,
|
|
101
|
+
)
|
|
102
|
+
text = re.sub(r"(?i)([a-z][a-z0-9+.-]*://)[^/@\s]+@", rf"\1{REDACTED}@", text)
|
|
103
|
+
return redact_log_text(text)
|
|
@@ -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
|
|
50
|
+
| [release-readiness.md](./release-readiness.md) | Current v1 release readiness, prior-version update compatibility, exact-artifact validation, and tag, publication, and post-publish gates. |
|
|
51
51
|
|
|
52
52
|
## Workflow And Agent Documents
|
|
53
53
|
|
|
@@ -65,7 +65,7 @@ If these layers disagree, treat `docs/` as the durable product intent and fix th
|
|
|
65
65
|
| Document | Owns |
|
|
66
66
|
| --- | --- |
|
|
67
67
|
| [guardrails.md](./guardrails.md) | Guardrail taxonomy: guidance, enforcement, and information barriers. |
|
|
68
|
-
| [safety-policy-and-execution.md](./safety-policy-and-execution.md) | Permission checks, approval rules, execution lifecycle, adapter boundary,
|
|
68
|
+
| [safety-policy-and-execution.md](./safety-policy-and-execution.md) | Permission checks, approval rules, execution lifecycle, adapter boundary, BYOR Codex capability boundary, blocked actions, and secret handling. |
|
|
69
69
|
| [improvement-loop.md](./improvement-loop.md) | Workflow quality, research memory, improve records, skill evolution, postmortem review, validation feedback, and quality-learning loops. |
|
|
70
70
|
|
|
71
71
|
## Implementation And Operations Documents
|
|
@@ -73,7 +73,7 @@ If these layers disagree, treat `docs/` as the durable product intent and fix th
|
|
|
73
73
|
| Document | Owns |
|
|
74
74
|
| --- | --- |
|
|
75
75
|
| [system-architecture.md](./system-architecture.md) | Django modular monolith, central DB ownership, app boundaries, runtime planes, service-layer use cases, and core models. |
|
|
76
|
-
| [interfaces-and-surfaces.md](./interfaces-and-surfaces.md) | Product web, Django Admin, Django Ninja API, MCP boundary, CLI, generated wrapper behavior, and
|
|
76
|
+
| [interfaces-and-surfaces.md](./interfaces-and-surfaces.md) | Product web, Django Admin, Django Ninja API, MCP boundary, CLI, generated wrapper behavior, and read-only Codex capability inventory. |
|
|
77
77
|
| [generated-workspaces.md](./generated-workspaces.md) | `tcx attach`, `tcx update`, generated files, project-scoped MCP config, hooks, workspace provenance, profile scope, and template rules. |
|
|
78
78
|
| [investment-brain-plugins.md](./investment-brain-plugins.md) | Product plan for high-freedom community TradingCodex Investment Brain plugins, Codex-skill projection, layer/override semantics, Decision Memory boundaries, and Git-managed user workspaces. |
|
|
79
79
|
| [validation-and-test-plan.md](./validation-and-test-plan.md) | Required validation commands, unit/API/generator/smoke coverage, MCP smokes, broker provider smokes, routing scenarios, and release-sensitive checks. |
|
|
@@ -89,7 +89,7 @@ If these layers disagree, treat `docs/` as the durable product intent and fix th
|
|
|
89
89
|
| User-facing request scoping, investor-context suitability, plain-English output, or professional finance framing | `financial-workflow-references.md`, `interfaces-and-surfaces.md`, `roles-skills-and-workflows.md` |
|
|
90
90
|
| Role roster, model policy, head-manager dispatch, skills, Investment Brain plugins, strategy behavior, routing, information barriers, or handoff quality | `release-readiness.md`, `investment-brain-plugins.md`, `codex-native-orchestration.md`, `roles-skills-and-workflows.md`, `harness.md`, `generated-workspaces.md`, `core-concepts-and-rules.md` |
|
|
91
91
|
| Research or decision memory, source snapshots, ResearchSpec/replay/ExperimentRun, forecast/calibration ledgers, postmortem lessons, search indexes, readiness labels, artifact paths, report quality, or markdown preview | `decision-memory.md`, `research-memory-and-artifacts.md`, `improvement-loop.md`, `codex-native-orchestration.md` |
|
|
92
|
-
| Policy, permissions, approvals, idempotency, execution, adapters, broker safety,
|
|
92
|
+
| Policy, permissions, approvals, idempotency, execution, adapters, broker safety, BYOR capabilities, or secret handling | `safety-policy-and-execution.md`, `guardrails.md`, `core-concepts-and-rules.md` |
|
|
93
93
|
| Django apps, models, service-layer contracts, central DB ownership, or runtime topology | `system-architecture.md` |
|
|
94
94
|
| Product web, Admin, REST, MCP, CLI, or generated wrapper behavior | `interfaces-and-surfaces.md` |
|
|
95
95
|
| Workspace templates, bootstrap, hooks, project MCP config, generated files, or update behavior | `generated-workspaces.md` |
|
|
@@ -60,14 +60,14 @@ clear.
|
|
|
60
60
|
| `investment-brain-plugins` | Supports privacy-reviewed user-owned local Brain authoring, strict community bundle validation, explicit Head Manager-only projection, immutable versions, and receipt-authenticated run/artifact/Decision Memory provenance. | `guardrail.guidance`, `improvement.skill_evolution`, `improvement.research_memory` |
|
|
61
61
|
| `fixed-role-dispatch` | Maintains head-manager, fixed subagent routing, and no-overlap handoff boundaries in native Codex. | `guardrail.guidance`, `guardrail.information_barrier`, `improvement.workflow_quality` |
|
|
62
62
|
| `versioned-workspace` | Keeps generated workspaces in user-owned Git worktrees with privacy-first ignores and no automatic stage, commit, remote, or publication. | `guardrail.guidance`, `guardrail.information_barrier`, `improvement.validation_feedback` |
|
|
63
|
-
| `research-memory` | Stores source-aware research artifacts, versions, snapshots, Evidence Run Cards, Validation Cards, and
|
|
63
|
+
| `research-memory` | Stores source-aware research artifacts, versions, snapshots, Evidence Run Cards, Validation Cards, and rebuildable research/cross-artifact search projections. | `improvement.research_memory` |
|
|
64
64
|
| `workflow-quality-gates` | Defines artifact quality, Decision Quality Spine, agent judgment review, claim discipline, and synthesis lineage without a Django workflow loop. | `guardrail.guidance`, `improvement.workflow_quality` |
|
|
65
65
|
| `decision-package` | Freezes run provenance, artifact paths, forecasts, investor-context gaps, and outcomes in Codex-readable workspace records. | `guardrail.guidance`, `improvement.workflow_quality`, `improvement.research_memory` |
|
|
66
66
|
| `artifact-quality-contract` | Evaluates workspace artifacts, Evidence Run Cards, Validation Cards, source snapshots, and forecast ledgers for source/as-of posture, source trust, data-boundary warnings, claim tags, handoff state, confidence, missing evidence, judgment-review fields, and next-recipient routing metadata. | `guardrail.guidance`, `improvement.workflow_quality`, `improvement.research_memory` |
|
|
67
67
|
| `context-efficiency-contract` | Keeps workflows bounded through compact briefs, artifact references, context summaries, source snapshot IDs, targeted full-artifact reads, and `subagents context-audit` validation. | `guardrail.guidance`, `guardrail.information_barrier`, `improvement.workflow_quality`, `improvement.context_efficiency` |
|
|
68
68
|
| `responsibility-boundary-contract` | Separates durable role identity, tool permissions, skill procedures, artifact contracts, and projection ownership so changes stay local. | `guardrail.guidance`, `guardrail.information_barrier`, `improvement.workflow_quality`, `improvement.skill_evolution` |
|
|
69
69
|
| `tcx-source-gate` | Keeps external evidence read-only and source-aware. | `guardrail.guidance`, `improvement.workflow_quality` |
|
|
70
|
-
| `
|
|
70
|
+
| `codex-capability-inventory` | Lists sanitized native Codex MCP, skill, plugin, app, and hook metadata without managing or endorsing user-installed capabilities. | `guardrail.guidance`, `guardrail.information_barrier` |
|
|
71
71
|
| `broker-center` | Acts as the local broker control plane for connector state, capability profiles, source drift, read-only account discovery, sync runs, mapping review, reconciliation, and service-gated execution. | `guardrail.enforcement`, `improvement.workflow_quality` |
|
|
72
72
|
| `secret-wall` | Blocks raw broker secrets from workspace files, prompts, shell paths, and role context. | `guardrail.enforcement`, `guardrail.information_barrier` |
|
|
73
73
|
| `policy-and-restricted-list` | Evaluates principals, capabilities, explicit deny rules, restricted symbols, and limits. | `guardrail.enforcement` |
|
|
@@ -122,7 +122,7 @@ exact root native action -> deterministic hook parse -> native-user permission
|
|
|
122
122
|
-> policy -> payload validation -> approval/duplicate-request check
|
|
123
123
|
-> mandatory intent audit -> connection -> finalized/uncertain audit
|
|
124
124
|
|
|
125
|
-
exact first-line $tcx-order-allow -> workspace/session/turn/prompt/mode grant
|
|
125
|
+
exact first-meaningful-line $tcx-order-allow -> workspace/session/turn/prompt/mode grant
|
|
126
126
|
-> protected use_order_turn_grant + PreToolUse proof -> consume once
|
|
127
127
|
-> the same canonical policy/approval/idempotency/live/audit gates
|
|
128
128
|
```
|
|
@@ -131,8 +131,10 @@ The root `tcx-order-submit` and `tcx-order-cancel` skill bundles
|
|
|
131
131
|
carry no tools. Their complete exact prompt grammar is intercepted by
|
|
132
132
|
`UserPromptSubmit` and dispatched in-process to the service gateway before any
|
|
133
133
|
model runs. The separate `tcx-order-allow` bundle documents current-turn admission:
|
|
134
|
-
an exact
|
|
134
|
+
an exact first meaningful line issues one `OrderTurnGrant`, and only root Head
|
|
135
135
|
Manager can select one later submit or cancel through `use_order_turn_grant`.
|
|
136
|
+
The leading skill may be a plain token or its matching projected Markdown link;
|
|
137
|
+
the order mode and immediate action grammars remain literal.
|
|
136
138
|
`PreToolUse` injects proof that model input and direct MCP callers cannot supply.
|
|
137
139
|
The browser viewer has no mutation route. Fixed roles, public REST, generic
|
|
138
140
|
CLI, and unproven direct MCP calls cannot invoke the final mutation.
|
|
@@ -71,6 +71,16 @@ The source of truth is the existing file-native record:
|
|
|
71
71
|
Existing events are not edited to make history look cleaner. Corrections,
|
|
72
72
|
revisions, supersession, disputes, and retirement are new records.
|
|
73
73
|
|
|
74
|
+
The rebuildable v2 artifact catalog provides a discovery projection across
|
|
75
|
+
these file-native records without becoming Decision Memory itself. New
|
|
76
|
+
type-specific service output projects with full canonical identity metadata;
|
|
77
|
+
older files remain unchanged and may project as `legacy_partial`. Malformed
|
|
78
|
+
records are quarantined as `invalid`. A point-in-time catalog query uses each
|
|
79
|
+
type's explicit `knowledge_cutoff` or `known_at` field and excludes missing,
|
|
80
|
+
malformed, or later values, so legacy discovery does not silently become
|
|
81
|
+
historical provenance. The catalog can be discarded and recreated from source
|
|
82
|
+
artifacts and verified forecast-ledger state.
|
|
83
|
+
|
|
74
84
|
### Time contract
|
|
75
85
|
|
|
76
86
|
Decision Memory needs more than a document `updated_at`. Records should
|
|
@@ -355,8 +365,8 @@ Memory remains independent of the Brain that produced a decision:
|
|
|
355
365
|
provenance.
|
|
356
366
|
|
|
357
367
|
Learning from memory into a Brain is a separate user-controlled curation path.
|
|
358
|
-
Writing requires a root native Codex prompt whose
|
|
359
|
-
`$tcx-brain`, an explicit source-authoring request below it, an
|
|
368
|
+
Writing requires a root native Codex prompt whose first meaningful invocation
|
|
369
|
+
is `$tcx-brain`, an explicit source-authoring request on that line or below it, an
|
|
360
370
|
actual Codex sandbox that permits the required workspace-local writes, exact
|
|
361
371
|
user-selected source episodes, and counterexamples. The Brain-scoped grant is
|
|
362
372
|
bound to that turn, cannot authorize Build or Strategy work, and does not carry
|
|
@@ -79,7 +79,6 @@ the backend listener private. Invalid remote settings fail before binding.
|
|
|
79
79
|
- service autostart, `tcx service status`, compatibility checks, and `doctor`
|
|
80
80
|
consume readiness rather than treating a reachable process as ready.
|
|
81
81
|
- service logs rotate at 5 MiB with three backups by default.
|
|
82
|
-
- external MCP stderr rotates separately at 1 MiB with two backups.
|
|
83
82
|
- persisted logs redact known secrets, authorization values,
|
|
84
83
|
credential-shaped fields, and URL user-info.
|
|
85
84
|
|
|
@@ -150,12 +149,20 @@ find . -maxdepth 1 -name '*.egg-info' -type d -exec rm -rf {} +
|
|
|
150
149
|
python3.11 -m build
|
|
151
150
|
python3.11 -m twine check dist/*
|
|
152
151
|
python3.11 tests/platform_wheel_smoke.py --wheel-dir dist
|
|
152
|
+
python3.11 tests/release_upgrade_smoke.py --wheel-dir dist --from-version 1.0.2
|
|
153
153
|
```
|
|
154
154
|
|
|
155
155
|
The wheel smoke installs only the built wheel into a clean virtual environment,
|
|
156
156
|
checks distribution metadata against the runtime version, attaches a workspace,
|
|
157
157
|
validates native launchers and generated configuration, runs hooks and MCP
|
|
158
158
|
stdio, exercises the local service, and loads the packaged SPA and assets.
|
|
159
|
+
The release-upgrade smoke starts from the published `1.0.2` package, updates
|
|
160
|
+
that attached workspace with the built candidate wheel, and verifies preserved
|
|
161
|
+
workspace and runtime identity, user-owned state, and explicit home, DB, and
|
|
162
|
+
service-address settings alongside the refreshed generated contract. It also
|
|
163
|
+
preserves the exact provider approval identity and timestamp, compares every
|
|
164
|
+
byte in the immutable provider snapshot, and proves that the candidate runtime
|
|
165
|
+
loads that approved snapshot after the update.
|
|
159
166
|
|
|
160
167
|
Harness, role, prompt, skill, hook, policy, MCP, or generated-template changes
|
|
161
168
|
also require the disposable-workspace and Codex-native checks documented in
|
|
@@ -165,7 +172,8 @@ also require the disposable-workspace and Codex-native checks documented in
|
|
|
165
172
|
|
|
166
173
|
`.github/workflows/ci.yml` is test-only. One Ubuntu/Python 3.11 job runs the
|
|
167
174
|
frontend build, complete Python suite and framework gates, clean package
|
|
168
|
-
construction, and the
|
|
175
|
+
construction, the wheel smoke, and the prior-release update smoke. Guide-only
|
|
176
|
+
pushes skip this workflow because
|
|
169
177
|
the Pages workflow validates and deploys only static guide files. CI never
|
|
170
178
|
publishes.
|
|
171
179
|
|
|
@@ -179,7 +187,8 @@ publishes.
|
|
|
179
187
|
- the workflow ref is exactly `refs/tags/v<release_version>`
|
|
180
188
|
- the tagged commit is on `origin/main`
|
|
181
189
|
- the wheel and source-distribution filenames carry the same version
|
|
182
|
-
-
|
|
190
|
+
- `dist/` contains exactly that one wheel and one source distribution
|
|
191
|
+
- the built wheel passes the Ubuntu wheel and prior-release update smokes
|
|
183
192
|
- the protected `pypi` environment approves Trusted Publishing
|
|
184
193
|
|
|
185
194
|
The release workflow has one build/verification job. When publication is
|
|
@@ -261,7 +270,7 @@ sh "$SOURCE_ROOT/install.sh" \
|
|
|
261
270
|
On native Windows PowerShell:
|
|
262
271
|
|
|
263
272
|
```powershell
|
|
264
|
-
$ReleaseVersion = "1.
|
|
273
|
+
$ReleaseVersion = "1.1.1"
|
|
265
274
|
$Workspace = Join-Path $env:TEMP "tcx-pypi-$ReleaseVersion"
|
|
266
275
|
New-Item -ItemType Directory -Force $Workspace | Out-Null
|
|
267
276
|
Set-Location $Workspace
|
|
@@ -26,7 +26,7 @@ design, migration, and validation evidence.
|
|
|
26
26
|
author every class of Codex app Scheduled Task, from simple research and
|
|
27
27
|
monitoring through optional turn-authorized execution.
|
|
28
28
|
- [x] Issue a workspace-, session-, turn-, prompt-, and mode-bound single-use
|
|
29
|
-
grant only for an exact
|
|
29
|
+
grant only for an exact first meaningful line `$tcx-order-allow --mode
|
|
30
30
|
paper|validation|live`; revoke it after one submit or cancel, after one hour,
|
|
31
31
|
on `Stop`, or when the next user turn starts.
|
|
32
32
|
- [x] Protect `use_order_turn_grant` so only root Head Manager can select the
|
|
@@ -82,9 +82,9 @@ Remove `execution-operator` from the fixed-role roster. Native Codex keeps the
|
|
|
82
82
|
exact immediate submit/cancel path for already-known canonical identifiers and
|
|
83
83
|
adds a separate single-turn path for workflows that create the ticket or
|
|
84
84
|
approval during the turn. The immediate path executes in `UserPromptSubmit`
|
|
85
|
-
before Head Manager runs. The turn path begins only when the
|
|
86
|
-
line is
|
|
87
|
-
normal workflow with a single-use service grant.
|
|
85
|
+
before Head Manager runs. The turn path begins only when the first meaningful
|
|
86
|
+
line is exactly `$tcx-order-allow --mode paper|validation|live`, then continues
|
|
87
|
+
the normal workflow with a single-use service grant.
|
|
88
88
|
|
|
89
89
|
`tcx-automate` authors Codex app Scheduled Tasks; it is not a scheduler or
|
|
90
90
|
the skill invoked recursively by each run. Research, monitoring, recurring
|
|
@@ -109,7 +109,7 @@ UserPromptSubmit -> deterministic parse and native-user mandate
|
|
|
109
109
|
Django service -> authorize, reserve, audit, invoke adapter, finalize
|
|
110
110
|
Head Manager -> summarize the already-recorded result; no action authority
|
|
111
111
|
|
|
112
|
-
native/scheduled user -> exact
|
|
112
|
+
native/scheduled user -> exact first-meaningful-line $tcx-order-allow mode
|
|
113
113
|
UserPromptSubmit -> bind one grant to workspace + session + turn + prompt + mode
|
|
114
114
|
roles/services -> create and approve canonical ticket state
|
|
115
115
|
Head Manager -> call protected use_order_turn_grant once
|
|
@@ -152,7 +152,8 @@ Each bundle follows the normal TradingCodex skill shape, including `SKILL.md`
|
|
|
152
152
|
and `agents/openai.yaml`, but contains no tool authority. The skill documents an
|
|
153
153
|
action syntax intercepted by the hook before the model runs.
|
|
154
154
|
|
|
155
|
-
The complete
|
|
155
|
+
The complete meaningful user prompt must have one of these canonical plain
|
|
156
|
+
forms:
|
|
156
157
|
|
|
157
158
|
```text
|
|
158
159
|
$tcx-order-submit --ticket-id <ticket-id> --approval-receipt-id <receipt-id>
|
|
@@ -162,10 +163,13 @@ $tcx-order-cancel --ticket-id <ticket-id> --broker-order-id <broker-order-id> --
|
|
|
162
163
|
$tcx-order-cancel --ticket-id <ticket-id> --broker-order-id <broker-order-id> --approval-receipt-id <receipt-id> --live-confirmation <token>
|
|
163
164
|
```
|
|
164
165
|
|
|
165
|
-
Parsing rules are intentionally strict
|
|
166
|
+
Parsing rules are intentionally strict. One UTF-8 BOM, normalized CRLF/CR/NEL/
|
|
167
|
+
Unicode line separators, leading/trailing blank lines, and a Markdown link whose
|
|
168
|
+
label and target match the projected workspace action skill are presentation
|
|
169
|
+
variants only:
|
|
166
170
|
|
|
167
171
|
- Parse with `shlex.split`; never use a shell or evaluate prompt content.
|
|
168
|
-
- Require the skill
|
|
172
|
+
- Require the skill invocation to be first and the entire meaningful prompt to be the
|
|
169
173
|
action. Free-form prefixes, suffixes, comments, quotations, or a second skill
|
|
170
174
|
invocation are invalid.
|
|
171
175
|
- Accept only the documented `--name value` form. Reject `--name=value`, unknown
|
|
@@ -191,8 +195,8 @@ must not fall through to Head Manager as ordinary analysis.
|
|
|
191
195
|
|
|
192
196
|
## Turn-Scoped Order Allow Contract
|
|
193
197
|
|
|
194
|
-
For a workflow that may create its final identifiers during the turn, the
|
|
195
|
-
|
|
198
|
+
For a workflow that may create its final identifiers during the turn, the first
|
|
199
|
+
meaningful line must be exactly one of:
|
|
196
200
|
|
|
197
201
|
```text
|
|
198
202
|
$tcx-order-allow --mode paper
|
|
@@ -200,9 +204,10 @@ $tcx-order-allow --mode validation
|
|
|
200
204
|
$tcx-order-allow --mode live
|
|
201
205
|
```
|
|
202
206
|
|
|
203
|
-
The
|
|
204
|
-
|
|
205
|
-
|
|
207
|
+
The skill token may be its matching projected Markdown link. The rest of the
|
|
208
|
+
prompt is a non-empty ordinary interactive or Codex app Scheduled Task request.
|
|
209
|
+
The line accepts no aliases, comments, quotes, extra flags, embedded prose, or
|
|
210
|
+
`--mode=value` form. A free-form mention or later-meaningful-line occurrence
|
|
206
211
|
does not grant authority. Scheduled and interactive turns use the same parser;
|
|
207
212
|
there is no Automation-origin branch.
|
|
208
213
|
|
|
@@ -252,7 +257,7 @@ normal analysis context:
|
|
|
252
257
|
canonical ids. If this audit is unavailable, fail closed before service
|
|
253
258
|
invocation.
|
|
254
259
|
4. Call the execution gateway synchronously and in-process. Do not launch a
|
|
255
|
-
shell, subprocess,
|
|
260
|
+
shell, subprocess, user-installed capability, or Head Manager tool call.
|
|
256
261
|
5. Emit only an allowlisted result projection as `UserPromptSubmit` additional
|
|
257
262
|
context with marker `tradingcodex-native-execution-result`.
|
|
258
263
|
6. Instruct Head Manager to report the recorded result without spawning roles,
|
|
@@ -264,7 +269,7 @@ normal analysis context:
|
|
|
264
269
|
The existing provider-call idempotency remains the replay defense if the hook
|
|
265
270
|
event is delivered more than once.
|
|
266
271
|
|
|
267
|
-
For `$tcx-order-allow`, `UserPromptSubmit` instead validates the exact first line,
|
|
272
|
+
For `$tcx-order-allow`, `UserPromptSubmit` instead validates the exact first meaningful line,
|
|
268
273
|
requires root native `session_id` and `turn_id`, revokes the session's older
|
|
269
274
|
grant, issues the new bounded grant, and continues normal analysis allocation.
|
|
270
275
|
The additional context contains only mode, expiry, single-use posture, and the
|
|
@@ -400,8 +405,9 @@ map, or safety routing would otherwise become misleading.
|
|
|
400
405
|
- Prove that unavailable hook audit blocks before reservation/provider use.
|
|
401
406
|
- Prove that hook result projection contains no raw prompt, reasoning, secrets,
|
|
402
407
|
credentials, raw provider payload, or unallowlisted error text.
|
|
403
|
-
- Accept only the three exact
|
|
404
|
-
later-line, malformed, subagent, Workbench,
|
|
408
|
+
- Accept only the three exact first-meaningful-line `$tcx-order-allow` modes;
|
|
409
|
+
reject later-meaningful-line, malformed, subagent, Workbench,
|
|
410
|
+
missing-session, and missing-turn
|
|
405
411
|
forms without issuing a grant.
|
|
406
412
|
- Prove grant binding to workspace, session, turn, prompt hash, mode, and
|
|
407
413
|
tool-use id; prove one-hour, `Stop`, next-turn, and consumption revocation.
|
|
@@ -465,7 +471,7 @@ The change is complete only when all of the following are true:
|
|
|
465
471
|
8. Generated workspace update safely retires unmodified agent files and
|
|
466
472
|
preserves modified-file conflict protection.
|
|
467
473
|
9. A saved Scheduled Task prompt is processed as an ordinary root turn on each
|
|
468
|
-
run; only an exact `$tcx-order-allow`
|
|
474
|
+
run; only an exact `$tcx-order-allow` first meaningful line can create one bounded
|
|
469
475
|
effect grant, and no Automation-origin detector is involved.
|
|
470
476
|
|
|
471
477
|
## Explicit Non-Goals
|