Skip to content

Commit c6bbcb4

Browse files
committed
refactor(status): move monitor display projections into bounded module
1 parent 06fdcdc commit c6bbcb4

2 files changed

Lines changed: 89 additions & 28 deletions

File tree

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
"""Monitor-display status projections inside the `status` bounded context."""
2+
3+
from __future__ import annotations
4+
5+
from typing import Any
6+
7+
from ..scheduler.monitor_display import (
8+
attention_item_is_monitor_quiet_display_candidate as _attention_item_is_monitor_quiet_display_candidate,
9+
normalize_monitor_quiet_attention_display as _normalize_monitor_quiet_attention_display,
10+
quiet_monitor_display_action as _quiet_monitor_display_action,
11+
todo_summary_lane_items as _todo_summary_lane_items,
12+
todo_summary_open_count as _todo_summary_open_count,
13+
)
14+
from ..todos.todo_summary import (
15+
MAX_STATUS_TODOS_PER_ROLE,
16+
open_todo_items,
17+
todo_item_is_actionable_open,
18+
)
19+
20+
21+
MONITOR_DISPLAY_SCHEMA_VERSION = "monitor_quiet_display_v0"
22+
MONITOR_DISPLAY_STOP_CONDITION = (
23+
"stop until a material monitor transition, regression, or concrete blocker appears"
24+
)
25+
MONITOR_DISPLAY_FALLBACK_ACTION = (
26+
"No immediate agent work; keep the monitor quiet until a material monitor "
27+
"transition, regression, or concrete blocker appears."
28+
)
29+
MONITOR_SIGNAL_WAITING_ON = "monitor_signal"
30+
31+
32+
def todo_summary_open_count(summary: dict[str, Any] | None) -> int:
33+
return _todo_summary_open_count(
34+
summary,
35+
open_todo_items=open_todo_items,
36+
todo_item_is_actionable_open=todo_item_is_actionable_open,
37+
fallback_limit=MAX_STATUS_TODOS_PER_ROLE,
38+
)
39+
40+
41+
def todo_summary_lane_items(summary: dict[str, Any] | None, lane: str) -> list[dict[str, Any]]:
42+
return _todo_summary_lane_items(summary, lane)
43+
44+
45+
def attention_item_is_monitor_quiet_display_candidate(item: dict[str, Any]) -> bool:
46+
return _attention_item_is_monitor_quiet_display_candidate(
47+
item,
48+
open_todo_items=open_todo_items,
49+
todo_item_is_actionable_open=todo_item_is_actionable_open,
50+
fallback_limit=MAX_STATUS_TODOS_PER_ROLE,
51+
)
52+
53+
54+
def quiet_monitor_display_action(raw_action: str | None) -> str:
55+
return _quiet_monitor_display_action(
56+
raw_action,
57+
fallback_action=MONITOR_DISPLAY_FALLBACK_ACTION,
58+
)
59+
60+
61+
def normalize_monitor_quiet_attention_display(item: dict[str, Any]) -> None:
62+
_normalize_monitor_quiet_attention_display(
63+
item,
64+
is_monitor_quiet_display_candidate=attention_item_is_monitor_quiet_display_candidate,
65+
display_fallback_action=MONITOR_DISPLAY_FALLBACK_ACTION,
66+
monitor_signal_waiting_on=MONITOR_SIGNAL_WAITING_ON,
67+
monitor_display_schema_version=MONITOR_DISPLAY_SCHEMA_VERSION,
68+
monitor_display_stop_condition=MONITOR_DISPLAY_STOP_CONDITION,
69+
)

