Kairo-Jinkendo/backend/steering/signals/snapshot_signals.py
Lars 09433b5d28
Some checks failed
Deploy Development / deploy (push) Successful in 46s
Test Suite / pytest-backend (push) Failing after 1m30s
Test Suite / k6 /api/health Baseline (push) Has been skipped
Test Suite / playwright-smoke (push) Has been skipped
Test Suite / lint-backend (push) Successful in 2s
Test Suite / compose-smoke (push) Has been skipped
AP1.2 + AP1.4: Signals konsolidieren, RoadmapItem mit Gate-Verify
Entfernt operating_phase aus dem Snapshot zugunsten von Lifecycle + signals.
Führt methodenneutrale RoadmapItems (Migration 010), Verify-Pfad und Plan-UI ein.
Milestone-API bleibt als Compat-Wrapper; Version 0.13.0-ap1.4.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-05 18:45:36 +02:00

48 lines
1.3 KiB
Python

"""Initiative snapshot signals — erklärbare Heuristiken ohne operating_phase (AP1.2)."""
from __future__ import annotations
def derive_initiative_signals(
*,
initiative_status: str,
open_actions: int,
blocked_actions: int,
review_required_actions: int,
open_blockers: int,
backlog_new: int,
planned_reviews_due: int,
) -> list[str]:
"""Regelbasierte Signale für Steuerungs-Snapshot — kein Lifecycle-Ersatz."""
if initiative_status in ("completed", "archived"):
return ["initiative_terminal"]
signals: list[str] = []
if open_actions == 0 and backlog_new > 0:
signals.append("backlog_awaiting_commit")
return signals
if open_actions == 0 and backlog_new == 0:
signals.append("no_open_work")
return signals
if blocked_actions > 0:
signals.append("actions_blocked")
if open_blockers > 0:
signals.append("open_blockers")
if blocked_actions > 0 or open_blockers > 0:
return signals
if review_required_actions > 0:
signals.append("actions_need_review")
if planned_reviews_due > 0:
signals.append("reviews_due")
if review_required_actions > 0 or planned_reviews_due > 0:
return signals
if open_actions > 0:
signals.append("work_in_progress")
return signals