Closes #86. Adds: - bin/crucible_mcp_server.py (schedule, dependency, capacity proofs) - docs/crucible-first-cut.md - playbooks/verified-logic.yaml - config.yaml crucible MCP server entry
1.7 KiB
1.7 KiB
Crucible First Cut
This is the first narrow neuro-symbolic slice for Timmy.
Goal
Prove constraint logic instead of bluffing through it.
Shape
The Crucible is a sidecar MCP server that lives in timmy-config and deploys into ~/.hermes/bin/.
It is loaded by Hermes through native MCP discovery. No Hermes fork.
Templates shipped in v0
1. schedule_tasks
Use for:
- deadline feasibility
- task ordering with dependencies
- small integer scheduling windows
Inputs:
tasks:[{name, duration}]horizon: integer window sizedependencies:[{before, after, lag?}]max_parallel_tasks: integer worker count
Outputs:
status: sat|unsat|unknown- witness schedule when SAT
- proof log path
2. order_dependencies
Use for:
- topological ordering
- cycle detection
- dependency consistency checks
Inputs:
entitiesbefore- optional
fixed_positions
Outputs:
- valid ordering when SAT
- contradiction when UNSAT
- proof log path
3. capacity_fit
Use for:
- resource budgeting
- optional-vs-required work selection
- capacity feasibility
Inputs:
items: [{name, amount, value?, required?}]capacity
Outputs:
- chosen feasible subset when SAT
- contradiction when required load exceeds capacity
- proof log path
Demo
Run locally:
~/.hermes/hermes-agent/venv/bin/python ~/.hermes/bin/crucible_mcp_server.py selftest
This produces:
- one UNSAT schedule proof
- one SAT schedule proof
- one SAT dependency ordering proof
- one SAT capacity proof
Scope guardrails
Do not force every answer through the Crucible. Use it when the task is genuinely constraint-shaped. If the problem does not fit one of the templates, say so plainly.