NODEDC_1C/docs/orchestration/issue_catalog.json

222 lines
8.5 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"schema_version": "agent_issue_catalog_v1",
"updated_at": "2026-05-24",
"principles": [
"No accepted save without effective_runtime.json.",
"No auto-coder without allowed issue_code, root_layers, allowed/forbidden targets, rerun_matrix, and answer contract.",
"Subagents are read-only reviewers; Lead/Orchestrator owns final verdict and repair decision."
],
"issues": {
"runtime_manifest_missing": {
"severity": "P0",
"business_meaning": "Прогон нельзя воспроизвести, поэтому audit/repair/acceptance нельзя считать доказанными.",
"root_layers": ["run_reproducibility"],
"detectors": ["missing_effective_runtime_json"],
"allowed_patch_targets": [
"scripts/domain_case_loop.py",
"scripts/domain_truth_harness.py",
"scripts/stage_agent_loop.py",
"scripts/save_agent_semantic_run.py",
"scripts/agent_runtime_manifest.py"
],
"forbidden_patch_targets": [
"business routing",
"MCP runtime",
"domain contracts"
],
"rerun_matrix": [
"same_spec_direct_runner",
"same_spec_stage_runner",
"accepted_smoke_pack"
],
"acceptance": {
"must_have": [
"effective_runtime.json",
"git_sha",
"runner",
"llm_model",
"temperature",
"prompt_source",
"prompt_hash"
]
}
},
"prompt_registry_opaque": {
"severity": "P0",
"business_meaning": "Неясно, какой normalizer prompt реально исполняется.",
"root_layers": ["prompt_registry", "runtime_config"],
"detectors": [
"default_prompt_version_missing_files",
"silent_prompt_fallback",
"preset_version_mismatch"
],
"allowed_patch_targets": [
"llm_normalizer/backend/src/services/promptBuilder.ts",
"llm_normalizer/backend/src/config.ts",
"llm_normalizer/data/presets/*.json",
"scripts/prompt_registry_healthcheck.py",
"scripts/agent_runtime_manifest.py"
],
"forbidden_patch_targets": [
"domain routing rewrites",
"business answer heuristics"
],
"rerun_matrix": [
"prompt_healthcheck",
"normalizer_smoke",
"accepted_smoke_pack"
]
},
"margin_domain_leak_accounting_route": {
"severity": "P0",
"business_meaning": "Запрос про маржинальность номенклатуры ушёл в чужой бухгалтерский домен вместо выручки, себестоимости, валовой прибыли и процента маржи.",
"root_layers": ["intent", "route", "capability", "domain_contract"],
"expected_answer_contract": "margin_profitability_v1",
"detectors": [
"forbidden_margin_terms",
"missing_revenue_cogs_margin_fields",
"wrong_capability_family"
],
"allowed_patch_targets": [
"llm_normalizer/backend/src/services/addressIntentResolver.ts",
"llm_normalizer/backend/src/services/addressCapabilityPolicy.ts",
"llm_normalizer/backend/src/services/addressFilterExtractor.ts",
"llm_normalizer/backend/src/services/address_runtime/**",
"docs/orchestration/contracts/margin_profitability_v1.json"
],
"forbidden_patch_targets": [
"fake data",
"silent heuristic masking",
"global orchestration rewrite",
"MCP protocol rewrite"
],
"rerun_matrix": [
"failed_margin_scenario",
"margin_neighbor_pack",
"wrong_domain_trap_pack",
"selected_object_followup_pack",
"accepted_smoke_pack"
],
"acceptance": {
"must_have": [
"direct_answer_first",
"period",
"revenue_ex_vat_or_honest_unknown",
"cogs_or_honest_unknown",
"gross_profit_or_honest_unknown",
"margin_pct_or_honest_unknown",
"next_action_if_limited"
],
"must_not_have": [
"route ids",
"debug ids",
"fixed assets leak",
"amortization leak",
"payment document as margin source"
]
}
},
"business_direct_answer_missing": {
"severity": "P0",
"business_meaning": "Ответ не начинает с прямого бизнес-вывода, хотя пользователь задал прямой вопрос.",
"root_layers": ["answer_surface", "business_utility"],
"detectors": ["first_line_not_direct_answer", "top_level_scaffold_before_answer"],
"allowed_patch_targets": [
"llm_normalizer/backend/src/services/address_runtime/composeStage.ts",
"llm_normalizer/backend/src/services/assistantMcpDiscoveryResponseCandidate.ts",
"llm_normalizer/backend/src/services/assistantService.ts"
],
"forbidden_patch_targets": [
"routing rewrites",
"fake evidence",
"global runtime rewrite"
],
"rerun_matrix": [
"failed_scenario",
"direct_answer_surface_pack",
"accepted_smoke_pack"
]
},
"technical_garbage_in_answer": {
"severity": "P0",
"business_meaning": "Финальный ответ протащил debug/runtime/MCP-механику в пользовательскую поверхность.",
"root_layers": ["answer_surface", "business_utility"],
"detectors": ["runtime_tokens_in_user_answer", "capability_ids_in_user_answer"],
"allowed_patch_targets": [
"llm_normalizer/backend/src/services/address_runtime/composeStage.ts",
"llm_normalizer/backend/src/services/assistantMcpDiscoveryResponseCandidate.ts",
"llm_normalizer/backend/src/services/assistantService.ts"
],
"forbidden_patch_targets": [
"route masking",
"debug deletion from artifacts"
],
"rerun_matrix": [
"failed_scenario",
"technical_garbage_canary_pack",
"accepted_smoke_pack"
]
},
"accounting_contract_missing": {
"severity": "P1",
"business_meaning": "Ответ не раскрыл обязательный бухгалтерский/доказательный контракт для запрошенного расчёта.",
"root_layers": ["domain_contract", "answer_surface", "evidence"],
"detectors": ["required_contract_fields_missing"],
"allowed_patch_targets": [
"docs/orchestration/contracts/*.json",
"llm_normalizer/backend/src/services/address_runtime/composeStage.ts",
"llm_normalizer/backend/src/services/assistantMcpDiscoveryResponseCandidate.ts"
],
"forbidden_patch_targets": [
"fake data",
"silent heuristic masking"
],
"rerun_matrix": [
"failed_scenario",
"contract_field_pack",
"accepted_smoke_pack"
]
},
"business_next_step_missing": {
"severity": "P2",
"business_meaning": "Ограниченный ответ не предлагает полезный следующий шаг.",
"root_layers": ["answer_surface", "business_utility"],
"detectors": ["limited_answer_without_next_action"],
"allowed_patch_targets": [
"llm_normalizer/backend/src/services/address_runtime/composeStage.ts",
"llm_normalizer/backend/src/services/assistantMcpDiscoveryResponseCandidate.ts"
],
"forbidden_patch_targets": [
"evidence fabrication",
"route masking"
],
"rerun_matrix": [
"failed_scenario",
"limited_answer_pack",
"accepted_smoke_pack"
]
},
"route_candidate_enablement_gap": {
"severity": "P1",
"business_meaning": "Планировщик понял бизнес-запрос, но route candidate ещё не исполняется как точная возможность.",
"root_layers": ["route_candidate", "runtime_capability"],
"detectors": ["route_candidate_needs_enablement"],
"allowed_patch_targets": [
"llm_normalizer/backend/src/services/assistantMcpDiscoveryRuntimeBridge.ts",
"llm_normalizer/backend/src/services/assistantMcpDiscoveryPlanner.ts",
"llm_normalizer/backend/src/services/assistantMcpDiscoveryPilotExecutor.ts",
"llm_normalizer/backend/src/services/addressRecipeCatalog.ts"
],
"forbidden_patch_targets": [
"global orchestration rewrite",
"fake fixtures"
],
"rerun_matrix": [
"failed_scenario",
"route_candidate_pack",
"accepted_smoke_pack"
]
}
}
}