headron-software 3.61.0__tar.gz → 3.63.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.
- headron_software-3.63.0/PKG-INFO +199 -0
- headron_software-3.63.0/README.md +169 -0
- headron_software-3.63.0/VERSION +1 -0
- {headron_software-3.61.0 → headron_software-3.63.0}/pyproject.toml +11 -28
- {headron_software-3.61.0 → headron_software-3.63.0}/scripts/atlas_cli.py +19 -5
- headron_software-3.63.0/scripts/headron_software.egg-info/PKG-INFO +199 -0
- headron_software-3.61.0/PKG-INFO +0 -224
- headron_software-3.61.0/README.md +0 -194
- headron_software-3.61.0/VERSION +0 -1
- headron_software-3.61.0/scripts/headron_software.egg-info/PKG-INFO +0 -224
- {headron_software-3.61.0 → headron_software-3.63.0}/LICENSE +0 -0
- {headron_software-3.61.0 → headron_software-3.63.0}/scripts/headron_software.egg-info/SOURCES.txt +0 -0
- {headron_software-3.61.0 → headron_software-3.63.0}/scripts/headron_software.egg-info/dependency_links.txt +0 -0
- {headron_software-3.61.0 → headron_software-3.63.0}/scripts/headron_software.egg-info/entry_points.txt +0 -0
- {headron_software-3.61.0 → headron_software-3.63.0}/scripts/headron_software.egg-info/requires.txt +0 -0
- {headron_software-3.61.0 → headron_software-3.63.0}/scripts/headron_software.egg-info/top_level.txt +0 -0
- {headron_software-3.61.0 → headron_software-3.63.0}/setup.cfg +0 -0
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: headron-software
|
|
3
|
+
Version: 3.63.0
|
|
4
|
+
Summary: Command line tool and rule contract for AI coding agents: each changed file maps to the checks it owes, and a commit whose file fails is refused.
|
|
5
|
+
License-Expression: MIT
|
|
6
|
+
Project-URL: Homepage, https://headron.tech
|
|
7
|
+
Project-URL: Documentation, https://github.com/HLIntel/Headron/blob/main/llms.txt
|
|
8
|
+
Project-URL: Issues, https://github.com/HLIntel/Headron/issues
|
|
9
|
+
Project-URL: Source, https://github.com/HLIntel/Headron
|
|
10
|
+
Project-URL: Agent entry, https://raw.githubusercontent.com/HLIntel/Headron/main/.agent/bootstrap.json
|
|
11
|
+
Project-URL: LLM instructions, https://raw.githubusercontent.com/HLIntel/Headron/main/llms.txt
|
|
12
|
+
Project-URL: Changelog, https://github.com/HLIntel/Headron/blob/main/docs/VERSIONING.md
|
|
13
|
+
Keywords: headron,headron-software,headron-layer-intelligence,hlintel,engineering-atlas,polyglot,contract-verification,policy-as-code,ai-agents,ai-coding-agents,mcp,llm,agent-harness,code-verification,developer-tools,static-analysis,supply-chain-security,claude-code,codex,github-copilot,agents-md
|
|
14
|
+
Classifier: Development Status :: 4 - Beta
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Topic :: Software Development :: Quality Assurance
|
|
18
|
+
Classifier: Topic :: Software Development :: Testing
|
|
19
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
20
|
+
Requires-Python: >=3.11
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
License-File: LICENSE
|
|
23
|
+
Requires-Dist: pyyaml<7,>=6.0.3
|
|
24
|
+
Requires-Dist: defusedxml<0.8,>=0.7.1
|
|
25
|
+
Provides-Extra: quality
|
|
26
|
+
Requires-Dist: ruff>=0.6; extra == "quality"
|
|
27
|
+
Provides-Extra: crosscheck
|
|
28
|
+
Requires-Dist: jsonschema>=4; extra == "crosscheck"
|
|
29
|
+
Dynamic: license-file
|
|
30
|
+
|
|
31
|
+
<!-- AGENTS: do not read this page breadth-first. Run `headron port <file>` (in a clone,
|
|
32
|
+
`python scripts/atlas.py port <file>`), or parse .agent/bootstrap.json. -->
|
|
33
|
+
<!-- mcp-name: io.github.HLIntel/headron -->
|
|
34
|
+
<div align="center">
|
|
35
|
+
<img src="https://raw.githubusercontent.com/HLIntel/Headron/main/docs/media/headron-banner.jpg"
|
|
36
|
+
alt="Headron Software: AI governance and verification"
|
|
37
|
+
width="992">
|
|
38
|
+
<h1>Headron Software</h1>
|
|
39
|
+
</div>
|
|
40
|
+
|
|
41
|
+
<!-- BEGIN generated: badges (python scripts/atlas.py index --write) -->
|
|
42
|
+
|
|
43
|
+
**Contract 3.63.0** · MIT · verdicts carry receipts: `headron verify --receipt <file>`
|
|
44
|
+
|
|
45
|
+
<!-- END generated: badges -->
|
|
46
|
+
|
|
47
|
+
<!-- BEGIN generated: headline (python scripts/atlas.py index --write) -->
|
|
48
|
+
|
|
49
|
+
- **Is:** a rule contract and CLI mapping changed files to checks. Hooks are optional; `headron verify` runs done gates.
|
|
50
|
+
- **Is not:** a coding agent, model, test framework, or proof code is correct. A check that cannot run reports SKIP or NOT RUN, never a pass; the hook lets that commit through.
|
|
51
|
+
- **`headron init` writes:** AGENTS.md, CLAUDE.md, .mcp.json, .codex/config.toml, .git/hooks/pre-commit. Use `--no-wiring` to skip hooks and configuration; `headron enforce uninstall` restores a displaced hook.
|
|
52
|
+
- **Mind API:** hosted, paid, needs a key; plans a declared change. The command line works without it.
|
|
53
|
+
|
|
54
|
+
Agents: [llms.txt](llms.txt). Chats: [CHAT.md](CHAT.md). [Evidence](#recorded-results).
|
|
55
|
+
|
|
56
|
+
<!-- END generated: headline -->
|
|
57
|
+
|
|
58
|
+
## Why this exists
|
|
59
|
+
|
|
60
|
+
Headron connects changed files to declared checks and reports whether those checks ran. A skipped
|
|
61
|
+
check is not a pass. An optional Git hook can run checks before a commit, whether the change came
|
|
62
|
+
from a developer or an agent.
|
|
63
|
+
|
|
64
|
+
## How it works
|
|
65
|
+
|
|
66
|
+
`headron port <file>` tells an agent what a file owes before it edits. [`atlas.yaml`](atlas.yaml)
|
|
67
|
+
holds those checks; the commit hook and CI report `PASS`, `FAIL`, `SKIP` or `NOT RUN`. The hosted
|
|
68
|
+
[Mind API](https://headron.tech/mind-api.html) plans a declared change through `headron mind`.
|
|
69
|
+
|
|
70
|
+
<!-- BEGIN generated: proof-flow (python scripts/atlas.py index --write) -->
|
|
71
|
+
|
|
72
|
+
<p align="center">
|
|
73
|
+
<img src="docs/media/headron-proof-flow.svg" width="900"
|
|
74
|
+
alt="Headron Architecture: contract, targeted evidence, integrity audit, unified verdict.">
|
|
75
|
+
</p>
|
|
76
|
+
|
|
77
|
+
<!-- END generated: proof-flow -->
|
|
78
|
+
|
|
79
|
+
<!-- BEGIN generated: gate-example (python scripts/atlas.py index --write) -->
|
|
80
|
+
|
|
81
|
+
```console
|
|
82
|
+
$ headron gate scripts/doctor.py
|
|
83
|
+
1. formatter: ruff format --check scripts/doctor.py
|
|
84
|
+
2. compiler_or_typechecker: python3 -c 'import ast,sys; [ast.parse(open(f, encoding="utf-8").read(), f) for f in sys.argv[1:]]' scripts/doctor.py
|
|
85
|
+
3. unit_tests: pytest
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
<!-- END generated: gate-example -->
|
|
89
|
+
|
|
90
|
+
## Quickstart
|
|
91
|
+
|
|
92
|
+
<!-- BEGIN generated: install (python scripts/atlas.py index --write) -->
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
# install
|
|
96
|
+
uv tool install headron-software && headron doctor
|
|
97
|
+
# editable, to change Headron itself
|
|
98
|
+
git clone --depth 1 --branch v3.63.0 https://github.com/HLIntel/Headron ~/headron && uv tool install --editable ~/headron && headron doctor
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
<!-- END generated: install -->
|
|
102
|
+
|
|
103
|
+
In your repository:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
cd path/to/your-repo && headron init # finds your checks, wires your agents, installs the commit hook, runs once
|
|
107
|
+
headron verify && headron proof <file> --verify # after a change: verdicts, then a file's proof
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
With an impact map, `headron verify --changed` evaluates checks for modified files.
|
|
111
|
+
Target a specific profile with `headron verify --changed --change <class>` (e.g. `source_change`, `api_change`, `security_sensitive`); `headron verify` remains the final full verdict.
|
|
112
|
+
|
|
113
|
+
**Machines:** [bootstrap](.agent/bootstrap.json), [facts](.agent/facts.json), and [JSON schema](tools/atlas-output.schema.json).
|
|
114
|
+
**Agents:** [adapters](models/README.md); the MCP interface is read-only.
|
|
115
|
+
**Another repository:** [CONSUMING](docs/CONSUMING.md).
|
|
116
|
+
|
|
117
|
+
## Recorded results
|
|
118
|
+
|
|
119
|
+
See the [instrument limits](docs/CERTIFICATION.md#what-the-numbers-do-not-prove) for their scope.
|
|
120
|
+
|
|
121
|
+
<!-- BEGIN generated: measured-benefits (python scripts/atlas.py index --write) -->
|
|
122
|
+
|
|
123
|
+
<!-- prettier-ignore -->
|
|
124
|
+
| Instrument | Recorded result |
|
|
125
|
+
| :--- | :--- |
|
|
126
|
+
| Enforcement | 31/31 breaks refused across 20 toolchains; **816** declared planted cases |
|
|
127
|
+
| Failure ledger | 128 shapes, 220 sightings; 104 in-tree guarded, 24 host-only |
|
|
128
|
+
| Field ledger | 940 verifications (136 clean); 1133 refusals; 394 landings; 711 lessons; 394 sessions |
|
|
129
|
+
| Verification outcomes | 17,397 checks: 7,357 PASS, 1,097 REUSED, 1,278 FAIL, 7,665 NOT RUN. 533 runs failed; 271 stopped with an unrun check; 0 reported clean despite a failed or unrun check |
|
|
130
|
+
| Routing experiment | 89% fewer prompt tokens than whole-tree; 50% fewer than unassisted, across identified models |
|
|
131
|
+
| Language roles | 360 pairs: 110 runnable, 0 undeclared |
|
|
132
|
+
|
|
133
|
+
Entry context: ~1,593 tokens. The 211 documents (708 KiB) load on demand; install: 10 KiB; hash lock with test tools: 8 packages.
|
|
134
|
+
[Field records](benchmarks/field-latest.json). [Routing data](benchmarks/ab-latest.json). Measures can overlap.
|
|
135
|
+
|
|
136
|
+
<!-- END generated: measured-benefits -->
|
|
137
|
+
|
|
138
|
+
## Where it fits
|
|
139
|
+
|
|
140
|
+
- **Agents and runtimes:** [adapters](models/README.md) describe supported integrations.
|
|
141
|
+
- **Headron-Harness:** a separate desktop dashboard and runtime; see [product boundaries](docs/PRODUCT-STRATEGY.md).
|
|
142
|
+
- **Other repositories:** `headron init` sets up a repository; [CONSUMING](docs/CONSUMING.md) covers CI, the [GitHub Action](docs/CONSUMING.md#as-a-github-action) and the [hosted MCP](docs/CONSUMING.md#hosted-mind-api--mcp).
|
|
143
|
+
- **Languages:** routes declare available checks and identify checks without a tool.
|
|
144
|
+
|
|
145
|
+
## Agent contract
|
|
146
|
+
|
|
147
|
+
<!-- BEGIN generated: port-example (python scripts/atlas.py index --write) -->
|
|
148
|
+
|
|
149
|
+
```console
|
|
150
|
+
$ headron port scripts/doctor.py --line
|
|
151
|
+
◉ scripts/doctor.py │ ⠟backend │ python │ ⌂scripts │ ✓5 │ ⚠2 │ → headron gate scripts/doctor.py
|
|
152
|
+
$ headron port scripts --line
|
|
153
|
+
◎ scripts │ ⠟186 │ ⌂scripts │ → headron brainstorm
|
|
154
|
+
$ headron port . --line
|
|
155
|
+
○ . │ ⠟214 ⠿4 ⠁1 │ → headron check
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
<!-- END generated: port-example -->
|
|
159
|
+
|
|
160
|
+
- **Discover:** `headron find <query>` searches paths, symbols and vocabulary; `headron sweep` maps topology. Search does not guarantee semantic recall.
|
|
161
|
+
- **Route:** `headron port <file>`, or parse [.agent/bootstrap.json](.agent/bootstrap.json); load only its names.
|
|
162
|
+
- **Processes:** `headron process [<id>] --json` lists workflows; with an id, its steps and gates.
|
|
163
|
+
- **Mind:** `headron mind --route <file>` routes; `headron mind --receipts` summarizes the latest local verification record.
|
|
164
|
+
- **Beliefs:** `headron revise` names what rests on a refuted claim; `headron propose` drafts each fix outside the tree.
|
|
165
|
+
- **Automate:** add `--json`; records follow [the output schema](tools/atlas-output.schema.json).
|
|
166
|
+
- **Before shell:** `headron shell --json "<cmd>"`; exit 3 means its verdict would be misread.
|
|
167
|
+
- **Land:** `python scripts/branchstate.py --land`; check `headron landed <branch>` before deletion.
|
|
168
|
+
- **Judge and report:** use the [judgment rungs](docs/systems/AGENT-HARNESS.md#judgment-rungs); file breaks with the [`headron` skill](skills/headron/SKILL.md).
|
|
169
|
+
|
|
170
|
+
## Find your way
|
|
171
|
+
|
|
172
|
+
- **Every document:** [docs index](docs/INDEX.md) · [wiki](docs/wiki/README.md)
|
|
173
|
+
- **Languages:** [atlas](languages/ATLAS.md) · [routing](docs/wiki/CODE-ROUTING.md) · [verification](docs/VERIFY.md)
|
|
174
|
+
- **Agents:** [harness](docs/systems/AGENT-HARNESS.md) · [`.headron`](docs/HEADRON-LANGUAGE.md) · [runtimes](models/README.md)
|
|
175
|
+
- **Why a rule:** `headron why` · `headron failures` · [instruments](docs/INSTRUMENTS.md)
|
|
176
|
+
- **Companion products:** [desktop, web, enterprise](docs/CONSUMING.md#optional-hlintel-services)
|
|
177
|
+
- **Security:** [policy](SECURITY.md) · [OpenSSF](docs/OPENSSF.md) · [contributing](CONTRIBUTING.md)
|
|
178
|
+
|
|
179
|
+
## Counts, computed
|
|
180
|
+
|
|
181
|
+
Generated on every build; `check` refuses drift.
|
|
182
|
+
|
|
183
|
+
<!-- BEGIN generated: repository-facts (python scripts/atlas.py index --write) -->
|
|
184
|
+
|
|
185
|
+
- **52** hard invariants — enforced on every change, zero unowned
|
|
186
|
+
- **368** agreement edges — each a file tied to the declaration it answers for
|
|
187
|
+
- **95** instruments — each stating what it proves, what it does not, and what closes the gap
|
|
188
|
+
- **385** tool entries — across 40 manifests and 5 kinds, validated against `tools/tools.schema.json`
|
|
189
|
+
- **184** harness Python files — every one held by `lint` · `format` · `typecheck`
|
|
190
|
+
- **3.63.0** contract version — `VERSION`, asserted in 10 other files
|
|
191
|
+
|
|
192
|
+
<!-- END generated: repository-facts -->
|
|
193
|
+
|
|
194
|
+
## Project
|
|
195
|
+
|
|
196
|
+
Version tracks the **contract**, not content ([versioning](docs/VERSIONING.md)).
|
|
197
|
+
Built by **HLIntel LLC**, public on purpose ([about](ABOUT.md)). Contributions pass `headron verify`. [MIT License](LICENSE).
|
|
198
|
+
|
|
199
|
+
Updated: contract v3.63.0
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
<!-- AGENTS: do not read this page breadth-first. Run `headron port <file>` (in a clone,
|
|
2
|
+
`python scripts/atlas.py port <file>`), or parse .agent/bootstrap.json. -->
|
|
3
|
+
<!-- mcp-name: io.github.HLIntel/headron -->
|
|
4
|
+
<div align="center">
|
|
5
|
+
<img src="https://raw.githubusercontent.com/HLIntel/Headron/main/docs/media/headron-banner.jpg"
|
|
6
|
+
alt="Headron Software: AI governance and verification"
|
|
7
|
+
width="992">
|
|
8
|
+
<h1>Headron Software</h1>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<!-- BEGIN generated: badges (python scripts/atlas.py index --write) -->
|
|
12
|
+
|
|
13
|
+
**Contract 3.63.0** · MIT · verdicts carry receipts: `headron verify --receipt <file>`
|
|
14
|
+
|
|
15
|
+
<!-- END generated: badges -->
|
|
16
|
+
|
|
17
|
+
<!-- BEGIN generated: headline (python scripts/atlas.py index --write) -->
|
|
18
|
+
|
|
19
|
+
- **Is:** a rule contract and CLI mapping changed files to checks. Hooks are optional; `headron verify` runs done gates.
|
|
20
|
+
- **Is not:** a coding agent, model, test framework, or proof code is correct. A check that cannot run reports SKIP or NOT RUN, never a pass; the hook lets that commit through.
|
|
21
|
+
- **`headron init` writes:** AGENTS.md, CLAUDE.md, .mcp.json, .codex/config.toml, .git/hooks/pre-commit. Use `--no-wiring` to skip hooks and configuration; `headron enforce uninstall` restores a displaced hook.
|
|
22
|
+
- **Mind API:** hosted, paid, needs a key; plans a declared change. The command line works without it.
|
|
23
|
+
|
|
24
|
+
Agents: [llms.txt](llms.txt). Chats: [CHAT.md](CHAT.md). [Evidence](#recorded-results).
|
|
25
|
+
|
|
26
|
+
<!-- END generated: headline -->
|
|
27
|
+
|
|
28
|
+
## Why this exists
|
|
29
|
+
|
|
30
|
+
Headron connects changed files to declared checks and reports whether those checks ran. A skipped
|
|
31
|
+
check is not a pass. An optional Git hook can run checks before a commit, whether the change came
|
|
32
|
+
from a developer or an agent.
|
|
33
|
+
|
|
34
|
+
## How it works
|
|
35
|
+
|
|
36
|
+
`headron port <file>` tells an agent what a file owes before it edits. [`atlas.yaml`](atlas.yaml)
|
|
37
|
+
holds those checks; the commit hook and CI report `PASS`, `FAIL`, `SKIP` or `NOT RUN`. The hosted
|
|
38
|
+
[Mind API](https://headron.tech/mind-api.html) plans a declared change through `headron mind`.
|
|
39
|
+
|
|
40
|
+
<!-- BEGIN generated: proof-flow (python scripts/atlas.py index --write) -->
|
|
41
|
+
|
|
42
|
+
<p align="center">
|
|
43
|
+
<img src="docs/media/headron-proof-flow.svg" width="900"
|
|
44
|
+
alt="Headron Architecture: contract, targeted evidence, integrity audit, unified verdict.">
|
|
45
|
+
</p>
|
|
46
|
+
|
|
47
|
+
<!-- END generated: proof-flow -->
|
|
48
|
+
|
|
49
|
+
<!-- BEGIN generated: gate-example (python scripts/atlas.py index --write) -->
|
|
50
|
+
|
|
51
|
+
```console
|
|
52
|
+
$ headron gate scripts/doctor.py
|
|
53
|
+
1. formatter: ruff format --check scripts/doctor.py
|
|
54
|
+
2. compiler_or_typechecker: python3 -c 'import ast,sys; [ast.parse(open(f, encoding="utf-8").read(), f) for f in sys.argv[1:]]' scripts/doctor.py
|
|
55
|
+
3. unit_tests: pytest
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
<!-- END generated: gate-example -->
|
|
59
|
+
|
|
60
|
+
## Quickstart
|
|
61
|
+
|
|
62
|
+
<!-- BEGIN generated: install (python scripts/atlas.py index --write) -->
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# install
|
|
66
|
+
uv tool install headron-software && headron doctor
|
|
67
|
+
# editable, to change Headron itself
|
|
68
|
+
git clone --depth 1 --branch v3.63.0 https://github.com/HLIntel/Headron ~/headron && uv tool install --editable ~/headron && headron doctor
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
<!-- END generated: install -->
|
|
72
|
+
|
|
73
|
+
In your repository:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
cd path/to/your-repo && headron init # finds your checks, wires your agents, installs the commit hook, runs once
|
|
77
|
+
headron verify && headron proof <file> --verify # after a change: verdicts, then a file's proof
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
With an impact map, `headron verify --changed` evaluates checks for modified files.
|
|
81
|
+
Target a specific profile with `headron verify --changed --change <class>` (e.g. `source_change`, `api_change`, `security_sensitive`); `headron verify` remains the final full verdict.
|
|
82
|
+
|
|
83
|
+
**Machines:** [bootstrap](.agent/bootstrap.json), [facts](.agent/facts.json), and [JSON schema](tools/atlas-output.schema.json).
|
|
84
|
+
**Agents:** [adapters](models/README.md); the MCP interface is read-only.
|
|
85
|
+
**Another repository:** [CONSUMING](docs/CONSUMING.md).
|
|
86
|
+
|
|
87
|
+
## Recorded results
|
|
88
|
+
|
|
89
|
+
See the [instrument limits](docs/CERTIFICATION.md#what-the-numbers-do-not-prove) for their scope.
|
|
90
|
+
|
|
91
|
+
<!-- BEGIN generated: measured-benefits (python scripts/atlas.py index --write) -->
|
|
92
|
+
|
|
93
|
+
<!-- prettier-ignore -->
|
|
94
|
+
| Instrument | Recorded result |
|
|
95
|
+
| :--- | :--- |
|
|
96
|
+
| Enforcement | 31/31 breaks refused across 20 toolchains; **816** declared planted cases |
|
|
97
|
+
| Failure ledger | 128 shapes, 220 sightings; 104 in-tree guarded, 24 host-only |
|
|
98
|
+
| Field ledger | 940 verifications (136 clean); 1133 refusals; 394 landings; 711 lessons; 394 sessions |
|
|
99
|
+
| Verification outcomes | 17,397 checks: 7,357 PASS, 1,097 REUSED, 1,278 FAIL, 7,665 NOT RUN. 533 runs failed; 271 stopped with an unrun check; 0 reported clean despite a failed or unrun check |
|
|
100
|
+
| Routing experiment | 89% fewer prompt tokens than whole-tree; 50% fewer than unassisted, across identified models |
|
|
101
|
+
| Language roles | 360 pairs: 110 runnable, 0 undeclared |
|
|
102
|
+
|
|
103
|
+
Entry context: ~1,593 tokens. The 211 documents (708 KiB) load on demand; install: 10 KiB; hash lock with test tools: 8 packages.
|
|
104
|
+
[Field records](benchmarks/field-latest.json). [Routing data](benchmarks/ab-latest.json). Measures can overlap.
|
|
105
|
+
|
|
106
|
+
<!-- END generated: measured-benefits -->
|
|
107
|
+
|
|
108
|
+
## Where it fits
|
|
109
|
+
|
|
110
|
+
- **Agents and runtimes:** [adapters](models/README.md) describe supported integrations.
|
|
111
|
+
- **Headron-Harness:** a separate desktop dashboard and runtime; see [product boundaries](docs/PRODUCT-STRATEGY.md).
|
|
112
|
+
- **Other repositories:** `headron init` sets up a repository; [CONSUMING](docs/CONSUMING.md) covers CI, the [GitHub Action](docs/CONSUMING.md#as-a-github-action) and the [hosted MCP](docs/CONSUMING.md#hosted-mind-api--mcp).
|
|
113
|
+
- **Languages:** routes declare available checks and identify checks without a tool.
|
|
114
|
+
|
|
115
|
+
## Agent contract
|
|
116
|
+
|
|
117
|
+
<!-- BEGIN generated: port-example (python scripts/atlas.py index --write) -->
|
|
118
|
+
|
|
119
|
+
```console
|
|
120
|
+
$ headron port scripts/doctor.py --line
|
|
121
|
+
◉ scripts/doctor.py │ ⠟backend │ python │ ⌂scripts │ ✓5 │ ⚠2 │ → headron gate scripts/doctor.py
|
|
122
|
+
$ headron port scripts --line
|
|
123
|
+
◎ scripts │ ⠟186 │ ⌂scripts │ → headron brainstorm
|
|
124
|
+
$ headron port . --line
|
|
125
|
+
○ . │ ⠟214 ⠿4 ⠁1 │ → headron check
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
<!-- END generated: port-example -->
|
|
129
|
+
|
|
130
|
+
- **Discover:** `headron find <query>` searches paths, symbols and vocabulary; `headron sweep` maps topology. Search does not guarantee semantic recall.
|
|
131
|
+
- **Route:** `headron port <file>`, or parse [.agent/bootstrap.json](.agent/bootstrap.json); load only its names.
|
|
132
|
+
- **Processes:** `headron process [<id>] --json` lists workflows; with an id, its steps and gates.
|
|
133
|
+
- **Mind:** `headron mind --route <file>` routes; `headron mind --receipts` summarizes the latest local verification record.
|
|
134
|
+
- **Beliefs:** `headron revise` names what rests on a refuted claim; `headron propose` drafts each fix outside the tree.
|
|
135
|
+
- **Automate:** add `--json`; records follow [the output schema](tools/atlas-output.schema.json).
|
|
136
|
+
- **Before shell:** `headron shell --json "<cmd>"`; exit 3 means its verdict would be misread.
|
|
137
|
+
- **Land:** `python scripts/branchstate.py --land`; check `headron landed <branch>` before deletion.
|
|
138
|
+
- **Judge and report:** use the [judgment rungs](docs/systems/AGENT-HARNESS.md#judgment-rungs); file breaks with the [`headron` skill](skills/headron/SKILL.md).
|
|
139
|
+
|
|
140
|
+
## Find your way
|
|
141
|
+
|
|
142
|
+
- **Every document:** [docs index](docs/INDEX.md) · [wiki](docs/wiki/README.md)
|
|
143
|
+
- **Languages:** [atlas](languages/ATLAS.md) · [routing](docs/wiki/CODE-ROUTING.md) · [verification](docs/VERIFY.md)
|
|
144
|
+
- **Agents:** [harness](docs/systems/AGENT-HARNESS.md) · [`.headron`](docs/HEADRON-LANGUAGE.md) · [runtimes](models/README.md)
|
|
145
|
+
- **Why a rule:** `headron why` · `headron failures` · [instruments](docs/INSTRUMENTS.md)
|
|
146
|
+
- **Companion products:** [desktop, web, enterprise](docs/CONSUMING.md#optional-hlintel-services)
|
|
147
|
+
- **Security:** [policy](SECURITY.md) · [OpenSSF](docs/OPENSSF.md) · [contributing](CONTRIBUTING.md)
|
|
148
|
+
|
|
149
|
+
## Counts, computed
|
|
150
|
+
|
|
151
|
+
Generated on every build; `check` refuses drift.
|
|
152
|
+
|
|
153
|
+
<!-- BEGIN generated: repository-facts (python scripts/atlas.py index --write) -->
|
|
154
|
+
|
|
155
|
+
- **52** hard invariants — enforced on every change, zero unowned
|
|
156
|
+
- **368** agreement edges — each a file tied to the declaration it answers for
|
|
157
|
+
- **95** instruments — each stating what it proves, what it does not, and what closes the gap
|
|
158
|
+
- **385** tool entries — across 40 manifests and 5 kinds, validated against `tools/tools.schema.json`
|
|
159
|
+
- **184** harness Python files — every one held by `lint` · `format` · `typecheck`
|
|
160
|
+
- **3.63.0** contract version — `VERSION`, asserted in 10 other files
|
|
161
|
+
|
|
162
|
+
<!-- END generated: repository-facts -->
|
|
163
|
+
|
|
164
|
+
## Project
|
|
165
|
+
|
|
166
|
+
Version tracks the **contract**, not content ([versioning](docs/VERSIONING.md)).
|
|
167
|
+
Built by **HLIntel LLC**, public on purpose ([about](ABOUT.md)). Contributions pass `headron verify`. [MIT License](LICENSE).
|
|
168
|
+
|
|
169
|
+
Updated: contract v3.63.0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.63.0
|
|
@@ -1,20 +1,6 @@
|
|
|
1
1
|
# Headron — Python project declaration.
|
|
2
2
|
#
|
|
3
|
-
#
|
|
4
|
-
# root: ruff and pytest have been RUN here for some time while nothing declared them, nothing
|
|
5
|
-
# configured them, and no gate enforced them. That is an undeclared habit, and an undeclared habit
|
|
6
|
-
# is the thing that silently changes. This file declares exactly what is true and REFUSES to
|
|
7
|
-
# declare what is not — because a config that names a gate nobody runs is the same skeleton this
|
|
8
|
-
# repo exists to prevent.
|
|
9
|
-
#
|
|
10
|
-
# MEASURED BEFORE WRITING ANY OF IT (instrument: `ruff check . --show-files`, `ruff format --check`,
|
|
11
|
-
# `python3 -m pytest -q`, all run at v1.2.0):
|
|
12
|
-
# - ruff saw exactly SIX Python files then; re-measured at v1.3.0 after the harness was
|
|
13
|
-
# split into modules, it sees 8. The count is not typed into a document: README's
|
|
14
|
-
# generated facts block computes it from scripts/*.py on every run.
|
|
15
|
-
# - `ruff check .` -> All checks passed, exit 0. Safe to enforce at that version, and enforced since.
|
|
16
|
-
# - `ruff format --check` -> enforced at 3.50.0, after one reviewed reformat; see [tool.ruff.format].
|
|
17
|
-
# - `python3 -m pytest -q` -> "no tests ran". Not adopted; see [tool.pytest] below.
|
|
3
|
+
# Package metadata and the Python harness's checked configuration live here.
|
|
18
4
|
|
|
19
5
|
# THIS FILE DESCRIBES THE HARNESS, NOT THE REPOSITORY.
|
|
20
6
|
# The atlas is polyglot and is not a Python project; Python is simply what the contract
|
|
@@ -28,7 +14,7 @@ name = "headron-software" # 3.53.0: the index name a stranger typ
|
|
|
28
14
|
dynamic = ["version"] # READ FROM VERSION, never typed here: a second declaration goes
|
|
29
15
|
# stale first. The installed version is the release tag the CLI
|
|
30
16
|
# fetches its atlas from when no root is declared.
|
|
31
|
-
description = "
|
|
17
|
+
description = "Command line tool and rule contract for AI coding agents: each changed file maps to the checks it owes, and a commit whose file fails is refused."
|
|
32
18
|
readme = "README.md" # the PyPI page; carries the registry ownership marker (server.json)
|
|
33
19
|
license = "MIT"
|
|
34
20
|
requires-python = ">=3.11"
|
|
@@ -44,7 +30,7 @@ classifiers = ["Development Status :: 4 - Beta", "Intended Audience :: Developer
|
|
|
44
30
|
# FOUND FROM AN INSTALL. Before 2.28.0 an installed package named no link at all, so an agent
|
|
45
31
|
# handed only `pip show` had no route back to the atlas, its entry or its instructions.
|
|
46
32
|
[project.urls]
|
|
47
|
-
Homepage = "https://
|
|
33
|
+
Homepage = "https://headron.tech"
|
|
48
34
|
Documentation = "https://github.com/HLIntel/Headron/blob/main/llms.txt"
|
|
49
35
|
Issues = "https://github.com/HLIntel/Headron/issues"
|
|
50
36
|
Source = "https://github.com/HLIntel/Headron"
|
|
@@ -106,7 +92,10 @@ select = ["E", "F", "I", # pycodestyle errors, pyflakes, import sor
|
|
|
106
92
|
# if, a returned condition, an any/all loop, a ternary over an if-block, and no else
|
|
107
93
|
# after return/raise/continue — guard clauses. PERF401 was measured too and REJECTED:
|
|
108
94
|
# 31 error-collecting loops with no safe fix, whose messages would hide in generators.
|
|
109
|
-
"C4", "SIM102", "SIM103", "SIM108", "SIM110", "RET505", "RET506", "RET508"
|
|
95
|
+
"C4", "SIM102", "SIM103", "SIM108", "SIM110", "RET505", "RET506", "RET508",
|
|
96
|
+
# S110, an `except Exception: pass` that hides a programming error. Four hits
|
|
97
|
+
# (mind.py x3, mind_diagnostics.py x1) were narrowed to the errors each expects, so zero.
|
|
98
|
+
"S110"]
|
|
110
99
|
ignore = ["E501"] # line length is governed by line-length above, not by a lint error
|
|
111
100
|
|
|
112
101
|
[tool.ruff.lint.isort]
|
|
@@ -144,16 +133,9 @@ quote-style = "double"
|
|
|
144
133
|
skip-magic-trailing-comma = true
|
|
145
134
|
|
|
146
135
|
# [tool.pytest.ini_options] IS DELIBERATELY ABSENT.
|
|
147
|
-
# A bare
|
|
148
|
-
#
|
|
149
|
-
#
|
|
150
|
-
# are a custom harness run directly:
|
|
151
|
-
#
|
|
152
|
-
# python3 scripts/atlas_test.py -> "atlas tests: N/N pass" with N asserted, exit 0
|
|
153
|
-
#
|
|
154
|
-
# declared in that file's own docblock and wired into .github/workflows/atlas-ci.yml. Declaring a
|
|
155
|
-
# pytest section now would add a second, empty test surface whose green exit means nothing. When a
|
|
156
|
-
# real pytest suite exists, configure it here and give it a failing case first.
|
|
136
|
+
# A bare invocation could collect planted failures under benchmarks/agent/, so conftest.py refuses
|
|
137
|
+
# it. Explicit paths still work. The artifacts_tests gate selects the artifact and data kit cases;
|
|
138
|
+
# the mutation suite is a separate harness run by verify.
|
|
157
139
|
|
|
158
140
|
[tool.basedpyright]
|
|
159
141
|
# THE PACK'S DECLARED TYPE CHECKER, RUN ON ITS OWN TREE (3.54.0): gate `typecheck`. Standard mode, the
|
|
@@ -162,6 +144,7 @@ include = ["scripts", "examples", "fuzz", "benchmarks"]
|
|
|
162
144
|
pythonVersion = "3.12"
|
|
163
145
|
typeCheckingMode = "standard"
|
|
164
146
|
reportMissingModuleSource = false
|
|
147
|
+
reportMissingParameterType = "error"
|
|
165
148
|
executionEnvironments = [
|
|
166
149
|
{ root = "examples/python", extraPaths = ["examples/python", "scripts"] },
|
|
167
150
|
{ root = "examples/webhooks", extraPaths = ["examples/webhooks", "scripts"] },
|
|
@@ -11,8 +11,10 @@ THAT TREE IS LOCKED (3.54.0): read-only, re-hashed on every run; an edit refuses
|
|
|
11
11
|
|
|
12
12
|
from __future__ import annotations
|
|
13
13
|
|
|
14
|
+
import contextlib
|
|
14
15
|
import hashlib
|
|
15
16
|
import io
|
|
17
|
+
import json
|
|
16
18
|
import os
|
|
17
19
|
import re
|
|
18
20
|
import shutil
|
|
@@ -36,7 +38,7 @@ class ConfigError(ValueError):
|
|
|
36
38
|
"""A root flag or consumer config this entry point refuses to guess about."""
|
|
37
39
|
|
|
38
40
|
|
|
39
|
-
def _keys(path: Path, node, what: str, allowed=()) -> dict:
|
|
41
|
+
def _keys(path: Path, node: yaml.Node, what: str, allowed: tuple[str, ...] = ()) -> dict:
|
|
40
42
|
if not isinstance(node, yaml.MappingNode):
|
|
41
43
|
raise ConfigError(f"{path}:{node.start_mark.line + 1}: {what} must be a mapping")
|
|
42
44
|
out = {}
|
|
@@ -91,7 +93,7 @@ def resolve_root(argv: list[str], cwd: Path) -> tuple[Path, str]:
|
|
|
91
93
|
value = root_flag(argv)[0]
|
|
92
94
|
if value is not None:
|
|
93
95
|
return Path(value).expanduser().resolve(), f"explicit {FLAG}"
|
|
94
|
-
for var in ("HEADRON_ROOT", "CODE_DEVELOPMENT_ROOT"): #
|
|
96
|
+
for var in ("HEADRON_ROOT", "CODE_DEVELOPMENT_ROOT"): # second: pre-3.0
|
|
95
97
|
if os.environ.get(var):
|
|
96
98
|
return Path(os.environ[var]).resolve(), f"{var} in the environment"
|
|
97
99
|
config, where = _config(cwd)
|
|
@@ -163,7 +165,7 @@ def fetch_atlas(version: str) -> Path:
|
|
|
163
165
|
(tree / MARKER).write_text("".join(f"{line}\n" for line in [f"{want[0]} {name}", *_manifest(tree)]))
|
|
164
166
|
for path in tree.rglob("*"):
|
|
165
167
|
if path.is_file():
|
|
166
|
-
path.chmod(path.stat().st_mode & ~0o222) # read-only, marker too: an edit fails
|
|
168
|
+
path.chmod(path.stat().st_mode & ~0o222) # read-only, marker too: an edit fails on the spot
|
|
167
169
|
shutil.rmtree(dest, ignore_errors=True) # an unmarked, interrupted unpack
|
|
168
170
|
os.replace(tree, dest)
|
|
169
171
|
_prune_releases(dest.parent)
|
|
@@ -184,7 +186,7 @@ def _resolved(argv: list[str]) -> tuple:
|
|
|
184
186
|
from importlib.metadata import version # noqa: PLC0415
|
|
185
187
|
|
|
186
188
|
root = fetch_atlas(version("headron-software"))
|
|
187
|
-
# Bytecode goes beside the locked tree, never into it, here and in every child
|
|
189
|
+
# Bytecode goes beside the locked tree, never into it, here and in every child.
|
|
188
190
|
os.environ["PYTHONPYCACHEPREFIX"] = sys.pycache_prefix = str(root.parent / "pycache")
|
|
189
191
|
return root, "its own release, sha256-checked and locked"
|
|
190
192
|
except (ConfigError, FetchError, ImportError) as exc:
|
|
@@ -229,7 +231,19 @@ def mcp_main() -> int:
|
|
|
229
231
|
argv = sys.argv[1:]
|
|
230
232
|
if "--where" in argv:
|
|
231
233
|
return main(argv)
|
|
232
|
-
|
|
234
|
+
said = io.StringIO()
|
|
235
|
+
with contextlib.redirect_stderr(said):
|
|
236
|
+
root = _enter(argv, "headron_mcp.py")[0]
|
|
237
|
+
sys.stderr.write(said.getvalue())
|
|
238
|
+
if root is None:
|
|
239
|
+
# REFUSE IN THE HANDSHAKE (3.63.0): exiting before `initialize` showed the client only "Connection closed".
|
|
240
|
+
try:
|
|
241
|
+
ask = {} if sys.stdin.isatty() else json.loads(sys.stdin.readline() or "{}")
|
|
242
|
+
except ValueError:
|
|
243
|
+
ask = {}
|
|
244
|
+
if isinstance(ask, dict) and "id" in ask:
|
|
245
|
+
why = {"code": -32000, "message": "headron-mcp refused: " + " ".join(said.getvalue().split())}
|
|
246
|
+
print(json.dumps({"jsonrpc": "2.0", "id": ask["id"], "error": why}), flush=True)
|
|
233
247
|
return 2
|
|
234
248
|
import headron_mcp # noqa: PLC0415 — as in main
|
|
235
249
|
|