# Symbols (page 1 of 2)
Pages: [SYMBOLS.md](SYMBOLS.md), [SYMBOLS_p2.md](SYMBOLS_p2.md)

| Symbol | Kind | File:Line | Signature |
|--------|------|-----------|-----------|
| `_build_parser` | function | `app.py:121` | `def _build_parser()` |
| `main` | function | `app.py:159` | `def main(argv)` |
| `run_inference` | function | `app.py:46` | `def run_inference(prompt, checkpoint_dir, checkpoint_name, max_new_tokens, temperature, top_k, repetition_penalty...` |
| `run_inference_hrm` | function | `app.py:71` | `def run_inference_hrm(prompt, checkpoint_dir, checkpoint_name, max_new_tokens, temperature, top_k...` |
| `run_training` | function | `app.py:105` | `def run_training(scale, start_tier, device, prepare_data)` |
| `classify_error` | function | `eval/analyze.py:32` | `def classify_error(msg, candidate_src)` |
| `load_jsonl` | function | `eval/analyze.py:56` | `def load_jsonl(path)` |
| `main` | function | `eval/analyze.py:103` | `def main()` |
| `pass_at_k` | function | `eval/analyze.py:21` | `def pass_at_k(n, c, k)` |
| `summarize` | function | `eval/analyze.py:61` | `def summarize(paths)` |
| `load_records` | function | `eval/analyze_results.py:26` | `def load_records(path)` |
| `main` | function | `eval/analyze_results.py:82` | `def main()` |
| `show_failures` | function | `eval/analyze_results.py:44` | `def show_failures(records, task_id)` |
| `summarize` | function | `eval/analyze_results.py:31` | `def summarize(records)` |
| `context_length_diagnostic` | function | `eval/diag_static.py:171` | `def context_length_diagnostic(model, tracker, device, lengths)` |
| `main` | function | `eval/diag_static.py:248` | `def main()` |
| `phase_discretization` | function | `eval/diag_static.py:49` | `def phase_discretization(K, n_samples, seed)` |
| `static_kappa` | function | `eval/diag_static.py:144` | `def static_kappa(K)` |
| `synthetic_winding` | function | `eval/diag_static.py:95` | `def synthetic_winding(K, n_windows, window_size)` |
| `GenerationGovernor` | class | `eval/governor.py:134` | `class GenerationGovernor` |
| `GenerationResult` | class | `eval/governor.py:109` | `class GenerationResult` |
| `StopReason` | class | `eval/governor.py:99` | `class StopReason(str, Enum)` |
| `TokenStream` | class | `eval/governor.py:45` | `class TokenStream` |
| `__init__` | method | `eval/governor.py:56` | `def __init__(self)` |
| `__init__` | method | `eval/governor.py:156` | `def __init__(self, model, ctx, stream, max_new_tokens, temperature, top_k, repetition_penalty, max_seq_len)` |
| `__len__` | method | `eval/governor.py:90` | `def __len__(self)` |
| `__post_init__` | method | `eval/governor.py:117` | `def __post_init__(self)` |
| `_should_cancel` | method | `eval/governor.py:182` | `def _should_cancel(self)` |
| `cancel` | method | `eval/governor.py:177` | `def cancel(self)` |
| `drain` | method | `eval/governor.py:72` | `def drain(self)` |
| `hook` | method | `eval/governor.py:292` | `def hook(generated)` |
| `hook` | method | `eval/governor.py:320` | `def hook(generated)` |
| `is_closed` | method | `eval/governor.py:86` | `def is_closed(self)` |
| `make_loop_detector` | method | `eval/governor.py:285` | `def make_loop_detector(window, min_repeats)` |
| `make_timeout_hook` | method | `eval/governor.py:314` | `def make_timeout_hook(per_token_s)` |
| `mark_done` | method | `eval/governor.py:67` | `def mark_done(self)` |
| `put` | method | `eval/governor.py:62` | `def put(self, tok)` |
| `run` | method | `eval/governor.py:185` | `def run(self, stop_hooks)` |
| `wait_for_new` | method | `eval/governor.py:77` | `def wait_for_new(self, timeout)` |
| `consumer` | function | `eval/governor_smoke.py:59` | `def consumer()` |
| `load_model` | function | `eval/governor_smoke.py:30` | `def load_model()` |
| `producer` | function | `eval/governor_smoke.py:53` | `def producer()` |
| `test_cancel` | function | `eval/governor_smoke.py:118` | `def test_cancel()` |
| `test_governor_basic` | function | `eval/governor_smoke.py:79` | `def test_governor_basic()` |
| `test_loop_detector` | function | `eval/governor_smoke.py:98` | `def test_loop_detector()` |
| `test_tokenstream_threadsafety` | function | `eval/governor_smoke.py:49` | `def test_tokenstream_threadsafety()` |
| `ModelLoader` | class | `eval/harness.py:217` | `class ModelLoader` |
| `__init__` | method | `eval/harness.py:220` | `def __init__(self, ckpt_dir, ckpt_name, device)` |
| `build_prompt` | function | `eval/harness.py:75` | `def build_prompt(problem)` |
| `completion_for_problem` | function | `eval/harness.py:204` | `def completion_for_problem(sampler, prompt)` |
| `evaluate_problem` | method | `eval/harness.py:272` | `def evaluate_problem(problem, loader, args, sample_idx)` |
| `extract_candidate` | function | `eval/harness.py:100` | `def extract_candidate(prompt, completion)` |
| `generate` | method | `eval/harness.py:246` | `def generate(self, prompt, max_new_tokens, temperature, top_k, repetition_penalty)` |
| `load_humaneval` | function | `eval/harness.py:59` | `def load_humaneval(cache_dir)` |
| `main` | method | `eval/harness.py:315` | `def main()` |
| `make_sampler` | function | `eval/harness.py:195` | `def make_sampler(mode, settings_kwargs)` |
| `run_one_test` | function | `eval/harness.py:150` | `def run_one_test(problem, candidate_src, timeout)` |
| `run_one_test_sandboxed` | function | `eval/harness.py:172` | `def run_one_test_sandboxed(problem, candidate_src, timeout, sandbox_cfg)` |
| `heat_smooth` | function | `eval/hodge_cm_ablation.py:64` | `def heat_smooth(kr, ki, t, device)` |
| `main` | function | `eval/hodge_cm_ablation.py:74` | `def main()` |
| `mat_stats` | function | `eval/hodge_cm_ablation.py:48` | `def mat_stats(kr, ki, r)` |
| `mean` | function | `eval/hodge_cm_ablation.py:141` | `def mean(k, m)` |
| `resolve_device` | function | `eval/hodge_cm_ablation.py:28` | `def resolve_device(req)` |
| `sm` | function | `eval/hodge_cm_ablation.py:70` | `def sm(x)` |
| `main` | function | `eval/integration_smoke.py:18` | `def main()` |
| `_load` | function | `eval/noise_analysis.py:43` | `def _load(p)` |
| `consistency_across_runs` | function | `eval/noise_analysis.py:47` | `def consistency_across_runs(per_run)` |
| `main` | function | `eval/noise_analysis.py:83` | `def main()` |
| `generate_one` | function | `eval/noise_sweep.py:99` | `def generate_one(model, tok, prompt, max_new_tokens, device)` |
| `inject_noise` | function | `eval/noise_sweep.py:46` | `def inject_noise(model, sigma, seed)` |
| `load_model` | function | `eval/noise_sweep.py:74` | `def load_model(ckpt_dir, ckpt_name, device)` |
| `main` | function | `eval/noise_sweep.py:117` | `def main()` |
| `_new_loader` | function | `eval/repair.py:36` | `def _new_loader(ckpt_dir, ckpt_name)` |
| `build_repair_prompt` | function | `eval/repair.py:89` | `def build_repair_prompt(prompt, candidate, err, entry_point)` |
| `extract_candidate` | function | `eval/repair.py:49` | `def extract_candidate(prompt, completion)` |
| `gen` | function | `eval/repair.py:104` | `def gen(model, tok, text, max_new_tokens, temperature, top_k, rep_penalty)` |
| `main` | function | `eval/repair.py:119` | `def main()` |
| `run_test` | function | `eval/repair.py:75` | `def run_test(problem, candidate_src)` |
| `classify_error` | function | `eval/report.py:31` | `def classify_error(msg)` |
| `load_jsonl` | function | `eval/report.py:52` | `def load_jsonl(p)` |
| `main` | function | `eval/report.py:117` | `def main()` |
| `pass_at_k` | function | `eval/report.py:25` | `def pass_at_k(n, c, k)` |
| `repair_summary` | function | `eval/report.py:90` | `def repair_summary(repair_path, baseline_path)` |
| `summarize_run` | function | `eval/report.py:56` | `def summarize_run(p)` |
| `_is_env_truthy` | function | `eval/samplers.py:55` | `def _is_env_truthy(name)` |
| `_make_hrm` | function | `eval/samplers.py:69` | `def _make_hrm(settings_kwargs)` |
| `_make_standard` | function | `eval/samplers.py:64` | `def _make_standard(settings_kwargs)` |
| `build_sampler` | function | `eval/samplers.py:90` | `def build_sampler(mode, settings_kwargs)` |
| `deco` | function | `eval/samplers.py:42` | `def deco(fn)` |
| `list_samplers` | function | `eval/samplers.py:86` | `def list_samplers()` |
| `register_sampler` | function | `eval/samplers.py:36` | `def register_sampler(name)` |
| `SandboxConfig` | class | `eval/sandbox.py:53` | `class SandboxConfig` |
| `_blocked_dunder_access` | method | `eval/sandbox.py:114` | `def _blocked_dunder_access(tree, blocked)` |
| `_build_worker_src` | method | `eval/sandbox.py:254` | `def _build_worker_src(allowed_builtin_names, program_src, blocked_modules)` |
| `_max_depth` | method | `eval/sandbox.py:123` | `def _max_depth(tree)` |
| `_names_imported` | method | `eval/sandbox.py:100` | `def _names_imported(tree)` |
| `check_safety` | method | `eval/sandbox.py:133` | `def check_safety(source, cfg)` |
| `d` | method | `eval/sandbox.py:125` | `def d(node, cur)` |
| `describe_policy` | method | `eval/sandbox.py:373` | `def describe_policy(cfg)` |
| `safe_exec` | method | `eval/sandbox.py:270` | `def safe_exec(program_src, cfg, extra_globals)` |
| `main` | function | `eval/sandbox_smoke.py:15` | `def main()` |
| `run_hrm` | function | `eval/smoke.py:36` | `def run_hrm()` |
| `run_standard` | function | `eval/smoke.py:17` | `def run_standard()` |
| `evaluate_problems` | function | `eval/temp_sweep.py:58` | `def evaluate_problems(model, tok, problems, max_new_tokens, temperature, top_k, n_samples, device)` |
| `generate_one` | function | `eval/temp_sweep.py:39` | `def generate_one(model, tok, prompt, max_new_tokens, temperature, top_k, device, seed_offset)` |
| `main` | function | `eval/temp_sweep.py:116` | `def main()` |
| `pass_at_k_unbiased` | function | `eval/temp_sweep.py:88` | `def pass_at_k_unbiased(n, c, k)` |
| `summarize` | function | `eval/temp_sweep.py:96` | `def summarize(results, n_samples)` |
| `build_prompt` | function | `infer_exploitgym.py:122` | `def build_prompt(task_info, tier)` |
| `generate` | function | `infer_exploitgym.py:177` | `def generate(model, tokenizer, prompt)` |
| `load_model` | function | `infer_exploitgym.py:136` | `def load_model(ckpt_dir, ckpt_name, device)` |
| `load_task` | function | `infer_exploitgym.py:49` | `def load_task(task_id)` |
| `load_task_ids` | function | `infer_exploitgym.py:41` | `def load_task_ids()` |
| `main` | function | `infer_exploitgym.py:420` | `def main()` |
| `parse_args` | function | `infer_exploitgym.py:380` | `def parse_args()` |
| `run_eval_holdout` | function | `infer_exploitgym.py:274` | `def run_eval_holdout(args, model, tokenizer)` |
| `run_interactive` | function | `infer_exploitgym.py:331` | `def run_interactive(args, model, tokenizer)` |
| `run_single_prompt` | function | `infer_exploitgym.py:257` | `def run_single_prompt(args, model, tokenizer)` |
| `sample` | function | `infer_exploitgym.py:205` | `def sample(logits, seen_ids)` |
| `banner` | function | `run_exploitgym_v2.sh:24` | `` |
| `eval_v2` | function | `run_exploitgym_v2.sh:45` | `` |
| `infer_v2` | function | `run_exploitgym_v2.sh:54` | `` |
| `train_v2` | function | `run_exploitgym_v2.sh:32` | `` |
| `banner` | function | `run_merged.sh:84` | `` |
| `eval_merged` | function | `run_merged.sh:119` | `` |
| `infer_merged` | function | `run_merged.sh:128` | `` |
| `kill_gpu_processes` | function | `run_merged.sh:33` | `` |
| `prepare_data` | function | `run_merged.sh:93` | `` |
| `restore_gpu_processes` | function | `run_merged.sh:63` | `` |
| `train_merged` | function | `run_merged.sh:107` | `` |
| `GroqBackend` | class | `synthetic_dataset.py:71` | `class GroqBackend(LLMBackend)` |
| `LLMBackend` | class | `synthetic_dataset.py:61` | `class LLMBackend` |
| `OllamaBackend` | class | `synthetic_dataset.py:177` | `class OllamaBackend(LLMBackend)` |
| `OpenRouterBackend` | class | `synthetic_dataset.py:121` | `class OpenRouterBackend(LLMBackend)` |
| `ProcessedManifest` | class | `synthetic_dataset.py:364` | `class ProcessedManifest` |
| `SyntheticDatasetGenerator` | class | `synthetic_dataset.py:399` | `class SyntheticDatasetGenerator` |
| `__init__` | method | `synthetic_dataset.py:78` | `def __init__(self, model, api_key, max_tokens, temperature, timeout)` |
| `__init__` | method | `synthetic_dataset.py:132` | `def __init__(self, model, api_key, max_tokens, temperature, timeout)` |
| `__init__` | method | `synthetic_dataset.py:184` | `def __init__(self, model, host, max_tokens, temperature, timeout)` |
| `__init__` | method | `synthetic_dataset.py:418` | `def __init__(self, backend, output_path, manifest_path, logger, max_workers, max_file_chars)` |
| `_build_prompt` | method | `synthetic_dataset.py:490` | `def _build_prompt(self, content, lang)` |
| `_enqueue_sample` | method | `synthetic_dataset.py:465` | `def _enqueue_sample(self, sample)` |
| `_flush_writer` | method | `synthetic_dataset.py:468` | `def _flush_writer(self)` |
| `_generate_sample` | method | `synthetic_dataset.py:496` | `def _generate_sample(self, content, lang)` |
| `_jsonl_writer` | method | `synthetic_dataset.py:447` | `def _jsonl_writer(self)` |
| `_read_file` | method | `synthetic_dataset.py:477` | `def _read_file(self, path)` |
| `build_backend` | method | `synthetic_dataset.py:227` | `def build_backend(provider, model)` |
| `build_logger` | method | `synthetic_dataset.py:614` | `def build_logger(level)` |
| `finish` | method | `synthetic_dataset.py:590` | `def finish(self)` |
| `generate` | method | `synthetic_dataset.py:64` | `def generate(self, prompt)` |
| `generate` | method | `synthetic_dataset.py:98` | `def generate(self, prompt)` |
| `generate` | method | `synthetic_dataset.py:154` | `def generate(self, prompt)` |
| `generate` | method | `synthetic_dataset.py:201` | `def generate(self, prompt)` |
| `load` | method | `synthetic_dataset.py:374` | `def load(path)` |
| `load_paths` | method | `synthetic_dataset.py:652` | `def load_paths(paths_arg, paths_file, max_files)` |
| `main` | method | `synthetic_dataset.py:667` | `def main()` |
| `name` | method | `synthetic_dataset.py:67` | `def name(self)` |
| `name` | method | `synthetic_dataset.py:95` | `def name(self)` |
| `name` | method | `synthetic_dataset.py:151` | `def name(self)` |
| `name` | method | `synthetic_dataset.py:198` | `def name(self)` |
| `parse_args` | method | `synthetic_dataset.py:625` | `def parse_args()` |
| `process_batch` | method | `synthetic_dataset.py:568` | `def process_batch(self, paths)` |
| `process_file` | method | `synthetic_dataset.py:533` | `def process_file(self, path)` |
| `save` | method | `synthetic_dataset.py:387` | `def save(self, path)` |
| `validate_sample` | method | `synthetic_dataset.py:330` | `def validate_sample(sample)` |
| `TestConfig` | class | `tests/test_jlens.py:473` | `class TestConfig` |
| `TestFit` | class | `tests/test_jlens.py:172` | `class TestFit` |
| `TestFitCheckpoint` | class | `tests/test_jlens.py:367` | `class TestFitCheckpoint` |
| `TestJacobianForPrompt` | class | `tests/test_jlens.py:52` | `class TestJacobianForPrompt` |
| `TestJacobianLens` | class | `tests/test_jlens.py:210` | `class TestJacobianLens` |
| `TestTopoGPT3JLensAppConfig` | class | `tests/test_jlens.py:494` | `class TestTopoGPT3JLensAppConfig` |
| `TestValidPositionMask` | class | `tests/test_jlens.py:17` | `class TestValidPositionMask` |
| `fitted_lens` | method | `tests/test_jlens.py:222` | `def fitted_lens(self, model)` |
| `model` | method | `tests/test_jlens.py:56` | `def model(self)` |
| `model` | method | `tests/test_jlens.py:176` | `def model(self)` |
| `model` | method | `tests/test_jlens.py:214` | `def model(self)` |
| `model` | method | `tests/test_jlens.py:371` | `def model(self)` |
| `test_all_positions_valid` | method | `tests/test_jlens.py:39` | `def test_all_positions_valid(self)` |
| `test_app_config_defaults` | method | `tests/test_jlens.py:485` | `def test_app_config_defaults(self)` |
| `test_apply_returns_correct_shapes` | method | `tests/test_jlens.py:242` | `def test_apply_returns_correct_shapes(self, fitted_lens, model)` |
| `test_apply_with_explicit_positions` | method | `tests/test_jlens.py:263` | `def test_apply_with_explicit_positions(self, fitted_lens, model)` |
| `test_basic_mask` | method | `tests/test_jlens.py:20` | `def test_basic_mask(self)` |
| `test_checkpoint_mismatch_raises` | method | `tests/test_jlens.py:450` | `def test_checkpoint_mismatch_raises(self, model, tmp_path)` |
| `test_checkpoint_resume_produces_same_result` | method | `tests/test_jlens.py:378` | `def test_checkpoint_resume_produces_same_result(self, model, tmp_path)` |
| `test_custom_config` | method | `tests/test_jlens.py:505` | `def test_custom_config(self)` |
| `test_default_config` | method | `tests/test_jlens.py:497` | `def test_default_config(self)` |
| `test_earlier_layers_further_from_identity` | method | `tests/test_jlens.py:85` | `def test_earlier_layers_further_from_identity(self, model)` |
| `test_exact_jacobian_for_last_block` | method | `tests/test_jlens.py:95` | `def test_exact_jacobian_for_last_block(self, model)` |
| `test_exact_minimum_length` | method | `tests/test_jlens.py:45` | `def test_exact_minimum_length(self)` |
| `test_fit_config_defaults` | method | `tests/test_jlens.py:476` | `def test_fit_config_defaults(self)` |
| `test_fit_empty_prompts_raises` | method | `tests/test_jlens.py:191` | `def test_fit_empty_prompts_raises(self, model)` |
| `test_fit_returns_lens_with_correct_attributes` | method | `tests/test_jlens.py:183` | `def test_fit_returns_lens_with_correct_attributes(self, model)` |
| `test_fit_skips_short_prompts` | method | `tests/test_jlens.py:196` | `def test_fit_skips_short_prompts(self, model)` |
| `test_fit_with_default_source_layers` | method | `tests/test_jlens.py:202` | `def test_fit_with_default_source_layers(self, model)` |
| `test_fitted_late_layer_matches_model` | method | `tests/test_jlens.py:254` | `def test_fitted_late_layer_matches_model(self, fitted_lens, model)` |
| `test_from_pretrained_local_directory` | method | `tests/test_jlens.py:351` | `def test_from_pretrained_local_directory(self, fitted_lens, tmp_path)` |
| `test_from_pretrained_local_file` | method | `tests/test_jlens.py:344` | `def test_from_pretrained_local_file(self, fitted_lens, tmp_path)` |
| `test_late_layer_jacobian_close_to_identity` | method | `tests/test_jlens.py:76` | `def test_late_layer_jacobian_close_to_identity(self, model)` |
| `test_load_invalid_file_raises` | method | `tests/test_jlens.py:337` | `def test_load_invalid_file_raises(self, tmp_path)` |
| `test_logit_lens_baseline` | method | `tests/test_jlens.py:274` | `def test_logit_lens_baseline(self, fitted_lens, model)` |
| `test_merge_empty_raises` | method | `tests/test_jlens.py:326` | `def test_merge_empty_raises(self)` |
| `test_merge_mismatch_raises` | method | `tests/test_jlens.py:319` | `def test_merge_mismatch_raises(self)` |
| `test_merge_weighted_mean` | method | `tests/test_jlens.py:291` | `def test_merge_weighted_mean(self)` |
| `test_negative_layer_indices` | method | `tests/test_jlens.py:110` | `def test_negative_layer_indices(self, model)` |
| `test_negative_skip_raises` | method | `tests/test_jlens.py:34` | `def test_negative_skip_raises(self)` |
| `test_out_of_range_layer_rejected` | method | `tests/test_jlens.py:286` | `def test_out_of_range_layer_rejected(self, fitted_lens, model)` |
| `test_out_of_range_layers_rejected` | method | `tests/test_jlens.py:133` | `def test_out_of_range_layers_rejected(self, model)` |
| `test_repr` | method | `tests/test_jlens.py:359` | `def test_repr(self, fitted_lens)` |
| `test_resume_after_skip_no_double_count` | method | `tests/test_jlens.py:408` | `def test_resume_after_skip_no_double_count(self, model, tmp_path)` |
| `test_returns_jacobians_for_source_layers` | method | `tests/test_jlens.py:63` | `def test_returns_jacobians_for_source_layers(self, model)` |
| `test_save_and_load_round_trip` | method | `tests/test_jlens.py:226` | `def test_save_and_load_round_trip(self, fitted_lens, tmp_path)` |
| `test_source_below_target_enforced` | method | `tests/test_jlens.py:145` | `def test_source_below_target_enforced(self, model)` |
| `test_target_out_of_range_raises` | method | `tests/test_jlens.py:158` | `def test_target_out_of_range_raises(self, model)` |
| `test_too_short_raises` | method | `tests/test_jlens.py:29` | `def test_too_short_raises(self)` |
| `test_transport_produces_correct_shape` | method | `tests/test_jlens.py:331` | `def test_transport_produces_correct_shape(self, fitted_lens)` |
| `test_unfitted_layer_rejected` | method | `tests/test_jlens.py:281` | `def test_unfitted_layer_rejected(self, fitted_lens, model)` |
| `TestTinyDecoder` | class | `tests/test_lens_model.py:41` | `class TestTinyDecoder` |
| `TestTopoGPT3LensConfig` | class | `tests/test_lens_model.py:13` | `class TestTopoGPT3LensConfig` |
| `TestTopoGPT3LensModel` | class | `tests/test_lens_model.py:65` | `class TestTopoGPT3LensModel` |
| `TestTopoGPT3LensModelEdgeCases` | class | `tests/test_lens_model.py:278` | `class TestTopoGPT3LensModelEdgeCases` |
| `TestTopoGPT3LensModelWithRecording` | class | `tests/test_lens_model.py:214` | `class TestTopoGPT3LensModelWithRecording` |
| `lens_model` | method | `tests/test_lens_model.py:77` | `def lens_model(self, raw_model)` |
| `lens_model` | method | `tests/test_lens_model.py:218` | `def lens_model(self)` |
| `raw_model` | method | `tests/test_lens_model.py:69` | `def raw_model(self)` |
| `test_autograd_graph_tracks_through_layers` | method | `tests/test_lens_model.py:163` | `def test_autograd_graph_tracks_through_layers(self)` |
| `test_default_config` | method | `tests/test_lens_model.py:16` | `def test_default_config(self)` |
| `test_default_parameters` | method | `tests/test_lens_model.py:44` | `def test_default_parameters(self)` |
| `test_empty_sequence` | method | `tests/test_lens_model.py:281` | `def test_empty_sequence(self)` |
| `test_encode_respects_max_length` | method | `tests/test_lens_model.py:107` | `def test_encode_respects_max_length(self, lens_model)` |
| `test_encode_text_to_token_ids` | method | `tests/test_lens_model.py:87` | `def test_encode_text_to_token_ids(self, lens_model)` |
| `test_encode_with_tokenizer` | method | `tests/test_lens_model.py:95` | `def test_encode_with_tokenizer(self)` |
| `test_exposes_protocol_attributes` | method | `tests/test_lens_model.py:80` | `def test_exposes_protocol_attributes(self, lens_model, raw_model)` |
| `test_forward_differs_from_full_model` | method | `tests/test_lens_model.py:128` | `def test_forward_differs_from_full_model(self)` |
| `test_forward_output_shape` | method | `tests/test_lens_model.py:51` | `def test_forward_output_shape(self)` |
| `test_forward_plus_unembed_matches_model_logits` | method | `tests/test_lens_model.py:150` | `def test_forward_plus_unembed_matches_model_logits(self, lens_model, raw_model)` |
| `test_forward_returns_residual_only` | method | `tests/test_lens_model.py:113` | `def test_forward_returns_residual_only(self)` |
| `test_from_checkpoint_missing_raises` | method | `tests/test_lens_model.py:198` | `def test_from_checkpoint_missing_raises(self)` |
| `test_from_topogpt2_config` | method | `tests/test_lens_model.py:25` | `def test_from_topogpt2_config(self)` |
| `test_grad_enabled_deterministic` | method | `tests/test_lens_model.py:205` | `def test_grad_enabled_deterministic(self, lens_model)` |
| `test_input_device_property` | method | `tests/test_lens_model.py:180` | `def test_input_device_property(self, lens_model)` |
| `test_input_device_setter` | method | `tests/test_lens_model.py:185` | `def test_input_device_setter(self, lens_model)` |
| `test_probe_checkpoint_missing_raises` | method | `tests/test_lens_model.py:35` | `def test_probe_checkpoint_missing_raises(self, tmp_path)` |
| `test_recorder_captures_layer_outputs` | method | `tests/test_lens_model.py:225` | `def test_recorder_captures_layer_outputs(self, lens_model)` |
| `test_recorder_cleanup_on_exception` | method | `tests/test_lens_model.py:252` | `def test_recorder_cleanup_on_exception(self, lens_model)` |
| `test_recorder_detach_after_forward` | method | `tests/test_lens_model.py:264` | `def test_recorder_detach_after_forward(self, lens_model)` |
| `test_recorder_with_start_graph_at` | method | `tests/test_lens_model.py:238` | `def test_recorder_with_start_graph_at(self, lens_model)` |
| `test_single_token` | method | `tests/test_lens_model.py:291` | `def test_single_token(self)` |
| `test_tokenizer_setter` | method | `tests/test_lens_model.py:191` | `def test_tokenizer_setter(self, lens_model)` |
| `test_unembed_produces_logits` | method | `tests/test_lens_model.py:141` | `def test_unembed_produces_logits(self, lens_model)` |
| `test_weight_tied` | method | `tests/test_lens_model.py:59` | `def test_weight_tied(self)` |
| `main` | function | `topogpt3/__main__.py:6` | `def main()` |
| `ApiKey` | class | `topogpt3/api_server.py:137` | `class ApiKey` |
| `AuthState` | class | `topogpt3/api_server.py:143` | `class AuthState` |
| `ChatCompletionRequest` | class | `topogpt3/api_server.py:316` | `class ChatCompletionRequest(BaseModel)` |
| `CompletionRequest` | class | `topogpt3/api_server.py:291` | `class CompletionRequest(BaseModel)` |
| `IpBanner` | class | `topogpt3/api_server.py:250` | `class IpBanner` |
| `Message` | class | `topogpt3/api_server.py:310` | `class Message(BaseModel)` |
| `RateLimiter` | class | `topogpt3/api_server.py:219` | `class RateLimiter` |
| `ServerModel` | class | `topogpt3/api_server.py:341` | `class ServerModel` |
| `TokenBucket` | class | `topogpt3/api_server.py:202` | `class TokenBucket` |
| `__init__` | method | `topogpt3/api_server.py:220` | `def __init__(self, user_rps, admin_rps, capacity)` |
| `__init__` | method | `topogpt3/api_server.py:251` | `def __init__(self, max_failures, window)` |
| `_authenticate` | method | `topogpt3/api_server.py:668` | `def _authenticate(request)` |
| `_build_chat_prompt` | method | `topogpt3/api_server.py:859` | `def _build_chat_prompt(messages)` |
| `_check_model` | method | `topogpt3/api_server.py:850` | `def _check_model()` |
| `_check_rate_limit` | method | `topogpt3/api_server.py:694` | `def _check_rate_limit(api_key, request)` |
| `_cleanup` | method | `topogpt3/api_server.py:227` | `def _cleanup(self)` |
| `_extract_text` | method | `topogpt3/api_server.py:866` | `def _extract_text(content)` |
| `_is_eos` | method | `topogpt3/api_server.py:482` | `def _is_eos(self, token_id)` |
| `_json_error` | method | `topogpt3/api_server.py:656` | `def _json_error(status, detail)` |
| `_normalize_stop` | method | `topogpt3/api_server.py:306` | `def _normalize_stop(cls, v)` |
| `_normalize_stop` | method | `topogpt3/api_server.py:331` | `def _normalize_stop(cls, v)` |
| `_parse_keys` | method | `topogpt3/api_server.py:164` | `def _parse_keys(raw)` |
| `_probe_arch` | method | `topogpt3/api_server.py:505` | `def _probe_arch(checkpoint_dir)` |
| `_real_ip` | method | `topogpt3/api_server.py:645` | `def _real_ip(request)` |
| `_resolve_device` | method | `topogpt3/api_server.py:499` | `def _resolve_device(device)` |
| `_sanitize_stop` | method | `topogpt3/api_server.py:281` | `def _sanitize_stop(stop)` |
| `_security_middleware` | method | `topogpt3/api_server.py:617` | `def _security_middleware(request, call_next)` |
| `_setup_logging` | function | `topogpt3/api_server.py:116` | `def _setup_logging(verbose)` |
| `_sha256` | method | `topogpt3/api_server.py:192` | `def _sha256(raw)` |
| `_short_id` | method | `topogpt3/api_server.py:855` | `def _short_id()` |
| `_stream_chat` | method | `topogpt3/api_server.py:915` | `def _stream_chat(t0_ms, prompt, max_tokens, temperature, top_k, repetition_penalty, stop, auto_continue...` |
| `_stream_completion` | method | `topogpt3/api_server.py:880` | `def _stream_completion(prompt, max_tokens, temperature, top_k, repetition_penalty, stop, auto_continue...` |
| `allow` | method | `topogpt3/api_server.py:233` | `def allow(self, key, role)` |
| `chat_completions` | method | `topogpt3/api_server.py:792` | `def chat_completions(req, request)` |
| `complete` | method | `topogpt3/api_server.py:348` | `def complete(self, prompt)` |
| `completions` | method | `topogpt3/api_server.py:736` | `def completions(req, request)` |
| `consume` | method | `topogpt3/api_server.py:208` | `def consume(self, n)` |
| `health` | method | `topogpt3/api_server.py:712` | `def health(request)` |
| `is_banned` | method | `topogpt3/api_server.py:265` | `def is_banned(self, ip)` |
| `lifespan` | method | `topogpt3/api_server.py:577` | `def lifespan(app)` |
| `list_models` | method | `topogpt3/api_server.py:719` | `def list_models(request)` |
| `load_model` | method | `topogpt3/api_server.py:553` | `def load_model(checkpoint, device)` |
| `main` | method | `topogpt3/api_server.py:953` | `def main()` |
| `record_failure` | method | `topogpt3/api_server.py:257` | `def record_failure(self, ip)` |
| `stream_complete` | method | `topogpt3/api_server.py:393` | `def stream_complete(self, prompt)` |
| `validate` | method | `topogpt3/api_server.py:148` | `def validate(self, raw)` |
| `_count_unclosed_brackets` | function | `topogpt3/continuation.py:25` | `def _count_unclosed_brackets(text)` |
| `_count_unclosed_fences` | function | `topogpt3/continuation.py:36` | `def _count_unclosed_fences(text)` |
| `extract_tail_for_continuation` | function | `topogpt3/continuation.py:75` | `def extract_tail_for_continuation(text, tail_lines, tail_chars)` |
| `is_response_complete` | function | `topogpt3/continuation.py:45` | `def is_response_complete(text, min_chars)` |
| `split_at_last_newline` | function | `topogpt3/continuation.py:105` | `def split_at_last_newline(text)` |
| `EWCRegularizer` | class | `topogpt3/ewc.py:25` | `class EWCRegularizer` |
| `ReplayBuffer` | class | `topogpt3/ewc.py:223` | `class ReplayBuffer` |
| `__init__` | method | `topogpt3/ewc.py:45` | `def __init__(self, model, lambda_ewc, fisher_num_samples)` |
| `__init__` | method | `topogpt3/ewc.py:241` | `def __init__(self, max_tiers, replay_ratio)` |
| `_get_next_batch` | method | `topogpt3/ewc.py:282` | `def _get_next_batch(self, tier_index, dataloader)` |
| `add_tier` | method | `topogpt3/ewc.py:259` | `def add_tier(self, tier_index, dataloader)` |
| `compute_fisher` | method | `topogpt3/ewc.py:68` | `def compute_fisher(self, dataloader, vocab_size, device, max_batches)` |
| `load_state` | method | `topogpt3/ewc.py:203` | `def load_state(self, path)` |
| `penalty` | method | `topogpt3/ewc.py:168` | `def penalty(self, model)` |
| `sample_batch` | method | `topogpt3/ewc.py:312` | `def sample_batch(self, current_batch_size)` |
| `save_state` | method | `topogpt3/ewc.py:186` | `def save_state(self, path)` |
| `TopoExploitConfig` | class | `topogpt3/exploitgym_config.py:26` | `class TopoExploitConfig` |
| `build_loader_config` | method | `topogpt3/exploitgym_config.py:122` | `def build_loader_config(self)` |
| `build_topogpt2_config` | method | `topogpt3/exploitgym_config.py:100` | `def build_topogpt2_config(self, max_seq_len, attn_window)` |
| `ExploitGymDataLoader` | class | `topogpt3/exploitgym_loader.py:200` | `class ExploitGymDataLoader` |
| `ExploitGymLoaderConfig` | class | `topogpt3/exploitgym_loader.py:39` | `class ExploitGymLoaderConfig` |
| `__init__` | method | `topogpt3/exploitgym_loader.py:201` | `def __init__(self, config, tokenizer, logger)` |
| `_already_prepared` | method | `topogpt3/exploitgym_loader.py:218` | `def _already_prepared(self, tier)` |
| `_format_exploit_development` | method | `topogpt3/exploitgym_loader.py:168` | `def _format_exploit_development(task)` |
| `_format_patch_analysis` | method | `topogpt3/exploitgym_loader.py:153` | `def _format_patch_analysis(task)` |
| `_format_vulnerability_analysis` | method | `topogpt3/exploitgym_loader.py:137` | `def _format_vulnerability_analysis(task)` |
| `_load_all_tasks` | method | `topogpt3/exploitgym_loader.py:240` | `def _load_all_tasks(self, repo_path)` |
| `_manifest_path` | method | `topogpt3/exploitgym_loader.py:215` | `def _manifest_path(self, tier)` |
| `_parse_task_ids` | method | `topogpt3/exploitgym_loader.py:83` | `def _parse_task_ids(repo_path)` |
| `_read_file_safe` | method | `topogpt3/exploitgym_loader.py:75` | `def _read_file_safe(path, max_chars)` |
| `_task_id_to_path` | method | `topogpt3/exploitgym_loader.py:93` | `def _task_id_to_path(task_id)` |
| `_tier_paths` | method | `topogpt3/exploitgym_loader.py:209` | `def _tier_paths(self, tier)` |
| `ensure_repo` | method | `topogpt3/exploitgym_loader.py:54` | `def ensure_repo(repo_cache, logger)` |
| `flush` | method | `topogpt3/exploitgym_loader.py:343` | `def flush(split)` |
| `open_memmap` | method | `topogpt3/exploitgym_loader.py:411` | `def open_memmap(self, tier, split)` |
| `parse_task` | method | `topogpt3/exploitgym_loader.py:101` | `def parse_task(task_dir, task_id, max_chars)` |
| `prepare_tier` | method | `topogpt3/exploitgym_loader.py:264` | `def prepare_tier(self, tier_index, force)` |
| `stratum_key` | method | `topogpt3/exploitgym_loader.py:288` | `def stratum_key(task)` |
| `CMPhaseQuantSTE` | class | `topogpt3/hodge_cm.py:13` | `class CMPhaseQuantSTE(Function)` |
| `HeckeScalePool` | class | `topogpt3/hodge_cm.py:147` | `class HeckeScalePool(Module)` |
| `__init__` | method | `topogpt3/hodge_cm.py:151` | `def __init__(self, modes)` |
| `apply_cm_soft` | method | `topogpt3/hodge_cm.py:34` | `def apply_cm_soft(kr, ki, m, beta)` |
| `backward` | method | `topogpt3/hodge_cm.py:21` | `def backward(ctx, grad_out)` |
| `cm_phase_loss` | method | `topogpt3/hodge_cm.py:25` | `def cm_phase_loss(kr, ki, m)` |
| `fisher_hinge` | method | `topogpt3/hodge_cm.py:96` | `def fisher_hinge(singulars, r, margin)` |
| `forward` | method | `topogpt3/hodge_cm.py:15` | `def forward(ctx, phase, m, beta)` |
| `forward` | method | `topogpt3/hodge_cm.py:155` | `def forward(self, Kfreq)` |
| `freq_grid_laplacian` | method | `topogpt3/hodge_cm.py:49` | `def freq_grid_laplacian(fh, fw, device, dtype)` |
| `gibbs_cluster_assign` | method | `topogpt3/hodge_cm.py:123` | `def gibbs_cluster_assign(feats, n_clusters, iters, seed)` |
| `harmonic_ratio` | method | `topogpt3/hodge_cm.py:81` | `def harmonic_ratio(kr, ki, t)` |
| `hodge_heat_residue` | method | `topogpt3/hodge_cm.py:66` | `def hodge_heat_residue(kr, ki, t)` |
| `idx` | method | `topogpt3/hodge_cm.py:53` | `def idx(h, w)` |
| `langevin_refine` | method | `topogpt3/hodge_cm.py:105` | `def langevin_refine(param, energy_fn, steps, eta, temp, seed)` |
| `CheckpointPaths` | class | `topogpt3/inference.py:230` | `class CheckpointPaths` |
| `CliArgumentParser` | class | `topogpt3/inference.py:617` | `class CliArgumentParser` |
| `GaussPatchApplier` | class | `topogpt3/inference.py:364` | `class GaussPatchApplier` |
| `GenerationEngine` | class | `topogpt3/inference.py:477` | `class GenerationEngine` |
| `GenerationReport` | class | `topogpt3/inference.py:463` | `class GenerationReport` |
| `InferenceLoggerFactory` | class | `topogpt3/inference.py:160` | `class InferenceLoggerFactory` |
| `InferencePipeline` | class | `topogpt3/inference.py:564` | `class InferencePipeline` |
| `InferenceSettings` | class | `topogpt3/inference.py:42` | `class InferenceSettings` |
| `ModelAssembler` | class | `topogpt3/inference.py:382` | `class ModelAssembler` |
| `ResultRenderer` | class | `topogpt3/inference.py:535` | `class ResultRenderer` |
| `SamplingPolicy` | class | `topogpt3/inference.py:443` | `class SamplingPolicy` |
| `ScalePreset` | class | `topogpt3/inference.py:32` | `class ScalePreset` |
| `SecurePathResolver` | class | `topogpt3/inference.py:180` | `class SecurePathResolver` |
| `SeedSynchronizer` | class | `topogpt3/inference.py:419` | `class SeedSynchronizer` |
| `SourceModuleLoader` | class | `topogpt3/inference.py:214` | `class SourceModuleLoader` |
| `TokenizerFactory` | class | `topogpt3/inference.py:351` | `class TokenizerFactory` |
| `TopoGPT2ConfigAligner` | class | `topogpt3/inference.py:320` | `class TopoGPT2ConfigAligner` |
| `WeightShapeProbe` | class | `topogpt3/inference.py:276` | `class WeightShapeProbe` |
| `__init__` | method | `topogpt3/inference.py:217` | `def __init__(self, settings, logger)` |
| `__init__` | method | `topogpt3/inference.py:233` | `def __init__(self, settings)` |
| `__init__` | method | `topogpt3/inference.py:279` | `def __init__(self, settings, logger)` |
| `__init__` | method | `topogpt3/inference.py:323` | `def __init__(self, settings, source_module, logger)` |
| `__init__` | method | `topogpt3/inference.py:354` | `def __init__(self, settings, source_module)` |
| `__init__` | method | `topogpt3/inference.py:367` | `def __init__(self, settings, source_module, logger)` |
| `__init__` | method | `topogpt3/inference.py:385` | `def __init__(self, settings, source_module, logger)` |
| `__init__` | method | `topogpt3/inference.py:422` | `def __init__(self, settings, source_module, logger)` |
| `__init__` | method | `topogpt3/inference.py:480` | `def __init__(self, settings, logger)` |
| `__init__` | method | `topogpt3/inference.py:538` | `def __init__(self, settings, logger)` |
| `__init__` | method | `topogpt3/inference.py:567` | `def __init__(self, settings, logger)` |
| `apply` | method | `topogpt3/inference.py:428` | `def apply(self)` |
| `apply_if_enabled` | method | `topogpt3/inference.py:373` | `def apply_if_enabled(self)` |
| `assemble` | method | `topogpt3/inference.py:391` | `def assemble(self, aligned_cfg, paths)` |
| `assert_ready` | method | `topogpt3/inference.py:257` | `def assert_ready(self)` |
| `build` | method | `topogpt3/inference.py:164` | `def build(settings)` |
| `build` | method | `topogpt3/inference.py:329` | `def build(self, n_kv_heads, vocab_size)` |
| `build` | method | `topogpt3/inference.py:358` | `def build(self)` |
| `build_parser` | method | `topogpt3/inference.py:621` | `def build_parser()` |
| `detect_n_kv_heads` | method | `topogpt3/inference.py:283` | `def detect_n_kv_heads(self, weights_path, d_model, n_heads)` |
| `execute` | method | `topogpt3/inference.py:573` | `def execute(self)` |
| `from_settings` | method | `topogpt3/inference.py:452` | `def from_settings(cls, settings)` |
| `load` | method | `topogpt3/inference.py:221` | `def load(self)` |
| `main` | method | `topogpt3/inference.py:723` | `def main(argv)` |
| `model_file` | method | `topogpt3/inference.py:245` | `def model_file(self)` |
| `parse` | method | `topogpt3/inference.py:700` | `def parse(argv)` |
| `preset` | method | `topogpt3/inference.py:118` | `def preset(self)` |
| `render` | method | `topogpt3/inference.py:542` | `def render(self, report)` |
| `require_existing_file` | method | `topogpt3/inference.py:200` | `def require_existing_file(path, expected_suffix)` |
| `resolve_under` | method | `topogpt3/inference.py:184` | `def resolve_under(root)` |
| `run` | method | `topogpt3/inference.py:485` | `def run(self, model, tokenizer, prompt, policy)` |
| `scale_presets` | method | `topogpt3/inference.py:103` | `def scale_presets()` |
| `slot_dir` | method | `topogpt3/inference.py:241` | `def slot_dir(self)` |
| `state_file` | method | `topogpt3/inference.py:251` | `def state_file(self)` |
| `tokens_per_second` | method | `topogpt3/inference.py:472` | `def tokens_per_second(self, elapsed_floor)` |
| `validate` | method | `topogpt3/inference.py:128` | `def validate(self)` |
| `CheckpointPaths` | class | `topogpt3/inference_hrm.py:413` | `class CheckpointPaths` |
| `CliArgumentParser` | class | `topogpt3/inference_hrm.py:1283` | `class CliArgumentParser` |
| `GaussPatchApplier` | class | `topogpt3/inference_hrm.py:546` | `class GaussPatchApplier` |
| `GenerationReasoningSummary` | class | `topogpt3/inference_hrm.py:661` | `class GenerationReasoningSummary` |
| `GenerationReport` | class | `topogpt3/inference_hrm.py:985` | `class GenerationReport` |
| `HRMGenerationEngine` | class | `topogpt3/inference_hrm.py:1000` | `class HRMGenerationEngine` |
| `HRMInferencePipeline` | class | `topogpt3/inference_hrm.py:1230` | `class HRMInferencePipeline` |
| `HRMInferenceSettings` | class | `topogpt3/inference_hrm.py:134` | `class HRMInferenceSettings` |
| `HRMLoggerFactory` | class | `topogpt3/inference_hrm.py:343` | `class HRMLoggerFactory` |
| `HierarchicalRecursiveReasoner` | class | `topogpt3/inference_hrm.py:727` | `class HierarchicalRecursiveReasoner` |
| `LatentChangeMetric` | class | `topogpt3/inference_hrm.py:624` | `class LatentChangeMetric` |
| `LogitsSampler` | class | `topogpt3/inference_hrm.py:935` | `class LogitsSampler` |
| `ModelAssembler` | class | `topogpt3/inference_hrm.py:564` | `class ModelAssembler` |
| `ReasoningIterationStats` | class | `topogpt3/inference_hrm.py:648` | `class ReasoningIterationStats` |
| `RecursiveReasoningConfig` | class | `topogpt3/inference_hrm.py:64` | `class RecursiveReasoningConfig` |
| `ResultRenderer` | class | `topogpt3/inference_hrm.py:1189` | `class ResultRenderer` |
| `SamplingPolicy` | class | `topogpt3/inference_hrm.py:963` | `class SamplingPolicy` |
| `ScalePreset` | class | `topogpt3/inference_hrm.py:54` | `class ScalePreset` |
| `SecurePathResolver` | class | `topogpt3/inference_hrm.py:363` | `class SecurePathResolver` |
| `SeedSynchronizer` | class | `topogpt3/inference_hrm.py:601` | `class SeedSynchronizer` |
| `SourceModuleLoader` | class | `topogpt3/inference_hrm.py:397` | `class SourceModuleLoader` |
| `SparseHighLevelStateCache` | class | `topogpt3/inference_hrm.py:684` | `class SparseHighLevelStateCache` |
| `TokenizerFactory` | class | `topogpt3/inference_hrm.py:533` | `class TokenizerFactory` |
| `TopoGPT2ConfigAligner` | class | `topogpt3/inference_hrm.py:502` | `class TopoGPT2ConfigAligner` |
| `WeightShapeProbe` | class | `topogpt3/inference_hrm.py:459` | `class WeightShapeProbe` |
| `__init__` | method | `topogpt3/inference_hrm.py:400` | `def __init__(self, settings, logger)` |
| `__init__` | method | `topogpt3/inference_hrm.py:416` | `def __init__(self, settings)` |
| `__init__` | method | `topogpt3/inference_hrm.py:462` | `def __init__(self, settings, logger)` |
| `__init__` | method | `topogpt3/inference_hrm.py:505` | `def __init__(self, settings, source_module, logger)` |
| `__init__` | method | `topogpt3/inference_hrm.py:536` | `def __init__(self, settings, source_module)` |
| `__init__` | method | `topogpt3/inference_hrm.py:549` | `def __init__(self, settings, source_module, logger)` |
| `__init__` | method | `topogpt3/inference_hrm.py:567` | `def __init__(self, settings, source_module, logger)` |
| `__init__` | method | `topogpt3/inference_hrm.py:604` | `def __init__(self, settings, source_module, logger)` |
| `__init__` | method | `topogpt3/inference_hrm.py:627` | `def __init__(self, epsilon_floor)` |
| `__init__` | method | `topogpt3/inference_hrm.py:693` | `def __init__(self, persist_tokens)` |
| `__init__` | method | `topogpt3/inference_hrm.py:768` | `def __init__(self, layers, final_norm, reasoning_config, logger)` |
| `__init__` | method | `topogpt3/inference_hrm.py:938` | `def __init__(self, logger)` |
| `__init__` | method | `topogpt3/inference_hrm.py:1011` | `def __init__(self, settings, logger)` |
| `__init__` | method | `topogpt3/inference_hrm.py:1192` | `def __init__(self, settings, logger)` |
| `__init__` | method | `topogpt3/inference_hrm.py:1233` | `def __init__(self, settings, logger)` |
| `_encode_prompt` | method | `topogpt3/inference_hrm.py:1016` | `def _encode_prompt(self, model, prompt_ids)` |
| `_full_pass` | method | `topogpt3/inference_hrm.py:793` | `def _full_pass(self, z_in, base_kvs)` |
| `_window_pass` | method | `topogpt3/inference_hrm.py:808` | `def _window_pass(self, z_in, base_kvs, window)` |
| `absorb` | method | `topogpt3/inference_hrm.py:671` | `def absorb(self, sample)` |
| `apply` | method | `topogpt3/inference_hrm.py:610` | `def apply(self)` |
| `apply_if_enabled` | method | `topogpt3/inference_hrm.py:555` | `def apply_if_enabled(self)` |
| `assemble` | method | `topogpt3/inference_hrm.py:573` | `def assemble(self, aligned_cfg, paths)` |
| `assert_ready` | method | `topogpt3/inference_hrm.py:440` | `def assert_ready(self)` |
| `build` | method | `topogpt3/inference_hrm.py:347` | `def build(settings)` |
| `build` | method | `topogpt3/inference_hrm.py:511` | `def build(self, n_kv_heads, vocab_size)` |
| `build` | method | `topogpt3/inference_hrm.py:540` | `def build(self)` |
| `build_parser` | method | `topogpt3/inference_hrm.py:1287` | `def build_parser()` |
| `commit` | method | `topogpt3/inference_hrm.py:716` | `def commit(self, new_state)` |
| `detect_n_kv_heads` | method | `topogpt3/inference_hrm.py:466` | `def detect_n_kv_heads(self, weights_path, d_model, n_heads)` |
| `execute` | method | `topogpt3/inference_hrm.py:1239` | `def execute(self)` |
| `from_settings` | method | `topogpt3/inference_hrm.py:973` | `def from_settings(cls, settings)` |
| `get_or_init` | method | `topogpt3/inference_hrm.py:700` | `def get_or_init(self, reference)` |
| `invalidate` | method | `topogpt3/inference_hrm.py:721` | `def invalidate(self)` |
| `load` | method | `topogpt3/inference_hrm.py:404` | `def load(self)` |
| `main` | method | `topogpt3/inference_hrm.py:1494` | `def main(argv)` |
| `model_file` | method | `topogpt3/inference_hrm.py:428` | `def model_file(self)` |
| `num_layers` | method | `topogpt3/inference_hrm.py:789` | `def num_layers(self)` |
| `parse` | method | `topogpt3/inference_hrm.py:1448` | `def parse(argv)` |
| `preset` | method | `topogpt3/inference_hrm.py:234` | `def preset(self)` |
| `reason` | method | `topogpt3/inference_hrm.py:827` | `def reason(self, z_initial, base_kvs, cached_refinement)` |
| `relative_change` | method | `topogpt3/inference_hrm.py:632` | `def relative_change(self, current, previous)` |
| `render` | method | `topogpt3/inference_hrm.py:1196` | `def render(self, report)` |
| `require_existing_file` | method | `topogpt3/inference_hrm.py:383` | `def require_existing_file(path, expected_suffix)` |
| `resolve_under` | method | `topogpt3/inference_hrm.py:367` | `def resolve_under(root)` |
| `run` | method | `topogpt3/inference_hrm.py:1048` | `def run(self, model, tokenizer, prompt, policy)` |
| `sample` | method | `topogpt3/inference_hrm.py:941` | `def sample(self, logits, token_history, temperature, top_k, repetition_penalty)` |
| `scale_presets` | method | `topogpt3/inference_hrm.py:221` | `def scale_presets()` |
| `slot_dir` | method | `topogpt3/inference_hrm.py:424` | `def slot_dir(self)` |
| `state_file` | method | `topogpt3/inference_hrm.py:434` | `def state_file(self)` |
| `tokens_per_second` | method | `topogpt3/inference_hrm.py:995` | `def tokens_per_second(self, elapsed_floor)` |
| `validate` | method | `topogpt3/inference_hrm.py:244` | `def validate(self)` |
| `ActivationRecorder` | class | `topogpt3/jlens.py:69` | `class ActivationRecorder` |
| `JacobianLens` | class | `topogpt3/jlens.py:459` | `class JacobianLens` |
| `SliceData` | class | `topogpt3/jlens.py:664` | `class SliceData` |
| `TopoGPT3JLensAppConfig` | class | `topogpt3/jlens.py:56` | `class TopoGPT3JLensAppConfig` |
| `TopoGPT3JLensFitConfig` | class | `topogpt3/jlens.py:37` | `class TopoGPT3JLensFitConfig` |
| `__enter__` | method | `topogpt3/jlens.py:113` | `def __enter__(self)` |
| `__exit__` | method | `topogpt3/jlens.py:126` | `def __exit__(self)` |
| `__init__` | method | `topogpt3/jlens.py:87` | `def __init__(self, blocks, at)` |
| `__init__` | method | `topogpt3/jlens.py:470` | `def __init__(self, jacobians)` |
| `__post_init__` | method | `topogpt3/jlens.py:692` | `def __post_init__(self)` |
| `__repr__` | method | `topogpt3/jlens.py:482` | `def __repr__(self)` |
| `_atomic_save` | method | `topogpt3/jlens.py:283` | `def _atomic_save(obj, path)` |
| `_check_layer_indices` | method | `topogpt3/jlens.py:162` | `def _check_layer_indices(source_layers, target_layer, n_layers)` |

Next: [SYMBOLS_p2.md](SYMBOLS_p2.md)
