cb8dbc5f2e
README: front page explaining what Harbor is, why it helps agent teams, how it works, and a quick start
main
KeelrLeek2026-10-09 12:32:25 -05:00
56308e3aab
Background compiles give way to the lander: the Logbook statistics and the results refresher wait while [logbook] lander_lock is fresh (under 60 min); the statistics tools run below normal priority and a timeout ends the whole tree (an orphaned cl.exe went on compiling main at normal priority); a retried statistics run no longer relogs the same commits
KeelrLeek2026-10-09 10:46:40 -05:00
21b7fedb6f
re_summary: one call for a function's name, prototype, size, convention, readable status, callers and callees with their status, globals, strings, vtable slots and Mac/Xbox hints (harbor re summary); ghidra_check: confirm the shared Ghidra server serves our image (address range, byte samples, SHA-256 when the imported file is readable) (harbor re ghidra-check)
KeelrLeek2026-10-09 09:51:09 -05:00
57fb31f2d6
watch.py reports times in CST
KeelrLeek2026-10-07 18:21:43 -05:00
b28f80f1a4
Queue skips catch and unwind funclets (they open on the parent's frame); ruling #12777KeelrLeek2026-10-07 18:10:13 -05:00
b8dab67871
Logbook clarity: game-code headline, CST times, one size unit, tier table from the progress map with a game column, Decomp view counts game functions, ship's log without repeated or cut titles, newest milestone in the banner; whole-program check builds a clean snapshot of main
KeelrLeek2026-10-07 17:05:07 -05:00
783c46da56
Logbook: game-functions tile counts game functions only (was all-code decompiled over game total)
KeelrLeek2026-10-07 16:48:43 -05:00
71e6d6cfda
logbook: an All code bar (game + engine + platform, by bytes, with function counts) next to the game-code bar, so engine work shows too
KeelrLeek2026-10-07 16:43:38 -05:00
59dac57bc8
claims: a draft claim inside another agent's band is allowed when a coordinator assigned the agent a task for that scope (reassigned rework)
KeelrLeek2026-10-07 13:27:57 -05:00
c77ed1a4db
policy submits_per_hour: an agent can be capped at N submissions or resubmissions per hour (the User asked the DeepSeeks to slow down and check their work)
KeelrLeek2026-10-07 11:04:54 -05:00
a3fc48802c
logbook: statistics run on a clean detached snapshot of main ([logbook] snapshot), not the integrator's live checkout, which is often mid-batch; a failed run retries on the next tick instead of waiting for main to move
KeelrLeek2026-10-07 10:35:55 -05:00
d7464aaa40
tasks: an open task can be blocked directly (deferred before anyone starts it)
KeelrLeek2026-10-07 09:26:50 -05:00
e0b9a82e7a
ensure_server: start with a hidden console (CREATE_NO_WINDOW), never DETACHED_PROCESS: a console-less server made every git and compiler run it started open a visible window
KeelrLeek2026-10-07 08:48:58 -05:00
3d9ac4ca9a
next_functions: skip functions already in an open review item (by scope, or the addresses its title names), so agents are not offered work they or others have already done
KeelrLeek2026-10-07 08:47:21 -05:00
9b6ea3bc57
hooks: any agent's hook restarts the project's web server when it is down ([server] port and start; at most once a minute, detached), so the board and chat no longer depend on the coordinator's session
KeelrLeek2026-10-07 08:43:49 -05:00
940cacc2d2
attention: acknowledgements and unread questions involving a retired agent (active=0) are no longer listed; they can never be answered
KeelrLeek2026-10-07 08:38:27 -05:00
99c83bfb75
re disasm: each [esp+N]/[ebp+N] operand is named as the argument or local it is (argN, local entry-0xN, return address), from the stack depth tracked over the function's control flow; _alloca_probe frames and known callee cleanup included, inferred cleanup marked ~
KeelrLeek2026-10-06 21:49:58 -05:00
eb948ddda1
submit and author resubmits: the commit must be a hash git knows (checked in the author's workdir or the Logbook checkout) and is stored in full; HEAD, placeholders and unknown hashes are refused
KeelrLeek2026-10-06 21:20:45 -05:00
a92efdad45
Logbook stats rebuild: put the Visual Studio Installer folder (vswhere) on PATH, which a server started without a shell lacks
KeelrLeek2026-10-06 16:21:58 -05:00
a67462f8ca
Results refresher: the server reruns the whole-program check of main (hourly at most, when HEAD moves) and the emulator over the readable set (12-hourly at most, 01:00-06:00, when HEAD moves), so the Logbook's exact and verified tiers stop going stale
KeelrLeek2026-10-06 16:17:14 -05:00
d5eb82261e
Logbook progress map in the style of decomp.dev: "<project> is NN.NN% decompiled", a layered Code bar (exact solid, verified lighter, readable hatched, with per-segment tooltips), a Data bar (named globals of the data addresses the code touches), Previous / Next / Latest through the history reports, a Units dropdown and filter (text, <70%, >10kb), and a canvas treemap of units (original source files, else 64 KB blocks) that drills into functions
KeelrLeek2026-10-06 15:46:42 -05:00
315b63b571
re_match_program lock: a lock whose holder process has exited is stale at once (an empty lock only after 5 s)
KeelrLeek2026-10-06 14:24:15 -05:00
1025c612b2
queue: skip a source file that a landing moves or rewrites mid-scan instead of crashing next_functions
KeelrLeek2026-10-06 13:15:05 -05:00
9c74b17943
CLI: --as <Agent> from a second session's worktree of the same app runs as that session (Codex2 copies the Codex app's shared --as Codex instructions)
KeelrLeek2026-10-06 10:59:09 -05:00
fdaa3b0806
Shared app servers: the PreToolUse hook leaves a ticket naming the calling session, the MCP server takes it per call (middleware), so two sessions of one app on one Harbor server act as themselves; i_am checks instead of binding and is allowed under a stop
KeelrLeek2026-10-06 10:47:08 -05:00
e283e4cc54
Several sessions of one app: a session's working folder names its agent when that agent runs in the same app (MCP server and hooks), an i_am tool binds a session explicitly, the doctor checks second sessions against their app's install, and an agent that left the roster can still be uninstalled
KeelrLeek2026-10-06 10:06:01 -05:00
d755ab8a76
Resuming one agent under a later 'stop everyone' works even when its own flag is already off: the human's resume records its time
KeelrLeek2026-10-06 09:25:32 -05:00
2fb62fa105
watch.py: --quiet-traffic wakes only on stalls, stops and resting (helpers cover items and messages)
KeelrLeek2026-10-05 19:05:47 -05:00
774b0ae25a
Logbook auto: run the stats rebuild in its own data dir so agents' compiles can't lock it
KeelrLeek2026-10-05 18:37:26 -05:00
580fcfacb4
Chat: render a bounded window and append new messages instead of rebuilding the log; polls back off while hidden
KeelrLeek2026-10-05 18:35:39 -05:00
9eee1294e0
Logbook auto: keep the empty body field of a commit with no description
KeelrLeek2026-10-05 18:30:01 -05:00
f1241c19a3
Inbox: people before system notices and newest first; wait wakes on new or human messages, not an old notice backlog; mark_read MCP tool
KeelrLeek2026-10-05 18:19:19 -05:00
f708e3025c
tools/watch_needs.py: wake the coordinator when a helper appends to the needs file
KeelrLeek2026-10-05 17:57:17 -05:00
453434c2b2
re_match_program: one whole-program build per worktree at a time (a lock file); concurrent runs collided
KeelrLeek2026-10-05 17:29:36 -05:00
5211cee9c4
re_behaviour: the emulator check for given functions of a worktree
KeelrLeek2026-10-05 16:54:58 -05:00
0d764799a7
Logbook: lead with '% done' (functions handled out of all 10,673), game functions decompiled, and unsorted; trend tracks done
KeelrLeek2026-10-05 16:43:54 -05:00
b7e09cfbd1
Logbook lives in Harbor and keeps itself current
KeelrLeek2026-10-05 16:30:21 -05:00
87631bec52
Board: Decomp view (progress tiers, function inspector, next up per band, deferred) and RE tools in Health; Verified tier from the emulator
KeelrLeek2026-10-05 16:08:51 -05:00
a9efc2e5c5
re_lookup shows the original source file (Xbox file/line sites) and the Mac build's original name
KeelrLeek2026-10-05 15:16:04 -05:00
5a0fb44c7d
re_match_program: the whole-program LTCG build and check; progress counts its exact matches
KeelrLeek2026-10-05 15:11:21 -05:00
3f32d0eb3e
Queue: also skip the compiler's import thunks and unwind funclets (0x6BAB3A-0x6BB9AC)
KeelrLeek2026-10-05 14:34:03 -05:00
4da2eb93e3
Queue and progress treat the statically linked D3DX9 block and byte-matched library functions as library
KeelrLeek2026-10-05 14:32:17 -05:00
7b03642f90
Agent protocol: next_functions, re_lookup convention, re_similar, re_match before submit, defer after two attempts
KeelrLeek2026-10-05 13:49:06 -05:00
07a031109b
re_similar, re_struct_audit; next_functions favours raw functions with a readable near-duplicate
KeelrLeek2026-10-05 13:45:16 -05:00
2d2f5fe7c5
next_functions, defer and decomp_progress: an easy-first queue per band, deferrals with reasons, tiered progress
KeelrLeek2026-10-05 13:39:03 -05:00
ec210c019f
re_lookup/re_disassemble show the calling convention read from the bytes
KeelrLeek2026-10-05 13:34:33 -05:00
c7e678eacb
re_match: byte-match functions with the game's compiler (Visual C++ 2003)
KeelrLeek2026-10-05 13:10:01 -05:00
584fabeb74
Per-agent x64dbg session through debugger()/debugger_tools()
KeelrLeek2026-10-05 12:44:25 -05:00
7ed914ebdb
Forward ghidra()/ghidra_tools() to the shared read-only Ghidra MCP server
KeelrLeek2026-10-05 12:27:19 -05:00