proofhouse 0.4.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. proofhouse-0.4.1/LICENSE +21 -0
  2. proofhouse-0.4.1/PKG-INFO +260 -0
  3. proofhouse-0.4.1/README.md +229 -0
  4. proofhouse-0.4.1/pyproject.toml +54 -0
  5. proofhouse-0.4.1/setup.cfg +4 -0
  6. proofhouse-0.4.1/src/proofhouse/__init__.py +9 -0
  7. proofhouse-0.4.1/src/proofhouse/cli.py +140 -0
  8. proofhouse-0.4.1/src/proofhouse/compiler/__init__.py +12 -0
  9. proofhouse-0.4.1/src/proofhouse/compiler/adapters/__init__.py +56 -0
  10. proofhouse-0.4.1/src/proofhouse/compiler/adapters/anthropic.py +305 -0
  11. proofhouse-0.4.1/src/proofhouse/compiler/adapters/anthropic_schema_subset.py +102 -0
  12. proofhouse-0.4.1/src/proofhouse/compiler/adapters/base.py +67 -0
  13. proofhouse-0.4.1/src/proofhouse/compiler/adapters/fake.py +107 -0
  14. proofhouse-0.4.1/src/proofhouse/compiler/adapters/gemini.py +344 -0
  15. proofhouse-0.4.1/src/proofhouse/compiler/adapters/gemini_schema_subset.py +143 -0
  16. proofhouse-0.4.1/src/proofhouse/compiler/adapters/openai.py +219 -0
  17. proofhouse-0.4.1/src/proofhouse/compiler/adapters/openai_schema_subset.py +85 -0
  18. proofhouse-0.4.1/src/proofhouse/compiler/api.py +384 -0
  19. proofhouse-0.4.1/src/proofhouse/compiler/benchmark.py +367 -0
  20. proofhouse-0.4.1/src/proofhouse/compiler/canonical.py +97 -0
  21. proofhouse-0.4.1/src/proofhouse/compiler/capability.py +55 -0
  22. proofhouse-0.4.1/src/proofhouse/compiler/cli_compiler.py +887 -0
  23. proofhouse-0.4.1/src/proofhouse/compiler/closed_loop.py +642 -0
  24. proofhouse-0.4.1/src/proofhouse/compiler/codegen/__init__.py +0 -0
  25. proofhouse-0.4.1/src/proofhouse/compiler/codegen/typescript.py +126 -0
  26. proofhouse-0.4.1/src/proofhouse/compiler/contracts.py +293 -0
  27. proofhouse-0.4.1/src/proofhouse/compiler/diagnostics.py +159 -0
  28. proofhouse-0.4.1/src/proofhouse/compiler/eval_aggregate.py +28 -0
  29. proofhouse-0.4.1/src/proofhouse/compiler/eval_dataset.py +80 -0
  30. proofhouse-0.4.1/src/proofhouse/compiler/eval_product.py +184 -0
  31. proofhouse-0.4.1/src/proofhouse/compiler/eval_rubric.py +61 -0
  32. proofhouse-0.4.1/src/proofhouse/compiler/evaluation.py +79 -0
  33. proofhouse-0.4.1/src/proofhouse/compiler/evidence.py +89 -0
  34. proofhouse-0.4.1/src/proofhouse/compiler/execution.py +441 -0
  35. proofhouse-0.4.1/src/proofhouse/compiler/hosted_openapi.py +158 -0
  36. proofhouse-0.4.1/src/proofhouse/compiler/hosted_slice.py +270 -0
  37. proofhouse-0.4.1/src/proofhouse/compiler/immutability.py +71 -0
  38. proofhouse-0.4.1/src/proofhouse/compiler/intake.py +213 -0
  39. proofhouse-0.4.1/src/proofhouse/compiler/ir.py +104 -0
  40. proofhouse-0.4.1/src/proofhouse/compiler/missionrig.py +148 -0
  41. proofhouse-0.4.1/src/proofhouse/compiler/model_suggest.py +89 -0
  42. proofhouse-0.4.1/src/proofhouse/compiler/orchestration/__init__.py +1 -0
  43. proofhouse-0.4.1/src/proofhouse/compiler/orchestration/assay.py +30 -0
  44. proofhouse-0.4.1/src/proofhouse/compiler/orchestration/claim_ledger.py +21 -0
  45. proofhouse-0.4.1/src/proofhouse/compiler/orchestration/learning.py +111 -0
  46. proofhouse-0.4.1/src/proofhouse/compiler/orchestration/overseer.py +9 -0
  47. proofhouse-0.4.1/src/proofhouse/compiler/orchestration/proof.py +50 -0
  48. proofhouse-0.4.1/src/proofhouse/compiler/orchestration/route.py +120 -0
  49. proofhouse-0.4.1/src/proofhouse/compiler/orchestration/shipwalk_consume.py +26 -0
  50. proofhouse-0.4.1/src/proofhouse/compiler/orchestration/stack_profiles.py +77 -0
  51. proofhouse-0.4.1/src/proofhouse/compiler/passes/__init__.py +20 -0
  52. proofhouse-0.4.1/src/proofhouse/compiler/passes/adapter_lowering.py +159 -0
  53. proofhouse-0.4.1/src/proofhouse/compiler/passes/base.py +46 -0
  54. proofhouse-0.4.1/src/proofhouse/compiler/passes/capability_resolution.py +103 -0
  55. proofhouse-0.4.1/src/proofhouse/compiler/passes/normalization.py +32 -0
  56. proofhouse-0.4.1/src/proofhouse/compiler/passes/optimization.py +17 -0
  57. proofhouse-0.4.1/src/proofhouse/compiler/passes/safety.py +69 -0
  58. proofhouse-0.4.1/src/proofhouse/compiler/passes/validation.py +68 -0
  59. proofhouse-0.4.1/src/proofhouse/compiler/paths.py +55 -0
  60. proofhouse-0.4.1/src/proofhouse/compiler/pipeline.py +76 -0
  61. proofhouse-0.4.1/src/proofhouse/compiler/plain_language.py +134 -0
  62. proofhouse-0.4.1/src/proofhouse/compiler/repair.py +47 -0
  63. proofhouse-0.4.1/src/proofhouse/compiler/requirements_contract.py +774 -0
  64. proofhouse-0.4.1/src/proofhouse/compiler/requirements_ir_bridge.py +222 -0
  65. proofhouse-0.4.1/src/proofhouse/compiler/requirements_plain_produce.py +193 -0
  66. proofhouse-0.4.1/src/proofhouse/compiler/requirements_produce.py +181 -0
  67. proofhouse-0.4.1/src/proofhouse/compiler/resource_bounds.py +8 -0
  68. proofhouse-0.4.1/src/proofhouse/compiler/runtime_context.py +235 -0
  69. proofhouse-0.4.1/src/proofhouse/compiler/schemas/benchmark-manifest.schema.json +108 -0
  70. proofhouse-0.4.1/src/proofhouse/compiler/schemas/diagnostic_code_registry.json +30 -0
  71. proofhouse-0.4.1/src/proofhouse/compiler/schemas/diagnostic_contract.schema.json +47 -0
  72. proofhouse-0.4.1/src/proofhouse/compiler/schemas/proofhouse_ir_v0_1.schema.json +217 -0
  73. proofhouse-0.4.1/src/proofhouse/compiler/schemas/requirements_diagnostic_registry.json +35 -0
  74. proofhouse-0.4.1/src/proofhouse/compiler/sink.py +55 -0
  75. proofhouse-0.4.1/src/proofhouse/loadouts.py +110 -0
  76. proofhouse-0.4.1/src/proofhouse/optimize/__init__.py +5 -0
  77. proofhouse-0.4.1/src/proofhouse/optimize/case.py +444 -0
  78. proofhouse-0.4.1/src/proofhouse/optimize/checks.py +416 -0
  79. proofhouse-0.4.1/src/proofhouse/optimize/cli.py +759 -0
  80. proofhouse-0.4.1/src/proofhouse/optimize/cli_workflow.py +342 -0
  81. proofhouse-0.4.1/src/proofhouse/optimize/data/model_registry.json +253 -0
  82. proofhouse-0.4.1/src/proofhouse/optimize/data/proofhouse-framework.json +402 -0
  83. proofhouse-0.4.1/src/proofhouse/optimize/data/proofhouse.skill +0 -0
  84. proofhouse-0.4.1/src/proofhouse/optimize/data/reference-advisory/advisory.txt +10 -0
  85. proofhouse-0.4.1/src/proofhouse/optimize/data/reference-advisory/answers.json +5 -0
  86. proofhouse-0.4.1/src/proofhouse/optimize/data/reference-advisory/objective.txt +1 -0
  87. proofhouse-0.4.1/src/proofhouse/optimize/data/reference-advisory/output-v1.txt +1 -0
  88. proofhouse-0.4.1/src/proofhouse/optimize/data/reference-advisory/output-v2.txt +1 -0
  89. proofhouse-0.4.1/src/proofhouse/optimize/data/reference-advisory/prompt-v1.txt +1 -0
  90. proofhouse-0.4.1/src/proofhouse/optimize/data/reference-advisory/prompt-v2.txt +1 -0
  91. proofhouse-0.4.1/src/proofhouse/optimize/install_skill.py +302 -0
  92. proofhouse-0.4.1/src/proofhouse/optimize/model_notes.py +296 -0
  93. proofhouse-0.4.1/src/proofhouse/optimize/packets.py +182 -0
  94. proofhouse-0.4.1/src/proofhouse/optimize/reference_workflow.py +218 -0
  95. proofhouse-0.4.1/src/proofhouse/optimize/registry.py +114 -0
  96. proofhouse-0.4.1/src/proofhouse/optimize/workflow.py +507 -0
  97. proofhouse-0.4.1/src/proofhouse/runner.py +66 -0
  98. proofhouse-0.4.1/src/proofhouse/scan.py +351 -0
  99. proofhouse-0.4.1/src/proofhouse/schemas.py +51 -0
  100. proofhouse-0.4.1/src/proofhouse/scoring.py +30 -0
  101. proofhouse-0.4.1/src/proofhouse/templates.py +168 -0
  102. proofhouse-0.4.1/src/proofhouse.egg-info/PKG-INFO +260 -0
  103. proofhouse-0.4.1/src/proofhouse.egg-info/SOURCES.txt +122 -0
  104. proofhouse-0.4.1/src/proofhouse.egg-info/dependency_links.txt +1 -0
  105. proofhouse-0.4.1/src/proofhouse.egg-info/entry_points.txt +3 -0
  106. proofhouse-0.4.1/src/proofhouse.egg-info/requires.txt +8 -0
  107. proofhouse-0.4.1/src/proofhouse.egg-info/top_level.txt +1 -0
  108. proofhouse-0.4.1/tests/test_artifact_validators.py +129 -0
  109. proofhouse-0.4.1/tests/test_docs_status_lines.py +30 -0
  110. proofhouse-0.4.1/tests/test_eval_dataset_integrity.py +18 -0
  111. proofhouse-0.4.1/tests/test_loadouts.py +31 -0
  112. proofhouse-0.4.1/tests/test_model_surfaces.py +101 -0
  113. proofhouse-0.4.1/tests/test_package_version.py +12 -0
  114. proofhouse-0.4.1/tests/test_prompt_architect_templates.py +72 -0
  115. proofhouse-0.4.1/tests/test_readme_honesty_lines.py +23 -0
  116. proofhouse-0.4.1/tests/test_readme_how_it_works.py +48 -0
  117. proofhouse-0.4.1/tests/test_readme_import_claim.py +40 -0
  118. proofhouse-0.4.1/tests/test_rebrand_closeout.py +60 -0
  119. proofhouse-0.4.1/tests/test_reference_workflow_doc.py +64 -0
  120. proofhouse-0.4.1/tests/test_rubric_scoring.py +19 -0
  121. proofhouse-0.4.1/tests/test_scan.py +216 -0
  122. proofhouse-0.4.1/tests/test_schema_validation.py +19 -0
  123. proofhouse-0.4.1/tests/test_skill_bundle.py +91 -0
  124. proofhouse-0.4.1/tests/test_skill_root_parity.py +48 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,260 @@
