hypergumbo 9.0.0__tar.gz → 9.2.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.
- {hypergumbo-9.0.0 → hypergumbo-9.2.0}/.gitignore +1 -0
- {hypergumbo-9.0.0 → hypergumbo-9.2.0}/PKG-INFO +10 -8
- {hypergumbo-9.0.0 → hypergumbo-9.2.0}/README.md +3 -1
- {hypergumbo-9.0.0 → hypergumbo-9.2.0}/pyproject.toml +7 -7
- {hypergumbo-9.0.0 → hypergumbo-9.2.0}/src/hypergumbo/__init__.py +0 -0
- {hypergumbo-9.0.0 → hypergumbo-9.2.0}/src/hypergumbo/__main__.py +0 -0
- {hypergumbo-9.0.0 → hypergumbo-9.2.0}/tests/test_meta.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: hypergumbo
|
|
3
|
-
Version: 9.
|
|
3
|
+
Version: 9.2.0
|
|
4
4
|
Summary: Local-first repo behavior map generator
|
|
5
5
|
Author: Hypergumbo contributors
|
|
6
6
|
License: AGPL-3.0-or-later
|
|
@@ -10,10 +10,10 @@ Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or l
|
|
|
10
10
|
Classifier: Programming Language :: Python :: 3
|
|
11
11
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
12
12
|
Requires-Python: >=3.10
|
|
13
|
-
Requires-Dist: hypergumbo-core==9.
|
|
14
|
-
Requires-Dist: hypergumbo-lang-common==9.
|
|
15
|
-
Requires-Dist: hypergumbo-lang-extended1==9.
|
|
16
|
-
Requires-Dist: hypergumbo-lang-mainstream==9.
|
|
13
|
+
Requires-Dist: hypergumbo-core==9.2.0
|
|
14
|
+
Requires-Dist: hypergumbo-lang-common==9.2.0
|
|
15
|
+
Requires-Dist: hypergumbo-lang-extended1==9.2.0
|
|
16
|
+
Requires-Dist: hypergumbo-lang-mainstream==9.2.0
|
|
17
17
|
Provides-Extra: dev
|
|
18
18
|
Requires-Dist: bandit~=1.9.3; extra == 'dev'
|
|
19
19
|
Requires-Dist: check-jsonschema~=0.36.1; extra == 'dev'
|
|
@@ -27,9 +27,9 @@ Requires-Dist: yamllint~=1.38.0; extra == 'dev'
|
|
|
27
27
|
Provides-Extra: embeddings
|
|
28
28
|
Requires-Dist: sentence-transformers~=5.7; extra == 'embeddings'
|
|
29
29
|
Provides-Extra: rust-analyzer
|
|
30
|
-
Requires-Dist: hypergumbo-lang-rust-analyzer==9.
|
|
30
|
+
Requires-Dist: hypergumbo-lang-rust-analyzer==9.2.0; extra == 'rust-analyzer'
|
|
31
31
|
Provides-Extra: scip-python
|
|
32
|
-
Requires-Dist: hypergumbo-lang-scip-python==9.
|
|
32
|
+
Requires-Dist: hypergumbo-lang-scip-python==9.2.0; extra == 'scip-python'
|
|
33
33
|
Description-Content-Type: text/markdown
|
|
34
34
|
|
|
35
35
|
<!-- SPDX-License-Identifier: AGPL-3.0-or-later -->
|
|
@@ -153,7 +153,7 @@ Read this before installing hypergumbo on a machine you care about. Each stateme
|
|
|
153
153
|
**What a default run does** (`hypergumbo .`, the same as `hypergumbo sketch .`):
|
|
154
154
|
|
|
155
155
|
- Reads the files of the repository you point it at.
|
|
156
|
-
- Writes its results under `~/.cache/hypergumbo/` (`$XDG_CACHE_HOME/hypergumbo/` if set), plus short-lived files in the system temp directory. It does not write into the repository it analyses ([ADR-0047](https://github.com/iterabloom/hypergumbo/blob/dev/docs/adr/0047-catalogue-scope-and-user-visible-homes.md) ruling 9). The exceptions are an `-o` path you choose inside it, and the case in the last bullet of this list.
|
|
156
|
+
- Writes its results under `~/.cache/hypergumbo/` (`$XDG_CACHE_HOME/hypergumbo/` if set), plus short-lived files in the system temp directory. It does not write into the repository it analyses ([ADR-0047](https://github.com/iterabloom/hypergumbo/blob/dev/docs/adr/0047-catalogue-scope-and-user-visible-homes.md) ruling 9). The exceptions are an `-o` path you choose inside it, and the case in the last bullet of this list. One command writes more than the file you name: `survey --out X.json` also writes `X.4k.json`, `X.16k.json` and `X.64k.json` (the same map compacted to those token budgets) and a directory `X.slices/` holding one slice per detected route handler, all beside `X.json`. `--no-sketch-fan-out --no-handler-slices` suppresses them, so exactly one file is written.
|
|
157
157
|
- Runs `git` read-only (`rev-parse HEAD`, `rev-list --max-parents=0 HEAD`, `config --get remote.origin.url`). If they are installed, it also runs `gitleaks` to scan for secrets and `rust-analyzer --version`; the version check does not index anything.
|
|
158
158
|
- Makes no network connection, unless you installed embeddings support (`install-embeddings`, `add-extras`, or `pip install 'hypergumbo[embeddings]'`). In that case the first sketch downloads two models (`microsoft/unixcoder-base` and `nomic-ai/modernbert-embed-base`) from huggingface.co into `~/.cache/huggingface/` (or `$HF_HOME`). Once both models are cached, later runs work offline. To stop the download, set `HF_HUB_OFFLINE=1`; the sketch then runs without embeddings. SECURITY.md's network claim still says downloads happen only through `install-embeddings`. That claim is wrong, and INV-gujus tracks it.
|
|
159
159
|
- If a directory `~/hypergumbo` exists (for example, a clone of this repository), an interactive run asks once whether to write example config files into `~/hypergumbo/.hypergumbo-examples/`. It records your answer in `~/.local/state/hypergumbo/offers.json`. If you answer yes while analysing `~/hypergumbo` itself, that is a write into the analysed repository (INV-kuroj).
|
|
@@ -182,6 +182,7 @@ Read this before installing hypergumbo on a machine you care about. Each stateme
|
|
|
182
182
|
|
|
183
183
|
1. **Self-claims.** [SECURITY.md](https://github.com/iterabloom/hypergumbo/blob/dev/SECURITY.md) lists 18 claims about what each group of commands may touch, and hypergumbo checks them by analysing its own source (`scripts/check-self-claims`). All 18 currently read `confirmed_with_caveats`. That means the analysis found no contradiction where it could see, and it names what it could not see: programs it launches, statements the repository made about itself, and the 70.6% of method calls whose receiver type it could not work out. In auditing terms this is a qualified opinion, not proof ([ADR-0016](https://github.com/iterabloom/hypergumbo/blob/dev/docs/adr/0016-io-boundary-analysis.md)). It covers the `hypergumbo` command only.
|
|
184
184
|
2. **I/O allowlist.** `scripts/check-io-allowlist` is a separate scan that uses only the standard library. It finds every place in `packages/*/src`, tracker included, that writes or deletes a file, starts a process, opens a connection or a server, or loads a model. Each one must be listed with its purpose in [`docs/hypergumbo.io-allowlist.yaml`](https://github.com/iterabloom/hypergumbo/blob/dev/docs/hypergumbo.io-allowlist.yaml), and an unlisted one fails CI. The gate proves that every such place was reviewed. It does not prove that any of them is safe.
|
|
185
|
+
3. **Observed I/O manifest.** At every release, `scripts/io-manifest` runs the installed `hypergumbo` over six pinned open-source repositories under `strace` and records every file write, delete and rename, every program started and every connection attempted, reduced to fifteen lines ([`docs/io-manifest/expected.txt`](https://github.com/iterabloom/hypergumbo/blob/dev/docs/io-manifest/expected.txt)). A line not seen at the previous release fails the build, and a write into the analysed repository or a network connection fails it regardless. This is the only one of the three checks that sees what dependencies and compiled extensions do, because it watches the process rather than reading the Python. It covers a default run with no extras installed, on those six repositories: the "every scenario we exercised" statement, not "every scenario".
|
|
185
186
|
|
|
186
187
|
The allowlist gate currently records these open findings:
|
|
187
188
|
|
|
@@ -239,6 +240,7 @@ Useful flags:
|
|
|
239
240
|
hypergumbo . -x # exclude test files (cleaner output)
|
|
240
241
|
hypergumbo . --no-source # omit source code (included by default)
|
|
241
242
|
hypergumbo . --no-progress # hide progress indicator (sketch/run only; on by default)
|
|
243
|
+
HG_HEARTBEAT=10 hypergumbo . # stack heartbeat every 10s (default 30; 0 disables)
|
|
242
244
|
hypergumbo io-boundaries --show-external-potential # opt into the (large) external-potential bucket (text output)
|
|
243
245
|
hypergumbo --help --all # comprehensive help for all commands
|
|
244
246
|
```
|
|
@@ -119,7 +119,7 @@ Read this before installing hypergumbo on a machine you care about. Each stateme
|
|
|
119
119
|
**What a default run does** (`hypergumbo .`, the same as `hypergumbo sketch .`):
|
|
120
120
|
|
|
121
121
|
- Reads the files of the repository you point it at.
|
|
122
|
-
- Writes its results under `~/.cache/hypergumbo/` (`$XDG_CACHE_HOME/hypergumbo/` if set), plus short-lived files in the system temp directory. It does not write into the repository it analyses ([ADR-0047](https://github.com/iterabloom/hypergumbo/blob/dev/docs/adr/0047-catalogue-scope-and-user-visible-homes.md) ruling 9). The exceptions are an `-o` path you choose inside it, and the case in the last bullet of this list.
|
|
122
|
+
- Writes its results under `~/.cache/hypergumbo/` (`$XDG_CACHE_HOME/hypergumbo/` if set), plus short-lived files in the system temp directory. It does not write into the repository it analyses ([ADR-0047](https://github.com/iterabloom/hypergumbo/blob/dev/docs/adr/0047-catalogue-scope-and-user-visible-homes.md) ruling 9). The exceptions are an `-o` path you choose inside it, and the case in the last bullet of this list. One command writes more than the file you name: `survey --out X.json` also writes `X.4k.json`, `X.16k.json` and `X.64k.json` (the same map compacted to those token budgets) and a directory `X.slices/` holding one slice per detected route handler, all beside `X.json`. `--no-sketch-fan-out --no-handler-slices` suppresses them, so exactly one file is written.
|
|
123
123
|
- Runs `git` read-only (`rev-parse HEAD`, `rev-list --max-parents=0 HEAD`, `config --get remote.origin.url`). If they are installed, it also runs `gitleaks` to scan for secrets and `rust-analyzer --version`; the version check does not index anything.
|
|
124
124
|
- Makes no network connection, unless you installed embeddings support (`install-embeddings`, `add-extras`, or `pip install 'hypergumbo[embeddings]'`). In that case the first sketch downloads two models (`microsoft/unixcoder-base` and `nomic-ai/modernbert-embed-base`) from huggingface.co into `~/.cache/huggingface/` (or `$HF_HOME`). Once both models are cached, later runs work offline. To stop the download, set `HF_HUB_OFFLINE=1`; the sketch then runs without embeddings. SECURITY.md's network claim still says downloads happen only through `install-embeddings`. That claim is wrong, and INV-gujus tracks it.
|
|
125
125
|
- If a directory `~/hypergumbo` exists (for example, a clone of this repository), an interactive run asks once whether to write example config files into `~/hypergumbo/.hypergumbo-examples/`. It records your answer in `~/.local/state/hypergumbo/offers.json`. If you answer yes while analysing `~/hypergumbo` itself, that is a write into the analysed repository (INV-kuroj).
|
|
@@ -148,6 +148,7 @@ Read this before installing hypergumbo on a machine you care about. Each stateme
|
|
|
148
148
|
|
|
149
149
|
1. **Self-claims.** [SECURITY.md](https://github.com/iterabloom/hypergumbo/blob/dev/SECURITY.md) lists 18 claims about what each group of commands may touch, and hypergumbo checks them by analysing its own source (`scripts/check-self-claims`). All 18 currently read `confirmed_with_caveats`. That means the analysis found no contradiction where it could see, and it names what it could not see: programs it launches, statements the repository made about itself, and the 70.6% of method calls whose receiver type it could not work out. In auditing terms this is a qualified opinion, not proof ([ADR-0016](https://github.com/iterabloom/hypergumbo/blob/dev/docs/adr/0016-io-boundary-analysis.md)). It covers the `hypergumbo` command only.
|
|
150
150
|
2. **I/O allowlist.** `scripts/check-io-allowlist` is a separate scan that uses only the standard library. It finds every place in `packages/*/src`, tracker included, that writes or deletes a file, starts a process, opens a connection or a server, or loads a model. Each one must be listed with its purpose in [`docs/hypergumbo.io-allowlist.yaml`](https://github.com/iterabloom/hypergumbo/blob/dev/docs/hypergumbo.io-allowlist.yaml), and an unlisted one fails CI. The gate proves that every such place was reviewed. It does not prove that any of them is safe.
|
|
151
|
+
3. **Observed I/O manifest.** At every release, `scripts/io-manifest` runs the installed `hypergumbo` over six pinned open-source repositories under `strace` and records every file write, delete and rename, every program started and every connection attempted, reduced to fifteen lines ([`docs/io-manifest/expected.txt`](https://github.com/iterabloom/hypergumbo/blob/dev/docs/io-manifest/expected.txt)). A line not seen at the previous release fails the build, and a write into the analysed repository or a network connection fails it regardless. This is the only one of the three checks that sees what dependencies and compiled extensions do, because it watches the process rather than reading the Python. It covers a default run with no extras installed, on those six repositories: the "every scenario we exercised" statement, not "every scenario".
|
|
151
152
|
|
|
152
153
|
The allowlist gate currently records these open findings:
|
|
153
154
|
|
|
@@ -205,6 +206,7 @@ Useful flags:
|
|
|
205
206
|
hypergumbo . -x # exclude test files (cleaner output)
|
|
206
207
|
hypergumbo . --no-source # omit source code (included by default)
|
|
207
208
|
hypergumbo . --no-progress # hide progress indicator (sketch/run only; on by default)
|
|
209
|
+
HG_HEARTBEAT=10 hypergumbo . # stack heartbeat every 10s (default 30; 0 disables)
|
|
208
210
|
hypergumbo io-boundaries --show-external-potential # opt into the (large) external-potential bucket (text output)
|
|
209
211
|
hypergumbo --help --all # comprehensive help for all commands
|
|
210
212
|
```
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "hypergumbo"
|
|
7
|
-
version = "9.
|
|
7
|
+
version = "9.2.0"
|
|
8
8
|
description = "Local-first repo behavior map generator"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -19,10 +19,10 @@ classifiers = [
|
|
|
19
19
|
]
|
|
20
20
|
dependencies = [
|
|
21
21
|
# Meta-package that pulls in all hypergumbo components
|
|
22
|
-
"hypergumbo-core==9.
|
|
23
|
-
"hypergumbo-lang-mainstream==9.
|
|
24
|
-
"hypergumbo-lang-common==9.
|
|
25
|
-
"hypergumbo-lang-extended1==9.
|
|
22
|
+
"hypergumbo-core==9.2.0",
|
|
23
|
+
"hypergumbo-lang-mainstream==9.2.0",
|
|
24
|
+
"hypergumbo-lang-common==9.2.0",
|
|
25
|
+
"hypergumbo-lang-extended1==9.2.0",
|
|
26
26
|
]
|
|
27
27
|
|
|
28
28
|
[project.optional-dependencies]
|
|
@@ -47,13 +47,13 @@ embeddings = [
|
|
|
47
47
|
# Without this extra, --backend rust-analyzer hits the BUG-06 runtime gate.
|
|
48
48
|
# Install with: pipx install 'hypergumbo[rust-analyzer]'
|
|
49
49
|
rust-analyzer = [
|
|
50
|
-
"hypergumbo-lang-rust-analyzer==9.
|
|
50
|
+
"hypergumbo-lang-rust-analyzer==9.2.0",
|
|
51
51
|
]
|
|
52
52
|
# SCIP-backed Python analysis via scip-python / pyright (WI-nanom). Executes
|
|
53
53
|
# nothing from the analysed repository; the producer itself is an npm package:
|
|
54
54
|
# npm install -g @sourcegraph/scip-python@0.6.6
|
|
55
55
|
scip-python = [
|
|
56
|
-
"hypergumbo-lang-scip-python==9.
|
|
56
|
+
"hypergumbo-lang-scip-python==9.2.0",
|
|
57
57
|
]
|
|
58
58
|
|
|
59
59
|
[project.scripts]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|