Commit Graph
44 Commits
Author SHA1 Message Date
kyle c060c80c7e Fix four review findings: busy release, poison recovery, core.md errors, chat loop
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-18 21:06:58 -07:00
kyleandClaude Fable 5.1 2be8581a0c Review M2b: accept with one follow-up task; record lessons
All ten tasks pass the checklist, the gate, the audit and the device
checks, including a four-turn conversation with a loopd restart and no
cache loss. Reading and probing found four low defects: the busy guard
is released before the final frame on the main path but not on the
three error paths, its Drop skips a poisoned lock, an unreadable
core.md is treated as missing, and bxctl's interactive loop exits on a
failed turn. Task 11 carries the fixes with two new tests, checked
against a fixed copy of the branch.

The Model column is filled in (all Ornith) and one malformed row is
repaired. Two rules are promoted to AGENTS.md.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 20:47:03 -07:00
kyle 34951084cc Extend on-device verification to the agent loop
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-18 20:38:56 -07:00
kyle 06cda69509 Add bxctl chat
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-18 20:24:26 -07:00
kyle eb8fc5f920 Add the loopd serve command
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-18 19:50:32 -07:00
kyle 8bc835f623 Add the channel server on loop.sock
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-18 19:43:12 -07:00
kyle 9063cf958e Add the turn loop with its limits
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-18 19:14:52 -07:00
kyle 9704a64507 Add the session store: baseline file and append-only log
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-18 18:42:00 -07:00
kyle b152ba3cd3 Add the baseline and the log replay function
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-18 18:31:33 -07:00
kyle fd7ade9689 Add the tool port, registry, dispatch and the fake tools
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-18 18:12:45 -07:00
kyle ec5d887daa Add the paths, channel, loop and baseline config tables
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-18 17:36:20 -07:00
kyle 06298d6a8e Add the channel messages and the usage record to proto
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-18 17:30:51 -07:00
kyleandClaude Fable 5.1 afe25f0bc9 Accept M2a follow-ups; M2a complete
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 16:26:13 -07:00
kyle 0f5213a466 Return chunked body data as soon as it is available
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-18 16:15:22 -07:00
kyle 1faa38be44 Close the client side when the upstream closes, in inferproxy
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-18 16:07:45 -07:00
kyleandClaude Fable 5.1 58c7738721 Review M2a: accept with two follow-up tasks; record models and lessons
The branch passes every check, including make verify-device on
straylight and repeated timing runs under load. Reading and probing
found that inferproxy does not pass an upstream close on to a client
that is still sending, and that the chunked body reader delivers a
stream only when the caller's buffer fills or the stream ends. Both
were also gaps in the tasks and tests, so tasks 14 and 15 carry the
fixes with new tests checked against the reference.

