hardproof 0.2.0__tar.gz → 0.3.0__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.0/PKG-INFO +253 -0
  2. hardproof-0.3.0/README.md +222 -0
  3. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/__init__.py +1 -1
  4. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/commands/cli.py +22 -0
  5. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/commands/shared.py +156 -0
  6. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/config.py +114 -1
  7. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/constants.py +2 -2
  8. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/domain/models.py +1 -1
  9. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/domain/snapshots.py +12 -1
  10. hardproof-0.3.0/hardproof/domain/workcells.py +218 -0
  11. hardproof-0.3.0/hardproof/migrations/003_workcells.sql +132 -0
  12. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/services/evidence.py +4 -4
  13. hardproof-0.3.0/hardproof/services/hermes_children.py +77 -0
  14. hardproof-0.3.0/hardproof/services/workcell_artifacts.py +185 -0
  15. hardproof-0.3.0/hardproof/services/workcells.py +193 -0
  16. hardproof-0.3.0/hardproof/storage/repository.py +1050 -0
  17. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/tools/handlers.py +36 -0
  18. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/tools/schemas.py +6 -2
  19. hardproof-0.3.0/hardproof.egg-info/PKG-INFO +253 -0
  20. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof.egg-info/SOURCES.txt +5 -0
  21. {hardproof-0.2.0 → hardproof-0.3.0}/pyproject.toml +1 -1
  22. hardproof-0.2.0/PKG-INFO +0 -190
  23. hardproof-0.2.0/README.md +0 -159
  24. hardproof-0.2.0/hardproof/storage/repository.py +0 -548
  25. hardproof-0.2.0/hardproof.egg-info/PKG-INFO +0 -190
  26. {hardproof-0.2.0 → hardproof-0.3.0}/LICENSE +0 -0
  27. {hardproof-0.2.0 → hardproof-0.3.0}/NOTICE +0 -0
  28. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/commands/__init__.py +0 -0
  29. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/commands/slash.py +0 -0
  30. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/compat.py +0 -0
  31. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/domain/__init__.py +0 -0
  32. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/domain/enums.py +0 -0
  33. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/domain/transitions.py +0 -0
  34. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/errors.py +0 -0
  35. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/hooks/__init__.py +0 -0
  36. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/hooks/context.py +0 -0
  37. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/hooks/sessions.py +0 -0
  38. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/hooks/tool_policy.py +0 -0
  39. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/hooks/verification.py +0 -0
  40. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/migrations/001_initial.sql +0 -0
  41. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/migrations/002_gatehouse.sql +0 -0
  42. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/migrations/__init__.py +0 -0
  43. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/paths.py +0 -0
  44. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/plugin.py +0 -0
  45. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/policy/__init__.py +0 -0
  46. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/policy/packs.py +0 -0
  47. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/policy/profiles.py +0 -0
  48. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/policy/stage_graph.py +0 -0
  49. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/policy/stage_rules.py +0 -0
  50. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/policy/terminal.py +0 -0
  51. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/policy/tool_rules.py +0 -0
  52. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/policy/trace.py +0 -0
  53. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/policy/verification_rules.py +0 -0
  54. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/policy/waivers.py +0 -0
  55. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/py.typed +0 -0
  56. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/services/__init__.py +0 -0
  57. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/services/approvals.py +0 -0
  58. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/services/artifacts.py +0 -0
  59. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/services/authority.py +0 -0
  60. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/services/decisions.py +0 -0
  61. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/services/reports.py +0 -0
  62. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/services/risks.py +0 -0
  63. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/services/runs.py +0 -0
  64. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/services/sessions.py +0 -0
  65. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/services/tasks.py +0 -0
  66. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/services/waivers.py +0 -0
  67. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/skills/deliver/SKILL.md +0 -0
  68. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/skills/design/SKILL.md +0 -0
  69. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/skills/discover/SKILL.md +0 -0
  70. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/skills/implement/SKILL.md +0 -0
  71. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/skills/learn/SKILL.md +0 -0
  72. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/skills/orchestrate/SKILL.md +0 -0
  73. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/skills/plan/SKILL.md +0 -0
  74. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/skills/review/SKILL.md +0 -0
  75. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/skills/verify/SKILL.md +0 -0
  76. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/storage/__init__.py +0 -0
  77. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/storage/database.py +0 -0
  78. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/storage/migrations.py +0 -0
  79. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/templates/__init__.py +0 -0
  80. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/templates/completion.md +0 -0
  81. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/templates/design.md +0 -0
  82. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/templates/discovery.md +0 -0
  83. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/templates/plan.md +0 -0
  84. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/templates/review.md +0 -0
  85. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof/tools/__init__.py +0 -0
  86. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof.egg-info/dependency_links.txt +0 -0
  87. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof.egg-info/entry_points.txt +0 -0
  88. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof.egg-info/requires.txt +0 -0
  89. {hardproof-0.2.0 → hardproof-0.3.0}/hardproof.egg-info/top_level.txt +0 -0
  90. {hardproof-0.2.0 → hardproof-0.3.0}/setup.cfg +0 -0
