- PRD v1.0 plus addendum with environment reality checks (qwen3.5:9b pool, runaway protection, MVP trim) - Pre-implementation checklist and GitHub integration plan - ADR-001: build on Hermes Agent 0.19.0 as agent runtime; engine stays source of truth - ADR-002: engine stack (FastAPI, Postgres, Redis, React) - Benchmark suites + results: all five capability gates PASS, pool scaling 1.92x at 4 concurrent Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
5.2 KiB
Pre-Implementation Checklist
Ordered steps before writing platform code. Each step has an exit criterion. Do not skip step 1 — everything downstream depends on it.
Step 1: Capability gate — benchmark qwen3.5:9b (1–2 days)
The entire employee model assumes the local model can do the work. Verify before building.
Infrastructure benchmarks (script against the HAProxy/pool endpoint):
- Warm tokens/sec per instance, and with all 4 instances loaded concurrently
- Cold-start time (model load) vs warm request — PRD §3 requires distinguishing these
- Max usable context before VRAM pressure/OOM on the 1080 Ti (test 8k, 16k, 32k)
- Behavior when a 5th request arrives: queue latency through the pool redirect
- Host RAM headroom on each instance under load
Capability benchmarks (20–30 fixed test cases each, scored pass/fail):
- JSON schema compliance: emit valid
task.progressed,clarification.requested, etc. messages with Ollamaformatenforcement — target ≥95% valid - Tool call selection: given 5–8 tool descriptions, pick the right tool with right args — target ≥80%
- Code generation: small full-stack tasks (add endpoint, write test, fix seeded bug) — measure % producing an applying, passing diff
- Instruction retention: does it still follow the system prompt after 10 loop iterations
- Same suite against a qwen coder-family variant that fits 11 GB — pick per-role winners
Exit criterion: written scores in benchmarks/RESULTS.md. If JSON compliance <90% or code tasks <50%, stop and rethink model choice before proceeding.
Step 2: Decide agent runtime (half day)
- Evaluate whether existing Hermes Agent setup can: enforce max iterations, emit the structured protocol, call MCP tools, and hand control back to an external engine per step
- If not cleanly: write a minimal custom loop (~200 lines: prompt → structured response → engine records event → next step). The engine owns state either way (PRD §3)
- Record decision as ADR-001
Step 3: Pick the stack (half day, write it down)
Recommendation (fits ecosystem, one language, boring choices):
- Python 3.12 + FastAPI — engine API, agent loop, tool workers (Playwright, git libs all first-class)
- PostgreSQL — durable state + event log + audit (PRD §14)
- Redis — task queue + pub/sub for live dashboard updates
- LiteLLM — model gateway (local pool + consultant providers, budgets, accounting)
- Docker — sandboxed tool execution
- React + Vite — dashboard; defer 2D engine choice (PixiJS vs Phaser) until Slice 3
- Langfuse — LLM tracing
- Record as ADR-002 with rejected alternatives
Step 4: GitHub setup (half day)
- Execute
GITHUB_INTEGRATION.mdsteps 1–4 (org structure, platform repo, company template repo, GitHub App)
Step 5: Core schemas before code (1–2 days)
- Event schema v1: the ~12 message types from PRD §13.4, with envelope (event ID, company, actor, correlation, timestamp, schema_version, policy decision)
- Draft DDL for the load-bearing subset of PRD §14.3 entities: Company, Employee, WorkItem, Event, Approval, Artifact, ToolExecution, CostEntry — defer the rest until needed
- Authority levels 0–5 as a policy table: (role, tool, environment) → max level; enforcement point in the tool gateway
- Record as ADR-003
Step 6: Define the Slice 1 demo script (1 hour)
Write the exact demo before building it (amended MVP from PRD_ADDENDUM.md §6):
- One company created from a brief; manager decomposes into ~3 tasks
- Engineer employee implements a small feature in an isolated git worktree, on the pool
- QA employee runs an automated + Playwright check, files one seeded defect
- Engineer fixes, QA re-verifies, evidence bundle lands in artifact storage
- Dashboard shows live states; global pause stops cleanly mid-task
- Every state transition visible as events in Postgres
Exit criterion: this script becomes the Slice 1 acceptance test, verbatim.
Step 7: Risk register (1 hour)
Top risks to track (revisit after Step 1 results):
- qwen3.5:9b too weak for autonomous coding — mitigation: capability gate first; smaller task shapes; consultant escalation path
- 4-slot throughput too low for multi-company — mitigation: measure in Step 1; strict background preemption; single company until it hurts
- Runaway loops burn compute silently — mitigation: hard caps + repetition detection before any autonomous mode ships
- Scope explosion (PRD is a platform, a game, and an org sim) — mitigation: slice discipline; nothing outside current slice
- State corruption on worker death mid-task — mitigation: idempotent task steps, event-sourced state, resume-from-last-event tested in Slice 1
Explicit open questions for Philip
- Consultant budget: which external providers approved, monthly cap in dollars?
- Discord server — already created? Bot application registered?
- First real company/project to run through the system once Slice 1 works?
- Where does artifact/object storage live — TrueNAS share, MinIO, or plain disk?
- Is the Hermes Agent setup something to preserve, or replaceable if Step 2 finds friction?