{ "decision_id": "route-example-composite-review", "timestamp": "2026-06-11T12:40:49Z", "request_type": "feature-modification", "request_summary": "Modify billing invoice behavior and UI display together", "repo_stage": "emerging", "action": "review", "decision_basis": "policy_guardrail", "routing_confidence": 0.7, "routing_confidence_level": "medium", "decision_confidence": 0.9, "decision_confidence_level": "high", "confidence": 0.7, "confidence_level": "medium", "overlap_score": 1.0, "primary_capability": "billing-core", "primary_capability_stage": "stable", "secondary_capabilities": [ "billing-ui" ], "candidate_capabilities": [ { "id": "billing-core", "name": "Billing Core", "status": "stable", "stage": "stable", "score": 0.7, "signals": { "intent_match": 1.0, "path_proximity": 0.5, "dependency_proximity": 0.0, "public_entry_available": 1.0, "extension_point_available": 0.0, "owner_coverage": 1.0, "raw_score": 0.7, "penalty": 0.0, "candidate_score": 0.7, "positive_signals": { "profile_backed": true, "path_proximity": 0.5, "dependency_proximity": 0.0, "has_public_entries": true, "has_extension_points": false, "owner_modules_count": 1, "matching_intent": true, "repo_stage": "emerging" }, "negative_signals": { "capability_stage": "stable", "provisional_stage": false, "heuristic_public_entry": false, "owner_unclear": false, "generated_only": false, "profile_missing": false, "multi_module_span": true }, "risk_signals": { "keyword_hit": true, "high_risk_capability": true, "repo_stage": "emerging", "request_requires_review": false, "duplicate_signal": false } } }, { "id": "billing-ui", "name": "Billing UI", "status": "stable", "stage": "stable", "score": 0.7, "signals": { "intent_match": 1.0, "path_proximity": 0.5, "dependency_proximity": 0.0, "public_entry_available": 1.0, "extension_point_available": 0.0, "owner_coverage": 1.0, "raw_score": 0.7, "penalty": 0.0, "candidate_score": 0.7, "positive_signals": { "profile_backed": true, "path_proximity": 0.5, "dependency_proximity": 0.0, "has_public_entries": true, "has_extension_points": false, "owner_modules_count": 1, "matching_intent": true, "repo_stage": "emerging" }, "negative_signals": { "capability_stage": "stable", "provisional_stage": false, "heuristic_public_entry": false, "owner_unclear": false, "generated_only": false, "profile_missing": false, "multi_module_span": true }, "risk_signals": { "keyword_hit": true, "high_risk_capability": true, "repo_stage": "emerging", "request_requires_review": false, "duplicate_signal": false } } } ], "candidate_modules": [ { "path": "services/billing", "id": "module-services-billing", "layer": "shared-capability", "domain": "billing" }, { "path": "frontend", "id": "module-frontend", "layer": "ui", "domain": "frontend" } ], "required_reads": [ "services/billing/service.py", "services/billing/__init__.py" ], "required_checks": [ "check-reuse", "check-deps", "check-public-api", "check-index-freshness" ], "forbidden_paths": [], "review_required": true, "coordination_required": true, "composite_route_required": true, "recommended_next_action": "request_human_review", "recommended_next_steps": [ "Read services/billing/service.py", "Read services/billing/__init__.py", "Record the final decision with sync_feedback.py after human review", "Keep repository-local routing data provisional until boundaries stabilize", "Reason for caution: high-risk capability or overlapping high-risk candidates" ], "why_not_actions": { "reuse": [ "request asks for behavior change, not just reuse" ], "extend": [ "early-stage repositories restrict automatic extension" ], "extract": [ "early-stage repositories avoid auto-extraction" ], "new": [ "existing structure evidence is strong enough to avoid creating a brand-new capability", "cross-module change should be reviewed before creating a new capability" ] }, "block_reason": { "code": "high_risk_surface", "severity": "P0", "summary": "The request touches a high-risk surface." }, "missing_evidence": [], "analysis_directions": [ "Inspect the path-to-capability map and capability catalog before making any code changes.", "Classify the changed surface as core capability, facade, adapter, UI transport, test, or governance metadata.", "Compare candidate capabilities by owner_modules, public_entries, contracts, and dependency_priority.", "Review contracts and forbidden patterns for billing-core before proposing implementation work.", "Trace imports and callers for the changed paths to verify whether this is reuse, extension, extraction, or a new boundary." ], "safe_next_steps": [ "Read project-change-router/references/path-to-capability-map.yaml for the changed paths.", "Read project-change-router/references/capability-catalog.yaml for candidate capabilities.", "Read services/billing/service.py", "Read services/billing/__init__.py", "Run python scripts/check_bundle_governance.py --repo --format json before editing.", "Run python scripts/validate_router_bundle.py --repo --format json if the bundle may be stale." ], "suggested_questions": [ "Which candidate is the primary route for this change: billing-core, billing-ui?", "Is this phase limited to routing/governance scaffolding, or is product behavior implementation allowed?" ], "profile_repair_hints": [ { "kind": "evaluation_case", "suggestion": "After the human decision, add a curated evaluation case for this routing scenario.", "confidence": "high" } ], "override_requirements": [ { "scope": "current_task", "required_text": "I authorize overriding this router stop only for the current task after recording the reason.", "must_record_reason": true, "expires_after": "current_task" }, { "scope": "paths", "allowed_paths": [ "services/billing/service.py", "frontend/billing/view.ts" ], "must_record_reason": true, "expires_after": "current_task" } ], "allowed_write_paths": [], "forbidden_write_paths": [ "**" ], "must_read_before_edit": [ "services/billing/service.py", "services/billing/__init__.py", "services/billing" ], "post_change_closeout": [ { "step": "validate_bundle", "command": "python scripts/validate_router_bundle.py --repo --format json", "when": "after any routed change" }, { "step": "governance_audit", "command": "python scripts/check_bundle_governance.py --repo --format json", "when": "after capability, ownership, public entry, lifecycle, or path boundary changes" }, { "step": "route_evaluation", "command": "python scripts/run_evaluation.py --repo --format json", "when": "after route-affecting changes or before committing router metadata" }, { "step": "record_feedback", "command": "python scripts/sync_feedback.py --repo --feedback-file --format json", "when": "after human review or override" }, { "step": "capability_summary", "command": "Report whether owner_modules, public_entries, contracts, lifecycle, or evaluation cases changed.", "when": "before closing work on billing-core" }, { "step": "gitignore_inclusion_check", "command": "Check whether generated or report directories should be ignored before commit.", "when": "after creating files" } ], "composite_route": { "required": true, "primary": "billing-core", "secondary": [ "billing-ui" ], "participants": [ { "capability": "billing-core", "role": "primary", "stage": "stable", "score": 0.7 }, { "capability": "billing-ui", "role": "secondary", "stage": "stable", "score": 0.7 } ], "coordination_policy": "review_before_write" }, "capability_lifecycle_action": { "intent": "none", "review_required": false, "required_metadata": [] }, "evaluation_regression_hints": [ { "kind": "route_regression_case", "suggested_id": "high-risk-surface-modify-billing-invoice-behavior-and-ui-display-t", "expected_action": "review", "expected_capabilities": [ "billing-core" ], "changed_paths": [ "services/billing/service.py", "frontend/billing/view.ts" ], "reason": "Capture this route outcome after human confirmation so future agents do not repeat the same ambiguity." } ], "confidence_reasons": [ "profile-backed capability mapping", "public entry evidence exists" ], "veto_reasons": [ "high-risk capability or overlapping high-risk candidates" ], "positive_signals": { "profile_backed": true, "path_proximity": 0.5, "dependency_proximity": 0.0, "has_public_entries": true, "has_extension_points": false, "owner_modules_count": 1, "matching_intent": true, "repo_stage": "emerging" }, "negative_signals": { "capability_stage": "stable", "provisional_stage": false, "heuristic_public_entry": false, "owner_unclear": false, "generated_only": false, "profile_missing": false, "multi_module_span": true }, "risk_signals": { "keyword_hit": true, "high_risk_capability": true, "repo_stage": "emerging", "request_requires_review": false, "duplicate_signal": false }, "reasoning": [ "high-risk request requires manual review" ], "authorization_context": { "source_commit": null, "structure_digest": "0000000000000000000000000000000000000000000000000000000000000000", "routing_truth_digest": "0000000000000000000000000000000000000000000000000000000000000000", "freshness_classification": "unknown", "runtime_identity_digest": "f6c40637285745c88209d816e03973c1164f23e4479da36fa044dd5aa05e127c" }, "route_fingerprint": "b604bdb963d4057802e9f4a8d94e27b4459ec36ab486298f62195ae12f4ba38d", "source_of_truths": { "capability_catalog": { "generated_by": "bootstrap_router", "generated_at": "2026-06-11T12:40:49Z", "source_commit": null }, "module_map": { "generated_by": "bootstrap_router", "generated_at": "2026-06-11T12:40:49Z", "source_commit": null }, "exception_registry": { "generated_by": "bootstrap_router", "generated_at": "2026-06-11T12:40:49Z", "source_commit": null } }, "changed_paths": [], "runtime_identity": { "skill_version": "0.4.0", "skill_git_commit": null, "installed_payload_digest": "a6d415b7b61b426b3b9b76d4f280e43303fecb02836c98f13800ea54c0ca5f73", "installed_payload_source": "example_fixture", "bundle_schema_compatibility": [ 1 ], "report_schema_version": 3, "reuse_engine_api_version": 2, "architecture_governance_api_version": 2, "typed_finding_schema_version": 1, "gate_policy_version": 1, "change_flow_api_version": 1, "authorization_api_version": 1, "parser_versions": { "python": 1, "typescript": 1, "java": 1 }, "identity_digest": "f6c40637285745c88209d816e03973c1164f23e4479da36fa044dd5aa05e127c" }, "typed_findings": [ { "schema_version": 1, "finding_id": "a0ecde239185d5ecf4a40a2d781862f5d490a15a83ad6641ec7b4bd643cd67f7", "type": "high_risk_surface", "severity": "P0", "invariant_class": "task_local", "origin": "route", "delta_state": "task_local_new", "task_relevance": "relevant", "evidence_status": "complete", "policy_rule_id": "GATE-RISK-001", "paths": [], "capabilities": [ "billing-core" ], "relevance_trace": [ "capability:billing-core -> finding:high_risk_surface" ], "evidence_digest": "988d679525680c433f2aed01ca29fb83f06951236103a82bee702515e254bbdb", "evidence": { "example": "resolve-entry.composite-review", "block_reason": { "code": "high_risk_surface", "severity": "P0", "summary": "The request touches a high-risk surface." } }, "message": "The request touches a high-risk surface." } ], "execution_gate": { "state": "blocked", "blocking": true, "conditional": false, "authoritative": true, "gate_policy_version": 1, "policy_rule_ids": [ "GATE-HARD-001", "GATE-RELEVANT-001" ], "decisive_finding_ids": [ "a0ecde239185d5ecf4a40a2d781862f5d490a15a83ad6641ec7b4bd643cd67f7" ], "unknown_evidence": [], "proposed_allowed_write_paths": [], "proposed_forbidden_write_paths": [], "allowed_write_paths": [], "forbidden_write_paths": [ "**" ], "required_commands": [ "python scripts/check_reuse.py --repo --format json", "python scripts/check_deps.py --repo --format json", "python scripts/check_public_api.py --repo --format json", "python scripts/check_index_freshness.py --repo --format json" ], "reason": "blocking or incomplete route evidence remains" }, "gate_shadow": { "legacy_state": "blocked", "new_state": "blocked", "classification": "equivalent", "cutover_eligible": true, "new_decisive_finding_ids": [ "a0ecde239185d5ecf4a40a2d781862f5d490a15a83ad6641ec7b4bd643cd67f7" ], "legacy_action": "review", "legacy_block_reason": { "code": "high_risk_surface", "severity": "P0", "summary": "The request touches a high-risk surface." } }, "must_read_targets": [ { "path": "services/billing/service.py", "symbol": "$entry", "content_digest": "addcf9e47c55dcbca9c7b2eeb552cbe2dbf740d028056970c5922a9981f2aefe", "line_hint": 1, "reason": "routed required read", "resolution_status": "resolved" }, { "path": "services/billing/__init__.py", "symbol": "$entry", "content_digest": "9498f6c56743472ff58c6b242716cf13f8b492097eb436a2b7a9240fdc11ec83", "line_hint": 1, "reason": "routed required read", "resolution_status": "resolved" } ], "inventory_targets": [ { "path": "services/billing", "reason": "inventory routed directory before selecting a file" } ], "unresolved_read_targets": [], "authorization_request": { "state": "requested", "task_id": "route-example-composite-review", "route_fingerprint": "b604bdb963d4057802e9f4a8d94e27b4459ec36ab486298f62195ae12f4ba38d", "pre_change_snapshot": "e2871e9368974761fa4ed25ee8e97135060baba65d7af21c0b952c456b693343", "paths": [], "owner": null, "canonical_root": null, "route": "review", "mutation_envelope": { "allowed_write_paths": [], "forbidden_write_paths": [] }, "request_fingerprint": "ff6ede2ef97c664eda9dd5f372bd4d4e6111bb0803e6267c97d63ad999728cd4" } }