Kairo-Jinkendo/backend/steering/read_models/planning_debt.py
Lars b747200f3a
All checks were successful
Deploy Development / deploy (push) Successful in 46s
Test Suite / pytest-backend (push) Successful in 4m13s
Test Suite / lint-backend (push) Successful in 3s
Test Suite / compose-smoke (push) Has been skipped
Test Suite / k6 /api/health Baseline (push) Successful in 19s
Test Suite / playwright-smoke (push) Successful in 12s
feat(steering): K-Ext-2 Attention-Registry, Gate/Intake-Proposals, generische UI
Methodenuebergreifende Provider auf Kernel v0.3; verbindliche Coding Rules fuer Agenten in ADP und .cursor/rules.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-27 11:48:10 +02:00

37 lines
1.2 KiB
Python

"""Planning debt read model — gate_fulfillment."""
from __future__ import annotations
from typing import Any
from steering.eval_context import SteeringEvalContext
from steering.graph.execution_engine import compute_planning_debt
def compute_planning_debt_read_model(ctx: SteeringEvalContext) -> list[dict[str, Any]]:
from services import roadmap as roadmap_service
from steering.strategies.next_action.execution_ready import (
gate_horizon_scope_for_method,
)
gate_scope = gate_horizon_scope_for_method(
ctx.binding.primary_method_key, ctx.tenant_ctx, ctx.initiative_id
)
roadmap_items = roadmap_service.list_roadmap_items_for_initiative(
tenant_id=ctx.tenant_ctx.tenant_id, initiative_id=ctx.initiative_id
)
actions = ctx.actions
scoped_roadmap = roadmap_items
scoped_actions = actions
if gate_scope:
scope = str(gate_scope)
scoped_roadmap = [ri for ri in roadmap_items if str(ri.get("id")) == scope]
scoped_actions = [
a
for a in actions
if a.get("roadmap_item_id") and str(a["roadmap_item_id"]) == scope
]
return compute_planning_debt(actions=scoped_actions, roadmap_items=scoped_roadmap)