Files
timmy-config/docs/crucible-first-cut.md
Alexander Whitestone 8ec4bff771 feat(crucible): Z3 sidecar MCP verifier -- rebased onto current main
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
2026-04-03 18:58:43 -04:00

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 size
  • dependencies: [{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:

  • entities
  • before
  • 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.