hardproof 0.2.0__tar.gz → 0.3.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 (90) hide show
  1. hardproof-0.3.1/PKG-INFO +254 -0
  2. hardproof-0.3.1/README.md +223 -0
  3. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/__init__.py +1 -1
  4. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/commands/cli.py +22 -0
  5. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/commands/shared.py +240 -1
  6. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/config.py +114 -1
  7. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/constants.py +2 -2
  8. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/domain/models.py +1 -1
  9. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/domain/snapshots.py +12 -1
  10. hardproof-0.3.1/hardproof/domain/workcells.py +218 -0
  11. hardproof-0.3.1/hardproof/migrations/003_workcells.sql +132 -0
  12. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/policy/stage_rules.py +3 -0
  13. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/services/evidence.py +4 -4
  14. hardproof-0.3.1/hardproof/services/hermes_children.py +77 -0
  15. hardproof-0.3.1/hardproof/services/workcell_artifacts.py +185 -0
  16. hardproof-0.3.1/hardproof/services/workcells.py +246 -0
  17. hardproof-0.3.1/hardproof/storage/repository.py +1094 -0
  18. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/tools/handlers.py +36 -0
  19. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/tools/schemas.py +6 -2
  20. hardproof-0.3.1/hardproof.egg-info/PKG-INFO +254 -0
  21. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof.egg-info/SOURCES.txt +5 -0
  22. {hardproof-0.2.0 → hardproof-0.3.1}/pyproject.toml +1 -1
  23. hardproof-0.2.0/PKG-INFO +0 -190
  24. hardproof-0.2.0/README.md +0 -159
  25. hardproof-0.2.0/hardproof/storage/repository.py +0 -548
  26. hardproof-0.2.0/hardproof.egg-info/PKG-INFO +0 -190
  27. {hardproof-0.2.0 → hardproof-0.3.1}/LICENSE +0 -0
  28. {hardproof-0.2.0 → hardproof-0.3.1}/NOTICE +0 -0
  29. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/commands/__init__.py +0 -0
  30. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/commands/slash.py +0 -0
  31. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/compat.py +0 -0
  32. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/domain/__init__.py +0 -0
  33. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/domain/enums.py +0 -0
  34. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/domain/transitions.py +0 -0
  35. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/errors.py +0 -0
  36. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/hooks/__init__.py +0 -0
  37. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/hooks/context.py +0 -0
  38. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/hooks/sessions.py +0 -0
  39. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/hooks/tool_policy.py +0 -0
  40. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/hooks/verification.py +0 -0
  41. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/migrations/001_initial.sql +0 -0
  42. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/migrations/002_gatehouse.sql +0 -0
  43. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/migrations/__init__.py +0 -0
  44. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/paths.py +0 -0
  45. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/plugin.py +0 -0
  46. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/policy/__init__.py +0 -0
  47. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/policy/packs.py +0 -0
  48. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/policy/profiles.py +0 -0
  49. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/policy/stage_graph.py +0 -0
  50. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/policy/terminal.py +0 -0
  51. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/policy/tool_rules.py +0 -0
  52. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/policy/trace.py +0 -0
  53. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/policy/verification_rules.py +0 -0
  54. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/policy/waivers.py +0 -0
  55. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/py.typed +0 -0
  56. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/services/__init__.py +0 -0
  57. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/services/approvals.py +0 -0
  58. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/services/artifacts.py +0 -0
  59. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/services/authority.py +0 -0
  60. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/services/decisions.py +0 -0
  61. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/services/reports.py +0 -0
  62. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/services/risks.py +0 -0
  63. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/services/runs.py +0 -0
  64. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/services/sessions.py +0 -0
  65. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/services/tasks.py +0 -0
  66. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/services/waivers.py +0 -0
  67. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/skills/deliver/SKILL.md +0 -0
  68. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/skills/design/SKILL.md +0 -0
  69. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/skills/discover/SKILL.md +0 -0
  70. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/skills/implement/SKILL.md +0 -0
  71. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/skills/learn/SKILL.md +0 -0
  72. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/skills/orchestrate/SKILL.md +0 -0
  73. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/skills/plan/SKILL.md +0 -0
  74. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/skills/review/SKILL.md +0 -0
  75. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/skills/verify/SKILL.md +0 -0
  76. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/storage/__init__.py +0 -0
  77. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/storage/database.py +0 -0
  78. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/storage/migrations.py +0 -0
  79. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/templates/__init__.py +0 -0
  80. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/templates/completion.md +0 -0
  81. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/templates/design.md +0 -0
  82. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/templates/discovery.md +0 -0
  83. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/templates/plan.md +0 -0
  84. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/templates/review.md +0 -0
  85. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof/tools/__init__.py +0 -0
  86. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof.egg-info/dependency_links.txt +0 -0
  87. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof.egg-info/entry_points.txt +0 -0
  88. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof.egg-info/requires.txt +0 -0
  89. {hardproof-0.2.0 → hardproof-0.3.1}/hardproof.egg-info/top_level.txt +0 -0
  90. {hardproof-0.2.0 → hardproof-0.3.1}/setup.cfg +0 -0