@@ -0,0 +1,253 @@
1
+ Metadata-Version: 2.4
2
+ Name: hardproof
3
+ Version: 0.3.0
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
+
40
+ > **Alpha software.** v0.2.0 Gatehouse is the current signed public alpha on PyPI. v0.3.0 Workcells development has not begun. Commands, schemas, and contracts may change before v1.0.0.
41
+
42
+ 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.
43
+
44
+ > A persistent, risk-aware engineering protocol for Hermes Agent.
45
+
46
+ ## Current Release
47
+
48
+ | Release | Version | Status |
49
+ |---------|---------|--------|
50
+ | Public alpha | v0.2.0 Gatehouse | Released on GitHub and PyPI |
51
+ | Previous | v0.1.1 Core Heat | Released on GitHub and PyPI |
52
+ | Previous | v0.1.0 Core Heat | Released on GitHub |
53
+ | Future | v0.3.0 Workcells | Not started |
54
+
55
+ ## Install
56
+
57
+ From PyPI:
58
+
59
+ ```bash
60
+ pip install hardproof
61
+ hermes plugins enable hardproof
62
+ ```
63
+
64
+ From GitHub:
65
+
66
+ ```bash
67
+ hermes plugins install asimons81/hardproof --enable
68
+ ```
69
+
70
+ ## Enable
71
+
72
+ Enable the plugin in Hermes:
73
+
74
+ ```bash
75
+ hermes plugins enable hardproof
76
+ ```
77
+
78
+ Verify discovery:
79
+
80
+ ```bash
81
+ hermes hardproof doctor
82
+ ```
83
+
84
+ ## Quick Start
85
+
86
+ Both the CLI and slash-command surfaces work identically:
87
+
88
+ ```bash
89
+ # Terminal
90
+ hermes hardproof start standard "Build API-key rotation with rollback support"
91
+ hermes hardproof status
92
+ hermes hardproof doctor
93
+
94
+ # In Hermes chat
95
+ /hardproof start standard "Build API-key rotation with rollback support"
96
+ /hardproof status
97
+ ```
98
+
99
+ Hardproof stores state under `.hardproof/`, adds that directory to the repository-local Git exclude file, and injects compact stage context into bound Hermes sessions.
100
+
101
+ ## How Hardproof Changes an Agent Workflow
102
+
103
+ 1. **INT AKE** — clarify the request before any code is written
104
+ 2. **DISCOVERY** — inspect the repository, constraints, and unknowns
105
+ 3. **DESIGN** — shape a reversible solution (requires human approval)
106
+ 4. **PLAN** — turn the design into dependency-aware tasks (requires human approval)
107
+ 5. **IMPLEMENT** — execute approved tasks with focused tests
108
+ 6. **REVIEW** — challenge the implementation and risks
109
+ 7. **VERIFY** — run checks and evaluate fresh workspace-bound evidence
110
+ 8. **DELIVER** — prepare an evidence-backed completion handoff
111
+ 9. **LEARN** — capture lessons or explicitly skip
112
+
113
+ Every stage has defined gates. No run completes without fresh successful evidence.
114
+
115
+ ## Profiles
116
+
117
+ | Profile | Use Case | Key Requirements |
118
+ |---------|----------|-----------------|
119
+ | **Quick** | Typo fixes, doc updates, one-line changes | Recorded skips, at least one fresh verification check |
120
+ | **Standard** | Feature work, refactors, multi-file changes | Discovery, design and plan, human design and plan approval, tracked implementation, review, fresh verification, delivery, learning decision |
121
+ | **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 |
122
+
123
+ No profile permits completion without fresh successful evidence.
124
+
125
+ ## Gatehouse v0.2.0 Features
126
+
127
+ Gatehouse adds strict project allow/deny/approval rules, ordered policy explanations, human-only
128
+ scoped waivers, advisory risk suggestions, bounded monotonic stage graphs, configuration and
129
+ migration diagnostics, and versioned Python/Node/Rust/Go policy packs. See
130
+ [configuration and migrations](docs/configuration-and-migrations.md) and
131
+ [policy packs](docs/policy-packs.md).
132
+
133
+ ## Common Commands
134
+
135
+ ```bash
136
+ hermes hardproof start quick|standard|critical "request"
137
+ hermes hardproof status
138
+ hermes hardproof doctor
139
+ hermes hardproof approve design|plan|completion [reason]
140
+ hermes hardproof waive <reason>
141
+ hermes hardproof pause [reason]
142
+ hermes hardproof resume [run-id]
143
+ hermes hardproof abort <reason>
144
+ hermes hardproof evidence
145
+ hermes hardproof export [path]
146
+ hermes hardproof config init|validate|explain
147
+ hermes hardproof db status|migrate [--dry-run]
148
+ hermes hardproof migrate-state
149
+ hermes hardproof runs
150
+ hermes hardproof show <run-id>
151
+ hermes hardproof policy <args>
152
+ ```
153
+
154
+ All commands also work as `/hardproof <subcommand>` in Hermes chat.
155
+
156
+ ## Point Hermes Agent at This Repository
157
+
158
+ Hermes Agent automatically reads `AGENTS.md` when started in the repository. To work on Hardproof itself:
159
+
160
+ 1. Clone or open the repo
161
+ 2. Start Hermes from the repository root
162
+ 3. Confirm `AGENTS.md` is loaded (Hermes prints a context-file banner on startup)
163
+ 4. Follow the instructions in [docs/hermes-agent-guide.md](docs/hermes-agent-guide.md)
164
+
165
+ ## Architecture
166
+
167
+ 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.
168
+
169
+ 1. **Plugin layer** — registers slash commands, CLI commands, six tools, lifecycle hooks, and nine stage skills
170
+ 2. **Domain layer** — run profiles, stages, transitions, approval gates, and immutable event models
171
+ 3. **Policy layer** — stage-aware mutation rules, tool policies, and human-required approval escalation
172
+ 4. **Storage layer** — project-local SQLite database with forward-only migrations plus human-readable artifacts under `.hardproof/runs/<run-id>/`
173
+ 5. **Verification layer** — workspace-bound evidence with Git HEAD capture, binary diff freshness checks, and redacted output recording
174
+
175
+ See [architecture](docs/architecture.md), [profiles](docs/profiles.md), and [compatibility](docs/compatibility.md).
176
+
177
+ ## Verification Evidence
178
+
179
+ Hardproof requires fresh, workspace-bound evidence before any run can complete. Verification checks capture:
180
+
181
+ - Git HEAD commit hash at the time of verification
182
+ - Binary diff against the working tree to detect uncommitted changes
183
+ - Redacted, size-bounded output from each configured check
184
+ - Strict exit-code evaluation (only explicit zero passes)
185
+
186
+ Stale evidence — recorded against a different workspace state — is flagged and cannot satisfy completion gates.
187
+
188
+ ## Security Boundary
189
+
190
+ 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.
191
+
192
+ Hardproof includes these protections:
193
+ - Force pushes and destructive Git operations are blocked
194
+ - Recognized destructive actions are blocked or require human approval
195
+ - Source mutation is stage-aware (locked in later stages)
196
+ - Human-only approval gates prevent model self-approval
197
+ - Policy decisions are recorded with cryptographic hashes of arguments and configuration
198
+
199
+ See [SECURITY.md](SECURITY.md) and the [security model](docs/security-model.md).
200
+
201
+ ## Privacy
202
+
203
+ 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.
204
+
205
+ ## Known Limitations
206
+
207
+ - Policy hooks coordinate process but are not a security sandbox or complete shell parser
208
+ - Managed runs require a Git worktree for workspace-bound freshness evidence
209
+ - Local compatibility evidence covers Hermes Agent 0.18.2 on native Windows; macOS and Linux are CI-enforced
210
+ - Downgrade from a migrated v0.2.0 database is not supported
211
+
212
+ ## Documentation Index
213
+
214
+ | Document | Audience |
215
+ |----------|----------|
216
+ | [docs/README.md](docs/README.md) | Full documentation index |
217
+ | [docs/hermes-agent-guide.md](docs/hermes-agent-guide.md) | Hermes Agent operators |
218
+ | [docs/architecture.md](docs/architecture.md) | Architecture overview |
219
+ | [docs/profiles.md](docs/profiles.md) | Run profiles |
220
+ | [docs/protocol.md](docs/protocol.md) | Protocol specification |
221
+ | [docs/security-model.md](docs/security-model.md) | Security model |
222
+ | [docs/configuration-and-migrations.md](docs/configuration-and-migrations.md) | Config and migrations |
223
+ | [docs/policy-packs.md](docs/policy-packs.md) | Language policy packs |
224
+ | [docs/command-reference.md](docs/command-reference.md) | All commands and tools |
225
+ | [docs/repository-map.md](docs/repository-map.md) | Repository layout |
226
+
227
+ ## Contributing
228
+
229
+ 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.
230
+
231
+ ## Roadmap
232
+
233
+ | Version | Codename | Focus |
234
+ |---------|----------|-------|
235
+ | v0.1.1 | Core Heat | Standalone plugin, durable stages, SQLite state, approvals, skills, fresh evidence, reports |
236
+ | v0.2.0 | Gatehouse | Explainable configurable policy, scoped waivers, risk suggestions, language packs |
237
+ | v0.3.0 | Workcells | Dependency-aware task waves, resumable subagent implementers |
238
+ | v0.4.0 | Challenge Chamber | Independent specialized reviewers, severity, fix/re-review loops |
239
+ | v0.5.0 | Isolation | Branches, worktrees, baseline proof, rollback, backend adapters |
240
+
241
+ Full roadmap: [ROADMAP.md](ROADMAP.md).
242
+
243
+ ## License
244
+
245
+ Apache-2.0. See [LICENSE](LICENSE) and [NOTICE](NOTICE).
246
+
247
+ ## Affiliation
248
+
249
+ 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.
250
+
251
+ ---
252
+
253
+ **Topics:** `hermes-agent` `coding-agents` `agentic-coding` `software-engineering` `verification` `developer-tools` `open-source` `python`
@@ -0,0 +1,222 @@
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
+
9
+ > **Alpha software.** v0.2.0 Gatehouse is the current signed public alpha on PyPI. v0.3.0 Workcells development has not begun. Commands, schemas, and contracts may change before v1.0.0.
10
+
11
+ 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.
12
+
13
+ > A persistent, risk-aware engineering protocol for Hermes Agent.
14
+
15
+ ## Current Release
16
+
17
+ | Release | Version | Status |
18
+ |---------|---------|--------|
19
+ | Public alpha | v0.2.0 Gatehouse | Released on GitHub and PyPI |
20
+ | Previous | v0.1.1 Core Heat | Released on GitHub and PyPI |
21
+ | Previous | v0.1.0 Core Heat | Released on GitHub |
22
+ | Future | v0.3.0 Workcells | Not started |
23
+
24
+ ## Install
25
+
26
+ From PyPI:
27
+
28
+ ```bash
29
+ pip install hardproof
30
+ hermes plugins enable hardproof
31
+ ```
32
+
33
+ From GitHub:
34
+
35
+ ```bash
36
+ hermes plugins install asimons81/hardproof --enable
37
+ ```
38
+
39
+ ## Enable
40
+
41
+ Enable the plugin in Hermes:
42
+
43
+ ```bash
44
+ hermes plugins enable hardproof
45
+ ```
46
+
47
+ Verify discovery:
48
+
49
+ ```bash
50
+ hermes hardproof doctor
51
+ ```
52
+
53
+ ## Quick Start
54
+
55
+ Both the CLI and slash-command surfaces work identically:
56
+
57
+ ```bash
58
+ # Terminal
59
+ hermes hardproof start standard "Build API-key rotation with rollback support"
60
+ hermes hardproof status
61
+ hermes hardproof doctor
62
+
63
+ # In Hermes chat
64
+ /hardproof start standard "Build API-key rotation with rollback support"
65
+ /hardproof status
66
+ ```
67
+
68
+ Hardproof stores state under `.hardproof/`, adds that directory to the repository-local Git exclude file, and injects compact stage context into bound Hermes sessions.
69
+
70
+ ## How Hardproof Changes an Agent Workflow
71
+
72
+ 1. **INT AKE** — clarify the request before any code is written
73
+ 2. **DISCOVERY** — inspect the repository, constraints, and unknowns
74
+ 3. **DESIGN** — shape a reversible solution (requires human approval)
75
+ 4. **PLAN** — turn the design into dependency-aware tasks (requires human approval)
76
+ 5. **IMPLEMENT** — execute approved tasks with focused tests
77
+ 6. **REVIEW** — challenge the implementation and risks
78
+ 7. **VERIFY** — run checks and evaluate fresh workspace-bound evidence
79
+ 8. **DELIVER** — prepare an evidence-backed completion handoff
80
+ 9. **LEARN** — capture lessons or explicitly skip
81
+
82
+ Every stage has defined gates. No run completes without fresh successful evidence.
83
+
84
+ ## Profiles
85
+
86
+ | Profile | Use Case | Key Requirements |
87
+ |---------|----------|-----------------|
88
+ | **Quick** | Typo fixes, doc updates, one-line changes | Recorded skips, at least one fresh verification check |
89
+ | **Standard** | Feature work, refactors, multi-file changes | Discovery, design and plan, human design and plan approval, tracked implementation, review, fresh verification, delivery, learning decision |
90
+ | **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 |
91
+
92
+ No profile permits completion without fresh successful evidence.
93
+
94
+ ## Gatehouse v0.2.0 Features
95
+
96
+ Gatehouse adds strict project allow/deny/approval rules, ordered policy explanations, human-only
97
+ scoped waivers, advisory risk suggestions, bounded monotonic stage graphs, configuration and
98
+ migration diagnostics, and versioned Python/Node/Rust/Go policy packs. See
99
+ [configuration and migrations](docs/configuration-and-migrations.md) and
100
+ [policy packs](docs/policy-packs.md).
101
+
102
+ ## Common Commands
103
+
104
+ ```bash
105
+ hermes hardproof start quick|standard|critical "request"
106
+ hermes hardproof status
107
+ hermes hardproof doctor
108
+ hermes hardproof approve design|plan|completion [reason]
109
+ hermes hardproof waive <reason>
110
+ hermes hardproof pause [reason]
111
+ hermes hardproof resume [run-id]
112
+ hermes hardproof abort <reason>
113
+ hermes hardproof evidence
114
+ hermes hardproof export [path]
115
+ hermes hardproof config init|validate|explain
116
+ hermes hardproof db status|migrate [--dry-run]
117
+ hermes hardproof migrate-state
118
+ hermes hardproof runs
119
+ hermes hardproof show <run-id>
120
+ hermes hardproof policy <args>
121
+ ```
122
+
123
+ All commands also work as `/hardproof <subcommand>` in Hermes chat.
124
+
125
+ ## Point Hermes Agent at This Repository
126
+
127
+ Hermes Agent automatically reads `AGENTS.md` when started in the repository. To work on Hardproof itself:
128
+
129
+ 1. Clone or open the repo
130
+ 2. Start Hermes from the repository root
131
+ 3. Confirm `AGENTS.md` is loaded (Hermes prints a context-file banner on startup)
132
+ 4. Follow the instructions in [docs/hermes-agent-guide.md](docs/hermes-agent-guide.md)
133
+
134
+ ## Architecture
135
+
136
+ 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.
137
+
138
+ 1. **Plugin layer** — registers slash commands, CLI commands, six tools, lifecycle hooks, and nine stage skills
139
+ 2. **Domain layer** — run profiles, stages, transitions, approval gates, and immutable event models
140
+ 3. **Policy layer** — stage-aware mutation rules, tool policies, and human-required approval escalation
141
+ 4. **Storage layer** — project-local SQLite database with forward-only migrations plus human-readable artifacts under `.hardproof/runs/<run-id>/`
142
+ 5. **Verification layer** — workspace-bound evidence with Git HEAD capture, binary diff freshness checks, and redacted output recording
143
+
144
+ See [architecture](docs/architecture.md), [profiles](docs/profiles.md), and [compatibility](docs/compatibility.md).
145
+
146
+ ## Verification Evidence
147
+
148
+ Hardproof requires fresh, workspace-bound evidence before any run can complete. Verification checks capture:
149
+
150
+ - Git HEAD commit hash at the time of verification
151
+ - Binary diff against the working tree to detect uncommitted changes
152
+ - Redacted, size-bounded output from each configured check
153
+ - Strict exit-code evaluation (only explicit zero passes)
154
+
155
+ Stale evidence — recorded against a different workspace state — is flagged and cannot satisfy completion gates.
156
+
157
+ ## Security Boundary
158
+
159
+ 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.
160
+
161
+ Hardproof includes these protections:
162
+ - Force pushes and destructive Git operations are blocked
163
+ - Recognized destructive actions are blocked or require human approval
164
+ - Source mutation is stage-aware (locked in later stages)
165
+ - Human-only approval gates prevent model self-approval
166
+ - Policy decisions are recorded with cryptographic hashes of arguments and configuration
167
+
168
+ See [SECURITY.md](SECURITY.md) and the [security model](docs/security-model.md).
169
+
170
+ ## Privacy
171
+
172
+ 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.
173
+
174
+ ## Known Limitations
175
+
176
+ - Policy hooks coordinate process but are not a security sandbox or complete shell parser
177
+ - Managed runs require a Git worktree for workspace-bound freshness evidence
178
+ - Local compatibility evidence covers Hermes Agent 0.18.2 on native Windows; macOS and Linux are CI-enforced
179
+ - Downgrade from a migrated v0.2.0 database is not supported
180
+
181
+ ## Documentation Index
182
+
183
+ | Document | Audience |
184
+ |----------|----------|
185
+ | [docs/README.md](docs/README.md) | Full documentation index |
186
+ | [docs/hermes-agent-guide.md](docs/hermes-agent-guide.md) | Hermes Agent operators |
187
+ | [docs/architecture.md](docs/architecture.md) | Architecture overview |
188
+ | [docs/profiles.md](docs/profiles.md) | Run profiles |
189
+ | [docs/protocol.md](docs/protocol.md) | Protocol specification |
190
+ | [docs/security-model.md](docs/security-model.md) | Security model |
191
+ | [docs/configuration-and-migrations.md](docs/configuration-and-migrations.md) | Config and migrations |
192
+ | [docs/policy-packs.md](docs/policy-packs.md) | Language policy packs |
193
+ | [docs/command-reference.md](docs/command-reference.md) | All commands and tools |
194
+ | [docs/repository-map.md](docs/repository-map.md) | Repository layout |
195
+
196
+ ## Contributing
197
+
198
+ 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.
199
+
200
+ ## Roadmap
201
+
202
+ | Version | Codename | Focus |
203
+ |---------|----------|-------|
204
+ | v0.1.1 | Core Heat | Standalone plugin, durable stages, SQLite state, approvals, skills, fresh evidence, reports |
205
+ | v0.2.0 | Gatehouse | Explainable configurable policy, scoped waivers, risk suggestions, language packs |
206
+ | v0.3.0 | Workcells | Dependency-aware task waves, resumable subagent implementers |
207
+ | v0.4.0 | Challenge Chamber | Independent specialized reviewers, severity, fix/re-review loops |
208
+ | v0.5.0 | Isolation | Branches, worktrees, baseline proof, rollback, backend adapters |
209
+
210
+ Full roadmap: [ROADMAP.md](ROADMAP.md).
211
+
212
+ ## License
213
+
214
+ Apache-2.0. See [LICENSE](LICENSE) and [NOTICE](NOTICE).
215
+
216
+ ## Affiliation
217
+
218
+ 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.
219
+
220
+ ---
221
+
222
+ **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.0"
@@ -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":