@ngocsangairvds/vsaf 3.2.14 → 3.2.15
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.
- package/bin/vsaf.js +13 -0
- package/package.json +1 -1
- package/src/config.js +167 -0
- package/src/global.js +1 -48
- package/src/utils.js +44 -1
- package/tools/vds-scripts/Makefile +9 -31
- package/tools/vds-scripts/docker/docker-compose.cli.yml +1 -117
- package/tools/vds-scripts/docker/docker-compose.services.yml +1 -40
- package/tools/vds-scripts/docker/infrastructure/init-schemas.sql +0 -34
- package/tools/vds-scripts/docker/infrastructure/pgbouncer/pgbouncer.ini +2 -6
- package/tools/vds-scripts/pyproject.toml +1 -33
- package/tools/vds-scripts/uv.lock +80 -1651
- package/tools/vds-scripts/vds_cli/pyproject.toml +3 -0
- package/tools/vds-scripts/vds_cli/src/vds_cli/cli.py +1 -127
- package/tools/vds-scripts/vds_cli/src/vds_cli/commands/lint_cli.py +1 -20
- package/tools/vds-scripts/vds_cli/src/vds_cli/router.py +0 -100
- package/tools/vds-scripts/vds_cli/tests/conftest.py +0 -2
- package/tools/vds-scripts/vds_cli/tests/unit/test_cli.py +0 -25
- package/tools/vds-scripts/vds_cli/tests/unit/test_lint_cli.py +2 -2
- package/tools/vds-scripts/vds_cli/tests/unit/test_router.py +0 -2
- package/tools/vds-scripts/CLOSURE.md +0 -340
- package/tools/vds-scripts/ECOSYSTEM-CHANGELOG.md +0 -52
- package/tools/vds-scripts/ECOSYSTEM-DOCS.md +0 -602
- package/tools/vds-scripts/ECOSYSTEM_ALIGNMENT.md +0 -133
- package/tools/vds-scripts/ENV-HYGIENE-OPS-NOTE.md +0 -65
- package/tools/vds-scripts/INVESTIGATION-cloud-401.md +0 -103
- package/tools/vds-scripts/MEM0_2.0_API_REFERENCE.md +0 -238
- package/tools/vds-scripts/PACKAGE_P125B_IMPLEMENTATION_SUMMARY.md +0 -131
- package/tools/vds-scripts/PHASE-MERGE-SUMMARY.md +0 -121
- package/tools/vds-scripts/PHASES-3-ARCHIVE.md +0 -59
- package/tools/vds-scripts/PROJECT_COMPLETION_SUMMARY.md +0 -45
- package/tools/vds-scripts/SEARCH-CRASH-REPRO.md +0 -51
- package/tools/vds-scripts/analyze_hexagonal.py +0 -217
- package/tools/vds-scripts/analyze_profiles.py +0 -60
- package/tools/vds-scripts/audit-checklist.xlsx +0 -0
- package/tools/vds-scripts/audit_orchestrator/.audit_approvals/approvals_index.json +0 -1
- package/tools/vds-scripts/audit_orchestrator/.env.example +0 -85
- package/tools/vds-scripts/audit_orchestrator/.github/workflows/audit.yml +0 -47
- package/tools/vds-scripts/audit_orchestrator/Dockerfile +0 -92
- package/tools/vds-scripts/audit_orchestrator/GOOGLE_SHEETS_IMPLEMENTATION_SUMMARY.md +0 -218
- package/tools/vds-scripts/audit_orchestrator/PHASE3_INTEGRATION_SUMMARY.md +0 -268
- package/tools/vds-scripts/audit_orchestrator/PHASE7-MERGE-SUMMARY.md +0 -174
- package/tools/vds-scripts/audit_orchestrator/README.md +0 -1573
- package/tools/vds-scripts/audit_orchestrator/TSK-168-IMPLEMENTATION-SUMMARY.md +0 -191
- package/tools/vds-scripts/audit_orchestrator/TSK-196-IMPLEMENTATION-SUMMARY.md +0 -201
- package/tools/vds-scripts/audit_orchestrator/alembic/env.py +0 -37
- package/tools/vds-scripts/audit_orchestrator/alembic/script.py.mako +0 -28
- package/tools/vds-scripts/audit_orchestrator/alembic/versions/0001_initial_audit_state_schema.py +0 -1260
- package/tools/vds-scripts/audit_orchestrator/alembic.ini +0 -68
- package/tools/vds-scripts/audit_orchestrator/config/category-mapping.json +0 -81
- package/tools/vds-scripts/audit_orchestrator/config/profile-timeouts.yaml +0 -17
- package/tools/vds-scripts/audit_orchestrator/create_sample.py +0 -55
- package/tools/vds-scripts/audit_orchestrator/data/corpus_accuracy_report.json +0 -17
- package/tools/vds-scripts/audit_orchestrator/data/exemplar_quality_report.json +0 -1606
- package/tools/vds-scripts/audit_orchestrator/data/instruction_plan_fixtures.json +0 -163
- package/tools/vds-scripts/audit_orchestrator/data/requirement_exemplars.json +0 -3443
- package/tools/vds-scripts/audit_orchestrator/data/requirement_scope_fixtures.json +0 -172
- package/tools/vds-scripts/audit_orchestrator/debug_rg.py +0 -46
- package/tools/vds-scripts/audit_orchestrator/demo_code_pack.py +0 -127
- package/tools/vds-scripts/audit_orchestrator/docs/AGENT_SDK_SELECTION_SPEC.md +0 -720
- package/tools/vds-scripts/audit_orchestrator/docs/API.md +0 -804
- package/tools/vds-scripts/audit_orchestrator/docs/CONTENT_ANALYSIS_APPROACH.md +0 -1041
- package/tools/vds-scripts/audit_orchestrator/docs/CONTENT_SCORING_EVOLUTION_SPEC.md +0 -868
- package/tools/vds-scripts/audit_orchestrator/docs/DEPLOYMENT.md +0 -778
- package/tools/vds-scripts/audit_orchestrator/docs/LLM_AGENT_AUDIT_SPEC.md +0 -721
- package/tools/vds-scripts/audit_orchestrator/docs/LLM_CONTENT_ANALYSIS_SPEC.md +0 -1143
- package/tools/vds-scripts/audit_orchestrator/docs/LSP_SETUP_GUIDE.md +0 -221
- package/tools/vds-scripts/audit_orchestrator/docs/MULTI_REPO_AUDIT_SPEC.md +0 -951
- package/tools/vds-scripts/audit_orchestrator/docs/OLLAMA_EMBEDDINGS_SETUP.md +0 -119
- package/tools/vds-scripts/audit_orchestrator/docs/PHASE32_REAL_BENCHMARK_2026-02-08.md +0 -66
- package/tools/vds-scripts/audit_orchestrator/docs/PHASE_64_TO_92_HISTORICAL_SPEC.md +0 -1772
- package/tools/vds-scripts/audit_orchestrator/docs/TSK-193-flow-trace.md +0 -201
- package/tools/vds-scripts/audit_orchestrator/docs/TSK-193-verification.md +0 -124
- package/tools/vds-scripts/audit_orchestrator/docs/phase152-hierarchical-query-surface.md +0 -46
- package/tools/vds-scripts/audit_orchestrator/examples/bitbucket_metadata_example.json +0 -50
- package/tools/vds-scripts/audit_orchestrator/legacy/migrations/README.md +0 -68
- package/tools/vds-scripts/audit_orchestrator/legacy/migrations/phase117_phase118_shared_state.sql +0 -64
- package/tools/vds-scripts/audit_orchestrator/legacy/migrations/phase154_published_pages.sql +0 -28
- package/tools/vds-scripts/audit_orchestrator/legacy/migrations/phase157_dispatch_tables.sql +0 -94
- package/tools/vds-scripts/audit_orchestrator/legacy/migrations/phase157_events.sql +0 -91
- package/tools/vds-scripts/audit_orchestrator/legacy/migrations/phase157_scope_snapshots.sql +0 -24
- package/tools/vds-scripts/audit_orchestrator/legacy/migrations/phase157_status_view.sql +0 -22
- package/tools/vds-scripts/audit_orchestrator/legacy/migrations/phase169_dispatch_observability.sql +0 -55
- package/tools/vds-scripts/audit_orchestrator/legacy/migrations/state_repair_hardening.sql +0 -24
- package/tools/vds-scripts/audit_orchestrator/pyproject.toml +0 -211
- package/tools/vds-scripts/audit_orchestrator/pyrightconfig.json +0 -51
- package/tools/vds-scripts/audit_orchestrator/pytest.ini +0 -37
- package/tools/vds-scripts/audit_orchestrator/reproduce_scanner.py +0 -40
- package/tools/vds-scripts/audit_orchestrator/scripts/README.md +0 -116
- package/tools/vds-scripts/audit_orchestrator/scripts/benchmark_crawl_modes.py +0 -455
- package/tools/vds-scripts/audit_orchestrator/scripts/benchmark_dspy.py +0 -513
- package/tools/vds-scripts/audit_orchestrator/scripts/benchmark_nlp_accuracy.py +0 -138
- package/tools/vds-scripts/audit_orchestrator/scripts/benchmark_retrieval_modes.py +0 -176
- package/tools/vds-scripts/audit_orchestrator/scripts/benchmark_upload_update_mode.py +0 -167
- package/tools/vds-scripts/audit_orchestrator/scripts/build_check.py +0 -76
- package/tools/vds-scripts/audit_orchestrator/scripts/check_live_progress.py +0 -61
- package/tools/vds-scripts/audit_orchestrator/scripts/cli_integration_test.py +0 -400
- package/tools/vds-scripts/audit_orchestrator/scripts/index_workspace.py +0 -178
- package/tools/vds-scripts/audit_orchestrator/scripts/inspect_route_conformance.py +0 -196
- package/tools/vds-scripts/audit_orchestrator/scripts/monitor_postgres.py +0 -145
- package/tools/vds-scripts/audit_orchestrator/scripts/optimize_audit.py +0 -462
- package/tools/vds-scripts/audit_orchestrator/scripts/verify.py +0 -673
- package/tools/vds-scripts/audit_orchestrator/scripts/verify_phase111_requirement_analysis.py +0 -375
- package/tools/vds-scripts/audit_orchestrator/scripts/verify_phase117_cross_repo_evidence.py +0 -77
- package/tools/vds-scripts/audit_orchestrator/scripts/verify_phase121_short_circuit.py +0 -680
- package/tools/vds-scripts/audit_orchestrator/scripts/verify_phase122_instruction_handling.py +0 -478
- package/tools/vds-scripts/audit_orchestrator/scripts/verify_phase125_skill_integration.py +0 -832
- package/tools/vds-scripts/audit_orchestrator/scripts/verify_phase_36.py +0 -394
- package/tools/vds-scripts/audit_orchestrator/scripts/verify_phase_37.py +0 -58
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/__init__.py +0 -17
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/__init__.py +0 -29
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/_langchain_warnings.py +0 -17
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/agentic_investigator.py +0 -4130
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/approval.py +0 -490
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/audit_loop_hooks.py +0 -107
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/audit_state.py +0 -50
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/base.py +0 -4035
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/code_agent.py +0 -667
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/code_analysis_helpers.py +0 -236
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/code_analysis_prompts.py +0 -146
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/docs_agent.py +0 -1234
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/langgraph_workflow.py +0 -2002
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/pydantic_base.py +0 -1227
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/requirement_analysis_agent.py +0 -593
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/security_agent.py +0 -1829
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/security_scanner.py +0 -686
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/skill_tools.py +0 -204
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/synthesis_agent.py +0 -1463
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/tool_efficiency_guard.py +0 -609
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/tool_registry.py +0 -3822
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/toolsets/__init__.py +0 -52
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/toolsets/evidence_corpus.py +0 -385
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/toolsets/filesystem.py +0 -1134
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/toolsets/lsp.py +0 -458
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/toolsets/mcp_toolset.py +0 -491
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/toolsets/skills_toolset.py +0 -997
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/toolsets/vector_evidence.py +0 -842
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/usage_tracker.py +0 -682
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/agents/visualization.py +0 -303
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/analyze_cmds.py +0 -892
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/checklist_query/__init__.py +0 -15
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/checklist_query/service.py +0 -171
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/checks/__init__.py +0 -20
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/checks/base.py +0 -60
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/checks/bitbucket/__init__.py +0 -6
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/checks/bitbucket/checks.py +0 -257
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/checks/confluence/__init__.py +0 -10
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/checks/confluence/checks.py +0 -78
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/checks/git/__init__.py +0 -6
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/checks/git/file_checks.py +0 -133
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/checks/llm_checks/__init__.py +0 -17
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/checks/llm_checks/api_docs_check.py +0 -80
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/checks/llm_checks/readme_check.py +0 -76
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/checks/llm_checks/security_docs_check.py +0 -78
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/checks/registry.py +0 -402
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/checks/sonarqube/__init__.py +0 -10
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/checks/sonarqube/checks.py +0 -276
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/cli.py +0 -12
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/cli_common.py +0 -128
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/cli_impl.py +0 -9826
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/clients/bitbucket_cli_client.py +0 -187
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/clients/confluence_cli_client.py +0 -977
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/clients/sonarqube_cli_client.py +0 -28
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/collectors/__init__.py +0 -21
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/collectors/base.py +0 -25
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/collectors/bitbucket_downloader.py +0 -644
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/collectors/bitbucket_metadata.py +0 -133
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/collectors/checklist_parser.py +0 -180
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/collectors/completeness/__init__.py +0 -31
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/collectors/completeness/bitbucket_probe.py +0 -443
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/collectors/completeness/confluence_probe.py +0 -365
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/collectors/completeness/freshness_evaluator.py +0 -330
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/collectors/completeness/material_completeness_service.py +0 -1079
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/collectors/confluence_collector.py +0 -259
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/collectors/diagram_extractor.py +0 -280
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/collectors/enrichment_extractor.py +0 -200
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/collectors/evidence_cache.py +0 -35
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/collectors/git_collector.py +0 -148
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/collectors/graphify_collector.py +0 -171
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/collectors/image_extractor.py +0 -359
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/collectors/linked_page_tracker.py +0 -120
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/collectors/markdown_converter.py +0 -344
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/collectors/material_cache.py +0 -1252
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/collectors/material_downloader.py +0 -1165
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/collectors/orchestrator.py +0 -168
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/collectors/registry_parser.py +0 -3063
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/collectors/requirements.py +0 -70
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/collectors/runner.py +0 -119
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/collectors/sonarqube_collector.py +0 -113
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/config.py +0 -1943
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/config_resolution/__init__.py +0 -23
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/config_resolution/discovery.py +0 -90
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/config_resolution/environment_resolver.py +0 -56
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/config_resolution/evidence.py +0 -78
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/config_resolution/models.py +0 -73
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/config_resolution/precedence.py +0 -10
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/config_resolution/redaction.py +0 -20
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/confluence_connectivity.py +0 -140
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/corpus_cmds.py +0 -278
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/db/__init__.py +0 -7
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/db/alembic_filters.py +0 -57
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/docs/__init__.py +0 -29
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/docs/diataxis_validator.py +0 -687
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/doctor_cmds.py +0 -3295
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/dspy_modules/__init__.py +0 -5
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/dspy_modules/evaluation.py +0 -301
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/dspy_modules/modules.py +0 -172
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/dspy_modules/runtime.py +0 -836
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/dspy_modules/signatures.py +0 -406
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/__init__.py +0 -192
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/ad_hoc_analyzer.py +0 -399
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/aggregator.py +0 -220
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/auditor.py +0 -504
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/batch_evidence_cache.py +0 -111
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/batch_processor.py +0 -4776
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/calibration.py +0 -217
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/checklist_generator.py +0 -1201
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/checklist_projection.py +0 -192
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/checklist_scoping.py +0 -221
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/checkpoint.py +0 -159
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/cl003_shared_lib_guard.py +0 -194
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/companion_context_service.py +0 -445
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/confluence_checklist_contract.py +0 -7425
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/cross_check_rules.py +0 -213
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/deterministic_evaluator.py +0 -237
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/drift_detector.py +0 -157
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/dspy_requirement_classifier.py +0 -640
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/evidence_assembler.py +0 -407
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/evidence_collector.py +0 -119
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/evidence_diversity.py +0 -101
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/gap_analyzer.py +0 -549
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/graduated.py +0 -185
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/grounding_validator.py +0 -287
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/instruction_analyzer.py +0 -882
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/instruction_compliance.py +0 -172
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/llm_row_evaluator.py +0 -9270
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/loader.py +0 -1070
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/manual_check_config.py +0 -136
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/mapping.py +0 -269
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/multi_judge.py +0 -65
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/phase120_checklist_update.py +0 -416
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/profile_scorer.py +0 -427
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/project_evidence_context.py +0 -449
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/project_knowledge_query_service.py +0 -155
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/project_knowledge_store.py +0 -383
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/project_topology.py +0 -1920
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/provider_failure_classifier.py +0 -778
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/readiness_cli_helpers.py +0 -341
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/readiness_extractor.py +0 -303
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/readiness_synthesizer.py +0 -730
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/regression_guard.py +0 -138
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/repo_type_classifier.py +0 -297
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/requirement_analysis.py +0 -1433
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/requirement_classification.py +0 -1725
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/result_merger.py +0 -814
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/route_matrix.py +0 -267
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/row_evaluator.py +0 -9437
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/row_evaluator_runtime.py +0 -1270
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/row_evaluator_types.py +0 -2102
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/rubric.py +0 -592
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/scorer.py +0 -1239
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/section_packs.py +0 -645
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/skill_recommendation.py +0 -1183
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/stability_harness.py +0 -207
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/target_selector.py +0 -841
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/telemetry.py +0 -347
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/template_analyzer.py +0 -469
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/token_tracker.py +0 -111
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/tool_first_planner.py +0 -7905
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/topology_query_service.py +0 -80
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/validator.py +0 -449
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/engine/weight_policy.py +0 -464
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/errors.py +0 -430
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/extract_cmds.py +0 -4887
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/identity.py +0 -146
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/incremental/__init__.py +0 -52
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/incremental/baseline.py +0 -378
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/incremental/change_analyzer.py +0 -407
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/incremental/delta_report.py +0 -189
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/incremental/diff_detector.py +0 -301
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/integrations/__init__.py +0 -3
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/llm/__init__.py +0 -50
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/llm/audit_schemas.py +0 -459
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/llm/codex_oauth.py +0 -340
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/llm/cost_tracker.py +0 -288
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/llm/engine.py +0 -751
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/llm/evaluator.py +0 -245
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/llm/prompts/__init__.py +0 -32
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/llm/prompts/api_docs_evaluation.py +0 -25
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/llm/prompts/gap_analysis.py +0 -31
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/llm/prompts/instruction_templates.py +0 -634
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/llm/prompts/readme_evaluation.py +0 -25
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/llm/prompts/row_evaluation.py +0 -247
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/llm/prompts/security_docs_evaluation.py +0 -25
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/llm/prompts/template_analysis.py +0 -25
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/llm/prompts.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/llm/provider.py +0 -626
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/logging_config.py +0 -577
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/mappings/__init__.py +0 -58
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/mappings/default_checklist_mapping.json +0 -18
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/mappings/vietnamese_checklist_mapping.json +0 -38
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/misc_cmds.py +0 -4689
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/models/__init__.py +0 -153
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/models/calibration.py +0 -98
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/models/checklist.py +0 -921
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/models/completeness.py +0 -309
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/models/enrichment.py +0 -58
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/models/enums.py +0 -97
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/models/evidence.py +0 -351
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/models/findings.py +0 -381
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/models/gaps.py +0 -299
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/models/graph.py +0 -42
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/models/multi_judge.py +0 -50
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/models/readiness.py +0 -309
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/models/registry.py +0 -386
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/models/reporting.py +0 -32
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/models/task.py +0 -549
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/models/template.py +0 -477
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/observability/__init__.py +0 -31
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/observability/metrics.py +0 -404
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/parse_cmds.py +0 -608
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/pdf_cmds.py +0 -208
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/performance_gates.py +0 -224
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/phase151_projection.py +0 -84
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/profiles/__init__.py +0 -65
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/profiles/detection.py +0 -842
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/profiles/models.py +0 -474
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/publishers/__init__.py +0 -1
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/publishers/_confluence_macros.py +0 -145
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/publishers/_field_sanitizer.py +0 -25
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/publishers/_table_builder.py +0 -63
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/publishers/_vietnamese_templates.py +0 -103
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/publishers/bitbucket_link_resolver.py +0 -34
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/publishers/checklist_renderer.py +0 -483
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/publishers/confluence_publisher.py +0 -3048
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/publishers/hierarchy_publisher.py +0 -213
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/publishers/live_data_injector.py +0 -152
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/publishers/macro_builder.py +0 -101
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/publishers/markdown_converter.py +0 -154
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/publishers/priority_renderer.py +0 -133
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/publishers/project_aggregate_renderer.py +0 -423
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/publishers/readiness_renderer.py +0 -186
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/publishers/system_doc_hierarchy_renderer.py +0 -382
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/publishers/system_doc_renderer.py +0 -683
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/report_cmds.py +0 -788
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/reports/__init__.py +0 -13
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/reports/aggregation_report.py +0 -86
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/reports/checklist_generator.py +0 -425
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/reports/excel_generator.py +0 -599
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/reports/gap_report.py +0 -131
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/reports/json_generator.py +0 -188
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/reports/markdown_generator.py +0 -595
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/reports/pdf/__init__.py +0 -154
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/reports/pdf/collector.py +0 -61
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/reports/pdf/department_builder.py +0 -77
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/reports/pdf/errors.py +0 -9
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/reports/pdf/md_renderer.py +0 -386
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/reports/pdf/pdf_models.py +0 -95
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/reports/pdf/pdf_writer.py +0 -27
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/reports/pdf/repo_project_builders.py +0 -274
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/reports/readiness_report.py +0 -447
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/reports/reporting.py +0 -94
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/reports/sarif_generator.py +0 -519
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/runtime_profiles.py +0 -98
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/seed/__init__.py +0 -29
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/seed/seed_loader.py +0 -561
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/skills/__init__.py +0 -5
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/skills/skill_routing.py +0 -312
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/sources/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/sources/base.py +0 -110
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/sources/bitbucket.py +0 -129
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/sources/git_url.py +0 -60
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/sources/github.py +0 -75
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/sources/local.py +0 -58
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/spec_sync_validator.py +0 -15
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/state/__init__.py +0 -6285
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/state/readiness_helpers.py +0 -74
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/state/skill_readiness.py +0 -487
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/state/store.py +0 -12927
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/state_cmds.py +0 -1868
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/sync/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/sync/repo_sync.py +0 -409
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/sync_cmds.py +0 -1247
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/utils/__init__.py +0 -3
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/utils/debug_bundle.py +0 -214
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/validators/checklist_validator.py +0 -342
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/workflow_cmds.py +0 -19147
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/workflows/__init__.py +0 -9
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/workflows/_test_audit_daily_batch.py +0 -192
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/workflows/audit_daily_batch.py +0 -308
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/workflows/audit_deep_monthly.py +0 -193
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/workflows/audit_drift_scan.py +0 -178
- package/tools/vds-scripts/audit_orchestrator/src/vds_audit_orchestrator/workflows/audit_security_daily.py +0 -183
- package/tools/vds-scripts/audit_orchestrator/templates/sample_audit_template.xlsx +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/_helpers.py +0 -32
- package/tools/vds-scripts/audit_orchestrator/tests/collectors/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/collectors/completeness/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/collectors/completeness/test_bitbucket_probe.py +0 -403
- package/tools/vds-scripts/audit_orchestrator/tests/collectors/completeness/test_confluence_probe.py +0 -423
- package/tools/vds-scripts/audit_orchestrator/tests/collectors/test_bitbucket_downloader.py +0 -289
- package/tools/vds-scripts/audit_orchestrator/tests/collectors/test_image_extractor.py +0 -260
- package/tools/vds-scripts/audit_orchestrator/tests/collectors/test_markdown_converter.py +0 -57
- package/tools/vds-scripts/audit_orchestrator/tests/collectors/test_material_cache.py +0 -197
- package/tools/vds-scripts/audit_orchestrator/tests/collectors/test_material_downloader.py +0 -550
- package/tools/vds-scripts/audit_orchestrator/tests/collectors/test_registry_parser.py +0 -3514
- package/tools/vds-scripts/audit_orchestrator/tests/collectors/test_registry_parser_department_entry.py +0 -214
- package/tools/vds-scripts/audit_orchestrator/tests/collectors/test_registry_parser_flow.py +0 -200
- package/tools/vds-scripts/audit_orchestrator/tests/conftest.py +0 -988
- package/tools/vds-scripts/audit_orchestrator/tests/engine/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/engine/test_calibration.py +0 -48
- package/tools/vds-scripts/audit_orchestrator/tests/engine/test_confluence_checklist_phase22_helpers.py +0 -6065
- package/tools/vds-scripts/audit_orchestrator/tests/engine/test_multi_judge.py +0 -62
- package/tools/vds-scripts/audit_orchestrator/tests/engine/test_stability_harness.py +0 -61
- package/tools/vds-scripts/audit_orchestrator/tests/engine/test_structured_metadata.py +0 -419
- package/tools/vds-scripts/audit_orchestrator/tests/factories/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/factories/models.py +0 -534
- package/tools/vds-scripts/audit_orchestrator/tests/factories/templates.py +0 -241
- package/tools/vds-scripts/audit_orchestrator/tests/fixtures/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/fixtures/diagrams/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/fixtures/diagrams/compressed.drawio +0 -2
- package/tools/vds-scripts/audit_orchestrator/tests/fixtures/diagrams/mockup.bmpr +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/fixtures/diagrams/simple.drawio +0 -26
- package/tools/vds-scripts/audit_orchestrator/tests/fixtures/golden/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/fixtures/golden/bitbucket/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/fixtures/golden/bitbucket/branch_permissions_cli.json +0 -26
- package/tools/vds-scripts/audit_orchestrator/tests/fixtures/golden/bitbucket/branch_permissions_direct.json +0 -24
- package/tools/vds-scripts/audit_orchestrator/tests/fixtures/golden/bitbucket/repo_conditions_cli.json +0 -14
- package/tools/vds-scripts/audit_orchestrator/tests/fixtures/golden/bitbucket/repo_conditions_direct.json +0 -12
- package/tools/vds-scripts/audit_orchestrator/tests/fixtures/golden/confluence/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/fixtures/golden/confluence/page_cli.json +0 -7
- package/tools/vds-scripts/audit_orchestrator/tests/fixtures/golden/confluence/page_direct.json +0 -7
- package/tools/vds-scripts/audit_orchestrator/tests/fixtures/golden/confluence/search_cli.json +0 -11
- package/tools/vds-scripts/audit_orchestrator/tests/fixtures/golden/confluence/search_direct.json +0 -7
- package/tools/vds-scripts/audit_orchestrator/tests/fixtures/golden/sonarqube/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/fixtures/golden/sonarqube/quality_gate_cli.json +0 -12
- package/tools/vds-scripts/audit_orchestrator/tests/fixtures/golden/sonarqube/quality_gate_direct.json +0 -12
- package/tools/vds-scripts/audit_orchestrator/tests/fixtures/requirement_strategy_phase115.json +0 -118
- package/tools/vds-scripts/audit_orchestrator/tests/integration/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/integration/conftest.py +0 -107
- package/tools/vds-scripts/audit_orchestrator/tests/integration/fixtures/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/integration/fixtures/expected_outcomes.md +0 -50
- package/tools/vds-scripts/audit_orchestrator/tests/integration/fixtures/mock_audit_repo/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/integration/fixtures/mock_audit_repo/auth.py +0 -27
- package/tools/vds-scripts/audit_orchestrator/tests/integration/fixtures/mock_audit_repo/config.py +0 -16
- package/tools/vds-scripts/audit_orchestrator/tests/integration/fixtures/mock_audit_repo/db.py +0 -24
- package/tools/vds-scripts/audit_orchestrator/tests/integration/fixtures/mock_audit_repo/main.py +0 -18
- package/tools/vds-scripts/audit_orchestrator/tests/integration/fixtures/mock_audit_repo/src/__init__.py +0 -1
- package/tools/vds-scripts/audit_orchestrator/tests/integration/fixtures/mock_audit_repo/src/utils.py +0 -22
- package/tools/vds-scripts/audit_orchestrator/tests/integration/fixtures/mock_checklist_template.json +0 -110
- package/tools/vds-scripts/audit_orchestrator/tests/integration/fixtures/mock_evidence/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/integration/fixtures/mock_evidence/code_evidence_pack.json +0 -40
- package/tools/vds-scripts/audit_orchestrator/tests/integration/fixtures/mock_evidence/manifest.json +0 -49
- package/tools/vds-scripts/audit_orchestrator/tests/integration/fixtures/mock_evidence/projects/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/integration/fixtures/mock_evidence/projects/mock-audit-project/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/integration/fixtures/mock_evidence/projects/mock-audit-project/brd.md +0 -19
- package/tools/vds-scripts/audit_orchestrator/tests/integration/fixtures/mock_evidence/projects/mock-audit-project/design.md +0 -32
- package/tools/vds-scripts/audit_orchestrator/tests/integration/fixtures/mock_evidence/projects/mock-audit-project/security.md +0 -23
- package/tools/vds-scripts/audit_orchestrator/tests/integration/fixtures/mock_evidence/projects/mock-audit-project/srs.md +0 -25
- package/tools/vds-scripts/audit_orchestrator/tests/integration/fixtures/mock_evidence/projects/mock-audit-project/test.md +0 -30
- package/tools/vds-scripts/audit_orchestrator/tests/integration/test_checkpoint_merge.py +0 -1371
- package/tools/vds-scripts/audit_orchestrator/tests/integration/test_decoupling_route_p149.py +0 -176
- package/tools/vds-scripts/audit_orchestrator/tests/integration/test_gap_analyzer_batch_p149.py +0 -151
- package/tools/vds-scripts/audit_orchestrator/tests/integration/test_hybrid_search.py +0 -799
- package/tools/vds-scripts/audit_orchestrator/tests/integration/test_mcp_integration.py +0 -741
- package/tools/vds-scripts/audit_orchestrator/tests/integration/test_merge_ranking_p149.py +0 -98
- package/tools/vds-scripts/audit_orchestrator/tests/integration/test_modality_mismatch_p149.py +0 -171
- package/tools/vds-scripts/audit_orchestrator/tests/integration/test_phase117_118_storage.py +0 -350
- package/tools/vds-scripts/audit_orchestrator/tests/integration/test_phase121_short_circuit.py +0 -732
- package/tools/vds-scripts/audit_orchestrator/tests/integration/test_phase18_workflow.py +0 -223
- package/tools/vds-scripts/audit_orchestrator/tests/integration/test_phase48_e2e_verification.py +0 -763
- package/tools/vds-scripts/audit_orchestrator/tests/integration/test_phase81_doc_anchor_regression.py +0 -252
- package/tools/vds-scripts/audit_orchestrator/tests/integration/test_provider_failure_finding_p149.py +0 -339
- package/tools/vds-scripts/audit_orchestrator/tests/integration/test_readiness_e2e.py +0 -430
- package/tools/vds-scripts/audit_orchestrator/tests/integration/test_refined_workflow.py +0 -1180
- package/tools/vds-scripts/audit_orchestrator/tests/pdf/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/pdf/snapshots/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/pdf/snapshots/department_renderer.md +0 -24
- package/tools/vds-scripts/audit_orchestrator/tests/pdf/snapshots/project_renderer.md +0 -8
- package/tools/vds-scripts/audit_orchestrator/tests/pdf/snapshots/repo_renderer.md +0 -10
- package/tools/vds-scripts/audit_orchestrator/tests/pdf/test_department_pdf.py +0 -112
- package/tools/vds-scripts/audit_orchestrator/tests/pdf/test_e2e_pdf.py +0 -135
- package/tools/vds-scripts/audit_orchestrator/tests/pdf/test_idempotency.py +0 -45
- package/tools/vds-scripts/audit_orchestrator/tests/pdf/test_md_renderer.py +0 -46
- package/tools/vds-scripts/audit_orchestrator/tests/pdf/test_pdf_cmds.py +0 -97
- package/tools/vds-scripts/audit_orchestrator/tests/pdf/test_pdf_snapshot.py +0 -77
- package/tools/vds-scripts/audit_orchestrator/tests/pdf/test_pdf_writer.py +0 -65
- package/tools/vds-scripts/audit_orchestrator/tests/pdf/test_project_builder.py +0 -199
- package/tools/vds-scripts/audit_orchestrator/tests/pdf/test_public_api.py +0 -135
- package/tools/vds-scripts/audit_orchestrator/tests/pdf/test_repo_builder.py +0 -246
- package/tools/vds-scripts/audit_orchestrator/tests/pdf/test_workflow_pdf_flags.py +0 -36
- package/tools/vds-scripts/audit_orchestrator/tests/property/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/property/test_properties.py +0 -807
- package/tools/vds-scripts/audit_orchestrator/tests/test_agents/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/test_agents/test_agent_error_compat.py +0 -38
- package/tools/vds-scripts/audit_orchestrator/tests/test_agents/test_agentic_skill_policy_skip.py +0 -234
- package/tools/vds-scripts/audit_orchestrator/tests/test_agents/test_base_event_stream_logging.py +0 -785
- package/tools/vds-scripts/audit_orchestrator/tests/test_agents/test_base_timeout_policy.py +0 -277
- package/tools/vds-scripts/audit_orchestrator/tests/test_agents/test_base_trace_payload_sanitization.py +0 -92
- package/tools/vds-scripts/audit_orchestrator/tests/test_agents/test_code_agent.py +0 -2311
- package/tools/vds-scripts/audit_orchestrator/tests/test_agents/test_code_agent_re_exports.py +0 -25
- package/tools/vds-scripts/audit_orchestrator/tests/test_agents/test_code_analysis_helpers.py +0 -94
- package/tools/vds-scripts/audit_orchestrator/tests/test_agents/test_create_audit_agent_reasoning_effort.py +0 -69
- package/tools/vds-scripts/audit_orchestrator/tests/test_agents/test_docs_agent.py +0 -2044
- package/tools/vds-scripts/audit_orchestrator/tests/test_agents/test_langgraph_workflow_efficiency_metrics.py +0 -71
- package/tools/vds-scripts/audit_orchestrator/tests/test_agents/test_output_validators.py +0 -317
- package/tools/vds-scripts/audit_orchestrator/tests/test_agents/test_phase41_toolsets.py +0 -6427
- package/tools/vds-scripts/audit_orchestrator/tests/test_agents/test_pydantic_ai_models.py +0 -1219
- package/tools/vds-scripts/audit_orchestrator/tests/test_agents/test_pydantic_base_url_resolution.py +0 -84
- package/tools/vds-scripts/audit_orchestrator/tests/test_agents/test_security_agent.py +0 -2069
- package/tools/vds-scripts/audit_orchestrator/tests/test_agents/test_skill_manager_focus.py +0 -439
- package/tools/vds-scripts/audit_orchestrator/tests/test_agents/test_synthesis_agent.py +0 -1195
- package/tools/vds-scripts/audit_orchestrator/tests/test_agents/test_tool_efficiency_guard_fr120.py +0 -683
- package/tools/vds-scripts/audit_orchestrator/tests/test_agents/test_toolsets.py +0 -716
- package/tools/vds-scripts/audit_orchestrator/tests/test_aggregator_p149.py +0 -171
- package/tools/vds-scripts/audit_orchestrator/tests/test_alembic_migrations.py +0 -287
- package/tools/vds-scripts/audit_orchestrator/tests/test_anchor_allowlist_p149.py +0 -273
- package/tools/vds-scripts/audit_orchestrator/tests/test_audit_otel.py +0 -283
- package/tools/vds-scripts/audit_orchestrator/tests/test_checklist_models.py +0 -583
- package/tools/vds-scripts/audit_orchestrator/tests/test_checks/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/test_checks/test_base_check.py +0 -211
- package/tools/vds-scripts/audit_orchestrator/tests/test_checks/test_llm_checks.py +0 -126
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_analyze_command.py +0 -400
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_archive_stale_page_cli.py +0 -217
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_bitbucket_metadata_cli.py +0 -354
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_cli_impl_profile_availability.py +0 -114
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_codex_profile.py +0 -174
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_compare_backends_cli.py +0 -449
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_confluence_parent_auto_resolve.py +0 -451
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_corpus_purge_cli.py +0 -290
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_credentials_preflight.py +0 -106
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_debug_bundle.py +0 -37
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_deprecation_phase157.py +0 -484
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_dispatch_concurrency_diagnostics.py +0 -758
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_doctor_check_confluence_cli.py +0 -320
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_doctor_codex.py +0 -187
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_doctor_corpus_status_cli.py +0 -236
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_doctor_correlation_cli.py +0 -128
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_doctor_crawl_status_cli.py +0 -192
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_doctor_credentials_cli.py +0 -86
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_doctor_dispatch_status_cli.py +0 -421
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_doctor_heartbeat_phase169.py +0 -173
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_doctor_hierarchy_status_cli.py +0 -199
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_doctor_locks_cli.py +0 -134
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_doctor_logs_follow_cli.py +0 -305
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_doctor_migration.py +0 -333
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_doctor_profile_availability_cli.py +0 -151
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_doctor_skills_policy_cli.py +0 -153
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_evidence_quality_cli.py +0 -307
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_export_debug_bundle_phase36.py +0 -60
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_export_git_manifest_cli.py +0 -172
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_file_removal_phase157e.py +0 -770
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_grounding_classifier.py +0 -226
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_logging.py +0 -49
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_materials_cli.py +0 -9127
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_metadata_completeness_phase92.py +0 -364
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_parent_dispatch_finalization_phase168f.py +0 -111
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_parse_cli.py +0 -590
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_phase117_118_feature_flags.py +0 -219
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_phase164_control_plane.py +0 -718
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_phase165_runner_scripts.py +0 -230
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_preparation_classifications.py +0 -146
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_prepare_cli.py +0 -398
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_publication_quality_gate.py +0 -126
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_publish_system_doc_cli.py +0 -158
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_query_checklist_cli.py +0 -219
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_readiness_cli.py +0 -673
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_readiness_cli_integration.py +0 -689
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_removed_flags_phase92.py +0 -36
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_report_cmds.py +0 -1317
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_run_history_index.py +0 -57
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_run_management.py +0 -1194
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_runtime_profiles_cli.py +0 -1658
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_smart_run_selection.py +0 -1562
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_state_cli.py +0 -2467
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_state_migration.py +0 -339
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_sync_repos_debug_artifacts.py +0 -1109
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_upload_results_cli.py +0 -809
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_validate_checklist.py +0 -178
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_validate_checklist_cli.py +0 -110
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_validate_spec_sync_cli.py +0 -519
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_workflow_default_parameters_baseline.py +0 -101
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_workflow_options.py +0 -7896
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_workflow_project_db_modes.py +0 -6516
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_workflow_project_project_scope.py +0 -831
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_workflow_project_target.py +0 -611
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_workflow_projects_phase131_lifecycle.py +0 -2488
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_workflow_projects_phase131_scaffolding.py +0 -96
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_workflow_row_key_guard.py +0 -78
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli/test_workflow_summary_artifacts.py +0 -1872
- package/tools/vds-scripts/audit_orchestrator/tests/test_cli_paths_phase2.py +0 -45
- package/tools/vds-scripts/audit_orchestrator/tests/test_clients/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/test_clients/test_bitbucket_cli_client.py +0 -124
- package/tools/vds-scripts/audit_orchestrator/tests/test_clients/test_cli_parity.py +0 -110
- package/tools/vds-scripts/audit_orchestrator/tests/test_clients/test_confluence_cli_client.py +0 -1149
- package/tools/vds-scripts/audit_orchestrator/tests/test_clients/test_sonarqube_cli_client.py +0 -19
- package/tools/vds-scripts/audit_orchestrator/tests/test_collectors/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/test_collectors/test_linked_page_tracker.py +0 -118
- package/tools/vds-scripts/audit_orchestrator/tests/test_companion_context_service.py +0 -230
- package/tools/vds-scripts/audit_orchestrator/tests/test_dspy_modules/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/test_dspy_modules/conftest.py +0 -11
- package/tools/vds-scripts/audit_orchestrator/tests/test_dspy_modules/test_compile_artifact.py +0 -465
- package/tools/vds-scripts/audit_orchestrator/tests/test_dspy_modules/test_cross_provider_critique.py +0 -120
- package/tools/vds-scripts/audit_orchestrator/tests/test_dspy_modules/test_cross_provider_critique_e2e.py +0 -75
- package/tools/vds-scripts/audit_orchestrator/tests/test_dspy_modules/test_evaluation.py +0 -515
- package/tools/vds-scripts/audit_orchestrator/tests/test_dspy_modules/test_runtime_loader.py +0 -537
- package/tools/vds-scripts/audit_orchestrator/tests/test_dspy_modules/test_signatures_normalization.py +0 -172
- package/tools/vds-scripts/audit_orchestrator/tests/test_engine/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/test_engine/test_auditor_applicability.py +0 -68
- package/tools/vds-scripts/audit_orchestrator/tests/test_engine/test_checklist_generator.py +0 -1252
- package/tools/vds-scripts/audit_orchestrator/tests/test_engine/test_checklist_projection.py +0 -54
- package/tools/vds-scripts/audit_orchestrator/tests/test_engine/test_confluence_checklist_projection_consistency.py +0 -1696
- package/tools/vds-scripts/audit_orchestrator/tests/test_engine/test_critique_merger_matrix.py +0 -120
- package/tools/vds-scripts/audit_orchestrator/tests/test_engine/test_cross_check_rules.py +0 -459
- package/tools/vds-scripts/audit_orchestrator/tests/test_engine/test_cross_provider_critique.py +0 -55
- package/tools/vds-scripts/audit_orchestrator/tests/test_engine/test_doc_loader.py +0 -73
- package/tools/vds-scripts/audit_orchestrator/tests/test_engine/test_drift_detector.py +0 -34
- package/tools/vds-scripts/audit_orchestrator/tests/test_engine/test_evidence_collectors.py +0 -93
- package/tools/vds-scripts/audit_orchestrator/tests/test_engine/test_lease_timeout.py +0 -114
- package/tools/vds-scripts/audit_orchestrator/tests/test_engine/test_loader.py +0 -350
- package/tools/vds-scripts/audit_orchestrator/tests/test_engine/test_loader_parity.py +0 -179
- package/tools/vds-scripts/audit_orchestrator/tests/test_engine/test_low_confidence_reeval.py +0 -691
- package/tools/vds-scripts/audit_orchestrator/tests/test_engine/test_phase145a_completion.py +0 -209
- package/tools/vds-scripts/audit_orchestrator/tests/test_engine/test_phase31_row_consistency_retry_benchmark.py +0 -150
- package/tools/vds-scripts/audit_orchestrator/tests/test_engine/test_profile_detector.py +0 -286
- package/tools/vds-scripts/audit_orchestrator/tests/test_engine/test_regression_guard.py +0 -53
- package/tools/vds-scripts/audit_orchestrator/tests/test_engine/test_result_merger.py +0 -619
- package/tools/vds-scripts/audit_orchestrator/tests/test_engine/test_row_evaluator.py +0 -15783
- package/tools/vds-scripts/audit_orchestrator/tests/test_engine/test_row_failover.py +0 -215
- package/tools/vds-scripts/audit_orchestrator/tests/test_engine/test_scorer.py +0 -597
- package/tools/vds-scripts/audit_orchestrator/tests/test_engine/test_skill_breakdown_telemetry_fr137.py +0 -421
- package/tools/vds-scripts/audit_orchestrator/tests/test_engine/test_targeted_auto_merge.py +0 -229
- package/tools/vds-scripts/audit_orchestrator/tests/test_engine/test_timeout_failover.py +0 -488
- package/tools/vds-scripts/audit_orchestrator/tests/test_engine/test_timeout_telemetry.py +0 -73
- package/tools/vds-scripts/audit_orchestrator/tests/test_engine/test_validator.py +0 -419
- package/tools/vds-scripts/audit_orchestrator/tests/test_incremental/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/test_incremental/test_diff_detector.py +0 -111
- package/tools/vds-scripts/audit_orchestrator/tests/test_infra_persistence.py +0 -291
- package/tools/vds-scripts/audit_orchestrator/tests/test_integration/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/test_integration/test_phase3_integration.py +0 -516
- package/tools/vds-scripts/audit_orchestrator/tests/test_llm/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/test_llm/test_cache.py +0 -670
- package/tools/vds-scripts/audit_orchestrator/tests/test_llm/test_codex_model_builder.py +0 -281
- package/tools/vds-scripts/audit_orchestrator/tests/test_llm/test_codex_oauth.py +0 -330
- package/tools/vds-scripts/audit_orchestrator/tests/test_llm/test_codex_streaming.py +0 -433
- package/tools/vds-scripts/audit_orchestrator/tests/test_llm/test_cost_tracker.py +0 -27
- package/tools/vds-scripts/audit_orchestrator/tests/test_llm/test_engine.py +0 -876
- package/tools/vds-scripts/audit_orchestrator/tests/test_llm/test_evaluator.py +0 -212
- package/tools/vds-scripts/audit_orchestrator/tests/test_llm/test_instruction_templates.py +0 -639
- package/tools/vds-scripts/audit_orchestrator/tests/test_llm/test_prompt_metadata.py +0 -97
- package/tools/vds-scripts/audit_orchestrator/tests/test_llm/test_prompts.py +0 -660
- package/tools/vds-scripts/audit_orchestrator/tests/test_llm/test_provider.py +0 -330
- package/tools/vds-scripts/audit_orchestrator/tests/test_llm/test_provider_contract_sync.py +0 -18
- package/tools/vds-scripts/audit_orchestrator/tests/test_llm/test_reasoning_effort_validation.py +0 -565
- package/tools/vds-scripts/audit_orchestrator/tests/test_llm/test_schemas.py +0 -827
- package/tools/vds-scripts/audit_orchestrator/tests/test_logging_config.py +0 -297
- package/tools/vds-scripts/audit_orchestrator/tests/test_models/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/test_models/test_enums.py +0 -185
- package/tools/vds-scripts/audit_orchestrator/tests/test_models/test_findings.py +0 -1159
- package/tools/vds-scripts/audit_orchestrator/tests/test_models/test_project_profile.py +0 -307
- package/tools/vds-scripts/audit_orchestrator/tests/test_models/test_registry.py +0 -532
- package/tools/vds-scripts/audit_orchestrator/tests/test_models/test_template.py +0 -708
- package/tools/vds-scripts/audit_orchestrator/tests/test_observability/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/test_observability/test_metrics.py +0 -60
- package/tools/vds-scripts/audit_orchestrator/tests/test_paths_config_phase2.py +0 -21
- package/tools/vds-scripts/audit_orchestrator/tests/test_performance/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/test_performance/test_fr79_performance_guardrails.py +0 -199
- package/tools/vds-scripts/audit_orchestrator/tests/test_phase156_hardening.py +0 -498
- package/tools/vds-scripts/audit_orchestrator/tests/test_phase93_regression_guards.py +0 -123
- package/tools/vds-scripts/audit_orchestrator/tests/test_pipeline_integration.py +0 -517
- package/tools/vds-scripts/audit_orchestrator/tests/test_profiles/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/test_profiles/test_detection.py +0 -146
- package/tools/vds-scripts/audit_orchestrator/tests/test_publishers/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/test_publishers/test_bitbucket_link_resolver.py +0 -55
- package/tools/vds-scripts/audit_orchestrator/tests/test_publishers/test_checklist_renderer.py +0 -84
- package/tools/vds-scripts/audit_orchestrator/tests/test_publishers/test_checklist_renderer_projection.py +0 -97
- package/tools/vds-scripts/audit_orchestrator/tests/test_publishers/test_confluence_macros.py +0 -58
- package/tools/vds-scripts/audit_orchestrator/tests/test_publishers/test_confluence_publisher.py +0 -2171
- package/tools/vds-scripts/audit_orchestrator/tests/test_publishers/test_evidence_links.py +0 -129
- package/tools/vds-scripts/audit_orchestrator/tests/test_publishers/test_field_sanitizer.py +0 -108
- package/tools/vds-scripts/audit_orchestrator/tests/test_publishers/test_hierarchy_publisher.py +0 -134
- package/tools/vds-scripts/audit_orchestrator/tests/test_publishers/test_incremental_plan_parser.py +0 -62
- package/tools/vds-scripts/audit_orchestrator/tests/test_publishers/test_live_data_injector.py +0 -48
- package/tools/vds-scripts/audit_orchestrator/tests/test_publishers/test_macro_builder.py +0 -22
- package/tools/vds-scripts/audit_orchestrator/tests/test_publishers/test_p161_confluence_optimization.py +0 -168
- package/tools/vds-scripts/audit_orchestrator/tests/test_publishers/test_priority_renderer.py +0 -96
- package/tools/vds-scripts/audit_orchestrator/tests/test_publishers/test_project_aggregate_renderer.py +0 -364
- package/tools/vds-scripts/audit_orchestrator/tests/test_publishers/test_storage_validation.py +0 -273
- package/tools/vds-scripts/audit_orchestrator/tests/test_publishers/test_summary_refactor.py +0 -118
- package/tools/vds-scripts/audit_orchestrator/tests/test_publishers/test_system_doc_hierarchy.py +0 -50
- package/tools/vds-scripts/audit_orchestrator/tests/test_publishers/test_table_builder.py +0 -23
- package/tools/vds-scripts/audit_orchestrator/tests/test_publishers/test_vietnamese_templates.py +0 -37
- package/tools/vds-scripts/audit_orchestrator/tests/test_publishers/test_wiring_integration.py +0 -290
- package/tools/vds-scripts/audit_orchestrator/tests/test_reports/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/test_reports/test_aggregation_report.py +0 -181
- package/tools/vds-scripts/audit_orchestrator/tests/test_reports/test_checklist_generator.py +0 -258
- package/tools/vds-scripts/audit_orchestrator/tests/test_reports/test_gap_report.py +0 -73
- package/tools/vds-scripts/audit_orchestrator/tests/test_reports/test_json_generator.py +0 -317
- package/tools/vds-scripts/audit_orchestrator/tests/test_result_merger_p149.py +0 -347
- package/tools/vds-scripts/audit_orchestrator/tests/test_route_mode_p149.py +0 -178
- package/tools/vds-scripts/audit_orchestrator/tests/test_rubric_parser.py +0 -179
- package/tools/vds-scripts/audit_orchestrator/tests/test_scorer.py +0 -110
- package/tools/vds-scripts/audit_orchestrator/tests/test_state/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/test_state/test_sparse_coverage.py +0 -117
- package/tools/vds-scripts/audit_orchestrator/tests/test_workflow/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/test_workflow/test_langgraph_workflow.py +0 -2072
- package/tools/vds-scripts/audit_orchestrator/tests/test_workflow/test_p161_runtime_hardening.py +0 -341
- package/tools/vds-scripts/audit_orchestrator/tests/test_workflow_cmds_p149.py +0 -112
- package/tools/vds-scripts/audit_orchestrator/tests/test_workflow_cmds_p172.py +0 -126
- package/tools/vds-scripts/audit_orchestrator/tests/test_workflow_guidance_p150.py +0 -95
- package/tools/vds-scripts/audit_orchestrator/tests/unit/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/unit/agents/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/unit/agents/test_agentic_investigator_phase115.py +0 -42
- package/tools/vds-scripts/audit_orchestrator/tests/unit/agents/test_requirement_analysis_agent.py +0 -412
- package/tools/vds-scripts/audit_orchestrator/tests/unit/agents/test_security_agent_updates.py +0 -131
- package/tools/vds-scripts/audit_orchestrator/tests/unit/agents/test_security_scanner.py +0 -397
- package/tools/vds-scripts/audit_orchestrator/tests/unit/agents/test_skill_executor.py +0 -316
- package/tools/vds-scripts/audit_orchestrator/tests/unit/agents/test_skill_fallback.py +0 -299
- package/tools/vds-scripts/audit_orchestrator/tests/unit/agents/test_skill_policy.py +0 -520
- package/tools/vds-scripts/audit_orchestrator/tests/unit/agents/test_skill_telemetry.py +0 -306
- package/tools/vds-scripts/audit_orchestrator/tests/unit/agents/test_synthesis_fixes.py +0 -761
- package/tools/vds-scripts/audit_orchestrator/tests/unit/agents/test_tool_argument_robustness.py +0 -272
- package/tools/vds-scripts/audit_orchestrator/tests/unit/agents/test_tool_registry.py +0 -2548
- package/tools/vds-scripts/audit_orchestrator/tests/unit/agents/test_tool_registry_ast_grep.py +0 -87
- package/tools/vds-scripts/audit_orchestrator/tests/unit/agents/test_tool_registry_phase123_scoping.py +0 -353
- package/tools/vds-scripts/audit_orchestrator/tests/unit/agents/test_tool_registry_phase94_ff.py +0 -445
- package/tools/vds-scripts/audit_orchestrator/tests/unit/agents/test_tool_registry_vector_search_phase115.py +0 -35
- package/tools/vds-scripts/audit_orchestrator/tests/unit/agents/test_utils.py +0 -1007
- package/tools/vds-scripts/audit_orchestrator/tests/unit/agents/test_vector_evidence_toolset.py +0 -622
- package/tools/vds-scripts/audit_orchestrator/tests/unit/cli/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/unit/cli/test_workflow_cli.py +0 -123
- package/tools/vds-scripts/audit_orchestrator/tests/unit/collectors/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/unit/collectors/test_cache_guard.py +0 -479
- package/tools/vds-scripts/audit_orchestrator/tests/unit/collectors/test_checklist_parser_phase120.py +0 -55
- package/tools/vds-scripts/audit_orchestrator/tests/unit/collectors/test_diagram_extractor.py +0 -467
- package/tools/vds-scripts/audit_orchestrator/tests/unit/collectors/test_enrichment_extractor.py +0 -59
- package/tools/vds-scripts/audit_orchestrator/tests/unit/collectors/test_graphify_collector.py +0 -158
- package/tools/vds-scripts/audit_orchestrator/tests/unit/completeness/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/unit/completeness/test_completeness.py +0 -563
- package/tools/vds-scripts/audit_orchestrator/tests/unit/completeness/test_freshness_evaluator.py +0 -493
- package/tools/vds-scripts/audit_orchestrator/tests/unit/completeness/test_material_cache_metrics.py +0 -365
- package/tools/vds-scripts/audit_orchestrator/tests/unit/completeness/test_material_completeness_service.py +0 -2736
- package/tools/vds-scripts/audit_orchestrator/tests/unit/config_resolution/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/unit/config_resolution/test_discovery.py +0 -47
- package/tools/vds-scripts/audit_orchestrator/tests/unit/config_resolution/test_redaction.py +0 -15
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_ad_hoc_analyzer.py +0 -576
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_agent_loop.py +0 -1896
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_anchor_filter_cl003.py +0 -181
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_batch_evidence_cache.py +0 -155
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_batch_processor.py +0 -3608
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_checklist_contract.py +0 -55
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_checklist_scoping.py +0 -371
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_config_companion_phase123.py +0 -142
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_config_evidence_phase123.py +0 -249
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_confluence_checklist_contract_export_parity.py +0 -813
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_cross_repo_config_phase122.py +0 -613
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_dspy_requirement_classifier.py +0 -517
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_evidence_diversity.py +0 -144
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_evidence_truncation.py +0 -108
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_grounding_validator.py +0 -127
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_guidance_injection_phase120.py +0 -105
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_instruction_analysis_phase122.py +0 -761
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_instruction_pre_filter_phase167.py +0 -334
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_llm_row_evaluator_retries.py +0 -3684
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_loader_phase123.py +0 -345
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_manual_check_gating_phase122.py +0 -474
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_parallel_eval.py +0 -263
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_phase122_verifier_phase122.py +0 -169
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_phase166_route_failover.py +0 -437
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_post_eval_cl003_shared_lib.py +0 -267
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_postproc_streaming.py +0 -194
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_pre_eval_gating_phase122.py +0 -362
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_prepare_topology_coverage.py +0 -247
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_private_dns_sanitization_phase104.py +0 -397
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_project_evidence_context.py +0 -450
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_project_knowledge_store.py +0 -487
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_project_topology.py +0 -1142
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_provider_failure_classifier.py +0 -195
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_readiness_extractor.py +0 -496
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_readiness_synthesizer.py +0 -653
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_repo_type_classifier.py +0 -303
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_requirement_analysis.py +0 -508
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_requirement_analysis_execution_scope.py +0 -239
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_requirement_analysis_phase114.py +0 -919
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_requirement_analysis_phase115.py +0 -97
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_requirement_analysis_shared_lib.py +0 -340
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_requirement_classification_drift.py +0 -729
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_requirement_classification_nlp.py +0 -670
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_requirement_scope_phase122.py +0 -615
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_route_matrix.py +0 -258
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_route_override.py +0 -141
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_routing_precision.py +0 -650
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_row_evaluator_dual_evidence.py +0 -2987
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_row_evaluator_instruction_runtime_phase122.py +0 -365
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_row_evaluator_runtime.py +0 -830
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_runtime_hardening_phase122.py +0 -225
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_scoped_na_skip.py +0 -107
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_scoring_enhancements.py +0 -404
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_shared_library_retrieval_phase123.py +0 -441
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_shared_library_routing_phase123.py +0 -279
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_shared_resource_indexing_phase122.py +0 -188
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_skill_recommendation.py +0 -225
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_skill_routing_cl003_shared_lib.py +0 -338
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_skills_toolset.py +0 -319
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_stability_metric.py +0 -60
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_target_selector.py +0 -958
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_token_tracker.py +0 -121
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_token_wiring.py +0 -119
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_tool_first_planner.py +0 -7103
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_topology_knowledge_persistence.py +0 -332
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_topology_query_service.py +0 -55
- package/tools/vds-scripts/audit_orchestrator/tests/unit/engine/test_unverified_ref_retry.py +0 -909
- package/tools/vds-scripts/audit_orchestrator/tests/unit/models/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/unit/models/test_evidence.py +0 -515
- package/tools/vds-scripts/audit_orchestrator/tests/unit/models/test_gaps.py +0 -422
- package/tools/vds-scripts/audit_orchestrator/tests/unit/models/test_readiness.py +0 -428
- package/tools/vds-scripts/audit_orchestrator/tests/unit/publishers/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/unit/publishers/test_confluence_hierarchy.py +0 -227
- package/tools/vds-scripts/audit_orchestrator/tests/unit/publishers/test_project_title_generation.py +0 -335
- package/tools/vds-scripts/audit_orchestrator/tests/unit/publishers/test_publisher_registry_helpers.py +0 -290
- package/tools/vds-scripts/audit_orchestrator/tests/unit/publishers/test_publisher_registry_integration.py +0 -557
- package/tools/vds-scripts/audit_orchestrator/tests/unit/publishers/test_readiness_renderer.py +0 -381
- package/tools/vds-scripts/audit_orchestrator/tests/unit/publishers/test_repo_title_consistency.py +0 -266
- package/tools/vds-scripts/audit_orchestrator/tests/unit/publishers/test_upload_hierarchy_integration.py +0 -470
- package/tools/vds-scripts/audit_orchestrator/tests/unit/scripts/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/unit/scripts/test_benchmark_dspy.py +0 -177
- package/tools/vds-scripts/audit_orchestrator/tests/unit/scripts/test_benchmark_nlp_accuracy.py +0 -72
- package/tools/vds-scripts/audit_orchestrator/tests/unit/scripts/test_benchmark_retrieval_modes.py +0 -123
- package/tools/vds-scripts/audit_orchestrator/tests/unit/scripts/test_verify_phase111_requirement_analysis.py +0 -409
- package/tools/vds-scripts/audit_orchestrator/tests/unit/seed/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/unit/seed/test_seed_chain_cli.py +0 -277
- package/tools/vds-scripts/audit_orchestrator/tests/unit/seed/test_seed_loader.py +0 -502
- package/tools/vds-scripts/audit_orchestrator/tests/unit/skills/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/unit/skills/test_skill_routing.py +0 -209
- package/tools/vds-scripts/audit_orchestrator/tests/unit/sources/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/unit/sources/test_bitbucket_source.py +0 -66
- package/tools/vds-scripts/audit_orchestrator/tests/unit/sources/test_non_retryable_markers.py +0 -88
- package/tools/vds-scripts/audit_orchestrator/tests/unit/sources/test_repo_info.py +0 -212
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/test_completeness.py +0 -598
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/test_dispatch_events_contract_phase169.py +0 -100
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/test_dispatch_hardening_phase158.py +0 -392
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/test_dispatch_persistence_phase157.py +0 -914
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/test_embedding_client.py +0 -64
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/test_get_latest_completed_run.py +0 -313
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/test_heartbeat_phase169.py +0 -109
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/test_hybrid_search.py +0 -398
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/test_normalize_url.py +0 -262
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/test_phase152_query_surface.py +0 -59
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/test_phase98_confluence_document_model.py +0 -202
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/test_published_pages.py +0 -754
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/test_readiness_helpers.py +0 -193
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/test_run_ledger.py +0 -522
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/test_run_management.py +0 -378
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/test_schema_contract_phase170.py +0 -755
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/test_state_cmds.py +0 -231
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/test_state_loaders.py +0 -2151
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/test_state_run_api.py +0 -2226
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/test_store.py +0 -1435
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/test_store_dispatch.py +0 -646
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/test_store_dispatch_status_view.py +0 -181
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/test_store_scope.py +0 -213
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/test_utilization_persist_phase169.py +0 -77
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/test_vds_search.py +0 -263
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/test_vector_index_api.py +0 -319
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/test_vector_index_runtime.py +0 -175
- package/tools/vds-scripts/audit_orchestrator/tests/unit/state/test_vector_index_store.py +0 -1756
- package/tools/vds-scripts/audit_orchestrator/tests/unit/sync/__init__.py +0 -0
- package/tools/vds-scripts/audit_orchestrator/tests/unit/sync/test_repo_sync.py +0 -257
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_artifact_exclusion.py +0 -119
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_auto_promote_phase158.py +0 -337
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_carry_forward_artifact_filtering.py +0 -317
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_checklist_precache_p160a.py +0 -416
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_cli_decomposition_fr219.py +0 -269
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_code_chunk_carry_forward.py +0 -203
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_config_coherence.py +0 -180
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_config_secret_policy.py +0 -522
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_corpus_project_id_migration.py +0 -318
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_corpus_status_diagnostics.py +0 -239
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_department_priority_ordering.py +0 -131
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_dispatch_coordinator_phase158.py +0 -402
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_dispatch_job_identity_p167a.py +0 -238
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_dispatch_ramp_up_phase171.py +0 -434
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_dispatcher.py +0 -911
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_doc_type_en_inference.py +0 -246
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_early_exit_unchunked_repos.py +0 -111
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_errors.py +0 -237
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_errors_taxonomy.py +0 -83
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_extract_chunking_config_phase98.py +0 -73
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_extract_cmds_state_helpers.py +0 -33
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_extract_docs_code_chunking.py +0 -260
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_finalize_dispatch_run_phase168.py +0 -341
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_identity.py +0 -221
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_infrastructure_detection.py +0 -441
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_junction_table_phase95.py +0 -259
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_late_binding_assignment_p167c.py +0 -286
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_misc_cmds_fr224_225_hardening.py +0 -194
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_p172_integration.py +0 -306
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_parent_provider_preflight.py +0 -118
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_performance_gates_phase92.py +0 -141
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_performance_gates_phase93.py +0 -50
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_phase115_search_strategy.py +0 -106
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_phase154_title_consistency.py +0 -117
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_phase155_param_forwarding.py +0 -304
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_phase158_concurrency_defaults.py +0 -207
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_phase170_doctor_schema.py +0 -319
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_phase170_regression.py +0 -334
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_phase94_corpus_lifecycle.py +0 -307
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_phase96_repo_key_migration.py +0 -305
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_pipelined_scheduling.py +0 -130
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_profile_availability_probe.py +0 -616
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_profile_aware_row_timeout.py +0 -102
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_profile_timeout_stagger_p160cd.py +0 -205
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_progress_summary_phase169.py +0 -96
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_registry_checklist_diagnostics.py +0 -124
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_resume_manifest_p167b.py +0 -268
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_risk_mitigations_p160e1.py +0 -348
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_single_row_shards_p160b.py +0 -357
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_state_repo_discovery.py +0 -504
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_sync_metadata_entries.py +0 -57
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_task_models.py +0 -1796
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_utilization_telemetry_p167e.py +0 -259
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_vietnamese_fts_hardening.py +0 -160
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_workflow_phase98_enrichment.py +0 -92
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_workflow_project_merge_materialization.py +0 -322
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_workflow_row_key_migration_guard.py +0 -88
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_workflow_short_circuit_phase121.py +0 -564
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_workflow_single_target_row_context.py +0 -49
- package/tools/vds-scripts/audit_orchestrator/tests/unit/test_zero_result_messaging.py +0 -76
- package/tools/vds-scripts/bandit-report.json +0 -2974
- package/tools/vds-scripts/brd_orchestrator/README.md +0 -29
- package/tools/vds-scripts/brd_orchestrator/pyproject.toml +0 -63
- package/tools/vds-scripts/brd_orchestrator/src/vds_brd_orchestrator/__init__.py +0 -17
- package/tools/vds-scripts/brd_orchestrator/src/vds_brd_orchestrator/cli.py +0 -187
- package/tools/vds-scripts/brd_orchestrator/src/vds_brd_orchestrator/validator.py +0 -121
- package/tools/vds-scripts/brd_orchestrator/tests/__init__.py +0 -0
- package/tools/vds-scripts/brd_orchestrator/tests/test_cli.py +0 -62
- package/tools/vds-scripts/brd_orchestrator/tests/test_validator.py +0 -33
- package/tools/vds-scripts/circular_dependency_orchestrator/README.md +0 -30
- package/tools/vds-scripts/circular_dependency_orchestrator/pyproject.toml +0 -43
- package/tools/vds-scripts/circular_dependency_orchestrator/src/vds_circular_dependency_orchestrator/__init__.py +0 -16
- package/tools/vds-scripts/circular_dependency_orchestrator/src/vds_circular_dependency_orchestrator/cli.py +0 -904
- package/tools/vds-scripts/circular_dependency_orchestrator/tests/__init__.py +0 -0
- package/tools/vds-scripts/circular_dependency_orchestrator/tests/unit/__init__.py +0 -0
- package/tools/vds-scripts/circular_dependency_orchestrator/tests/unit/test_cli.py +0 -354
- package/tools/vds-scripts/coverage.json +0 -1
- package/tools/vds-scripts/create_pr.py +0 -57
- package/tools/vds-scripts/diagram_generator/README.md +0 -663
- package/tools/vds-scripts/diagram_generator/ci_validate.sh +0 -16
- package/tools/vds-scripts/diagram_generator/docs-nttc/projects/INSURANCE/analysis/current-state/insurance-claim-business/insurance-claim-business-component.png +0 -0
- package/tools/vds-scripts/diagram_generator/docs-nttc/projects/INSURANCE/analysis/current-state/insurance-claim-business/insurance-claim-business-component.puml +0 -23
- package/tools/vds-scripts/diagram_generator/docs-nttc/projects/INSURANCE/analysis/current-state/insurance-claim-business/insurance-claim-business-sequence.png +0 -0
- package/tools/vds-scripts/diagram_generator/docs-nttc/projects/INSURANCE/analysis/current-state/insurance-claim-business/insurance-claim-business-sequence.puml +0 -21
- package/tools/vds-scripts/diagram_generator/docs-nttc/projects/INSURANCE/analysis/current-state/insurance-claim-business/insurance-claim-business-usecase.png +0 -0
- package/tools/vds-scripts/diagram_generator/docs-nttc/projects/INSURANCE/analysis/current-state/insurance-claim-business/insurance-claim-business-usecase.puml +0 -14
- package/tools/vds-scripts/diagram_generator/examples/github-actions-validate.yml +0 -39
- package/tools/vds-scripts/diagram_generator/generate_all_diagrams.py +0 -827
- package/tools/vds-scripts/diagram_generator/generate_insurance_c4_diagrams.py +0 -261
- package/tools/vds-scripts/diagram_generator/generate_insurance_c4_quick.py +0 -486
- package/tools/vds-scripts/diagram_generator/pyproject.toml +0 -28
- package/tools/vds-scripts/diagram_generator/render_png.py +0 -59
- package/tools/vds-scripts/diagram_generator/src/vds_diagram_generator/__init__.py +0 -3
- package/tools/vds-scripts/diagram_generator/src/vds_diagram_generator/cli.py +0 -50
- package/tools/vds-scripts/diagram_generator/test_c4_hierarchical.py +0 -142
- package/tools/vds-scripts/diagram_generator/test_c4_quick.py +0 -131
- package/tools/vds-scripts/diagram_generator/tests/__init__.py +0 -0
- package/tools/vds-scripts/diagram_generator/tests/test_analyzer_completeness.py +0 -260
- package/tools/vds-scripts/diagram_generator/tests/test_c4_syntax_correctness.py +0 -138
- package/tools/vds-scripts/diagram_generator/tests/test_component_coverage.py +0 -182
- package/tools/vds-scripts/diagram_generator/tests/test_mermaid_output.py +0 -80
- package/tools/vds-scripts/diagram_generator/tests/test_png_generation.py +0 -112
- package/tools/vds-scripts/diagram_generator/tests/test_scenario_templates.py +0 -15
- package/tools/vds-scripts/diagram_generator/tests/test_sequence_accuracy.py +0 -93
- package/tools/vds-scripts/diagram_generator/tests/test_structurizr_export.py +0 -177
- package/tools/vds-scripts/diagram_generator/tests/test_style_consistency.py +0 -174
- package/tools/vds-scripts/diagram_generator/tests/test_usecase_generator.py +0 -201
- package/tools/vds-scripts/diagram_generator/tests/test_usecase_integration.py +0 -124
- package/tools/vds-scripts/docker/compose.phase2-verification.yml +0 -31
- package/tools/vds-scripts/docker-compose.openapi-validator.yml +0 -14
- package/tools/vds-scripts/excel_orchestrator/README.md +0 -288
- package/tools/vds-scripts/excel_orchestrator/RESEARCH_BASED_UPDATES_REPORT.md +0 -261
- package/tools/vds-scripts/excel_orchestrator/add_essential_missing_effort.py +0 -255
- package/tools/vds-scripts/excel_orchestrator/adjust_effort_complexity.py +0 -184
- package/tools/vds-scripts/excel_orchestrator/brd_analysis_and_task_breakdown.py +0 -632
- package/tools/vds-scripts/excel_orchestrator/brd_analysis_comprehensive.py +0 -1029
- package/tools/vds-scripts/excel_orchestrator/check_overlaps_and_brd_coverage.py +0 -570
- package/tools/vds-scripts/excel_orchestrator/clean_remarks_column.py +0 -127
- package/tools/vds-scripts/excel_orchestrator/comprehensive_brd_check.py +0 -322
- package/tools/vds-scripts/excel_orchestrator/create_buffered_summary.py +0 -119
- package/tools/vds-scripts/excel_orchestrator/create_service_totals_sheet.py +0 -118
- package/tools/vds-scripts/excel_orchestrator/examples/basic_operations.py +0 -85
- package/tools/vds-scripts/excel_orchestrator/expand_all_tasks.py +0 -341
- package/tools/vds-scripts/excel_orchestrator/expand_tasks.py +0 -304
- package/tools/vds-scripts/excel_orchestrator/fill_brd_references.py +0 -347
- package/tools/vds-scripts/excel_orchestrator/fill_remarks_and_colors.py +0 -132
- package/tools/vds-scripts/excel_orchestrator/finalize_brd_and_cleanup.py +0 -295
- package/tools/vds-scripts/excel_orchestrator/finalize_brd_coverage.py +0 -327
- package/tools/vds-scripts/excel_orchestrator/fix_all_formulas.py +0 -99
- package/tools/vds-scripts/excel_orchestrator/fix_detail_presentation.py +0 -113
- package/tools/vds-scripts/excel_orchestrator/fix_presentation_and_effort.py +0 -116
- package/tools/vds-scripts/excel_orchestrator/fix_presentation_consistency.py +0 -231
- package/tools/vds-scripts/excel_orchestrator/fix_remarks_matching.py +0 -179
- package/tools/vds-scripts/excel_orchestrator/group_tasks_by_service_id.py +0 -210
- package/tools/vds-scripts/excel_orchestrator/increase_brd_coverage.py +0 -497
- package/tools/vds-scripts/excel_orchestrator/increase_effort_complexity.py +0 -155
- package/tools/vds-scripts/excel_orchestrator/organize_and_deduplicate.py +0 -273
- package/tools/vds-scripts/excel_orchestrator/pyproject.toml +0 -64
- package/tools/vds-scripts/excel_orchestrator/rebuild_all_formulas.py +0 -146
- package/tools/vds-scripts/excel_orchestrator/remove_base_multiplier_and_check_duplicates.py +0 -310
- package/tools/vds-scripts/excel_orchestrator/remove_duplicate_brd_tasks.py +0 -137
- package/tools/vds-scripts/excel_orchestrator/research_based_updates.py +0 -457
- package/tools/vds-scripts/excel_orchestrator/restore_e_values.py +0 -172
- package/tools/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/__init__.py +0 -5
- package/tools/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/cli.py +0 -746
- package/tools/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/config.py +0 -74
- package/tools/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/converters.py +0 -226
- package/tools/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/errors.py +0 -88
- package/tools/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/excel_client.py +0 -443
- package/tools/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/formatters.py +0 -211
- package/tools/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/logging.py +0 -57
- package/tools/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/source_contract.py +0 -29
- package/tools/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/target_state_status.py +0 -837
- package/tools/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/ulnc_alignment.py +0 -1291
- package/tools/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/validators.py +0 -164
- package/tools/vds-scripts/excel_orchestrator/sync_detail_and_total_sheets.py +0 -211
- package/tools/vds-scripts/excel_orchestrator/tests/__init__.py +0 -1
- package/tools/vds-scripts/excel_orchestrator/tests/conftest.py +0 -36
- package/tools/vds-scripts/excel_orchestrator/tests/test_cli.py +0 -383
- package/tools/vds-scripts/excel_orchestrator/tests/test_excel_client.py +0 -129
- package/tools/vds-scripts/excel_orchestrator/tests/test_ulnc_alignment.py +0 -373
- package/tools/vds-scripts/excel_orchestrator/tests/test_validators.py +0 -64
- package/tools/vds-scripts/excel_orchestrator/update_api_database_effort.py +0 -261
- package/tools/vds-scripts/excel_orchestrator/update_buffers_inline.py +0 -115
- package/tools/vds-scripts/excel_orchestrator/update_complex_services_and_add_new.py +0 -336
- package/tools/vds-scripts/excel_orchestrator/update_responsibility_and_fix_rows.py +0 -208
- package/tools/vds-scripts/excel_orchestrator/update_task_breakdown_vietnamese.py +0 -309
- package/tools/vds-scripts/excel_orchestrator/update_vietnamese_and_responsibility.py +0 -415
- package/tools/vds-scripts/excel_orchestrator/verify_brd_coverage_comprehensive.py +0 -401
- package/tools/vds-scripts/hexagonal_orchestrator/README.md +0 -530
- package/tools/vds-scripts/hexagonal_orchestrator/pyproject.toml +0 -48
- package/tools/vds-scripts/hexagonal_orchestrator/src/vds_hexagonal_orchestrator/__init__.py +0 -39
- package/tools/vds-scripts/hexagonal_orchestrator/src/vds_hexagonal_orchestrator/analyzers/__init__.py +0 -19
- package/tools/vds-scripts/hexagonal_orchestrator/src/vds_hexagonal_orchestrator/analyzers/base.py +0 -95
- package/tools/vds-scripts/hexagonal_orchestrator/src/vds_hexagonal_orchestrator/analyzers/fallback.py +0 -614
- package/tools/vds-scripts/hexagonal_orchestrator/src/vds_hexagonal_orchestrator/analyzers/java.py +0 -372
- package/tools/vds-scripts/hexagonal_orchestrator/src/vds_hexagonal_orchestrator/analyzers/python.py +0 -437
- package/tools/vds-scripts/hexagonal_orchestrator/src/vds_hexagonal_orchestrator/cache.py +0 -331
- package/tools/vds-scripts/hexagonal_orchestrator/src/vds_hexagonal_orchestrator/classifier.py +0 -263
- package/tools/vds-scripts/hexagonal_orchestrator/src/vds_hexagonal_orchestrator/cli.py +0 -554
- package/tools/vds-scripts/hexagonal_orchestrator/src/vds_hexagonal_orchestrator/config.py +0 -577
- package/tools/vds-scripts/hexagonal_orchestrator/src/vds_hexagonal_orchestrator/models.py +0 -159
- package/tools/vds-scripts/hexagonal_orchestrator/src/vds_hexagonal_orchestrator/profiler.py +0 -451
- package/tools/vds-scripts/hexagonal_orchestrator/test-config.yaml +0 -38
- package/tools/vds-scripts/hexagonal_orchestrator/tests/__init__.py +0 -1
- package/tools/vds-scripts/hexagonal_orchestrator/tests/fixtures/__init__.py +0 -1
- package/tools/vds-scripts/hexagonal_orchestrator/tests/fixtures/java-compliant/adapter/driven/persistence/InMemoryUserRepository.java +0 -62
- package/tools/vds-scripts/hexagonal_orchestrator/tests/fixtures/java-compliant/adapter/driving/api/UserController.java +0 -101
- package/tools/vds-scripts/hexagonal_orchestrator/tests/fixtures/java-compliant/application/port/EmailService.java +0 -33
- package/tools/vds-scripts/hexagonal_orchestrator/tests/fixtures/java-compliant/application/port/UserRepository.java +0 -45
- package/tools/vds-scripts/hexagonal_orchestrator/tests/fixtures/java-compliant/application/usecase/CreateUser.java +0 -58
- package/tools/vds-scripts/hexagonal_orchestrator/tests/fixtures/java-compliant/domain/entity/Email.java +0 -80
- package/tools/vds-scripts/hexagonal_orchestrator/tests/fixtures/java-compliant/domain/entity/User.java +0 -98
- package/tools/vds-scripts/hexagonal_orchestrator/tests/fixtures/java-noncompliant/domain/User.java +0 -64
- package/tools/vds-scripts/hexagonal_orchestrator/tests/fixtures/java-with-frameworks/domain/Menu.java +0 -13
- package/tools/vds-scripts/hexagonal_orchestrator/tests/fixtures/java-with-frameworks/domain/Product.java +0 -16
- package/tools/vds-scripts/hexagonal_orchestrator/tests/fixtures/python-compliant/__init__.py +0 -1
- package/tools/vds-scripts/hexagonal_orchestrator/tests/fixtures/python-compliant/application/__init__.py +0 -1
- package/tools/vds-scripts/hexagonal_orchestrator/tests/fixtures/python-compliant/application/ports/__init__.py +0 -1
- package/tools/vds-scripts/hexagonal_orchestrator/tests/fixtures/python-compliant/application/ports/email_service.py +0 -60
- package/tools/vds-scripts/hexagonal_orchestrator/tests/fixtures/python-compliant/application/ports/user_repository.py +0 -78
- package/tools/vds-scripts/hexagonal_orchestrator/tests/fixtures/python-compliant/domain/__init__.py +0 -1
- package/tools/vds-scripts/hexagonal_orchestrator/tests/fixtures/python-compliant/domain/entities/__init__.py +0 -1
- package/tools/vds-scripts/hexagonal_orchestrator/tests/fixtures/python-compliant/domain/entities/user.py +0 -56
- package/tools/vds-scripts/hexagonal_orchestrator/tests/fixtures/python-compliant/domain/value_objects/__init__.py +0 -1
- package/tools/vds-scripts/hexagonal_orchestrator/tests/fixtures/python-compliant/domain/value_objects/email.py +0 -63
- package/tools/vds-scripts/hexagonal_orchestrator/tests/fixtures/python-noncompliant/application/user_service.py +0 -1837
- package/tools/vds-scripts/hexagonal_orchestrator/tests/fixtures/python-noncompliant/domain/user.py +0 -43
- package/tools/vds-scripts/hexagonal_orchestrator/tests/test_cache.py +0 -458
- package/tools/vds-scripts/hexagonal_orchestrator/tests/test_cli_integration.py +0 -942
- package/tools/vds-scripts/hexagonal_orchestrator/tests/test_cli_unit.py +0 -557
- package/tools/vds-scripts/hexagonal_orchestrator/tests/test_cross_repo_pollution.py +0 -275
- package/tools/vds-scripts/hexagonal_orchestrator/tests/test_foundation.py +0 -129
- package/tools/vds-scripts/hexagonal_orchestrator/tests/test_integration.py +0 -1524
- package/tools/vds-scripts/hexagonal_orchestrator/tests/test_java_analyzer.py +0 -642
- package/tools/vds-scripts/hexagonal_orchestrator/tests/test_timing_unit.py +0 -60
- package/tools/vds-scripts/intellij_orchestrator/README.md +0 -55
- package/tools/vds-scripts/intellij_orchestrator/pyproject.toml +0 -64
- package/tools/vds-scripts/intellij_orchestrator/src/vds_intellij_orchestrator/__init__.py +0 -17
- package/tools/vds-scripts/intellij_orchestrator/src/vds_intellij_orchestrator/cli.py +0 -210
- package/tools/vds-scripts/intellij_orchestrator/src/vds_intellij_orchestrator/core.py +0 -260
- package/tools/vds-scripts/intellij_orchestrator/tests/__init__.py +0 -1
- package/tools/vds-scripts/intellij_orchestrator/tests/test_cli.py +0 -112
- package/tools/vds-scripts/intellij_orchestrator/tests/test_core.py +0 -83
- package/tools/vds-scripts/links_orchestrator/README.md +0 -63
- package/tools/vds-scripts/links_orchestrator/pyproject.toml +0 -64
- package/tools/vds-scripts/links_orchestrator/src/vds_links_orchestrator/__init__.py +0 -10
- package/tools/vds-scripts/links_orchestrator/src/vds_links_orchestrator/cli.py +0 -254
- package/tools/vds-scripts/links_orchestrator/src/vds_links_orchestrator/validator.py +0 -244
- package/tools/vds-scripts/links_orchestrator/tests/__init__.py +0 -0
- package/tools/vds-scripts/links_orchestrator/tests/test_cli.py +0 -128
- package/tools/vds-scripts/links_orchestrator/tests/test_validator.py +0 -76
- package/tools/vds-scripts/lsp_orchestrator/.dockerignore +0 -69
- package/tools/vds-scripts/lsp_orchestrator/ARCHITECTURE.md +0 -383
- package/tools/vds-scripts/lsp_orchestrator/CODE_QUALITY_IMPROVEMENTS.md +0 -196
- package/tools/vds-scripts/lsp_orchestrator/COMMANDS.md +0 -870
- package/tools/vds-scripts/lsp_orchestrator/Dockerfile +0 -59
- package/tools/vds-scripts/lsp_orchestrator/IMPLEMENTATION_SUMMARY.md +0 -490
- package/tools/vds-scripts/lsp_orchestrator/LSP_ISSUES_AND_FINDINGS.md +0 -380
- package/tools/vds-scripts/lsp_orchestrator/README.md +0 -616
- package/tools/vds-scripts/lsp_orchestrator/SETUP.md +0 -143
- package/tools/vds-scripts/lsp_orchestrator/TEST_COVERAGE_SUMMARY.md +0 -255
- package/tools/vds-scripts/lsp_orchestrator/VERIFICATION_CHECKLIST.md +0 -814
- package/tools/vds-scripts/lsp_orchestrator/docker-compose.yml +0 -102
- package/tools/vds-scripts/lsp_orchestrator/docs/FOR_LLMS.md +0 -401
- package/tools/vds-scripts/lsp_orchestrator/docs/explanation/lsp-response-matching.md +0 -79
- package/tools/vds-scripts/lsp_orchestrator/docs/how-to-guides/automate-with-json.md +0 -159
- package/tools/vds-scripts/lsp_orchestrator/docs/how-to-guides/docker-mode.md +0 -256
- package/tools/vds-scripts/lsp_orchestrator/docs/how-to-guides/navigate-code.md +0 -116
- package/tools/vds-scripts/lsp_orchestrator/docs/how-to-guides/parallel-processing.md +0 -179
- package/tools/vds-scripts/lsp_orchestrator/docs/how-to-guides/project-tool-detection.md +0 -320
- package/tools/vds-scripts/lsp_orchestrator/docs/how-to-guides/type-check-code.md +0 -46
- package/tools/vds-scripts/lsp_orchestrator/docs/how-to-guides/use-daemon-mode.md +0 -78
- package/tools/vds-scripts/lsp_orchestrator/docs/how-to-guides/wsl2-optimization.md +0 -227
- package/tools/vds-scripts/lsp_orchestrator/docs/index.md +0 -88
- package/tools/vds-scripts/lsp_orchestrator/docs/operator-hover-definition.md +0 -143
- package/tools/vds-scripts/lsp_orchestrator/docs/reference/commands.md +0 -581
- package/tools/vds-scripts/lsp_orchestrator/docs/reference/configuration.md +0 -422
- package/tools/vds-scripts/lsp_orchestrator/docs/tutorials/00-quick-start.md +0 -169
- package/tools/vds-scripts/lsp_orchestrator/pyproject.toml +0 -63
- package/tools/vds-scripts/lsp_orchestrator/src/test_file.py +0 -5
- package/tools/vds-scripts/lsp_orchestrator/src/vds_lsp_orchestrator/__init__.py +0 -3
- package/tools/vds-scripts/lsp_orchestrator/src/vds_lsp_orchestrator/aggregator.py +0 -340
- package/tools/vds-scripts/lsp_orchestrator/src/vds_lsp_orchestrator/basedpyright_runner.py +0 -167
- package/tools/vds-scripts/lsp_orchestrator/src/vds_lsp_orchestrator/cli.py +0 -3370
- package/tools/vds-scripts/lsp_orchestrator/src/vds_lsp_orchestrator/code_actions.py +0 -79
- package/tools/vds-scripts/lsp_orchestrator/src/vds_lsp_orchestrator/core.py +0 -3295
- package/tools/vds-scripts/lsp_orchestrator/src/vds_lsp_orchestrator/daemon_client.py +0 -672
- package/tools/vds-scripts/lsp_orchestrator/src/vds_lsp_orchestrator/daemon_manager.py +0 -577
- package/tools/vds-scripts/lsp_orchestrator/src/vds_lsp_orchestrator/daemon_server.py +0 -1040
- package/tools/vds-scripts/lsp_orchestrator/src/vds_lsp_orchestrator/detectors/__init__.py +0 -9
- package/tools/vds-scripts/lsp_orchestrator/src/vds_lsp_orchestrator/detectors/project_detector.py +0 -537
- package/tools/vds-scripts/lsp_orchestrator/src/vds_lsp_orchestrator/formatters.py +0 -141
- package/tools/vds-scripts/lsp_orchestrator/src/vds_lsp_orchestrator/ipc_protocol.py +0 -225
- package/tools/vds-scripts/lsp_orchestrator/src/vds_lsp_orchestrator/lsp_client.py +0 -957
- package/tools/vds-scripts/lsp_orchestrator/src/vds_lsp_orchestrator/lsp_router.py +0 -335
- package/tools/vds-scripts/lsp_orchestrator/src/vds_lsp_orchestrator/mcp_server.py +0 -181
- package/tools/vds-scripts/lsp_orchestrator/src/vds_lsp_orchestrator/models/__init__.py +0 -201
- package/tools/vds-scripts/lsp_orchestrator/src/vds_lsp_orchestrator/models/project_detector.py +0 -646
- package/tools/vds-scripts/lsp_orchestrator/src/vds_lsp_orchestrator/models/project_tools.py +0 -114
- package/tools/vds-scripts/lsp_orchestrator/src/vds_lsp_orchestrator/models.py +0 -399
- package/tools/vds-scripts/lsp_orchestrator/src/vds_lsp_orchestrator/mypy_runner.py +0 -209
- package/tools/vds-scripts/lsp_orchestrator/src/vds_lsp_orchestrator/protocols.py +0 -52
- package/tools/vds-scripts/lsp_orchestrator/src/vds_lsp_orchestrator/ruff_lsp_client.py +0 -109
- package/tools/vds-scripts/lsp_orchestrator/src/vds_lsp_orchestrator/ruff_runner.py +0 -44
- package/tools/vds-scripts/lsp_orchestrator/src/vds_lsp_orchestrator/utils.py +0 -959
- package/tools/vds-scripts/lsp_orchestrator/src/vds_lsp_orchestrator/workspace_indexer.py +0 -1037
- package/tools/vds-scripts/lsp_orchestrator/test_workspace_lsp.py +0 -6
- package/tools/vds-scripts/lsp_orchestrator/tests/__init__.py +0 -1
- package/tools/vds-scripts/lsp_orchestrator/tests/conftest.py +0 -6
- package/tools/vds-scripts/lsp_orchestrator/tests/test_aggregator.py +0 -59
- package/tools/vds-scripts/lsp_orchestrator/tests/test_cli.py +0 -111
- package/tools/vds-scripts/lsp_orchestrator/tests/test_detect_tools_command.py +0 -186
- package/tools/vds-scripts/lsp_orchestrator/tests/test_formatter_linter_detection.py +0 -519
- package/tools/vds-scripts/lsp_orchestrator/tests/test_integration_phase9_10_11.py +0 -367
- package/tools/vds-scripts/lsp_orchestrator/tests/test_mypy_runner.py +0 -482
- package/tools/vds-scripts/lsp_orchestrator/tests/test_package_manager_detection.py +0 -399
- package/tools/vds-scripts/lsp_orchestrator/tests/test_phase10.py +0 -389
- package/tools/vds-scripts/lsp_orchestrator/tests/test_phase11.py +0 -327
- package/tools/vds-scripts/lsp_orchestrator/tests/test_phase12_integration.py +0 -634
- package/tools/vds-scripts/lsp_orchestrator/tests/test_phase9.py +0 -196
- package/tools/vds-scripts/lsp_orchestrator/tests/test_project_detector.py +0 -377
- package/tools/vds-scripts/lsp_orchestrator/tests/test_test_runner_detection.py +0 -549
- package/tools/vds-scripts/lsp_orchestrator/tests/test_type_checker_routing.py +0 -362
- package/tools/vds-scripts/lsp_orchestrator/tests/test_workspace_indexer.py +0 -144
- package/tools/vds-scripts/markdown_orchestrator/README.md +0 -72
- package/tools/vds-scripts/markdown_orchestrator/pyproject.toml +0 -39
- package/tools/vds-scripts/markdown_orchestrator/src/vds_markdown_orchestrator/__init__.py +0 -5
- package/tools/vds-scripts/markdown_orchestrator/src/vds_markdown_orchestrator/cli.py +0 -102
- package/tools/vds-scripts/multi_agent_orchestrator/Dockerfile +0 -65
- package/tools/vds-scripts/multi_agent_orchestrator/README.md +0 -306
- package/tools/vds-scripts/multi_agent_orchestrator/postman/README.md +0 -264
- package/tools/vds-scripts/multi_agent_orchestrator/postman/TEST_RESULTS_SUMMARY.md +0 -197
- package/tools/vds-scripts/multi_agent_orchestrator/postman/VDS-Multi-Agent-Orchestrator-API.postman_collection.json +0 -1010
- package/tools/vds-scripts/multi_agent_orchestrator/postman/environments/local-development.postman_environment.json +0 -55
- package/tools/vds-scripts/multi_agent_orchestrator/postman/test-results.json +0 -24146
- package/tools/vds-scripts/multi_agent_orchestrator/pyproject.toml +0 -63
- package/tools/vds-scripts/multi_agent_orchestrator/run_api.py +0 -9
- package/tools/vds-scripts/multi_agent_orchestrator/run_mock_api.py +0 -9
- package/tools/vds-scripts/multi_agent_orchestrator/simple_test.py +0 -53
- package/tools/vds-scripts/multi_agent_orchestrator/src/vds_multi_agent_orchestrator/__init__.py +0 -25
- package/tools/vds-scripts/multi_agent_orchestrator/src/vds_multi_agent_orchestrator/agent_pool.py +0 -433
- package/tools/vds-scripts/multi_agent_orchestrator/src/vds_multi_agent_orchestrator/api/__init__.py +0 -5
- package/tools/vds-scripts/multi_agent_orchestrator/src/vds_multi_agent_orchestrator/api/main.py +0 -722
- package/tools/vds-scripts/multi_agent_orchestrator/src/vds_multi_agent_orchestrator/api/mock_main.py +0 -812
- package/tools/vds-scripts/multi_agent_orchestrator/src/vds_multi_agent_orchestrator/change_log.py +0 -515
- package/tools/vds-scripts/multi_agent_orchestrator/src/vds_multi_agent_orchestrator/cli.py +0 -424
- package/tools/vds-scripts/multi_agent_orchestrator/src/vds_multi_agent_orchestrator/config.py +0 -220
- package/tools/vds-scripts/multi_agent_orchestrator/src/vds_multi_agent_orchestrator/conflict_resolver.py +0 -462
- package/tools/vds-scripts/multi_agent_orchestrator/src/vds_multi_agent_orchestrator/coordinator.py +0 -627
- package/tools/vds-scripts/multi_agent_orchestrator/src/vds_multi_agent_orchestrator/models.py +0 -389
- package/tools/vds-scripts/multi_agent_orchestrator/src/vds_multi_agent_orchestrator/progress_dashboard.py +0 -380
- package/tools/vds-scripts/multi_agent_orchestrator/src/vds_multi_agent_orchestrator/redis_client.py +0 -245
- package/tools/vds-scripts/multi_agent_orchestrator/src/vds_multi_agent_orchestrator/scheduler_subscriber.py +0 -272
- package/tools/vds-scripts/multi_agent_orchestrator/src/vds_multi_agent_orchestrator/task_manager.py +0 -536
- package/tools/vds-scripts/multi_agent_orchestrator/src/vds_multi_agent_orchestrator/task_tracking.py +0 -550
- package/tools/vds-scripts/multi_agent_orchestrator/src/vds_multi_agent_orchestrator/vds_ai_memory_client.py +0 -352
- package/tools/vds-scripts/multi_agent_orchestrator/test_complete_system.py +0 -149
- package/tools/vds-scripts/multi_agent_orchestrator/test_infrastructure_only.py +0 -194
- package/tools/vds-scripts/multi_agent_orchestrator/test_integration.py +0 -108
- package/tools/vds-scripts/multi_agent_orchestrator/tests/__init__.py +0 -1
- package/tools/vds-scripts/multi_agent_orchestrator/tests/test_agent_registration_credential_validator.py +0 -223
- package/tools/vds-scripts/multi_agent_orchestrator/tests/test_config.py +0 -210
- package/tools/vds-scripts/multi_agent_orchestrator/tests/test_models.py +0 -195
- package/tools/vds-scripts/multi_agent_orchestrator/tests/test_w9_agent_routes.py +0 -321
- package/tools/vds-scripts/openapi_orchestrator/README.md +0 -197
- package/tools/vds-scripts/openapi_orchestrator/pyproject.toml +0 -106
- package/tools/vds-scripts/openapi_orchestrator/src/vds_openapi_orchestrator/__init__.py +0 -29
- package/tools/vds-scripts/openapi_orchestrator/src/vds_openapi_orchestrator/cli.py +0 -345
- package/tools/vds-scripts/openapi_orchestrator/src/vds_openapi_orchestrator/full_validator.py +0 -183
- package/tools/vds-scripts/openapi_orchestrator/src/vds_openapi_orchestrator/spec_validator.py +0 -197
- package/tools/vds-scripts/openapi_orchestrator/tests/__init__.py +0 -1
- package/tools/vds-scripts/openapi_orchestrator/tests/test_cli.py +0 -234
- package/tools/vds-scripts/openapi_orchestrator/tests/test_full_validator.py +0 -203
- package/tools/vds-scripts/openapi_orchestrator/tests/test_spec_validator.py +0 -295
- package/tools/vds-scripts/pdf_orchestrator/.dockerignore +0 -93
- package/tools/vds-scripts/pdf_orchestrator/.env.example +0 -40
- package/tools/vds-scripts/pdf_orchestrator/.ruff_rules.py +0 -350
- package/tools/vds-scripts/pdf_orchestrator/.yamllint.yml +0 -43
- package/tools/vds-scripts/pdf_orchestrator/DEVELOPMENT_PLAN.md +0 -80
- package/tools/vds-scripts/pdf_orchestrator/Dockerfile +0 -87
- package/tools/vds-scripts/pdf_orchestrator/README.md +0 -608
- package/tools/vds-scripts/pdf_orchestrator/cli_verification_test/test.md +0 -6
- package/tools/vds-scripts/pdf_orchestrator/cli_verification_test/test.pdf +0 -0
- package/tools/vds-scripts/pdf_orchestrator/config/alertmanager.yml +0 -83
- package/tools/vds-scripts/pdf_orchestrator/config/prometheus.prod.yml +0 -98
- package/tools/vds-scripts/pdf_orchestrator/config/prometheus.yml +0 -40
- package/tools/vds-scripts/pdf_orchestrator/config/redis.conf +0 -78
- package/tools/vds-scripts/pdf_orchestrator/docs/COMPETITIVE_ANALYSIS_REPORT.md +0 -309
- package/tools/vds-scripts/pdf_orchestrator/docs/FEATURES_GUIDE.md +0 -518
- package/tools/vds-scripts/pdf_orchestrator/docs/MULTI_USER_DEPLOYMENT_GUIDE.md +0 -615
- package/tools/vds-scripts/pdf_orchestrator/docs/USER_GUIDE.md +0 -829
- package/tools/vds-scripts/pdf_orchestrator/pyproject.toml +0 -87
- package/tools/vds-scripts/pdf_orchestrator/pytest.ini +0 -71
- package/tools/vds-scripts/pdf_orchestrator/ruff.toml +0 -6
- package/tools/vds-scripts/pdf_orchestrator/scripts/debug_security_report.py +0 -59
- package/tools/vds-scripts/pdf_orchestrator/scripts/demo_library_selector.py +0 -109
- package/tools/vds-scripts/pdf_orchestrator/scripts/generate_project_stats.py +0 -52
- package/tools/vds-scripts/pdf_orchestrator/scripts/generate_styled_pdf.py +0 -95
- package/tools/vds-scripts/pdf_orchestrator/scripts/migrate_render_pdfs.py +0 -285
- package/tools/vds-scripts/pdf_orchestrator/scripts/setup_team.bat +0 -283
- package/tools/vds-scripts/pdf_orchestrator/scripts/setup_team.sh +0 -324
- package/tools/vds-scripts/pdf_orchestrator/src/vds_pdf_orchestrator/__init__.py +0 -5
- package/tools/vds-scripts/pdf_orchestrator/src/vds_pdf_orchestrator/cli.py +0 -542
- package/tools/vds-scripts/pdf_orchestrator/src/vds_pdf_orchestrator/config.py +0 -33
- package/tools/vds-scripts/pdf_orchestrator/tests/README.md +0 -650
- package/tools/vds-scripts/pdf_orchestrator/tests/__init__.py +0 -0
- package/tools/vds-scripts/pdf_orchestrator/tests/conftest.py +0 -520
- package/tools/vds-scripts/pdf_orchestrator/tests/requirements.txt +0 -51
- package/tools/vds-scripts/pdf_orchestrator/tests/run_tests.py +0 -659
- package/tools/vds-scripts/pdf_orchestrator/tests/test_config.py +0 -36
- package/tools/vds-scripts/progress_report_orchestrator/Dockerfile +0 -77
- package/tools/vds-scripts/progress_report_orchestrator/README.md +0 -39
- package/tools/vds-scripts/progress_report_orchestrator/alembic/env.py +0 -42
- package/tools/vds-scripts/progress_report_orchestrator/alembic/script.py.mako +0 -28
- package/tools/vds-scripts/progress_report_orchestrator/alembic/versions/0001_initial_progress_schema.py +0 -180
- package/tools/vds-scripts/progress_report_orchestrator/alembic.ini +0 -67
- package/tools/vds-scripts/progress_report_orchestrator/pyproject.toml +0 -67
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/__init__.py +0 -3
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/analyzers/__init__.py +0 -1
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/analyzers/endpoint_scanner.py +0 -238
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/analyzers/git_activity.py +0 -159
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/analyzers/hexagonal.py +0 -100
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/analyzers/test_scanner.py +0 -136
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/cli.py +0 -743
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/config.py +0 -50
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/db/__init__.py +0 -12
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/db/alembic_filters.py +0 -64
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/memory.py +0 -82
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/models/__init__.py +0 -1
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/models/analysis.py +0 -84
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/models/report.py +0 -117
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/models/topology.py +0 -101
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/parsers/__init__.py +0 -1
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/parsers/kg_parser.py +0 -252
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/parsers/uc_reader.py +0 -159
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/pipeline/__init__.py +0 -1
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/pipeline/concurrency.py +0 -39
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/pipeline/llm_eval.py +0 -570
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/pipeline/report.py +0 -1256
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/pipeline/structural.py +0 -384
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/pipeline/sync.py +0 -143
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/recommendations/__init__.py +0 -5
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/recommendations/engine.py +0 -105
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/recommendations/templates.py +0 -236
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/scheduler_subscriber.py +0 -238
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/skills/README.md +0 -56
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/skills/__init__.py +0 -1
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/skills/srs-architecture-reviewer/SKILL.md +0 -67
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/skills/srs-endpoint-matcher/SKILL.md +0 -67
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/state/__init__.py +0 -1
- package/tools/vds-scripts/progress_report_orchestrator/src/progress_report_orchestrator/state/schema.py +0 -625
- package/tools/vds-scripts/progress_report_orchestrator/tests/__init__.py +0 -0
- package/tools/vds-scripts/progress_report_orchestrator/tests/fixtures/__init__.py +0 -0
- package/tools/vds-scripts/progress_report_orchestrator/tests/fixtures/kg/.gitkeep +0 -0
- package/tools/vds-scripts/progress_report_orchestrator/tests/fixtures/kg/__init__.py +0 -0
- package/tools/vds-scripts/progress_report_orchestrator/tests/fixtures/kg/doc-dependencies.yaml +0 -79
- package/tools/vds-scripts/progress_report_orchestrator/tests/fixtures/kg/fr-to-docs.yaml +0 -478
- package/tools/vds-scripts/progress_report_orchestrator/tests/fixtures/kg/fr-to-services.yaml +0 -18
- package/tools/vds-scripts/progress_report_orchestrator/tests/fixtures/kg/registry.yaml +0 -346
- package/tools/vds-scripts/progress_report_orchestrator/tests/fixtures/phase3_baseline_standard.md +0 -564
- package/tools/vds-scripts/progress_report_orchestrator/tests/integration/__init__.py +0 -0
- package/tools/vds-scripts/progress_report_orchestrator/tests/integration/test_checkpoint.py +0 -276
- package/tools/vds-scripts/progress_report_orchestrator/tests/test_alembic_migrations.py +0 -265
- package/tools/vds-scripts/progress_report_orchestrator/tests/unit/__init__.py +0 -0
- package/tools/vds-scripts/progress_report_orchestrator/tests/unit/test_analyzers.py +0 -267
- package/tools/vds-scripts/progress_report_orchestrator/tests/unit/test_bounded_gather.py +0 -176
- package/tools/vds-scripts/progress_report_orchestrator/tests/unit/test_cli_phase_report.py +0 -119
- package/tools/vds-scripts/progress_report_orchestrator/tests/unit/test_delta.py +0 -169
- package/tools/vds-scripts/progress_report_orchestrator/tests/unit/test_error_handling.py +0 -150
- package/tools/vds-scripts/progress_report_orchestrator/tests/unit/test_gate_exit_codes.py +0 -230
- package/tools/vds-scripts/progress_report_orchestrator/tests/unit/test_git_activity.py +0 -215
- package/tools/vds-scripts/progress_report_orchestrator/tests/unit/test_kg_parser.py +0 -267
- package/tools/vds-scripts/progress_report_orchestrator/tests/unit/test_llm_autodetect.py +0 -183
- package/tools/vds-scripts/progress_report_orchestrator/tests/unit/test_llm_eval.py +0 -529
- package/tools/vds-scripts/progress_report_orchestrator/tests/unit/test_memory_integration.py +0 -151
- package/tools/vds-scripts/progress_report_orchestrator/tests/unit/test_migration_contract.py +0 -254
- package/tools/vds-scripts/progress_report_orchestrator/tests/unit/test_mode_rendering.py +0 -576
- package/tools/vds-scripts/progress_report_orchestrator/tests/unit/test_models.py +0 -251
- package/tools/vds-scripts/progress_report_orchestrator/tests/unit/test_progress_llm_config.py +0 -67
- package/tools/vds-scripts/progress_report_orchestrator/tests/unit/test_recommendations.py +0 -480
- package/tools/vds-scripts/progress_report_orchestrator/tests/unit/test_report_enhancements.py +0 -415
- package/tools/vds-scripts/progress_report_orchestrator/tests/unit/test_resume_reload.py +0 -343
- package/tools/vds-scripts/progress_report_orchestrator/tests/unit/test_trend_regression.py +0 -294
- package/tools/vds-scripts/progress_report_orchestrator/tests/unit/test_uc_reader.py +0 -169
- package/tools/vds-scripts/progress_report_orchestrator/tests/unit/test_valence_gap.py +0 -293
- package/tools/vds-scripts/project-cycle-report.json +0 -14
- package/tools/vds-scripts/project-dependency-graph.json +0 -11361
- package/tools/vds-scripts/project-topology.json +0 -99
- package/tools/vds-scripts/public_interface_boundary_orchestrator/pyproject.toml +0 -18
- package/tools/vds-scripts/public_interface_boundary_orchestrator/src/vds_public_interface_boundary_orchestrator/__init__.py +0 -0
- package/tools/vds-scripts/public_interface_boundary_orchestrator/src/vds_public_interface_boundary_orchestrator/cli.py +0 -232
- package/tools/vds-scripts/public_interface_boundary_orchestrator/tests/__init__.py +0 -0
- package/tools/vds-scripts/public_interface_boundary_orchestrator/tests/test_cli.py +0 -108
- package/tools/vds-scripts/research_orchestrator/README.md +0 -68
- package/tools/vds-scripts/research_orchestrator/py.typed +0 -0
- package/tools/vds-scripts/research_orchestrator/pyproject.toml +0 -95
- package/tools/vds-scripts/research_orchestrator/src/vds_research_orchestrator/__init__.py +0 -3
- package/tools/vds-scripts/research_orchestrator/src/vds_research_orchestrator/_env.py +0 -11
- package/tools/vds-scripts/research_orchestrator/src/vds_research_orchestrator/cli.py +0 -335
- package/tools/vds-scripts/research_orchestrator/src/vds_research_orchestrator/config.py +0 -43
- package/tools/vds-scripts/research_orchestrator/src/vds_research_orchestrator/evidence/__init__.py +0 -0
- package/tools/vds-scripts/research_orchestrator/src/vds_research_orchestrator/evidence/models.py +0 -89
- package/tools/vds-scripts/research_orchestrator/src/vds_research_orchestrator/evidence/scoring.py +0 -102
- package/tools/vds-scripts/research_orchestrator/src/vds_research_orchestrator/exceptions.py +0 -78
- package/tools/vds-scripts/research_orchestrator/src/vds_research_orchestrator/http_client.py +0 -160
- package/tools/vds-scripts/research_orchestrator/src/vds_research_orchestrator/logging.py +0 -49
- package/tools/vds-scripts/research_orchestrator/src/vds_research_orchestrator/output/__init__.py +0 -0
- package/tools/vds-scripts/research_orchestrator/src/vds_research_orchestrator/output/formatters.py +0 -93
- package/tools/vds-scripts/research_orchestrator/src/vds_research_orchestrator/py.typed +0 -1
- package/tools/vds-scripts/research_orchestrator/src/vds_research_orchestrator/report/__init__.py +0 -0
- package/tools/vds-scripts/research_orchestrator/src/vds_research_orchestrator/report/build.py +0 -156
- package/tools/vds-scripts/research_orchestrator/src/vds_research_orchestrator/report/format.py +0 -147
- package/tools/vds-scripts/research_orchestrator/src/vds_research_orchestrator/tools/__init__.py +0 -0
- package/tools/vds-scripts/research_orchestrator/src/vds_research_orchestrator/tools/health.py +0 -66
- package/tools/vds-scripts/research_orchestrator/src/vds_research_orchestrator/tools/health_graph.py +0 -52
- package/tools/vds-scripts/research_orchestrator/src/vds_research_orchestrator/tools/registry.py +0 -127
- package/tools/vds-scripts/research_orchestrator/src/vds_research_orchestrator/tools/search.py +0 -230
- package/tools/vds-scripts/research_orchestrator/tests/__init__.py +0 -0
- package/tools/vds-scripts/research_orchestrator/tests/conftest.py +0 -53
- package/tools/vds-scripts/research_orchestrator/tests/test_cli.py +0 -222
- package/tools/vds-scripts/research_orchestrator/tests/test_config.py +0 -23
- package/tools/vds-scripts/research_orchestrator/tests/test_exceptions.py +0 -62
- package/tools/vds-scripts/research_orchestrator/tests/test_formatters.py +0 -89
- package/tools/vds-scripts/research_orchestrator/tests/test_graph_integration.py +0 -149
- package/tools/vds-scripts/research_orchestrator/tests/test_http_client.py +0 -134
- package/tools/vds-scripts/research_orchestrator/tests/test_report_build.py +0 -128
- package/tools/vds-scripts/research_orchestrator/tests/test_report_format.py +0 -91
- package/tools/vds-scripts/research_orchestrator/tests/test_scoring.py +0 -95
- package/tools/vds-scripts/research_orchestrator/tests/vds_research_orchestrator/test_tools/__init__.py +0 -1
- package/tools/vds-scripts/research_orchestrator/tests/vds_research_orchestrator/test_tools/test_health.py +0 -139
- package/tools/vds-scripts/research_orchestrator/tests/vds_research_orchestrator/test_tools/test_registry.py +0 -135
- package/tools/vds-scripts/research_orchestrator/tests/vds_research_orchestrator/test_tools/test_search.py +0 -238
- package/tools/vds-scripts/run-history.json +0 -26
- package/tools/vds-scripts/schema_converter/README.md +0 -109
- package/tools/vds-scripts/schema_converter/pyproject.toml +0 -37
- package/tools/vds-scripts/schema_converter/src/vds_schema_converter/__init__.py +0 -3
- package/tools/vds-scripts/schema_converter/src/vds_schema_converter/cli.py +0 -50
- package/tools/vds-scripts/schema_converter/tests/__init__.py +0 -0
- package/tools/vds-scripts/schema_converter/tests/test_json_schema_generator.py +0 -115
- package/tools/vds-scripts/schema_converter/tests/test_mermaid_generator.py +0 -112
- package/tools/vds-scripts/schema_converter/tests/test_parser.py +0 -111
- package/tools/vds-scripts/schema_converter/tests/test_plantuml_generator.py +0 -112
- package/tools/vds-scripts/schema_converter/tests/test_plantuml_validator.py +0 -69
- package/tools/vds-scripts/schema_converter/tests/test_prisma_generator.py +0 -113
- package/tools/vds-scripts/schema_converter/tests/test_sql_generator.py +0 -138
- package/tools/vds-scripts/schema_converter/tests/test_typeorm_generator.py +0 -110
- package/tools/vds-scripts/schema_converter/tests/test_validators.py +0 -96
- package/tools/vds-scripts/spec_orchestrator/README.md +0 -13
- package/tools/vds-scripts/spec_orchestrator/pyproject.toml +0 -40
- package/tools/vds-scripts/spec_orchestrator/src/vds_spec_orchestrator/__init__.py +0 -5
- package/tools/vds-scripts/spec_orchestrator/src/vds_spec_orchestrator/cli.py +0 -162
- package/tools/vds-scripts/spec_orchestrator/src/vds_spec_orchestrator/core.py +0 -575
- package/tools/vds-scripts/spec_orchestrator/src/vds_spec_orchestrator/sync.py +0 -306
- package/tools/vds-scripts/spec_orchestrator/tests/__init__.py +0 -0
- package/tools/vds-scripts/spec_orchestrator/tests/test_frontmatter_drift.py +0 -243
- package/tools/vds-scripts/spec_orchestrator/tests/test_sync.py +0 -342
- package/tools/vds-scripts/structure_orchestrator/README.md +0 -60
- package/tools/vds-scripts/structure_orchestrator/pyproject.toml +0 -103
- package/tools/vds-scripts/structure_orchestrator/src/vds_structure_orchestrator/__init__.py +0 -13
- package/tools/vds-scripts/structure_orchestrator/src/vds_structure_orchestrator/cli.py +0 -308
- package/tools/vds-scripts/structure_orchestrator/src/vds_structure_orchestrator/validator.py +0 -257
- package/tools/vds-scripts/structure_orchestrator/tests/__init__.py +0 -0
- package/tools/vds-scripts/structure_orchestrator/tests/test_cli.py +0 -161
- package/tools/vds-scripts/structure_orchestrator/tests/test_helpers.py +0 -115
- package/tools/vds-scripts/structure_orchestrator/tests/test_validator.py +0 -104
- package/tools/vds-scripts/task_orchestrator/README.md +0 -50
- package/tools/vds-scripts/task_orchestrator/__init__.py +0 -18
- package/tools/vds-scripts/task_orchestrator/pyproject.toml +0 -43
- package/tools/vds-scripts/task_orchestrator/scripts/run_excel_sync.py +0 -36
- package/tools/vds-scripts/task_orchestrator/src/vds_task_orchestrator/__init__.py +0 -13
- package/tools/vds-scripts/task_orchestrator/src/vds_task_orchestrator/audit.py +0 -134
- package/tools/vds-scripts/task_orchestrator/src/vds_task_orchestrator/cli.py +0 -127
- package/tools/vds-scripts/task_orchestrator/src/vds_task_orchestrator/debug.py +0 -133
- package/tools/vds-scripts/task_orchestrator/src/vds_task_orchestrator/normalize.py +0 -113
- package/tools/vds-scripts/task_orchestrator/src/vds_task_orchestrator/refine.py +0 -201
- package/tools/vds-scripts/task_orchestrator/tests/__init__.py +0 -0
- package/tools/vds-scripts/task_orchestrator/tests/test_task_orchestrator.py +0 -84
- package/tools/vds-scripts/temp_query_projects.py +0 -2
- package/tools/vds-scripts/test_small.md +0 -1
- package/tools/vds-scripts/text_utils_orchestrator/pyproject.toml +0 -20
- package/tools/vds-scripts/text_utils_orchestrator/src/vds_text_utils/__init__.py +0 -7
- package/tools/vds-scripts/text_utils_orchestrator/src/vds_text_utils/i18n.py +0 -143
- package/tools/vds-scripts/text_utils_orchestrator/tests/__init__.py +0 -0
- package/tools/vds-scripts/text_utils_orchestrator/tests/test_i18n.py +0 -53
- package/tools/vds-scripts/upgrade_major.py +0 -61
- package/tools/vds-scripts/upgrade_major_v2.py +0 -64
- package/tools/vds-scripts/verify_violations.py +0 -57
- package/tools/vds-scripts/workflow-summary.json +0 -325
- package/tools/vds-scripts/workflow-summary.md +0 -8
|
@@ -1,1796 +0,0 @@
|
|
|
1
|
-
"""Unit tests for Dynamic Task Models (Phase 11).
|
|
2
|
-
|
|
3
|
-
Tests for TaskStatus, TaskPriority enums and AuditTask, TaskQueue models
|
|
4
|
-
for multi-agent orchestration.
|
|
5
|
-
|
|
6
|
-
Reference: design.md Section 9 (Dynamic Task Orchestration)
|
|
7
|
-
Reference: requirements.md Phase 11
|
|
8
|
-
"""
|
|
9
|
-
|
|
10
|
-
from __future__ import annotations
|
|
11
|
-
|
|
12
|
-
import time
|
|
13
|
-
|
|
14
|
-
import pytest
|
|
15
|
-
from vds_audit_orchestrator.models.task import (
|
|
16
|
-
AuditTask,
|
|
17
|
-
TaskPriority,
|
|
18
|
-
TaskQueue,
|
|
19
|
-
TaskStatus,
|
|
20
|
-
)
|
|
21
|
-
|
|
22
|
-
# =============================================================================
|
|
23
|
-
# TaskStatus Enum Tests
|
|
24
|
-
# =============================================================================
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
class TestTaskStatus:
|
|
28
|
-
"""Tests for TaskStatus enum."""
|
|
29
|
-
|
|
30
|
-
def test_all_status_values_exist(self) -> None:
|
|
31
|
-
"""Verify all required status values are defined."""
|
|
32
|
-
assert TaskStatus.PENDING.value == "pending"
|
|
33
|
-
assert TaskStatus.RUNNING.value == "running"
|
|
34
|
-
assert TaskStatus.COMPLETED.value == "completed"
|
|
35
|
-
assert TaskStatus.FAILED.value == "failed"
|
|
36
|
-
assert TaskStatus.BLOCKED.value == "blocked"
|
|
37
|
-
assert TaskStatus.SKIPPED.value == "skipped"
|
|
38
|
-
|
|
39
|
-
def test_status_is_string_enum(self) -> None:
|
|
40
|
-
"""Verify TaskStatus inherits from str for JSON serialization."""
|
|
41
|
-
assert isinstance(TaskStatus.PENDING, str)
|
|
42
|
-
assert TaskStatus.PENDING == "pending"
|
|
43
|
-
|
|
44
|
-
def test_status_count(self) -> None:
|
|
45
|
-
"""Verify correct number of status values."""
|
|
46
|
-
assert len(TaskStatus) == 6
|
|
47
|
-
|
|
48
|
-
def test_status_comparison(self) -> None:
|
|
49
|
-
"""Test TaskStatus values can be compared as strings."""
|
|
50
|
-
assert TaskStatus.PENDING == "pending"
|
|
51
|
-
assert TaskStatus.RUNNING != "pending"
|
|
52
|
-
|
|
53
|
-
def test_status_iteration(self) -> None:
|
|
54
|
-
"""Test we can iterate over all statuses."""
|
|
55
|
-
statuses = list(TaskStatus)
|
|
56
|
-
assert len(statuses) == 6
|
|
57
|
-
assert TaskStatus.PENDING in statuses
|
|
58
|
-
assert TaskStatus.COMPLETED in statuses
|
|
59
|
-
|
|
60
|
-
def test_status_from_value(self) -> None:
|
|
61
|
-
"""Test creating status from string value."""
|
|
62
|
-
assert TaskStatus("pending") == TaskStatus.PENDING
|
|
63
|
-
assert TaskStatus("completed") == TaskStatus.COMPLETED
|
|
64
|
-
|
|
65
|
-
def test_invalid_status_raises_error(self) -> None:
|
|
66
|
-
"""Test invalid status value raises ValueError."""
|
|
67
|
-
with pytest.raises(ValueError):
|
|
68
|
-
TaskStatus("invalid_status")
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
# =============================================================================
|
|
72
|
-
# TaskPriority Enum Tests
|
|
73
|
-
# =============================================================================
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
class TestTaskPriority:
|
|
77
|
-
"""Tests for TaskPriority enum."""
|
|
78
|
-
|
|
79
|
-
def test_all_priority_values_exist(self) -> None:
|
|
80
|
-
"""Verify all required priority values are defined."""
|
|
81
|
-
assert TaskPriority.CRITICAL.value == 10
|
|
82
|
-
assert TaskPriority.HIGH.value == 50
|
|
83
|
-
assert TaskPriority.NORMAL.value == 100
|
|
84
|
-
assert TaskPriority.LOW.value == 200
|
|
85
|
-
assert TaskPriority.BACKGROUND.value == 500
|
|
86
|
-
|
|
87
|
-
def test_priority_is_int_enum(self) -> None:
|
|
88
|
-
"""Verify TaskPriority inherits from int."""
|
|
89
|
-
assert isinstance(TaskPriority.CRITICAL, int)
|
|
90
|
-
assert TaskPriority.CRITICAL == 10
|
|
91
|
-
|
|
92
|
-
def test_priority_count(self) -> None:
|
|
93
|
-
"""Verify correct number of priority values."""
|
|
94
|
-
assert len(TaskPriority) == 5
|
|
95
|
-
|
|
96
|
-
def test_priority_ordering(self) -> None:
|
|
97
|
-
"""Test priority ordering (lower value = higher priority)."""
|
|
98
|
-
assert TaskPriority.CRITICAL < TaskPriority.HIGH
|
|
99
|
-
assert TaskPriority.HIGH < TaskPriority.NORMAL
|
|
100
|
-
assert TaskPriority.NORMAL < TaskPriority.LOW
|
|
101
|
-
assert TaskPriority.LOW < TaskPriority.BACKGROUND
|
|
102
|
-
|
|
103
|
-
def test_priority_comparison(self) -> None:
|
|
104
|
-
"""Test TaskPriority values can be compared as integers."""
|
|
105
|
-
assert TaskPriority.CRITICAL < TaskPriority.NORMAL
|
|
106
|
-
assert TaskPriority.BACKGROUND > TaskPriority.HIGH
|
|
107
|
-
|
|
108
|
-
def test_priority_arithmetic(self) -> None:
|
|
109
|
-
"""Test TaskPriority values support arithmetic operations."""
|
|
110
|
-
assert TaskPriority.CRITICAL + 40 == TaskPriority.HIGH
|
|
111
|
-
assert TaskPriority.NORMAL - TaskPriority.HIGH == 50
|
|
112
|
-
|
|
113
|
-
def test_priority_from_value(self) -> None:
|
|
114
|
-
"""Test creating priority from int value."""
|
|
115
|
-
assert TaskPriority(10) == TaskPriority.CRITICAL
|
|
116
|
-
assert TaskPriority(100) == TaskPriority.NORMAL
|
|
117
|
-
|
|
118
|
-
def test_invalid_priority_raises_error(self) -> None:
|
|
119
|
-
"""Test invalid priority value raises ValueError."""
|
|
120
|
-
with pytest.raises(ValueError):
|
|
121
|
-
TaskPriority(999)
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
# =============================================================================
|
|
125
|
-
# AuditTask Model Tests
|
|
126
|
-
# =============================================================================
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
class TestAuditTaskCreation:
|
|
130
|
-
"""Tests for AuditTask model creation and defaults."""
|
|
131
|
-
|
|
132
|
-
def test_create_task_with_required_fields(self) -> None:
|
|
133
|
-
"""Test creating task with only required fields."""
|
|
134
|
-
task = AuditTask(
|
|
135
|
-
type="code_analysis",
|
|
136
|
-
description="Analyze code quality",
|
|
137
|
-
assignee="CodeAnalysisAgent",
|
|
138
|
-
)
|
|
139
|
-
assert task.type == "code_analysis"
|
|
140
|
-
assert task.description == "Analyze code quality"
|
|
141
|
-
assert task.assignee == "CodeAnalysisAgent"
|
|
142
|
-
|
|
143
|
-
def test_task_has_auto_generated_id(self) -> None:
|
|
144
|
-
"""Test task ID is auto-generated if not provided."""
|
|
145
|
-
task = AuditTask(
|
|
146
|
-
type="test_task",
|
|
147
|
-
description="Test description",
|
|
148
|
-
assignee="TestAgent",
|
|
149
|
-
)
|
|
150
|
-
assert task.id is not None
|
|
151
|
-
assert task.id.startswith("task-")
|
|
152
|
-
assert len(task.id) == 13 # "task-" + 8 hex chars
|
|
153
|
-
|
|
154
|
-
def test_task_with_custom_id(self) -> None:
|
|
155
|
-
"""Test task can be created with custom ID."""
|
|
156
|
-
task = AuditTask(
|
|
157
|
-
id="custom-task-001",
|
|
158
|
-
type="test_task",
|
|
159
|
-
description="Test description",
|
|
160
|
-
assignee="TestAgent",
|
|
161
|
-
)
|
|
162
|
-
assert task.id == "custom-task-001"
|
|
163
|
-
|
|
164
|
-
def test_task_default_status_is_pending(self) -> None:
|
|
165
|
-
"""Test default status is PENDING."""
|
|
166
|
-
task = AuditTask(
|
|
167
|
-
type="test_task",
|
|
168
|
-
description="Test description",
|
|
169
|
-
assignee="TestAgent",
|
|
170
|
-
)
|
|
171
|
-
assert task.status == TaskStatus.PENDING
|
|
172
|
-
|
|
173
|
-
def test_task_default_priority_is_normal(self) -> None:
|
|
174
|
-
"""Test default priority is NORMAL (100)."""
|
|
175
|
-
task = AuditTask(
|
|
176
|
-
type="test_task",
|
|
177
|
-
description="Test description",
|
|
178
|
-
assignee="TestAgent",
|
|
179
|
-
)
|
|
180
|
-
assert task.priority == TaskPriority.NORMAL.value
|
|
181
|
-
|
|
182
|
-
def test_task_default_dependencies_empty(self) -> None:
|
|
183
|
-
"""Test default dependencies is empty list."""
|
|
184
|
-
task = AuditTask(
|
|
185
|
-
type="test_task",
|
|
186
|
-
description="Test description",
|
|
187
|
-
assignee="TestAgent",
|
|
188
|
-
)
|
|
189
|
-
assert task.dependencies == []
|
|
190
|
-
|
|
191
|
-
def test_task_default_input_data_empty(self) -> None:
|
|
192
|
-
"""Test default input_data is empty dict."""
|
|
193
|
-
task = AuditTask(
|
|
194
|
-
type="test_task",
|
|
195
|
-
description="Test description",
|
|
196
|
-
assignee="TestAgent",
|
|
197
|
-
)
|
|
198
|
-
assert task.input_data == {}
|
|
199
|
-
|
|
200
|
-
def test_task_default_output_data_none(self) -> None:
|
|
201
|
-
"""Test default output_data is None."""
|
|
202
|
-
task = AuditTask(
|
|
203
|
-
type="test_task",
|
|
204
|
-
description="Test description",
|
|
205
|
-
assignee="TestAgent",
|
|
206
|
-
)
|
|
207
|
-
assert task.output_data is None
|
|
208
|
-
|
|
209
|
-
def test_task_default_error_none(self) -> None:
|
|
210
|
-
"""Test default error is None."""
|
|
211
|
-
task = AuditTask(
|
|
212
|
-
type="test_task",
|
|
213
|
-
description="Test description",
|
|
214
|
-
assignee="TestAgent",
|
|
215
|
-
)
|
|
216
|
-
assert task.error is None
|
|
217
|
-
|
|
218
|
-
def test_task_created_at_is_set(self) -> None:
|
|
219
|
-
"""Test created_at is set to current time."""
|
|
220
|
-
before = time.time()
|
|
221
|
-
task = AuditTask(
|
|
222
|
-
type="test_task",
|
|
223
|
-
description="Test description",
|
|
224
|
-
assignee="TestAgent",
|
|
225
|
-
)
|
|
226
|
-
after = time.time()
|
|
227
|
-
assert before <= task.created_at <= after
|
|
228
|
-
|
|
229
|
-
def test_task_timestamps_initially_none(self) -> None:
|
|
230
|
-
"""Test started_at and completed_at are initially None."""
|
|
231
|
-
task = AuditTask(
|
|
232
|
-
type="test_task",
|
|
233
|
-
description="Test description",
|
|
234
|
-
assignee="TestAgent",
|
|
235
|
-
)
|
|
236
|
-
assert task.started_at is None
|
|
237
|
-
assert task.completed_at is None
|
|
238
|
-
|
|
239
|
-
def test_task_default_created_by_system(self) -> None:
|
|
240
|
-
"""Test default created_by is 'system'."""
|
|
241
|
-
task = AuditTask(
|
|
242
|
-
type="test_task",
|
|
243
|
-
description="Test description",
|
|
244
|
-
assignee="TestAgent",
|
|
245
|
-
)
|
|
246
|
-
assert task.created_by == "system"
|
|
247
|
-
|
|
248
|
-
def test_task_default_tags_empty(self) -> None:
|
|
249
|
-
"""Test default tags is empty list."""
|
|
250
|
-
task = AuditTask(
|
|
251
|
-
type="test_task",
|
|
252
|
-
description="Test description",
|
|
253
|
-
assignee="TestAgent",
|
|
254
|
-
)
|
|
255
|
-
assert task.tags == []
|
|
256
|
-
|
|
257
|
-
def test_task_default_retry_count_zero(self) -> None:
|
|
258
|
-
"""Test default retry_count is 0."""
|
|
259
|
-
task = AuditTask(
|
|
260
|
-
type="test_task",
|
|
261
|
-
description="Test description",
|
|
262
|
-
assignee="TestAgent",
|
|
263
|
-
)
|
|
264
|
-
assert task.retry_count == 0
|
|
265
|
-
|
|
266
|
-
def test_task_default_max_retries_three(self) -> None:
|
|
267
|
-
"""Test default max_retries is 3."""
|
|
268
|
-
task = AuditTask(
|
|
269
|
-
type="test_task",
|
|
270
|
-
description="Test description",
|
|
271
|
-
assignee="TestAgent",
|
|
272
|
-
)
|
|
273
|
-
assert task.max_retries == 3
|
|
274
|
-
|
|
275
|
-
def test_task_with_all_fields(self) -> None:
|
|
276
|
-
"""Test creating task with all fields specified."""
|
|
277
|
-
task = AuditTask(
|
|
278
|
-
id="full-task-001",
|
|
279
|
-
type="security_scan",
|
|
280
|
-
description="Full security scan",
|
|
281
|
-
assignee="SecurityAgent",
|
|
282
|
-
status=TaskStatus.PENDING,
|
|
283
|
-
dependencies=["dep-001", "dep-002"],
|
|
284
|
-
priority=TaskPriority.HIGH.value,
|
|
285
|
-
input_data={"target": "src/main.py"},
|
|
286
|
-
created_by="OrchestratorAgent",
|
|
287
|
-
tags=["security", "scan"],
|
|
288
|
-
max_retries=5,
|
|
289
|
-
)
|
|
290
|
-
assert task.id == "full-task-001"
|
|
291
|
-
assert task.type == "security_scan"
|
|
292
|
-
assert task.dependencies == ["dep-001", "dep-002"]
|
|
293
|
-
assert task.priority == 50
|
|
294
|
-
assert task.input_data == {"target": "src/main.py"}
|
|
295
|
-
assert task.created_by == "OrchestratorAgent"
|
|
296
|
-
assert task.tags == ["security", "scan"]
|
|
297
|
-
assert task.max_retries == 5
|
|
298
|
-
|
|
299
|
-
def test_task_priority_validation_min(self) -> None:
|
|
300
|
-
"""Test priority must be >= 1."""
|
|
301
|
-
with pytest.raises(ValueError):
|
|
302
|
-
AuditTask(
|
|
303
|
-
type="test_task",
|
|
304
|
-
description="Test",
|
|
305
|
-
assignee="Agent",
|
|
306
|
-
priority=0,
|
|
307
|
-
)
|
|
308
|
-
|
|
309
|
-
def test_task_priority_validation_max(self) -> None:
|
|
310
|
-
"""Test priority must be <= 1000."""
|
|
311
|
-
with pytest.raises(ValueError):
|
|
312
|
-
AuditTask(
|
|
313
|
-
type="test_task",
|
|
314
|
-
description="Test",
|
|
315
|
-
assignee="Agent",
|
|
316
|
-
priority=1001,
|
|
317
|
-
)
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
# =============================================================================
|
|
321
|
-
# AuditTask Computed Properties Tests
|
|
322
|
-
# =============================================================================
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
class TestAuditTaskComputedProperties:
|
|
326
|
-
"""Tests for AuditTask computed properties."""
|
|
327
|
-
|
|
328
|
-
@pytest.fixture
|
|
329
|
-
def pending_task(self) -> AuditTask:
|
|
330
|
-
"""Create a pending task for testing."""
|
|
331
|
-
return AuditTask(
|
|
332
|
-
type="test_task",
|
|
333
|
-
description="Test description",
|
|
334
|
-
assignee="TestAgent",
|
|
335
|
-
)
|
|
336
|
-
|
|
337
|
-
@pytest.fixture
|
|
338
|
-
def pending_task_with_deps(self) -> AuditTask:
|
|
339
|
-
"""Create a pending task with dependencies."""
|
|
340
|
-
return AuditTask(
|
|
341
|
-
type="test_task",
|
|
342
|
-
description="Test description",
|
|
343
|
-
assignee="TestAgent",
|
|
344
|
-
dependencies=["dep-001", "dep-002"],
|
|
345
|
-
)
|
|
346
|
-
|
|
347
|
-
@pytest.fixture
|
|
348
|
-
def running_task(self) -> AuditTask:
|
|
349
|
-
"""Create a running task for testing."""
|
|
350
|
-
task = AuditTask(
|
|
351
|
-
type="test_task",
|
|
352
|
-
description="Test description",
|
|
353
|
-
assignee="TestAgent",
|
|
354
|
-
)
|
|
355
|
-
task.start()
|
|
356
|
-
return task
|
|
357
|
-
|
|
358
|
-
@pytest.fixture
|
|
359
|
-
def completed_task(self) -> AuditTask:
|
|
360
|
-
"""Create a completed task for testing."""
|
|
361
|
-
task = AuditTask(
|
|
362
|
-
type="test_task",
|
|
363
|
-
description="Test description",
|
|
364
|
-
assignee="TestAgent",
|
|
365
|
-
)
|
|
366
|
-
task.start()
|
|
367
|
-
task.complete({"result": "success"})
|
|
368
|
-
return task
|
|
369
|
-
|
|
370
|
-
@pytest.fixture
|
|
371
|
-
def failed_task(self) -> AuditTask:
|
|
372
|
-
"""Create a failed task for testing."""
|
|
373
|
-
task = AuditTask(
|
|
374
|
-
type="test_task",
|
|
375
|
-
description="Test description",
|
|
376
|
-
assignee="TestAgent",
|
|
377
|
-
)
|
|
378
|
-
task.start()
|
|
379
|
-
task.fail("Something went wrong")
|
|
380
|
-
return task
|
|
381
|
-
|
|
382
|
-
# is_runnable tests
|
|
383
|
-
def test_is_runnable_pending_no_deps(self, pending_task: AuditTask) -> None:
|
|
384
|
-
"""Test is_runnable is True for pending task without dependencies."""
|
|
385
|
-
assert pending_task.is_runnable is True
|
|
386
|
-
|
|
387
|
-
def test_is_runnable_pending_with_deps(self, pending_task_with_deps: AuditTask) -> None:
|
|
388
|
-
"""Test is_runnable is False for pending task with dependencies."""
|
|
389
|
-
assert pending_task_with_deps.is_runnable is False
|
|
390
|
-
|
|
391
|
-
def test_is_runnable_running(self, running_task: AuditTask) -> None:
|
|
392
|
-
"""Test is_runnable is False for running task."""
|
|
393
|
-
assert running_task.is_runnable is False
|
|
394
|
-
|
|
395
|
-
def test_is_runnable_completed(self, completed_task: AuditTask) -> None:
|
|
396
|
-
"""Test is_runnable is False for completed task."""
|
|
397
|
-
assert completed_task.is_runnable is False
|
|
398
|
-
|
|
399
|
-
def test_is_runnable_failed(self, failed_task: AuditTask) -> None:
|
|
400
|
-
"""Test is_runnable is False for failed task."""
|
|
401
|
-
assert failed_task.is_runnable is False
|
|
402
|
-
|
|
403
|
-
# is_terminal tests
|
|
404
|
-
def test_is_terminal_pending(self, pending_task: AuditTask) -> None:
|
|
405
|
-
"""Test is_terminal is False for pending task."""
|
|
406
|
-
assert pending_task.is_terminal is False
|
|
407
|
-
|
|
408
|
-
def test_is_terminal_running(self, running_task: AuditTask) -> None:
|
|
409
|
-
"""Test is_terminal is False for running task."""
|
|
410
|
-
assert running_task.is_terminal is False
|
|
411
|
-
|
|
412
|
-
def test_is_terminal_completed(self, completed_task: AuditTask) -> None:
|
|
413
|
-
"""Test is_terminal is True for completed task."""
|
|
414
|
-
assert completed_task.is_terminal is True
|
|
415
|
-
|
|
416
|
-
def test_is_terminal_failed(self, failed_task: AuditTask) -> None:
|
|
417
|
-
"""Test is_terminal is True for failed task."""
|
|
418
|
-
assert failed_task.is_terminal is True
|
|
419
|
-
|
|
420
|
-
def test_is_terminal_skipped(self) -> None:
|
|
421
|
-
"""Test is_terminal is True for skipped task."""
|
|
422
|
-
task = AuditTask(
|
|
423
|
-
type="test_task",
|
|
424
|
-
description="Test",
|
|
425
|
-
assignee="Agent",
|
|
426
|
-
)
|
|
427
|
-
task.skip("Not applicable")
|
|
428
|
-
assert task.is_terminal is True
|
|
429
|
-
|
|
430
|
-
def test_is_terminal_blocked(self) -> None:
|
|
431
|
-
"""Test is_terminal is False for blocked task."""
|
|
432
|
-
task = AuditTask(
|
|
433
|
-
type="test_task",
|
|
434
|
-
description="Test",
|
|
435
|
-
assignee="Agent",
|
|
436
|
-
)
|
|
437
|
-
task.block(["blocker-001"])
|
|
438
|
-
assert task.is_terminal is False
|
|
439
|
-
|
|
440
|
-
# duration_seconds tests
|
|
441
|
-
def test_duration_seconds_not_started(self, pending_task: AuditTask) -> None:
|
|
442
|
-
"""Test duration_seconds is None for unstarted task."""
|
|
443
|
-
assert pending_task.duration_seconds is None
|
|
444
|
-
|
|
445
|
-
def test_duration_seconds_running(self, running_task: AuditTask) -> None:
|
|
446
|
-
"""Test duration_seconds is calculated for running task."""
|
|
447
|
-
time.sleep(0.01) # Small delay
|
|
448
|
-
duration = running_task.duration_seconds
|
|
449
|
-
assert duration is not None
|
|
450
|
-
assert duration >= 0.01
|
|
451
|
-
|
|
452
|
-
def test_duration_seconds_completed(self, completed_task: AuditTask) -> None:
|
|
453
|
-
"""Test duration_seconds is calculated for completed task."""
|
|
454
|
-
duration = completed_task.duration_seconds
|
|
455
|
-
assert duration is not None
|
|
456
|
-
assert duration >= 0
|
|
457
|
-
|
|
458
|
-
def test_duration_seconds_precision(self) -> None:
|
|
459
|
-
"""Test duration_seconds has millisecond precision (3 decimal places)."""
|
|
460
|
-
task = AuditTask(
|
|
461
|
-
type="test_task",
|
|
462
|
-
description="Test",
|
|
463
|
-
assignee="Agent",
|
|
464
|
-
)
|
|
465
|
-
task.start()
|
|
466
|
-
time.sleep(0.0123) # ~12.3ms
|
|
467
|
-
task.complete()
|
|
468
|
-
duration = task.duration_seconds
|
|
469
|
-
assert duration is not None
|
|
470
|
-
# Check it's rounded to 3 decimal places
|
|
471
|
-
assert duration == round(duration, 3)
|
|
472
|
-
|
|
473
|
-
# can_retry tests
|
|
474
|
-
def test_can_retry_pending(self, pending_task: AuditTask) -> None:
|
|
475
|
-
"""Test can_retry is False for pending task."""
|
|
476
|
-
assert pending_task.can_retry is False
|
|
477
|
-
|
|
478
|
-
def test_can_retry_running(self, running_task: AuditTask) -> None:
|
|
479
|
-
"""Test can_retry is False for running task."""
|
|
480
|
-
assert running_task.can_retry is False
|
|
481
|
-
|
|
482
|
-
def test_can_retry_completed(self, completed_task: AuditTask) -> None:
|
|
483
|
-
"""Test can_retry is False for completed task."""
|
|
484
|
-
assert completed_task.can_retry is False
|
|
485
|
-
|
|
486
|
-
def test_can_retry_failed_with_retries_left(self, failed_task: AuditTask) -> None:
|
|
487
|
-
"""Test can_retry is True for failed task with retries remaining."""
|
|
488
|
-
assert failed_task.retry_count == 0
|
|
489
|
-
assert failed_task.max_retries == 3
|
|
490
|
-
assert failed_task.can_retry is True
|
|
491
|
-
|
|
492
|
-
def test_can_retry_failed_max_retries_reached(self) -> None:
|
|
493
|
-
"""Test can_retry is False when max retries reached."""
|
|
494
|
-
task = AuditTask(
|
|
495
|
-
type="test_task",
|
|
496
|
-
description="Test",
|
|
497
|
-
assignee="Agent",
|
|
498
|
-
max_retries=2,
|
|
499
|
-
)
|
|
500
|
-
task.start()
|
|
501
|
-
task.fail("Error 1")
|
|
502
|
-
assert task.can_retry is True
|
|
503
|
-
|
|
504
|
-
task.retry()
|
|
505
|
-
task.start()
|
|
506
|
-
task.fail("Error 2")
|
|
507
|
-
assert task.can_retry is True
|
|
508
|
-
|
|
509
|
-
task.retry()
|
|
510
|
-
task.start()
|
|
511
|
-
task.fail("Error 3")
|
|
512
|
-
assert task.can_retry is False
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
# =============================================================================
|
|
516
|
-
# AuditTask State Transition Tests
|
|
517
|
-
# =============================================================================
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
class TestAuditTaskStateTransitions:
|
|
521
|
-
"""Tests for AuditTask state transition methods."""
|
|
522
|
-
|
|
523
|
-
@pytest.fixture
|
|
524
|
-
def fresh_task(self) -> AuditTask:
|
|
525
|
-
"""Create a fresh task for testing state transitions."""
|
|
526
|
-
return AuditTask(
|
|
527
|
-
type="test_task",
|
|
528
|
-
description="Test description",
|
|
529
|
-
assignee="TestAgent",
|
|
530
|
-
)
|
|
531
|
-
|
|
532
|
-
# start() tests
|
|
533
|
-
def test_start_from_pending(self, fresh_task: AuditTask) -> None:
|
|
534
|
-
"""Test starting a pending task."""
|
|
535
|
-
before = time.time()
|
|
536
|
-
fresh_task.start()
|
|
537
|
-
after = time.time()
|
|
538
|
-
|
|
539
|
-
assert fresh_task.status == TaskStatus.RUNNING
|
|
540
|
-
assert fresh_task.started_at is not None
|
|
541
|
-
assert before <= fresh_task.started_at <= after
|
|
542
|
-
|
|
543
|
-
def test_start_from_running_raises_error(self, fresh_task: AuditTask) -> None:
|
|
544
|
-
"""Test starting an already running task raises ValueError."""
|
|
545
|
-
fresh_task.start()
|
|
546
|
-
with pytest.raises(ValueError, match="Cannot start task in running status"):
|
|
547
|
-
fresh_task.start()
|
|
548
|
-
|
|
549
|
-
def test_start_from_completed_raises_error(self, fresh_task: AuditTask) -> None:
|
|
550
|
-
"""Test starting a completed task raises ValueError."""
|
|
551
|
-
fresh_task.start()
|
|
552
|
-
fresh_task.complete()
|
|
553
|
-
with pytest.raises(ValueError, match="Cannot start task in completed status"):
|
|
554
|
-
fresh_task.start()
|
|
555
|
-
|
|
556
|
-
def test_start_from_failed_raises_error(self, fresh_task: AuditTask) -> None:
|
|
557
|
-
"""Test starting a failed task raises ValueError."""
|
|
558
|
-
fresh_task.start()
|
|
559
|
-
fresh_task.fail("Error")
|
|
560
|
-
with pytest.raises(ValueError, match="Cannot start task in failed status"):
|
|
561
|
-
fresh_task.start()
|
|
562
|
-
|
|
563
|
-
def test_start_from_blocked_raises_error(self, fresh_task: AuditTask) -> None:
|
|
564
|
-
"""Test starting a blocked task raises ValueError."""
|
|
565
|
-
fresh_task.block(["blocker"])
|
|
566
|
-
with pytest.raises(ValueError, match="Cannot start task in blocked status"):
|
|
567
|
-
fresh_task.start()
|
|
568
|
-
|
|
569
|
-
def test_start_from_skipped_raises_error(self, fresh_task: AuditTask) -> None:
|
|
570
|
-
"""Test starting a skipped task raises ValueError."""
|
|
571
|
-
fresh_task.skip()
|
|
572
|
-
with pytest.raises(ValueError, match="Cannot start task in skipped status"):
|
|
573
|
-
fresh_task.start()
|
|
574
|
-
|
|
575
|
-
# complete() tests
|
|
576
|
-
def test_complete_from_running(self, fresh_task: AuditTask) -> None:
|
|
577
|
-
"""Test completing a running task."""
|
|
578
|
-
fresh_task.start()
|
|
579
|
-
before = time.time()
|
|
580
|
-
fresh_task.complete()
|
|
581
|
-
after = time.time()
|
|
582
|
-
|
|
583
|
-
assert fresh_task.status == TaskStatus.COMPLETED
|
|
584
|
-
assert fresh_task.completed_at is not None
|
|
585
|
-
assert before <= fresh_task.completed_at <= after
|
|
586
|
-
|
|
587
|
-
def test_complete_with_output(self, fresh_task: AuditTask) -> None:
|
|
588
|
-
"""Test completing a task with output data."""
|
|
589
|
-
fresh_task.start()
|
|
590
|
-
output = {"findings": ["issue1", "issue2"], "score": 85}
|
|
591
|
-
fresh_task.complete(output)
|
|
592
|
-
|
|
593
|
-
assert fresh_task.status == TaskStatus.COMPLETED
|
|
594
|
-
assert fresh_task.output_data == output
|
|
595
|
-
|
|
596
|
-
def test_complete_without_output(self, fresh_task: AuditTask) -> None:
|
|
597
|
-
"""Test completing a task without output data."""
|
|
598
|
-
fresh_task.start()
|
|
599
|
-
fresh_task.complete()
|
|
600
|
-
|
|
601
|
-
assert fresh_task.status == TaskStatus.COMPLETED
|
|
602
|
-
assert fresh_task.output_data is None
|
|
603
|
-
|
|
604
|
-
def test_complete_from_pending_raises_error(self, fresh_task: AuditTask) -> None:
|
|
605
|
-
"""Test completing a pending task raises ValueError."""
|
|
606
|
-
with pytest.raises(ValueError, match="Cannot complete task in pending status"):
|
|
607
|
-
fresh_task.complete()
|
|
608
|
-
|
|
609
|
-
def test_complete_from_completed_raises_error(self, fresh_task: AuditTask) -> None:
|
|
610
|
-
"""Test completing an already completed task raises ValueError."""
|
|
611
|
-
fresh_task.start()
|
|
612
|
-
fresh_task.complete()
|
|
613
|
-
with pytest.raises(ValueError, match="Cannot complete task in completed status"):
|
|
614
|
-
fresh_task.complete()
|
|
615
|
-
|
|
616
|
-
def test_complete_from_failed_raises_error(self, fresh_task: AuditTask) -> None:
|
|
617
|
-
"""Test completing a failed task raises ValueError."""
|
|
618
|
-
fresh_task.start()
|
|
619
|
-
fresh_task.fail("Error")
|
|
620
|
-
with pytest.raises(ValueError, match="Cannot complete task in failed status"):
|
|
621
|
-
fresh_task.complete()
|
|
622
|
-
|
|
623
|
-
# fail() tests
|
|
624
|
-
def test_fail_from_running(self, fresh_task: AuditTask) -> None:
|
|
625
|
-
"""Test failing a running task."""
|
|
626
|
-
fresh_task.start()
|
|
627
|
-
before = time.time()
|
|
628
|
-
fresh_task.fail("Connection timeout")
|
|
629
|
-
after = time.time()
|
|
630
|
-
|
|
631
|
-
assert fresh_task.status == TaskStatus.FAILED
|
|
632
|
-
assert fresh_task.completed_at is not None
|
|
633
|
-
assert before <= fresh_task.completed_at <= after
|
|
634
|
-
assert fresh_task.error == "Connection timeout"
|
|
635
|
-
|
|
636
|
-
def test_fail_from_pending_raises_error(self, fresh_task: AuditTask) -> None:
|
|
637
|
-
"""Test failing a pending task raises ValueError."""
|
|
638
|
-
with pytest.raises(ValueError, match="Cannot fail task in pending status"):
|
|
639
|
-
fresh_task.fail("Error")
|
|
640
|
-
|
|
641
|
-
def test_fail_from_completed_raises_error(self, fresh_task: AuditTask) -> None:
|
|
642
|
-
"""Test failing a completed task raises ValueError."""
|
|
643
|
-
fresh_task.start()
|
|
644
|
-
fresh_task.complete()
|
|
645
|
-
with pytest.raises(ValueError, match="Cannot fail task in completed status"):
|
|
646
|
-
fresh_task.fail("Error")
|
|
647
|
-
|
|
648
|
-
def test_fail_from_failed_raises_error(self, fresh_task: AuditTask) -> None:
|
|
649
|
-
"""Test failing an already failed task raises ValueError."""
|
|
650
|
-
fresh_task.start()
|
|
651
|
-
fresh_task.fail("Error 1")
|
|
652
|
-
with pytest.raises(ValueError, match="Cannot fail task in failed status"):
|
|
653
|
-
fresh_task.fail("Error 2")
|
|
654
|
-
|
|
655
|
-
# skip() tests
|
|
656
|
-
def test_skip_sets_status(self, fresh_task: AuditTask) -> None:
|
|
657
|
-
"""Test skipping a task sets status to SKIPPED."""
|
|
658
|
-
fresh_task.skip()
|
|
659
|
-
assert fresh_task.status == TaskStatus.SKIPPED
|
|
660
|
-
|
|
661
|
-
def test_skip_sets_completed_at(self, fresh_task: AuditTask) -> None:
|
|
662
|
-
"""Test skipping a task sets completed_at."""
|
|
663
|
-
before = time.time()
|
|
664
|
-
fresh_task.skip()
|
|
665
|
-
after = time.time()
|
|
666
|
-
|
|
667
|
-
assert fresh_task.completed_at is not None
|
|
668
|
-
assert before <= fresh_task.completed_at <= after
|
|
669
|
-
|
|
670
|
-
def test_skip_with_reason(self, fresh_task: AuditTask) -> None:
|
|
671
|
-
"""Test skipping a task with a reason."""
|
|
672
|
-
fresh_task.skip("Not applicable for this project type")
|
|
673
|
-
assert fresh_task.error == "Skipped: Not applicable for this project type"
|
|
674
|
-
|
|
675
|
-
def test_skip_without_reason(self, fresh_task: AuditTask) -> None:
|
|
676
|
-
"""Test skipping a task without a reason."""
|
|
677
|
-
fresh_task.skip()
|
|
678
|
-
assert fresh_task.error is None
|
|
679
|
-
|
|
680
|
-
def test_skip_from_any_status(self, fresh_task: AuditTask) -> None:
|
|
681
|
-
"""Test skip can be called from any status (flexible)."""
|
|
682
|
-
# Skip from pending
|
|
683
|
-
task1 = AuditTask(type="t", description="d", assignee="a")
|
|
684
|
-
task1.skip()
|
|
685
|
-
assert task1.status == TaskStatus.SKIPPED
|
|
686
|
-
|
|
687
|
-
# Skip from running
|
|
688
|
-
task2 = AuditTask(type="t", description="d", assignee="a")
|
|
689
|
-
task2.start()
|
|
690
|
-
task2.skip()
|
|
691
|
-
assert task2.status == TaskStatus.SKIPPED
|
|
692
|
-
|
|
693
|
-
# block() tests
|
|
694
|
-
def test_block_sets_status(self, fresh_task: AuditTask) -> None:
|
|
695
|
-
"""Test blocking a task sets status to BLOCKED."""
|
|
696
|
-
fresh_task.block(["blocker-001"])
|
|
697
|
-
assert fresh_task.status == TaskStatus.BLOCKED
|
|
698
|
-
|
|
699
|
-
def test_block_sets_dependencies(self, fresh_task: AuditTask) -> None:
|
|
700
|
-
"""Test blocking a task sets dependencies."""
|
|
701
|
-
blockers = ["blocker-001", "blocker-002"]
|
|
702
|
-
fresh_task.block(blockers)
|
|
703
|
-
assert fresh_task.dependencies == blockers
|
|
704
|
-
|
|
705
|
-
def test_block_replaces_dependencies(self, fresh_task: AuditTask) -> None:
|
|
706
|
-
"""Test blocking replaces existing dependencies."""
|
|
707
|
-
task = AuditTask(
|
|
708
|
-
type="test",
|
|
709
|
-
description="test",
|
|
710
|
-
assignee="Agent",
|
|
711
|
-
dependencies=["old-dep"],
|
|
712
|
-
)
|
|
713
|
-
task.block(["new-blocker"])
|
|
714
|
-
assert task.dependencies == ["new-blocker"]
|
|
715
|
-
|
|
716
|
-
# unblock() tests
|
|
717
|
-
def test_unblock_removes_dependency(self, fresh_task: AuditTask) -> None:
|
|
718
|
-
"""Test unblocking removes the specified dependency."""
|
|
719
|
-
fresh_task.block(["blocker-001", "blocker-002"])
|
|
720
|
-
fresh_task.unblock("blocker-001")
|
|
721
|
-
assert fresh_task.dependencies == ["blocker-002"]
|
|
722
|
-
|
|
723
|
-
def test_unblock_last_dependency_changes_status(self, fresh_task: AuditTask) -> None:
|
|
724
|
-
"""Test unblocking last dependency changes status to PENDING."""
|
|
725
|
-
fresh_task.block(["blocker-001"])
|
|
726
|
-
fresh_task.unblock("blocker-001")
|
|
727
|
-
assert fresh_task.dependencies == []
|
|
728
|
-
assert fresh_task.status == TaskStatus.PENDING
|
|
729
|
-
|
|
730
|
-
def test_unblock_not_last_dependency_keeps_blocked(self, fresh_task: AuditTask) -> None:
|
|
731
|
-
"""Test unblocking non-last dependency keeps status BLOCKED."""
|
|
732
|
-
fresh_task.block(["blocker-001", "blocker-002"])
|
|
733
|
-
fresh_task.unblock("blocker-001")
|
|
734
|
-
assert fresh_task.status == TaskStatus.BLOCKED
|
|
735
|
-
|
|
736
|
-
def test_unblock_nonexistent_dependency(self, fresh_task: AuditTask) -> None:
|
|
737
|
-
"""Test unblocking nonexistent dependency is a no-op."""
|
|
738
|
-
fresh_task.block(["blocker-001"])
|
|
739
|
-
fresh_task.unblock("nonexistent")
|
|
740
|
-
assert fresh_task.dependencies == ["blocker-001"]
|
|
741
|
-
assert fresh_task.status == TaskStatus.BLOCKED
|
|
742
|
-
|
|
743
|
-
def test_unblock_on_pending_task(self, fresh_task: AuditTask) -> None:
|
|
744
|
-
"""Test unblocking on pending task (edge case)."""
|
|
745
|
-
fresh_task.dependencies = ["dep-001"]
|
|
746
|
-
fresh_task.unblock("dep-001")
|
|
747
|
-
assert fresh_task.dependencies == []
|
|
748
|
-
# Status stays PENDING (was never BLOCKED)
|
|
749
|
-
assert fresh_task.status == TaskStatus.PENDING
|
|
750
|
-
|
|
751
|
-
# retry() tests
|
|
752
|
-
def test_retry_resets_task(self, fresh_task: AuditTask) -> None:
|
|
753
|
-
"""Test retry resets a failed task to pending."""
|
|
754
|
-
fresh_task.start()
|
|
755
|
-
fresh_task.fail("Error")
|
|
756
|
-
result = fresh_task.retry()
|
|
757
|
-
|
|
758
|
-
assert result is True
|
|
759
|
-
assert fresh_task.status == TaskStatus.PENDING
|
|
760
|
-
assert fresh_task.retry_count == 1
|
|
761
|
-
assert fresh_task.error is None
|
|
762
|
-
assert fresh_task.started_at is None
|
|
763
|
-
assert fresh_task.completed_at is None
|
|
764
|
-
|
|
765
|
-
def test_retry_increments_count(self, fresh_task: AuditTask) -> None:
|
|
766
|
-
"""Test retry increments retry_count."""
|
|
767
|
-
for i in range(3):
|
|
768
|
-
fresh_task.start()
|
|
769
|
-
fresh_task.fail(f"Error {i}")
|
|
770
|
-
fresh_task.retry()
|
|
771
|
-
assert fresh_task.retry_count == i + 1
|
|
772
|
-
|
|
773
|
-
def test_retry_returns_false_when_max_reached(self) -> None:
|
|
774
|
-
"""Test retry returns False when max retries reached."""
|
|
775
|
-
task = AuditTask(
|
|
776
|
-
type="test",
|
|
777
|
-
description="test",
|
|
778
|
-
assignee="Agent",
|
|
779
|
-
max_retries=1,
|
|
780
|
-
)
|
|
781
|
-
task.start()
|
|
782
|
-
task.fail("Error 1")
|
|
783
|
-
assert task.retry() is True
|
|
784
|
-
|
|
785
|
-
task.start()
|
|
786
|
-
task.fail("Error 2")
|
|
787
|
-
assert task.retry() is False
|
|
788
|
-
|
|
789
|
-
def test_retry_from_pending_raises_error(self, fresh_task: AuditTask) -> None:
|
|
790
|
-
"""Test retry from pending raises ValueError."""
|
|
791
|
-
with pytest.raises(ValueError, match="Cannot retry task in pending status"):
|
|
792
|
-
fresh_task.retry()
|
|
793
|
-
|
|
794
|
-
def test_retry_from_running_raises_error(self, fresh_task: AuditTask) -> None:
|
|
795
|
-
"""Test retry from running raises ValueError."""
|
|
796
|
-
fresh_task.start()
|
|
797
|
-
with pytest.raises(ValueError, match="Cannot retry task in running status"):
|
|
798
|
-
fresh_task.retry()
|
|
799
|
-
|
|
800
|
-
def test_retry_from_completed_raises_error(self, fresh_task: AuditTask) -> None:
|
|
801
|
-
"""Test retry from completed raises ValueError."""
|
|
802
|
-
fresh_task.start()
|
|
803
|
-
fresh_task.complete()
|
|
804
|
-
with pytest.raises(ValueError, match="Cannot retry task in completed status"):
|
|
805
|
-
fresh_task.retry()
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
# =============================================================================
|
|
809
|
-
# AuditTask Serialization Tests
|
|
810
|
-
# =============================================================================
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
class TestAuditTaskSerialization:
|
|
814
|
-
"""Tests for AuditTask serialization."""
|
|
815
|
-
|
|
816
|
-
def test_model_dump(self) -> None:
|
|
817
|
-
"""Test task can be serialized to dict."""
|
|
818
|
-
task = AuditTask(
|
|
819
|
-
id="task-001",
|
|
820
|
-
type="code_analysis",
|
|
821
|
-
description="Analyze code",
|
|
822
|
-
assignee="CodeAgent",
|
|
823
|
-
priority=TaskPriority.HIGH.value,
|
|
824
|
-
tags=["code", "analysis"],
|
|
825
|
-
)
|
|
826
|
-
data = task.model_dump()
|
|
827
|
-
|
|
828
|
-
assert data["id"] == "task-001"
|
|
829
|
-
assert data["type"] == "code_analysis"
|
|
830
|
-
assert data["status"] == "pending" # enum value
|
|
831
|
-
assert data["priority"] == 50
|
|
832
|
-
assert data["tags"] == ["code", "analysis"]
|
|
833
|
-
assert "is_runnable" in data
|
|
834
|
-
assert "is_terminal" in data
|
|
835
|
-
|
|
836
|
-
def test_model_dump_excludes_none(self) -> None:
|
|
837
|
-
"""Test model_dump can exclude None values."""
|
|
838
|
-
task = AuditTask(
|
|
839
|
-
type="test",
|
|
840
|
-
description="test",
|
|
841
|
-
assignee="Agent",
|
|
842
|
-
)
|
|
843
|
-
data = task.model_dump(exclude_none=True)
|
|
844
|
-
|
|
845
|
-
assert "output_data" not in data
|
|
846
|
-
assert "error" not in data
|
|
847
|
-
assert "started_at" not in data
|
|
848
|
-
assert "completed_at" not in data
|
|
849
|
-
|
|
850
|
-
def test_json_serialization(self) -> None:
|
|
851
|
-
"""Test task can be serialized to JSON."""
|
|
852
|
-
import json
|
|
853
|
-
|
|
854
|
-
task = AuditTask(
|
|
855
|
-
id="task-001",
|
|
856
|
-
type="code_analysis",
|
|
857
|
-
description="Analyze code",
|
|
858
|
-
assignee="CodeAgent",
|
|
859
|
-
)
|
|
860
|
-
json_str = task.model_dump_json()
|
|
861
|
-
parsed = json.loads(json_str)
|
|
862
|
-
|
|
863
|
-
assert parsed["id"] == "task-001"
|
|
864
|
-
assert parsed["type"] == "code_analysis"
|
|
865
|
-
assert parsed["status"] == "pending"
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
# =============================================================================
|
|
869
|
-
# TaskQueue Model Tests
|
|
870
|
-
# =============================================================================
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
class TestTaskQueueCreation:
|
|
874
|
-
"""Tests for TaskQueue model creation."""
|
|
875
|
-
|
|
876
|
-
def test_create_empty_queue(self) -> None:
|
|
877
|
-
"""Test creating an empty task queue."""
|
|
878
|
-
queue = TaskQueue()
|
|
879
|
-
assert queue.tasks == {}
|
|
880
|
-
assert queue.active_workers == {}
|
|
881
|
-
|
|
882
|
-
def test_queue_initial_counts(self) -> None:
|
|
883
|
-
"""Test initial counts are zero."""
|
|
884
|
-
queue = TaskQueue()
|
|
885
|
-
assert queue.pending_count == 0
|
|
886
|
-
assert queue.running_count == 0
|
|
887
|
-
assert queue.completed_count == 0
|
|
888
|
-
assert queue.failed_count == 0
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
class TestTaskQueueAddGetTask:
|
|
892
|
-
"""Tests for TaskQueue add_task and get_task methods."""
|
|
893
|
-
|
|
894
|
-
@pytest.fixture
|
|
895
|
-
def queue(self) -> TaskQueue:
|
|
896
|
-
"""Create an empty task queue."""
|
|
897
|
-
return TaskQueue()
|
|
898
|
-
|
|
899
|
-
@pytest.fixture
|
|
900
|
-
def sample_task(self) -> AuditTask:
|
|
901
|
-
"""Create a sample task."""
|
|
902
|
-
return AuditTask(
|
|
903
|
-
id="task-001",
|
|
904
|
-
type="code_analysis",
|
|
905
|
-
description="Analyze code",
|
|
906
|
-
assignee="CodeAgent",
|
|
907
|
-
)
|
|
908
|
-
|
|
909
|
-
def test_add_task(self, queue: TaskQueue, sample_task: AuditTask) -> None:
|
|
910
|
-
"""Test adding a task to the queue."""
|
|
911
|
-
task_id = queue.add_task(sample_task)
|
|
912
|
-
assert task_id == "task-001"
|
|
913
|
-
assert "task-001" in queue.tasks
|
|
914
|
-
|
|
915
|
-
def test_add_task_returns_id(self, queue: TaskQueue, sample_task: AuditTask) -> None:
|
|
916
|
-
"""Test add_task returns the task ID."""
|
|
917
|
-
task_id = queue.add_task(sample_task)
|
|
918
|
-
assert task_id == sample_task.id
|
|
919
|
-
|
|
920
|
-
def test_add_duplicate_task_raises_error(self, queue: TaskQueue, sample_task: AuditTask) -> None:
|
|
921
|
-
"""Test adding duplicate task raises ValueError."""
|
|
922
|
-
queue.add_task(sample_task)
|
|
923
|
-
with pytest.raises(ValueError, match="Task task-001 already exists"):
|
|
924
|
-
queue.add_task(sample_task)
|
|
925
|
-
|
|
926
|
-
def test_get_task_existing(self, queue: TaskQueue, sample_task: AuditTask) -> None:
|
|
927
|
-
"""Test getting an existing task."""
|
|
928
|
-
queue.add_task(sample_task)
|
|
929
|
-
task = queue.get_task("task-001")
|
|
930
|
-
assert task is not None
|
|
931
|
-
assert task.id == "task-001"
|
|
932
|
-
assert task.type == "code_analysis"
|
|
933
|
-
|
|
934
|
-
def test_get_task_nonexistent(self, queue: TaskQueue) -> None:
|
|
935
|
-
"""Test getting a nonexistent task returns None."""
|
|
936
|
-
task = queue.get_task("nonexistent")
|
|
937
|
-
assert task is None
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
class TestTaskQueueRunnableTasks:
|
|
941
|
-
"""Tests for TaskQueue get_runnable_tasks method."""
|
|
942
|
-
|
|
943
|
-
@pytest.fixture
|
|
944
|
-
def queue_with_tasks(self) -> TaskQueue:
|
|
945
|
-
"""Create a queue with various tasks for testing."""
|
|
946
|
-
queue = TaskQueue()
|
|
947
|
-
|
|
948
|
-
# Task with no dependencies (runnable)
|
|
949
|
-
queue.add_task(
|
|
950
|
-
AuditTask(
|
|
951
|
-
id="task-001",
|
|
952
|
-
type="init",
|
|
953
|
-
description="Initialize",
|
|
954
|
-
assignee="Agent",
|
|
955
|
-
priority=TaskPriority.NORMAL.value,
|
|
956
|
-
)
|
|
957
|
-
)
|
|
958
|
-
|
|
959
|
-
# Task with dependency on task-001 (not runnable until 001 completes)
|
|
960
|
-
queue.add_task(
|
|
961
|
-
AuditTask(
|
|
962
|
-
id="task-002",
|
|
963
|
-
type="analyze",
|
|
964
|
-
description="Analyze",
|
|
965
|
-
assignee="Agent",
|
|
966
|
-
dependencies=["task-001"],
|
|
967
|
-
priority=TaskPriority.HIGH.value,
|
|
968
|
-
)
|
|
969
|
-
)
|
|
970
|
-
|
|
971
|
-
# Another task with no dependencies (runnable, higher priority)
|
|
972
|
-
queue.add_task(
|
|
973
|
-
AuditTask(
|
|
974
|
-
id="task-003",
|
|
975
|
-
type="scan",
|
|
976
|
-
description="Scan",
|
|
977
|
-
assignee="Agent",
|
|
978
|
-
priority=TaskPriority.CRITICAL.value,
|
|
979
|
-
)
|
|
980
|
-
)
|
|
981
|
-
|
|
982
|
-
return queue
|
|
983
|
-
|
|
984
|
-
def test_get_runnable_tasks_excludes_deps(self, queue_with_tasks: TaskQueue) -> None:
|
|
985
|
-
"""Test get_runnable_tasks excludes tasks with unmet dependencies."""
|
|
986
|
-
runnable = queue_with_tasks.get_runnable_tasks()
|
|
987
|
-
runnable_ids = [t.id for t in runnable]
|
|
988
|
-
|
|
989
|
-
assert "task-001" in runnable_ids
|
|
990
|
-
assert "task-003" in runnable_ids
|
|
991
|
-
assert "task-002" not in runnable_ids
|
|
992
|
-
|
|
993
|
-
def test_get_runnable_tasks_sorted_by_priority(self, queue_with_tasks: TaskQueue) -> None:
|
|
994
|
-
"""Test get_runnable_tasks returns tasks sorted by priority."""
|
|
995
|
-
runnable = queue_with_tasks.get_runnable_tasks()
|
|
996
|
-
|
|
997
|
-
# task-003 (CRITICAL=10) should come before task-001 (NORMAL=100)
|
|
998
|
-
assert runnable[0].id == "task-003"
|
|
999
|
-
assert runnable[1].id == "task-001"
|
|
1000
|
-
|
|
1001
|
-
def test_get_runnable_tasks_after_dependency_completes(self, queue_with_tasks: TaskQueue) -> None:
|
|
1002
|
-
"""Test task becomes runnable after dependency completes."""
|
|
1003
|
-
# Initially task-002 is not runnable
|
|
1004
|
-
runnable = queue_with_tasks.get_runnable_tasks()
|
|
1005
|
-
assert "task-002" not in [t.id for t in runnable]
|
|
1006
|
-
|
|
1007
|
-
# Start and complete task-001 (must start before completing)
|
|
1008
|
-
queue_with_tasks.assign_task("task-001", "Worker1")
|
|
1009
|
-
queue_with_tasks.complete_task("task-001")
|
|
1010
|
-
|
|
1011
|
-
# Now task-002 should be runnable
|
|
1012
|
-
runnable = queue_with_tasks.get_runnable_tasks()
|
|
1013
|
-
assert "task-002" in [t.id for t in runnable]
|
|
1014
|
-
|
|
1015
|
-
def test_get_runnable_tasks_empty_queue(self) -> None:
|
|
1016
|
-
"""Test get_runnable_tasks on empty queue."""
|
|
1017
|
-
queue = TaskQueue()
|
|
1018
|
-
runnable = queue.get_runnable_tasks()
|
|
1019
|
-
assert runnable == []
|
|
1020
|
-
|
|
1021
|
-
def test_get_runnable_tasks_excludes_running(self) -> None:
|
|
1022
|
-
"""Test get_runnable_tasks excludes running tasks."""
|
|
1023
|
-
queue = TaskQueue()
|
|
1024
|
-
task = AuditTask(
|
|
1025
|
-
id="task-001",
|
|
1026
|
-
type="test",
|
|
1027
|
-
description="test",
|
|
1028
|
-
assignee="Agent",
|
|
1029
|
-
)
|
|
1030
|
-
queue.add_task(task)
|
|
1031
|
-
|
|
1032
|
-
# Before starting
|
|
1033
|
-
runnable = queue.get_runnable_tasks()
|
|
1034
|
-
assert len(runnable) == 1
|
|
1035
|
-
|
|
1036
|
-
# Start the task
|
|
1037
|
-
task.start()
|
|
1038
|
-
|
|
1039
|
-
# After starting
|
|
1040
|
-
runnable = queue.get_runnable_tasks()
|
|
1041
|
-
assert len(runnable) == 0
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
class TestTaskQueueAssignTask:
|
|
1045
|
-
"""Tests for TaskQueue assign_task method."""
|
|
1046
|
-
|
|
1047
|
-
@pytest.fixture
|
|
1048
|
-
def queue_with_runnable_task(self) -> TaskQueue:
|
|
1049
|
-
"""Create a queue with a runnable task."""
|
|
1050
|
-
queue = TaskQueue()
|
|
1051
|
-
queue.add_task(
|
|
1052
|
-
AuditTask(
|
|
1053
|
-
id="task-001",
|
|
1054
|
-
type="test",
|
|
1055
|
-
description="test",
|
|
1056
|
-
assignee="Agent",
|
|
1057
|
-
)
|
|
1058
|
-
)
|
|
1059
|
-
return queue
|
|
1060
|
-
|
|
1061
|
-
def test_assign_task_success(self, queue_with_runnable_task: TaskQueue) -> None:
|
|
1062
|
-
"""Test successfully assigning a task."""
|
|
1063
|
-
result = queue_with_runnable_task.assign_task("task-001", "WorkerAgent")
|
|
1064
|
-
|
|
1065
|
-
assert result is True
|
|
1066
|
-
task = queue_with_runnable_task.get_task("task-001")
|
|
1067
|
-
assert task is not None
|
|
1068
|
-
assert task.status == TaskStatus.RUNNING
|
|
1069
|
-
assert queue_with_runnable_task.active_workers["WorkerAgent"] == "task-001"
|
|
1070
|
-
|
|
1071
|
-
def test_assign_task_nonexistent(self) -> None:
|
|
1072
|
-
"""Test assigning nonexistent task returns False."""
|
|
1073
|
-
queue = TaskQueue()
|
|
1074
|
-
result = queue.assign_task("nonexistent", "Agent")
|
|
1075
|
-
assert result is False
|
|
1076
|
-
|
|
1077
|
-
def test_assign_task_not_runnable(self) -> None:
|
|
1078
|
-
"""Test assigning non-runnable task returns False."""
|
|
1079
|
-
queue = TaskQueue()
|
|
1080
|
-
task = AuditTask(
|
|
1081
|
-
id="task-001",
|
|
1082
|
-
type="test",
|
|
1083
|
-
description="test",
|
|
1084
|
-
assignee="Agent",
|
|
1085
|
-
dependencies=["blocker"],
|
|
1086
|
-
)
|
|
1087
|
-
queue.add_task(task)
|
|
1088
|
-
|
|
1089
|
-
result = queue.assign_task("task-001", "WorkerAgent")
|
|
1090
|
-
assert result is False
|
|
1091
|
-
|
|
1092
|
-
def test_assign_task_agent_already_busy(self, queue_with_runnable_task: TaskQueue) -> None:
|
|
1093
|
-
"""Test assigning to agent already working returns False."""
|
|
1094
|
-
# Add another task
|
|
1095
|
-
queue_with_runnable_task.add_task(
|
|
1096
|
-
AuditTask(
|
|
1097
|
-
id="task-002",
|
|
1098
|
-
type="test",
|
|
1099
|
-
description="test",
|
|
1100
|
-
assignee="Agent",
|
|
1101
|
-
)
|
|
1102
|
-
)
|
|
1103
|
-
|
|
1104
|
-
# Assign first task
|
|
1105
|
-
queue_with_runnable_task.assign_task("task-001", "WorkerAgent")
|
|
1106
|
-
|
|
1107
|
-
# Try to assign second task to same agent
|
|
1108
|
-
result = queue_with_runnable_task.assign_task("task-002", "WorkerAgent")
|
|
1109
|
-
assert result is False
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
class TestTaskQueueCompleteTask:
|
|
1113
|
-
"""Tests for TaskQueue complete_task method."""
|
|
1114
|
-
|
|
1115
|
-
@pytest.fixture
|
|
1116
|
-
def queue_with_chain(self) -> TaskQueue:
|
|
1117
|
-
"""Create a queue with task dependency chain."""
|
|
1118
|
-
queue = TaskQueue()
|
|
1119
|
-
|
|
1120
|
-
queue.add_task(
|
|
1121
|
-
AuditTask(
|
|
1122
|
-
id="task-001",
|
|
1123
|
-
type="first",
|
|
1124
|
-
description="First task",
|
|
1125
|
-
assignee="Agent",
|
|
1126
|
-
)
|
|
1127
|
-
)
|
|
1128
|
-
queue.add_task(
|
|
1129
|
-
AuditTask(
|
|
1130
|
-
id="task-002",
|
|
1131
|
-
type="second",
|
|
1132
|
-
description="Second task",
|
|
1133
|
-
assignee="Agent",
|
|
1134
|
-
dependencies=["task-001"],
|
|
1135
|
-
)
|
|
1136
|
-
)
|
|
1137
|
-
queue.add_task(
|
|
1138
|
-
AuditTask(
|
|
1139
|
-
id="task-003",
|
|
1140
|
-
type="third",
|
|
1141
|
-
description="Third task",
|
|
1142
|
-
assignee="Agent",
|
|
1143
|
-
dependencies=["task-001"],
|
|
1144
|
-
)
|
|
1145
|
-
)
|
|
1146
|
-
|
|
1147
|
-
# Start task-001
|
|
1148
|
-
queue.assign_task("task-001", "Worker1")
|
|
1149
|
-
return queue
|
|
1150
|
-
|
|
1151
|
-
def test_complete_task_success(self, queue_with_chain: TaskQueue) -> None:
|
|
1152
|
-
"""Test completing a task updates status."""
|
|
1153
|
-
queue_with_chain.complete_task("task-001", {"result": "done"})
|
|
1154
|
-
|
|
1155
|
-
task = queue_with_chain.get_task("task-001")
|
|
1156
|
-
assert task is not None
|
|
1157
|
-
assert task.status == TaskStatus.COMPLETED
|
|
1158
|
-
assert task.output_data == {"result": "done"}
|
|
1159
|
-
|
|
1160
|
-
def test_complete_task_removes_from_active_workers(self, queue_with_chain: TaskQueue) -> None:
|
|
1161
|
-
"""Test completing task removes agent from active_workers."""
|
|
1162
|
-
assert "Worker1" in queue_with_chain.active_workers
|
|
1163
|
-
|
|
1164
|
-
queue_with_chain.complete_task("task-001")
|
|
1165
|
-
|
|
1166
|
-
assert "Worker1" not in queue_with_chain.active_workers
|
|
1167
|
-
|
|
1168
|
-
def test_complete_task_unblocks_dependents(self, queue_with_chain: TaskQueue) -> None:
|
|
1169
|
-
"""Test completing task unblocks dependent tasks."""
|
|
1170
|
-
unblocked = queue_with_chain.complete_task("task-001")
|
|
1171
|
-
|
|
1172
|
-
# Both task-002 and task-003 depend on task-001
|
|
1173
|
-
assert "task-002" in unblocked
|
|
1174
|
-
assert "task-003" in unblocked
|
|
1175
|
-
|
|
1176
|
-
# They should now be runnable
|
|
1177
|
-
task2 = queue_with_chain.get_task("task-002")
|
|
1178
|
-
task3 = queue_with_chain.get_task("task-003")
|
|
1179
|
-
assert task2 is not None
|
|
1180
|
-
assert task3 is not None
|
|
1181
|
-
assert task2.dependencies == []
|
|
1182
|
-
assert task3.dependencies == []
|
|
1183
|
-
|
|
1184
|
-
def test_complete_task_nonexistent(self) -> None:
|
|
1185
|
-
"""Test completing nonexistent task returns empty list."""
|
|
1186
|
-
queue = TaskQueue()
|
|
1187
|
-
unblocked = queue.complete_task("nonexistent")
|
|
1188
|
-
assert unblocked == []
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
class TestTaskQueueFailTask:
|
|
1192
|
-
"""Tests for TaskQueue fail_task method."""
|
|
1193
|
-
|
|
1194
|
-
@pytest.fixture
|
|
1195
|
-
def queue_with_running_task(self) -> TaskQueue:
|
|
1196
|
-
"""Create a queue with a running task."""
|
|
1197
|
-
queue = TaskQueue()
|
|
1198
|
-
task = AuditTask(
|
|
1199
|
-
id="task-001",
|
|
1200
|
-
type="test",
|
|
1201
|
-
description="test",
|
|
1202
|
-
assignee="Agent",
|
|
1203
|
-
)
|
|
1204
|
-
queue.add_task(task)
|
|
1205
|
-
queue.assign_task("task-001", "Worker1")
|
|
1206
|
-
return queue
|
|
1207
|
-
|
|
1208
|
-
def test_fail_task_success(self, queue_with_running_task: TaskQueue) -> None:
|
|
1209
|
-
"""Test failing a task updates status and error."""
|
|
1210
|
-
can_retry = queue_with_running_task.fail_task("task-001", "Connection failed")
|
|
1211
|
-
|
|
1212
|
-
task = queue_with_running_task.get_task("task-001")
|
|
1213
|
-
assert task is not None
|
|
1214
|
-
assert task.status == TaskStatus.FAILED
|
|
1215
|
-
assert task.error == "Connection failed"
|
|
1216
|
-
assert can_retry is True
|
|
1217
|
-
|
|
1218
|
-
def test_fail_task_removes_from_active_workers(self, queue_with_running_task: TaskQueue) -> None:
|
|
1219
|
-
"""Test failing task removes agent from active_workers."""
|
|
1220
|
-
assert "Worker1" in queue_with_running_task.active_workers
|
|
1221
|
-
|
|
1222
|
-
queue_with_running_task.fail_task("task-001", "Error")
|
|
1223
|
-
|
|
1224
|
-
assert "Worker1" not in queue_with_running_task.active_workers
|
|
1225
|
-
|
|
1226
|
-
def test_fail_task_returns_can_retry_status(self) -> None:
|
|
1227
|
-
"""Test fail_task returns correct can_retry status."""
|
|
1228
|
-
queue = TaskQueue()
|
|
1229
|
-
task = AuditTask(
|
|
1230
|
-
id="task-001",
|
|
1231
|
-
type="test",
|
|
1232
|
-
description="test",
|
|
1233
|
-
assignee="Agent",
|
|
1234
|
-
max_retries=0, # No retries allowed
|
|
1235
|
-
)
|
|
1236
|
-
queue.add_task(task)
|
|
1237
|
-
queue.assign_task("task-001", "Worker1")
|
|
1238
|
-
|
|
1239
|
-
can_retry = queue.fail_task("task-001", "Error")
|
|
1240
|
-
assert can_retry is False
|
|
1241
|
-
|
|
1242
|
-
def test_fail_task_nonexistent(self) -> None:
|
|
1243
|
-
"""Test failing nonexistent task returns False."""
|
|
1244
|
-
queue = TaskQueue()
|
|
1245
|
-
result = queue.fail_task("nonexistent", "Error")
|
|
1246
|
-
assert result is False
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
class TestTaskQueueSpawnSubtask:
|
|
1250
|
-
"""Tests for TaskQueue spawn_subtask method."""
|
|
1251
|
-
|
|
1252
|
-
@pytest.fixture
|
|
1253
|
-
def queue_with_parent(self) -> TaskQueue:
|
|
1254
|
-
"""Create a queue with a parent task."""
|
|
1255
|
-
queue = TaskQueue()
|
|
1256
|
-
queue.add_task(
|
|
1257
|
-
AuditTask(
|
|
1258
|
-
id="parent-001",
|
|
1259
|
-
type="analysis",
|
|
1260
|
-
description="Main analysis",
|
|
1261
|
-
assignee="MainAgent",
|
|
1262
|
-
priority=TaskPriority.HIGH.value,
|
|
1263
|
-
tags=["main", "analysis"],
|
|
1264
|
-
)
|
|
1265
|
-
)
|
|
1266
|
-
return queue
|
|
1267
|
-
|
|
1268
|
-
def test_spawn_subtask_creates_task(self, queue_with_parent: TaskQueue) -> None:
|
|
1269
|
-
"""Test spawn_subtask creates a new task."""
|
|
1270
|
-
subtask_id = queue_with_parent.spawn_subtask(
|
|
1271
|
-
parent_id="parent-001",
|
|
1272
|
-
task_type="detail_analysis",
|
|
1273
|
-
description="Detailed analysis of module X",
|
|
1274
|
-
assignee="DetailAgent",
|
|
1275
|
-
)
|
|
1276
|
-
|
|
1277
|
-
assert subtask_id.startswith("task-")
|
|
1278
|
-
subtask = queue_with_parent.get_task(subtask_id)
|
|
1279
|
-
assert subtask is not None
|
|
1280
|
-
assert subtask.type == "detail_analysis"
|
|
1281
|
-
assert subtask.description == "Detailed analysis of module X"
|
|
1282
|
-
assert subtask.assignee == "DetailAgent"
|
|
1283
|
-
|
|
1284
|
-
def test_spawn_subtask_inherits_priority(self, queue_with_parent: TaskQueue) -> None:
|
|
1285
|
-
"""Test subtask inherits parent priority by default."""
|
|
1286
|
-
subtask_id = queue_with_parent.spawn_subtask(
|
|
1287
|
-
parent_id="parent-001",
|
|
1288
|
-
task_type="sub",
|
|
1289
|
-
description="Subtask",
|
|
1290
|
-
assignee="SubAgent",
|
|
1291
|
-
)
|
|
1292
|
-
|
|
1293
|
-
subtask = queue_with_parent.get_task(subtask_id)
|
|
1294
|
-
assert subtask is not None
|
|
1295
|
-
assert subtask.priority == TaskPriority.HIGH.value
|
|
1296
|
-
|
|
1297
|
-
def test_spawn_subtask_custom_priority(self, queue_with_parent: TaskQueue) -> None:
|
|
1298
|
-
"""Test subtask can have custom priority."""
|
|
1299
|
-
subtask_id = queue_with_parent.spawn_subtask(
|
|
1300
|
-
parent_id="parent-001",
|
|
1301
|
-
task_type="sub",
|
|
1302
|
-
description="Subtask",
|
|
1303
|
-
assignee="SubAgent",
|
|
1304
|
-
priority=TaskPriority.CRITICAL.value,
|
|
1305
|
-
)
|
|
1306
|
-
|
|
1307
|
-
subtask = queue_with_parent.get_task(subtask_id)
|
|
1308
|
-
assert subtask is not None
|
|
1309
|
-
assert subtask.priority == TaskPriority.CRITICAL.value
|
|
1310
|
-
|
|
1311
|
-
def test_spawn_subtask_sets_created_by(self, queue_with_parent: TaskQueue) -> None:
|
|
1312
|
-
"""Test subtask created_by is set to parent's assignee."""
|
|
1313
|
-
subtask_id = queue_with_parent.spawn_subtask(
|
|
1314
|
-
parent_id="parent-001",
|
|
1315
|
-
task_type="sub",
|
|
1316
|
-
description="Subtask",
|
|
1317
|
-
assignee="SubAgent",
|
|
1318
|
-
)
|
|
1319
|
-
|
|
1320
|
-
subtask = queue_with_parent.get_task(subtask_id)
|
|
1321
|
-
assert subtask is not None
|
|
1322
|
-
assert subtask.created_by == "MainAgent"
|
|
1323
|
-
|
|
1324
|
-
def test_spawn_subtask_inherits_tags_with_parent_ref(self, queue_with_parent: TaskQueue) -> None:
|
|
1325
|
-
"""Test subtask inherits parent tags and adds parent reference."""
|
|
1326
|
-
subtask_id = queue_with_parent.spawn_subtask(
|
|
1327
|
-
parent_id="parent-001",
|
|
1328
|
-
task_type="sub",
|
|
1329
|
-
description="Subtask",
|
|
1330
|
-
assignee="SubAgent",
|
|
1331
|
-
)
|
|
1332
|
-
|
|
1333
|
-
subtask = queue_with_parent.get_task(subtask_id)
|
|
1334
|
-
assert subtask is not None
|
|
1335
|
-
assert "main" in subtask.tags
|
|
1336
|
-
assert "analysis" in subtask.tags
|
|
1337
|
-
assert "parent:parent-001" in subtask.tags
|
|
1338
|
-
|
|
1339
|
-
def test_spawn_subtask_with_input_data(self, queue_with_parent: TaskQueue) -> None:
|
|
1340
|
-
"""Test subtask with custom input data."""
|
|
1341
|
-
subtask_id = queue_with_parent.spawn_subtask(
|
|
1342
|
-
parent_id="parent-001",
|
|
1343
|
-
task_type="sub",
|
|
1344
|
-
description="Subtask",
|
|
1345
|
-
assignee="SubAgent",
|
|
1346
|
-
input_data={"module": "src/main.py", "depth": 3},
|
|
1347
|
-
)
|
|
1348
|
-
|
|
1349
|
-
subtask = queue_with_parent.get_task(subtask_id)
|
|
1350
|
-
assert subtask is not None
|
|
1351
|
-
assert subtask.input_data == {"module": "src/main.py", "depth": 3}
|
|
1352
|
-
|
|
1353
|
-
def test_spawn_subtask_nonexistent_parent(self) -> None:
|
|
1354
|
-
"""Test spawn_subtask with nonexistent parent raises ValueError."""
|
|
1355
|
-
queue = TaskQueue()
|
|
1356
|
-
with pytest.raises(ValueError, match="Parent task nonexistent not found"):
|
|
1357
|
-
queue.spawn_subtask(
|
|
1358
|
-
parent_id="nonexistent",
|
|
1359
|
-
task_type="sub",
|
|
1360
|
-
description="Subtask",
|
|
1361
|
-
assignee="SubAgent",
|
|
1362
|
-
)
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
class TestTaskQueueComputedProperties:
|
|
1366
|
-
"""Tests for TaskQueue computed properties."""
|
|
1367
|
-
|
|
1368
|
-
@pytest.fixture
|
|
1369
|
-
def queue_with_various_tasks(self) -> TaskQueue:
|
|
1370
|
-
"""Create a queue with tasks in various states."""
|
|
1371
|
-
queue = TaskQueue()
|
|
1372
|
-
|
|
1373
|
-
# Pending tasks
|
|
1374
|
-
queue.add_task(AuditTask(id="pending-1", type="t", description="d", assignee="a"))
|
|
1375
|
-
queue.add_task(AuditTask(id="pending-2", type="t", description="d", assignee="a"))
|
|
1376
|
-
|
|
1377
|
-
# Running task
|
|
1378
|
-
running = AuditTask(id="running-1", type="t", description="d", assignee="a")
|
|
1379
|
-
queue.add_task(running)
|
|
1380
|
-
running.start()
|
|
1381
|
-
|
|
1382
|
-
# Completed tasks
|
|
1383
|
-
completed = AuditTask(id="completed-1", type="t", description="d", assignee="a")
|
|
1384
|
-
queue.add_task(completed)
|
|
1385
|
-
completed.start()
|
|
1386
|
-
completed.complete()
|
|
1387
|
-
|
|
1388
|
-
# Failed task
|
|
1389
|
-
failed = AuditTask(id="failed-1", type="t", description="d", assignee="a")
|
|
1390
|
-
queue.add_task(failed)
|
|
1391
|
-
failed.start()
|
|
1392
|
-
failed.fail("Error")
|
|
1393
|
-
|
|
1394
|
-
# Skipped task
|
|
1395
|
-
skipped = AuditTask(id="skipped-1", type="t", description="d", assignee="a")
|
|
1396
|
-
queue.add_task(skipped)
|
|
1397
|
-
skipped.skip()
|
|
1398
|
-
|
|
1399
|
-
return queue
|
|
1400
|
-
|
|
1401
|
-
def test_pending_count(self, queue_with_various_tasks: TaskQueue) -> None:
|
|
1402
|
-
"""Test pending_count returns correct count."""
|
|
1403
|
-
assert queue_with_various_tasks.pending_count == 2
|
|
1404
|
-
|
|
1405
|
-
def test_running_count(self, queue_with_various_tasks: TaskQueue) -> None:
|
|
1406
|
-
"""Test running_count returns correct count."""
|
|
1407
|
-
assert queue_with_various_tasks.running_count == 1
|
|
1408
|
-
|
|
1409
|
-
def test_completed_count(self, queue_with_various_tasks: TaskQueue) -> None:
|
|
1410
|
-
"""Test completed_count returns correct count."""
|
|
1411
|
-
assert queue_with_various_tasks.completed_count == 1
|
|
1412
|
-
|
|
1413
|
-
def test_failed_count(self, queue_with_various_tasks: TaskQueue) -> None:
|
|
1414
|
-
"""Test failed_count returns correct count."""
|
|
1415
|
-
assert queue_with_various_tasks.failed_count == 1
|
|
1416
|
-
|
|
1417
|
-
def test_is_complete_false(self, queue_with_various_tasks: TaskQueue) -> None:
|
|
1418
|
-
"""Test is_complete is False when non-terminal tasks exist."""
|
|
1419
|
-
assert queue_with_various_tasks.is_complete is False
|
|
1420
|
-
|
|
1421
|
-
def test_is_complete_true(self) -> None:
|
|
1422
|
-
"""Test is_complete is True when all tasks are terminal."""
|
|
1423
|
-
queue = TaskQueue()
|
|
1424
|
-
|
|
1425
|
-
completed = AuditTask(id="t1", type="t", description="d", assignee="a")
|
|
1426
|
-
queue.add_task(completed)
|
|
1427
|
-
completed.start()
|
|
1428
|
-
completed.complete()
|
|
1429
|
-
|
|
1430
|
-
skipped = AuditTask(id="t2", type="t", description="d", assignee="a")
|
|
1431
|
-
queue.add_task(skipped)
|
|
1432
|
-
skipped.skip()
|
|
1433
|
-
|
|
1434
|
-
assert queue.is_complete is True
|
|
1435
|
-
|
|
1436
|
-
def test_is_complete_empty_queue(self) -> None:
|
|
1437
|
-
"""Test is_complete is True for empty queue."""
|
|
1438
|
-
queue = TaskQueue()
|
|
1439
|
-
assert queue.is_complete is True
|
|
1440
|
-
|
|
1441
|
-
def test_has_failures_true(self, queue_with_various_tasks: TaskQueue) -> None:
|
|
1442
|
-
"""Test has_failures is True when failed tasks without retries exist."""
|
|
1443
|
-
# Set max_retries to 0 so can_retry is False
|
|
1444
|
-
failed = queue_with_various_tasks.get_task("failed-1")
|
|
1445
|
-
assert failed is not None
|
|
1446
|
-
failed.max_retries = 0
|
|
1447
|
-
|
|
1448
|
-
assert queue_with_various_tasks.has_failures is True
|
|
1449
|
-
|
|
1450
|
-
def test_has_failures_false_can_retry(self) -> None:
|
|
1451
|
-
"""Test has_failures is False when failed task can retry."""
|
|
1452
|
-
queue = TaskQueue()
|
|
1453
|
-
task = AuditTask(
|
|
1454
|
-
id="t1",
|
|
1455
|
-
type="t",
|
|
1456
|
-
description="d",
|
|
1457
|
-
assignee="a",
|
|
1458
|
-
max_retries=3,
|
|
1459
|
-
)
|
|
1460
|
-
queue.add_task(task)
|
|
1461
|
-
task.start()
|
|
1462
|
-
task.fail("Error")
|
|
1463
|
-
|
|
1464
|
-
# Task can retry, so has_failures should be False
|
|
1465
|
-
assert task.can_retry is True
|
|
1466
|
-
assert queue.has_failures is False
|
|
1467
|
-
|
|
1468
|
-
def test_has_failures_false_no_failures(self) -> None:
|
|
1469
|
-
"""Test has_failures is False when no tasks failed."""
|
|
1470
|
-
queue = TaskQueue()
|
|
1471
|
-
task = AuditTask(id="t1", type="t", description="d", assignee="a")
|
|
1472
|
-
queue.add_task(task)
|
|
1473
|
-
task.start()
|
|
1474
|
-
task.complete()
|
|
1475
|
-
|
|
1476
|
-
assert queue.has_failures is False
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
class TestTaskQueueHelperMethods:
|
|
1480
|
-
"""Tests for TaskQueue helper methods."""
|
|
1481
|
-
|
|
1482
|
-
@pytest.fixture
|
|
1483
|
-
def populated_queue(self) -> TaskQueue:
|
|
1484
|
-
"""Create a queue with multiple tasks."""
|
|
1485
|
-
queue = TaskQueue()
|
|
1486
|
-
|
|
1487
|
-
# Add tasks with different assignees and statuses
|
|
1488
|
-
queue.add_task(
|
|
1489
|
-
AuditTask(
|
|
1490
|
-
id="t1",
|
|
1491
|
-
type="analysis",
|
|
1492
|
-
description="d",
|
|
1493
|
-
assignee="AgentA",
|
|
1494
|
-
status=TaskStatus.PENDING,
|
|
1495
|
-
)
|
|
1496
|
-
)
|
|
1497
|
-
queue.add_task(
|
|
1498
|
-
AuditTask(
|
|
1499
|
-
id="t2",
|
|
1500
|
-
type="scan",
|
|
1501
|
-
description="d",
|
|
1502
|
-
assignee="AgentA",
|
|
1503
|
-
status=TaskStatus.PENDING,
|
|
1504
|
-
)
|
|
1505
|
-
)
|
|
1506
|
-
queue.add_task(
|
|
1507
|
-
AuditTask(
|
|
1508
|
-
id="t3",
|
|
1509
|
-
type="verify",
|
|
1510
|
-
description="d",
|
|
1511
|
-
assignee="AgentB",
|
|
1512
|
-
status=TaskStatus.PENDING,
|
|
1513
|
-
)
|
|
1514
|
-
)
|
|
1515
|
-
|
|
1516
|
-
# Mark t2 as blocked
|
|
1517
|
-
queue.get_task("t2").block(["blocker"]) # type: ignore[union-attr]
|
|
1518
|
-
|
|
1519
|
-
return queue
|
|
1520
|
-
|
|
1521
|
-
def test_get_blocked_tasks(self, populated_queue: TaskQueue) -> None:
|
|
1522
|
-
"""Test get_blocked_tasks returns blocked tasks."""
|
|
1523
|
-
blocked = populated_queue.get_blocked_tasks()
|
|
1524
|
-
assert len(blocked) == 1
|
|
1525
|
-
assert blocked[0].id == "t2"
|
|
1526
|
-
|
|
1527
|
-
def test_get_tasks_by_status(self, populated_queue: TaskQueue) -> None:
|
|
1528
|
-
"""Test get_tasks_by_status filters correctly."""
|
|
1529
|
-
pending = populated_queue.get_tasks_by_status(TaskStatus.PENDING)
|
|
1530
|
-
blocked = populated_queue.get_tasks_by_status(TaskStatus.BLOCKED)
|
|
1531
|
-
|
|
1532
|
-
assert len(pending) == 2 # t1 and t3
|
|
1533
|
-
assert len(blocked) == 1 # t2
|
|
1534
|
-
|
|
1535
|
-
def test_get_tasks_by_agent(self, populated_queue: TaskQueue) -> None:
|
|
1536
|
-
"""Test get_tasks_by_agent filters correctly."""
|
|
1537
|
-
agent_a_tasks = populated_queue.get_tasks_by_agent("AgentA")
|
|
1538
|
-
agent_b_tasks = populated_queue.get_tasks_by_agent("AgentB")
|
|
1539
|
-
agent_c_tasks = populated_queue.get_tasks_by_agent("AgentC")
|
|
1540
|
-
|
|
1541
|
-
assert len(agent_a_tasks) == 2
|
|
1542
|
-
assert len(agent_b_tasks) == 1
|
|
1543
|
-
assert len(agent_c_tasks) == 0
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
class TestTaskQueueSerialization:
|
|
1547
|
-
"""Tests for TaskQueue serialization."""
|
|
1548
|
-
|
|
1549
|
-
def test_model_dump(self) -> None:
|
|
1550
|
-
"""Test queue can be serialized to dict."""
|
|
1551
|
-
queue = TaskQueue()
|
|
1552
|
-
queue.add_task(AuditTask(id="t1", type="test", description="Test", assignee="Agent"))
|
|
1553
|
-
|
|
1554
|
-
data = queue.model_dump()
|
|
1555
|
-
|
|
1556
|
-
assert "tasks" in data
|
|
1557
|
-
assert "active_workers" in data
|
|
1558
|
-
assert "pending_count" in data
|
|
1559
|
-
assert "is_complete" in data
|
|
1560
|
-
assert "has_failures" in data
|
|
1561
|
-
assert "t1" in data["tasks"]
|
|
1562
|
-
|
|
1563
|
-
def test_json_serialization(self) -> None:
|
|
1564
|
-
"""Test queue can be serialized to JSON."""
|
|
1565
|
-
import json
|
|
1566
|
-
|
|
1567
|
-
queue = TaskQueue()
|
|
1568
|
-
queue.add_task(AuditTask(id="t1", type="test", description="Test", assignee="Agent"))
|
|
1569
|
-
|
|
1570
|
-
json_str = queue.model_dump_json()
|
|
1571
|
-
parsed = json.loads(json_str)
|
|
1572
|
-
|
|
1573
|
-
assert "tasks" in parsed
|
|
1574
|
-
assert "t1" in parsed["tasks"]
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
class TestTaskQueueIntegration:
|
|
1578
|
-
"""Integration tests for TaskQueue with complex workflows."""
|
|
1579
|
-
|
|
1580
|
-
def test_full_workflow_single_task(self) -> None:
|
|
1581
|
-
"""Test complete lifecycle of a single task."""
|
|
1582
|
-
queue = TaskQueue()
|
|
1583
|
-
|
|
1584
|
-
# Add task
|
|
1585
|
-
task = AuditTask(
|
|
1586
|
-
id="task-001",
|
|
1587
|
-
type="code_analysis",
|
|
1588
|
-
description="Analyze code quality",
|
|
1589
|
-
assignee="CodeAgent",
|
|
1590
|
-
input_data={"path": "src/"},
|
|
1591
|
-
)
|
|
1592
|
-
queue.add_task(task)
|
|
1593
|
-
|
|
1594
|
-
# Verify initial state
|
|
1595
|
-
assert queue.pending_count == 1
|
|
1596
|
-
assert queue.is_complete is False
|
|
1597
|
-
|
|
1598
|
-
# Assign to worker
|
|
1599
|
-
queue.assign_task("task-001", "Worker1")
|
|
1600
|
-
assert queue.running_count == 1
|
|
1601
|
-
assert "Worker1" in queue.active_workers
|
|
1602
|
-
|
|
1603
|
-
# Complete task
|
|
1604
|
-
queue.complete_task("task-001", {"issues_found": 3})
|
|
1605
|
-
assert queue.completed_count == 1
|
|
1606
|
-
assert queue.is_complete is True
|
|
1607
|
-
assert "Worker1" not in queue.active_workers
|
|
1608
|
-
|
|
1609
|
-
def test_dependency_chain_workflow(self) -> None:
|
|
1610
|
-
"""Test workflow with task dependencies."""
|
|
1611
|
-
queue = TaskQueue()
|
|
1612
|
-
|
|
1613
|
-
# Create dependency chain: init -> analyze -> report
|
|
1614
|
-
queue.add_task(AuditTask(id="init", type="init", description="Init", assignee="Agent"))
|
|
1615
|
-
queue.add_task(
|
|
1616
|
-
AuditTask(
|
|
1617
|
-
id="analyze",
|
|
1618
|
-
type="analyze",
|
|
1619
|
-
description="Analyze",
|
|
1620
|
-
assignee="Agent",
|
|
1621
|
-
dependencies=["init"],
|
|
1622
|
-
)
|
|
1623
|
-
)
|
|
1624
|
-
queue.add_task(
|
|
1625
|
-
AuditTask(
|
|
1626
|
-
id="report",
|
|
1627
|
-
type="report",
|
|
1628
|
-
description="Report",
|
|
1629
|
-
assignee="Agent",
|
|
1630
|
-
dependencies=["analyze"],
|
|
1631
|
-
)
|
|
1632
|
-
)
|
|
1633
|
-
|
|
1634
|
-
# Only init should be runnable
|
|
1635
|
-
runnable = queue.get_runnable_tasks()
|
|
1636
|
-
assert len(runnable) == 1
|
|
1637
|
-
assert runnable[0].id == "init"
|
|
1638
|
-
|
|
1639
|
-
# Complete init
|
|
1640
|
-
queue.assign_task("init", "W1")
|
|
1641
|
-
queue.complete_task("init")
|
|
1642
|
-
|
|
1643
|
-
# Now analyze should be runnable
|
|
1644
|
-
runnable = queue.get_runnable_tasks()
|
|
1645
|
-
assert len(runnable) == 1
|
|
1646
|
-
assert runnable[0].id == "analyze"
|
|
1647
|
-
|
|
1648
|
-
# Complete analyze
|
|
1649
|
-
queue.assign_task("analyze", "W2")
|
|
1650
|
-
queue.complete_task("analyze")
|
|
1651
|
-
|
|
1652
|
-
# Now report should be runnable
|
|
1653
|
-
runnable = queue.get_runnable_tasks()
|
|
1654
|
-
assert len(runnable) == 1
|
|
1655
|
-
assert runnable[0].id == "report"
|
|
1656
|
-
|
|
1657
|
-
def test_parallel_tasks_workflow(self) -> None:
|
|
1658
|
-
"""Test workflow with parallel tasks."""
|
|
1659
|
-
queue = TaskQueue()
|
|
1660
|
-
|
|
1661
|
-
# Create parallel structure: init -> (scan1 | scan2 | scan3) -> merge
|
|
1662
|
-
queue.add_task(AuditTask(id="init", type="init", description="Init", assignee="Agent"))
|
|
1663
|
-
queue.add_task(
|
|
1664
|
-
AuditTask(
|
|
1665
|
-
id="scan1",
|
|
1666
|
-
type="scan",
|
|
1667
|
-
description="Scan 1",
|
|
1668
|
-
assignee="Agent",
|
|
1669
|
-
dependencies=["init"],
|
|
1670
|
-
)
|
|
1671
|
-
)
|
|
1672
|
-
queue.add_task(
|
|
1673
|
-
AuditTask(
|
|
1674
|
-
id="scan2",
|
|
1675
|
-
type="scan",
|
|
1676
|
-
description="Scan 2",
|
|
1677
|
-
assignee="Agent",
|
|
1678
|
-
dependencies=["init"],
|
|
1679
|
-
)
|
|
1680
|
-
)
|
|
1681
|
-
queue.add_task(
|
|
1682
|
-
AuditTask(
|
|
1683
|
-
id="scan3",
|
|
1684
|
-
type="scan",
|
|
1685
|
-
description="Scan 3",
|
|
1686
|
-
assignee="Agent",
|
|
1687
|
-
dependencies=["init"],
|
|
1688
|
-
)
|
|
1689
|
-
)
|
|
1690
|
-
queue.add_task(
|
|
1691
|
-
AuditTask(
|
|
1692
|
-
id="merge",
|
|
1693
|
-
type="merge",
|
|
1694
|
-
description="Merge",
|
|
1695
|
-
assignee="Agent",
|
|
1696
|
-
dependencies=["scan1", "scan2", "scan3"],
|
|
1697
|
-
)
|
|
1698
|
-
)
|
|
1699
|
-
|
|
1700
|
-
# Complete init
|
|
1701
|
-
queue.assign_task("init", "W1")
|
|
1702
|
-
unblocked = queue.complete_task("init")
|
|
1703
|
-
|
|
1704
|
-
# All scans should be unblocked
|
|
1705
|
-
assert set(unblocked) == {"scan1", "scan2", "scan3"}
|
|
1706
|
-
|
|
1707
|
-
# Complete scans
|
|
1708
|
-
queue.assign_task("scan1", "W1")
|
|
1709
|
-
queue.complete_task("scan1")
|
|
1710
|
-
queue.assign_task("scan2", "W2")
|
|
1711
|
-
queue.complete_task("scan2")
|
|
1712
|
-
queue.assign_task("scan3", "W3")
|
|
1713
|
-
unblocked = queue.complete_task("scan3")
|
|
1714
|
-
|
|
1715
|
-
# Merge should now be runnable
|
|
1716
|
-
assert "merge" in unblocked
|
|
1717
|
-
runnable = queue.get_runnable_tasks()
|
|
1718
|
-
assert runnable[0].id == "merge"
|
|
1719
|
-
|
|
1720
|
-
def test_retry_workflow(self) -> None:
|
|
1721
|
-
"""Test task retry workflow."""
|
|
1722
|
-
queue = TaskQueue()
|
|
1723
|
-
|
|
1724
|
-
task = AuditTask(
|
|
1725
|
-
id="flaky",
|
|
1726
|
-
type="test",
|
|
1727
|
-
description="Flaky task",
|
|
1728
|
-
assignee="Agent",
|
|
1729
|
-
max_retries=2,
|
|
1730
|
-
)
|
|
1731
|
-
queue.add_task(task)
|
|
1732
|
-
|
|
1733
|
-
# First attempt fails
|
|
1734
|
-
queue.assign_task("flaky", "W1")
|
|
1735
|
-
can_retry = queue.fail_task("flaky", "Timeout")
|
|
1736
|
-
assert can_retry is True
|
|
1737
|
-
|
|
1738
|
-
# Retry
|
|
1739
|
-
task.retry()
|
|
1740
|
-
assert task.status == TaskStatus.PENDING
|
|
1741
|
-
assert task.retry_count == 1
|
|
1742
|
-
|
|
1743
|
-
# Second attempt fails
|
|
1744
|
-
queue.assign_task("flaky", "W1")
|
|
1745
|
-
can_retry = queue.fail_task("flaky", "Timeout again")
|
|
1746
|
-
assert can_retry is True
|
|
1747
|
-
|
|
1748
|
-
# Retry again
|
|
1749
|
-
task.retry()
|
|
1750
|
-
assert task.retry_count == 2
|
|
1751
|
-
|
|
1752
|
-
# Third attempt succeeds
|
|
1753
|
-
queue.assign_task("flaky", "W1")
|
|
1754
|
-
queue.complete_task("flaky", {"success": True})
|
|
1755
|
-
assert task.status == TaskStatus.COMPLETED
|
|
1756
|
-
|
|
1757
|
-
def test_spawn_and_complete_subtasks(self) -> None:
|
|
1758
|
-
"""Test spawning and completing subtasks."""
|
|
1759
|
-
queue = TaskQueue()
|
|
1760
|
-
|
|
1761
|
-
# Add parent task
|
|
1762
|
-
queue.add_task(
|
|
1763
|
-
AuditTask(
|
|
1764
|
-
id="parent",
|
|
1765
|
-
type="analysis",
|
|
1766
|
-
description="Main analysis",
|
|
1767
|
-
assignee="MainAgent",
|
|
1768
|
-
)
|
|
1769
|
-
)
|
|
1770
|
-
|
|
1771
|
-
# Spawn subtasks during execution
|
|
1772
|
-
sub1_id = queue.spawn_subtask(
|
|
1773
|
-
parent_id="parent",
|
|
1774
|
-
task_type="detail",
|
|
1775
|
-
description="Detail 1",
|
|
1776
|
-
assignee="SubAgent",
|
|
1777
|
-
)
|
|
1778
|
-
sub2_id = queue.spawn_subtask(
|
|
1779
|
-
parent_id="parent",
|
|
1780
|
-
task_type="detail",
|
|
1781
|
-
description="Detail 2",
|
|
1782
|
-
assignee="SubAgent",
|
|
1783
|
-
)
|
|
1784
|
-
|
|
1785
|
-
# Verify subtasks exist
|
|
1786
|
-
assert queue.get_task(sub1_id) is not None
|
|
1787
|
-
assert queue.get_task(sub2_id) is not None
|
|
1788
|
-
assert len(queue.tasks) == 3
|
|
1789
|
-
|
|
1790
|
-
# Complete subtasks
|
|
1791
|
-
queue.assign_task(sub1_id, "W1")
|
|
1792
|
-
queue.complete_task(sub1_id)
|
|
1793
|
-
queue.assign_task(sub2_id, "W2")
|
|
1794
|
-
queue.complete_task(sub2_id)
|
|
1795
|
-
|
|
1796
|
-
assert queue.completed_count == 2
|