From 7b03642f909d4d1545614797cf13e078b8d6b18f Mon Sep 17 00:00:00 2001 From: KeelrLeek <156356974+KeelrLeek@users.noreply.github.com> Date: Mon, 5 Oct 2026 13:49:06 -0500 Subject: [PATCH] Agent protocol: next_functions, re_lookup convention, re_similar, re_match before submit, defer after two attempts --- harbor/mcp_server.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/harbor/mcp_server.py b/harbor/mcp_server.py index 30e06e9..5437e61 100644 --- a/harbor/mcp_server.py +++ b/harbor/mcp_server.py @@ -39,7 +39,12 @@ review queue, presence and stop flags. Protocol: For Ghidra's view (decompiler, p-code, stack frames, struct field references, types) use ghidra_tools() once, then ghidra(tool, arguments): one shared read-only Ghidra session holding the team's annotations. To check a value in the running game (x87 control word, `this`, struct fields), use debugger_tools() and - debugger(tool, arguments): your own x32dbg session; always end it with debugger('terminate_session').""" + debugger(tool, arguments): your own x32dbg session; always end it with debugger('terminate_session'). +12. Pick functions with next_functions() (easiest first in your bands). Before writing, read re_lookup (it states the + calling convention read from the bytes) and re_similar (a readable near-duplicate is a head start). Before + submitting, run re_match on your worktree: 'match' or 'arguments in registers' is byte-identical, otherwise + similarity shows how close you are. After two failed attempts, defer(address, reason, evidence) instead of + looping. Use re_struct_audit before changing a struct in types.h.""" KindName = Literal["note", "question", "answer", "request", "finding", "retraction", "decision", "status", "handoff"] Importance = Literal["normal", "high", "urgent"]