1
+ Metadata-Version: 2.4
2
+ Name: proofhouse
3
+ Version: 0.4.1
4
+ Summary: Prompt operations framework for prompt architecture, audits, rewrites, and evals.
5
+ Author: Proofhouse Maintainers
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/KM-it-ops/Proofhouse
8
+ Project-URL: Repository, https://github.com/KM-it-ops/Proofhouse
9
+ Project-URL: Issues, https://github.com/KM-it-ops/Proofhouse/issues
10
+ Project-URL: Changelog, https://github.com/KM-it-ops/Proofhouse/blob/main/CHANGELOG.md
11
+ Keywords: prompts,prompt-engineering,evals,agents
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Environment :: Console
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Programming Language :: Python :: 3.14
21
+ Requires-Python: >=3.11
22
+ Description-Content-Type: text/markdown
23
+ License-File: LICENSE
24
+ Requires-Dist: jsonschema>=4.18
25
+ Requires-Dist: rfc8785==0.1.4
26
+ Provides-Extra: live
27
+ Requires-Dist: httpx>=0.27; extra == "live"
28
+ Provides-Extra: test
29
+ Requires-Dist: pytest>=8; extra == "test"
30
+ Dynamic: license-file
31
+
32
+ # Proofhouse
33
+
34
+ [![CI](https://github.com/KM-it-ops/Proofhouse/actions/workflows/ci.yml/badge.svg)](https://github.com/KM-it-ops/Proofhouse/actions/workflows/ci.yml)
35
+ [![Python](https://img.shields.io/badge/python-3.11%2B-3776ab)](https://www.python.org/)
36
+ [![Framework](https://img.shields.io/badge/framework-v1.3-7c3aed)](proofhouse-framework.json)
37
+ [![PromptOps](https://img.shields.io/badge/promptops-clarify%20%E2%86%92%20compile%20%E2%86%92%20heal-0f766e)](#how-it-works)
38
+ [![License](https://img.shields.io/badge/license-MIT-111827)](LICENSE)
39
+
40
+ **A local workspace for revising prompts with evidence you can trace: every PASS names the exact prompt, outputs, checks and judgements it came from.**
41
+
42
+ I built Proofhouse because I kept rewriting the same prompt for different models and never had a good answer for which version was better, or whether a revision had quietly dropped a requirement. You give it an objective and a target model; it asks its clarifying questions in one batch and turns your answers into constraints that every later revision must keep. You record each prompt revision and the outputs a model actually produced, declare the checks that matter, and Proofhouse tells you which revision passes, which constraint lacks evidence, and what changed between revisions.
43
+
44
+ It runs on your machine with no API key. Proofhouse writes the prompts it needs as packets; you run them in the agent or model you already use and paste the results back. It is a local tool, not a hosted service, and I make no benchmark or quality claims for it.
45
+
46
+ [![Raw request, the clarifying answers, and the compiled prompt from a Grok 4.7 run](https://github.com/KM-it-ops/Proofhouse/raw/main/docs/assets/proofhouse-demo.jpg)](https://github.com/KM-it-ops/Proofhouse/raw/main/docs/assets/proofhouse-demo.mp4)
47
+
48
+ *42-second demo of the standalone app (click to play). The terminal in `apps/proofhouse.jsx` types the Facebook objective, sets Grok 4.7, checks the loop, and compiles the prompt. The grid, particles, and cursor keep moving the whole time. Remotion draws it. Hyperframes runs the same timeline in `videos/readme-hype`.*
49
+
50
+ Portfolio: [km-it-ops.github.io](https://km-it-ops.github.io/)
51
+
52
+ ---
53
+
54
+ ## Try it in two minutes
55
+
56
+ ```bash
57
+ uv tool install proofhouse
58
+ proofhouse-compiler demo
59
+ ```
60
+
61
+ That runs the [reference workflow](https://github.com/KM-it-ops/Proofhouse/blob/main/docs/reference-workflow.md) end to end, offline, from files shipped in the package. It replays recorded outputs: a security-advisory summary whose first revision invents an exploitation claim and fails its checks, and whose second revision passes without losing a constraint. It does not call a model. On Windows, set `$env:PYTHONUTF8='1'` first for reliable console output.
62
+
63
+ With pip: `python -m pip install proofhouse`, then `proofhouse-compiler demo`.
64
+
65
+ From a clone, the same check is `uv run python scripts/reference_workflow.py` (or `python -m pip install -e ".[test]"` without [uv](https://docs.astral.sh/uv/)). The by-hand steps later on this page copy `examples/reference-advisory`, which is in the repository, not in the wheel.
66
+
67
+ ---
68
+
69
+ ## How it works
70
+
71
+ `proofhouse-compiler optimize` renders the framework's clarify / compile / self-heal prompts as packets you run in the agent or model of your choice, and checks what you paste back against the criteria you declare. It does not call a model and it does not rate quality.
72
+
73
+ These are the [reference workflow](docs/reference-workflow.md)'s steps, and they run as written. `pc` below is `proofhouse-compiler` (`uv run proofhouse-compiler` from a clone). Work in a scratch folder holding copies of the example inputs:
74
+
75
+ ```bash
76
+ mkdir -p build/try && cp examples/reference-advisory/* build/try && cd build/try
77
+ ```
78
+
79
+ **1. Start a case and answer one batch of questions.** Proofhouse writes a clarify packet, `advisory-case/01-clarify.md`. You run it in your own agent and save the answers as `advisory-case/answers.json` (for this example, copy `answers.json` there). Compile turns each answer into an accepted constraint (K1-K3) that every later revision receives.
80
+
81
+ ```bash
82
+ pc optimize new --case advisory-case --objective-file objective.txt --model "Claude Sonnet 5" --preset efficient
83
+ pc optimize compile --case advisory-case
84
+ ```
85
+
86
+ **2. Say how each constraint will be checked.** Checks can look at the prompt text or at what a model returned (`--target output`), and some can be a human judgement (`--manual`).
87
+
88
+ ```bash
89
+ pc optimize constraints add --case advisory-case --text "Cite the advisory section for each claim" # K4
90
+ pc optimize criteria add --case advisory-case --id AUD --must-contain "SOC analysts"
91
+ pc optimize criteria add --case advisory-case --id UNK --target output --must-contain UNKNOWN
92
+ pc optimize criteria add --case advisory-case --id NOGUESS --target output --must-not-contain "exploited in the wild"
93
+ pc optimize criteria add --case advisory-case --id LEN --target output --max-words 120
94
+ pc optimize criteria add --case advisory-case --id CITE --target output --regex "\(s\d\)"
95
+ pc optimize criteria add --case advisory-case --id ACC --target output --manual "Every claim matches the advisory"
96
+ pc optimize constraints link --case advisory-case --id K1 --criterion AUD
97
+ pc optimize constraints link --case advisory-case --id K2 --criterion UNK
98
+ pc optimize constraints link --case advisory-case --id K2 --criterion NOGUESS
99
+ pc optimize constraints link --case advisory-case --id K3 --criterion LEN
100
+ pc optimize constraints link --case advisory-case --id K4 --criterion CITE
101
+ pc optimize constraints link --case advisory-case --id K4 --criterion ACC
102
+ ```
103
+
104
+ **3. Record a revision and what it produced, judge the manual check, then check it.**
105
+
106
+ ```bash
107
+ pc optimize record --case advisory-case --prompt-file prompt-v1.txt
108
+ pc optimize output add --case advisory-case --revision 1 --output-file output-v1.txt --input-id EC-2026-017 --input-file advisory.txt --model "Claude Sonnet 5" --source "pasted from host agent"
109
+ pc optimize verdict --case advisory-case --revision 1 --criterion ACC --run R1 --result fail --note "claims active exploitation; the advisory does not say that"
110
+ pc optimize check --case advisory-case # exit 3: v1 FAIL UNK NOGUESS CITE ACC fail
111
+ ```
112
+
113
+ **4. Revise without losing anything.** The revise packet carries your feedback, the original answers and every accepted constraint. Run it in your agent, save the new prompt, and record revision 2 the same way.
114
+
115
+ ```bash
116
+ pc optimize revise --case advisory-case --feedback "It claimed active exploitation, which the advisory never states."
117
+ pc optimize record --case advisory-case --prompt-file prompt-v2.txt
118
+ pc optimize output add --case advisory-case --revision 2 --output-file output-v2.txt --input-id EC-2026-017 --input-file advisory.txt --model "Claude Sonnet 5" --source "pasted from host agent"
119
+ pc optimize verdict --case advisory-case --revision 2 --criterion ACC --run R2 --result pass
120
+ pc optimize check --case advisory-case # exit 0: v2 PASS, K1-K4 satisfied
121
+ ```
122
+
123
+ **5. Compare, report and hand it on.** `compare` shows what newly passes or regresses between revisions, `report` writes the evidence as Markdown, and `export` / `import` move a case to another workspace, refusing any file that does not match the bundle's manifest (the manifest is not signed).
124
+
125
+ ### What a PASS proves, and what it does not
126
+
127
+ | A PASS from `optimize check` means | It does not mean |
128
+ |---|---|
129
+ | Every check you declared passed on this exact revision (and, for output checks, on the outputs you recorded) | That the prompt is good in general, or better than one you did not test |
130
+ | Every accepted constraint is linked to a check that passed | That a model will reproduce the recorded outputs |
131
+ | Each human verdict applies to the exact text and check definition you judged | That model notes are correct: shipped profiles cite no sources yet and are labeled `unverified` |
132
+ | Nothing was edited after it was recorded (digests are re-checked) | That the files are tamper-proof against someone who controls your machine |
133
+
134
+ Details: [docs/architecture.md](docs/architecture.md), [decision 0002](docs/decisions/0002-what-pass-means.md), [evidence format](docs/evidence-format.md).
135
+
136
+ ---
137
+
138
+ ## Two ways in
139
+
140
+ | Entry | Use it when | Status | Network |
141
+ |---|---|---|---|
142
+ | **Command line**: `proofhouse-compiler optimize` | You want the evidence trail above: constraints, recorded outputs, checks, compare, report | supported | none |
143
+ | **Cursor or Claude Code skill**: `proofhouse-compiler install-skill` asks which agent (Cursor, Claude Code, or another one you name with its skills folder); `--host cursor` or `--host claude` skips the question. Then say "Proofhouse" in a new chat or session | You want the same clarify → compile → self-heal loop as a conversation | supported entry point | the host agent's tools |
144
+
145
+ Proofhouse is two products in one repo, at different levels of maturity. The **PromptOps skill and framework (v1.3)**, the conversational meta-optimizer with current frontier model profiles, is the most mature part of the project. The headless compiler's maturity is listed under [Experimental and prototype parts](#experimental-and-prototype-parts).
146
+
147
+ Both entries use the same framework ([`proofhouse-framework.json`](proofhouse-framework.json)) and the same model notes. The framework also covers Efficient / Balanced / Thorough token presets, loops for recurring agents (trigger, body, exit, escalation), prompt audits with missing-context labels, and agent design (permission maps, tool boundaries, stop conditions). The skill is installed to `~/.cursor/skills/proofhouse` (or `~/.claude/skills/proofhouse` with `--host claude`) and the installer checks it (the bundle ships inside the package; `tests/test_skill_bundle.py` keeps it identical to `skills/proofhouse/`); without the console script, `python -m zipfile -e skills/proofhouse/proofhouse.skill ~/.cursor/skills` (or `~/.claude/skills`) does the same. The skill can research an unfamiliar model with the host agent's tools; the command line never goes online, and uses your own notes (`models remember`) or a generic profile labeled `fallback`.
148
+
149
+ ---
150
+
151
+ ## Supported models (framework v1.3)
152
+
153
+ Built-in `modelNotes` cover prompting quirks, API ids, and cost and caching levers for each model:
154
+
155
+ <!-- supported-models:begin -->
156
+ | Tier | Models |
157
+ |---|---|
158
+ | **Anthropic** | Claude Fable 5.1 · Mythos 5.1 · Opus 5 · Sonnet 5 · Haiku 4.5 |
159
+ | **OpenAI** | GPT-5.6 Sol · Terra · Luna |
160
+ | **Google** | Gemini 3.8 Flash |
161
+ | **xAI** | Grok 4.6 |
162
+ | **Meta** | Muse Spark 1.3 |
163
+ | **Moonshot** | Kimi K3 |
164
+ | **Legacy** | GPT-5.5 · Gemini (generic) · Fable 5 · Mythos 5 · Opus 4.8 |
165
+ | **Other** | Skill and artifact: the host agent or the artifact web-researches the model and caches the paragraph. CLI (`proofhouse-compiler`): offline; `models remember` stores your own notes, otherwise the generic profile is used and labeled `fallback`. |
166
+
167
+ Profiles last reviewed 2026-09-03; a profile older than 90 days is flagged stale. None of the 18 profiles cites sources yet, so every profile is labeled unverified. They are prompting guidance, not vendor specifications. `proofhouse-compiler models list` shows per-model ids, aliases, and dates.
168
+
169
+ Full profiles: [`proofhouse-framework.json`](proofhouse-framework.json) · human-readable [`proofhouse-framework.md`](proofhouse-framework.md)
170
+ <!-- supported-models:end -->
171
+
172
+ ---
173
+
174
+ ## Install and verify
175
+
176
+ One Python package, version 0.4.1, ships two console scripts:
177
+
178
+ | Command | What it is | Subcommands |
179
+ |---|---|---|
180
+ | `proofhouse-compiler` | The prompt workspace above, plus an offline compiler (requirements → IR → adapter artifact → evidence), the model-notes cache, the skill installer, and the packaged reference demo | `optimize` `models` `install-skill` `demo` `doctor` `validate` `inspect` `compile` `closed-loop` `adapters` |
181
+ | `proofhouse` | Eval harness: JSONL datasets, YAML rubrics, report skeletons | `validate` `report` `loadouts` `compile-loadout` `generate` |
182
+
183
+ Supported: the `optimize` case workflow, `models`, `install-skill`, `demo`, and `validate` / `compile` / `closed-loop`. The experimental commands are listed under [Experimental and prototype parts](#experimental-and-prototype-parts).
184
+
185
+ ```bash
186
+ uv sync --extra test # package + pytest into .venv
187
+ uv run proofhouse-compiler doctor # doctor: success
188
+ uv run proofhouse-compiler closed-loop tests/compiler/fixtures/closed_loop_requirements_minimal.json --repair-budget 1
189
+ # closed-loop: PASS (structural)
190
+ uv run proofhouse validate --dataset evals/datasets/prompt_audit_cases.jsonl
191
+ # Dataset validation passed: ...
192
+ uv run pytest -q # all passed, 1 deselected (live tests are opt-in)
193
+ uv run proofhouse-compiler demo --quiet # reference workflow: OK
194
+ uv run python scripts/reference_workflow.py --quiet # same run via the script wrapper
195
+ ```
196
+
197
+ CI runs the test suite on Linux, macOS and Windows with Python 3.11 to 3.14, runs the reference workflow against the built wheel, and runs `proofhouse-compiler demo` from that wheel outside the checkout. Everything above is offline: no network, no API key. Nothing here is a benchmark.
198
+
199
+ The compiler's `closed-loop` PASS is structural: the prompt compiles offline with the fake adapter and passes security gates, and its evidence lists what it did not measure. Its approved headless profiles are `structured_minimal_v0` and `structured_developer_v0`.
200
+
201
+ ---
202
+
203
+ ## Experimental and prototype parts
204
+
205
+ These ship in the repository but are not the supported path. Treat them as previews.
206
+
207
+ | Part | Status | Network |
208
+ |---|---|---|
209
+ | `proofhouse-compiler execute-openai`: a fail-closed live OpenAI call that refuses to send unless every mandatory requirement is in the request; its cost ceiling is recorded, not enforced | experimental, opt-in | yes, only when opted in |
210
+ | `evaluate-product`, the requirements-contract commands, `route` / `assay` / `proof` | experimental | none |
211
+ | [`apps/proofhouse.jsx`](apps/proofhouse.jsx): a Claude artifact with a model picker, efficiency modes and a live compile loop; for an unknown model it web-researches, caches the result in artifact storage and labels it `researched` / `cached` / `fallback` | experimental | calls `api.anthropic.com` |
212
+ | The `hosted-*` and `missionrig-*` modules: experimental library slices, not a hosted service (their tenant label is not isolation) | experimental | none |
213
+ | `apps/dashboard/` | prototype | none |
214
+
215
+ The headless requirements compiler's maturity is still `PARTIAL`. Full map with versions and diagnostic codes: [docs/surfaces.md](docs/surfaces.md).
216
+
217
+ ---
218
+
219
+ ## Design rules
220
+
221
+ - Stay lightweight by default. Tighten only for safety, agentic execution, or missing context.
222
+ - Never invent repository or project facts.
223
+ - Use exact missing-context labels: `UNKNOWN`, `NOT SPECIFIED`, `NOT FOUND IN PROVIDED MATERIAL`.
224
+ - Keep cybersecurity and sensitive-data work defensive, authorized, and privacy-preserving.
225
+ - No private chain-of-thought dumps. Concise rationales only.
226
+
227
+ It was designed for coding agents, Custom GPTs, Cursor skills, and security-adjacent AI work, where inventing facts or skipping a safety boundary is not acceptable.
228
+
229
+ ---
230
+
231
+ ## Repository map
232
+
233
+ ```text
234
+ proofhouse-framework.* Portable meta-optimizer spec (v1.3 model profiles)
235
+ skills/proofhouse/ Cursor / Claude Code skill bundle + artifact JSX
236
+ src/proofhouse/ Eval harness, headless compiler, optimize (cases, constraints, runs, checks, export)
237
+ examples/ Demo inputs, including reference-advisory/ for the reference workflow
238
+ scripts/ Generators (model surfaces, skill bundle, contracts) and reference_workflow.py
239
+ docs/ Scope, architecture, surfaces, evidence format, decisions, assurance statements
240
+ prompts/ Core prompt, modes, modules, templates, Custom GPT pack
241
+ evals/ JSONL datasets, YAML rubrics
242
+ apps/ Experimental artifact and dashboard prototypes
243
+ tests/ Test suite, contract schemas and fixtures
244
+ ```
245
+
246
+ Internal mission reports and review corpora are not published in this repository. Public decisions are summarized in [docs/decisions/](docs/decisions/), and each assurance statement in [docs/assurance/](docs/assurance/) lists the exact revision, commands, results and exclusions.
247
+
248
+ ---
249
+
250
+ ## Start here
251
+
252
+ - [Reference workflow](https://github.com/KM-it-ops/Proofhouse/blob/main/docs/reference-workflow.md): one failed check to a verified fix, offline
253
+ - [Product scope](https://github.com/KM-it-ops/Proofhouse/blob/main/docs/product-scope.md) · [Architecture](https://github.com/KM-it-ops/Proofhouse/blob/main/docs/architecture.md) · [Surfaces and contracts](https://github.com/KM-it-ops/Proofhouse/blob/main/docs/surfaces.md) · [Evidence format](https://github.com/KM-it-ops/Proofhouse/blob/main/docs/evidence-format.md)
254
+ - [Decision records](https://github.com/KM-it-ops/Proofhouse/blob/main/docs/decisions/) · [Assurance statements](https://github.com/KM-it-ops/Proofhouse/blob/main/docs/assurance/) · [Troubleshooting](https://github.com/KM-it-ops/Proofhouse/blob/main/docs/troubleshooting.md)
255
+ - [Quickstart](https://github.com/KM-it-ops/Proofhouse/blob/main/docs/quickstart.md) · [Showcase](https://github.com/KM-it-ops/Proofhouse/blob/main/docs/showcase.md) · [Custom GPT setup](https://github.com/KM-it-ops/Proofhouse/blob/main/docs/custom-gpt-setup.md)
256
+ - [Changelog](https://github.com/KM-it-ops/Proofhouse/blob/main/CHANGELOG.md) · [Contributing](https://github.com/KM-it-ops/Proofhouse/blob/main/CONTRIBUTING.md) · [Security policy](https://github.com/KM-it-ops/Proofhouse/blob/main/SECURITY.md)
257
+
258
+ ---
259
+
260
+ <sub>Custom GPT surface: <strong>PromptOps Architect powered by Proofhouse</strong> · MIT License</sub>
@@ -0,0 +1,229 @@
1
+ # Proofhouse
2
+
3
+ [![CI](https://github.com/KM-it-ops/Proofhouse/actions/workflows/ci.yml/badge.svg)](https://github.com/KM-it-ops/Proofhouse/actions/workflows/ci.yml)
4
+ [![Python](https://img.shields.io/badge/python-3.11%2B-3776ab)](https://www.python.org/)
5
+ [![Framework](https://img.shields.io/badge/framework-v1.3-7c3aed)](proofhouse-framework.json)
6
+ [![PromptOps](https://img.shields.io/badge/promptops-clarify%20%E2%86%92%20compile%20%E2%86%92%20heal-0f766e)](#how-it-works)
7
+ [![License](https://img.shields.io/badge/license-MIT-111827)](LICENSE)
8
+
9
+ **A local workspace for revising prompts with evidence you can trace: every PASS names the exact prompt, outputs, checks and judgements it came from.**
10
+
11
+ I built Proofhouse because I kept rewriting the same prompt for different models and never had a good answer for which version was better, or whether a revision had quietly dropped a requirement. You give it an objective and a target model; it asks its clarifying questions in one batch and turns your answers into constraints that every later revision must keep. You record each prompt revision and the outputs a model actually produced, declare the checks that matter, and Proofhouse tells you which revision passes, which constraint lacks evidence, and what changed between revisions.
12
+
13
+ It runs on your machine with no API key. Proofhouse writes the prompts it needs as packets; you run them in the agent or model you already use and paste the results back. It is a local tool, not a hosted service, and I make no benchmark or quality claims for it.
14
+
15
+ [![Raw request, the clarifying answers, and the compiled prompt from a Grok 4.7 run](https://github.com/KM-it-ops/Proofhouse/raw/main/docs/assets/proofhouse-demo.jpg)](https://github.com/KM-it-ops/Proofhouse/raw/main/docs/assets/proofhouse-demo.mp4)
16
+
17
+ *42-second demo of the standalone app (click to play). The terminal in `apps/proofhouse.jsx` types the Facebook objective, sets Grok 4.7, checks the loop, and compiles the prompt. The grid, particles, and cursor keep moving the whole time. Remotion draws it. Hyperframes runs the same timeline in `videos/readme-hype`.*
18
+
19
+ Portfolio: [km-it-ops.github.io](https://km-it-ops.github.io/)
20
+
21
+ ---
22
+
23
+ ## Try it in two minutes
24
+
25
+ ```bash
26
+ uv tool install proofhouse
27
+ proofhouse-compiler demo
28
+ ```
29
+
30
+ That runs the [reference workflow](https://github.com/KM-it-ops/Proofhouse/blob/main/docs/reference-workflow.md) end to end, offline, from files shipped in the package. It replays recorded outputs: a security-advisory summary whose first revision invents an exploitation claim and fails its checks, and whose second revision passes without losing a constraint. It does not call a model. On Windows, set `$env:PYTHONUTF8='1'` first for reliable console output.
31
+
32
+ With pip: `python -m pip install proofhouse`, then `proofhouse-compiler demo`.
33
+
34
+ From a clone, the same check is `uv run python scripts/reference_workflow.py` (or `python -m pip install -e ".[test]"` without [uv](https://docs.astral.sh/uv/)). The by-hand steps later on this page copy `examples/reference-advisory`, which is in the repository, not in the wheel.
35
+
36
+ ---
37
+
38
+ ## How it works
39
+
40
+ `proofhouse-compiler optimize` renders the framework's clarify / compile / self-heal prompts as packets you run in the agent or model of your choice, and checks what you paste back against the criteria you declare. It does not call a model and it does not rate quality.
41
+
42
+ These are the [reference workflow](docs/reference-workflow.md)'s steps, and they run as written. `pc` below is `proofhouse-compiler` (`uv run proofhouse-compiler` from a clone). Work in a scratch folder holding copies of the example inputs:
43
+
44
+ ```bash
45
+ mkdir -p build/try && cp examples/reference-advisory/* build/try && cd build/try
46
+ ```
47
+
48
+ **1. Start a case and answer one batch of questions.** Proofhouse writes a clarify packet, `advisory-case/01-clarify.md`. You run it in your own agent and save the answers as `advisory-case/answers.json` (for this example, copy `answers.json` there). Compile turns each answer into an accepted constraint (K1-K3) that every later revision receives.
49
+
50
+ ```bash
51
+ pc optimize new --case advisory-case --objective-file objective.txt --model "Claude Sonnet 5" --preset efficient
52
+ pc optimize compile --case advisory-case
53
+ ```
54
+
55
+ **2. Say how each constraint will be checked.** Checks can look at the prompt text or at what a model returned (`--target output`), and some can be a human judgement (`--manual`).
56
+
57
+ ```bash
58
+ pc optimize constraints add --case advisory-case --text "Cite the advisory section for each claim" # K4
59
+ pc optimize criteria add --case advisory-case --id AUD --must-contain "SOC analysts"
60
+ pc optimize criteria add --case advisory-case --id UNK --target output --must-contain UNKNOWN
61
+ pc optimize criteria add --case advisory-case --id NOGUESS --target output --must-not-contain "exploited in the wild"
62
+ pc optimize criteria add --case advisory-case --id LEN --target output --max-words 120
63
+ pc optimize criteria add --case advisory-case --id CITE --target output --regex "\(s\d\)"
64
+ pc optimize criteria add --case advisory-case --id ACC --target output --manual "Every claim matches the advisory"
65
+ pc optimize constraints link --case advisory-case --id K1 --criterion AUD
66
+ pc optimize constraints link --case advisory-case --id K2 --criterion UNK
67
+ pc optimize constraints link --case advisory-case --id K2 --criterion NOGUESS
68
+ pc optimize constraints link --case advisory-case --id K3 --criterion LEN
69
+ pc optimize constraints link --case advisory-case --id K4 --criterion CITE
70
+ pc optimize constraints link --case advisory-case --id K4 --criterion ACC
71
+ ```
72
+
73
+ **3. Record a revision and what it produced, judge the manual check, then check it.**
74
+
75
+ ```bash
76
+ pc optimize record --case advisory-case --prompt-file prompt-v1.txt
77
+ pc optimize output add --case advisory-case --revision 1 --output-file output-v1.txt --input-id EC-2026-017 --input-file advisory.txt --model "Claude Sonnet 5" --source "pasted from host agent"
78
+ pc optimize verdict --case advisory-case --revision 1 --criterion ACC --run R1 --result fail --note "claims active exploitation; the advisory does not say that"
79
+ pc optimize check --case advisory-case # exit 3: v1 FAIL UNK NOGUESS CITE ACC fail
80
+ ```
81
+
82
+ **4. Revise without losing anything.** The revise packet carries your feedback, the original answers and every accepted constraint. Run it in your agent, save the new prompt, and record revision 2 the same way.
83
+
84
+ ```bash
85
+ pc optimize revise --case advisory-case --feedback "It claimed active exploitation, which the advisory never states."
86
+ pc optimize record --case advisory-case --prompt-file prompt-v2.txt
87
+ pc optimize output add --case advisory-case --revision 2 --output-file output-v2.txt --input-id EC-2026-017 --input-file advisory.txt --model "Claude Sonnet 5" --source "pasted from host agent"
88
+ pc optimize verdict --case advisory-case --revision 2 --criterion ACC --run R2 --result pass
89
+ pc optimize check --case advisory-case # exit 0: v2 PASS, K1-K4 satisfied
90
+ ```
91
+
92
+ **5. Compare, report and hand it on.** `compare` shows what newly passes or regresses between revisions, `report` writes the evidence as Markdown, and `export` / `import` move a case to another workspace, refusing any file that does not match the bundle's manifest (the manifest is not signed).
93
+
94
+ ### What a PASS proves, and what it does not
95
+
96
+ | A PASS from `optimize check` means | It does not mean |
97
+ |---|---|
98
+ | Every check you declared passed on this exact revision (and, for output checks, on the outputs you recorded) | That the prompt is good in general, or better than one you did not test |
99
+ | Every accepted constraint is linked to a check that passed | That a model will reproduce the recorded outputs |
100
+ | Each human verdict applies to the exact text and check definition you judged | That model notes are correct: shipped profiles cite no sources yet and are labeled `unverified` |
101
+ | Nothing was edited after it was recorded (digests are re-checked) | That the files are tamper-proof against someone who controls your machine |
102
+
103
+ Details: [docs/architecture.md](docs/architecture.md), [decision 0002](docs/decisions/0002-what-pass-means.md), [evidence format](docs/evidence-format.md).
104
+
105
+ ---
106
+
107
+ ## Two ways in
108
+
109
+ | Entry | Use it when | Status | Network |
110
+ |---|---|---|---|
111
+ | **Command line**: `proofhouse-compiler optimize` | You want the evidence trail above: constraints, recorded outputs, checks, compare, report | supported | none |
112
+ | **Cursor or Claude Code skill**: `proofhouse-compiler install-skill` asks which agent (Cursor, Claude Code, or another one you name with its skills folder); `--host cursor` or `--host claude` skips the question. Then say "Proofhouse" in a new chat or session | You want the same clarify → compile → self-heal loop as a conversation | supported entry point | the host agent's tools |
113
+
114
+ Proofhouse is two products in one repo, at different levels of maturity. The **PromptOps skill and framework (v1.3)**, the conversational meta-optimizer with current frontier model profiles, is the most mature part of the project. The headless compiler's maturity is listed under [Experimental and prototype parts](#experimental-and-prototype-parts).
115
+
116
+ Both entries use the same framework ([`proofhouse-framework.json`](proofhouse-framework.json)) and the same model notes. The framework also covers Efficient / Balanced / Thorough token presets, loops for recurring agents (trigger, body, exit, escalation), prompt audits with missing-context labels, and agent design (permission maps, tool boundaries, stop conditions). The skill is installed to `~/.cursor/skills/proofhouse` (or `~/.claude/skills/proofhouse` with `--host claude`) and the installer checks it (the bundle ships inside the package; `tests/test_skill_bundle.py` keeps it identical to `skills/proofhouse/`); without the console script, `python -m zipfile -e skills/proofhouse/proofhouse.skill ~/.cursor/skills` (or `~/.claude/skills`) does the same. The skill can research an unfamiliar model with the host agent's tools; the command line never goes online, and uses your own notes (`models remember`) or a generic profile labeled `fallback`.
117
+
118
+ ---
119
+
120
+ ## Supported models (framework v1.3)
121
+
122
+ Built-in `modelNotes` cover prompting quirks, API ids, and cost and caching levers for each model:
123
+
124
+ <!-- supported-models:begin -->
125
+ | Tier | Models |
126
+ |---|---|
127
+ | **Anthropic** | Claude Fable 5.1 · Mythos 5.1 · Opus 5 · Sonnet 5 · Haiku 4.5 |
128
+ | **OpenAI** | GPT-5.6 Sol · Terra · Luna |
129
+ | **Google** | Gemini 3.8 Flash |
130
+ | **xAI** | Grok 4.6 |
131
+ | **Meta** | Muse Spark 1.3 |
132
+ | **Moonshot** | Kimi K3 |
133
+ | **Legacy** | GPT-5.5 · Gemini (generic) · Fable 5 · Mythos 5 · Opus 4.8 |
134
+ | **Other** | Skill and artifact: the host agent or the artifact web-researches the model and caches the paragraph. CLI (`proofhouse-compiler`): offline; `models remember` stores your own notes, otherwise the generic profile is used and labeled `fallback`. |
135
+
136
+ Profiles last reviewed 2026-09-03; a profile older than 90 days is flagged stale. None of the 18 profiles cites sources yet, so every profile is labeled unverified. They are prompting guidance, not vendor specifications. `proofhouse-compiler models list` shows per-model ids, aliases, and dates.
137
+
138
+ Full profiles: [`proofhouse-framework.json`](proofhouse-framework.json) · human-readable [`proofhouse-framework.md`](proofhouse-framework.md)
139
+ <!-- supported-models:end -->
140
+
141
+ ---
142
+
143
+ ## Install and verify
144
+
145
+ One Python package, version 0.4.1, ships two console scripts:
146
+
147
+ | Command | What it is | Subcommands |
148
+ |---|---|---|
149
+ | `proofhouse-compiler` | The prompt workspace above, plus an offline compiler (requirements → IR → adapter artifact → evidence), the model-notes cache, the skill installer, and the packaged reference demo | `optimize` `models` `install-skill` `demo` `doctor` `validate` `inspect` `compile` `closed-loop` `adapters` |
150
+ | `proofhouse` | Eval harness: JSONL datasets, YAML rubrics, report skeletons | `validate` `report` `loadouts` `compile-loadout` `generate` |
151
+
152
+ Supported: the `optimize` case workflow, `models`, `install-skill`, `demo`, and `validate` / `compile` / `closed-loop`. The experimental commands are listed under [Experimental and prototype parts](#experimental-and-prototype-parts).
153
+
154
+ ```bash
155
+ uv sync --extra test # package + pytest into .venv
156
+ uv run proofhouse-compiler doctor # doctor: success
157
+ uv run proofhouse-compiler closed-loop tests/compiler/fixtures/closed_loop_requirements_minimal.json --repair-budget 1
158
+ # closed-loop: PASS (structural)
159
+ uv run proofhouse validate --dataset evals/datasets/prompt_audit_cases.jsonl
160
+ # Dataset validation passed: ...
161
+ uv run pytest -q # all passed, 1 deselected (live tests are opt-in)
162
+ uv run proofhouse-compiler demo --quiet # reference workflow: OK
163
+ uv run python scripts/reference_workflow.py --quiet # same run via the script wrapper
164
+ ```
165
+
166
+ CI runs the test suite on Linux, macOS and Windows with Python 3.11 to 3.14, runs the reference workflow against the built wheel, and runs `proofhouse-compiler demo` from that wheel outside the checkout. Everything above is offline: no network, no API key. Nothing here is a benchmark.
167
+
168
+ The compiler's `closed-loop` PASS is structural: the prompt compiles offline with the fake adapter and passes security gates, and its evidence lists what it did not measure. Its approved headless profiles are `structured_minimal_v0` and `structured_developer_v0`.
169
+
170
+ ---
171
+
172
+ ## Experimental and prototype parts
173
+
174
+ These ship in the repository but are not the supported path. Treat them as previews.
175
+
176
+ | Part | Status | Network |
177
+ |---|---|---|
178
+ | `proofhouse-compiler execute-openai`: a fail-closed live OpenAI call that refuses to send unless every mandatory requirement is in the request; its cost ceiling is recorded, not enforced | experimental, opt-in | yes, only when opted in |
179
+ | `evaluate-product`, the requirements-contract commands, `route` / `assay` / `proof` | experimental | none |
180
+ | [`apps/proofhouse.jsx`](apps/proofhouse.jsx): a Claude artifact with a model picker, efficiency modes and a live compile loop; for an unknown model it web-researches, caches the result in artifact storage and labels it `researched` / `cached` / `fallback` | experimental | calls `api.anthropic.com` |
181
+ | The `hosted-*` and `missionrig-*` modules: experimental library slices, not a hosted service (their tenant label is not isolation) | experimental | none |
182
+ | `apps/dashboard/` | prototype | none |
183
+
184
+ The headless requirements compiler's maturity is still `PARTIAL`. Full map with versions and diagnostic codes: [docs/surfaces.md](docs/surfaces.md).
185
+
186
+ ---
187
+
188
+ ## Design rules
189
+
190
+ - Stay lightweight by default. Tighten only for safety, agentic execution, or missing context.
191
+ - Never invent repository or project facts.
192
+ - Use exact missing-context labels: `UNKNOWN`, `NOT SPECIFIED`, `NOT FOUND IN PROVIDED MATERIAL`.
193
+ - Keep cybersecurity and sensitive-data work defensive, authorized, and privacy-preserving.
194
+ - No private chain-of-thought dumps. Concise rationales only.
195
+
196
+ It was designed for coding agents, Custom GPTs, Cursor skills, and security-adjacent AI work, where inventing facts or skipping a safety boundary is not acceptable.
197
+
198
+ ---
199
+
200
+ ## Repository map
201
+
202
+ ```text
203
+ proofhouse-framework.* Portable meta-optimizer spec (v1.3 model profiles)
204
+ skills/proofhouse/ Cursor / Claude Code skill bundle + artifact JSX
205
+ src/proofhouse/ Eval harness, headless compiler, optimize (cases, constraints, runs, checks, export)
206
+ examples/ Demo inputs, including reference-advisory/ for the reference workflow
207
+ scripts/ Generators (model surfaces, skill bundle, contracts) and reference_workflow.py
208
+ docs/ Scope, architecture, surfaces, evidence format, decisions, assurance statements
209
+ prompts/ Core prompt, modes, modules, templates, Custom GPT pack
210
+ evals/ JSONL datasets, YAML rubrics
211
+ apps/ Experimental artifact and dashboard prototypes
212
+ tests/ Test suite, contract schemas and fixtures
213
+ ```
214
+
215
+ Internal mission reports and review corpora are not published in this repository. Public decisions are summarized in [docs/decisions/](docs/decisions/), and each assurance statement in [docs/assurance/](docs/assurance/) lists the exact revision, commands, results and exclusions.
216
+
217
+ ---
218
+
219
+ ## Start here
220
+
221
+ - [Reference workflow](https://github.com/KM-it-ops/Proofhouse/blob/main/docs/reference-workflow.md): one failed check to a verified fix, offline
222
+ - [Product scope](https://github.com/KM-it-ops/Proofhouse/blob/main/docs/product-scope.md) · [Architecture](https://github.com/KM-it-ops/Proofhouse/blob/main/docs/architecture.md) · [Surfaces and contracts](https://github.com/KM-it-ops/Proofhouse/blob/main/docs/surfaces.md) · [Evidence format](https://github.com/KM-it-ops/Proofhouse/blob/main/docs/evidence-format.md)
223
+ - [Decision records](https://github.com/KM-it-ops/Proofhouse/blob/main/docs/decisions/) · [Assurance statements](https://github.com/KM-it-ops/Proofhouse/blob/main/docs/assurance/) · [Troubleshooting](https://github.com/KM-it-ops/Proofhouse/blob/main/docs/troubleshooting.md)
224
+ - [Quickstart](https://github.com/KM-it-ops/Proofhouse/blob/main/docs/quickstart.md) · [Showcase](https://github.com/KM-it-ops/Proofhouse/blob/main/docs/showcase.md) · [Custom GPT setup](https://github.com/KM-it-ops/Proofhouse/blob/main/docs/custom-gpt-setup.md)
225
+ - [Changelog](https://github.com/KM-it-ops/Proofhouse/blob/main/CHANGELOG.md) · [Contributing](https://github.com/KM-it-ops/Proofhouse/blob/main/CONTRIBUTING.md) · [Security policy](https://github.com/KM-it-ops/Proofhouse/blob/main/SECURITY.md)
226
+
227
+ ---
228
+
229
+ <sub>Custom GPT surface: <strong>PromptOps Architect powered by Proofhouse</strong> · MIT License</sub>
@@ -0,0 +1,54 @@
1
+ [build-system]
2
+ requires = ["setuptools>=77", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "proofhouse"
7
+ version = "0.4.1"
8
+ description = "Prompt operations framework for prompt architecture, audits, rewrites, and evals."
9
+ readme = "README.md"
10
+ requires-python = ">=3.11"
11
+ authors = [{ name = "Proofhouse Maintainers" }]
12
+ license = "MIT"
13
+ license-files = ["LICENSE"]
14
+ keywords = ["prompts", "prompt-engineering", "evals", "agents"]
15
+ classifiers = [
16
+ "Development Status :: 4 - Beta",
17
+ "Environment :: Console",
18
+ "Intended Audience :: Developers",
19
+ "Operating System :: OS Independent",
20
+ "Programming Language :: Python :: 3",
21
+ "Programming Language :: Python :: 3.11",
22
+ "Programming Language :: Python :: 3.12",
23
+ "Programming Language :: Python :: 3.13",
24
+ "Programming Language :: Python :: 3.14",
25
+ ]
26
+ dependencies = ["jsonschema>=4.18", "rfc8785==0.1.4"]
27
+
28
+ [project.optional-dependencies]
29
+ live = ["httpx>=0.27"]
30
+ # Test runner only. Not a runtime dependency; runtime deps stay jsonschema + rfc8785.
31
+ test = ["pytest>=8"]
32
+
33
+ [project.urls]
34
+ Homepage = "https://github.com/KM-it-ops/Proofhouse"
35
+ Repository = "https://github.com/KM-it-ops/Proofhouse"
36
+ Issues = "https://github.com/KM-it-ops/Proofhouse/issues"
37
+ Changelog = "https://github.com/KM-it-ops/Proofhouse/blob/main/CHANGELOG.md"
38
+
39
+ [project.scripts]
40
+ proofhouse = "proofhouse.cli:main"
41
+ proofhouse-compiler = "proofhouse.compiler.cli_compiler:main"
42
+
43
+ [tool.pytest.ini_options]
44
+ pythonpath = ["src"]
45
+ testpaths = ["tests"]
46
+ markers = ["live: real or optional live-path tests; not collected by default"]
47
+ addopts = "-m \"not live\""
48
+
49
+ [tool.setuptools.packages.find]
50
+ where = ["src"]
51
+
52
+ [tool.setuptools.package-data]
53
+ "proofhouse.compiler" = ["schemas/*.json"]
54
+ "proofhouse.optimize" = ["data/*", "data/reference-advisory/*"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,9 @@
1
+ """Proofhouse prompt-operations framework."""
2
+
3
+ from importlib.metadata import PackageNotFoundError, version
4
+
5
+ try:
6
+ # One source of truth: the installed distribution's version (pyproject.toml).
7
+ __version__ = version("proofhouse")
8
+ except PackageNotFoundError: # running from a source tree that was never installed
9
+ __version__ = "0+unknown"