@@ -0,0 +1,254 @@
1
+ Metadata-Version: 2.4
2
+ Name: hardproof
3
+ Version: 0.3.1
4
+ Summary: A persistent, risk-aware engineering protocol for Hermes Agent
5
+ Author: Hardproof contributors
6
+ License-Expression: Apache-2.0
7
+ Classifier: Development Status :: 3 - Alpha
8
+ Classifier: Operating System :: OS Independent
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Programming Language :: Python :: 3.11
11
+ Classifier: Programming Language :: Python :: 3.12
12
+ Classifier: Typing :: Typed
13
+ Requires-Python: >=3.11
14
+ Description-Content-Type: text/markdown
15
+ License-File: LICENSE
16
+ License-File: NOTICE
17
+ Requires-Dist: PyYAML<7,>=6
18
+ Provides-Extra: dev
19
+ Requires-Dist: build>=1.2; extra == "dev"
20
+ Requires-Dist: cyclonedx-bom>=7; extra == "dev"
21
+ Requires-Dist: hypothesis>=6; extra == "dev"
22
+ Requires-Dist: mypy>=1.10; extra == "dev"
23
+ Requires-Dist: pip-audit>=2.7; extra == "dev"
24
+ Requires-Dist: pytest>=8; extra == "dev"
25
+ Requires-Dist: pytest-cov>=5; extra == "dev"
26
+ Requires-Dist: pytest-xdist>=3; extra == "dev"
27
+ Requires-Dist: ruff>=0.6; extra == "dev"
28
+ Requires-Dist: twine>=5; extra == "dev"
29
+ Requires-Dist: types-PyYAML>=6; extra == "dev"
30
+ Dynamic: license-file
31
+
32
+ # HARDPROOF
33
+
34
+ > Software has to earn done.
35
+
36
+ [![CI](https://github.com/asimons81/hardproof/actions/workflows/ci.yml/badge.svg)](https://github.com/asimons81/hardproof/actions/workflows/ci.yml)
37
+ [![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE)
38
+ [![PyPI](https://img.shields.io/pypi/v/hardproof)](https://pypi.org/project/hardproof/)
39
+ [![X Follow](https://img.shields.io/twitter/follow/asimons81?style=social)](https://x.com/asimons81)
40
+
41
+ > **Alpha software.** v0.3.0 Workcells is the current public alpha on PyPI. v0.3.1 Workcells Hardening has been prepared. v0.4.0 Challenge Chamber development has not begun. Commands, schemas, and contracts may change before v1.0.0.
42
+
43
+ Hardproof gives coding agents a persistent, risk-aware engineering process that turns ambiguous software requests into reviewed, verified results while preserving the evidence behind every completion claim.
44
+
45
+ > A persistent, risk-aware engineering protocol for Hermes Agent.
46
+
47
+ ## Current Release
48
+
49
+ | Current | v0.3.0 Workcells | Released on GitHub and PyPI |
50
+ | Hardening | v0.3.1 Workcells Hardening | Prepared, pending release |
51
+ | Previous | v0.2.0 Gatehouse | Released on GitHub and PyPI |
52
+ | Previous | v0.1.1 Core Heat | Released on GitHub and PyPI |
53
+ | Previous | v0.1.0 Core Heat | Released on GitHub |
54
+ | Future | v0.4.0 Challenge Chamber | Not started |
55
+
56
+ ## Install
57
+
58
+ From PyPI:
59
+
60
+ ```bash
61
+ pip install hardproof
62
+ hermes plugins enable hardproof
63
+ ```
64
+
65
+ From GitHub:
66
+
67
+ ```bash
68
+ hermes plugins install asimons81/hardproof --enable
69
+ ```
70
+
71
+ ## Enable
72
+
73
+ Enable the plugin in Hermes:
74
+
75
+ ```bash
76
+ hermes plugins enable hardproof
77
+ ```
78
+
79
+ Verify discovery:
80
+
81
+ ```bash
82
+ hermes hardproof doctor
83
+ ```
84
+
85
+ ## Quick Start
86
+
87
+ Both the CLI and slash-command surfaces work identically:
88
+
89
+ ```bash
90
+ # Terminal
91
+ hermes hardproof start standard "Build API-key rotation with rollback support"
92
+ hermes hardproof status
93
+ hermes hardproof doctor
94
+
95
+ # In Hermes chat
96
+ /hardproof start standard "Build API-key rotation with rollback support"
97
+ /hardproof status
98
+ ```
99
+
100
+ Hardproof stores state under `.hardproof/`, adds that directory to the repository-local Git exclude file, and injects compact stage context into bound Hermes sessions.
101
+
102
+ ## How Hardproof Changes an Agent Workflow
103
+
104
+ 1. **INT AKE** — clarify the request before any code is written
105
+ 2. **DISCOVERY** — inspect the repository, constraints, and unknowns
106
+ 3. **DESIGN** — shape a reversible solution (requires human approval)
107
+ 4. **PLAN** — turn the design into dependency-aware tasks (requires human approval)
108
+ 5. **IMPLEMENT** — execute approved tasks with focused tests
109
+ 6. **REVIEW** — challenge the implementation and risks
110
+ 7. **VERIFY** — run checks and evaluate fresh workspace-bound evidence
111
+ 8. **DELIVER** — prepare an evidence-backed completion handoff
112
+ 9. **LEARN** — capture lessons or explicitly skip
113
+
114
+ Every stage has defined gates. No run completes without fresh successful evidence.
115
+
116
+ ## Profiles
117
+
118
+ | Profile | Use Case | Key Requirements |
119
+ |---------|----------|-----------------|
120
+ | **Quick** | Typo fixes, doc updates, one-line changes | Recorded skips, at least one fresh verification check |
121
+ | **Standard** | Feature work, refactors, multi-file changes | Discovery, design and plan, human design and plan approval, tracked implementation, review, fresh verification, delivery, learning decision |
122
+ | **Critical** | Auth changes, data migrations, production config | Destructive-action approvals, at least two checks, rollback and risk material, fail-closed mutation policy, human completion approval |
123
+
124
+ No profile permits completion without fresh successful evidence.
125
+
126
+ ## Gatehouse v0.2.0 Features
127
+
128
+ Gatehouse adds strict project allow/deny/approval rules, ordered policy explanations, human-only
129
+ scoped waivers, advisory risk suggestions, bounded monotonic stage graphs, configuration and
130
+ migration diagnostics, and versioned Python/Node/Rust/Go policy packs. See
131
+ [configuration and migrations](docs/configuration-and-migrations.md) and
132
+ [policy packs](docs/policy-packs.md).
133
+
134
+ ## Common Commands
135
+
136
+ ```bash
137
+ hermes hardproof start quick|standard|critical "request"
138
+ hermes hardproof status
139
+ hermes hardproof doctor
140
+ hermes hardproof approve design|plan|completion [reason]
141
+ hermes hardproof waive <reason>
142
+ hermes hardproof pause [reason]
143
+ hermes hardproof resume [run-id]
144
+ hermes hardproof abort <reason>
145
+ hermes hardproof evidence
146
+ hermes hardproof export [path]
147
+ hermes hardproof config init|validate|explain
148
+ hermes hardproof db status|migrate [--dry-run]
149
+ hermes hardproof migrate-state
150
+ hermes hardproof runs
151
+ hermes hardproof show <run-id>
152
+ hermes hardproof policy <args>
153
+ ```
154
+
155
+ All commands also work as `/hardproof <subcommand>` in Hermes chat.
156
+
157
+ ## Point Hermes Agent at This Repository
158
+
159
+ Hermes Agent automatically reads `AGENTS.md` when started in the repository. To work on Hardproof itself:
160
+
161
+ 1. Clone or open the repo
162
+ 2. Start Hermes from the repository root
163
+ 3. Confirm `AGENTS.md` is loaded (Hermes prints a context-file banner on startup)
164
+ 4. Follow the instructions in [docs/hermes-agent-guide.md](docs/hermes-agent-guide.md)
165
+
166
+ ## Architecture
167
+
168
+ Hardproof is a standalone Python package discovered through the `hermes_agent.plugins` entry-point group. It uses only the public Hermes registration, hook, command, skill, and dispatch APIs.
169
+
170
+ 1. **Plugin layer** — registers slash commands, CLI commands, six tools, lifecycle hooks, and nine stage skills
171
+ 2. **Domain layer** — run profiles, stages, transitions, approval gates, and immutable event models
172
+ 3. **Policy layer** — stage-aware mutation rules, tool policies, and human-required approval escalation
173
+ 4. **Storage layer** — project-local SQLite database with forward-only migrations plus human-readable artifacts under `.hardproof/runs/<run-id>/`
174
+ 5. **Verification layer** — workspace-bound evidence with Git HEAD capture, binary diff freshness checks, and redacted output recording
175
+
176
+ See [architecture](docs/architecture.md), [profiles](docs/profiles.md), and [compatibility](docs/compatibility.md).
177
+
178
+ ## Verification Evidence
179
+
180
+ Hardproof requires fresh, workspace-bound evidence before any run can complete. Verification checks capture:
181
+
182
+ - Git HEAD commit hash at the time of verification
183
+ - Binary diff against the working tree to detect uncommitted changes
184
+ - Redacted, size-bounded output from each configured check
185
+ - Strict exit-code evaluation (only explicit zero passes)
186
+
187
+ Stale evidence — recorded against a different workspace state — is flagged and cannot satisfy completion gates.
188
+
189
+ ## Security Boundary
190
+
191
+ Hardproof coordinates engineering process; it is not a security sandbox. Policy hooks do not replace OS permissions, protected branches, sandboxing, isolation, or human code review.
192
+
193
+ Hardproof includes these protections:
194
+ - Force pushes and destructive Git operations are blocked
195
+ - Recognized destructive actions are blocked or require human approval
196
+ - Source mutation is stage-aware (locked in later stages)
197
+ - Human-only approval gates prevent model self-approval
198
+ - Policy decisions are recorded with cryptographic hashes of arguments and configuration
199
+
200
+ See [SECURITY.md](SECURITY.md) and the [security model](docs/security-model.md).
201
+
202
+ ## Privacy
203
+
204
+ Hardproof has **no telemetry, no analytics, no accounts, no hosted dependencies, no remote asset fetching, and no automatic update checks.** Normal local operation makes no intentional network request. Verification output is redacted and size-bounded. Policy events store argument keys and hashes rather than raw values. Nothing phones home.
205
+
206
+ ## Known Limitations
207
+
208
+ - Policy hooks coordinate process but are not a security sandbox or complete shell parser
209
+ - Managed runs require a Git worktree for workspace-bound freshness evidence
210
+ - Local compatibility evidence covers Hermes Agent 0.18.2 on native Windows; macOS and Linux are CI-enforced
211
+ - Downgrade from a migrated v0.2.0 database is not supported
212
+
213
+ ## Documentation Index
214
+
215
+ | Document | Audience |
216
+ |----------|----------|
217
+ | [docs/README.md](docs/README.md) | Full documentation index |
218
+ | [docs/hermes-agent-guide.md](docs/hermes-agent-guide.md) | Hermes Agent operators |
219
+ | [docs/architecture.md](docs/architecture.md) | Architecture overview |
220
+ | [docs/profiles.md](docs/profiles.md) | Run profiles |
221
+ | [docs/protocol.md](docs/protocol.md) | Protocol specification |
222
+ | [docs/security-model.md](docs/security-model.md) | Security model |
223
+ | [docs/configuration-and-migrations.md](docs/configuration-and-migrations.md) | Config and migrations |
224
+ | [docs/policy-packs.md](docs/policy-packs.md) | Language policy packs |
225
+ | [docs/command-reference.md](docs/command-reference.md) | All commands and tools |
226
+ | [docs/repository-map.md](docs/repository-map.md) | Repository layout |
227
+
228
+ ## Contributing
229
+
230
+ Start with [CONTRIBUTING.md](CONTRIBUTING.md), [GOVERNANCE.md](GOVERNANCE.md), and [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md). Coding agents should read [AGENTS.md](AGENTS.md) first. Design changes use ADRs; breaking protocol changes require a public RFC issue. Contributions use the Developer Certificate of Origin rather than a CLA.
231
+
232
+ ## Roadmap
233
+
234
+ | Version | Codename | Focus |
235
+ |---------|----------|-------|
236
+ | v0.1.1 | Core Heat | Standalone plugin, durable stages, SQLite state, approvals, skills, fresh evidence, reports |
237
+ | v0.2.0 | Gatehouse | Explainable configurable policy, scoped waivers, risk suggestions, language packs |
238
+ | v0.3.0 | Workcells | Dependency-aware task waves, resumable subagent implementers |
239
+ | v0.4.0 | Challenge Chamber | Independent specialized reviewers, severity, fix/re-review loops |
240
+ | v0.5.0 | Isolation | Branches, worktrees, baseline proof, rollback, backend adapters |
241
+
242
+ Full roadmap: [ROADMAP.md](ROADMAP.md).
243
+
244
+ ## License
245
+
246
+ Apache-2.0. See [LICENSE](LICENSE) and [NOTICE](NOTICE).
247
+
248
+ ## Affiliation
249
+
250
+ Hardproof is independent open-source software. It is not affiliated with, endorsed by, or sponsored by Hermes Agent, Nous Research, Atlassian, or any other organization.
251
+
252
+ ---
253
+
254
+ **Topics:** `hermes-agent` `coding-agents` `agentic-coding` `software-engineering` `verification` `developer-tools` `open-source` `python`
@@ -0,0 +1,223 @@
1
+ # HARDPROOF
2
+
3
+ > Software has to earn done.
4
+
5
+ [![CI](https://github.com/asimons81/hardproof/actions/workflows/ci.yml/badge.svg)](https://github.com/asimons81/hardproof/actions/workflows/ci.yml)
6
+ [![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE)
7
+ [![PyPI](https://img.shields.io/pypi/v/hardproof)](https://pypi.org/project/hardproof/)
8
+ [![X Follow](https://img.shields.io/twitter/follow/asimons81?style=social)](https://x.com/asimons81)
9
+
10
+ > **Alpha software.** v0.3.0 Workcells is the current public alpha on PyPI. v0.3.1 Workcells Hardening has been prepared. v0.4.0 Challenge Chamber development has not begun. Commands, schemas, and contracts may change before v1.0.0.
11
+
12
+ Hardproof gives coding agents a persistent, risk-aware engineering process that turns ambiguous software requests into reviewed, verified results while preserving the evidence behind every completion claim.
13
+
14
+ > A persistent, risk-aware engineering protocol for Hermes Agent.
15
+
16
+ ## Current Release
17
+
18
+ | Current | v0.3.0 Workcells | Released on GitHub and PyPI |
19
+ | Hardening | v0.3.1 Workcells Hardening | Prepared, pending release |
20
+ | Previous | v0.2.0 Gatehouse | Released on GitHub and PyPI |
21
+ | Previous | v0.1.1 Core Heat | Released on GitHub and PyPI |
22
+ | Previous | v0.1.0 Core Heat | Released on GitHub |
23
+ | Future | v0.4.0 Challenge Chamber | Not started |
24
+
25
+ ## Install
26
+
27
+ From PyPI:
28
+
29
+ ```bash
30
+ pip install hardproof
31
+ hermes plugins enable hardproof
32
+ ```
33
+
34
+ From GitHub:
35
+
36
+ ```bash
37
+ hermes plugins install asimons81/hardproof --enable
38
+ ```
39
+
40
+ ## Enable
41
+
42
+ Enable the plugin in Hermes:
43
+
44
+ ```bash
45
+ hermes plugins enable hardproof
46
+ ```
47
+
48
+ Verify discovery:
49
+
50
+ ```bash
51
+ hermes hardproof doctor
52
+ ```
53
+
54
+ ## Quick Start
55
+
56
+ Both the CLI and slash-command surfaces work identically:
57
+
58
+ ```bash
59
+ # Terminal
60
+ hermes hardproof start standard "Build API-key rotation with rollback support"
61
+ hermes hardproof status
62
+ hermes hardproof doctor
63
+
64
+ # In Hermes chat
65
+ /hardproof start standard "Build API-key rotation with rollback support"
66
+ /hardproof status
67
+ ```
68
+
69
+ Hardproof stores state under `.hardproof/`, adds that directory to the repository-local Git exclude file, and injects compact stage context into bound Hermes sessions.
70
+
71
+ ## How Hardproof Changes an Agent Workflow
72
+
73
+ 1. **INT AKE** — clarify the request before any code is written
74
+ 2. **DISCOVERY** — inspect the repository, constraints, and unknowns
75
+ 3. **DESIGN** — shape a reversible solution (requires human approval)
76
+ 4. **PLAN** — turn the design into dependency-aware tasks (requires human approval)
77
+ 5. **IMPLEMENT** — execute approved tasks with focused tests
78
+ 6. **REVIEW** — challenge the implementation and risks
79
+ 7. **VERIFY** — run checks and evaluate fresh workspace-bound evidence
80
+ 8. **DELIVER** — prepare an evidence-backed completion handoff
81
+ 9. **LEARN** — capture lessons or explicitly skip
82
+
83
+ Every stage has defined gates. No run completes without fresh successful evidence.
84
+
85
+ ## Profiles
86
+
87
+ | Profile | Use Case | Key Requirements |
88
+ |---------|----------|-----------------|
89
+ | **Quick** | Typo fixes, doc updates, one-line changes | Recorded skips, at least one fresh verification check |
90
+ | **Standard** | Feature work, refactors, multi-file changes | Discovery, design and plan, human design and plan approval, tracked implementation, review, fresh verification, delivery, learning decision |
91
+ | **Critical** | Auth changes, data migrations, production config | Destructive-action approvals, at least two checks, rollback and risk material, fail-closed mutation policy, human completion approval |
92
+
93
+ No profile permits completion without fresh successful evidence.
94
+
95
+ ## Gatehouse v0.2.0 Features
96
+
97
+ Gatehouse adds strict project allow/deny/approval rules, ordered policy explanations, human-only
98
+ scoped waivers, advisory risk suggestions, bounded monotonic stage graphs, configuration and
99
+ migration diagnostics, and versioned Python/Node/Rust/Go policy packs. See
100
+ [configuration and migrations](docs/configuration-and-migrations.md) and
101
+ [policy packs](docs/policy-packs.md).
102
+
103
+ ## Common Commands
104
+
105
+ ```bash
106
+ hermes hardproof start quick|standard|critical "request"
107
+ hermes hardproof status
108
+ hermes hardproof doctor
109
+ hermes hardproof approve design|plan|completion [reason]
110
+ hermes hardproof waive <reason>
111
+ hermes hardproof pause [reason]
112
+ hermes hardproof resume [run-id]
113
+ hermes hardproof abort <reason>
114
+ hermes hardproof evidence
115
+ hermes hardproof export [path]
116
+ hermes hardproof config init|validate|explain
117
+ hermes hardproof db status|migrate [--dry-run]
118
+ hermes hardproof migrate-state
119
+ hermes hardproof runs
120
+ hermes hardproof show <run-id>
121
+ hermes hardproof policy <args>
122
+ ```
123
+
124
+ All commands also work as `/hardproof <subcommand>` in Hermes chat.
125
+
126
+ ## Point Hermes Agent at This Repository
127
+
128
+ Hermes Agent automatically reads `AGENTS.md` when started in the repository. To work on Hardproof itself:
129
+
130
+ 1. Clone or open the repo
131
+ 2. Start Hermes from the repository root
132
+ 3. Confirm `AGENTS.md` is loaded (Hermes prints a context-file banner on startup)
133
+ 4. Follow the instructions in [docs/hermes-agent-guide.md](docs/hermes-agent-guide.md)
134
+
135
+ ## Architecture
136
+
137
+ Hardproof is a standalone Python package discovered through the `hermes_agent.plugins` entry-point group. It uses only the public Hermes registration, hook, command, skill, and dispatch APIs.
138
+
139
+ 1. **Plugin layer** — registers slash commands, CLI commands, six tools, lifecycle hooks, and nine stage skills
140
+ 2. **Domain layer** — run profiles, stages, transitions, approval gates, and immutable event models
141
+ 3. **Policy layer** — stage-aware mutation rules, tool policies, and human-required approval escalation
142
+ 4. **Storage layer** — project-local SQLite database with forward-only migrations plus human-readable artifacts under `.hardproof/runs/<run-id>/`
143
+ 5. **Verification layer** — workspace-bound evidence with Git HEAD capture, binary diff freshness checks, and redacted output recording
144
+
145
+ See [architecture](docs/architecture.md), [profiles](docs/profiles.md), and [compatibility](docs/compatibility.md).
146
+
147
+ ## Verification Evidence
148
+
149
+ Hardproof requires fresh, workspace-bound evidence before any run can complete. Verification checks capture:
150
+
151
+ - Git HEAD commit hash at the time of verification
152
+ - Binary diff against the working tree to detect uncommitted changes
153
+ - Redacted, size-bounded output from each configured check
154
+ - Strict exit-code evaluation (only explicit zero passes)
155
+
156
+ Stale evidence — recorded against a different workspace state — is flagged and cannot satisfy completion gates.
157
+
158
+ ## Security Boundary
159
+
160
+ Hardproof coordinates engineering process; it is not a security sandbox. Policy hooks do not replace OS permissions, protected branches, sandboxing, isolation, or human code review.
161
+
162
+ Hardproof includes these protections:
163
+ - Force pushes and destructive Git operations are blocked
164
+ - Recognized destructive actions are blocked or require human approval
165
+ - Source mutation is stage-aware (locked in later stages)
166
+ - Human-only approval gates prevent model self-approval
167
+ - Policy decisions are recorded with cryptographic hashes of arguments and configuration
168
+
169
+ See [SECURITY.md](SECURITY.md) and the [security model](docs/security-model.md).
170
+
171
+ ## Privacy
172
+
173
+ Hardproof has **no telemetry, no analytics, no accounts, no hosted dependencies, no remote asset fetching, and no automatic update checks.** Normal local operation makes no intentional network request. Verification output is redacted and size-bounded. Policy events store argument keys and hashes rather than raw values. Nothing phones home.
174
+
175
+ ## Known Limitations
176
+
177
+ - Policy hooks coordinate process but are not a security sandbox or complete shell parser
178
+ - Managed runs require a Git worktree for workspace-bound freshness evidence
179
+ - Local compatibility evidence covers Hermes Agent 0.18.2 on native Windows; macOS and Linux are CI-enforced
180
+ - Downgrade from a migrated v0.2.0 database is not supported
181
+
182
+ ## Documentation Index
183
+
184
+ | Document | Audience |
185
+ |----------|----------|
186
+ | [docs/README.md](docs/README.md) | Full documentation index |
187
+ | [docs/hermes-agent-guide.md](docs/hermes-agent-guide.md) | Hermes Agent operators |
188
+ | [docs/architecture.md](docs/architecture.md) | Architecture overview |
189
+ | [docs/profiles.md](docs/profiles.md) | Run profiles |
190
+ | [docs/protocol.md](docs/protocol.md) | Protocol specification |
191
+ | [docs/security-model.md](docs/security-model.md) | Security model |
192
+ | [docs/configuration-and-migrations.md](docs/configuration-and-migrations.md) | Config and migrations |
193
+ | [docs/policy-packs.md](docs/policy-packs.md) | Language policy packs |
194
+ | [docs/command-reference.md](docs/command-reference.md) | All commands and tools |
195
+ | [docs/repository-map.md](docs/repository-map.md) | Repository layout |
196
+
197
+ ## Contributing
198
+
199
+ Start with [CONTRIBUTING.md](CONTRIBUTING.md), [GOVERNANCE.md](GOVERNANCE.md), and [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md). Coding agents should read [AGENTS.md](AGENTS.md) first. Design changes use ADRs; breaking protocol changes require a public RFC issue. Contributions use the Developer Certificate of Origin rather than a CLA.
200
+
201
+ ## Roadmap
202
+
203
+ | Version | Codename | Focus |
204
+ |---------|----------|-------|
205
+ | v0.1.1 | Core Heat | Standalone plugin, durable stages, SQLite state, approvals, skills, fresh evidence, reports |
206
+ | v0.2.0 | Gatehouse | Explainable configurable policy, scoped waivers, risk suggestions, language packs |
207
+ | v0.3.0 | Workcells | Dependency-aware task waves, resumable subagent implementers |
208
+ | v0.4.0 | Challenge Chamber | Independent specialized reviewers, severity, fix/re-review loops |
209
+ | v0.5.0 | Isolation | Branches, worktrees, baseline proof, rollback, backend adapters |
210
+
211
+ Full roadmap: [ROADMAP.md](ROADMAP.md).
212
+
213
+ ## License
214
+
215
+ Apache-2.0. See [LICENSE](LICENSE) and [NOTICE](NOTICE).
216
+
217
+ ## Affiliation
218
+
219
+ Hardproof is independent open-source software. It is not affiliated with, endorsed by, or sponsored by Hermes Agent, Nous Research, Atlassian, or any other organization.
220
+
221
+ ---
222
+
223
+ **Topics:** `hermes-agent` `coding-agents` `agentic-coding` `software-engineering` `verification` `developer-tools` `open-source` `python`
@@ -1,3 +1,3 @@
1
1
  """Hardproof public package."""
2
2
 
3
- __version__ = "0.2.0"
3
+ __version__ = "0.3.1"
@@ -31,6 +31,22 @@ def _configure(parser: argparse.ArgumentParser) -> None:
31
31
  export.add_argument("path", nargs="?")
32
32
  sub.add_parser("doctor")
33
33
  sub.add_parser("runs")
34
+ sub.add_parser("tasks")
35
+ task = sub.add_parser("task").add_subparsers(dest="task_command", required=True)
36
+ task.add_parser("graph")
37
+ task_show = task.add_parser("show")
38
+ task_show.add_argument("task_id")
39
+ task_attempts = task.add_parser("attempts")
40
+ task_attempts.add_argument("task_id")
41
+ workcells = sub.add_parser("workcells").add_subparsers(dest="workcells_command", required=True)
42
+ workcells.add_parser("status")
43
+ plan = workcells.add_parser("plan")
44
+ plan.add_argument("--tasks-json", required=True)
45
+ workcells.add_parser("run-next")
46
+ result = workcells.add_parser("result")
47
+ result.add_argument("attempt_id")
48
+ reconcile = workcells.add_parser("reconcile")
49
+ reconcile.add_argument("attempt_id")
34
50
  show = sub.add_parser("show")
35
51
  show.add_argument("run_id")
36
52
  config = sub.add_parser("config").add_subparsers(dest="config_command", required=True)
@@ -68,6 +84,12 @@ def _to_argv(args: argparse.Namespace) -> list[str]:
68
84
  return [command, *([args.path] if args.path else [])]
69
85
  if command == "show":
70
86
  return [command, args.run_id]
87
+ if command == "task":
88
+ return [command, args.task_command, *([args.task_id] if hasattr(args, "task_id") else [])]
89
+ if command == "workcells":
90
+ if args.workcells_command == "plan":
91
+ return [command, "plan", "--tasks-json", args.tasks_json]
92
+ return [command, args.workcells_command, *([args.attempt_id] if hasattr(args, "attempt_id") else [])]
71
93
  if command == "config":
72
94
  return [command, args.config_command]
73
95
  if command == "db":