kyle
4e1dd03d07
Route templates: a route named x-* serves any request route x-<something>
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-25 13:38:24 -07:00
kyle and Claude Fable 5.1
4863e53eb8
v2.2 task 01: put Route() in a new config/route.go (config.go is at the line limit); note
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 13:16:19 -07:00
kyle and Claude Fable 5.1
5de096a221
v2.2 plan: route templates (opencode-*) and multiple wake broadcast addresses; given tests
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 13:04:15 -07:00
kyle and Claude Fable 5.1
3ec53d52e5
deploy/hyperborea: enable titan wake block with the fixed Wi-Fi private MAC (best effort)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 12:58:32 -07:00
kyle and Claude Fable 5.1
6e9a70587a
deploy/hyperborea: production config, user unit, install script, README (wake block pending titan's MAC)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 12:57:25 -07:00
kyle and Claude Fable 5.1
4f03cb2c52
README: context guard section (X-Crossbar-Ctx, 400 body), per-model context in the hosts view, router-mode note
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 11:50:38 -07:00
kyle and Claude Fable 5.1
11c8e053f7
Merge v2.1: cancellation recorded from the reverse proxy; router mode loaded/per-model context
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 11:49:45 -07:00
kyle
055ab079d4
Learn per-model context from /props?model=; only status "loaded" is loaded
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-25 11:47:35 -07:00
kyle and Claude Fable 5.1
cb5678abc0
v2.1 README: note the moved-header separator gap (v2 task text ambiguous, untested)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 11:45:52 -07:00
kyle
f3dfdbfa50
Record cancellation from what the reverse proxy observed, not the request context
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-25 11:32:18 -07:00
kyle and Claude Fable 5.1
317293cfb3
v2.1 task 01: state the ReverseProxy facts (ErrorHandler before headers, ErrAbortHandler mid-body); note the refusal-ending
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 11:26:01 -07:00
kyle and Claude Fable 5.1
d596ec8abf
v2.1 task 02: router mode — status loaded only, per-model /props, guard and hosts view use it; given tests
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 11:22:37 -07:00
kyle and Claude Fable 5.1
98faa3a57d
Given tests: order arrivals by limiter state instead of sleeps (limiter, spread, cancel-while-queued)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 11:20:26 -07:00
kyle and Claude Fable 5.1
6c3a2cff8a
Merge v2: learned context, context guard, wake-on-LAN, identity
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 11:14:27 -07:00
kyle and Claude Fable 5.1
a49a86c0e4
v2.1 plan: task 01 cancel-record with its given served_test.go; index for 02/03
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 11:12:58 -07:00
kyle
d0d3203f73
Wire wake and identity into crossbar; v2 smoke and README
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-25 11:12:24 -07:00
kyle
47f49072cc
Merge remote-tracking branch 'origin/master' into v2
2026-09-25 11:08:24 -07:00
kyle and Claude Fable 5.1
481ea12f4c
v1 proxy test: order arrivals by limiter state; note the 499-on-served-200 defect for v2.1
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 11:08:16 -07:00
kyle and Claude Fable 5.1
27debb9790
v1 limiter test: release before reporting in TestParallelAndQueue (race with the final count check)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 11:02:07 -07:00
kyle
087323ad62
Merge remote-tracking branch 'origin/master' into v2
2026-09-25 10:50:23 -07:00
kyle and Claude Fable 5.1
7710352462
v2 smoke: send the 300 KB prompt via -d @file (argv element limit); note in README
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 10:49:56 -07:00
kyle and Claude Fable 5.1
6261b68a4b
v2 plan: note the task 05 12-second stop (typo'd path, refusal-ending)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 10:18:28 -07:00
kyle
a942e336d8
Add identity: whois resolver, checker, header mode, middleware; config for wake, peers, identity
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-25 10:16:51 -07:00
kyle and Claude Fable 5.1
962ea2aea4
v2 plan: note the router /props autoload fact and the v2.1 follow-up
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 10:12:29 -07:00
kyle
bddf6c93f2
Add the wake package: magic packets and a waiter
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-25 10:03:07 -07:00
kyle
2fe3b9c865
Proxy: move or refuse prompts that do not fit the leased host's context
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-25 09:56:46 -07:00
kyle
959aec92f1
Merge origin/master into v2: sticky-growth test fixed
2026-09-25 09:55:15 -07:00
kyle and Claude Fable 5.1
6c8cbbc78d
v2 plan: sticky-growth test appends turns instead of changing the first user message; note the finding
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 09:54:36 -07:00
kyle
056a527fd7
Health: learn n_ctx and total_slots from /props
...
Implemented /props learning in internal/health/health.go (added Status.NCtx/Status.Slots, PerSlotCtx, and a best-effort GET <base>/props appended to the poll after /v1/models; 0/unknown on any failure without failing the poll) and exposed them in internal/admin/admin.go HostView. Copied internal/health/props_test.go and the replacement internal/proxy/helpers_test.go byte-identical to docs/plans/v2/_files/.
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-25 09:14:08 -07:00
kyle
f73ffb0d27
Merge origin/master into v2: helpers_test.go answers /props
2026-09-25 09:12:28 -07:00
kyle and Claude Fable 5.1
927b2cfc4d
v2 plan: fake upstream answers /props without counting it (task 01 replacement helper); note the finding
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 09:11:54 -07:00
kyle
5afacbc050
Health: learn n_ctx and total_slots from /props
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-25 09:10:38 -07:00
kyle
55679c5678
Merge v1.1: cancelled requests recorded as 499; empty usage is []
2026-09-25 09:02:25 -07:00
kyle and Claude Fable 5.1
6bdcf437f4
v1.1 review: checklist, probes, three findings
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 09:02:13 -07:00
kyle
9f5b50acf6
Review fixes: record cancelled requests as 499; empty usage is an array
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-25 09:00:31 -07:00
kyle and Claude Fable 5.1
fbb952bae9
v1.1 plan: note the third stop (timing flakes under load, refusal-ending)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 08:59:56 -07:00
kyle and Claude Fable 5.1
d8f6d2a804
v1.1 plan: state the ReverseProxy abort behaviour the fix depends on; note the second stop
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 08:41:30 -07:00
kyle and Claude Fable 5.1
74b8af4ce0
AGENTS.md: a refused tool call is not a reason to end the turn; v2 plan (props, ctx guard, wake, identity, wiring) as acceptance tests; v1.1 run note
...
v2 given tests compiled against a panic-only skeleton (go vet clean); no reference
implementation.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 08:37:38 -07:00
kyle and Claude Fable 5.1
9ba04b16e0
v1.1 plan: cancelled requests recorded as 499, empty usage is []; tests proven failing on master
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 08:28:07 -07:00
kyle
bebee332a5
Merge v1: leases, limiter, chooser, fingerprint, SQLite store, accounting, admin (8/8 tasks by Ornith)
2026-09-25 07:00:34 -07:00
kyle and Claude Fable 5.1
d7d8fcfa3b
v1 review: checklist, outside probes, five findings; fill the Model column
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 07:00:21 -07:00
kyle
9e9750f281
Merge origin/master into v1: plan notes
2026-09-25 07:00:21 -07:00
kyle and Claude Fable 5.1
c6d115a8ff
v1 plan: reference copy of the one edited given file (recorder_test.go)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 06:59:19 -07:00
kyle
cf2aa24393
Smoke run for v1; README for leases, admin and accounting
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-25 06:56:54 -07:00
kyle
587ec7a1ec
Merge origin/master into v1: per-model free slots rule, task 08 step 1b
2026-09-25 06:50:42 -07:00
kyle and Claude Fable 5.1
dc6066be8b
v1 plan: Chooser free slots are per model (task 05 rule corrected, task 08 step 1b); note the finding
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 06:50:09 -07:00
kyle
d82bfba3ec
Wire the store, lease table and limiter into crossbar
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-25 06:38:36 -07:00
kyle
4df85d83c3
Merge origin/master into v1: task 06 text fix
2026-09-25 06:34:26 -07:00
kyle
32ac7f549a
Admin: leases, pin, release, drain, usage, metrics
...
cmd/crossbar/main.go calls admin.Handler with the new 6-arg signature, passing nil for the not-yet-wired leases/limiter/store/drainer (task 07 wires them) so go vet and go test ./... pass on cmd/crossbar. This is a compile fix, not the task-07 wiring; noted in the implementer-log.
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-25 06:33:29 -07:00
kyle and Claude Fable 5.1
c2136b3515
v1 plan: task 06 must update the one admin.Handler call in main.go for the gate; note the finding
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 06:29:09 -07:00
kyle
c2a8b88a3f
Merge origin/master into v1: task 06 split into admin + main
2026-09-25 06:08:28 -07:00
kyle and Claude Fable 5.1
4da47b3dfa
v1 plan: split task 06 into admin (06) and main wiring (07); smoke becomes 08; note the finding
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 06:07:53 -07:00
kyle
97f7cdffd9
Route by lease, queue per host and model, record every request
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-25 05:15:21 -07:00
kyle
02008f6d56
Merge origin/master into v1: given proxy tests split under the line limit
2026-09-25 05:08:12 -07:00
kyle and Claude Fable 5.1
ebcf6e4536
v1 plan: split the given proxy tests under the 400-line limit (scaffolding into helpers_test.go); note the finding
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 05:08:03 -07:00
kyle
740583f812
Merge origin/master into v1: proxy test fix, helpers_test.go given
2026-09-25 04:56:33 -07:00
kyle and Claude Fable 5.1
7bc6761120
v1 plan: helpers_test.go as a given file, fake upstream records /v1/models, no /tmp rule; note task 05 findings
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 04:56:22 -07:00
kyle
02b2978b3e
Merge origin/master into v1: corrected proxy tests, task 06 candidates rule
2026-09-25 04:29:57 -07:00
kyle and Claude Fable 5.1
1cc645a85b
v1 plan: fix spread test config, queue test read, admin pin via lease.Candidates; note the findings
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 04:29:16 -07:00
kyle
9133240cfb
Add the sticky lease table
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-25 04:26:47 -07:00
kyle
e65826b369
Merge origin/master into v1: corrected TestPinAndUnpin, task 02 replacement fixtures
2026-09-25 04:24:55 -07:00
kyle and Claude Fable 5.1
29b3a5c38e
v1 plan: fix TestPinAndUnpin event assertion (positions -> order and content); note the finding
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 04:05:02 -07:00
kyle
7e0dbb4a6f
Add the per-host-model limiter and the host chooser
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-25 03:53:38 -07:00
kyle and Claude Fable 5.1
0874e00bdd
v1 plan: task 02 replacement fixtures for the lease_idle/unknown-key conflict; AGENTS.md: earlier plans' given files stay protected
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 03:47:15 -07:00
kyle
463cea18de
Add the conversation fingerprint and the v1 config keys
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-25 03:46:05 -07:00
kyle and Claude Fable 5.1
da1da149b8
v1 plan: note the task 01 stop/resume
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 03:35:31 -07:00
kyle
816614d6dd
Add the SQLite store for leases and accounting
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-25 03:34:24 -07:00
kyle
38045994f3
Merge origin/master into v1: gofmt-clean given files
2026-09-25 03:32:53 -07:00
kyle
091d8d16a5
Stop v1/01-store: gate blocked by pre-existing _files gofmt under Go 1.26.7
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-25 03:30:36 -07:00
kyle and Claude Fable 5.1
635b16bcca
v1 plan: gofmt the given test files (gate walks docs/ too); note the finding
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 03:21:45 -07:00
kyle and Claude Fable 5.1
c457046f8b
v1 plan: leases, limiter, chooser, fingerprint, SQLite store, accounting, admin — acceptance tests first, no reference
...
Every given test compiled against a panic-only interface skeleton (go vet clean); nothing was
implemented. modernc.org/sqlite v1.59.0 vetted in a scratch module (WAL works); go.sum given.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 03:10:24 -07:00
kyle
851cc80eba
Merge v0.1: review fixes (Flush without panic; unreadable config test)
2026-09-25 03:03:18 -07:00
kyle
9e0f906c8b
Review fixes: recorder Flush without panic; unreadable config file is an error
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-25 02:58:17 -07:00
kyle and Claude Fable 5.1
74e7d4895b
v0.1 plan: review fixes as failing acceptance tests first; AGENTS.md lessons + deviations rule
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 02:55:57 -07:00
kyle
94b8c84ab5
Merge v0: crossbar static router, health, streaming proxy, admin, smoke (5/5 first-gate by Ornith)
2026-09-25 02:43:01 -07:00
kyle and Claude Fable 5.1
89ab0b8d34
v0 review: checklist, outside probes, six findings; fill the Model column
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 02:42:52 -07:00
kyle
e436c62a52
Add the smoke run, README and systemd unit
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-25 02:40:33 -07:00
kyle and Claude Fable 5.1
1e7d6dd78f
v0 plan: task 04 timeout check needs --preserve-status; note the finding
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 02:33:46 -07:00
kyle
4bc5115f24
Add the admin endpoints, the crossbar binary and the fake upstream
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-25 02:32:50 -07:00
kyle
5b347d9dd9
Add the routing reverse proxy
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-25 02:26:19 -07:00
kyle
68ad94d693
Add the health poller
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-25 02:16:38 -07:00
kyle
73b24357dd
Add the Go module, the gate and the config package
...
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
2026-09-25 02:09:42 -07:00
kyle and Claude Fable 5.1
c524ff943d
v0 plan: move given files to _files/ so go vet ./... ignores them; note the first-attempt finding
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 02:03:00 -07:00
kyle and Claude Fable 5.1
89e47d83f8
v0 plan: AGENTS.md, gate, five task files with given tests, run-plan driver
...
Tests were run against a private reference implementation: gate ok after every
task in order, smoke ok (stream spread ~1000 ms). The reference is not in the
repository.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 01:51:53 -07:00
kyle and Claude Fable 5.1
b52126ba0b
PLAN: OpenCode {env:} substitution verified on 1.15.10
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 00:49:30 -07:00
kyle and Claude Fable 5.1
27d43f67ea
PLAN rev 4: per-session leases (route + fingerprint), learned context sizes, many-OpenCode-instances use case
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 00:48:03 -07:00
kyle and Claude Fable 5.1
fe51c20c10
PLAN rev 3: TOML config
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 00:44:38 -07:00
kyle and Claude Fable 5.1
9f41ce7935
PLAN rev 2: SQLite as state store; per-route/model/host accounting
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 00:44:11 -07:00
kyle and Claude Fable 5.1
2c6bd7b2ce
PLAN: crossbar, an affinity router for the fleet llama-servers
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-25 00:41:16 -07:00