loopx/status.py

Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -107,13 +107,6 @@
107107
outcome_gap_streak as _outcome_gap_streak_read_model,
108108
small_delivery_batch_scale_streak as _small_delivery_batch_scale_streak_read_model,
109109
)
110-
from .control_plane.scheduler.monitor_display import (
111-
attention_item_is_monitor_quiet_display_candidate as _attention_item_is_monitor_quiet_display_candidate,
112-
normalize_monitor_quiet_attention_display as _normalize_monitor_quiet_attention_display,
113-
quiet_monitor_display_action as _quiet_monitor_display_action,
114-
todo_summary_lane_items as _todo_summary_lane_items,
115-
todo_summary_open_count as _todo_summary_open_count,
116-
)
117110
from .control_plane.runtime.run_compaction import (
118111
RUN_BASE_COMPACT_FIELDS,
119112
attach_run_summary_projections as _attach_run_summary_projections_read_model,
@@ -239,7 +232,6 @@
239232
project_asset_todo_summary,
240233
sync_connected_attention_action_from_todos as _sync_connected_attention_action_from_todos_read_model,
241234
todo_lane_items as todo_lane_items,
242-
todo_item_is_actionable_open,
243235
todo_item_is_deferred as todo_item_is_deferred,
244236
todo_item_is_due_monitor as todo_item_is_due_monitor,
245237
todo_item_missing_monitor_schedule as todo_item_missing_monitor_schedule,
@@ -2468,44 +2460,44 @@ def active_state_todo_attention_item(
24682460

24692461

24702462
def todo_summary_open_count(summary: dict[str, Any] | None) -> int:
2471-
return _todo_summary_open_count(
2472-
summary,
2473-
open_todo_items=open_todo_items,
2474-
todo_item_is_actionable_open=todo_item_is_actionable_open,
2475-
fallback_limit=MAX_STATUS_TODOS_PER_ROLE,
2463+
from .control_plane.status.monitor_display_projection import (
2464+
todo_summary_open_count as _todo_summary_open_count,
24762465
)
24772466

2467+
return _todo_summary_open_count(summary)
2468+
24782469

24792470
def todo_summary_lane_items(summary: dict[str, Any] | None, lane: str) -> list[dict[str, Any]]:
2471+
from .control_plane.status.monitor_display_projection import (
2472+
todo_summary_lane_items as _todo_summary_lane_items,
2473+
)
2474+
24802475
return _todo_summary_lane_items(summary, lane)
24812476

24822477

24832478
def attention_item_is_monitor_quiet_display_candidate(item: dict[str, Any]) -> bool:
2484-
return _attention_item_is_monitor_quiet_display_candidate(
2485-
item,
2486-
open_todo_items=open_todo_items,
2487-
todo_item_is_actionable_open=todo_item_is_actionable_open,
2488-
fallback_limit=MAX_STATUS_TODOS_PER_ROLE,
2479+
from .control_plane.status.monitor_display_projection import (
2480+
attention_item_is_monitor_quiet_display_candidate as _attention_item_is_monitor_quiet_display_candidate,
24892481
)
24902482

2483+
return _attention_item_is_monitor_quiet_display_candidate(item)
2484+
24912485

24922486
def quiet_monitor_display_action(raw_action: str | None) -> str:
2493-
return _quiet_monitor_display_action(
2494-
raw_action,
2495-
fallback_action=MONITOR_DISPLAY_FALLBACK_ACTION,
2487+
from .control_plane.status.monitor_display_projection import (
2488+
quiet_monitor_display_action as _quiet_monitor_display_action,
24962489
)
24972490

2491+
return _quiet_monitor_display_action(raw_action)
2492+
24982493

24992494
def normalize_monitor_quiet_attention_display(item: dict[str, Any]) -> None:
2500-
_normalize_monitor_quiet_attention_display(
2501-
item,
2502-
is_monitor_quiet_display_candidate=attention_item_is_monitor_quiet_display_candidate,
2503-
display_fallback_action=MONITOR_DISPLAY_FALLBACK_ACTION,
2504-
monitor_signal_waiting_on=MONITOR_SIGNAL_WAITING_ON,
2505-
monitor_display_schema_version=MONITOR_DISPLAY_SCHEMA_VERSION,
2506-
monitor_display_stop_condition=MONITOR_DISPLAY_STOP_CONDITION,
2495+
from .control_plane.status.monitor_display_projection import (
2496+
normalize_monitor_quiet_attention_display as _normalize_monitor_quiet_attention_display,
25072497
)
25082498

2499+
_normalize_monitor_quiet_attention_display(item)
2500+
25092501

25102502
def merge_global_registry_attention_findings(
25112503
*,

0 commit comments

Comments
 (0)