- Three inbound routes from docs/hub-api.md: POST /ask, POST /approve, GET /health.
- Five-step pipeline in src/hub, with packages hear, understand, check, route, answer.
- Routing through OmniRoute with the capability list and routing.md. The
never-route control check runs before any LLM call.
- One real destination: Jervis house TTS, started out of band.
- Fake /ask project (src/tests/fakeproject) for the round-trip test.
- Append-only, size-capped request log. Bearer auth, source match, rate limit.
- Tests: all packages pass, including the fake /ask round trip. Race clean.
- Dockerfile and compose updated to mount routing.md and secrets, log on tmpfs.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
- docs/hub-api.md: language decision (Go 1.25) with reason and the
frozen v1 routes POST /ask, POST /approve, GET /health, including
request/response schemas, bearer-token auth, timeouts, error shapes,
logging, versioning, and a safety confirmation that no route is a
high-consequence control.
- Update README, hub_brief.md open items, and the outline docs so they
no longer say the API is undecided or the language is open.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
- Rename the README diagram's "Destinations" group to "Peers and services".
- Draw internet control as Hub "ask only (query)" and admin app
"control + tap to approve"; draw Paperclip as "slow job (approved)".
- Keep the .mmd source in step with the README diagram.
- State the admin app's scope in the system overview.
Co-Authored-By: Paperclip <noreply@paperclip.ing>