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 and Claude Opus 5.5
53560ca731
M4a task 16 review: accepted; the plan's copy of its test is now the formatted file
...
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
2026-09-24 01:36:22 -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
6feffadd11
M4a task 16: read a secret file from the file that was checked (review finding 2)
...
The test swaps the file between the check and the open through a `between` hook. A reference fix
passed it and the gate (769 tests) in the working tree, caught two mutations, and was removed.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
2026-09-24 01:27:41 -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 and Claude Opus 5.5
131b3677fd
M4a review: accepted; checked end to end against the owner's Mattermost
...
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
2026-09-24 01:21:27 -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 and Claude Opus 5.5
a43362edb4
Review M3b tasks 14 to 17: accept; M3b done
...
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
2026-09-23 16:42:22 -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
a57a1305e7
M3b plan: follow-up tasks 14 to 17 for the review's lower findings
...
14 moves the pipe handling out of container.rs (a pure move, replayed on its
own); 15 starts threads with Builder and bounds output collection with a 2 s
grace period; 16 escapes container errors in the log and fixes two texts; 17
fixes toolkit's thread start, casts and the egress-proxy form. Each checked
against a reference, which is not kept. Tips T24 to T26 from this run.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
2026-09-23 15:33:23 -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 and Claude Opus 5.5
75c2f1adbf
Review M3b: accept with follow-ups; add the Nix expression for the image
...
On straylight, with real containers from deploy/tools-image.nix, every claim
held: no network without a grant, the limits, the file tools, http_fetch's
host checks including a redirect and a tailnet name, and no leftovers. Two
plan defects found there (curl globbing, podman pulling a missing image),
five lower findings.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
2026-09-23 11:48:31 -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
d988edac4a
Implementer log: record which model did each M3a task; repair the rows
...
Models from the owner: Ornith for tasks 01 to 18, Ornith then Grok 4.6 for
19, Grok 4.6 for 20 to 22. Future and late dates set to the commit dates;
notes pasted into the wrong rows moved back; every row has eight cells.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
2026-09-22 22:01:14 -07:00
kyle and Claude Opus 5.5
f0b39a4766
Record the second review of task 23 and the findings first left out
...
The review table gains findings 16 to 20, which the two review agents
reported and the first write-up dropped. The independent review of the fix
commits, and what was changed for it, is recorded; task 23's claims about
its tests are corrected. The spec and decisions record the day-long cap, the
ttl_ms bound, the socket-directory rule and the listener's retry.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
2026-09-22 21:54:28 -07:00