The Model column is corrected: tasks 04 to 06 and 08 to 13 were Ornith.
Lessons gain four implementer tips and five task-writing tips; three
rules are promoted to AGENTS.md.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 15:43:06 -07:00
kyle ad7bce88a4 Add on-device verification for the inference path
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-18 15:32:20 -07:00
kyle f1d880568f Add the startup self-test and the loopd selftest command
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-18 15:28:37 -07:00
kyle 59cf89e7ba Add the per-slot gate and chat_with_retry
Implemented SlotGate (one request in flight per server slot, FIFO queue,
bounded) and chat_with_retry (retry only server-gone errors, jittered
backoff within a window and attempt budget). chat acquires the gate and
maps GateFull to Busy; Client gained a gate field.

Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-18 14:45:45 -07:00
kyle a07c341cbb Add the thinking cap to Client::chat
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-18 14:06:11 -07:00
kyle 60557a0634 Add Client::chat with the first-byte wait, liveness and error mapping
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-18 13:37:01 -07:00
kyle 3663a1e4d5 Add props, slots, tokenize and the cache-loss check to the llama client
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-18 03:39:05 -07:00
kyle 0fa481df29 Add the per-slot gate and chat_with_retry
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-18 03:19:02 -07:00
kyleandClaude Fable 5.1 cce1c99570 Record which model did each task
The implementer log gains a Model column, filled by the owner. Tasks so
far: M1 and M2a 01 to 06 by Laguna S 2.1, M2a 07 by GLM-5.3. The commit
trailer no longer names a model.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 02:56:38 -07:00
kyle 3d876d4fa9 Add the assembler that folds streamed chunks into a completion
Implemented-By: GLM-5.3 (z.ai, default settings) via OpenCode
2026-09-18 02:56:31 -07:00
kyle f48999306e Add the llama client types and the chat request builder
Implemented-By: Laguna S 2.1 (OpenCode)
2026-09-18 02:40:35 -07:00
kyle f58c29e707 Add a server-sent-events reader to loopd
Implemented-By: Laguna S 2.1 (OpenCode)
2026-09-18 02:31:49 -07:00
kyle 4460bb241a M2a/04-loopd-http
Implemented-By: Laguna S 2.1 (OpenCode)
2026-09-18 02:11:25 -07:00
kyle 6e8e24794d Add loopd configuration with every M2a limit
Implemented-By: Laguna S 2.1 (OpenCode)
2026-09-17 23:07:38 -07:00
kyle a0495ea36a Add the inferproxy byte forwarder with its two limits
Implemented-By: Laguna S 2.1 (OpenCode)
2026-09-17 21:03:41 -07:00
kyle bc1e727c19 Add SHA-256 to proto, wrapping the emsha crate
Implemented-By: Laguna S 2.1 (OpenCode)
2026-09-17 14:11:51 -07:00
kyleandClaude Fable 5.1 35a7a4e7ea Record why task 01 had an earlier attempt
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-17 11:02:00 -07:00
kyleandClaude Fable 5.1 57bfc62236 Accept M1 follow-ups; add implementer lessons and promote four rules to AGENTS.md
Tasks 08 and 09 pass the checklist and the reviewer's probes, so M1 is
complete. docs/implementer-lessons.md turns the review findings into
tips for the implementer and for task writing, each tied to its
evidence, with a column to record whether the defect comes back.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-17 10:19:06 -07:00
kyle 46d26e868b Make gate scripts handle table-form dependencies and fail closed
Implemented-By: Laguna S 2.1 (OpenCode)
2026-09-17 10:14:22 -07:00
kyle 69120af092 Reject unknown fields in every proto struct and bound Timestamp
Implemented-By: Laguna S 2.1 (OpenCode)
2026-09-17 09:29:48 -07:00
kyleandClaude Fable 5.1 dcdcf65d83 Review M1: accept with two follow-up tasks
The branch passes the checklist: seven commits, copied files unchanged,
gate and audit green. Reading and probing found that AuditRecord and
ToolCall accept unknown fields, that large Timestamps panic when
formatted, and that the dependency-direction scripts miss table-form
dependencies and pass when their inputs are missing. The last two
families were gaps in the tasks, not only in the code.

Tasks 08 and 09 carry the fixes, defined by an exhaustive unknown-field
test, a bounded-Timestamp test and an extended gate-script self-test.
All three were checked against the reference implementation and fail on
the current branch.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-17 09:14:29 -07:00
kyle 8c1852ec47 Add Decision, decide and the runner stub to brokerd
Implemented-By: Laguna S 2.1 (OpenCode)
2026-09-17 09:05:48 -07:00
kyle b9f3ab45c1 Add audit and session log record types to proto
Implemented-By: Laguna S 2.1 (OpenCode)
2026-09-17 08:36:44 -07:00
kyle 78e13195ea Add Grant, Mode and Constraints to proto
Implemented-By: Laguna S 2.1 (OpenCode)
2026-09-17 08:23:48 -07:00
kyle d6308c976b Add length-prefixed frame codec to proto
Implemented-By: Laguna S 2.1 (OpenCode)
2026-09-17 08:11:14 -07:00
kyle 56e12f40a6 Add IPC envelope and tool messages to proto
Implemented-By: Laguna S 2.1 (OpenCode)
2026-09-17 07:53:40 -07:00
kyle 1e1b543a7c Add validated identifiers, Hash32, Timestamp and DataClass to proto
Implemented-By: Laguna S 2.1 (OpenCode)
2026-09-17 07:41:49 -07:00
kyle 8dc04b1d48 Add Cargo workspace, crate skeletons and the gate
Implemented-By: Laguna S 2.1 (OpenCode)
2026-09-17 06:45:02 -07:00
kyleandClaude Fable 5.1 3e26c2e3c0 Add M1 plan, given tests and fixtures, AGENTS.md and implementer log
Seven task files for the implementing model under docs/plans/M1/, with
the test files, byte-exact fixtures, Makefile, deny.toml and gate-script
self-test they copy into place. All of it was verified against a private
reference implementation: the gate passes after every task in order.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-17 01:22:43 -07:00