This website requires JavaScript.
a1d5083bd5
CLAUDE.md: M4b is done and merged; branches land by rebase
kyle and Claude Opus 5.5
2026-09-24 12:31:12 -07:00
ddb459a631
M4b: the redirect checked on the owner's server; finding 1 closed
kyle and Claude Opus 5.5
2026-09-24 12:29:02 -07:00
bfbdccb99d
M4b review of tasks 16 to 18; tip T32
kyle and Claude Opus 5.5
2026-09-24 12:22:24 -07:00
a43d9979c8
gatewayd: serve_restart takes the two caught-up turns in either order
kyle and Claude Opus 5.5
2026-09-24 12:22:10 -07:00
e10d93c3e8
gatewayd: approvals asked by non-approvers in direct messages go to an approver
kyle
2026-09-24 12:07:06 -07:00
989548419d
gatewayd: the texts that say who asked for a redirected approval
kyle
2026-09-24 11:51:43 -07:00
bf89512832
brokerd: the refusal without a runner names the missing [runner] section
kyle
2026-09-24 11:48:49 -07:00
f6dd7f1741
M4b review, and follow-up tasks 16 to 18
kyle and Claude Opus 5.5
2026-09-24 11:35:24 -07:00
d2e814161f
M4b spec: approvals from non-approvers in direct messages go to an approver, with who asked and what
kyle and Claude Opus 5.5
2026-09-24 11:09:59 -07:00
edf9ba3515
gatewayd: approvals answered from Mattermost; typing paused; the notice
kyle
2026-09-24 10:19:41 -07:00
af7137dafe
M4b task 15: fix task 14's dropped refusal reason, as a listed edit
kyle and Claude Opus 5.5
2026-09-24 08:46:33 -07:00
c38e450f44
gatewayd: serve, posting approvals, marking them, and the listener
kyle
2026-09-24 05:07:50 -07:00
a33ff240c4
gatewayd: gateway, the gateway.sock listener and one thread per connection
kyle
2026-09-24 04:59:02 -07:00
07e4e16270
gatewayd: state, the posts of open approvals, and the turn of a session
kyle
2026-09-24 04:50:54 -07:00
c5df86d13d
gatewayd: approvals, the registry and the judging of commands
kyle
2026-09-24 04:48:06 -07:00
d9f8fa9331
gatewayd: approvals::text, the posts that show an approval
kyle
2026-09-24 04:42:37 -07:00
18791ab389
gatewayd: mm, patch_post and username
kyle
2026-09-24 04:36:45 -07:00
365e50081d
gatewayd: strip a leading mention of this bot; recognise approval commands
kyle
2026-09-24 04:33:03 -07:00
b45ca14c14
gatewayd: config, [approvals] users and socket
kyle
2026-09-24 04:28:26 -07:00
e0560ab996
brokerd: courier, carrying pending approvals to gatewayd and answers back
kyle
2026-09-24 04:25:07 -07:00
412f80c470
brokerd: config, [gateway] socket for Mattermost approvals
kyle
2026-09-24 04:18:04 -07:00
a00711e379
brokerd: answers carry the Mattermost post; Table::contains
kyle
2026-09-24 04:15:11 -07:00
a5c37d8756
bxctl: deny, another name for refuse
kyle
2026-09-24 04:11:01 -07:00
ebb78e816d
proto: gateway, the four messages between brokerd and gatewayd
kyle
2026-09-24 04:07:46 -07:00
db3f9ed01b
proto: escape, moved from bxctl so gatewayd shows the same thing
kyle
2026-09-24 04:01:03 -07:00
2d415fc1be
Plan M4b: approvals over Mattermost in 15 tasks
kyle and Claude Opus 5.5
2026-09-24 03:34:21 -07:00
b1f732a42a
M4b spec: names and details settled while building the reference
kyle and Claude Opus 5.5
2026-09-24 03:22:55 -07:00
a8f7819da3
M4b spec approved
kyle and Claude Opus 5.5
2026-09-24 01:54:59 -07:00
1c2695d21d
Apply P16: approvals are !approve/!deny replies in the approval's thread; no reactions
kyle and Claude Opus 5.5
2026-09-24 01:54:50 -07:00
3088dcc201
M4b spec: gatewayd strips a leading mention of its own bot; bare commands are the operator's care
kyle and Claude Opus 5.5
2026-09-24 01:53:54 -07:00
00a9b576b2
Specify M4b (approvals over Mattermost); propose P16 on approval replies
kyle and Claude Opus 5.5
2026-09-24 01:48:51 -07:00
3322a56e69
CLAUDE.md: M4a is done and merged; M4b is next
kyle and Claude Opus 5.5
2026-09-24 01:37:17 -07:00
2ee9310fc3
Merge M4a: gatewayd, conversations over Mattermost
kyle and Claude Opus 5.5
2026-09-24 01:36:59 -07:00
53560ca731
M4a task 16 review: accepted; the plan's copy of its test is now the formatted file
kyle and Claude Opus 5.5
2026-09-24 01:36:22 -07:00
10c80b74f3
gatewayd: read a secret file from the file that was checked
kyle
2026-09-24 01:33:36 -07:00
6feffadd11
M4a task 16: read a secret file from the file that was checked (review finding 2)
kyle and Claude Opus 5.5
2026-09-24 01:27:41 -07:00
0081f24b70
gatewayd: strict status lines and chunk lines; no as casts (M4a review, findings 1 and 3)
kyle and Claude Opus 5.5
2026-09-24 01:23:51 -07:00
131b3677fd
M4a review: accepted; checked end to end against the owner's Mattermost
kyle and Claude Opus 5.5
2026-09-24 01:21:27 -07:00
09b074c121
gatewayd: main, serve --config with its start checks
kyle
2026-09-24 01:00:22 -07:00
ed361db718
gatewayd: serve, the event loop, typing, catch-up and reconnecting
kyle
2026-09-24 00:55:58 -07:00
02d5e25046
M4a task 14: post's comment was now_ms's; fixed, and every comment read
kyle and Claude Opus 5.5
2026-09-24 00:40:05 -07:00
564875f0a0
M4a tasks 14 and 15: glue written, calls tabled, after task 14's session wrote nothing
kyle and Claude Opus 5.5
2026-09-23 21:50:18 -07:00
d1d8531495
gatewayd: deliver, turns on loop.sock and answers posted in their thread
kyle
2026-09-23 21:34:34 -07:00
24cac6a4eb
gatewayd: state, what was handled, our threads and turns in flight
kyle
2026-09-23 21:23:49 -07:00
fc32144048
gatewayd: sessions, routing posts to sessions, commands and the queue
kyle
2026-09-23 21:17:17 -07:00
18fddd03d9
gatewayd: mm, Mattermost's events and REST calls, typed
kyle
2026-09-23 21:04:00 -07:00
74e08a5b1a
gatewayd: ws conn, messages, pings, closing and a dead peer
kyle
2026-09-23 20:54:38 -07:00
f649ca9e3d
gatewayd: ws frames, a strict decoder and a masked encoder
kyle
2026-09-23 20:50:00 -07:00
02681069b6
M4a tasks 08 and 09: finer skeletons after task 08's session wrote nothing
kyle and Claude Opus 5.5
2026-09-23 20:37:48 -07:00
d56fcf8611
gatewayd: ws, the WebSocket error type and the opening handshake
kyle
2026-09-23 19:55:22 -07:00
3a5b693878
gatewayd: http, requests over a stream with size caps and rate-limit waits
kyle
2026-09-23 19:51:00 -07:00
e8311aeb54
gatewayd: net, TCP or verified TLS to the Mattermost server
kyle
2026-09-23 19:41:08 -07:00
608d426f95
gatewayd: secrets from a credential, the environment or a file; runbook entries
kyle
2026-09-23 19:37:12 -07:00
ede25312b3
gatewayd: config, gatewayd.toml into a checked Config
kyle
2026-09-23 19:27:43 -07:00
64b34f48d6
gatewayd: dependencies for TLS and secrets; test-only certificates
kyle
2026-09-23 19:17:51 -07:00
9fa8f0abed
proto: sha1, for the WebSocket handshake check
kyle
2026-09-23 19:15:01 -07:00
0339dc13b2
Plan M4a: gatewayd in 15 tasks, with skeletons and given tests
kyle and Claude Opus 5.5
2026-09-23 19:05:44 -07:00
f38dc8d474
M4a spec: catch-up, recording and state writes, as settled while planning
kyle and Claude Opus 5.5
2026-09-23 19:05:44 -07:00
75304b4e65
Ignore *.env: local secrets such as mattermost.env are never committed
kyle and Claude Opus 5.5
2026-09-23 17:54:38 -07:00
eab2fbdc55
Apply P15: secrets from a systemd credential, the environment or a file
kyle and Claude Opus 5.5
2026-09-23 17:43:08 -07:00
4a510fde08
M4a spec: approved, with a file-secret warning and multi-agent channels
kyle and Claude Opus 5.5
2026-09-23 17:42:45 -07:00
7e3783faae
Specify M4a (conversations over Mattermost); propose P15 on secrets
kyle and Claude Opus 5.5
2026-09-23 17:30:31 -07:00
f0ec0efe9d
CLAUDE.md: M3a finding 14 was closed by M3b task 02
kyle and Claude Opus 5.5
2026-09-23 16:43:07 -07:00
8bcdb25ff1
Merge m3b: the runner and the tools (M3b)
kyle and Claude Opus 5.5
2026-09-23 16:42:22 -07:00
a43362edb4
Review M3b tasks 14 to 17: accept; M3b done
kyle and Claude Opus 5.5
2026-09-23 16:42:22 -07:00
9662966b45
toolkit: no thread panic in http_fetch, no casts, exact egress-proxy form
kyle
2026-09-23 16:13:43 -07:00
e69ba632e6
brokerd: escape container errors in the log; prefix and quote two messages
kyle
2026-09-23 16:10:54 -07:00
93539dbead
brokerd: start pipe threads safely and collect output within a grace period
kyle
2026-09-23 16:07:15 -07:00
c87aff0793
brokerd: move the container's pipe handling into pipes.rs
kyle
2026-09-23 15:59:44 -07:00
a57a1305e7
M3b plan: follow-up tasks 14 to 17 for the review's lower findings
kyle and Claude Opus 5.5
2026-09-23 15:33:23 -07:00
c3aaecdae2
M3b review fixes by the design model: curl --globoff, podman --pull=never
kyle and Claude Opus 5.5
2026-09-23 15:25:51 -07:00
75c2f1adbf
Review M3b: accept with follow-ups; add the Nix expression for the image
kyle and Claude Opus 5.5
2026-09-23 11:48:31 -07:00
feb50abc88
brokerd serve: run tools in containers when [runner] is set
kyle
2026-09-23 09:35:46 -07:00
e6081a2177
brokerd: start and remove the egress proxy for http_fetch
kyle
2026-09-23 09:22:24 -07:00
cfe13787b0
brokerd: the Podman runtime
kyle
2026-09-23 08:51:44 -07:00
4a1c6fa0a5
M3b plan: task 11's skeleton writes run as glue over small helpers
kyle and Claude Opus 5.5
2026-09-23 08:36:00 -07:00
62d1da44d6
M3b plan: task 11 starts from a compiling skeleton of container.rs
kyle and Claude Opus 5.5
2026-09-23 07:34:14 -07:00
4458369d64
M3b plan: task 11 gives Podman::egress_dir(), so the field is read
kyle and Claude Opus 5.5
2026-09-23 07:16:56 -07:00
49ac8d72d2
brokerd: the podman argument lists
kyle
2026-09-23 01:13:25 -07:00
81ce5a3345
brokerd: the [runner] section
kyle
2026-09-23 01:07:21 -07:00
95872d94b8
toolkit: the egress proxy
kyle
2026-09-23 01:01:13 -07:00
e87d876f26
M3b plan: task 08 says not to join handler threads and to skip argv[0]
kyle and Claude Opus 5.5
2026-09-23 00:46:23 -07:00
74da0c9d96
toolkit: is_public, the addresses the egress proxy may reach
kyle
2026-09-23 00:19:18 -07:00
adf6713866
toolkit: http_fetch through curl
kyle
2026-09-23 00:14:16 -07:00
ac1ecacadc
toolkit: shell
kyle
2026-09-23 00:06:44 -07:00
5e55fe4c66
M3b plan: every task's git add includes Cargo.lock
kyle and Claude Opus 5.5
2026-09-23 00:00:12 -07:00
0d444dd5bf
toolkit: the tool program, read_file and write_file
kyle
2026-09-22 23:12:28 -07:00
644fda14da
Refuse grant paths that cannot be mounted
kyle
2026-09-22 23:06:09 -07:00
bf9e79ac21
Seal the fetch target: one value holds the URL and its host
kyle
2026-09-22 23:03:49 -07:00
f095cca1ee
Move the tools' arguments and the host rules to proto
kyle
2026-09-22 22:59:40 -07:00
655683c9e0
Apply P13: tool containers run from one Nix-built image named by digest
kyle and Claude Opus 5.5
2026-09-22 22:30:04 -07:00
b426ca1958
Specify and plan M3b: the runner and the tools
kyle and Claude Opus 5.5
2026-09-22 22:29:27 -07:00
d988edac4a
Implementer log: record which model did each M3a task; repair the rows
kyle and Claude Opus 5.5
2026-09-22 22:01:14 -07:00
6b9bd7f5f0
CLAUDE.md: M3a is done; M3b next; the new slot layout
kyle and Claude Opus 5.5
2026-09-22 21:55:27 -07:00
aafd9f930e
Merge m3a: brokerd's decision path (M3a)
kyle and Claude Opus 5.5
2026-09-22 21:55:11 -07:00
f0b39a4766
Record the second review of task 23 and the findings first left out
kyle and Claude Opus 5.5
2026-09-22 21:54:28 -07:00
fc8befaf5b
bxctl audit verify: name the log-like files it did not check
kyle and Claude Opus 5.5
2026-09-22 21:52:54 -07:00
cfa02479c1
Test --accept-break on a real break through the brokerd binary
kyle and Claude Opus 5.5
2026-09-22 21:52:54 -07:00
bb4d7c0919
bxctl: escape frame errors; say the outcome is unknown after a timeout
kyle and Claude Opus 5.5
2026-09-22 21:48:24 -07:00
e08deb39a6
brokerd: recover a torn line in place, real dates only, bounded ttl, EMFILE
kyle and Claude Opus 5.5
2026-09-22 21:48:24 -07:00