docs: Add M7 source connectors (10 tasks), M3.5.10 auth integration, remove Kong refs
Build and Push / Test (push) Successful in 3m36s
Build and Push / Build and push image (push) Successful in 20s

- M7.1-M7.10: Extensible SourceConnector trait, Obsidian/paperless/git/S3
  connectors, sync framework, CLI, HTTP endpoints, health monitoring, gate
- M3.5.10: Auth integration with Authentik OIDC → Vault token validation
- DESIGN.md: Add source connectors architecture, update auth to
  Authentik/Vault (Kong removed from cluster)
- INDEX.md: 75 tasks, 11 gates
- Fix all Kong references in M3.5.1 task
This commit is contained in:
Story Crater Bot
2026-08-26 16:56:39 -07:00
parent c8d754b0ba
commit 71ecf482e7
14 changed files with 1560 additions and 13 deletions
+5 -5
View File
@@ -1,4 +1,4 @@
# M3.5.1 — HTTP server + router, Kong auth hook, metrics
# M3.5.1 — HTTP server + router, auth hook, metrics
| Field | Value |
|---|---|
@@ -11,12 +11,12 @@
## Goal
HTTP facade for homelab gateway. Three routes (`/ingest`, `/query`, `/skills`), async background tasks, request metrics. Auth hook validates Kong `apikey:` header. Stateless — no business logic here, just request demultiplexing.
HTTP facade for homelab gateway. Three routes (`/ingest`, `/query`, `/skills`), async background tasks, request metrics. Auth hook validates `apikey:` header (placeholder — M3.5.10 replaces with Vault/Authentik OIDC). Stateless — no business logic here, just request demultiplexing.
## Architecture
```
Kong (api.riotpiao.com)
nginx ingress + homelab-frontend gateway (api.riotpiao.com)
↓ apikey validation
HTTP Server (Rust httpd, actix-web or axum)
↓ route dispatch
@@ -33,7 +33,7 @@ HTTP Server (Rust httpd, actix-web or axum)
- `GET /memory/skills` — returns 200 with empty skills `[]`
4. Request logger middleware — every request logs method, path, status, latency in one line (not pretty-printed).
5. Metrics middleware — track latency histogram per route (p50/p95/p99 in microseconds), request count, error count.
6. Kong auth hook:
6. Auth hook (placeholder):
- Extract `apikey:` header (case-insensitive header name, exact value match against stored key)
- If missing or unrecognized → 401 with `{"error":"unauthorized","reason":"missing apikey header"}`
- Pass apikey to request context so handlers can log which key made the request
@@ -73,7 +73,7 @@ HTTP Server (Rust httpd, actix-web or axum)
## Traps
- Actix-web's `.service()` does not inherit middleware registered outside a scope; scope middleware applies only to routes inside that scope.
- Header name case matters for Kong's key-auth; `apikey:` is lowercase.
- Header name: `apikey:` (lowercase). Placeholder — M3.5.10 replaces with Vault token validation.
- `tokio::runtime::Runtime::new()` in tests blocks on network if used naively — use test utilities from `actix-web` or `axum` that spawn the server in a background thread.
- Metrics registered at startup are easy to forget to increment. Middleware must actually call the metrics update, not just define it.