$git clone https://github.com/m0n0x41d/haft*formerly quint-code*
| 1 | <img src="assets/banner.svg" alt="Haft" width="600"> |
| 2 | |
| 3 | *formerly [quint-code](https://github.com/m0n0x41d/quint-code)* |
| 4 | |
| 5 | **FPF governance substrate for AI-assisted software delivery.** |
| 6 | |
| 7 | Your agents (Claude Code, Codex) write code fast. Most repositories are not ready |
| 8 | for serious harness engineering: the target system is underspecified, the |
| 9 | enabling system is implicit, term maps are missing, and runtime evidence is |
| 10 | detached from the spec. Haft makes the project harnessable before it scales |
| 11 | execution. |
| 12 | |
| 13 | --- |
| 14 | |
| 15 | ## What is Haft? |
| 16 | |
| 17 | Haft is a **governance substrate** that makes a repository harnessable for |
| 18 | principal-led FPF engineering work. It turns problem frames, comparisons, |
| 19 | decisions, commissions, and evidence into auditable artifacts, with enforcement |
| 20 | at the kernel boundary. |
| 21 | |
| 22 | **Specify → Think → Run → Govern.** |
| 23 | |
| 24 | Not a coding agent. Not a documentation generator. The handle between the tool |
| 25 | and the hand: the part that turns raw model capability into formal |
| 26 | specification, governed decisions, bounded commissions, and evidence-backed |
| 27 | engineering work. |
| 28 | |
| 29 | ### Three surfaces, one artifact graph |
| 30 | |
| 31 | Haft is consumed through three surfaces over one `.haft/` artifact graph: |
| 32 | |
| 33 | - **Skills + slash commands** in your coding agent (Claude Code, Codex, OpenCode, Cursor) — workflow skills auto-trigger; `/h-frame /h-decide /h-verify ...` run manually |
| 34 | - **CLI** (`haft problem`, `haft solution`, `haft decision`, ...) — manual access, no LLM in the loop |
| 35 | - **MCP server** (`haft serve`) — programmatic access for any LLM agent over the Model Context Protocol |
| 36 | |
| 37 | The kernel MCP server is the cross-host enforcement surface: it validates |
| 38 | arguments server-side and returns structured errors for FPF violations (missing |
| 39 | required fields, parity gaps, weakest-link omissions, predictions without |
| 40 | verify_after). Skills carry the procedure; the kernel carries the gates. |
| 41 | |
| 42 | ### What changed in v8 |
| 43 | |
| 44 | v8 dropped the standalone interactive agent (`haft agent`), the TUI, and the |
| 45 | desktop wrappers. Haft no longer competes with general coding agents on the |
| 46 | runtime surface — it adds governance discipline on top of whichever agent you |
| 47 | already use. The pivot, with parity-compared variants, rollback plan, and |
| 48 | falsifiable predictions, is recorded in |
| 49 | `.haft/decisions/dec-20260525-v8-architecture-pivot-from-standalone-agent-to-g-bbe45cb7.md`. |
| 50 | |
| 51 | Upgrading from v7? See [MIGRATION-v8.md](MIGRATION-v8.md) — the upgrade checklist |
| 52 | plus what was dropped (`haft agent`, TUI, desktop, v7 helper commands). |
| 53 | |
| 54 | --- |
| 55 | |
| 56 | ## Built on First Principles Framework |
| 57 | |
| 58 | [FPF](https://github.com/ailev/FPF) by |
| 59 | [Anatoly Levenchuk](https://www.linkedin.com/in/ailev/) — a rigorous, |
| 60 | transdisciplinary architecture for thinking. |
| 61 | |
| 62 | The skill set (`h-frame`, `h-explore`, `h-compare`, `h-decide`, `h-verify`, and |
| 63 | the full catalog below) gives your agent an FPF-native operating system for |
| 64 | engineering decisions: framing before solutions, characterization before |
| 65 | comparison, parity enforcement, evidence with congruence penalties, |
| 66 | weakest-link assurance, and a cycle that reopens itself when evidence ages or a |
| 67 | measurement fails. |
| 68 | |
| 69 | The framing and comparison skills auto-trigger on operator context. The binding |
| 70 | step (`h-decide`, `h-commission`) is manual-only per the Transformer Mandate: |
| 71 | agents frame and compare; the human principal records the binding choice. |
| 72 | |
| 73 | `haft fpf search` (and `haft_query(action="fpf")` from MCP) searches the indexed |
| 74 | FPF specification. Retrieval is hybrid: exact pattern id first, then keyword |
| 75 | (FTS5) fused with semantic recall over baked section vectors, so a reworded "how |
| 76 | do I think about X" finds the pattern that answers it. The vectors ship inside |
| 77 | the binary; semantic recall degrades to keyword when the embedding sidecar is |
| 78 | absent. |
| 79 | |
| 80 | --- |
| 81 | |
| 82 | ## Install |
| 83 | |
| 84 | ```bash |
| 85 | curl -fsSL https://raw.githubusercontent.com/m0n0x41d/haft/main/install.sh | bash |
| 86 | ``` |
| 87 | |
| 88 | The install URL still points at the historical `quint-code` path. The installed |
| 89 | binary is `haft`. |
| 90 | |
| 91 | Then in your project, init with your host-agent flag: |
| 92 | |
| 93 | ```bash |
| 94 | haft init |