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
This commit is contained in:
82
docs/crucible-first-cut.md
Normal file
82
docs/crucible-first-cut.md
Normal file
@@ -0,0 +1,82 @@
|
||||
# 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:
|
||||
|
||||
```bash
|
||||
~/.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.
|
||||
Reference in New Issue
Block a user