Skip to content

Commit a8b759d

Browse files
authored
Merge pull request #5822 from loopx-project/codex/collaboration-reply-guidance-20261007
fix(collaboration): guide receiver reports as conversation answers
2 parents 9602d81 + c486e4e commit a8b759d

6 files changed

Lines changed: 33 additions & 3 deletions

File tree

‎docs/architecture/rfcs/loopx-overall-roadmap-v0.md‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -417,6 +417,13 @@ Chat, session, collaboration and presentation owners as R2/R3 integration work.
417417
Do not call a candidate catalog, spinner or queued inbox receipt a completed
418418
worker handoff. This checkpoint does not lower R1–R3 or G1 gates.
419419

420+
CLI and MCP receiver inbox guidance now composes the existing shared conversation answer
421+
instruction, making the verbatim requester-facing use of report text explicit.
422+
It preserves requested depth, evidence and material failures; it adds no
423+
summarizer, result schema or transport rewrite. R3/S5 still require actual
424+
original-audience qualification: guidance alone does not establish readable
425+
receiver results or a completed handoff.
426+
420427
The [ordinary workspace write checkpoint](app-conversation-and-async-inbox-v0.md#ordinary-workspace-writes-default-and-revocation-checkpoint)
421428
adds default project writes under the host grant, explicit read-only launch/App
422429
settings and actual Codex sandbox enforcement on start/resume. It reuses the typed

‎loopx/capabilities/manager_context/README.md‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,13 @@ override. Scoped MCP workers use `link_work` to reuse their current Todo or opaq
390390
evidence IDs. An unrelated busy worker establishes no request progress, and a
391391
short answer needs no manufactured Todo. See the [shared collaboration boundary](../../control_plane/collaboration/README.md).
392392

393+
CLI and MCP inbox reads reuse the shared conversation answer guidance: report text can return
394+
verbatim to the requester's conversation, so answer the original request at a
395+
proportionate depth. Routine execution bookkeeping belongs in the existing
396+
evidence records; requested detail and material gaps remain in the answer.
397+
This is authoring guidance, not a summary service or a delivery-time rewrite,
398+
and does not certify the quality of a receiver's result.
399+
393400
For longer work, `--phase decision` optionally returns a meaningful intermediate
394401
update. A ready conclusion supersedes an unsent intermediate update. Do not send
395402
one notification per poll, quote private deliberation, or claim an implementation

‎loopx/cli_commands/manager_inbox.py‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
configure_evidence_scope,
1111
)
1212
from ..control_plane.projects.registry_codec import load_project_registry
13+
from ..presentation.answer_instruction import collaboration_answer_instruction
1314

1415

1516
def register_manager_inbox(subparsers, add_format):
@@ -187,6 +188,7 @@ def handle_manager_inbox(args, registry_path, runtime_root):
187188
from ..control_plane.collaboration.peers import read_inbox
188189
result = read_inbox(runtime_root, registry_path, args.goal_id, args.agent_id,
189190
workspace=Path.cwd(), cursor=cursor, operation_cursor=operation_cursor)
191+
result["instruction"] += " " + collaboration_answer_instruction()
190192
result["followthrough"] += (
191193
" CLI: record assessment with manager-inbox acknowledge; optionally associate existing work "
192194
"with manager-inbox link. Return audience-ready results with manager-inbox report "

‎loopx/collaboration_mcp.py‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,10 @@
7272
request,
7373
require_operation_id,
7474
)
75-
from .presentation.answer_instruction import conversation_answer_instruction
75+
from .presentation.answer_instruction import (
76+
collaboration_answer_instruction,
77+
conversation_answer_instruction,
78+
)
7679

7780

7881
_PINNED_MODULE_LAUNCHER = (
@@ -257,7 +260,7 @@ def read_context(cursor: str | None = None) -> dict:
257260
Follow next_cursor for later requests. Omit cursor to start a fresh scan.
258261
Pages are live; reading all pages does not complete outstanding work.
259262
"""
260-
return read_inbox(
263+
result = read_inbox(
261264
root,
262265
registry,
263266
goal_id,
@@ -266,6 +269,8 @@ def read_context(cursor: str | None = None) -> dict:
266269
cursor=cursor,
267270
caller_goal_ref=caller_goal_ref,
268271
)
272+
result["instruction"] += " " + collaboration_answer_instruction()
273+
return result
269274

270275
@server.tool()
271276
def assess_request(

‎loopx/presentation/answer_instruction.py‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,12 @@ def conversation_answer_instruction() -> str:
1818
"and exact wording; do not replace a complete answer with an ID inventory or "
1919
"only a file path. Never include executable HTML."
2020
)
21+
22+
23+
def collaboration_answer_instruction() -> str:
24+
"""Give CLI and MCP receivers the same requester-facing answer guidance."""
25+
return (
26+
"Reported result text may be returned verbatim to the requester's conversation. "
27+
"Compose it as their answer, not an internal work log. "
28+
+ conversation_answer_instruction()
29+
)

‎loopx/semantics/project_registry_io_manifest_v1.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -783,7 +783,7 @@
783783
},
784784
{
785785
"site": "loopx/cli_commands/manager_inbox.py::<module>.handle_manager_inbox::codec_read:load_project_registry#1",
786-
"line": 129,
786+
"line": 130,
787787
"column": 20,
788788
"kind": "codec_read",
789789
"api": "load_project_registry",

0 commit comments

Comments
 (0)