kyle
07e4e16270
gatewayd: state, the posts of open approvals, and the turn of a session
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-24 04:50:54 -07:00
kyle
c5df86d13d
gatewayd: approvals, the registry and the judging of commands
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-24 04:48:06 -07:00
kyle
d9f8fa9331
gatewayd: approvals::text, the posts that show an approval
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-24 04:42:37 -07:00
kyle
18791ab389
gatewayd: mm, patch_post and username
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-24 04:36:45 -07:00
kyle
365e50081d
gatewayd: strip a leading mention of this bot; recognise approval commands
2026-09-24 04:33:03 -07:00
kyle
b45ca14c14
gatewayd: config, [approvals] users and socket
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-24 04:28:26 -07:00
kyle
e0560ab996
brokerd: courier, carrying pending approvals to gatewayd and answers back
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-24 04:25:07 -07:00
kyle
412f80c470
brokerd: config, [gateway] socket for Mattermost approvals
2026-09-24 04:18:04 -07:00
kyle
a00711e379
brokerd: answers carry the Mattermost post; Table::contains
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-24 04:15:11 -07:00
kyle
a5c37d8756
bxctl: deny, another name for refuse
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-24 04:11:01 -07:00
kyle
ebb78e816d
proto: gateway, the four messages between brokerd and gatewayd
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-24 04:07:46 -07:00
kyle
db3f9ed01b
proto: escape, moved from bxctl so gatewayd shows the same thing
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-24 04:01:03 -07:00
kyle
10c80b74f3
gatewayd: read a secret file from the file that was checked
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-24 01:33:36 -07:00
kyle and Claude Opus 5.5
0081f24b70
gatewayd: strict status lines and chunk lines; no as casts (M4a review, findings 1 and 3)
...
A status line splits on single spaces only, and every chunk line must end in CRLF. The bounded
`as` casts in http.rs, handshake.rs and proto's sha1.rs become try_from and from.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
2026-09-24 01:23:51 -07:00
kyle
09b074c121
gatewayd: main, serve --config with its start checks
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-24 01:00:22 -07:00
kyle
ed361db718
gatewayd: serve, the event loop, typing, catch-up and reconnecting
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-24 00:55:58 -07:00
kyle
d1d8531495
gatewayd: deliver, turns on loop.sock and answers posted in their thread
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-23 21:34:34 -07:00
kyle
24cac6a4eb
gatewayd: state, what was handled, our threads and turns in flight
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-23 21:23:49 -07:00
kyle
fc32144048
gatewayd: sessions, routing posts to sessions, commands and the queue
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-23 21:17:17 -07:00
kyle
18fddd03d9
gatewayd: mm, Mattermost's events and REST calls, typed
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-23 21:04:00 -07:00
kyle
74e08a5b1a
gatewayd: ws conn, messages, pings, closing and a dead peer
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-23 20:54:38 -07:00
kyle
f649ca9e3d
gatewayd: ws frames, a strict decoder and a masked encoder
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-23 20:50:00 -07:00
kyle
d56fcf8611
gatewayd: ws, the WebSocket error type and the opening handshake
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-23 19:55:22 -07:00
kyle
3a5b693878
gatewayd: http, requests over a stream with size caps and rate-limit waits
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-23 19:51:00 -07:00
kyle
e8311aeb54
gatewayd: net, TCP or verified TLS to the Mattermost server
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-23 19:41:08 -07:00
kyle
608d426f95
gatewayd: secrets from a credential, the environment or a file; runbook entries
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-23 19:37:12 -07:00
kyle
ede25312b3
gatewayd: config, gatewayd.toml into a checked Config
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-23 19:27:43 -07:00
kyle
64b34f48d6
gatewayd: dependencies for TLS and secrets; test-only certificates
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-23 19:17:51 -07:00
kyle
9fa8f0abed
proto: sha1, for the WebSocket handshake check
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-23 19:15:01 -07:00
kyle
9662966b45
toolkit: no thread panic in http_fetch, no casts, exact egress-proxy form
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-23 16:13:43 -07:00
kyle
e69ba632e6
brokerd: escape container errors in the log; prefix and quote two messages
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-23 16:10:54 -07:00
kyle
93539dbead
brokerd: start pipe threads safely and collect output within a grace period
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-23 16:07:15 -07:00
kyle
c87aff0793
brokerd: move the container's pipe handling into pipes.rs
2026-09-23 15:59:44 -07:00
kyle and Claude Opus 5.5
c3aaecdae2
M3b review fixes by the design model: curl --globoff, podman --pull=never
...
Review findings 1 and 2, both plan defects. curl gains --globoff and a
leading --disable; both podman runs gain --pull=never. The given fetch.rs and
the six golden files change with them. Checked on straylight with a rebuilt
image: a glob URL is one request, a missing image fails at once.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
2026-09-23 15:25:51 -07:00
kyle
feb50abc88
brokerd serve: run tools in containers when [runner] is set
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-23 09:35:46 -07:00
kyle
e6081a2177
brokerd: start and remove the egress proxy for http_fetch
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-23 09:22:24 -07:00
kyle
cfe13787b0
brokerd: the Podman runtime
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-23 08:51:44 -07:00
kyle
49ac8d72d2
brokerd: the podman argument lists
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-23 01:13:25 -07:00
kyle
81ce5a3345
brokerd: the [runner] section
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-23 01:07:21 -07:00
kyle
95872d94b8
toolkit: the egress proxy
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-23 01:01:13 -07:00
kyle
74da0c9d96
toolkit: is_public, the addresses the egress proxy may reach
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-23 00:19:18 -07:00
kyle
adf6713866
toolkit: http_fetch through curl
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-23 00:14:16 -07:00
kyle
ac1ecacadc
toolkit: shell
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-23 00:06:44 -07:00
kyle
0d444dd5bf
toolkit: the tool program, read_file and write_file
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-23 00:00:03 -07:00
kyle
644fda14da
Refuse grant paths that cannot be mounted
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-22 23:06:09 -07:00
kyle
bf9e79ac21
Seal the fetch target: one value holds the URL and its host
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-22 23:03:49 -07:00
kyle
f095cca1ee
Move the tools' arguments and the host rules to proto
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-22 22:59:40 -07:00
kyle and Claude Opus 5.5
fc8befaf5b
bxctl audit verify: name the log-like files it did not check
...
A .jsonl file whose name is not a date is ignored by brokerd and by verify;
it is now listed, so "ok" does not seem to cover it.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
2026-09-22 21:52:54 -07:00
kyle and Claude Opus 5.5
cfa02479c1
Test --accept-break on a real break through the brokerd binary
...
A plain start refuses, --accept-break records the break and serves, and the
next plain start serves. The given tests covered this only at library level.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
2026-09-22 21:52:54 -07:00
kyle and Claude Opus 5.5
bb4d7c0919
bxctl: escape frame errors; say the outcome is unknown after a timeout
...
From the independent review of task 23. serde quotes a bad frame's text after
decoding, so a compromised peer could put escape sequences in it. A timed-out
admin request now says whether brokerd acted is unknown, since it may have.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
2026-09-22 21:48:24 -07:00