From 40c84caf431c7561bb7c0952b436e4b51fe72a68 Mon Sep 17 00:00:00 2001 From: aihop <4408344+hhyykk@users.noreply.github.com> Date: Fri, 16 Oct 2026 12:02:41 +0800 Subject: [PATCH 1/5] refactor(work-items): compose Goal task maps in TypeScript Signed-off-by: aihop <4408344+hhyykk@users.noreply.github.com> --- loopx/chat_status_api.py | 4 +- loopx/control_plane/effect_runtime.py | 1 + .../control_plane/effect_runtime_handlers.ts | 2 +- loopx/control_plane/effect_runtime_server.ts | 1 + loopx/control_plane/work_items/task_graph.py | 115 ++++++------- loopx/control_plane/work_items/task_graph.ts | 45 ++++++ .../test_goal_task_map_composition.py | 153 ++++++++++++++++++ tests/control_plane_ts/task_graph.test.ts | 106 +++++++++++- tests/test_delivery_review.py | 95 +++++++++++ 9 files changed, 453 insertions(+), 69 deletions(-) create mode 100644 tests/control_plane/test_goal_task_map_composition.py diff --git a/loopx/chat_status_api.py b/loopx/chat_status_api.py index 8a1fa13a28..2e992a66d2 100644 --- a/loopx/chat_status_api.py +++ b/loopx/chat_status_api.py @@ -24,6 +24,7 @@ EffectRuntimePermanentIOError, EffectRuntimeRemoteError, EffectRuntimeStartupError, + effect_runtime_request_scope, ) from .control_plane.runtime.public_safety import ( public_safe_compact_text, @@ -159,7 +160,8 @@ def _send_json(self, payload: dict[str, Any], *, status: int = 200) -> None: raise NotImplementedError def _delivery_review(self) -> None: - self._status(delivery_review=True) + with effect_runtime_request_scope(): + self._status(delivery_review=True) def _status(self, *, delivery_review: bool = False) -> None: query = parse_qs(urlparse(self.path).query, keep_blank_values=True) diff --git a/loopx/control_plane/effect_runtime.py b/loopx/control_plane/effect_runtime.py index 16f8651c68..3605cab8db 100644 --- a/loopx/control_plane/effect_runtime.py +++ b/loopx/control_plane/effect_runtime.py @@ -45,6 +45,7 @@ "coordination.local_authority.todo_source", "todo.context.page", "work_item.context.project", + "work_item.task_graph.goal_topology", "goal.checkpoint_read_context.resolve", "goal.checkpoint_read_context.commit", "goal.checkpoint_read_context.inspect_replay", diff --git a/loopx/control_plane/effect_runtime_handlers.ts b/loopx/control_plane/effect_runtime_handlers.ts index 49bdc4fe57..2c6eb987d8 100644 --- a/loopx/control_plane/effect_runtime_handlers.ts +++ b/loopx/control_plane/effect_runtime_handlers.ts @@ -347,7 +347,7 @@ export function createEffectRuntimeHandlers( ["work_item.planning_horizon.project", lazyHandler(() => import("./work_items/planning_horizon.ts"), ({projectQuotaPlanningHorizon}) => projectQuotaPlanningHorizon)], ["todo.context.page", lazyHandler(() => import("./todos/context_projection.ts"), ({projectTodoContextPage}) => projectTodoContextPage)], ["work_item.task_graph.topology", lazyHandler(() => import("./work_items/task_graph.ts"), ({projectTaskGraphTopology}) => projectTaskGraphTopology)], - ["work_item.task_graph.goal_topology", lazyHandler(() => import("./work_items/task_graph.ts"), ({projectGoalTaskGraphTopology}) => projectGoalTaskGraphTopology)], + ["work_item.task_graph.goal_topology", lazyHandler(() => import("./work_items/task_graph.ts"), ({projectGoalTaskMap}) => projectGoalTaskMap)], ["work_item.planning_inventory.project", lazyHandler(() => import("./work_items/planning_inventory.ts"), ({projectTodoPlanningInventory}) => projectTodoPlanningInventory)], ["work_item.planning_inventory.detail", lazyHandler(() => import("./work_items/planning_inventory.ts"), ({projectTodoPlanningInventoryDetail}) => projectTodoPlanningInventoryDetail)], ["work_item.refresh_recommendation.resolve", lazyHandler(() => import("./work_items/refresh_recommendation.ts"), ({resolveRefreshRecommendation}) => resolveRefreshRecommendation)], diff --git a/loopx/control_plane/effect_runtime_server.ts b/loopx/control_plane/effect_runtime_server.ts index 60aeb88f96..f6c8a1a504 100644 --- a/loopx/control_plane/effect_runtime_server.ts +++ b/loopx/control_plane/effect_runtime_server.ts @@ -31,6 +31,7 @@ const LOCAL_SNAPSHOT_METHODS = new Set([ "coordination.local_authority.todo_source", "todo.context.page", "work_item.context.project", + "work_item.task_graph.goal_topology", "goal.checkpoint_read_context.resolve", "goal.checkpoint_read_context.commit", "goal.checkpoint_read_context.inspect_replay", diff --git a/loopx/control_plane/work_items/task_graph.py b/loopx/control_plane/work_items/task_graph.py index 95dc628f46..b8dbd253b6 100644 --- a/loopx/control_plane/work_items/task_graph.py +++ b/loopx/control_plane/work_items/task_graph.py @@ -1,11 +1,12 @@ from __future__ import annotations import hashlib +import json import re from typing import Any, Callable from ..runtime.time import now_utc_iso -from ..effect_runtime import effect_runtime_result +from ..effect_runtime import MAX_REQUEST_BYTES, effect_runtime_result from ..todos.contract import TODO_STATUS_DEFERRED from ..todos.summary_item import todo_planning_source_items @@ -966,10 +967,6 @@ def build_task_graph_projection( } -GOAL_TASK_MAP_SCHEMA_VERSION = "goal_task_map_v0" -GOAL_TASK_MAP_MAX_NODES = 120 - - def build_goal_task_map( *, goal_id: str, @@ -981,78 +978,64 @@ def build_goal_task_map( todo_status_open: str, monitor_task_class: str, ) -> dict[str, Any]: - """Read-only map of one Goal's active Todos and their recorded relations.""" + """Adapt shared source/identity codecs to the native Goal-map composer.""" - renderable: dict[str, tuple[dict[str, Any], str, str]] = {} rows = [] + renderable: dict[str, tuple[dict[str, Any], str, str]] = {} for value in todos: tid = public_safe_compact_text(value.get("todo_id"), limit=120) title = public_safe_compact_text(value.get("title") or value.get("text"), limit=160) if not tid or not title or tid in renderable: continue state = _task_graph_todo_state( - value, - normalize_todo_status=normalize_todo_status, - todo_done_for_status=todo_done_for_status, - todo_status_open=todo_status_open, + value, normalize_todo_status=normalize_todo_status, + todo_done_for_status=todo_done_for_status, todo_status_open=todo_status_open, ) renderable[tid] = (value, title, state) - rows.append(_task_graph_topology_row( - tid, value, done=state == "done", public_safe_compact_text=public_safe_compact_text, + rows.append({ + **_task_graph_topology_row( + tid, value, done=state == "done", public_safe_compact_text=public_safe_compact_text, + ), + "is_user": value.get("role") == "user", + "is_monitor": value.get("task_class") == monitor_task_class, + }) + request = { + "schema_version": "goal_task_map_request_v0", "goal_id": goal_id, + "items": rows, "source_truncated": source_truncated, + } + # Reserve framing bytes while keeping ordinary maps on the inline transport. + use_snapshot = len(json.dumps(request, separators=(",", ":")).encode()) > MAX_REQUEST_BYTES - 4096 + result = effect_runtime_result( + "work_item.task_graph.goal_topology", request, large_local_snapshot=use_snapshot, + ) + if not isinstance(result, dict) or result.get("schema_version") != "goal_task_map_result_v0": + raise RuntimeError("TypeScript goal task map shape mismatch") + projection = result["projection"] + nodes = projection["nodes"] + node_ids = [] + materialized = [] + for node, prefix, fields in zip(nodes, result["node_identity_prefixes"], result["node_metadata_fields"], strict=True): + tid = node["refs"]["todo_ids"][0] + node_ids.append(_task_graph_node_id( + prefix, tid, public_safe_compact_text=public_safe_compact_text, durable_id=tid, )) - result = effect_runtime_result("work_item.task_graph.goal_topology", { - "schema_version": "task_graph_goal_topology_request_v0", - "items": rows, - "node_limit": GOAL_TASK_MAP_MAX_NODES, - "source_truncated": source_truncated, - }) - if not isinstance(result, dict) or result.get("schema_version") != "task_graph_goal_topology_result_v0": - raise RuntimeError("TypeScript goal task graph topology shape mismatch") - nodes: list[dict[str, Any]] = [] - node_ids: dict[str, str] = {} - for entry in result["nodes"]: - tid = entry["todo_id"] value, title, state = renderable[tid] - gate = value.get("role") == "user" - node_ids[tid] = _task_graph_node_id( - "node_gate" if gate else "node_todo", tid, - public_safe_compact_text=public_safe_compact_text, durable_id=tid, - ) - node: dict[str, Any] = { - "node_id": node_ids[tid], - "kind": "gate" if gate else ( - "monitor" if value.get("task_class") == monitor_task_class else "deliverable" - ), - "title": title, - "state": state, - "depth": entry["depth"], - "refs": {"todo_ids": [tid]}, - } + rendered = {"node_id": node_ids[-1], "kind": node["kind"], "title": title, + "state": state, "depth": node["depth"], "refs": node["refs"]} for key, field in (("owner_agent", "claimed_by"), ("task_domain", "task_domain")): text = public_safe_compact_text(value.get(field), limit=80) - if text and not gate: - node[key] = text - nodes.append(node) - edges = [ - { - "edge_id": _task_graph_node_id( - f"edge_{edge['source_relation']}", - f"{node_ids[edge['from_todo_id']]}:{node_ids[edge['to_todo_id']]}", - public_safe_compact_text=public_safe_compact_text, - ), - "from_node_id": node_ids[edge["from_todo_id"]], - "to_node_id": node_ids[edge["to_todo_id"]], - "relation": edge["relation"], - "enforcement": edge["enforcement"], - "reason": edge["reason"], - } - for edge in result["edges"] - ] - return { - "schema_version": GOAL_TASK_MAP_SCHEMA_VERSION, - "mode": "read_only", - "goal_id": goal_id, - "limits": result["completeness"], - "nodes": nodes, - "edges": edges, - } + if text and key in fields: + rendered[key] = text + materialized.append(rendered) + projection["nodes"] = materialized + # These codecs also serve the status graph; keep one owner until that caller migrates. + projection["edges"] = [{ + "edge_id": _task_graph_node_id( + f"edge_{identity['source_relation']}", + f"{node_ids[identity['from_node_index']]}:{node_ids[identity['to_node_index']]}", + public_safe_compact_text=public_safe_compact_text, + ), + "from_node_id": node_ids[identity["from_node_index"]], + "to_node_id": node_ids[identity["to_node_index"]], **edge, + } for edge, identity in zip(projection["edges"], result["edge_identities"], strict=True)] + return projection diff --git a/loopx/control_plane/work_items/task_graph.ts b/loopx/control_plane/work_items/task_graph.ts index aee36f09c5..96920f6b3e 100644 --- a/loopx/control_plane/work_items/task_graph.ts +++ b/loopx/control_plane/work_items/task_graph.ts @@ -212,3 +212,48 @@ export function projectGoalTaskGraphTopology(value: unknown): JsonObject { }, }; } + +export const GOAL_TASK_MAP_REQUEST = "goal_task_map_request_v0"; +export const GOAL_TASK_MAP_RESULT = "goal_task_map_result_v0"; +const GOAL_TASK_MAP_MAX_NODES = 120; + +function goalMapNode(facts: JsonObject, depth: number): JsonObject { + const gate = requireBoolean(facts.is_user, "goal map row.is_user"); + const monitor = requireBoolean(facts.is_monitor, "goal map row.is_monitor"); + return { + kind: gate ? "gate" : monitor ? "monitor" : "deliverable", + depth, refs: { todo_ids: [facts.todo_id] }, + }; +} + +/** Source and display codecs stay with the caller; native owns map composition. */ +export function projectGoalTaskMap(value: unknown): JsonObject { + const request = requireJsonObject(value, "goal task map request"); + if (request.schema_version !== GOAL_TASK_MAP_REQUEST) { + throw new EffectRuntimeRequestError("Goal task map request schema mismatch"); + } + if (typeof request.goal_id !== "string") throw new EffectRuntimeRequestError("goal_id must be a string"); + const sourceTruncated = requireBoolean(request.source_truncated, "source_truncated"); + const topology = projectGoalTaskGraphTopology({ + schema_version: TASK_GRAPH_GOAL_TOPOLOGY_REQUEST, items: request.items, + node_limit: GOAL_TASK_MAP_MAX_NODES, source_truncated: sourceTruncated, + }); + const rows = request.items as JsonObject[]; + const byId = new Map(rows.map(facts => [facts.todo_id as string, facts])); + const entries = topology.nodes as { todo_id: string; depth: number }[]; + const nodes = entries.map(entry => goalMapNode(byId.get(entry.todo_id)!, entry.depth)); + const indices = new Map(entries.map((entry, index) => [entry.todo_id, index])); + const edges = topology.edges as GraphEdge[]; + return { + schema_version: GOAL_TASK_MAP_RESULT, + projection: { + schema_version: "goal_task_map_v0", mode: "read_only", goal_id: request.goal_id, + limits: topology.completeness, nodes, + edges: edges.map(edge => ({ relation: edge.relation, enforcement: edge.enforcement, reason: edge.reason })), + }, + node_identity_prefixes: nodes.map(node => node.kind === "gate" ? "node_gate" : "node_todo"), + node_metadata_fields: nodes.map(node => node.kind === "gate" ? [] : ["owner_agent", "task_domain"]), + edge_identities: edges.map(edge => ({ from_node_index: indices.get(edge.from_todo_id)!, + to_node_index: indices.get(edge.to_todo_id)!, source_relation: edge.source_relation })), + }; +} diff --git a/tests/control_plane/test_goal_task_map_composition.py b/tests/control_plane/test_goal_task_map_composition.py new file mode 100644 index 0000000000..5b78fd1fca --- /dev/null +++ b/tests/control_plane/test_goal_task_map_composition.py @@ -0,0 +1,153 @@ +"""Public Goal-map composition and its existing compatibility codecs.""" +from __future__ import annotations + +from copy import deepcopy +import json + +import pytest + +from loopx.control_plane.runtime.public_safety import public_safe_compact_text +from loopx.control_plane.todos.contract import ( + TODO_STATUS_OPEN, TODO_TASK_CLASS_MONITOR, normalize_todo_status, todo_done_for_status, +) +from loopx.control_plane.work_items import task_graph + + +def project(rows, *, goal_id="graph-fixture", source_truncated=False, normalizer=normalize_todo_status): + return task_graph.build_goal_task_map( + goal_id=goal_id, todos=rows, source_truncated=source_truncated, + public_safe_compact_text=public_safe_compact_text, + normalize_todo_status=normalizer, todo_done_for_status=todo_done_for_status, + todo_status_open=TODO_STATUS_OPEN, monitor_task_class=TODO_TASK_CLASS_MONITOR, + ) + + +@pytest.mark.parametrize(("role", "task_class", "kind", "owner_visible"), [ + ("user", "continuous_monitor", "gate", False), + ("agent", "continuous_monitor", "monitor", True), + ("agent", "advancement_task", "deliverable", True), + (" user ", " continuous_monitor ", "deliverable", True), +]) +def test_role_controls_kind_and_public_owner_fields(role, task_class, kind, owner_visible): + node, = project([{"todo_id": "todo_work", "text": "Review work", "role": role, + "task_class": task_class, "claimed_by": "builder", "task_domain": "release"}])["nodes"] + assert node["kind"] == kind + assert ("owner_agent" in node) is owner_visible + assert ("task_domain" in node) is owner_visible + + +@pytest.mark.parametrize(("status", "done", "expected"), [ + ("deferred", True, "waiting"), ("done", False, "done"), + ("blocked", False, "blocked"), ("open", False, "open"), + (None, ["legacy truthy marker"], "done"), ("unrecognized", False, "open"), +]) +def test_existing_shared_state_codec_remains_authoritative(status, done, expected): + node, = project([{"todo_id": "todo_work", "text": "Review work", "status": status, + "done": done}])["nodes"] + assert node["state"] == expected + + +def test_first_renderable_compact_identity_wins_without_overwriting_metadata(): + result = project([ + {"todo_id": "todo_duplicate", "title": ""}, + {"todo_id": " todo_duplicate ", "text": "First visible", "claimed_by": "first"}, + {"todo_id": "todo_duplicate", "text": "Later duplicate", "claimed_by": "later"}, + ]) + node, = result["nodes"] + assert (node["title"], node["owner_agent"], node["refs"]) == ( + "First visible", "first", {"todo_ids": ["todo_duplicate"]}) + + +def test_discarded_sources_do_not_evaluate_their_status_codec(): + def normalize(value): + if value == "discarded": + raise ValueError("discarded status must stay unread") + return normalize_todo_status(value) + result = project([ + {"todo_id": "todo_missing_title", "status": "discarded"}, + {"todo_id": "todo_work", "text": "Review work", "status": "open"}, + {"todo_id": "todo_work", "text": "Discarded duplicate", "status": "discarded"}, + ], normalizer=normalize) + assert [node["title"] for node in result["nodes"]] == ["Review work"] + + +def test_omitted_sources_keep_opaque_owner_metadata_unread(): + class OpaqueMetadata: + def __str__(self): + raise ValueError("omitted metadata must stay unread") + rows = [{"todo_id": f"todo_{index}", "text": f"Review {index}"} for index in range(120)] + rows.append({"todo_id": "todo_omitted", "text": "Not expanded", "claimed_by": OpaqueMetadata()}) + assert len(project(rows)["nodes"]) == 120 + + +def test_shared_identity_codec_survives_unicode_title_and_owner_changes(): + original = {"todo_id": "todo_世界", "title": "\ufeffReview 🧪 work", "claimed_by": "builder"} + before = deepcopy(original) + first = project([original])["nodes"][0] + second = project([{**original, "title": "Renamed work", "claimed_by": "reviewer"}])["nodes"][0] + assert first["title"] == original["title"] + assert first["node_id"] == second["node_id"] + assert original == before + + +def test_no_opaque_metadata_crosses_the_map_boundary(monkeypatch): + calls = [] + real = task_graph.effect_runtime_result + def observe(method, params, **kwargs): + calls.append((method, params)) + return real(method, params, **kwargs) + monkeypatch.setattr(task_graph, "effect_runtime_result", observe) + source = [{"todo_id": "todo_work", "text": "Review work", "claimed_by": "builder", + "note": "must-not-cross", "evidence": "must-not-cross", + "unknown": {"opaque_integer": 9007199254740993, "amount": 2.0}}] + original = deepcopy(source) + result = project(source) + assert len(calls) == 1 + assert calls[0][0] == "work_item.task_graph.goal_topology" + assert "must-not-cross" not in json.dumps(calls[0][1]) + assert "opaque_integer" not in json.dumps(calls[0][1]) + assert "unknown" not in result["nodes"][0] + assert source == original + + +def test_unsafe_display_rows_are_omitted_without_replacing_the_source(): + private_path = "/" + "home" + "/synthetic/private.txt" + result = project([ + {"todo_id": "todo_private", "text": private_path}, + {"todo_id": "todo_secret", "text": "api_key=synthetic-value"}, + {"todo_id": "todo_visible", "text": "Review work", "claimed_by": private_path}, + ]) + node, = result["nodes"] + assert node["refs"] == {"todo_ids": ["todo_visible"]} + assert "owner_agent" not in node + + +def test_full_source_admission_is_bounded_without_hiding_omitted_nodes(): + rows = [{"todo_id": f"todo_work_{index}", "text": f"Review work {index}"} for index in range(121)] + result = project(rows, source_truncated=True, goal_id=" literal goal scope ") + assert result["goal_id"] == " literal goal scope " + assert len(result["nodes"]) == result["limits"]["node_limit"] == 120 + assert result["limits"]["omitted_node_count"] == 1 + assert result["limits"]["source_truncated"] is True + assert result["limits"]["topology_complete"] is False + + +def test_complete_source_survives_the_ordinary_transport_frame(): + rows = [{"todo_id": f"todo_{index:06d}_" + "x" * 100, + "title": "Review source " + str(index) + " public" * 30, + "claimed_by": "b" * 80, "task_domain": "d" * 80} + for index in range(12000)] + result = project(rows) + assert len(result["nodes"]) == 120 + assert result["limits"]["omitted_node_count"] == 11880 + assert result["limits"]["source_truncated"] is False + assert result["nodes"][0]["owner_agent"] == "b" * 80 + assert result["nodes"][-1]["refs"]["todo_ids"] == [rows[119]["todo_id"]] + + +def test_native_refusal_has_no_python_fallback(monkeypatch): + def refuse(*args, **kwargs): + raise RuntimeError("synthetic native refusal") + monkeypatch.setattr(task_graph, "effect_runtime_result", refuse) + with pytest.raises(RuntimeError, match="synthetic native refusal"): + project([{"todo_id": "todo_work", "text": "Review work"}]) diff --git a/tests/control_plane_ts/task_graph.test.ts b/tests/control_plane_ts/task_graph.test.ts index 95efa22a2f..0e92f4a0e4 100644 --- a/tests/control_plane_ts/task_graph.test.ts +++ b/tests/control_plane_ts/task_graph.test.ts @@ -1,6 +1,6 @@ import assert from "node:assert/strict"; import test from "node:test"; -import { projectGoalTaskGraphTopology, projectTaskGraphTopology, TASK_GRAPH_GOAL_TOPOLOGY_REQUEST, +import { GOAL_TASK_MAP_REQUEST, projectGoalTaskMap, projectGoalTaskGraphTopology, projectTaskGraphTopology, TASK_GRAPH_GOAL_TOPOLOGY_REQUEST, TASK_GRAPH_TOPOLOGY_REQUEST } from "../../loopx/control_plane/work_items/task_graph.ts"; import { projectRelations, todoRef } from "../../loopx/control_plane/work_items/planning_relations.ts"; import type { JsonObject } from "../../loopx/control_plane/effect_program.ts"; @@ -184,3 +184,107 @@ test("production-scale canonical fixture supports mixed ancestry without changin new Set(["lineage_only", "typed_condition"])); assert.equal(JSON.stringify(fixture.projection), before); }); + +const mapRow = (todo_id: string, extra: JsonObject = {}): JsonObject => ({ + ...row(todo_id, {done: false}), is_user: false, is_monitor: false, ...extra, +}); +function goalMap(items: JsonObject[], extra: JsonObject = {}): JsonObject { + return projectGoalTaskMap({schema_version: GOAL_TASK_MAP_REQUEST, goal_id: "goal_test", + source_truncated: false, items, ...extra}); +} +const mapProjection = (response: JsonObject) => response.projection as JsonObject; + +test("goal map composes topology and materialization instructions without emitting source-only facts", () => { + const response = goalMap([ + mapRow("todo_gate", {is_user: true, is_monitor: true, title: "\uFEFF", state: null, owner_agent: [], + task_domain: {}, unblocks_todo_id: "todo_work"}), + mapRow("todo_work", {title: {}, state: "invented", owner_agent: {}, + task_domain: [], private_notes: "must not escape"}), + mapRow("todo_monitor", {is_monitor: true}), + ], {goal_id: " \uFEFFgoal_test\uFEFF "}); + assert.deepEqual(response, { + schema_version: "goal_task_map_result_v0", + projection: { + schema_version: "goal_task_map_v0", mode: "read_only", goal_id: " \uFEFFgoal_test\uFEFF ", + limits: {node_limit: 120, emitted_node_count: 3, omitted_node_count: 0, source_truncated: false, + missing_endpoint_count: 0, cycle_edge_count: 0, topology_complete: true}, + nodes: [ + {kind: "gate", depth: 0, refs: {todo_ids: ["todo_gate"]}}, + {kind: "deliverable", depth: 1, refs: {todo_ids: ["todo_work"]}}, + {kind: "monitor", depth: 0, refs: {todo_ids: ["todo_monitor"]}}, + ], + edges: [{relation: "depends_on", enforcement: "typed_lifecycle", + reason: "Work has a typed lifecycle dependency on the linked unblocking Todo."}], + }, + node_identity_prefixes: ["node_gate", "node_todo", "node_todo"], + node_metadata_fields: [[], ["owner_agent", "task_domain"], ["owner_agent", "task_domain"]], + edge_identities: [{from_node_index: 1, to_node_index: 0, source_relation: "unblocks"}], + }); +}); + +test("goal map refuses duplicate canonical render-fact IDs", () => { + assert.throws(() => goalMap([ + mapRow("todo_same", {is_user: true}), mapRow("todo_same"), + ]), /Duplicate/); +}); + +test("goal map returns a complete empty map and preserves an empty Goal ID", () => { + assert.deepEqual(goalMap([], {goal_id: ""}), { + schema_version: "goal_task_map_result_v0", + projection: {schema_version: "goal_task_map_v0", mode: "read_only", goal_id: "", + limits: {node_limit: 120, emitted_node_count: 0, omitted_node_count: 0, source_truncated: false, + missing_endpoint_count: 0, cycle_edge_count: 0, topology_complete: true}, nodes: [], edges: []}, + node_identity_prefixes: [], node_metadata_fields: [], edge_identities: [], + }); +}); + +test("goal map carries missing endpoints, source truncation and dependency cycles into limits", () => { + const response = goalMap([ + mapRow("todo_alpha", {resume_when: "todo_done:todo_beta"}), + mapRow("todo_beta", {resume_when: "todo_done:todo_alpha"}), + mapRow("todo_gamma", {resume_when: "todo_done:todo_filtered"}), + ], {source_truncated: true}); + const projection = mapProjection(response); + assert.deepEqual(projection.limits, {node_limit: 120, emitted_node_count: 3, omitted_node_count: 0, + source_truncated: true, missing_endpoint_count: 1, cycle_edge_count: 1, topology_complete: false}); + assert.deepEqual((projection.nodes as JsonObject[]).map(node => node.depth), [1, 0, 0]); + assert.deepEqual(response.edge_identities, [ + {from_node_index: 0, to_node_index: 1, source_relation: "resumes_when"}, + {from_node_index: 1, to_node_index: 0, source_relation: "resumes_when"}, + ]); +}); + +test("goal map admits active work and direct prerequisites before filling the 120-node cap", () => { + const response = goalMap([ + ...Array.from({length: 121}, (_, index) => mapRow(`todo_old_${index}`, {done: true})), + mapRow("todo_open", {resume_when: "todo_done:todo_old_120"}), mapRow("todo_other"), + ]); + const projection = mapProjection(response); + const ids = (projection.nodes as JsonObject[]).map(node => (node.refs as JsonObject).todo_ids); + assert.equal(ids.length, 120); + assert.deepEqual(ids.slice(116), [["todo_old_116"], ["todo_old_120"], ["todo_open"], ["todo_other"]]); + assert.deepEqual(projection.limits, {node_limit: 120, emitted_node_count: 120, omitted_node_count: 3, + source_truncated: false, missing_endpoint_count: 0, cycle_edge_count: 0, topology_complete: false}); + assert.deepEqual(response.edge_identities, + [{from_node_index: 118, to_node_index: 117, source_relation: "resumes_when"}]); +}); + +test("goal map decodes node-kind facts after admission", () => { + const response = goalMap([ + ...Array.from({length: 120}, (_, index) => mapRow(`todo_active_${index}`)), + mapRow("todo_omitted", {done: true, is_user: "invalid", is_monitor: []}), + ]); + assert.equal((mapProjection(response).limits as JsonObject).omitted_node_count, 1); +}); + +test("goal map rejects malformed wire types at each consumed boundary", () => { + for (const extra of [{schema_version: "unknown"}, {goal_id: null}, {source_truncated: "false"}, {items: {}}]) { + assert.throws(() => goalMap([], extra)); + } + assert.throws(() => projectGoalTaskMap({schema_version: GOAL_TASK_MAP_REQUEST, + goal_id: "goal_test", source_truncated: false, items: [null]}), /object/); + for (const extra of [{todo_id: 1}, {todo_id: null}, {todo_id: ""}, {todo_id: undefined}, + {done: "false"}, {successor_todo_ids: [1]}, {unblocks_todo_id: true}, {is_user: "false"}, {is_monitor: 0}]) { + assert.throws(() => goalMap([mapRow("todo_invalid", extra)])); + } +}); diff --git a/tests/test_delivery_review.py b/tests/test_delivery_review.py index bc98f1ff9d..596c0fe4f1 100644 --- a/tests/test_delivery_review.py +++ b/tests/test_delivery_review.py @@ -9,9 +9,18 @@ import pytest from loopx.chat_server import ChatHTTPServer, ChatRequestHandler +from loopx.control_plane.coordination.local_authority import read_canonical_todos_if_promoted +from loopx.control_plane.coordination.runtime_shadow import build_todo_runtime_shadow_projection +from loopx.control_plane.effect_runtime import restart_effect_runtime from loopx.control_plane.runtime.public_safety import validate_public_safe_value +from loopx.control_plane.todos.active_state_todo_parser import parse_todo_source +from loopx.control_plane.todos.todo_summary import canonical_todo_read_record, structured_todo_item from loopx.state_refresh import refresh_state_run from loopx.status import collect_status +from tests.control_plane.canonical_authority_fixture import ( + initialize_canonical_authority, + isolate_sqlite_runtime, +) def make_project(root: Path) -> tuple[Path, Path]: @@ -110,6 +119,92 @@ def test_real_http_review_matches_cli_sources_without_canonical_writes(workspace assert (registry.read_bytes(), state.read_bytes()) == before +@pytest.mark.parametrize("provider", ["file", "sqlite"]) +@pytest.mark.parametrize("display", ["current", "missing"]) +def test_canonical_http_goal_map_survives_repeated_reads_and_runtime_restart( + workspace, tmp_path, monkeypatch, provider, display, +): + server, registry, runtime = workspace + isolate_sqlite_runtime(tmp_path, monkeypatch) + state = registry.parent / "ACTIVE_GOAL_STATE.md" + registry_before, source = registry.read_bytes(), state.read_bytes() + groups, _, _ = parse_todo_source(source.decode("utf-8")) + records = [canonical_todo_read_record(structured_todo_item( + item, role=role, source_section=item["source_section"], + )) for role, rows in groups.items() for item in rows] + # This independently specified map covers every source Todo, including the + # third gate omitted from the bounded attention graph. + expected_nodes = [ + {"node_id": node_id, "kind": kind, "title": title, "state": status, + "depth": depth, "refs": {"todo_ids": [todo_id]}, + **({"owner_agent": owner} if owner else {})} + for todo_id, node_id, kind, title, status, depth, owner in [ + ("todo_review", "node_gate_todo_review_32e2a5", "gate", + "Review the release candidate", "open", 0, None), + ("todo_support", "node_gate_todo_support_0bc755", "gate", + "Confirm support coverage", "open", 0, None), + ("todo_publish", "node_gate_todo_publish_6b56a7", "gate", + "Approve the publication boundary", "open", 0, None), + ("todo_integrate", "node_todo_todo_integrate_c547fe", "deliverable", + "Integrate the verified release package", "open", 1, "builder"), + ("todo_design", "node_todo_todo_design_2ab147", "deliverable", + "Specify the release acceptance criteria", "done", 0, "reviewer"), + ] + ] + expected = { + "schema_version": "goal_task_map_v0", "mode": "read_only", "goal_id": "release-demo", + "limits": {"node_limit": 120, "emitted_node_count": 5, "omitted_node_count": 0, + "source_truncated": False, "missing_endpoint_count": 0, + "cycle_edge_count": 0, "topology_complete": True}, + "nodes": sorted(expected_nodes, key=lambda node: node["node_id"]), + "edges": [ + {"edge_id": "edge_successor_node_todo_todo_integrate_c547fe_node_todo_to_87b417_87b417", + "from_node_id": "node_todo_todo_integrate_c547fe", "to_node_id": "node_todo_todo_design_2ab147", + "relation": "continues", "enforcement": "lineage_only", + "reason": "Work continues predecessor lineage; this is not a completion prerequisite."}, + {"edge_id": "edge_unblocks_node_todo_todo_integrate_c547fe_node_todo_to_87b417_87b417", + "from_node_id": "node_todo_todo_integrate_c547fe", "to_node_id": "node_todo_todo_design_2ab147", + "relation": "depends_on", "enforcement": "typed_lifecycle", + "reason": "Work has a typed lifecycle dependency on the linked unblocking Todo."}, + ], + } + try: + initialized = initialize_canonical_authority( + runtime, "release-demo", build_todo_runtime_shadow_projection( + goal_id="release-demo", todos=records, + ), state_path=state, provider=provider, + ) + before = read_canonical_todos_if_promoted(runtime_root=runtime, goal_id="release-demo") + assert before is not None + assert before["source_authority"] == f"{provider}_v0" + assert before["provider_revision"] == initialized["provider_revision"] + assert len(before["todos"]) == 5 + if display == "missing": + state.unlink() + previous_map = None + for restart in (False, False, True): + if restart: + assert restart_effect_runtime(wait_for_exit=True)["status"] == "stopped" + status, review = get(server) + assert status == 200 + goal_map = review["goal_map"] + assert goal_map is not None + assert {**goal_map, + "nodes": sorted(goal_map["nodes"], key=lambda node: node["node_id"]), + "edges": sorted(goal_map["edges"], key=lambda edge: edge["edge_id"])} == expected + if previous_map is not None: + assert goal_map == previous_map + previous_map = goal_map + validate_public_safe_value(review) + after = read_canonical_todos_if_promoted(runtime_root=runtime, goal_id="release-demo") + assert after is not None + assert (after["provider_revision"], after["todos"]) == (before["provider_revision"], before["todos"]) + assert registry.read_bytes() == registry_before + assert (state.read_bytes() if state.exists() else None) == (source if display == "current" else None) + finally: + restart_effect_runtime(wait_for_exit=True) + + def test_review_is_cold_and_missing_observations_stay_unknown(workspace, monkeypatch): server, _, _ = workspace calls = [] From 0441f5e600d8934a4e59d8a1b21a422510bade54 Mon Sep 17 00:00:00 2001 From: aihop <4408344+hhyykk@users.noreply.github.com> Date: Fri, 16 Oct 2026 12:02:41 +0800 Subject: [PATCH 2/5] docs(architecture): record native Goal-map composition and codec exits Signed-off-by: aihop <4408344+hhyykk@users.noreply.github.com> --- .../rfcs/typescript-control-plane-migration-v0.md | 11 ++++++++++- .../typescript-control-plane-migration-v0.zh-CN.md | 9 ++++++++- docs/reference/protocols/task-graph-projection-v0.md | 9 ++++++--- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/docs/architecture/rfcs/typescript-control-plane-migration-v0.md b/docs/architecture/rfcs/typescript-control-plane-migration-v0.md index a54d8085f8..e44df46661 100644 --- a/docs/architecture/rfcs/typescript-control-plane-migration-v0.md +++ b/docs/architecture/rfcs/typescript-control-plane-migration-v0.md @@ -1232,7 +1232,16 @@ Task-graph topology now shares `work_items/planning_relations.ts` with inventory and horizon. One pure TS request owns relationship discovery, deterministic bounded traversal, edge deduplication and missing/truncated completeness; the Python predecessor indexes, condition parser and traversal are retired. Python -retains status source adaptation and public-safe node/evidence/handoff rendering. +retains status source adaptation and public-safe node/evidence/handoff rendering +for the selected-work graph. The whole-Goal task map now composes its node kinds, +metadata visibility, edges and public map shape inside the same typed topology +request. Python keeps the shared renderable-source, text/state and stable-ID +codecs; metadata is sanitized only for admitted nodes. Those codecs retire when +the remaining selected-work graph and shared source consumers migrate together. +One map still uses one request. Expanded complete inputs use the existing private +snapshot transport instead of truncating the source at the ordinary wire limit. +The HTTP delivery-review composes its existing reads in one managed-runtime code +revision scope; provider reads and freshness checks retain their owners. This intentionally distinguishes successor lineage from completion dependencies, corrects unblocks direction, includes Monitor generation conditions and preserves parallel/diamond edges at the node cap. See the [graph contract](../../reference/protocols/task-graph-projection-v0.md#typed-todo-topology). diff --git a/docs/architecture/rfcs/typescript-control-plane-migration-v0.zh-CN.md b/docs/architecture/rfcs/typescript-control-plane-migration-v0.zh-CN.md index fadcb64882..a8f50c3d3f 100644 --- a/docs/architecture/rfcs/typescript-control-plane-migration-v0.zh-CN.md +++ b/docs/architecture/rfcs/typescript-control-plane-migration-v0.zh-CN.md @@ -827,7 +827,14 @@ Handoff mode 的 legacy adapter 与原生 CAS/receipt 事务现共用 TS 空 Task graph topology 与 inventory/horizon 共用 `work_items/planning_relations.ts`。 一轮纯 TS 请求拥有关系发现、稳定有界遍历、边去重与缺失/截断完整度;删除 Python 的前驱索引、条件拆解和遍历。Python 保留 status 来源适配及节点、 -evidence/handoff 的脱敏展示。明确的语义修正:successor 谱系不再冒充完成 +evidence/handoff 的脱敏展示,适用于选中工作项的图。整 Goal 任务地图现在在 +同一 TS 拓扑请求内组合节点类型、元数据可见性、边和公共地图结构。Python 暂留共享的 +可展示来源、文本/状态及稳定 ID codec;元数据只对已准入节点做脱敏。剩余的 +选中工作项图和共享来源消费者一起迁移后,这些 codec 退役。一张地图仍只发 +一次请求;扩大的完整输入复用既有私有快照传输,不在普通传输上限处截断来源。 +HTTP delivery-review 的既有读取复用同一托管运行时代码版本作用域;provider +读取和新鲜度检查仍由既有 owner 持有。 +明确的语义修正:successor 谱系不再冒充完成 依赖,unblocks 方向修正,补 Monitor generation 条件,上限处保留平行关系 和菱形汇合边。详见[图协议](../../reference/protocols/task-graph-projection-v0.md#typed-todo-topology)。 不改变生命周期准入、claim/lease 或默认 provider。来源仍可能不完整:本批 diff --git a/docs/reference/protocols/task-graph-projection-v0.md b/docs/reference/protocols/task-graph-projection-v0.md index fbe0692118..ffcbe85330 100644 --- a/docs/reference/protocols/task-graph-projection-v0.md +++ b/docs/reference/protocols/task-graph-projection-v0.md @@ -213,10 +213,13 @@ added to status hot paths. - Edges use the relation mapping in the table above. `enforcement` reuses the `planning_relations` catalog (`typed_lifecycle`, `typed_condition`, `lineage_only`), so a reader can tell a lifecycle link from lineage. -- The TS effect `work_item.task_graph.goal_topology` owns admission, edges and - `depth` (the longest recorded prerequisite path). Admission is deterministic: +- The TS effect `work_item.task_graph.goal_topology` composes the map's node + kinds, metadata visibility, edges, limits and `depth` (the longest recorded + prerequisite path). Python retains shared source/text/state/identity codecs; + owner labels are sanitized only after admission. Admission is deterministic: unfinished work first, then direct completed prerequisites of unfinished - work, then remaining history, up to `node_limit` (at most 200). + work, then remaining history, up to the public map's 120-node limit. The + reusable internal topology lens accepts limits up to 200. - `depends_on` edges order the map. Lineage (`continues`, `supersedes`) carries no ordering obligation: it adds depth only where it agrees with the dependency order. A follow-up recorded opposite to a dependency, such as a From 4da8b664e37035d7513b570bf2efe9bfea4786bd Mon Sep 17 00:00:00 2001 From: LoopX Agent <337587101+loopx-agent@users.noreply.github.com> Date: Sat, 17 Oct 2026 22:15:11 +0800 Subject: [PATCH 3/5] fix: carry goal-map source freshness through delivery review Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com> --- .../dashboard/src/data/delivery-review.ts | 29 ++++++++++++++++++- .../delivery-review-copy.ts | 10 +++++-- .../personal-workspace/delivery-review.tsx | 24 +++++++++++---- loopx/chat_status_api.py | 28 ++++++++++++++++-- loopx/control_plane/work_items/task_graph.py | 3 ++ loopx/control_plane/work_items/task_graph.ts | 19 ++++++++++++ 6 files changed, 102 insertions(+), 11 deletions(-) diff --git a/apps/presentation/dashboard/src/data/delivery-review.ts b/apps/presentation/dashboard/src/data/delivery-review.ts index 3eb32199f2..f40702d2cd 100644 --- a/apps/presentation/dashboard/src/data/delivery-review.ts +++ b/apps/presentation/dashboard/src/data/delivery-review.ts @@ -1,6 +1,16 @@ import { z } from "zod"; import { goalAcceptanceDisplayStatus, goalAcceptanceObservationSchema, type GoalAcceptanceContract } from "./goal-acceptance-observation.js"; +// Consumer validation only; freshness and coverage remain kernel decisions. +const projectionEnvelopeSchema = z.object({ + schema_version: z.literal("loopx_projection_envelope_v0"), projection: z.string(), + observed_at: z.string().datetime({offset: true}), served_at: z.string().datetime({offset: true}), + fresh: z.boolean(), complete: z.boolean(), alert: z.boolean(), alert_reasons: z.array(z.string()), + sources: z.array(z.object({source_id: z.string(), last_read_at: z.string().nullable(), status: z.string()}).passthrough()), + coverage: z.object({scope: z.string(), expected_count: z.number().int().nonnegative().nullable(), + included_count: z.number().int().nonnegative(), omitted: z.array(z.object({reason: z.string(), count: z.number().int().positive()}).passthrough())}).passthrough(), +}).passthrough(); + const refsSchema = z.record(z.string(), z.array(z.string())); const nodeSchema = z.object({ node_id: z.string().min(1), @@ -45,6 +55,7 @@ const goalMapNodeSchema = z.object({ }); const goalMapSchema = z.object({ schema_version: z.literal("goal_task_map_v0"), mode: z.literal("read_only"), goal_id: z.string(), + projection_envelope: projectionEnvelopeSchema.optional(), limits: z.object({ node_limit: z.number().int().positive(), emitted_node_count: z.number().int().nonnegative(), omitted_node_count: z.number().int().nonnegative(), source_truncated: z.boolean(), @@ -66,6 +77,7 @@ const goalMapSchema = z.object({ }); const snapshotSchema = z.object({ ok: z.literal(true), goal_id: z.string(), observed_at: z.string().datetime({ offset: true }), + projection_envelope: projectionEnvelopeSchema.optional(), graph: graphSchema.nullable(), goal_map: goalMapSchema.nullable().optional(), acceptance: goalAcceptanceObservationSchema.nullable(), }); @@ -81,7 +93,9 @@ export function parseDeliveryReview(value: unknown, goalId: string): DeliveryRev const result = snapshotSchema.parse(value); if (result.goal_id !== goalId || (result.graph && result.graph.goal_id !== goalId) || (result.goal_map && result.goal_map.goal_id !== goalId) - || (result.acceptance && result.acceptance.goal_id !== goalId)) { + || (result.acceptance && result.acceptance.goal_id !== goalId) + || (result.projection_envelope && result.projection_envelope.projection !== "delivery_review") + || (result.goal_map?.projection_envelope && result.goal_map.projection_envelope.projection !== "goal_task_map")) { throw new Error("Review source does not match the selected Goal"); } return result; @@ -136,15 +150,27 @@ export type ReviewExportLabels = { acceptance: string; acceptanceBoundary: string; noGraph: string; incomplete: string; unavailable: string; refs: string; required: string; guards: string; next: string; owner: string; reason: string; historical: string; checks: string; missingSources: string; observedScope: string; + sourceUnknown: string; sourceWarning: string; coverageWarning: string; kind: Record; state: Record; relation: Record; workMap: { title: string; boundary: string; kind: Record; relation: Record } & Record; }; +/** Display the owner's flags, including unknown older responses; do not age a second clock. */ +export function deliveryReviewWarning(snapshot: DeliveryReviewSnapshot, labels: Pick) { + const envelope = snapshot.projection_envelope; + return !envelope ? labels.sourceUnknown : !envelope.fresh ? labels.sourceWarning + : !envelope.complete ? labels.coverageWarning : null; +} + /** Export the entire validated snapshot, never the search-filtered screen. */ export function deliveryReviewMarkdown(snapshot: DeliveryReviewSnapshot, labels: ReviewExportLabels) { const line = (value: unknown) => String(value ?? labels.unavailable).replace(/[\\`*_{}[\]<>|#]/g, "\\$&").replace(/[\r\n]+/g, " "); const rows = [`# ${labels.title}`, "", `Goal: ${line(snapshot.goal_id)}`, `${labels.observed}: ${line(snapshot.observed_at)}`, "", labels.scope, "", labels.acceptanceBoundary, "", `## ${labels.chain}`, ""]; + const warning = deliveryReviewWarning(snapshot, labels); + if (warning) rows.push(warning, ""); + if (snapshot.projection_envelope) rows.push("```json", JSON.stringify(snapshot.projection_envelope, null, 2), "```", ""); const graph = snapshot.graph; if (!graph) rows.push(labels.noGraph); else { @@ -164,6 +190,7 @@ export function deliveryReviewMarkdown(snapshot: DeliveryReviewSnapshot, labels: const map = snapshot.goal_map; if (map) { rows.push("", `## ${labels.workMap.title}`, "", labels.workMap.boundary, "", "```json", JSON.stringify(map.limits, null, 2), "```", ""); + if (map.projection_envelope) rows.push("```json", JSON.stringify(map.projection_envelope, null, 2), "```", ""); const names = new Map(map.nodes.map(node => [node.node_id, node.title])); for (const node of map.nodes) rows.push(`- ${line(node.title)} · ${labels.workMap.kind[node.kind]} · ${labels.state[node.state]}${node.owner_agent ? ` · ${line(node.owner_agent)}` : ""} (${line(node.refs.todo_ids?.join(", "))})`); if (map.edges.length) rows.push(""); diff --git a/apps/presentation/dashboard/src/features/personal-workspace/delivery-review-copy.ts b/apps/presentation/dashboard/src/features/personal-workspace/delivery-review-copy.ts index 575c450d83..3d69f2f23c 100644 --- a/apps/presentation/dashboard/src/features/personal-workspace/delivery-review-copy.ts +++ b/apps/presentation/dashboard/src/features/personal-workspace/delivery-review-copy.ts @@ -32,6 +32,9 @@ const en = { contract: goalAcceptanceContractCopy.en, title: "Delivery & evidence", scope: "The delivery chain covers current work, a few predecessors and their evidence. The work map covers every task that is not archived.", observed: "Snapshot read", chain: "Delivery chain", relations: "Relationships", acceptance: "Acceptance observations", + sourceUnknown: "Source freshness and coverage are unknown in this snapshot. Refresh to read them.", + sourceWarning: "Some sources are outdated or unreadable. Refresh before relying on this snapshot.", + coverageWarning: "This snapshot does not cover all requested information. Check the missing or unexpanded sources below.", acceptanceBoundary: "Completed tasks and recorded evidence do not certify Goal acceptance.", noGraph: "No delivery chain is available in this snapshot. This does not mean all work is complete.", incomplete: "Some related information is missing or not expanded.", @@ -59,7 +62,7 @@ const en = { tasksDone: "tasks done", blocked: "blocked", waiting: "waiting", decisions: "need your decision", watches: "watching", hidden: "finished or deferred, hidden", unlinked: "Not linked to other work", empty: "This Goal has no tasks yet.", owner: "Owner", showMore: "Show {count} more", showFewer: "Show fewer", doneBefore: "+{count} done before", noLinks: "No task links are recorded between these items yet.", - unavailable: "This source does not provide a work map.", + unavailable: "The work map is unavailable. Refresh to retry.", kind: { deliverable: "Task", gate: "Decision", monitor: "Watch" }, tone: { decision: "Needs you", blocked: "Blocked", open: "Open", waiting: "Waiting", done: "Done", unknown: "Unknown" }, before: "Before this", after: "After this", nothingBefore: "No recorded prerequisites.", nothingAfter: "Nothing recorded depends on this yet.", @@ -74,6 +77,9 @@ const zh: typeof en = { contract: goalAcceptanceContractCopy["zh-CN"], title: "交付与依据", scope: "交付链仅含当前工作、少量前序及其证据;工作地图包含全部未归档任务。", observed: "快照读取时间", chain: "交付链", relations: "关联关系", acceptance: "验收观察", + sourceUnknown: "当前快照的来源新鲜度与覆盖范围未知,请刷新重新读取。", + sourceWarning: "部分来源已过期或不可读,请刷新后再据此判断。", + coverageWarning: "当前快照未覆盖全部请求信息,请查看下方缺失或未展开的来源。", acceptanceBoundary: "任务完成、已有证据均不等于 Goal 已通过验收。", noGraph: "当前快照没有可展示的交付链,这不代表工作已经全部完成。", incomplete: "部分关联信息缺失或未展开。", @@ -101,7 +107,7 @@ const zh: typeof en = { tasksDone: "项任务已完成", blocked: "受阻", waiting: "等待", decisions: "需你决策", watches: "持续监控", hidden: "项已完成或延后的工作已隐藏", unlinked: "未与其他工作关联", empty: "此 Goal 还没有任务。", owner: "负责人", showMore: "显示其余 {count} 项", showFewer: "收起", doneBefore: "另有 {count} 项已完成前序", noLinks: "这些事项之间还没有记录的任务关联。", - unavailable: "此来源不提供工作地图。", + unavailable: "工作地图暂不可用,请刷新重试。", kind: { deliverable: "任务", gate: "决策", monitor: "监控" }, tone: { decision: "需要你", blocked: "受阻", open: "待处理", waiting: "等待", done: "已完成", unknown: "未知" }, before: "之前", after: "之后", nothingBefore: "未记录前置工作。", nothingAfter: "暂无记录依赖此项的工作。", diff --git a/apps/presentation/dashboard/src/features/personal-workspace/delivery-review.tsx b/apps/presentation/dashboard/src/features/personal-workspace/delivery-review.tsx index cb4f360eea..5cdddbb262 100644 --- a/apps/presentation/dashboard/src/features/personal-workspace/delivery-review.tsx +++ b/apps/presentation/dashboard/src/features/personal-workspace/delivery-review.tsx @@ -1,6 +1,6 @@ import { useId, useMemo, useRef, useState } from "react"; import { ArrowRight, CircleAlert, Download, ExternalLink, RefreshCw, Search } from "lucide-react"; -import { deliveryReviewMarkdown, filterReviewNodes, reviewCoverageIncomplete, reviewNodeColumn, type ReviewFocus, type ReviewGraph, type ReviewNode } from "../../data/delivery-review"; +import { deliveryReviewMarkdown, deliveryReviewWarning, filterReviewNodes, reviewCoverageIncomplete, reviewNodeColumn, type ReviewFocus, type ReviewGraph, type ReviewNode } from "../../data/delivery-review"; import type { WorkspaceDrawerSelection, WorkspaceGoal, WorkspaceModel, WorkspaceTimelineItem } from "./personal-workspace-model"; import { GoalAcceptanceObservationCard } from "./goal-acceptance-observation-card"; import { GoalAcceptanceContractSection } from "./goal-acceptance-contract"; @@ -13,6 +13,14 @@ import "./delivery-review.css"; type Copy = typeof deliveryReviewCopy.en; +function SourceNotice({review, copy, mapOnly = false}: {review: DeliveryReviewRead; copy: Copy; mapOnly?: boolean}) { + const snapshot = review.snapshot; + const warning = snapshot ? deliveryReviewWarning(mapOnly ? {...snapshot, + projection_envelope: snapshot.goal_map?.projection_envelope} : snapshot, copy) : null; + const envelope = mapOnly ? snapshot?.goal_map?.projection_envelope : snapshot?.projection_envelope; + return warning ?

{warning}

: null; +} + function ReviewMap({ graph, nodes, selected, onSelect, copy }: { graph: ReviewGraph; nodes: ReviewNode[]; selected: string | null; onSelect: (id: string) => void; copy: Copy; }) { @@ -119,7 +127,8 @@ export function DeliveryReviewContent({ goal, items, userTodos, onSelect, review

{copy.observed} · {state.kind === "loading" || (stale && state.kind !== "error") ? · {copy.updating} : null}

{stale && state.kind === "error" ?

{copy.changed}

: null} - {!hideWorkMap ? {if (selection) onSelect(selection);}} /> : null} + + {!hideWorkMap ? {if (selection) onSelect(selection);}} /> : null}

{copy.scope} {copy.acceptanceBoundary}

{graph ? <> {reviewCoverageIncomplete(graph) ?
{copy.incomplete}
@@ -160,9 +169,10 @@ export function DeliveryReviewContent({ goal, items, userTodos, onSelect, review } /** Same map and exact-request fallback, now usable as an Overview work lens. */ -export function DeliveryWorkMap({goal, userTodos, review, onSelect, selectedTodoId}: { +export function DeliveryWorkMap({goal, userTodos, review, onSelect, selectedTodoId, showSourceNotice = true}: { goal: WorkspaceGoal; userTodos: WorkspaceModel["userTodos"]; review: DeliveryReviewRead; onSelect: (selection: WorkspaceDrawerSelection | null) => void; selectedTodoId?: string | null; + showSourceNotice?: boolean; }) { const {locale} = useWorkspaceI18n(); const copy = deliveryReviewCopy[locale]; @@ -185,13 +195,17 @@ export function DeliveryWorkMap({goal, userTodos, review, onSelect, selectedTodo return { kind: "todo", item: { ...todo, goalId: goal.goalId, goalTitle: goal.title, ownerLabel: todo.claimedBy } }; } const map = review.snapshot?.goal_map; - if (!map) return

{review.kind === "loading" ? copy.loading : copy.workMap.unavailable}

; + if (!map) return
+ {review.kind === "loading" ? copy.loading : <>{copy.workMap.unavailable} + } +
; const selected = selectedTodoId === undefined ? localSelection : selectedTodoId ? map.nodes.find(node => node.refs.todo_ids?.includes(selectedTodoId))?.node_id ?? null : (() => {const node = map.nodes.find(node => node.node_id === localSelection); return node && (node.kind === "gate" || !node.refs.todo_ids?.length) ? localSelection : null;}) (); return <> - {!review.usable ?

{review.kind === "error" ? copy.refreshError : copy.updating}

: null} + {!review.usable && review.kind !== "ready" ?

{review.kind === "error" ? copy.refreshError : copy.updating}

: null} + {showSourceNotice ? : null} { setLocalSelection(id); diff --git a/loopx/chat_status_api.py b/loopx/chat_status_api.py index 2e992a66d2..9402f41fe7 100644 --- a/loopx/chat_status_api.py +++ b/loopx/chat_status_api.py @@ -4,7 +4,6 @@ import errno import json -from datetime import datetime, timezone from pathlib import Path from typing import Any from urllib.parse import parse_qs, urlparse @@ -37,6 +36,8 @@ todo_done_for_status, ) from .control_plane.work_items.task_graph import build_goal_task_map +from .control_plane.projection_envelope_facts import seal_projection_envelope, source_fact +from .control_plane.runtime.time import now_utc_iso from .feedback import validate_goal_id from .history import load_registry from .control_plane.projects.registry_codec import load_project_registry @@ -53,6 +54,7 @@ def _goal_task_map(server: Any, goal_id: str) -> dict[str, Any] | None: runtime_root = server.runtime_root_override + source_read_at = now_utc_iso() try: listed = list_goal_todos( registry_path=server.registry_path, @@ -72,6 +74,7 @@ def _goal_task_map(server: Any, goal_id: str) -> dict[str, Any] | None: todo_done_for_status=todo_done_for_status, todo_status_open=TODO_STATUS_OPEN, monitor_task_class=TODO_TASK_CLASS_MONITOR, + source_read_at=source_read_at, ) @@ -277,12 +280,31 @@ def _status(self, *, delivery_review: bool = False) -> None: if row.get("goal_id") == goal_id), {}) goal = next((row for row in projection.get("run_history", {}).get("goals", []) if row.get("id") == goal_id), {}) + goal_map = _goal_task_map(self.server, goal_id) + observed_at = now_utc_iso() + components = [item.get("task_graph_projection"), goal_map, goal.get("acceptance_observation")] + upstream = [value for value in [projection.get("projection_envelope"), + goal_map.get("projection_envelope") if goal_map else None] if isinstance(value, dict)] + sources = [] + if not isinstance(projection.get("projection_envelope"), dict): + sources.append(source_fact("status", read_status="not_read")) + if goal_map is None: + sources.append(source_fact("goal_todos", read_status="unreadable")) + missing = sum(value is None for value in components) + envelope = seal_projection_envelope( + projection="delivery_review", observed_at=observed_at, + sources=sources, upstream=upstream, + coverage={"scope": "selected_goal_delivery", "expected_count": 3, + "included_count": 3 - missing, + "omitted": [{"reason": "unavailable_components", "count": missing}] if missing else []}, + ) projection = { "ok": True, "goal_id": goal_id, - "observed_at": datetime.now(timezone.utc).isoformat(), + "observed_at": observed_at, + "projection_envelope": envelope, "graph": item.get("task_graph_projection"), - "goal_map": _goal_task_map(self.server, goal_id), + "goal_map": goal_map, "acceptance": goal.get("acceptance_observation"), } validate_public_safe_value(projection) diff --git a/loopx/control_plane/work_items/task_graph.py b/loopx/control_plane/work_items/task_graph.py index b8dbd253b6..0f1bcedb90 100644 --- a/loopx/control_plane/work_items/task_graph.py +++ b/loopx/control_plane/work_items/task_graph.py @@ -977,6 +977,7 @@ def build_goal_task_map( todo_done_for_status: Callable[[str], bool], todo_status_open: str, monitor_task_class: str, + source_read_at: str | None = None, ) -> dict[str, Any]: """Adapt shared source/identity codecs to the native Goal-map composer.""" @@ -1002,6 +1003,8 @@ def build_goal_task_map( request = { "schema_version": "goal_task_map_request_v0", "goal_id": goal_id, "items": rows, "source_truncated": source_truncated, + "read_facts": {"observed_at": now_utc_iso(), "source_read_at": source_read_at, + "source_count": len(todos)}, } # Reserve framing bytes while keeping ordinary maps on the inline transport. use_snapshot = len(json.dumps(request, separators=(",", ":")).encode()) > MAX_REQUEST_BYTES - 4096 diff --git a/loopx/control_plane/work_items/task_graph.ts b/loopx/control_plane/work_items/task_graph.ts index 96920f6b3e..187909f052 100644 --- a/loopx/control_plane/work_items/task_graph.ts +++ b/loopx/control_plane/work_items/task_graph.ts @@ -4,6 +4,7 @@ import { requireBoolean, requireInteger, requireJsonObject, requireNonEmptyStrin requireStringArray } from "../runtime_decode.ts"; import { projectRelations, todoRef, type PlanningInventoryRelation, type PlanningRelationSource } from "./planning_relations.ts"; +import { PROJECTION_ENVELOPE_SEAL_REQUEST, sealProjectionEnvelope } from "../projection_envelope.ts"; export const TASK_GRAPH_TOPOLOGY_REQUEST = "task_graph_topology_request_v0"; export const TASK_GRAPH_TOPOLOGY_RESULT = "task_graph_topology_result_v0"; @@ -244,11 +245,29 @@ export function projectGoalTaskMap(value: unknown): JsonObject { const nodes = entries.map(entry => goalMapNode(byId.get(entry.todo_id)!, entry.depth)); const indices = new Map(entries.map((entry, index) => [entry.todo_id, index])); const edges = topology.edges as GraphEdge[]; + const facts = requireJsonObject(request.read_facts, "goal map read facts"); + const sourceCount = requireInteger(facts.source_count, "goal map source_count"); + if (sourceCount < rows.length) throw new EffectRuntimeRequestError("goal map source count is incomplete"); + const limits = topology.completeness as JsonObject; + const omitted = [ + {reason: "unrenderable_todos", count: sourceCount - rows.length}, + {reason: "map_node_limit", count: Number(limits.omitted_node_count)}, + {reason: "unresolved_map_relations", count: Number(limits.missing_endpoint_count) + Number(limits.cycle_edge_count)}, + ].filter(value => value.count > 0); + const envelope = sealProjectionEnvelope({ + schema_version: PROJECTION_ENVELOPE_SEAL_REQUEST, projection: "goal_task_map", + observed_at: facts.observed_at, + sources: [{source_id: "goal_todos", read_status: facts.source_read_at == null ? "not_read" : "read", + last_read_at: facts.source_read_at, item_count: sourceCount}], + coverage: {scope: "goal_task_map", expected_count: sourceTruncated ? null : sourceCount, + included_count: nodes.length, omitted, shown_count: nodes.length, available_count: sourceCount}, + }); return { schema_version: GOAL_TASK_MAP_RESULT, projection: { schema_version: "goal_task_map_v0", mode: "read_only", goal_id: request.goal_id, limits: topology.completeness, nodes, + projection_envelope: envelope, edges: edges.map(edge => ({ relation: edge.relation, enforcement: edge.enforcement, reason: edge.reason })), }, node_identity_prefixes: nodes.map(node => node.kind === "gate" ? "node_gate" : "node_todo"), From 8951bf52715826597c882d7bdc1c89a42554ffc0 Mon Sep 17 00:00:00 2001 From: LoopX Agent <337587101+loopx-agent@users.noreply.github.com> Date: Sat, 17 Oct 2026 22:15:11 +0800 Subject: [PATCH 4/5] test: qualify live, unavailable and replayed goal-map readback Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com> --- .../goal-map-readback/current-desktop.png | Bin 0 -> 115017 bytes .../assets/goal-map-readback/stale-mobile.png | Bin 0 -> 66368 bytes .../goal-map-readback/unavailable-desktop.png | Bin 0 -> 108283 bytes .../dashboard/smoke/delivery-review-smoke.mjs | 19 ++++++- .../goal-work-map.mjs | 3 +- .../goal-workspace-m2.mjs | 6 +- .../showcase-workspace.mjs | 29 +++++++++- .../test_goal_task_map_composition.py | 23 +++++++- tests/control_plane_ts/task_graph.test.ts | 29 +++++++++- tests/test_delivery_review.py | 53 +++++++++++++++++- 10 files changed, 150 insertions(+), 12 deletions(-) create mode 100644 apps/presentation/dashboard/docs/assets/goal-map-readback/current-desktop.png create mode 100644 apps/presentation/dashboard/docs/assets/goal-map-readback/stale-mobile.png create mode 100644 apps/presentation/dashboard/docs/assets/goal-map-readback/unavailable-desktop.png diff --git a/apps/presentation/dashboard/docs/assets/goal-map-readback/current-desktop.png b/apps/presentation/dashboard/docs/assets/goal-map-readback/current-desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..fbfc87caddba33327b16e2ee9fd75f4cd72bc4d6 GIT binary patch literal 115017 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

*W5vJ} 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 parseDeliveryReview({...snapshot, projection_envelope: {...envelope, projection: "status"}}, "review-demo")); +assert.throws(() => parseDeliveryReview({...snapshot, projection_envelope: {...envelope, fresh: "true"}}, "review-demo")); const parsed = parseDeliveryReview(snapshot, "review-demo"); const graph = parsed.graph; assert.equal(graph.edges.length, 4, "Parallel lineage and dependency edges must survive"); diff --git a/examples/personal-workspace-browser/goal-work-map.mjs b/examples/personal-workspace-browser/goal-work-map.mjs index f02721fd46..6a510ceca3 100644 --- a/examples/personal-workspace-browser/goal-work-map.mjs +++ b/examples/personal-workspace-browser/goal-work-map.mjs @@ -6,6 +6,7 @@ import { tmpdir } from "node:os"; import { createInterface } from "node:readline"; import { resolveTestPython } from "../../scripts/test-python.mjs"; import { outputDir, repoRoot } from "./fixture.mjs"; +import { deliveryReadFixture } from "./showcase-workspace.mjs"; import { fetchWorkspaceBackend, openWorkspacePage } from "./scenario-context.mjs"; async function requestAuthority(text) { @@ -123,7 +124,7 @@ export const goalWorkMapScenario = { const routeReview = (api, page) => page.route("**/api/chat/delivery-review?*", route => { const goalId = new URL(route.request().url()).searchParams.get("goal_id"); reads.push(goalId); - return route.fulfill({ json: { ok: true, goal_id: goalId, observed_at: new Date().toISOString(), graph: null, goal_map: goalMap(goalId, limits), acceptance: null } }); + return route.fulfill({ json: deliveryReadFixture({ ok: true, goal_id: goalId, observed_at: new Date().toISOString(), graph: null, goal_map: goalMap(goalId, limits), acceptance: null }) }); }); const beforeGoto = async (api, page) => { await routeReview(api, page); await routeRequest(api, page); }; const desktop = await openWorkspacePage(browser, url, { collectCoverage, beforeGoto }); diff --git a/examples/personal-workspace-browser/goal-workspace-m2.mjs b/examples/personal-workspace-browser/goal-workspace-m2.mjs index cf2204e8f6..d27767df92 100644 --- a/examples/personal-workspace-browser/goal-workspace-m2.mjs +++ b/examples/personal-workspace-browser/goal-workspace-m2.mjs @@ -3,7 +3,7 @@ import {resolve} from "node:path"; import {outputDir, repoRoot} from "./fixture.mjs"; import {readFile} from "node:fs/promises"; import {openWorkspacePage} from "./scenario-context.mjs"; -import {installShowcaseWorkspace, openShowcaseGoal, showcaseGoalId} from "./showcase-workspace.mjs"; +import {deliveryReadFixture, installShowcaseWorkspace, openShowcaseGoal, showcaseGoalId} from "./showcase-workspace.mjs"; export const goalWorkspaceM2Scenario = { id: "goal-workspace-m2", @@ -36,11 +36,11 @@ export const goalWorkspaceM2Scenario = { }; await page.route("**/api/chat/delivery-review?*", async route => { if (!scale) {await route.fallback(); return;} - await route.fulfill({json: {ok:true, goal_id:showcaseGoalId, observed_at:new Date().toISOString(), acceptance:null, graph:null, + await route.fulfill({json: deliveryReadFixture({ok:true, goal_id:showcaseGoalId, observed_at:new Date().toISOString(), acceptance:null, graph:null, goal_map:{schema_version:"goal_task_map_v0",mode:"read_only",goal_id:showcaseGoalId, limits:{node_limit:200,emitted_node_count:200,omitted_node_count:0,source_truncated:false,missing_endpoint_count:0,cycle_edge_count:0,topology_complete:true}, nodes:many.map((todo,i)=>({node_id:todo.todo_id,kind:"deliverable",title:todo.text,state:i===0?"blocked":"open",depth:i%2,refs:{todo_ids:[todo.todo_id]}})), - edges:many.filter((_,i)=>i%2===1).map(todo=>({edge_id:`edge-${todo.todo_id}`,from_node_id:todo.todo_id,to_node_id:`scale-${String(Number(todo.todo_id.slice(6))-1).padStart(3,"0")}`,relation:"depends_on",enforcement:"typed_condition",reason:"Recorded synthetic completion condition"}))}}}); + edges:many.filter((_,i)=>i%2===1).map(todo=>({edge_id:`edge-${todo.todo_id}`,from_node_id:todo.todo_id,to_node_id:`scale-${String(Number(todo.todo_id.slice(6))-1).padStart(3,"0")}`,relation:"depends_on",enforcement:"typed_condition",reason:"Recorded synthetic completion condition"}))}})}); }); page.on("request", request => {if (request.method() !== "GET" && /actions|quota|validat/.test(request.url())) writes.push(request.url());}); }}); diff --git a/examples/personal-workspace-browser/showcase-workspace.mjs b/examples/personal-workspace-browser/showcase-workspace.mjs index 803065dc6e..b21061b77f 100644 --- a/examples/personal-workspace-browser/showcase-workspace.mjs +++ b/examples/personal-workspace-browser/showcase-workspace.mjs @@ -4,6 +4,31 @@ // take their before/after screenshots from this state so reviewers judge the // composition against realistic content rather than fixture placeholders. // Every name, number and title here is invented. +import { sealProjectionEnvelope, PROJECTION_ENVELOPE_SEAL_REQUEST } from "../../loopx/control_plane/projection_envelope.ts"; + +/** Synthetic response metadata, not evidence of real source/backend freshness. */ +export function deliveryReadFixture(snapshot) { + const map = snapshot.goal_map; + const sources = [{source_id: "fixture_delivery", read_status: "read", last_read_at: snapshot.observed_at}]; + const seal = (projection, coverage, upstream = []) => sealProjectionEnvelope({ + schema_version: PROJECTION_ENVELOPE_SEAL_REQUEST, projection, + observed_at: snapshot.observed_at, sources: projection === "goal_task_map" ? sources : [], coverage, upstream, + }); + const omitted = map ? [ + {reason: "map_node_limit", count: map.limits.omitted_node_count}, + {reason: "unresolved_map_relations", count: map.limits.missing_endpoint_count + map.limits.cycle_edge_count}, + ].filter(row => row.count > 0) : []; + const mapEnvelope = map ? seal("goal_task_map", {scope: "goal_task_map", + expected_count: map.limits.source_truncated ? null : map.nodes.length + map.limits.omitted_node_count, + included_count: map.nodes.length, omitted}) : null; + const missing = [snapshot.graph, map, snapshot.acceptance].filter(value => value == null).length; + return {...snapshot, goal_map: map ? {...map, projection_envelope: mapEnvelope} : null, + projection_envelope: seal("delivery_review", {scope: "selected_goal_delivery", expected_count: 3, + included_count: 3 - missing, omitted: missing ? [{reason: "unavailable_components", count: missing}] : []}, + mapEnvelope ? [mapEnvelope] : []), + }; +} + export const showcaseGoalId = "progress-projection"; export const showcaseGoalTitle = "Migrate billing exports to the ledger API"; const goalId = showcaseGoalId; @@ -65,7 +90,7 @@ const mapNode = (id, kind, nodeTitle, state, depth, extra = {}) => const mapEdge = (from, to, relation, enforcement) => ({ edge_id: `map_${from}_${to}_${relation}`, from_node_id: `map_${from}`, to_node_id: `map_${to}`, relation, enforcement, reason: "Recorded task relation." }); function deliverySnapshot() { - return { + return deliveryReadFixture({ ok: true, goal_id: goalId, observed_at: minutesAgo(1), acceptance, goal_map: { schema_version: "goal_task_map_v0", mode: "read_only", goal_id: goalId, @@ -90,7 +115,7 @@ function deliverySnapshot() { ], }, graph: null, - }; + }); } /** Installs the showcase status, usage and delivery reads. `state` stays live: change it, then refresh. */ diff --git a/tests/control_plane/test_goal_task_map_composition.py b/tests/control_plane/test_goal_task_map_composition.py index 5b78fd1fca..73a888ce07 100644 --- a/tests/control_plane/test_goal_task_map_composition.py +++ b/tests/control_plane/test_goal_task_map_composition.py @@ -13,15 +13,36 @@ from loopx.control_plane.work_items import task_graph -def project(rows, *, goal_id="graph-fixture", source_truncated=False, normalizer=normalize_todo_status): +def project(rows, *, goal_id="graph-fixture", source_truncated=False, normalizer=normalize_todo_status, + source_read_at=None): return task_graph.build_goal_task_map( goal_id=goal_id, todos=rows, source_truncated=source_truncated, public_safe_compact_text=public_safe_compact_text, normalize_todo_status=normalizer, todo_done_for_status=todo_done_for_status, todo_status_open=TODO_STATUS_OPEN, monitor_task_class=TODO_TASK_CLASS_MONITOR, + source_read_at=source_read_at, ) +def test_map_preserves_source_age_and_unknown_or_partial_coverage(monkeypatch): + monkeypatch.setattr(task_graph, "now_utc_iso", lambda: "2026-10-01T00:06:00Z") + rows = [{"todo_id": f"todo_work_{index}", "text": f"Review work {index}"} for index in range(121)] + result = project(rows, source_read_at="2026-10-01T00:00:00Z") + envelope = result["projection_envelope"] + assert not envelope["fresh"] and not envelope["complete"] + assert envelope["sources"][0]["last_read_at"] == "2026-10-01T00:00:00Z" + assert envelope["coverage"]["expected_count"] == 121 + assert envelope["coverage"]["included_count"] == 120 + assert envelope["coverage"]["omitted"] == [{"reason": "map_node_limit", "count": 1, "refs": []}] + unknown = project(rows[:1])["projection_envelope"] + assert not unknown["fresh"] and unknown["alert"] + assert unknown["sources"][0]["read_status"] == "not_read" + partial = project(rows[:1], source_truncated=True, + source_read_at="2026-10-01T00:06:00Z")["projection_envelope"] + assert partial["fresh"] and not partial["complete"] + assert partial["coverage"]["expected_count"] is None + + @pytest.mark.parametrize(("role", "task_class", "kind", "owner_visible"), [ ("user", "continuous_monitor", "gate", False), ("agent", "continuous_monitor", "monitor", True), diff --git a/tests/control_plane_ts/task_graph.test.ts b/tests/control_plane_ts/task_graph.test.ts index 0e92f4a0e4..eded3a6c9d 100644 --- a/tests/control_plane_ts/task_graph.test.ts +++ b/tests/control_plane_ts/task_graph.test.ts @@ -190,7 +190,9 @@ const mapRow = (todo_id: string, extra: JsonObject = {}): JsonObject => ({ }); function goalMap(items: JsonObject[], extra: JsonObject = {}): JsonObject { return projectGoalTaskMap({schema_version: GOAL_TASK_MAP_REQUEST, goal_id: "goal_test", - source_truncated: false, items, ...extra}); + source_truncated: false, items, + read_facts: {observed_at: "2026-10-01T00:00:00Z", source_read_at: "2026-10-01T00:00:00Z", + source_count: items.length}, ...extra}); } const mapProjection = (response: JsonObject) => response.projection as JsonObject; @@ -202,7 +204,12 @@ test("goal map composes topology and materialization instructions without emitti task_domain: [], private_notes: "must not escape"}), mapRow("todo_monitor", {is_monitor: true}), ], {goal_id: " \uFEFFgoal_test\uFEFF "}); - assert.deepEqual(response, { + const envelope = mapProjection(response).projection_envelope as JsonObject; + assert.equal(envelope.fresh, true); + assert.equal(envelope.complete, true); + const legacy = structuredClone(response); + delete (legacy.projection as JsonObject).projection_envelope; + assert.deepEqual(legacy, { schema_version: "goal_task_map_result_v0", projection: { schema_version: "goal_task_map_v0", mode: "read_only", goal_id: " \uFEFFgoal_test\uFEFF ", @@ -229,7 +236,10 @@ test("goal map refuses duplicate canonical render-fact IDs", () => { }); test("goal map returns a complete empty map and preserves an empty Goal ID", () => { - assert.deepEqual(goalMap([], {goal_id: ""}), { + const response = goalMap([], {goal_id: ""}); + assert.equal((mapProjection(response).projection_envelope as JsonObject).complete, true); + delete (response.projection as JsonObject).projection_envelope; + assert.deepEqual(response, { schema_version: "goal_task_map_result_v0", projection: {schema_version: "goal_task_map_v0", mode: "read_only", goal_id: "", limits: {node_limit: 120, emitted_node_count: 0, omitted_node_count: 0, source_truncated: false, @@ -238,6 +248,19 @@ test("goal map returns a complete empty map and preserves an empty Goal ID", () }); }); +test("goal map seals source age, unknown reads and unrenderable source coverage in the existing owner", () => { + const facts = {observed_at: "2026-10-01T00:06:00Z", source_read_at: "2026-10-01T00:00:00Z", source_count: 2}; + const envelope = mapProjection(goalMap([mapRow("todo_visible")], {read_facts: facts})).projection_envelope as JsonObject; + assert.equal(envelope.fresh, false); + assert.equal(envelope.complete, false); + assert.deepEqual((envelope.coverage as JsonObject).omitted, + [{reason: "unrenderable_todos", count: 1, refs: []}]); + const unknown = mapProjection(goalMap([], {read_facts: {...facts, source_read_at: null, source_count: 0}})).projection_envelope as JsonObject; + assert.equal(unknown.fresh, false); + assert.equal((unknown.sources as JsonObject[])[0]!.read_status, "not_read"); + assert.throws(() => goalMap([mapRow("todo_visible")], {read_facts: {...facts, source_count: 0}}), /source count/); +}); + test("goal map carries missing endpoints, source truncation and dependency cycles into limits", () => { const response = goalMap([ mapRow("todo_alpha", {resume_when: "todo_done:todo_beta"}), diff --git a/tests/test_delivery_review.py b/tests/test_delivery_review.py index 596c0fe4f1..c6458e7565 100644 --- a/tests/test_delivery_review.py +++ b/tests/test_delivery_review.py @@ -87,13 +87,62 @@ def get(server, path="/api/chat/delivery-review?goal_id=release-demo", origin=No return response.status, body +def test_http_review_exposes_source_freshness_and_map_coverage(workspace): + server, _, _ = workspace + status, review = get(server) + assert status == 200 + envelope = review["projection_envelope"] + assert envelope["projection"] == "delivery_review" + assert envelope["fresh"] + task_map = review["goal_map"]["projection_envelope"] + assert task_map["projection"] == "goal_task_map" + assert task_map["fresh"] and task_map["complete"] + assert task_map["coverage"]["expected_count"] == 5 + assert task_map["coverage"]["included_count"] == 5 + assert task_map["sources"][0]["last_read_at"] <= task_map["observed_at"] + + +def test_http_review_discloses_unreadable_map_without_hiding_other_components(workspace, monkeypatch): + server, _, _ = workspace + + def unreadable(**_kwargs): + raise PermissionError("synthetic unavailable source") + + monkeypatch.setattr("loopx.chat_status_api.list_goal_todos", unreadable) + status, review = get(server) + assert status == 200 and review["goal_map"] is None and review["graph"] is not None + envelope = review["projection_envelope"] + assert not envelope["fresh"] and not envelope["complete"] + assert "unreadable_sources" in envelope["alert_reasons"] + assert envelope["coverage"]["omitted"] == [{"reason": "unavailable_components", "count": 1, "refs": []}] + + +def test_http_review_inherits_source_age_and_replay_keeps_observation(workspace, monkeypatch): + from datetime import datetime, timedelta + + from loopx.control_plane.status import collection + from loopx.control_plane.projection_envelope_facts import serve_projection_envelope + + server, _, _ = workspace + monkeypatch.setattr(collection, "now_utc_iso", lambda: "2026-10-01T00:00:00Z") + status, review = get(server) + assert status == 200 + envelope = review["projection_envelope"] + assert not envelope["fresh"] and "stale_sources" in envelope["alert_reasons"] + assert review["goal_map"]["projection_envelope"]["fresh"] + later = datetime.fromisoformat(envelope["served_at"].replace("Z", "+00:00")) + timedelta(minutes=6) + replay = serve_projection_envelope(envelope, served_at=later.isoformat()) + assert replay["observed_at"] == envelope["observed_at"] + assert replay["served_from_cache"] and not replay["fresh"] + + def test_real_http_review_matches_cli_sources_without_canonical_writes(workspace): server, registry, runtime = workspace state = registry.parent / "ACTIVE_GOAL_STATE.md" before = (registry.read_bytes(), state.read_bytes()) status, review = get(server) assert status == 200 - assert set(review) == {"ok", "goal_id", "observed_at", "graph", "goal_map", "acceptance"} + assert set(review) == {"ok", "goal_id", "observed_at", "graph", "goal_map", "acceptance", "projection_envelope"} goal_map = review["goal_map"] titles = {node["refs"]["todo_ids"][0]: node for node in goal_map["nodes"]} # The whole-Goal map is not limited to the bounded chain's two expanded gates. @@ -189,6 +238,8 @@ def test_canonical_http_goal_map_survives_repeated_reads_and_runtime_restart( assert status == 200 goal_map = review["goal_map"] assert goal_map is not None + envelope = goal_map.pop("projection_envelope") + assert envelope["fresh"] and envelope["complete"] assert {**goal_map, "nodes": sorted(goal_map["nodes"], key=lambda node: node["node_id"]), "edges": sorted(goal_map["edges"], key=lambda edge: edge["edge_id"])} == expected From 7e2666985d939ffe745be683f83d666d4204e921 Mon Sep 17 00:00:00 2001 From: LoopX Agent <337587101+loopx-agent@users.noreply.github.com> Date: Sat, 17 Oct 2026 22:15:11 +0800 Subject: [PATCH 5/5] docs: record goal-map and delivery-review envelope boundaries Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com> --- .../rfcs/typescript-control-plane-migration-v0.md | 7 +++++++ .../typescript-control-plane-migration-v0.zh-CN.md | 5 +++++ .../contracts/projection-envelope-contract.md | 10 ++++++++++ docs/reference/protocols/task-graph-projection-v0.md | 8 ++++++++ 4 files changed, 30 insertions(+) diff --git a/docs/architecture/rfcs/typescript-control-plane-migration-v0.md b/docs/architecture/rfcs/typescript-control-plane-migration-v0.md index 6fa78bf09c..86e758bf16 100644 --- a/docs/architecture/rfcs/typescript-control-plane-migration-v0.md +++ b/docs/architecture/rfcs/typescript-control-plane-migration-v0.md @@ -1059,6 +1059,13 @@ One map still uses one request. Expanded complete inputs use the existing privat snapshot transport instead of truncating the source at the ordinary wire limit. The HTTP delivery-review composes its existing reads in one managed-runtime code revision scope; provider reads and freshness checks retain their owners. +The native map now seals actual Todo-read time, unrenderable/display omissions +and unresolved relations through the existing projection envelope owner. +The HTTP wrapper inherits status and map sources in one coarse sealing request; +this adds one runtime crossing to the complete HTTP read, not per-node calls. +The shipped reader discloses stale, unreadable, partial or unknown sources and +preserves their envelope in exports. Original source opening and authorization +owners remain unchanged; metadata is not a new execution or configuration gate. This intentionally distinguishes successor lineage from completion dependencies, corrects unblocks direction, includes Monitor generation conditions and preserves parallel/diamond edges at the node cap. See the [graph contract](../../reference/protocols/task-graph-projection-v0.md#typed-todo-topology). diff --git a/docs/architecture/rfcs/typescript-control-plane-migration-v0.zh-CN.md b/docs/architecture/rfcs/typescript-control-plane-migration-v0.zh-CN.md index 295496b707..890677c190 100644 --- a/docs/architecture/rfcs/typescript-control-plane-migration-v0.zh-CN.md +++ b/docs/architecture/rfcs/typescript-control-plane-migration-v0.zh-CN.md @@ -745,6 +745,11 @@ evidence/handoff 的脱敏展示,适用于选中工作项的图。整 Goal 任 一次请求;扩大的完整输入复用既有私有快照传输,不在普通传输上限处截断来源。 HTTP delivery-review 的既有读取复用同一托管运行时代码版本作用域;provider 读取和新鲜度检查仍由既有 owner 持有。 +原生地图现经既有 projection envelope owner 封装真实 Todo 读取时间、无法展示或 +超出上限的条目及未解析关系。HTTP 外层用一次整批封装请求继承 status 与地图来源; +完整 HTTP 读取增加一次运行时调用,不增加逐节点调用。已交付读界面披露过期、 +不可读、部分或未知来源,导出保留封套。原来源打开和授权 owner 不变;这些元数据 +不成为新的执行或配置门槛。 明确的语义修正:successor 谱系不再冒充完成 依赖,unblocks 方向修正,补 Monitor generation 条件,上限处保留平行关系 和菱形汇合边。详见[图协议](../../reference/protocols/task-graph-projection-v0.md#typed-todo-topology)。 diff --git a/docs/reference/contracts/projection-envelope-contract.md b/docs/reference/contracts/projection-envelope-contract.md index 80799f6848..8e11333134 100644 --- a/docs/reference/contracts/projection-envelope-contract.md +++ b/docs/reference/contracts/projection-envelope-contract.md @@ -23,6 +23,16 @@ Python-owned projections do so through `loopx/control_plane/projection_envelope_ | `loopx global-gates` | `global_gates` | `global` | | `loopx global-todos` | `global_todos` | `global` | | `loopx global-risks` | `global_risks` | `global` | +| Goal task map in delivery review | `goal_task_map` | `goal_task_map` | +| `GET /api/chat/delivery-review` | `delivery_review` | `selected_goal_delivery` | + +The Goal map seals actual Todo-read time and source/display omissions in its +existing native composition. Its envelope does not certify task acceptance or +execution readiness. The outer review inherits both the status and map sources; +an unreadable map remains `null` and alerts without hiding healthy components. +Unknown or truncated source scope cannot certify complete coverage. The shipped +reader displays these flags, preserves them in exports and uses the existing +refresh operation. Older responses without the envelope show unknown coverage. Other read models adopt the envelope in the order listed in the RFC; until then they carry no freshness guarantee and consumer rule 1 below applies. diff --git a/docs/reference/protocols/task-graph-projection-v0.md b/docs/reference/protocols/task-graph-projection-v0.md index ffcbe85330..81071fc1bf 100644 --- a/docs/reference/protocols/task-graph-projection-v0.md +++ b/docs/reference/protocols/task-graph-projection-v0.md @@ -231,6 +231,14 @@ added to status hot paths. nodes. - An unreadable Todo source returns `goal_map: null` and leaves the rest of the delivery review available. +- The native map carries the existing `projection_envelope`, scoped to + `goal_task_map`. Actual Todo read time is distinct from assembly time; + missing read facts stay unknown. Unrenderable Todos, display-limit omissions + and unresolved relations prevent a whole-map completeness claim. A truncated + source has an unknown denominator. The outer delivery review inherits source + age and incomplete coverage from status and the map; an unreadable map alerts. + The UI and Markdown export disclose these flags without changing source-open + or execution authorization. See the [kernel read contract](../contracts/projection-envelope-contract.md). Like the predecessor lens, the map has no write authority. A drawn line is a recorded relation, not a readiness verdict; the resume evaluator and lifecycle

*W5vJ} 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 R(u6-DxS*wnF4nLN`(G$WlJWom literal 0 HcmV?d00001 diff --git a/apps/presentation/dashboard/docs/assets/goal-map-readback/stale-mobile.png b/apps/presentation/dashboard/docs/assets/goal-map-readback/stale-mobile.png new file mode 100644 index 0000000000000000000000000000000000000000..73d958dec18d1dd48fe8c8992c1ad7c8702e840c GIT binary patch literal 66368 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 literal 0 HcmV?d00001 diff --git a/apps/presentation/dashboard/docs/assets/goal-map-readback/unavailable-desktop.png b/apps/presentation/dashboard/docs/assets/goal-map-readback/unavailable-desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..6bda6ef307402b95f17a2300c5411c80c0bc2e97 GIT binary patch literal 108283 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