open-interpretability 0.0.20__py3-none-any.whl

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 (256) hide show
  1. open_interpretability-0.0.20.dist-info/METADATA +157 -0
  2. open_interpretability-0.0.20.dist-info/RECORD +256 -0
  3. open_interpretability-0.0.20.dist-info/WHEEL +4 -0
  4. open_interpretability-0.0.20.dist-info/entry_points.txt +2 -0
  5. open_interpretability-0.0.20.dist-info/licenses/LICENSE +21 -0
  6. openinterp/__init__.py +6 -0
  7. openinterp/agents/__init__.py +25 -0
  8. openinterp/agents/base.py +229 -0
  9. openinterp/agents/judge.py +149 -0
  10. openinterp/agents/proposer.py +471 -0
  11. openinterp/agents/proposer_profiles.py +79 -0
  12. openinterp/agents/review_measurements.py +173 -0
  13. openinterp/agents/reviewer.py +498 -0
  14. openinterp/agreement.py +63 -0
  15. openinterp/audit_options.py +79 -0
  16. openinterp/baseline.py +254 -0
  17. openinterp/benchmark.py +450 -0
  18. openinterp/blends.py +239 -0
  19. openinterp/builder/__init__.py +6 -0
  20. openinterp/builder/agents.py +260 -0
  21. openinterp/builder/aligned.py +41 -0
  22. openinterp/builder/charts.py +411 -0
  23. openinterp/builder/circuit_pages.py +37 -0
  24. openinterp/builder/circuits.py +264 -0
  25. openinterp/builder/compiler.py +495 -0
  26. openinterp/builder/corpora.py +98 -0
  27. openinterp/builder/coverage.py +46 -0
  28. openinterp/builder/dashboard.py +255 -0
  29. openinterp/builder/disk_memo.py +65 -0
  30. openinterp/builder/experiment.py +105 -0
  31. openinterp/builder/heat.py +121 -0
  32. openinterp/builder/hrefs.py +71 -0
  33. openinterp/builder/learned_baseline.py +204 -0
  34. openinterp/builder/model_facts.py +138 -0
  35. openinterp/builder/neuronpedia_export.py +107 -0
  36. openinterp/builder/parallel.py +100 -0
  37. openinterp/builder/parquet_export.py +458 -0
  38. openinterp/builder/pieces.py +127 -0
  39. openinterp/builder/pii.py +211 -0
  40. openinterp/builder/registry_stats.py +144 -0
  41. openinterp/builder/research.py +109 -0
  42. openinterp/builder/sections.py +28 -0
  43. openinterp/builder/significance.py +103 -0
  44. openinterp/builder/sister_graph.py +180 -0
  45. openinterp/builder/standing.py +185 -0
  46. openinterp/builder/statuses.py +34 -0
  47. openinterp/builder/stopped.py +91 -0
  48. openinterp/builder/stops.py +30 -0
  49. openinterp/builder/superpositions.py +102 -0
  50. openinterp/builder/templates/_agent_role_cells.html +9 -0
  51. openinterp/builder/templates/_causal_chart.html +67 -0
  52. openinterp/builder/templates/_circuit.html +8 -0
  53. openinterp/builder/templates/_dashboard.html +133 -0
  54. openinterp/builder/templates/_experiment.html +500 -0
  55. openinterp/builder/templates/_macros.html +82 -0
  56. openinterp/builder/templates/_patchscope.html +33 -0
  57. openinterp/builder/templates/_prior_art.html +24 -0
  58. openinterp/builder/templates/_specificity.html +21 -0
  59. openinterp/builder/templates/_steering.html +34 -0
  60. openinterp/builder/templates/_superposition.html +62 -0
  61. openinterp/builder/templates/_vocab_chart.html +88 -0
  62. openinterp/builder/templates/_wiring.html +44 -0
  63. openinterp/builder/templates/about.html +95 -0
  64. openinterp/builder/templates/agent.html +69 -0
  65. openinterp/builder/templates/agents.html +80 -0
  66. openinterp/builder/templates/base.html +103 -0
  67. openinterp/builder/templates/circuit.html +64 -0
  68. openinterp/builder/templates/circuits.html +46 -0
  69. openinterp/builder/templates/experiment.html +21 -0
  70. openinterp/builder/templates/hub.html +16 -0
  71. openinterp/builder/templates/index.html +387 -0
  72. openinterp/builder/templates/layer.html +69 -0
  73. openinterp/builder/templates/learned-baseline.html +44 -0
  74. openinterp/builder/templates/model.html +151 -0
  75. openinterp/builder/templates/models.html +47 -0
  76. openinterp/builder/templates/neuron.html +234 -0
  77. openinterp/builder/templates/paper.html +39 -0
  78. openinterp/builder/templates/redirect.html +1 -0
  79. openinterp/builder/templates/research.html +31 -0
  80. openinterp/builder/templates/user.html +54 -0
  81. openinterp/builder/templates/users.html +39 -0
  82. openinterp/builder/templates/wiki/experiment.md +271 -0
  83. openinterp/builder/templates/wiki/index.md +32 -0
  84. openinterp/builder/templates/wiki/neuron.md +30 -0
  85. openinterp/builder/templates/wiki/stop.md +36 -0
  86. openinterp/builder/tree.py +470 -0
  87. openinterp/builder/users.py +142 -0
  88. openinterp/builder/wiki.py +427 -0
  89. openinterp/checks.py +429 -0
  90. openinterp/cli.py +494 -0
  91. openinterp/cli_baseline.py +332 -0
  92. openinterp/cli_benchmark.py +300 -0
  93. openinterp/cli_build.py +128 -0
  94. openinterp/cli_check.py +51 -0
  95. openinterp/cli_concepts.py +76 -0
  96. openinterp/cli_corpus.py +252 -0
  97. openinterp/cli_costs.py +257 -0
  98. openinterp/cli_coverage.py +76 -0
  99. openinterp/cli_crossref.py +86 -0
  100. openinterp/cli_errata.py +142 -0
  101. openinterp/cli_evidence.py +495 -0
  102. openinterp/cli_evidence_store.py +93 -0
  103. openinterp/cli_explain.py +101 -0
  104. openinterp/cli_loop.py +125 -0
  105. openinterp/cli_memory.py +28 -0
  106. openinterp/cli_neuronpedia.py +175 -0
  107. openinterp/cli_pause.py +45 -0
  108. openinterp/cli_pole_effects.py +133 -0
  109. openinterp/cli_probing.py +119 -0
  110. openinterp/cli_registry.py +348 -0
  111. openinterp/cli_reproduce.py +446 -0
  112. openinterp/cli_review.py +302 -0
  113. openinterp/cli_scan.py +223 -0
  114. openinterp/cli_score.py +446 -0
  115. openinterp/cli_sisters.py +86 -0
  116. openinterp/cli_submission.py +217 -0
  117. openinterp/cli_superpositions.py +118 -0
  118. openinterp/cli_wiring.py +54 -0
  119. openinterp/codeid.py +73 -0
  120. openinterp/concepts.py +400 -0
  121. openinterp/core/__init__.py +59 -0
  122. openinterp/core/agent_names.py +76 -0
  123. openinterp/core/attribution.py +101 -0
  124. openinterp/core/cache_dirs.py +15 -0
  125. openinterp/core/causal.py +82 -0
  126. openinterp/core/confounds.py +103 -0
  127. openinterp/core/contributors.py +26 -0
  128. openinterp/core/corpora.py +126 -0
  129. openinterp/core/costs.py +430 -0
  130. openinterp/core/draws.py +109 -0
  131. openinterp/core/errata.py +244 -0
  132. openinterp/core/evidence.py +160 -0
  133. openinterp/core/examples.py +93 -0
  134. openinterp/core/exceptions.py +29 -0
  135. openinterp/core/explanation.py +130 -0
  136. openinterp/core/fence.py +42 -0
  137. openinterp/core/heavy_lock.py +114 -0
  138. openinterp/core/identifiers.py +198 -0
  139. openinterp/core/isolation.py +149 -0
  140. openinterp/core/ledger.py +130 -0
  141. openinterp/core/licenses.py +28 -0
  142. openinterp/core/manifold.py +117 -0
  143. openinterp/core/partners.py +32 -0
  144. openinterp/core/patchscope.py +59 -0
  145. openinterp/core/paths.py +40 -0
  146. openinterp/core/pause.py +96 -0
  147. openinterp/core/pricing.py +178 -0
  148. openinterp/core/prior_art.py +44 -0
  149. openinterp/core/probing.py +146 -0
  150. openinterp/core/profiles.py +221 -0
  151. openinterp/core/project.py +28 -0
  152. openinterp/core/run_environment.py +38 -0
  153. openinterp/core/schemas.py +484 -0
  154. openinterp/core/specificity.py +49 -0
  155. openinterp/core/stats.py +172 -0
  156. openinterp/core/steering.py +49 -0
  157. openinterp/core/strict.py +19 -0
  158. openinterp/core/takedowns.py +136 -0
  159. openinterp/core/transcripts.py +130 -0
  160. openinterp/core/wiring.py +80 -0
  161. openinterp/corpus.py +476 -0
  162. openinterp/corpus_cache.py +145 -0
  163. openinterp/corpus_layouts.py +108 -0
  164. openinterp/corpus_presets.py +168 -0
  165. openinterp/corpus_rebuild.py +93 -0
  166. openinterp/coverage.py +155 -0
  167. openinterp/crossref.py +442 -0
  168. openinterp/data/__init__.py +9 -0
  169. openinterp/data/offensive_words.txt +58 -0
  170. openinterp/data/public_suffix_list.dat +15771 -0
  171. openinterp/data/sample_corpus.txt +40 -0
  172. openinterp/draw_steps.py +359 -0
  173. openinterp/errata_checks.py +129 -0
  174. openinterp/evidence.py +462 -0
  175. openinterp/evidence_branch.py +119 -0
  176. openinterp/evidence_lenses.py +75 -0
  177. openinterp/experiment_loop.py +357 -0
  178. openinterp/explain.py +252 -0
  179. openinterp/half_precision.py +79 -0
  180. openinterp/harness/__init__.py +37 -0
  181. openinterp/harness/ane/__init__.py +9 -0
  182. openinterp/harness/ane/backend.py +324 -0
  183. openinterp/harness/ane/cache.py +276 -0
  184. openinterp/harness/ane/chunks.py +163 -0
  185. openinterp/harness/ane/convert.py +116 -0
  186. openinterp/harness/ane/forward.py +258 -0
  187. openinterp/harness/ane/qualified.py +40 -0
  188. openinterp/harness/annotations.py +329 -0
  189. openinterp/harness/attribution.py +96 -0
  190. openinterp/harness/causal.py +264 -0
  191. openinterp/harness/confounds.py +184 -0
  192. openinterp/harness/covariance.py +301 -0
  193. openinterp/harness/crossref.py +195 -0
  194. openinterp/harness/cuda_devices.py +88 -0
  195. openinterp/harness/dead.py +124 -0
  196. openinterp/harness/devices.py +401 -0
  197. openinterp/harness/dictionaries.py +496 -0
  198. openinterp/harness/dreaming.py +116 -0
  199. openinterp/harness/environment.py +64 -0
  200. openinterp/harness/explanation_scores.py +371 -0
  201. openinterp/harness/features.py +276 -0
  202. openinterp/harness/first_position.py +137 -0
  203. openinterp/harness/heads.py +226 -0
  204. openinterp/harness/hooks.py +499 -0
  205. openinterp/harness/input_attribution.py +367 -0
  206. openinterp/harness/jlens.py +183 -0
  207. openinterp/harness/layer_cache.py +301 -0
  208. openinterp/harness/layer_major.py +274 -0
  209. openinterp/harness/lookahead.py +93 -0
  210. openinterp/harness/manifold.py +200 -0
  211. openinterp/harness/memory.py +471 -0
  212. openinterp/harness/moe.py +134 -0
  213. openinterp/harness/patcher.py +322 -0
  214. openinterp/harness/patchscope.py +177 -0
  215. openinterp/harness/probing.py +383 -0
  216. openinterp/harness/scan.py +462 -0
  217. openinterp/harness/scan_backend.py +201 -0
  218. openinterp/harness/sister_passes.py +463 -0
  219. openinterp/harness/sisters.py +363 -0
  220. openinterp/harness/sites.py +101 -0
  221. openinterp/harness/specificity.py +107 -0
  222. openinterp/harness/steering.py +159 -0
  223. openinterp/harness/superpositions.py +116 -0
  224. openinterp/harness/units.py +203 -0
  225. openinterp/harness/wiring.py +432 -0
  226. openinterp/harness/wiring_activations.py +285 -0
  227. openinterp/langid.py +73 -0
  228. openinterp/names.py +129 -0
  229. openinterp/neuronpedia_baseline.py +88 -0
  230. openinterp/neuronpedia_review.py +148 -0
  231. openinterp/planner.py +466 -0
  232. openinterp/planner_effects.py +89 -0
  233. openinterp/planner_heads.py +92 -0
  234. openinterp/planner_models.py +174 -0
  235. openinterp/planner_sisters.py +122 -0
  236. openinterp/planner_states.py +57 -0
  237. openinterp/planner_superpositions.py +114 -0
  238. openinterp/pole_effects.py +102 -0
  239. openinterp/prior_art.py +143 -0
  240. openinterp/reproduce.py +450 -0
  241. openinterp/revision.py +45 -0
  242. openinterp/runner_cache.py +35 -0
  243. openinterp/score_controls.py +169 -0
  244. openinterp/sensitive.py +243 -0
  245. openinterp/show.py +236 -0
  246. openinterp/signing.py +209 -0
  247. openinterp/sisters.py +476 -0
  248. openinterp/superposition_finders.py +225 -0
  249. openinterp/sync/__init__.py +5 -0
  250. openinterp/sync/r2.py +280 -0
  251. openinterp/syntax.py +399 -0
  252. openinterp/takedown_checks.py +76 -0
  253. openinterp/toxicity.py +158 -0
  254. openinterp/verdict_regression.py +79 -0
  255. openinterp/wiring_backfill.py +170 -0
  256. openinterp/wordnet.py +362 -0
