poc(2): Pi sentinel — mail-classify SLM on the cluster, 24/7 #50

Open
opened 2026-07-11 18:18:35 +02:00 by arcodange · 0 comments
Owner

Part of the AI back-office PRDPOC-2 + model-fleet. Closes decision D6 (Pi inference serving). (The T11 reminder-loop test formerly mentioned here moved to #60 — this POC proves the classify workload only.)

Deliverables

  • llama.cpp server (or Ollama) as an arm64 workload on the k3s cluster — deployment manifests likely land in factory (ArgoCD app, house <app> join-key conventions) with the atom + eval here; hard resource limits, low priorityClass, node pinning so Dolibarr always wins contention (challenge C5).
  • fleet/atoms/mail-classify/: closed-set classification {supplier-invoice, bank-notice, government-admin, client, other}, GBNF/JSON-schema constrained, refuse-below-threshold; candidates Qwen3 1.7B/4B, Gemma 3 1B/4B class GGUF Q4.
  • T01 cron loop: poll Zoho every 30 min (high-water mark), classify, enqueue/tag, journal.

Exit gate: ≥95 % accuracy on the three action classes over the 200 labeled mails; p95 latency < 60 s; zero k8s evictions of business workloads over a 2-week soak.

Fallback: sentinel runs on M4-wake + Mistral (loses 24/7 — accepted degraded steady-state per C5).


Execution — Blocked by: #39 (the 200 labeled mails) · Blocks: P3 closure; closes D6 → ADR via factory#22 · Human gates: none (cluster + Zoho creds exist).
Start: claude --worktree pi-sentinel from the erp repo root; first command: kubectl get nodes -o wide (arm64 capacity + taints), then read the PRD model-fleet Pi tier.
Done means: evidence comment here (accuracy on the labeled set, p95 latency, 2-week soak note) → PR(s) merged with Closes #50 → ADR for D6 via factory#22.

Part of the **AI back-office PRD** — [POC-2](https://gitea.arcodange.lab/arcodange-org/factory/src/branch/main/vibe/PRD/ai-back-office/poc-plan.md) + [model-fleet](https://gitea.arcodange.lab/arcodange-org/factory/src/branch/main/vibe/PRD/ai-back-office/model-fleet.md). Closes decision **D6** (Pi inference serving). *(The T11 reminder-loop test formerly mentioned here moved to #60 — this POC proves the classify workload only.)* **Deliverables** - llama.cpp server (or Ollama) as an arm64 workload on the k3s cluster — deployment manifests likely land in factory (ArgoCD app, house `<app>` join-key conventions) with the atom + eval here; hard resource limits, low priorityClass, node pinning so Dolibarr always wins contention (challenge C5). - `fleet/atoms/mail-classify/`: closed-set classification {supplier-invoice, bank-notice, government-admin, client, other}, **GBNF/JSON-schema constrained**, refuse-below-threshold; candidates Qwen3 1.7B/4B, Gemma 3 1B/4B class GGUF Q4. - T01 cron loop: poll Zoho every 30 min (high-water mark), classify, enqueue/tag, journal. **Exit gate:** ≥95 % accuracy on the three action classes over the 200 labeled mails; p95 latency < 60 s; zero k8s evictions of business workloads over a 2-week soak. **Fallback:** sentinel runs on M4-wake + Mistral (loses 24/7 — accepted degraded steady-state per C5). --- **Execution** — Blocked by: #39 (the 200 labeled mails) · Blocks: P3 closure; closes D6 → ADR via factory#22 · Human gates: none (cluster + Zoho creds exist). **Start:** `claude --worktree pi-sentinel` from the erp repo root; first command: `kubectl get nodes -o wide` (arm64 capacity + taints), then read the PRD model-fleet Pi tier. **Done means:** evidence comment here (accuracy on the labeled set, p95 latency, 2-week soak note) → PR(s) merged with `Closes #50` → ADR for D6 via factory#22.
arcodange added this to the P3 — Standing fleet milestone 2026-07-11 18:18:35 +02:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: arcodange-org/erp#50