@@ -0,0 +1,157 @@
1
+ Metadata-Version: 2.5
2
+ Name: open-interpretability
3
+ Version: 0.0.20
4
+ Summary: Open Interpretability: an agent-audited mechanistic interpretability registry for native neurons in open-weight models.
5
+ Project-URL: Homepage, https://open-interpretability.com/
6
+ Project-URL: Repository, https://github.com/8W9aG/openinterpretability
7
+ Author-email: Will Sackfield <will.sackfield@gmail.com>
8
+ License-Expression: MIT
9
+ License-File: LICENSE
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
12
+ Requires-Python: >=3.11
13
+ Requires-Dist: accelerate>=0.30.0
14
+ Requires-Dist: boto3>=1.34.0
15
+ Requires-Dist: click>=8.1.0
16
+ Requires-Dist: coremltools>=9.0; sys_platform == 'darwin' and platform_machine == 'arm64'
17
+ Requires-Dist: duckdb>=1.0.0
18
+ Requires-Dist: fasttext-predict>=0.9.2
19
+ Requires-Dist: instructor>=1.3.0
20
+ Requires-Dist: jinja2>=3.1.3
21
+ Requires-Dist: litellm>=1.40.0
22
+ Requires-Dist: magika<2,>=1.0.3
23
+ Requires-Dist: markdown-it-py>=4.0
24
+ Requires-Dist: nltk>=3.8
25
+ Requires-Dist: presidio-analyzer>=2.2
26
+ Requires-Dist: pyarrow>=26.0.1
27
+ Requires-Dist: pydantic>=2.7.0
28
+ Requires-Dist: spacy-curated-transformers<1,>=0.3
29
+ Requires-Dist: tldextract>=5.1
30
+ Requires-Dist: torch>=2.2.0
31
+ Requires-Dist: transformers>=5.22.2
32
+ Requires-Dist: tree-sitter-bash>=0.25.1
33
+ Requires-Dist: tree-sitter-c-sharp>=0.23.5
34
+ Requires-Dist: tree-sitter-c>=0.24.2
35
+ Requires-Dist: tree-sitter-cpp>=0.23.4
36
+ Requires-Dist: tree-sitter-go>=0.25.0
37
+ Requires-Dist: tree-sitter-haskell>=0.24.1
38
+ Requires-Dist: tree-sitter-java>=0.23.5
39
+ Requires-Dist: tree-sitter-javascript>=0.25.0
40
+ Requires-Dist: tree-sitter-lua>=0.5.0
41
+ Requires-Dist: tree-sitter-php>=0.25.1
42
+ Requires-Dist: tree-sitter-python>=0.25.0
43
+ Requires-Dist: tree-sitter-ruby>=0.23.1
44
+ Requires-Dist: tree-sitter-rust>=0.24.2
45
+ Requires-Dist: tree-sitter-scala>=0.26.11
46
+ Requires-Dist: tree-sitter-typescript>=0.23.2
47
+ Requires-Dist: tree-sitter>=0.26.1
48
+ Provides-Extra: site
49
+ Requires-Dist: pagefind[bin]>=1.3.0; extra == 'site'
50
+ Description-Content-Type: text/markdown
51
+
52
+ # Open Interpretability
53
+
54
+ [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.24150022.svg)](https://doi.org/10.5281/zenodo.24150022)
55
+ [![PyPI](https://img.shields.io/pypi/v/open-interpretability.svg)](https://pypi.org/project/open-interpretability/)
56
+
57
+ `openinterp` is an open, agent-audited mechanistic interpretability registry and testing protocol for open-weight foundation models (Llama, Qwen, Mistral, …).
58
+
59
+ The registry is published at **[open-interpretability.com](https://open-interpretability.com/)**: every experiment, unit, model and paper, with search and the Parquet export.
60
+
61
+ Rather than cataloging the latents of learned SAE dictionaries, this project audits **native model weights directly**. Each entry in the registry is one *pole* (positive or negative half) of one MLP neuron. It starts from a working hypothesis, not an established finding. Goodfire's essay [*Neural Networks Are Already Clean*](https://already-clean.goodfire.com/) (Cammarata, 2026) argues that most apparent polysemanticity in native neurons comes from solvable tooling problems rather than superposition. Its technical companion paper has not been published, so the registry tests that claim one pole at a time rather than assuming it. A pole that resists a clean explanation is a result too.
62
+
63
+ ## Quickstart
64
+
65
+ An experiment takes one neuron, proposes what it does, has a *different* model try to break that claim, and posts the result, whatever it is. A hypothesis that fails is a result too. The shortest path is to let Claude Code drive the whole loop. It needs no API keys: Claude Code's own subagents write the proposal and the review.
66
+
67
+ ### What you need
68
+
69
+ | Tool | What it is for | Needed |
70
+ | --- | --- | --- |
71
+ | [Git](https://git-scm.com/) and a GitHub account | Fork the repo, and push your experiment as a pull request | Always |
72
+ | [Python](https://www.python.org/) 3.11+ | Runs `open-interpretability` and the model | Always |
73
+ | [uv](https://docs.astral.sh/uv/) | Installs the dependencies into `.venv` and runs the commands (`uv run …`) | Always |
74
+ | [GitHub CLI](https://cli.github.com/) (`gh`) | Opens the draft PR that claims a neuron. The planner also reads open PRs with it, to skip neurons that others have claimed | To contribute. Without it, the planner can't see claims, and you open the PR on github.com |
75
+ | [Claude Code](https://claude.com/claude-code) | Drives the experiment, and its subagents answer as proposer, reviewer and judge | To run the loop. Also to run it yourself with no API keys |
76
+ | An LLM API key (any [LiteLLM](https://docs.litellm.ai/) provider) | Proposer and reviewer through an API instead of Claude Code | Only to run it yourself through an API |
77
+
78
+ Node.js is not needed: no step of the build uses it, and Claude Code's native installer doesn't need it either (only its npm install does). [Vale](https://vale.sh) is needed only for `make lint` and `make vale` when you change code.
79
+
80
+ A laptop CPU is enough. The default models are small (Qwen2.5-0.5B is about 1 GB, downloaded on first use). An 8 GB machine runs GPT-2 and Qwen2.5-0.5B, and Qwen2.5-1.5B needs 16 GB ([Memory](docs/experiments.md#memory)). The first scan also downloads about 1.5 GB of labelling models.
81
+
82
+ ### Run it
83
+
84
+ ```bash
85
+ gh repo fork 8W9aG/openinterpretability --clone # or fork on GitHub and git clone your fork
86
+ cd openinterpretability
87
+ claude "/loop /land-experiment"
88
+ ```
89
+
90
+ That is all. The loop runs one experiment after another until you stop it. Each one draws a neuron with `open-interpretability next` and claims it with a draft PR. It then scans the neuron, has one subagent propose a hypothesis and another review it, and posts the result. `uv run` installs the dependencies on first use. Each scan builds its own corpus. A scan takes about 10–15 minutes on CPU.
91
+
92
+ `land-experiment` merges a green PR only when it changes `wiki/` alone and you have write access. From a fork, it leaves each PR for a maintainer and goes on to the next experiment. To be credited, set `export OPENINTERP_CONTRIBUTOR=<your GitHub username>` (never an email) before you start Claude Code. For one experiment and no merge, start `claude` and ask: "Run the next experiment and open a PR with the result."
93
+
94
+ ### Or run it yourself
95
+
96
+ With API keys set for the proposer and the reviewer (e.g. `export ANTHROPIC_API_KEY=...` for the default proposer, `anthropic/claude-opus-5-5`, and `OPENAI_API_KEY` for the `openai/gpt-5` reviewer below):
97
+
98
+ ```bash
99
+ make install # creates .venv with everything
100
+ uv run open-interpretability next --steps # draws an experiment and prints every step as exact commands
101
+ uv run open-interpretability audit --model Qwen/Qwen2.5-0.5B --random --corpus corpus.jsonl
102
+ uv run open-interpretability verify --audit-file submissions/<…>.json --agent-model openai/gpt-5
103
+ ```
104
+
105
+ `audit` scans the neuron and asks the proposer for a hypothesis. `verify` has the reviewer write probes, measures them on the model, and writes the experiment under `wiki/experiments/`. Build `corpus.jsonl` first with the command in [The scan corpus](docs/experiments.md#the-scan-corpus).
106
+
107
+ Claim the neuron with a draft PR before the scan, so others don't draw it too (`next --steps` prints the commands). When it finishes, run `make check`, commit `wiki/` and mark the PR ready. A PR that changes only `wiki/` merges automatically when CI passes.
108
+
109
+ ### More detail
110
+
111
+ - [docs/experiments.md](docs/experiments.md): other LLMs, answer files without API keys, the scan corpus and caches, and loops and parallel sessions. Also attention heads and dictionary latents, contributing and credit, the skills, definitions and the models.
112
+ - [docs/benchmark.md](docs/benchmark.md): the public benchmark for explanation tools, and how to score an explainer on it.
113
+ - [docs/development.md](docs/development.md): make targets, what CI checks on a pull request, record signing, the code layout, and the static site and deploy.
114
+ - [docs/research-questions.md](docs/research-questions.md): the questions the project exists to answer, and how close the registry is to each.
115
+ - [docs/PROTOCOL.md](docs/PROTOCOL.md): how verdicts are decided.
116
+ - [docs/moe.md](docs/moe.md): how neurons in mixture-of-experts models will be audited. It is a decision, not built yet.
117
+ - [CONTRIBUTING.md](CONTRIBUTING.md): the ways to contribute, and the rules for pull requests and style.
118
+ - [SECURITY.md](SECURITY.md): how to report a leaked signing key, a way to get a false VERIFIED past CI, or another security problem. Report it privately, not in an issue.
119
+
120
+ ### Install the package
121
+
122
+ To run the pipeline without a clone, install it from PyPI. The command is `open-interpretability` (`openinterp` still works for now):
123
+
124
+ ```bash
125
+ pip install open-interpretability # add [site] to build the site's search index
126
+ uvx open-interpretability --help
127
+ ```
128
+
129
+ torch is installed from PyPI by default. For a CUDA build, add PyTorch's index, for example `--extra-index-url https://download.pytorch.org/whl/cu128`. For a smaller CPU-only build, use `--extra-index-url https://download.pytorch.org/whl/cpu`.
130
+
131
+ ## Protocol
132
+
133
+ Every claim is empirical and falsifiable:
134
+
135
+ 1. **Propose.** A submitting agent scans a corpus for the neuron pole's top-activating snippets. It then writes a hypothesis, says whether the pole is *retrospective* (reacts to tokens it has already read) or *lookahead* (prepares an upcoming token). It also supplies minimal-pair counterfactuals with predicted activation deltas.
136
+ 2. **Review.** A reviewer agent (ideally, but not necessarily, a different model from the proposer) writes 10–30 adversarial probes (30 by default). Two thirds are hard negatives (near-misses the hypothesis says should *not* fire), plus some positive holdouts. Every probe and counterfactual is then run through the real model. The verdict comes from those measurements and not from the reviewer's opinion, so anyone with the weights can reproduce it:
137
+ - balanced accuracy on hard negatives vs. positive holdouts, each gated separately, with near-duplicate probes counted once
138
+ - confound control: the hypothesis must match or beat token-identity, position and never-active baselines
139
+ - counterfactual Δ reproduction within a tolerance relative to the prediction
140
+ - lookahead consistency (the claimed mechanism compared with KL(clean ‖ pole-ablated) on next-token distributions)
141
+ - covariance: the most correlated same-layer neurons, and joint ablation with them to expose redundancy (recorded, not gated)
142
+ - causal sufficiency (clean → corrupted patching) and necessity (corrupted → clean resample ablation), recorded but not yet gated. Downstream MLP outputs are frozen to mitigate self-repair (the hydra effect). Each score is ranked against same-layer neurons that change as much between the pair
143
+ 3. **Publish.** Every experiment is compiled into a fully static site plus a Parquet registry, whatever its verdict. Null results are data too. Within each neuron, experiments are ordered by how *conclusive* their evidence is, in either direction (see `openinterp/builder/significance.py`). The output is hosted on Cloudflare R2 (zero egress) at [open-interpretability.com](https://open-interpretability.com/) and searched client-side with Pagefind and DuckDB-Wasm.
144
+
145
+ The full experimental protocol (roles, lifecycle, decision rule and reproducibility requirements) is in [docs/PROTOCOL.md](docs/PROTOCOL.md).
146
+
147
+ ## Licence
148
+
149
+ The code is under the MIT licence (`LICENSE`). The data (the records and pages under `wiki/` and the site built from them) is under CC-BY-4.0 (`wiki/LICENSE.md`). Corpus excerpts inside records keep their corpus's own terms, and model outputs are also subject to the model's terms.
150
+
151
+ ## Citing
152
+
153
+ To cite the registry or the package, use [CITATION.cff](CITATION.cff). GitHub shows it as "Cite this repository". The concept DOI, [10.5281/zenodo.24150022](https://doi.org/10.5281/zenodo.24150022), names every version and resolves to the latest. Each release is archived on Zenodo with its own DOI, so a citation can name an exact version.
154
+
155
+ ## Status
156
+
157
+ Early scaffold. `make sample-run` builds the site from six real experiments in `wiki/experiments/` (listed in the `Makefile`), imported with `open-interpretability wiki --import-dir`.
@@ -0,0 +1,256 @@
1
+ openinterp/__init__.py,sha256=9YMC9SnvnecfpnjD7QBEqrklvzKwQRmTydyulkePPvA,266
2
+ openinterp/agreement.py,sha256=MNNJJXiNi725sjZpI4sGLLnakOMqpFyM53M8HlydFW0,2658
3
+ openinterp/audit_options.py,sha256=QGqhyqx7WnzTunEKPYUnF6ceRGrdrRafviQnwtVnL0s,3151
4
+ openinterp/baseline.py,sha256=Xj_khz1LAwG3ISw7fWYRgmDBfjBdDsuAoiFu_XAfuho,9592
5
+ openinterp/benchmark.py,sha256=e68Bn3Ck5LfpcUvWiQX3-_NiPUERkX8LjYQ0qO40ThA,18410
6
+ openinterp/blends.py,sha256=aRmKHAsoNhyQKkiDGEON6GYNpVKr8VfBRcqMC7jQHR4,9242
7
+ openinterp/checks.py,sha256=FedHcVGx4wqiJ85KLVTi2oHXBdoMjvPekGhp6kse97M,18047
8
+ openinterp/cli.py,sha256=ZUJn6Uc8qjX5w9t_DL_K2mkO2ji3OBXCX_AOzhHSHFw,17990
9
+ openinterp/cli_baseline.py,sha256=xOfMvsFOo47tduL09LkLDchi_yPi0CYLKMmdYgl73Mc,13294
10
+ openinterp/cli_benchmark.py,sha256=MLoaIdqkgUQ8dhqHXa_FlP1KPFke0ua_xPnpk6ipXEM,12809
11
+ openinterp/cli_build.py,sha256=G1JHrDyypFkVmX6M8nJmuGKN9NvKPD-XGIP0uenb_cs,4659
12
+ openinterp/cli_check.py,sha256=K0BMn1ZNo9SSWjALo6-Hm9r-M9oclw6Dd9QaY5SpvpM,1973
13
+ openinterp/cli_concepts.py,sha256=u6WyuBrN8SE9brMphYpdg_ZjhpigaRr-yPkCb7a7V0s,3014
14
+ openinterp/cli_corpus.py,sha256=AIrS8TypAAlTHjF3RFy9bH6vW1jyc-exbAS5n94zbN8,9756
15
+ openinterp/cli_costs.py,sha256=RkogLmTP6IKAKgKIFEkGWWwPZPwqUgFvXUqrudcTllk,10774
16
+ openinterp/cli_coverage.py,sha256=u70W5CEn1VaYSUqJ5LMNZ06Dd6PN0p53icyu6l7Ga2g,3202
17
+ openinterp/cli_crossref.py,sha256=D1pvBgOYSamGa54uedHhmBem1d57WrBfuJUhBD5gFG0,3290
18
+ openinterp/cli_errata.py,sha256=BoAWDzZERr5JYYyIDRRRs8dSk83Wd1teFiLRZj7mYkY,6839
19
+ openinterp/cli_evidence.py,sha256=dAHgv8aQvbL9GpKf8aA5n07bGdESWlUj0jXvzeJfofE,19223
20
+ openinterp/cli_evidence_store.py,sha256=NxExiSrD_835-OshCmuICliCJ3XIeiMaOz3s9JQr6e0,3263
21
+ openinterp/cli_explain.py,sha256=21n0hTBtm8Tyj6d9EG4_xGpZ0XhmJ8Lz9mHf-HTcqug,4178
22
+ openinterp/cli_loop.py,sha256=Q6V6soCFAgfyklc1R5uZ98_Wcf0d7xwEFiAEbMvtcj4,4184
23
+ openinterp/cli_memory.py,sha256=-H98veXD2dmA6YMjYVVdP-kLXpm9EEys-j_8VrT4cHw,779
24
+ openinterp/cli_neuronpedia.py,sha256=09iPWp6q07JDk9bski5hiqAxBtBI0hOjPQMxflTIGxs,7178
25
+ openinterp/cli_pause.py,sha256=nVyzQ11xUQ7xr3RKR3X9EDYvLHaYIqArNpaY8eWyc9M,1446
26
+ openinterp/cli_pole_effects.py,sha256=X2YPo4e7D9NbNAnDNKruAxYx47ntc8-wwrHLv3e6pwE,4784
27
+ openinterp/cli_probing.py,sha256=6c_I9yekEyE6NSImwrCXDm1VnQv8JtBwWQFpsFkOad0,4571
28
+ openinterp/cli_registry.py,sha256=CxDehK7KtORRIK7rjyifqDl0tx1ejk5oftk9TdZQ5wI,12469
29
+ openinterp/cli_reproduce.py,sha256=bW9WnczX0Cn1wI4ihxZnaeepYzw2_jwc9uLjvRRN7Yc,17725
30
+ openinterp/cli_review.py,sha256=59_8M1-yg3Kye3gCuwfZnknXIf1TyxYvOSOwSTUZ6o0,12735
31
+ openinterp/cli_scan.py,sha256=VbC9ZXeqzzKNHmCjg447kFk_CrkjqG6QF610bIMVol0,8554
32
+ openinterp/cli_score.py,sha256=rtrXE26-UokjLqrEp7Xfv2q5HKG81LnaK0q1ndOogg4,17851
33
+ openinterp/cli_sisters.py,sha256=ItrcTMfU131E_Fe850UFT0Ep00ThI6pupQ6anNC1tQk,3249
34
+ openinterp/cli_submission.py,sha256=ypHt5LuRriCEFeqXUpdOl32bkw2eldX059-ktYMMLc4,8627
35
+ openinterp/cli_superpositions.py,sha256=L4jjXXNcMi62E9nb0wJ8QWy3urNb3vn_VlbgAsl-iwQ,5029
36
+ openinterp/cli_wiring.py,sha256=MpH6FbsjjgdKWN8Cy4ove7oAztzD7_V17MvS52JV_ms,1843
37
+ openinterp/codeid.py,sha256=aMRu4kNqEZ4Heb-QH9g_84IGPC5S2hNF40TzyS5jbXo,3311
38
+ openinterp/concepts.py,sha256=Lf5xtTzxOxEmDChnFaHdRbryxqfEsKXI6M1fugRVloM,15659
39
+ openinterp/corpus.py,sha256=qvvYQmaNtNWPtJ4X3HxKWE0P35D0pMi5c21ITNonyGI,19113
40
+ openinterp/corpus_cache.py,sha256=IxnJ22zc9WoNBu-bDxn_qh49BMcpzg7c55Fc8HITNhQ,5675
41
+ openinterp/corpus_layouts.py,sha256=HijQZWDacFgeMLVsC5FokllEbT3umzLTq_IuadZMxQQ,4739
42
+ openinterp/corpus_presets.py,sha256=Ig4iVYKG2G1-ujnv2UgO__AIyP6a_bl8FOCi5-_qfCM,9884
43
+ openinterp/corpus_rebuild.py,sha256=vx1sp0lBxMP0Bb5nviZLI3ornScM5IpnVyL3Aa17PAQ,3519
44
+ openinterp/coverage.py,sha256=guWtiSXWW6GTJKbL2RW5lU12W-2mWsItNOTXUPUEC24,6872
45
+ openinterp/crossref.py,sha256=4BTOd2BQ6GZl80yNR_4fRop1HHtSLmpQeJds3k8bW4A,17218
46
+ openinterp/draw_steps.py,sha256=14I8nckOKH3b4UFaDupRF9N4ypmV-GrvyloRfGt2Jp8,14723
47
+ openinterp/errata_checks.py,sha256=8q2J5ycdNVgXi6gJ8YLx6hekXjf8bmCRx_-SAWHndsI,5378
48
+ openinterp/evidence.py,sha256=citkAwavYHSa4GpeyvZS5MLMBeVf4VuWAy9QwpOMttA,19037
49
+ openinterp/evidence_branch.py,sha256=kxK32f-xN7lEdK9LPYtgk8VFGByvDN2HSDLUcxNF7sU,4863
50
+ openinterp/evidence_lenses.py,sha256=h0DpeABo27zwmJQL9wZZJOMTNnYbLDmVnud_2UCnGYo,3177
51
+ openinterp/experiment_loop.py,sha256=J4K8mI5t-GmGgvM4ziCAIXXXkAur4LwYI9nLOWJBNS4,13823
52
+ openinterp/explain.py,sha256=M2qGO2Wf8RfL4E2qoyE6G2keIMQ7EvEeb0WhXMOYFwk,10603
53
+ openinterp/half_precision.py,sha256=8unld4DSt80zxuDA3UWcRN450SIU1wtmPgZhFGcTuhY,2970
54
+ openinterp/langid.py,sha256=9aoErLAchTxydkfI8oWIQqoV3T2gmV-xUKk1B7uC-qQ,3039
55
+ openinterp/names.py,sha256=7pE1GXGs_JtoOufauQfGa8i7kCx8JCVcHU3sBIrF0PU,5076
56
+ openinterp/neuronpedia_baseline.py,sha256=jkhvCaBHEia8i_vCazO0628Xr63JmhiFz0yBgV0yrxI,4279
57
+ openinterp/neuronpedia_review.py,sha256=2r8mom1olcQIIr3YXkm29fOaR5tqATzDUabqRIF4Qgc,6282
58
+ openinterp/planner.py,sha256=Xpgy80Th1CTFk3_7jXwWHuQlQy-NXAOIZGhFOEC-9GU,19241
59
+ openinterp/planner_effects.py,sha256=_8wPFIXyJgaqYdZXDIbnswMqGqKAjzQzChsrQmuBPsw,3477
60
+ openinterp/planner_heads.py,sha256=-Turw86to6UYRaFbXG9erhjvANXMCAKzY07wOjR6UMo,3651
61
+ openinterp/planner_models.py,sha256=mW8_70M_gVS9mk3d7OyddXnjhguxd_rcTiKL2jPaiAw,7960
62
+ openinterp/planner_sisters.py,sha256=ev98_iMU6xzChdpHHY423HCHnflcsPhegcvmrWx8qqI,5093
63
+ openinterp/planner_states.py,sha256=isTq9CCx-jxLjO0TX77kY_ueE-IzcyC2j45GAcDQcA0,2399
64
+ openinterp/planner_superpositions.py,sha256=47eSwOjIo_DWxY4q5VdwLzWQZwODgI72m1QoTtGCbIE,4934
65
+ openinterp/pole_effects.py,sha256=t93vzbi5vE1DdFeDefUtRU3IAXZVbLBSD7fOMxrZ-b4,3949
66
+ openinterp/prior_art.py,sha256=12B_kfvTYVxnh3jJf2-eYb71nd9W9HeXfKUwKpZ7B_s,5726
67
+ openinterp/reproduce.py,sha256=TjZvS6uPtyYkmC4X9TCbsurMF8j5EMyB9yyVE5Hv3ZU,20129
68
+ openinterp/revision.py,sha256=ADuamT3Z6yOX_yuq7uJBEaam4gpvJ2QdU0O4Cu91DvU,2030
69
+ openinterp/runner_cache.py,sha256=ttiYcvLEz62LP_YVAXUuq2X1I8V5D1L7rUH1kfyrCkw,1092
70
+ openinterp/score_controls.py,sha256=Q7HkbvD4TVL1XrXgFhErfZyOaHF8kWwH0-TTUOyfuPM,7054
71
+ openinterp/sensitive.py,sha256=MebfeqV1PzBT_ZEEXU6tNMzli3D4ttAysdfykoKsRhs,10993
72
+ openinterp/show.py,sha256=7tHpn1sdL56Sci0EbPlrz9HmYgTrYiXUAReP_6txTJ0,9903
73
+ openinterp/signing.py,sha256=eEXYMOs29O1lCPBevnpQ5RtDdZTbQlE3YAyGz1-HTvs,9320
74
+ openinterp/sisters.py,sha256=CM9ZFVBDC7lxIFbnK-hImiIc87UaNUNu-dJHYOU3nFY,19688
75
+ openinterp/superposition_finders.py,sha256=J9qxLY3PZZST9J2_ZYYwm1oD1-eZ9z8iK-OCaFDfJRc,10067
76
+ openinterp/syntax.py,sha256=XZpG8KwzNzlRuhWp3c_w6FFz_J8pBarmZZ9g5PlwQg8,17162
77
+ openinterp/takedown_checks.py,sha256=2DgjjdamX1EjGhxYWcVFZo0Ja9SxfVazoc6e5O3rSZ4,3047
78
+ openinterp/toxicity.py,sha256=eG14jtwuNoGNS0RTz_oeU1iz1UOUNLbJR24tGWUFUs0,6834
79
+ openinterp/verdict_regression.py,sha256=bo7o42UPlxPfwd5DV9xwuvSOaYUQY46H1F2jBQaOnWc,3239
80
+ openinterp/wiring_backfill.py,sha256=qFLHofVx5pa-UAz66AsVcENU1yCyHRKIfBWwTRNG1EM,6258
81
+ openinterp/wordnet.py,sha256=sutlH8R_br9Y5PKB85h0QLDUYfjjbyGd3D7KVkMRJ-4,14414
82
+ openinterp/agents/__init__.py,sha256=azi8nXW5qOBH1qQ15SU8ilVUjL9FUTCt7WWOus51v20,591
83
+ openinterp/agents/base.py,sha256=Vna-WPMqJz6wdmDcY8qrQeYswy3bZTwA0iX6en-aDWs,10097
84
+ openinterp/agents/judge.py,sha256=lb4b3L875z8yPjiPwHkJZ0ksR48MaslVyN09uaFZkjQ,6298
85
+ openinterp/agents/proposer.py,sha256=48VMttQlqhcEyvfS_DmMkQZmiZir59_7yWN9cEBBGbY,20555
86
+ openinterp/agents/proposer_profiles.py,sha256=M3B0n7yP4I8eHwPwh3sl2EqQ5ynyGux5heqZDmr9tbM,4357
87
+ openinterp/agents/review_measurements.py,sha256=XfU-3DtkOnVV1gRSypx4Dufx42fZ6EwXuZsMn-ltGQc,7611
88
+ openinterp/agents/reviewer.py,sha256=SeG4rJifclQSvSuoUOEYSy7JhqldaQ4knBwwUXIaerM,21777
89
+ openinterp/builder/__init__.py,sha256=sBUKYpbFo_ym8V-wv78h2jtJt_mNxkU-lM9CeHgBcQY,343
90
+ openinterp/builder/agents.py,sha256=obgOhgUkLg7HOy3RSH1faAXk4UuX__x4MBj9m_LBEZ4,10235
91
+ openinterp/builder/aligned.py,sha256=TIKCr-wq-Y7HQi5-4P2XHTCpJZq_0WxPTBGMoVpxIkY,1615
92
+ openinterp/builder/charts.py,sha256=uu4k7eKOxZW-it88fFDSFku1pLFABln5-DsYC13oTcA,15548
93
+ openinterp/builder/circuit_pages.py,sha256=jdXsecgRSGj7LPDxeFXgRovZnvu_YzInG2KO8LoT920,1832
94
+ openinterp/builder/circuits.py,sha256=u64UWXcCGGDHSddX_TOEjEiOLV7uh4eymhObssyoPfw,10316
95
+ openinterp/builder/compiler.py,sha256=ml11iifr83CM8ToQVM1RqOctFqo0tz1WB6TATsi23Wc,21017
96
+ openinterp/builder/corpora.py,sha256=rixolJK0omy_31GuYPUsqSGKx49n0oCulyJaZLSxq50,3756
97
+ openinterp/builder/coverage.py,sha256=11KVnagGAKJDjA-cseSWsq_7TsBwkYcm0Ea8XdVRp7w,1878
98
+ openinterp/builder/dashboard.py,sha256=jSrjIOkkLX8birOF2ak-nSq-ivpVHim69PGFXYrR-5c,9998
99
+ openinterp/builder/disk_memo.py,sha256=zRuil2pi5NcO7GryZUw0Uz32jp6P3IHgDxfGRAALCrM,2615
100
+ openinterp/builder/experiment.py,sha256=cDjA1ng2UbMUZfLRdNgvdcOxZmU7Z3r3LovZmlNdpVw,3906
101
+ openinterp/builder/heat.py,sha256=XbDUIWXUmjQDR6qbQYlSzMBJ5p9RJt6irtRpn73K-j8,4781
102
+ openinterp/builder/hrefs.py,sha256=EQulM2qoE71otDEPAZ0cEfpKZ0OLO7ojXfs80Deafqk,2394
103
+ openinterp/builder/learned_baseline.py,sha256=bIV4d6QtY60SVjp8FWG-mXkcERT6AN7e9UqDD9T_KfA,8287
104
+ openinterp/builder/model_facts.py,sha256=ZUrLir-BLwtfQkGPELvb4QhZiKf2PrdAdkPEH1psWcU,5185
105
+ openinterp/builder/neuronpedia_export.py,sha256=y7HxYa6Rw-VNau_fpfs47wIzc2SsBC17lMO9_dLwq0o,4784
106
+ openinterp/builder/parallel.py,sha256=MtxlmfKWot0QRpdvHa1cokwHLG3jWXYuo5U2L7BCddY,3966
107
+ openinterp/builder/parquet_export.py,sha256=cP_A-mAIvd3wddddYjddOsusXi5P5SSiUYs7Bw5E3so,18940
108
+ openinterp/builder/pieces.py,sha256=tD7fOg9Q9J8zZEChFJgGUAj8ig3KFM0Lj-4iqdb1f5U,4710
109
+ openinterp/builder/pii.py,sha256=5JjU3FRKzDM8UnwEVPoVx2WCOG8b5Wf_AmT-QlpXGHk,8012
110
+ openinterp/builder/registry_stats.py,sha256=Xw9ebReHAhozWdl_UxUUVO9ilgc87JUMYt72XlNpQac,6596
111
+ openinterp/builder/research.py,sha256=-JjOFmXvZ0WRaQipS-VFHLEPKzh636MxR252LImyCbs,4310
112
+ openinterp/builder/sections.py,sha256=HCqqWWD5Zl0rSplCIgHuILyLMV8BIti7PzV7-FNwhI4,1209
113
+ openinterp/builder/significance.py,sha256=lVd0okm7hqx8usi6UNZYt1Rzj2SqCsUv74alxJXCmDc,4157
114
+ openinterp/builder/sister_graph.py,sha256=Zz1BHSeW747e_Df7JUGmS8AonRsMRDZb8lcm_UV6A_w,6982
115
+ openinterp/builder/standing.py,sha256=hakGVJAHr62k9kT926GuFHiHl4PN3QpomIbZinItiAs,7523
116
+ openinterp/builder/statuses.py,sha256=uh0luIknpCaLSo_gaVr_7LuPwy1VFvMMijIKerz0zAw,1496
117
+ openinterp/builder/stopped.py,sha256=co3qaMs_UMV8pBIR8MxI3GQLE6ZU0CSQ69zpwDY_nu8,3847
118
+ openinterp/builder/stops.py,sha256=4arvRYtGw43jpLUJ7X86EgkOVLs0HqcoZCpcCSEFbbA,1274
119
+ openinterp/builder/superpositions.py,sha256=aAQs2ZpdE1uvWOsXCmstwaF76Zm1VAee21-JCW2fWoQ,4129
120
+ openinterp/builder/tree.py,sha256=1x38E_j7NiSljllxT2zaYGoPSzswbGB1xvhqLVVG5jA,17059
121
+ openinterp/builder/users.py,sha256=_26zFEnQ5inSvBA386EgP88CzsGgmmkETfFYYM8tQgQ,5800
122
+ openinterp/builder/wiki.py,sha256=N0l21Erqyn7dpOnzbkHt40ZSkl5bevr9cCt_5A2j_6I,16970
123
+ openinterp/builder/templates/_agent_role_cells.html,sha256=V5g479NGU1pzbFe7mRaToSjRn8r_3V_Xq0SlFfpdwB4,1005
124
+ openinterp/builder/templates/_causal_chart.html,sha256=u-g4aaTnA38Ptc26PYZDOaSuhxlz_GA9YLNrQPKWRoA,5736
125
+ openinterp/builder/templates/_circuit.html,sha256=e_PSGwvYZ7P_W6beoI9_h84CDBi1fLC30ut1gAWnf6g,507
126
+ openinterp/builder/templates/_dashboard.html,sha256=76OjQt3-wkBlXKNu0RxcO2TXC-4Z_XXBGRM2_lEVQUc,9942
127
+ openinterp/builder/templates/_experiment.html,sha256=-3vuoar89paQOWD80KX8b3ljRDCqFciJyAf0_UiyT0o,40772
128
+ openinterp/builder/templates/_macros.html,sha256=YvpATyZw1vr6fUwR67bbTlCY3K32l7pzjUnsfxZ9mGs,5202
129
+ openinterp/builder/templates/_patchscope.html,sha256=waLd0bPmlg0X1Sc8rNTz8I23ERric6cxpBkEOiYldck,2357
130
+ openinterp/builder/templates/_prior_art.html,sha256=wi0lWGQr0Rsoeb_WPgU_AWpgRVz2J26Ud93TRJ_g0fs,1639
131
+ openinterp/builder/templates/_specificity.html,sha256=C7BdtX9xeNgjUvyKgzOdMl1BtMTINQVkCRf5MXEB8Q0,1988
132
+ openinterp/builder/templates/_steering.html,sha256=MvjKryryeA5rAlhKCo3WKgYsN7qU76f9cPyjOt9iQ4s,2612
133
+ openinterp/builder/templates/_superposition.html,sha256=2a0bVo1LbvoLdadMmvQgMzCpZz4U9XAq-B4R5Vf2f2U,3626
134
+ openinterp/builder/templates/_vocab_chart.html,sha256=uf_R2stBEBLcqWwP1nQUTvjHzxS-q49NAMFm90f4PSY,6092
135
+ openinterp/builder/templates/_wiring.html,sha256=V0LXakir3niRCWqyPCUggBElt1M5ic-LzAbpXE3zyyY,3418
136
+ openinterp/builder/templates/about.html,sha256=oAeAmxBFkCoAOj5L7G2fLVb9vM7YZgYwGb-J2GVhk-g,6110
137
+ openinterp/builder/templates/agent.html,sha256=vDg_sPE-mgeKSU197-aD6TsOvpLlD2JQk53COg93RQk,4644
138
+ openinterp/builder/templates/agents.html,sha256=nbK0jlQdtMajS9LVLsAiWcCr2AKquZzIT9sSbJofDXI,4752
139
+ openinterp/builder/templates/base.html,sha256=XAQ4Ry9PEhQ4F6F-gZ7K7iUAhe4uRQFmI7tSEYjr-cE,6256
140
+ openinterp/builder/templates/circuit.html,sha256=qQf-SefrMObLHMnArVQ_CfYMHDgledXtze_b4yWOaKA,4241
141
+ openinterp/builder/templates/circuits.html,sha256=0Yt9Q_RAlNJizWJToa2UqXllZnv8hVDhhpFspfBUCcc,3102
142
+ openinterp/builder/templates/experiment.html,sha256=aqH01axNKU-__JHtlXKU2gYSPRa1p6McIVu4isJzAwo,1328
143
+ openinterp/builder/templates/hub.html,sha256=q6IfqVCpsBRh_VMtv8kIK-FDlzZLzXDsUbmyPY8LLhw,1149
144
+ openinterp/builder/templates/index.html,sha256=V4qhPPX6_5T2cowLdbX1nKNxkhBNm0E1p1jkvJ83Zqw,25310
145
+ openinterp/builder/templates/layer.html,sha256=8utt4v5InmwiYKDUZqU1vJ5g8wiDOCHyLLoHOrdc3-E,5395
146
+ openinterp/builder/templates/learned-baseline.html,sha256=h_AgsYdAvK3x6kvhjIihRf-QyJemY_2TglZ4Gf2IhDw,4241
147
+ openinterp/builder/templates/model.html,sha256=W4fK39CI9l7UOXgOM1JR3n6zwC42CfDxfiDZZlTIcqc,11144
148
+ openinterp/builder/templates/models.html,sha256=3ursGLHpDDYEbEaMQvlJXoTLrPURm9t65DhA6d12m5k,2953
149
+ openinterp/builder/templates/neuron.html,sha256=A8tnqY5WgpZd97gRiNt7MyVeQgQBU-KHRqI1EtUmpfg,17673
150
+ openinterp/builder/templates/paper.html,sha256=m7wvchkd7pF-uwWitKGE9A8ieNI0v5o0KbbzDp3jhlc,2224
151
+ openinterp/builder/templates/redirect.html,sha256=sM6xUwaJZIZNsMxDn9Ym6WGaVJxektJEzuLNllOfqrg,291
152
+ openinterp/builder/templates/research.html,sha256=unjdrep-L8NYZMbCCPzalKsk7VQL2yWZaJdqsJIzUqE,1596
153
+ openinterp/builder/templates/user.html,sha256=_H6_fQ5l2zMgg3cHKHDngJ9FAb1m4eR_i6-_Z-cPo_4,3126
154
+ openinterp/builder/templates/users.html,sha256=lrBVepaKMX7NtOrSkqZG-ysB_mO0zRqLWfa7kkhnUJ8,2122
155
+ openinterp/builder/templates/wiki/experiment.md,sha256=JQ_pNjLap31mx37xS-UEQ5Umz4K5VYtZODdd9z8gGuc,17608
156
+ openinterp/builder/templates/wiki/index.md,sha256=y0EsVVJIghdBX9WCwUJH-UE60mUm-yMhcaP8EkYqXAQ,1815
157
+ openinterp/builder/templates/wiki/neuron.md,sha256=l1L-Mo1pMTydXMzPdD5DlFKTgNvQlH3pjb77JQiQ1Rw,1473
158
+ openinterp/builder/templates/wiki/stop.md,sha256=C5BQYV2dieg7EwZ_ahIVGkjIXAYp_ga880v4c0ALJ7Q,2371
159
+ openinterp/core/__init__.py,sha256=SfNYbpfmHQoRN83QLugYY7_4n_PKXOkfLryQBP4ZWdc,1315
160
+ openinterp/core/agent_names.py,sha256=Qj0SCoKKg_woSX2JrfrhXYqJ45ZfpG5172L4_MINK4Y,3206
161
+ openinterp/core/attribution.py,sha256=6pbwGpb071JCR4XIY0AB0CUh1amzDf69UecQ_Tc-ads,4321
162
+ openinterp/core/cache_dirs.py,sha256=p05TKouTZxzlf2LMzJwN0vEogRNuDtkY47aEI05nim4,517
163
+ openinterp/core/causal.py,sha256=KWt4EHCzDWCzJi7UHP4RqarGlfjC7C78ZGhiKqwQY1g,3480
164
+ openinterp/core/confounds.py,sha256=4hU0sWHdT2xQsrVJIE7d795aPLFTwhfdf5SPbmIGD9Q,4275
165
+ openinterp/core/contributors.py,sha256=S8chbo7X3aLax0Qb04HAn3j4kUAC8FTHHiSbaZfBy_Y,1064
166
+ openinterp/core/corpora.py,sha256=r9V_wEV9JFVdqdk-ttveKYhQ2z8SHwvqIdquLT0Y5_c,5652
167
+ openinterp/core/costs.py,sha256=JsE1gh1ctQYTHpKoQkRvUKESsd0PZUn8MN1MWPXszJI,17043
168
+ openinterp/core/draws.py,sha256=0sniY4R3Uzim_bCStRuQcK7AfsNwxrtHutyPovTrrVI,4471
169
+ openinterp/core/errata.py,sha256=Dlsv1hrALbUifMMn5Bvl10U6YkXApCjGevn0ji7ckWQ,10520
170
+ openinterp/core/evidence.py,sha256=otoZ0pPWTJORa5hiabu1YviQ8XwVgczseMBnF0FTJfQ,6276
171
+ openinterp/core/examples.py,sha256=57gDcun8EeN9fSREpcQ02be5J_OJl4ChFzMmi38LbAc,3594
172
+ openinterp/core/exceptions.py,sha256=DphNd7DSlnOXc7Ax0W93iGASveML116kEjGfziz2JQQ,783
173
+ openinterp/core/explanation.py,sha256=qh66ENW9Frch0R3XwqEtQbbeXMzq0TVQHhPBfnC0yog,5570
174
+ openinterp/core/fence.py,sha256=d6y4Qwfr0QDHBI9Fxj-VEivThPn6VymzhpbYELc4Sgg,2072
175
+ openinterp/core/heavy_lock.py,sha256=InpS5NNmDuxSOAtnmf_4P74t0zWIMNa_MQ10QKUryp0,3909
176
+ openinterp/core/identifiers.py,sha256=4iK2qWVfr3r7VongSxb7XtZIo5AyuckKXMiBEivp8nA,6836
177
+ openinterp/core/isolation.py,sha256=p6gW5XXYblT4IBdPumC3MpXE7nUeK_YJMWfq-pnPmwE,5514
178
+ openinterp/core/ledger.py,sha256=_8EGn5dBsRG5aqoz8aASNmlFFJuxfeHGajFhsrz2F0E,5452
179
+ openinterp/core/licenses.py,sha256=mFOQNMN2i_cizdn57APqtc34q7lS7BgpZVbrs4ieAt8,1277
180
+ openinterp/core/manifold.py,sha256=JjT8jIg8gfieqlNr9KzQvSSXOGapmi4QL5JjZ8xqTlc,5035
181
+ openinterp/core/partners.py,sha256=_MpX8UtmxYGcyk5hNvQFRECehIyXFgBOYc4GqpbttfA,1473
182
+ openinterp/core/patchscope.py,sha256=IwSgfdWmUXIy6Fxq1SoO7pn8Ao-m67wZx6WvU9-Mlro,2591
183
+ openinterp/core/paths.py,sha256=DKd7v-yGfjC7iPkUBIRW_PJhSZZzF7Dii5iEpTAgmAQ,1478
184
+ openinterp/core/pause.py,sha256=5uDMfcWuJA7n6_VrnPHRyxkREGv4Iv-zdtr0sbY7aDs,3484
185
+ openinterp/core/pricing.py,sha256=cbPFkeA65H6S_nwB3AtpkYT5q7ryqtKazuz44PVYNV8,7122
186
+ openinterp/core/prior_art.py,sha256=2zVq2NMtQfnIPBzAZWTwL9mYcx6Wcr5Es4dVNsY2Olg,1832
187
+ openinterp/core/probing.py,sha256=SQJ0v-TVa7mOls6ip1cLBKj0oH4PTA-RnHqfUVRiAyw,5637
188
+ openinterp/core/profiles.py,sha256=YS0PPr3KcjHj85MK4izMQZSQn6VimgJzSFSlCIrIWaY,10075
189
+ openinterp/core/project.py,sha256=0L6_z8Co6r2368TFRqCuMGqS9MDFBQfCzYk0boOU0dc,897
190
+ openinterp/core/run_environment.py,sha256=VvOogJicGHo8jbC1klMNgMxgS_xzaPi1nsqojOLg_Ps,1781
191
+ openinterp/core/schemas.py,sha256=zBaYJSOztbdbte6_Js5jqorowi4ktVoLR1NG8OLLgps,20974
192
+ openinterp/core/specificity.py,sha256=S8O5ITc3P1fy_F5biUbw-lR9D9gjMIRbUYEAfNuF1t4,2026
193
+ openinterp/core/stats.py,sha256=6A5EWKgjGuh1J5NM-kuA78n0KxsnNYtAjrSi41JELTI,6577
194
+ openinterp/core/steering.py,sha256=Fq0aite7NcJyycxAAnl6AqLEV6rOybXhS5r7d6B7oGI,1954
195
+ openinterp/core/strict.py,sha256=xWyby8U5rqsLvegPTYIjLdIW0_1awBrrxJfQ5iNlgrg,546
196
+ openinterp/core/takedowns.py,sha256=J9pUfUdn5dgvc9BYr0H-t8VPLvmnG1Dl8rW5N75gE40,4935
197
+ openinterp/core/transcripts.py,sha256=NzQmGiQxVnwXVmafcKTV-TbT2xBmPFqWfed9y481GCY,5318
198
+ openinterp/core/wiring.py,sha256=pcypd893jaUHeq2OgqWrm3ekzsRrRd9t-MoKhrty3q8,3608
199
+ openinterp/data/__init__.py,sha256=lmQLjLhgqW5ajiSaMcQ6wwjME7RTxZlosjBMyssLaAE,393
200
+ openinterp/data/offensive_words.txt,sha256=8DfZ-D5oe37Y9Kael1pOsgfysAxWTsUTBmBTMQISyMw,432
201
+ openinterp/data/public_suffix_list.dat,sha256=tpMVwIXVOXJyS48t8RH_wymwyE_gpH1iyMkWVcx3Sjg,318581
202
+ openinterp/data/sample_corpus.txt,sha256=Q4sYZGU6PwGrR1m8KSd1zC7KFqyrONM3SoaqLx3GkaE,2373
203
+ openinterp/harness/__init__.py,sha256=yYliBTVdQugHduuGE2eClmj8OrrpDbnGUxFpMP6eDVQ,1005
204
+ openinterp/harness/annotations.py,sha256=SXFLy9sYFKaSpd7KFa-sXqW4vTDeW1N18YfwgC3Bm80,14488
205
+ openinterp/harness/attribution.py,sha256=D-kLR8HdOpxWQxEP9sPC-1R2b8CzL4XZ30kGFnXlEPo,4007
206
+ openinterp/harness/causal.py,sha256=r22W1styNtX2t7Ben36BBYOxUo55vR5jlh8Pa136CB0,11481
207
+ openinterp/harness/confounds.py,sha256=6eu4fcIMLdJjmexoB7YPSUdp78Wtf3p886fUhoZUt0E,7898
208
+ openinterp/harness/covariance.py,sha256=Ov3u7hfIBQmSyBVe4RcWjL-aghsjlxEq7XzXlUeydIk,13388
209
+ openinterp/harness/crossref.py,sha256=gzkrm2xgvhoJSC4OUVWcVRbbFjIpD7w-LYs_ReYodPk,8017
210
+ openinterp/harness/cuda_devices.py,sha256=v-6e5wvswhJt3_7NBbs8zudw1C0gIfW4GiQcmJkNOv0,3320
211
+ openinterp/harness/dead.py,sha256=i_58CsLBeWtYofV_HFymKoJcdIcOPYK2Uafuixem1x8,5339
212
+ openinterp/harness/devices.py,sha256=md2VeUfFcH7-LUAvHA6cDeKVWuHV96166O4VsMoB2lE,14628
213
+ openinterp/harness/dictionaries.py,sha256=AUVXsursb5nLV1_6SsJFTRAWkjUC7dpgEa-alWgcX2o,23297
214
+ openinterp/harness/dreaming.py,sha256=VHjB8YcfSYnYAX_uyiZmOo3rFSX47n5UAzwUNycmofE,4384
215
+ openinterp/harness/environment.py,sha256=YjCZuVRRSYQoxdvjH9SaKuB7F64D5135N06fw9bo8Sc,2399
216
+ openinterp/harness/explanation_scores.py,sha256=pLFTHqMMD5iJymQNuuePb_ljAiHhR5jlJ6owbLe_m9s,15013
217
+ openinterp/harness/features.py,sha256=H4mj39PQUYLJzcsLCp3JfnF_aUe5v1IIT62ZgQMu5J8,11297
218
+ openinterp/harness/first_position.py,sha256=UDZlb7nLFsYgzuVcx7QOtz1NTg2q31AEqSMIDAfw6Y0,5363
219
+ openinterp/harness/heads.py,sha256=paiIkucOuNPJ1rlM67uE4n49ijtH0T8_DxNIgYQMJtU,9003
220
+ openinterp/harness/hooks.py,sha256=WLG9sd3wieYyRfUBwNicTX1QZhu2h4XGKeiTI8ghOZ0,21415
221
+ openinterp/harness/input_attribution.py,sha256=In1BkZvpE7cxOSL6ZqXYsOnrA_639se9RY9QoZoqu0c,14294
222
+ openinterp/harness/jlens.py,sha256=jjRA86r_SwUHDdalaHMUkPpc83ck-T9FCQkiMQ1UI1w,7259
223
+ openinterp/harness/layer_cache.py,sha256=4apKGWYRFyij_7ggFpx5llEb_P01oWcjwmvFd8BeVrw,12554
224
+ openinterp/harness/layer_major.py,sha256=MIg1UDz6o-ZvcYIK5sZb-gH2rZZHboMDzFN6RpgMNKk,10154
225
+ openinterp/harness/lookahead.py,sha256=UP5zLbG9pxZ6soYH9sn0NXhhAx3jsUnwVeHuoozwts0,3863
226
+ openinterp/harness/manifold.py,sha256=CKlYa1STaY-ENILTVGmKcZskm0sRsogyOwSwQJFNZ9w,9459
227
+ openinterp/harness/memory.py,sha256=ZdziN_sf3_0Q1EvRR88I5N-xpNCtPIP2-1wsVTd2gN0,19789
228
+ openinterp/harness/moe.py,sha256=yuGxvNnen9JeTo7-llS5aDvucwtjOLWZYAtRPWev1SE,5635
229
+ openinterp/harness/patcher.py,sha256=rSEnJA-arD3uStvs8Y5WR7Fk8Io5c_iwF5NU1z5vKGE,12906
230
+ openinterp/harness/patchscope.py,sha256=zcYry7rNL3wUKxmizQ5jX3NvehKyKNCWINKFz6Rjmp0,7141
231
+ openinterp/harness/probing.py,sha256=jgT1r9e43QiV1ubhp_f93lIOYXeDDOIkyQpBtU-80HA,14554
232
+ openinterp/harness/scan.py,sha256=spP2Q9fU2VVjnCSUgbuZvSnBHRy0h72HDLCBFIH5v68,18711
233
+ openinterp/harness/scan_backend.py,sha256=A1M9VP-hwiZ-kRcvzkz2hRUuQP2TFLoLMnNvmFcour0,8200
234
+ openinterp/harness/sister_passes.py,sha256=JF-XbW4XbrAbNN0hQYqM9iQyg0jIT5JSgHh3IiJq8nA,19579
235
+ openinterp/harness/sisters.py,sha256=6PtLUE1N6aok5i9wxEASr6YgcYEYvD2_8a34xzrTVZs,15707
236
+ openinterp/harness/sites.py,sha256=Mm1uwjxY1t8QReRCx3ZbFkwTCZ-UNwhYwPcv2ply7lU,3812
237
+ openinterp/harness/specificity.py,sha256=VmThA2QFOASfTIr8Mdb-a33EE4f8WQ8LiCliOUvjwis,4117
238
+ openinterp/harness/steering.py,sha256=AWzIwBJjUHiuKLWF7fxw5rjkw1QAb7dwUZBYVRptkVQ,6517
239
+ openinterp/harness/superpositions.py,sha256=b1f_TOl3WuRCTfQe5nSeRaduyjayT-p9rDipTXZDfI8,5109
240
+ openinterp/harness/units.py,sha256=sVH1NiyGZpveN4FitzLfbvAHxMi0UGtyT2ChkkJGgn0,8776
241
+ openinterp/harness/wiring.py,sha256=wDy_RiNmzZfXIJX-S87AMdcTo6c05-F9W1OOlm805S4,17052
242
+ openinterp/harness/wiring_activations.py,sha256=Cjz5jv9AUUtu7ck-tJ_wsGgyF7we1qEi4Dcse64McUw,10966
243
+ openinterp/harness/ane/__init__.py,sha256=NLsEXH3SQZa5w2cL_Ie-4vuuJbJ5gzK5Qe_Ocffp30w,471
244
+ openinterp/harness/ane/backend.py,sha256=sIxgQbTfxEcz4gPvfRMHr-Kf0Kg6F8wWDfHqIRFWyRQ,14177
245
+ openinterp/harness/ane/cache.py,sha256=bpVRT0aeMS1XKXKI5scIb49BOeY6f_8e8jY_jLb9EYs,10721
246
+ openinterp/harness/ane/chunks.py,sha256=5ARFVl2-eUhdOoDOC3KzdEt-gkCd6aWYByMCFeCrtTs,6956
247
+ openinterp/harness/ane/convert.py,sha256=XxEe74oPfp1RshJv6CRc6PYzvK9VUpzG5B87rqB2qNQ,4304
248
+ openinterp/harness/ane/forward.py,sha256=8eEUXs5IKmEuluVSp3-jNp7dD5mfRLZi4Uty13ozfaA,11785
249
+ openinterp/harness/ane/qualified.py,sha256=IUWbnmgclelqnA9UwZbx1TptznPdF1nmZT_9pTadD-4,1846
250
+ openinterp/sync/__init__.py,sha256=9Th2Pr3JBr71EG1j5MNboUEXc9vmhLm-O_GSVfHHrHY,270
251
+ openinterp/sync/r2.py,sha256=cN24bo-OpMLhcgpi3M7CDn2iwdqoWKDqWgV9iGb2nLo,10479
252
+ open_interpretability-0.0.20.dist-info/METADATA,sha256=Omc2Ejaf_wEdjb887rty24ZMX_ucRu92uUF7EfutifY,12246
253
+ open_interpretability-0.0.20.dist-info/WHEEL,sha256=2iZrJkDIkeDh0k9SikKMqFuRP-ua6mb4Ir1AsER4BEw,87
254
+ open_interpretability-0.0.20.dist-info/entry_points.txt,sha256=31vButxca1FmmOBIQXZXqjjNH-B-kUa4x6KGmy08qEI,62
255
+ open_interpretability-0.0.20.dist-info/licenses/LICENSE,sha256=gwlNpmV6unKcSugA-A5PRtZXVIPitLKFMmtS7xbptpU,1071
256
+ open_interpretability-0.0.20.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.33.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ open-interpretability = openinterp.cli:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Will Sackfield
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
openinterp/__init__.py ADDED
@@ -0,0 +1,6 @@
1
+ """Open Interpretability: an agent-audited registry of native neurons in open-weight models."""
2
+
3
+ __version__ = "0.0.20"
4
+ # The name on PyPI, and of the installed distribution (issue #3251). The import name stays
5
+ # `openinterp`.
6
+ DISTRIBUTION = "open-interpretability"
@@ -0,0 +1,25 @@
1
+ """The LLM agents: the proposer, the reviewer and the judge."""
2
+
3
+ from openinterp.agents.base import DEFAULT_MODEL, LLMAgent
4
+ from openinterp.agents.proposer import HypothesisDraft, ProposerAgent
5
+ from openinterp.agents.reviewer import (
6
+ AdversarialProbe,
7
+ ProbeSet,
8
+ ReviewerAgent,
9
+ ReviewPolicy,
10
+ evaluate_submission,
11
+ probes_from_verdict,
12
+ )
13
+
14
+ __all__ = [
15
+ "DEFAULT_MODEL",
16
+ "AdversarialProbe",
17
+ "HypothesisDraft",
18
+ "LLMAgent",
19
+ "ProbeSet",
20
+ "ProposerAgent",
21
+ "ReviewPolicy",
22
+ "ReviewerAgent",
23
+ "evaluate_submission",
24
+ "probes_from_verdict",
25
+ ]