ithrl 0.2.0__tar.gz → 0.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ithrl-0.2.0 → ithrl-0.4.0}/.gitignore +1 -0
- ithrl-0.4.0/CHANGELOG.md +82 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/CONTRIBUTING.md +144 -49
- {ithrl-0.2.0 → ithrl-0.4.0}/PKG-INFO +48 -19
- {ithrl-0.2.0 → ithrl-0.4.0}/README.md +47 -18
- ithrl-0.4.0/ROADMAP.md +204 -0
- ithrl-0.4.0/docs/architecture.md +309 -0
- ithrl-0.4.0/docs/branding/branding.css +39 -0
- ithrl-0.4.0/docs/branding/ithrl-favicon.svg +16 -0
- ithrl-0.4.0/docs/branding/ithrl-icon.svg +12 -0
- ithrl-0.4.0/docs/branding/ithrl-logo-dark.svg +21 -0
- ithrl-0.4.0/docs/branding/ithrl-logo-light.svg +21 -0
- ithrl-0.4.0/docs/branding/ithrl-logo.png +0 -0
- ithrl-0.4.0/docs/branding/ithrl-social.png +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/docs/cli.md +117 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/docs/decisions/0003-strict-fresh-baselines.md +4 -3
- ithrl-0.4.0/docs/fuzzing.md +185 -0
- ithrl-0.4.0/docs/index.md +51 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/docs/measurements.md +119 -26
- ithrl-0.4.0/docs/native-runs.md +140 -0
- ithrl-0.4.0/docs/reduction.md +259 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/docs/research/context-fuzzing.md +36 -41
- {ithrl-0.2.0 → ithrl-0.4.0}/docs/research/feasibility.md +7 -7
- {ithrl-0.2.0 → ithrl-0.4.0}/docs/research/index.md +2 -0
- ithrl-0.4.0/docs/research/ordinary-session-investigation.md +105 -0
- ithrl-0.4.0/docs/research/passive-compaction-investigation.md +91 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/docs/research/reduction-design.md +118 -1
- ithrl-0.4.0/docs/results.md +304 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/docs/third-party-notices.txt +5 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/docs/troubleshooting.md +69 -51
- {ithrl-0.2.0 → ithrl-0.4.0}/pyproject.toml +33 -7
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/adapters/codex/context.py +16 -34
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/adapters/codex/decisions.py +0 -2
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/adapters/codex/parser.py +0 -2
- ithrl-0.4.0/src/ithrl/adapters/codex/reacquisition.py +332 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/adapters/contracts.py +39 -2
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/adapters/copilot/context.py +31 -39
- ithrl-0.4.0/src/ithrl/adapters/copilot/reacquisition.py +293 -0
- ithrl-0.4.0/src/ithrl/adapters/reacquisition.py +56 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/adapters/registry.py +55 -2
- ithrl-0.4.0/src/ithrl/case/evidence.py +346 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/case/source_storage.py +10 -17
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/cli/__init__.py +44 -3
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/cli/fuzz_output.py +3 -10
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/cli/fuzz_run.py +5 -1
- ithrl-0.4.0/src/ithrl/cli/inspect.py +339 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/cli/native.py +28 -9
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/cli/output.py +13 -7
- ithrl-0.4.0/src/ithrl/cli/paths.py +51 -0
- ithrl-0.4.0/src/ithrl/cli/preparation.py +265 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/cli/sampled.py +12 -11
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/cli/sampled_output.py +58 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/cli/sampled_reduction.py +132 -106
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/cli/sampled_session.py +22 -69
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/cli/shrink.py +2 -30
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/context.py +34 -12
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/execution/budget.py +136 -1
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/execution/contracts.py +6 -2
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/experiment.py +68 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/fuzz/contracts.py +10 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/fuzz/deterministic.py +2 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/fuzz/generation.py +2 -1
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/fuzz/sampling.py +2 -1
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/fuzz/simplify.py +3 -3
- ithrl-0.4.0/src/ithrl/inspection.py +778 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/mutation.py +30 -13
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/observations.py +18 -15
- ithrl-0.4.0/src/ithrl/preparation.py +255 -0
- ithrl-0.4.0/src/ithrl/reacquisition.py +313 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/reduce/__init__.py +2 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/reduce/contracts.py +362 -29
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/reduce/engine.py +243 -23
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/reduce/search.py +63 -56
- ithrl-0.4.0/src/ithrl/results/inspection.py +382 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/results/models.py +6 -13
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/results/storage.py +22 -36
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/results/summary.py +3 -9
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/results/validation.py +31 -1
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/run_state.py +54 -8
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/codex/capability.py +7 -46
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/codex/configuration.py +23 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/codex/isolation.py +9 -53
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/codex/materialize.py +122 -55
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/codex/policy.py +2 -2
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/codex/protocol.py +10 -4
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/codex/runner.py +4 -1
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/codex/runtime_configuration.py +26 -15
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/codex/schema.py +1 -13
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/contracts.py +16 -6
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/copilot/capability.py +7 -44
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/copilot/isolation.py +14 -60
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/copilot/materialize.py +64 -34
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/copilot/policy.py +1 -1
- ithrl-0.4.0/src/ithrl/runner/runtime/probes.py +49 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/runtime/process.py +4 -13
- ithrl-0.4.0/src/ithrl/runner/runtime/programs.py +75 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/validation.py +14 -21
- ithrl-0.4.0/src/ithrl/sampled_run_metadata.py +87 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/sampling.py +38 -6
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/statistics.py +0 -3
- ithrl-0.4.0/src/ithrl/text_sections.py +218 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/workflow.py +59 -4
- ithrl-0.2.0/CHANGELOG.md +0 -128
- ithrl-0.2.0/ROADMAP.md +0 -126
- ithrl-0.2.0/docs/architecture.md +0 -221
- ithrl-0.2.0/docs/index.md +0 -32
- ithrl-0.2.0/docs/native-runs.md +0 -427
- ithrl-0.2.0/docs/results.md +0 -166
- ithrl-0.2.0/src/ithrl/case/evidence.py +0 -210
- ithrl-0.2.0/src/ithrl/cli/paths.py +0 -24
- {ithrl-0.2.0 → ithrl-0.4.0}/LICENSE +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/docs/decisions/0001-native-evidence-and-controlled-runners.md +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/docs/decisions/0002-fixed-samples-and-durable-dispatch.md +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/docs/decisions/0004-single-finding-fuzz-confirmation.md +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/docs/decisions/index.md +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/examples/fuzz/campaign.toml +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/examples/fuzz/codex.jsonl +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/examples/fuzz/copilot.jsonl +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/__init__.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/__main__.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/adapters/__init__.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/adapters/_jsonl.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/adapters/codex/__init__.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/adapters/codex/discovery.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/adapters/copilot/__init__.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/adapters/copilot/decisions.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/adapters/copilot/discovery.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/adapters/copilot/parser.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/adapters/discovery.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/adapters/errors.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/behavior.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/calibration.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/case/__init__.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/case/contracts.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/case/filesystem.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/case/source.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/case/source_context.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/case/storage.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/cli/extract.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/cli/fuzz.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/cli/fuzz_session.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/cli/progress.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/decisions.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/examples/synthetic-trace.json +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/execution/__init__.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/execution/preflight.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/extraction.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/fuzz/__init__.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/fuzz/campaign.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/fuzz/configuration.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/fuzz/progress.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/fuzz/statistics.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/measurement.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/path_safety.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/results/__init__.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/__init__.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/codex/__init__.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/codex/protocol_contracts.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/codex/relay.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/codex/transcript.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/codex/worker.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/copilot/__init__.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/copilot/configuration.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/copilot/protocol/__init__.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/copilot/protocol/contracts.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/copilot/protocol/decoding.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/copilot/protocol/parser.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/copilot/protocol/state.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/copilot/runner.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/copilot/sdk_runtime.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/copilot/worker.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/evidence.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/fake.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/registry.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/runtime/__init__.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/runtime/certificates.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/runtime/contracts.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/runtime/output.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/runtime/protection.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/runner/runtime/state.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/synthetic.py +0 -0
- {ithrl-0.2.0 → ithrl-0.4.0}/src/ithrl/timestamps.py +0 -0
ithrl-0.4.0/CHANGELOG.md
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# CHANGELOG
|
|
2
|
+
|
|
3
|
+
## v0.4.0 (2026-11-14)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- Inspect recorded operations across compaction ([#69](https://github.com/eberkut/ithrl/pull/69), [`3594d32`](https://github.com/eberkut/ithrl/commit/3594d3212b6dbc92276223f373908529e95a5e9e))
|
|
8
|
+
- Prepare native reduction experiments offline ([#66](https://github.com/eberkut/ithrl/pull/66), [`13c9626`](https://github.com/eberkut/ithrl/commit/13c96260335982a3a3ce52ea9c73b327f649efce))
|
|
9
|
+
- Qualify passive compaction inspection ([#70](https://github.com/eberkut/ithrl/pull/70), [`3b43a1b`](https://github.com/eberkut/ithrl/commit/3b43a1b8ef0c02bfd0182650460e4efed1c13076))
|
|
10
|
+
|
|
11
|
+
### Performance Improvements
|
|
12
|
+
|
|
13
|
+
- Reduce workflow overhead and track performance ([#71](https://github.com/eberkut/ithrl/pull/71), [`ae0c8cd`](https://github.com/eberkut/ithrl/commit/ae0c8cd238eff742ec51076a1054007580c9c0db))
|
|
14
|
+
|
|
15
|
+
## v0.3.0 (2026-11-10)
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
|
|
19
|
+
- Add finer final-response reduction ([#52](https://github.com/eberkut/ithrl/pull/52), [`562124a`](https://github.com/eberkut/ithrl/commit/562124ab071788a52e0d50dd538048ee67de464b))
|
|
20
|
+
- Define source-bound text-section removal ([#51](https://github.com/eberkut/ithrl/pull/51), [`56c9e6c`](https://github.com/eberkut/ithrl/commit/56c9e6cfb24a83dc32573232b447e574cb0f616f))
|
|
21
|
+
- Inspect retained context without provider calls ([#49](https://github.com/eberkut/ithrl/pull/49), [`5604688`](https://github.com/eberkut/ithrl/commit/5604688e269543305fe4b7b253a703dc404c1139))
|
|
22
|
+
- **reduce**: Qualify paragraph removal on ordinary sessions ([#58](https://github.com/eberkut/ithrl/pull/58), [`5c6ae26`](https://github.com/eberkut/ithrl/commit/5c6ae26760ea7bd94b406ebf9ba3214e5c4ce64c))
|
|
23
|
+
|
|
24
|
+
### Refactoring
|
|
25
|
+
|
|
26
|
+
- Simplify experiment workflows and test fixtures ([#50](https://github.com/eberkut/ithrl/pull/50), [`782bfa2`](https://github.com/eberkut/ithrl/commit/782bfa2692a49a5bb2a4f555801abda23cde6fda))
|
|
27
|
+
|
|
28
|
+
## v0.2.0 (2026-11-02)
|
|
29
|
+
|
|
30
|
+
### Bug Fixes
|
|
31
|
+
|
|
32
|
+
- **codex**: Bound and account for physical provider requests ([#33](https://github.com/eberkut/ithrl/pull/33), [`88529d6`](https://github.com/eberkut/ithrl/commit/88529d6f8b930dbcc546a0011f085c67d0bef1ac))
|
|
33
|
+
- **copilot**: Recover catalogue connections and qualify fuzzing ([#37](https://github.com/eberkut/ithrl/pull/37), [`ff6cf63`](https://github.com/eberkut/ithrl/commit/ff6cf6324325f7f6dad8f8c9c80ea58bfe4e249a))
|
|
34
|
+
- **copilot**: Restore native session prefixes through the CLI ([#34](https://github.com/eberkut/ithrl/pull/34), [`36845dd`](https://github.com/eberkut/ithrl/commit/36845ddb8239c0a488552297aaa70e6211979e59))
|
|
35
|
+
- **fuzz**: Preserve accounting and validate campaign recovery ([#25](https://github.com/eberkut/ithrl/pull/25), [`f1f4793`](https://github.com/eberkut/ithrl/commit/f1f479318fe914f3033667b65381f7101bd3aaea))
|
|
36
|
+
- **sampling**: Enforce calibration budgets and report durable progress ([#32](https://github.com/eberkut/ithrl/pull/32), [`bd40577`](https://github.com/eberkut/ithrl/commit/bd40577c734d70b36e59a9e6d3babafa1502bfd3))
|
|
37
|
+
|
|
38
|
+
### Features
|
|
39
|
+
|
|
40
|
+
- **extract**: Support literal predicates for native decisions ([#31](https://github.com/eberkut/ithrl/pull/31), [`3b18c2b`](https://github.com/eberkut/ithrl/commit/3b18c2bdd814c4e4c3bf79825a8cab77eb433661))
|
|
41
|
+
- **fuzz**: Add mutation and sampled comparison services ([`56ee8b8`](https://github.com/eberkut/ithrl/commit/56ee8b8c5e1370b91db6c9c952eb8ceec19c95ae))
|
|
42
|
+
- **fuzz**: Expose inspectable campaigns and saved results ([#24](https://github.com/eberkut/ithrl/pull/24), [`e60e472`](https://github.com/eberkut/ithrl/commit/e60e47230b99e50ff42de7cd8fb89b3769e6d6e2))
|
|
43
|
+
- **fuzz**: Persist campaigns and recover interrupted execution ([#22](https://github.com/eberkut/ithrl/pull/22), [`806667f`](https://github.com/eberkut/ithrl/commit/806667f47e8bae1ccbf9b32fadc511ca559675d0))
|
|
44
|
+
- **fuzz**: Qualify native Codex text appends ([#28](https://github.com/eberkut/ithrl/pull/28), [`a5b880b`](https://github.com/eberkut/ithrl/commit/a5b880b60ef9834bb57b2c4950e18cd17ff0b275))
|
|
45
|
+
|
|
46
|
+
### Performance Improvements
|
|
47
|
+
|
|
48
|
+
- Streamline local workflows and harden result publication ([#36](https://github.com/eberkut/ithrl/pull/36), [`43b9d81`](https://github.com/eberkut/ithrl/commit/43b9d81d0dcff85708da5c914986a68bbe8141db))
|
|
49
|
+
|
|
50
|
+
## v0.1.0 (2026-10-23)
|
|
51
|
+
|
|
52
|
+
### Bug Fixes
|
|
53
|
+
|
|
54
|
+
- **adapters**: Detect saved session formats structurally ([`c8256b9`](https://github.com/eberkut/ithrl/commit/c8256b93ce79fb9c3f025e2b92a970f336497218))
|
|
55
|
+
- **reduce**: Validate native candidates before sampled dispatch ([`90d4c0d`](https://github.com/eberkut/ithrl/commit/90d4c0d11a206389d44c6a59991df53c19802514))
|
|
56
|
+
- **runner**: Clarify Codex isolation prerequisites ([`4a409c1`](https://github.com/eberkut/ithrl/commit/4a409c1f37caf301a00cfbd20d3a95cf15844eb9))
|
|
57
|
+
|
|
58
|
+
### Features
|
|
59
|
+
|
|
60
|
+
- Establish credential-free context reduction core ([`c517409`](https://github.com/eberkut/ithrl/commit/c517409c06e40c92b24a8b990685abd4acc9a9ba))
|
|
61
|
+
- **adapters**: Parse Codex and Copilot session evidence ([`3b81c26`](https://github.com/eberkut/ithrl/commit/3b81c2607397d884bcfb1b19dbf995f66ccb0107))
|
|
62
|
+
- **calibration**: Add bounded sampled runner calibration ([`f9db180`](https://github.com/eberkut/ithrl/commit/f9db18012565badc2cf2a3a4a6158487d4c5fb70))
|
|
63
|
+
- **case**: Preserve immutable native source evidence ([`d108b96`](https://github.com/eberkut/ithrl/commit/d108b96487ccb69f6b36642ae331d36272038722))
|
|
64
|
+
- **cli**: Add an installed example and focused public guides ([`1efc2ff`](https://github.com/eberkut/ithrl/commit/1efc2ffb03c734b666b1d1da9b5610ad62970267))
|
|
65
|
+
- **cli**: Add guarded native calibration ([`06d2bfb`](https://github.com/eberkut/ithrl/commit/06d2bfb3f4d34f4dc845d9d6877257e4e79f9120))
|
|
66
|
+
- **cli**: Integrate sampled reduction and exact resume ([`40be766`](https://github.com/eberkut/ithrl/commit/40be7664ba90ac5341d93fb5a725dbfa0efd48d3))
|
|
67
|
+
- **extract**: Support ordinary Codex and Copilot sessions ([`3cd0c10`](https://github.com/eberkut/ithrl/commit/3cd0c1092aeb3669b86fdae07e887d28ba9d685f))
|
|
68
|
+
- **reduce**: Add sampled contracts and durable progress ([`650252d`](https://github.com/eberkut/ithrl/commit/650252d76e8d7d72f3f5715ecaf488e752dc18b1))
|
|
69
|
+
- **reduce**: Integrate sampled candidate search ([`72958d8`](https://github.com/eberkut/ithrl/commit/72958d8d6ae0307ca2d090a2a10d02606bafdea6))
|
|
70
|
+
- **runner**: Add Codex final-response execution ([`ad30a9a`](https://github.com/eberkut/ithrl/commit/ad30a9a17b0e665056eca9b415cbf4e2770a7bf7))
|
|
71
|
+
- **runner**: Add controlled Copilot execution ([`c9d1bb2`](https://github.com/eberkut/ithrl/commit/c9d1bb23bfdd98bb022fd0b62ca9b8a81021fe4b))
|
|
72
|
+
- **runner**: Add isolated execution runtime ([`17d2224`](https://github.com/eberkut/ithrl/commit/17d22240414cdb32d4464f16e7b2621d99729ca0))
|
|
73
|
+
- **runner**: Add shared execution foundation ([`89536e9`](https://github.com/eberkut/ithrl/commit/89536e919730fc0abf680a2928a89761c78339f5))
|
|
74
|
+
- **runner**: Validate isolated native calibration ([`b0cd438`](https://github.com/eberkut/ithrl/commit/b0cd438d1fa280f0ddafa39d23653a7ac926da1b))
|
|
75
|
+
- **sampling**: Collect bounded fresh-baseline blocks ([`16abf30`](https://github.com/eberkut/ithrl/commit/16abf30b964eae299177d1e1dade6f545ffbda31))
|
|
76
|
+
- **sampling**: Support paced execution and safe overload replacement ([`5d70fbd`](https://github.com/eberkut/ithrl/commit/5d70fbd26901a0574883e07fd4055644c8515e80))
|
|
77
|
+
- **statistics**: Add fixed-sample candidate classification ([`fb26fca`](https://github.com/eberkut/ithrl/commit/fb26fcaf7c064f49ac7d63b4e2ceb1ab3d6dcdb5))
|
|
78
|
+
- **workflow**: Confirm sampled reductions with fresh evidence ([`ee291e4`](https://github.com/eberkut/ithrl/commit/ee291e4d906394452da61640989cef594f62caf7))
|
|
79
|
+
|
|
80
|
+
### Refactoring
|
|
81
|
+
|
|
82
|
+
- Simplify execution paths and avoid redundant context copies ([`34ab361`](https://github.com/eberkut/ithrl/commit/34ab36165fed08678a80679b3f1753e6f26f63f8))
|
|
@@ -26,8 +26,9 @@ For task-specific instructions, see [documentation](#documentation),
|
|
|
26
26
|
|
|
27
27
|
## Development setup
|
|
28
28
|
|
|
29
|
-
Use [uv](https://docs.astral.sh/uv/)
|
|
30
|
-
|
|
29
|
+
Use [uv](https://docs.astral.sh/uv/) at the version required by `tool.uv.required-version` in
|
|
30
|
+
`pyproject.toml`, and Python 3.12, 3.13 or 3.14. CI reads the same uv pin through `setup-uv`'s
|
|
31
|
+
`version-file` input. Python 3.14 is the primary development version. From the repository root:
|
|
31
32
|
|
|
32
33
|
```bash
|
|
33
34
|
uv sync --locked --all-groups --all-extras
|
|
@@ -71,16 +72,73 @@ Install the local hooks with `uv run pre-commit install`; run them on the whole
|
|
|
71
72
|
`uv run pre-commit run --all-files`. Ruff and rumdl format files in place. CI checks formatting
|
|
72
73
|
without modifying files.
|
|
73
74
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
75
|
+
Markdown-only PRs skip Python linting, typing, unit tests and dependency audits. They still run
|
|
76
|
+
Markdown, documentation, strict site, workflow, dependency-review and package checks. Mixed changes,
|
|
77
|
+
unknown paths, configuration changes or 3,000 or more changed files require full validation;
|
|
78
|
+
classification includes deleted files and both sides of renames. Failed detection fails Workflows.
|
|
79
|
+
Main, scheduled, manual and release runs always validate fully. The required `Python tests` summary
|
|
80
|
+
accepts a skipped matrix only after successful Markdown-only classification; missing decisions,
|
|
81
|
+
failures and unexpected skips fail it.
|
|
82
|
+
|
|
83
|
+
The logo sources, usage rules and regeneration commands are in [branding](docs/branding/README.md).
|
|
84
|
+
|
|
85
|
+
## Performance and maintainability
|
|
86
|
+
|
|
87
|
+
Measure the affected workflow before optimizing it. Keep sanitized input generation and setup
|
|
88
|
+
outside timings; record the revision, locked environment, input size, repeats and noise. Measure
|
|
89
|
+
allocations separately from elapsed time. Include index/cache construction and retained memory,
|
|
90
|
+
then repeat the same workload after the change. Provider latency and local implementation overhead
|
|
91
|
+
are separate measurements.
|
|
92
|
+
|
|
93
|
+
- Choose collections for their operations: a set for repeated membership, a dictionary for keyed
|
|
94
|
+
lookup, and a sequence for authoritative order. For example, fuzz proposal membership can use a
|
|
95
|
+
local set while seeded traversal retains the original sequence. Measure scaling near admitted
|
|
96
|
+
limits as well as small inputs; Radon scores alone do not justify a refactor.
|
|
97
|
+
- Keep reusable derived facts with the owner of their immutable inputs. Define copy/invalidation
|
|
98
|
+
behavior and memory bounds before adding a cache. A frozen model can still copy stale derived
|
|
99
|
+
state. Do not expose mutable internal indexes or borrow mutable native records across owners.
|
|
100
|
+
- Bound both output and examined work. Count rejected and duplicate proposals where the work cap
|
|
101
|
+
requires it. Avoid repeated whole-input scans when the required operation is a keyed lookup.
|
|
102
|
+
Release large temporary buffers before processing the next item.
|
|
103
|
+
- Batch fresh persistence reads where their consistency contract permits it. Preserve schema,
|
|
104
|
+
identity, chronology and corruption checks, locks, durable dispatch and accounting. Persisted
|
|
105
|
+
files and external state need fresh validation; an in-memory cache is not their authority. Reuse
|
|
106
|
+
validated facts within one synchronous operation; refresh after callbacks, waits or execution.
|
|
107
|
+
- Test configurable limits with small inputs at the exact boundary and one beyond; assert policy
|
|
108
|
+
defaults separately when needed. Use sparse files for size-only filesystem checks. Share completed
|
|
109
|
+
immutable fixture data, not mutable cases or stores. Retain real process, SQLite and distribution
|
|
110
|
+
checks when they establish lifecycle, recovery or artifact behavior.
|
|
111
|
+
- Share an existing mechanism only when its ownership, errors and side effects fit. Require a
|
|
112
|
+
concrete maintenance benefit from abstractions; keep different harness and statistical rules
|
|
113
|
+
explicit. Compare behavior, failure paths and recovery as well as performance.
|
|
114
|
+
|
|
115
|
+
### Benchmarks
|
|
116
|
+
|
|
117
|
+
The permanent [pytest-benchmark](https://pytest-benchmark.readthedocs.io/en/latest/) workloads
|
|
118
|
+
live in `tests/benchmarks/`. They use sanitized inputs and no native harness or provider.
|
|
119
|
+
Ordinary test runs skip them. From the repository root, save a baseline before changing code:
|
|
80
120
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
121
|
+
```bash
|
|
122
|
+
uv run pytest tests/benchmarks --benchmark-only --no-cov --benchmark-save=before
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
After the change, compare against that saved run:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
uv run pytest tests/benchmarks --benchmark-only --no-cov --benchmark-compare=0001 --benchmark-save=after
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Replace `0001` with the baseline ID printed by the first command. The plugin keeps saved runs
|
|
132
|
+
under the ignored `.benchmarks/` directory. Compare identical workloads on the same interpreter
|
|
133
|
+
and machine with low competing load. Check the distributions and memory tradeoffs; do not infer
|
|
134
|
+
a regression from a small noisy difference. Keep setup outside the measured call and assert
|
|
135
|
+
outcomes. Stateful workloads need equivalent starting state for every round.
|
|
136
|
+
|
|
137
|
+
CI runs the benchmarks on Python 3.14 in the existing Quality job. Non-PR runs retain the generated
|
|
138
|
+
JSON as `benchmarks-python-3.14` artifacts for 90 days. Download comparable runs and inspect them
|
|
139
|
+
with `uv run pytest-benchmark compare FIRST.json SECOND.json`. There is no elapsed-time failure
|
|
140
|
+
threshold; benchmark assertions still fail on incorrect behavior. Saved JSON contains machine and
|
|
141
|
+
commit metadata; raw profiles and private-workflow inputs do not belong in these artifacts.
|
|
84
142
|
|
|
85
143
|
## Workflow and dependency checks
|
|
86
144
|
|
|
@@ -103,14 +161,11 @@ uv export --locked --all-groups --all-extras --no-emit-project --format requirem
|
|
|
103
161
|
uv run --locked --group audit pip-audit --strict --disable-pip --require-hashes -r /dev/stdin
|
|
104
162
|
```
|
|
105
163
|
|
|
106
|
-
The
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
For dependency changes, run the lockfile audit above on each supported Python version. GitHub's
|
|
112
|
-
dependency graph may omit packages from `uv.lock`, so Dependabot and Dependency Review cannot
|
|
113
|
-
replace that audit.
|
|
164
|
+
The audit sends locked package names and versions to PyPI's vulnerability service. It installs
|
|
165
|
+
nothing, resolves no alternatives and applies no fixes. It covers locked versions, not entire
|
|
166
|
+
dependency ranges. For dependency changes, run it on each supported Python version to evaluate
|
|
167
|
+
markers. Dependabot and Dependency Review cannot replace it: GitHub's dependency graph may omit
|
|
168
|
+
lockfile packages.
|
|
114
169
|
|
|
115
170
|
The PR dependency-review job rejects newly introduced known vulnerabilities at any severity across
|
|
116
171
|
runtime, development and unknown scopes. It uses a read-only token and does not check out or execute
|
|
@@ -128,13 +183,49 @@ Use `uv run rumdl fmt .` to format Markdown, then `uv run rumdl check .` to lint
|
|
|
128
183
|
version and `pyproject.toml` configuration apply to pre-commit and CI. Prose wraps at 100
|
|
129
184
|
characters; commands and tables retain their layout. MkDocs syntax is recognized within `docs/`. The
|
|
130
185
|
generated CLI reference has narrow exceptions for Typer's prompts, option alignment and wrapping;
|
|
131
|
-
its byte-for-byte generation check remains enforced. The generated changelog
|
|
132
|
-
|
|
186
|
+
its byte-for-byte generation check remains enforced. The generated changelog keeps each entry on
|
|
187
|
+
one source line, with a line-length exception.
|
|
133
188
|
|
|
134
189
|
Keep installation and first-use instructions in README, and detailed user guides and reference in
|
|
135
190
|
`docs/`. Support, security and conduct policies live at the repository root. Keep private sessions,
|
|
136
191
|
cases and credentials out of documentation and generated output.
|
|
137
192
|
|
|
193
|
+
### Writing and review
|
|
194
|
+
|
|
195
|
+
Start with the reader's task. Use [Diátaxis](https://diataxis.fr/start-here/) to distinguish a
|
|
196
|
+
guided learning example, a task-specific how-to, reference facts and explanation. A README can
|
|
197
|
+
combine orientation and first use; do not split pages just to fill those categories.
|
|
198
|
+
|
|
199
|
+
- Put prerequisites before commands, conditions before dependent actions and the expected result
|
|
200
|
+
after a step that needs verification. Use numbered steps for a sequence and tables for
|
|
201
|
+
comparisons.
|
|
202
|
+
- State what the reader can do or conclude. Prefer concrete verbs and established terms; remove
|
|
203
|
+
filler, promotional claims, rhetorical contrasts and sentences that repeat their heading.
|
|
204
|
+
For example, replace “It is important to note that execution requires explicit acknowledgement”
|
|
205
|
+
with “After reviewing the plan, pass `--acknowledge-model-execution` to allow provider calls.”
|
|
206
|
+
- Give each topic one owner. Keep options in the generated CLI reference, procedures in user guides,
|
|
207
|
+
measurements in `docs/measurements.md`, rationale in decisions and methods in research. Link to
|
|
208
|
+
detail instead of repeating it. Keep essential safety conditions beside the affected action.
|
|
209
|
+
- Shorten without widening claims. Preserve tested profiles, statistical conditions, costs,
|
|
210
|
+
uncertainty, failed outcomes and historical context. “The screen passed” does not mean
|
|
211
|
+
“preservation is confirmed.” Check commands against the current CLI and qualify future work.
|
|
212
|
+
- Follow [W3C's writing guidance](https://www.w3.org/WAI/tips/writing/): use descriptive link text,
|
|
213
|
+
ordered headings and useful image alternatives. Do not rely on color alone. Keep code blocks
|
|
214
|
+
executable or identify placeholders before the command.
|
|
215
|
+
|
|
216
|
+
Before review, check: can the intended reader find the task, run its steps and interpret the
|
|
217
|
+
result? Does each paragraph add information? Are terms, claims, links and generated content current?
|
|
218
|
+
Check the [documentation commands](#building-and-checking-documentation) below after edits.
|
|
219
|
+
|
|
220
|
+
For additional guidance, consult the
|
|
221
|
+
[Google developer documentation style guide](https://developers.google.com/style) and
|
|
222
|
+
[Microsoft Writing Style Guide](https://learn.microsoft.com/en-us/style-guide/welcome/).
|
|
223
|
+
Follow this project's conventions where they differ.
|
|
224
|
+
Use judgment rather than word-count targets; explanations and research need enough detail to support
|
|
225
|
+
their conclusions.
|
|
226
|
+
|
|
227
|
+
### Documentation ownership
|
|
228
|
+
|
|
138
229
|
[ROADMAP.md](ROADMAP.md) describes future direction. GitHub issues own actionable scope,
|
|
139
230
|
dependencies, acceptance criteria and status; release milestones group scope and the public
|
|
140
231
|
[Project](https://github.com/users/eberkut/projects/1/views/4) provides views of those same issues.
|
|
@@ -151,12 +242,12 @@ Before evaluating a new study, declare its tested domain, criteria, seeds, budge
|
|
|
151
242
|
claims. Report costs across complete workflows, including failed and incomplete work, and document
|
|
152
243
|
the alternatives and limitations needed to interpret the results.
|
|
153
244
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
245
|
+
### Building and checking documentation
|
|
246
|
+
|
|
247
|
+
The `docs` group pins MkDocs and the shadcn theme. Search runs in the browser; the site bundles
|
|
248
|
+
fonts and scripts. GitHub star-count requests and raw Markdown copying are disabled. When changing
|
|
249
|
+
the theme or extensions, review the asset allowlist in `scripts/docs_theme.py`, the
|
|
250
|
+
[third-party notices](docs/third-party-notices.txt) and the rendered site. To preview:
|
|
160
251
|
|
|
161
252
|
```bash
|
|
162
253
|
uv sync --locked --all-groups --all-extras
|
|
@@ -292,16 +383,18 @@ CodeRabbit's optional planning and code-generation features are configured in
|
|
|
292
383
|
|
|
293
384
|
## Preparing a release
|
|
294
385
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
For every feature, aim for parity across supported harnesses. Any exception must be clearly
|
|
298
|
-
justified and documented before release.
|
|
386
|
+
Maintainers need repository and package-publishing access. Before release, justify and document
|
|
387
|
+
any feature-parity exception between supported harnesses.
|
|
299
388
|
|
|
300
389
|
Python Semantic Release, pinned in the `release` dependency group, calculates versions from
|
|
301
390
|
Conventional Commits. `pyproject.toml` is the version source; installed CLI and Codex client
|
|
302
391
|
metadata read that distribution version. The tool generates `CHANGELOG.md` from the full release
|
|
303
|
-
history, omitting routine build, CI, documentation, style and test commits.
|
|
304
|
-
|
|
392
|
+
history, omitting routine build, CI, documentation, style and test commits. Its
|
|
393
|
+
[template](.github/changelog/CHANGELOG.md.j2) keeps lists compact, with one entry per source line.
|
|
394
|
+
Change the template to adjust formatting; do not edit generated entries by hand.
|
|
395
|
+
|
|
396
|
+
Review and merge generated version/notes changes through a PR. CI tests the prepared version;
|
|
397
|
+
publication builds that committed version.
|
|
305
398
|
|
|
306
399
|
Use `main` with complete history and all existing release tags available. Preview the next version
|
|
307
400
|
without changing files, the index, commits, tags or remote state:
|
|
@@ -339,9 +432,9 @@ ownership and the following repository/index settings:
|
|
|
339
432
|
|
|
340
433
|
- PyPI and TestPyPI Trusted Publishers bind `eberkut/ithrl`, `release.yml` and their respective
|
|
341
434
|
`pypi` / `testpypi` environments. Publishing uses OIDC, without a stored PyPI API token.
|
|
342
|
-
- Both environments admit only `main
|
|
343
|
-
|
|
344
|
-
|
|
435
|
+
- Both environments admit only `main`, require the maintainer's approval, permit self-review and
|
|
436
|
+
disallow administrative approval bypass. Environment declarations in YAML do not configure these
|
|
437
|
+
protections; verify the actual settings before dispatch.
|
|
345
438
|
- Release-tag rules permit the maintainer's signed-tag creation and prevent unapproved tag
|
|
346
439
|
replacement or deletion. The workflow never creates a tag.
|
|
347
440
|
|
|
@@ -353,10 +446,12 @@ gh workflow run release.yml --repo eberkut/ithrl --ref main \
|
|
|
353
446
|
-f version=X.Y.Z -f source-sha=FULL_APPROVED_COMMIT_SHA
|
|
354
447
|
```
|
|
355
448
|
|
|
356
|
-
1.
|
|
449
|
+
1. After source verification and validation pass, approve the `testpypi` deployment on the run's
|
|
450
|
+
GitHub page. This authorizes the public TestPyPI upload.
|
|
451
|
+
2. Inspect the successful **Publish TestPyPI rehearsal** job. Its summary records
|
|
357
452
|
the source, version, immutable artifact ID and checksum-manifest digest. The production job
|
|
358
453
|
waits at the `pypi` environment. TestPyPI files, logs and artifacts are public.
|
|
359
|
-
|
|
454
|
+
3. Download that run's `release-distributions` artifact into a new review directory. For example:
|
|
360
455
|
|
|
361
456
|
```bash
|
|
362
457
|
gh run download RUN_ID --repo eberkut/ithrl \
|
|
@@ -367,7 +462,7 @@ gh workflow run release.yml --repo eberkut/ithrl --ref main \
|
|
|
367
462
|
from the review directory. Inspect the release notes and confirm TestPyPI serves the same
|
|
368
463
|
distribution hashes. Complete a clean TestPyPI installation/example rehearsal before approval;
|
|
369
464
|
resolve dependencies only from the normal PyPI index, without mixing indexes.
|
|
370
|
-
|
|
465
|
+
4. After the rehearsal passes and tag creation is approved, create and verify the signed tag at
|
|
371
466
|
the frozen source commit, then push only that tag through the permitted tag-rules path:
|
|
372
467
|
|
|
373
468
|
```bash
|
|
@@ -376,19 +471,19 @@ gh workflow run release.yml --repo eberkut/ithrl --ref main \
|
|
|
376
471
|
git push origin refs/tags/vX.Y.Z
|
|
377
472
|
```
|
|
378
473
|
|
|
379
|
-
|
|
474
|
+
5. Review and approve the `pypi` deployment on the run's GitHub page. The job verifies the existing
|
|
380
475
|
annotated tag targets the frozen source, rechecks the files, and uploads to PyPI. The final job
|
|
381
476
|
rechecks the tag/files and creates the GitHub Release with those distributions, notes and
|
|
382
477
|
checksums. Signature verification belongs to the preceding maintainer tag check; the workflow
|
|
383
478
|
checks the tag object and target commit.
|
|
384
|
-
|
|
479
|
+
6. Verify the published versions, hashes, attestations and installed example. A successful upload
|
|
385
480
|
alone does not complete release acceptance.
|
|
386
481
|
|
|
387
|
-
Complete review within 30
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
`skip-existing`.
|
|
482
|
+
Complete review within the 30-day artifact retention and GitHub workflow lifetime, including
|
|
483
|
+
approval waits. Start one release at a time: a new queued run may replace an older pending run,
|
|
484
|
+
though the active run is preserved. Do not rerun the workflow to promote a completed rehearsal or
|
|
485
|
+
cancel during upload.
|
|
486
|
+
|
|
487
|
+
After failure or partial publication, inspect the index and release before recovery. Preserve
|
|
488
|
+
the original files and hashes; uploading identical missing files requires explicit approval.
|
|
489
|
+
Never overwrite a published version with rebuilt files or suppress conflicts with `skip-existing`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: ithrl
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.0
|
|
4
4
|
Summary: Find smaller agent contexts that preserve a selected model behavior
|
|
5
5
|
Project-URL: Source, https://github.com/eberkut/ithrl
|
|
6
6
|
Project-URL: Issues, https://github.com/eberkut/ithrl/issues
|
|
@@ -31,7 +31,15 @@ Provides-Extra: fuzz
|
|
|
31
31
|
Requires-Dist: scipy>=1.18; extra == 'fuzz'
|
|
32
32
|
Description-Content-Type: text/markdown
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
<!-- rumdl-disable MD033 -->
|
|
35
|
+
<h1>
|
|
36
|
+
<picture>
|
|
37
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/eberkut/ithrl/main/docs/branding/ithrl-logo-dark.svg">
|
|
38
|
+
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/eberkut/ithrl/main/docs/branding/ithrl-logo-light.svg">
|
|
39
|
+
<img src="https://raw.githubusercontent.com/eberkut/ithrl/main/docs/branding/ithrl-logo.png" alt="ithrl" width="320" height="158">
|
|
40
|
+
</picture>
|
|
41
|
+
</h1>
|
|
42
|
+
<!-- rumdl-enable MD033 -->
|
|
35
43
|
|
|
36
44
|
[](https://pypi.org/project/ithrl/)
|
|
37
45
|
[](https://github.com/eberkut/ithrl/actions/workflows/ci.yml)
|
|
@@ -87,7 +95,18 @@ Use a new directory to repeat the example; extraction refuses to overwrite an ex
|
|
|
87
95
|
## Commands
|
|
88
96
|
|
|
89
97
|
- `ithrl extract` browses saved sessions and creates a case from a selected decision.
|
|
98
|
+
- `ithrl prepare CASE` generates a private reduction configuration from a preflight receipt and
|
|
99
|
+
statistical settings. Follow the
|
|
100
|
+
[preparation procedure](https://github.com/eberkut/ithrl/blob/main/docs/reduction.md).
|
|
90
101
|
- `ithrl shrink CASE` searches for context removals that preserve the selected behavior.
|
|
102
|
+
- `ithrl inspect sections CASE` lists editable text fields and paragraph boundaries without
|
|
103
|
+
displaying text or requiring a reduction result.
|
|
104
|
+
- `ithrl inspect reacquire SESSION` compares recorded operations and captured results across
|
|
105
|
+
compaction. See
|
|
106
|
+
[passive inspection](https://github.com/eberkut/ithrl/blob/main/docs/results.md#inspect-recorded-compaction).
|
|
107
|
+
- `ithrl inspect retained CASE --result RESULT` explains retained units and recorded removal trials
|
|
108
|
+
from a saved reduction without model access. See
|
|
109
|
+
[results and privacy](https://github.com/eberkut/ithrl/blob/main/docs/results.md#inspect-retained-context).
|
|
91
110
|
- `ithrl fuzz CASE --config PRIVATE_TOML` searches for and simplifies text appends that decrease how
|
|
92
111
|
often the selected behavior occurs, with independent confirmation.
|
|
93
112
|
|
|
@@ -104,30 +123,40 @@ Returned actions are observed and denied. Cases contain copied session content;
|
|
|
104
123
|
|
|
105
124
|
## Supported inputs
|
|
106
125
|
|
|
107
|
-
| Input | Extracted decisions | Reduction | Fuzzing |
|
|
108
|
-
| --- | --- | --- | --- |
|
|
109
|
-
| Bundled synthetic example | Synthetic tool request | Deterministic local runner | Local fake runner |
|
|
110
|
-
| Codex CLI rollouts | Final responses | Experimental native runner | Experimental prior-user text appends |
|
|
111
|
-
| Copilot CLI session events | Final responses and shell requests | Experimental final-response and denied `bash` runner | Experimental prior-user text appends for final-response targets |
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
126
|
+
| Input | Extracted decisions | Reduction | Fuzzing | Passive inspection |
|
|
127
|
+
| --- | --- | --- | --- | --- |
|
|
128
|
+
| Bundled synthetic example | Synthetic tool request | Deterministic local runner | Local fake runner | — |
|
|
129
|
+
| Codex CLI rollouts | Final responses | Experimental native runner; [paragraph-removal measurements](https://github.com/eberkut/ithrl/blob/main/docs/measurements.md#ordinary-session-paragraph-removal) | Experimental prior-user text appends | Exact recorded-operation and captured-result comparisons across compaction |
|
|
130
|
+
| Copilot CLI session events | Final responses and shell requests | Experimental final-response paragraph removal and denied `bash` runner | Experimental prior-user text appends for final-response targets | Exact recorded-operation and captured-result comparisons across compaction |
|
|
131
|
+
|
|
132
|
+
Passive inspection reads saved evidence without a harness or model access. The
|
|
133
|
+
[worked investigation](https://github.com/eberkut/ithrl/blob/main/docs/research/passive-compaction-investigation.md)
|
|
134
|
+
records the qualified native profiles, ordinary examples and interpretation limits.
|
|
135
|
+
|
|
136
|
+
Native fuzzing appends text to eligible prior user input while preserving the fixed triggering
|
|
137
|
+
input. The
|
|
138
|
+
[fuzzing walkthrough](https://github.com/eberkut/ithrl/blob/main/docs/fuzzing.md)
|
|
139
|
+
covers a local example and native execution.
|
|
140
|
+
|
|
141
|
+
Ordinary Codex and Copilot paragraph-removal experiments passed fresh confirmation at a
|
|
142
|
+
20-percentage-point preservation margin. See the
|
|
143
|
+
[measurements](https://github.com/eberkut/ithrl/blob/main/docs/measurements.md#saved-session-experiments)
|
|
144
|
+
for completed and unsuccessful outcomes, costs and qualification limits, and the
|
|
145
|
+
[worked investigation](https://github.com/eberkut/ithrl/blob/main/docs/research/ordinary-session-investigation.md)
|
|
146
|
+
for a developer's interpretation. Check
|
|
122
147
|
[native compatibility](https://github.com/eberkut/ithrl/blob/main/docs/native-runs.md#compatibility-and-measurements)
|
|
123
|
-
|
|
148
|
+
before using an installed harness.
|
|
124
149
|
|
|
125
150
|
## Documentation
|
|
126
151
|
|
|
127
152
|
Read the [documentation site](https://eberkut.github.io/ithrl/) or browse the guides below.
|
|
128
153
|
|
|
129
154
|
- [Native runs](https://github.com/eberkut/ithrl/blob/main/docs/native-runs.md): session selection,
|
|
130
|
-
|
|
155
|
+
shared prerequisites and compatibility.
|
|
156
|
+
- [Native reduction](https://github.com/eberkut/ithrl/blob/main/docs/reduction.md): prepare,
|
|
157
|
+
inspect and execute a context-removal experiment.
|
|
158
|
+
- [Context fuzzing](https://github.com/eberkut/ithrl/blob/main/docs/fuzzing.md): try the local
|
|
159
|
+
example and run a native text-append campaign.
|
|
131
160
|
- [Results and privacy](https://github.com/eberkut/ithrl/blob/main/docs/results.md): saved files,
|
|
132
161
|
result interpretation, budgets, resume and sensitive data.
|
|
133
162
|
- [Contributing](https://github.com/eberkut/ithrl/blob/main/CONTRIBUTING.md): issue-first
|
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
<!-- rumdl-disable MD033 -->
|
|
2
|
+
<h1>
|
|
3
|
+
<picture>
|
|
4
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/eberkut/ithrl/main/docs/branding/ithrl-logo-dark.svg">
|
|
5
|
+
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/eberkut/ithrl/main/docs/branding/ithrl-logo-light.svg">
|
|
6
|
+
<img src="https://raw.githubusercontent.com/eberkut/ithrl/main/docs/branding/ithrl-logo.png" alt="ithrl" width="320" height="158">
|
|
7
|
+
</picture>
|
|
8
|
+
</h1>
|
|
9
|
+
<!-- rumdl-enable MD033 -->
|
|
2
10
|
|
|
3
11
|
[](https://pypi.org/project/ithrl/)
|
|
4
12
|
[](https://github.com/eberkut/ithrl/actions/workflows/ci.yml)
|
|
@@ -54,7 +62,18 @@ Use a new directory to repeat the example; extraction refuses to overwrite an ex
|
|
|
54
62
|
## Commands
|
|
55
63
|
|
|
56
64
|
- `ithrl extract` browses saved sessions and creates a case from a selected decision.
|
|
65
|
+
- `ithrl prepare CASE` generates a private reduction configuration from a preflight receipt and
|
|
66
|
+
statistical settings. Follow the
|
|
67
|
+
[preparation procedure](https://github.com/eberkut/ithrl/blob/main/docs/reduction.md).
|
|
57
68
|
- `ithrl shrink CASE` searches for context removals that preserve the selected behavior.
|
|
69
|
+
- `ithrl inspect sections CASE` lists editable text fields and paragraph boundaries without
|
|
70
|
+
displaying text or requiring a reduction result.
|
|
71
|
+
- `ithrl inspect reacquire SESSION` compares recorded operations and captured results across
|
|
72
|
+
compaction. See
|
|
73
|
+
[passive inspection](https://github.com/eberkut/ithrl/blob/main/docs/results.md#inspect-recorded-compaction).
|
|
74
|
+
- `ithrl inspect retained CASE --result RESULT` explains retained units and recorded removal trials
|
|
75
|
+
from a saved reduction without model access. See
|
|
76
|
+
[results and privacy](https://github.com/eberkut/ithrl/blob/main/docs/results.md#inspect-retained-context).
|
|
58
77
|
- `ithrl fuzz CASE --config PRIVATE_TOML` searches for and simplifies text appends that decrease how
|
|
59
78
|
often the selected behavior occurs, with independent confirmation.
|
|
60
79
|
|
|
@@ -71,30 +90,40 @@ Returned actions are observed and denied. Cases contain copied session content;
|
|
|
71
90
|
|
|
72
91
|
## Supported inputs
|
|
73
92
|
|
|
74
|
-
| Input | Extracted decisions | Reduction | Fuzzing |
|
|
75
|
-
| --- | --- | --- | --- |
|
|
76
|
-
| Bundled synthetic example | Synthetic tool request | Deterministic local runner | Local fake runner |
|
|
77
|
-
| Codex CLI rollouts | Final responses | Experimental native runner | Experimental prior-user text appends |
|
|
78
|
-
| Copilot CLI session events | Final responses and shell requests | Experimental final-response and denied `bash` runner | Experimental prior-user text appends for final-response targets |
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
93
|
+
| Input | Extracted decisions | Reduction | Fuzzing | Passive inspection |
|
|
94
|
+
| --- | --- | --- | --- | --- |
|
|
95
|
+
| Bundled synthetic example | Synthetic tool request | Deterministic local runner | Local fake runner | — |
|
|
96
|
+
| Codex CLI rollouts | Final responses | Experimental native runner; [paragraph-removal measurements](https://github.com/eberkut/ithrl/blob/main/docs/measurements.md#ordinary-session-paragraph-removal) | Experimental prior-user text appends | Exact recorded-operation and captured-result comparisons across compaction |
|
|
97
|
+
| Copilot CLI session events | Final responses and shell requests | Experimental final-response paragraph removal and denied `bash` runner | Experimental prior-user text appends for final-response targets | Exact recorded-operation and captured-result comparisons across compaction |
|
|
98
|
+
|
|
99
|
+
Passive inspection reads saved evidence without a harness or model access. The
|
|
100
|
+
[worked investigation](https://github.com/eberkut/ithrl/blob/main/docs/research/passive-compaction-investigation.md)
|
|
101
|
+
records the qualified native profiles, ordinary examples and interpretation limits.
|
|
102
|
+
|
|
103
|
+
Native fuzzing appends text to eligible prior user input while preserving the fixed triggering
|
|
104
|
+
input. The
|
|
105
|
+
[fuzzing walkthrough](https://github.com/eberkut/ithrl/blob/main/docs/fuzzing.md)
|
|
106
|
+
covers a local example and native execution.
|
|
107
|
+
|
|
108
|
+
Ordinary Codex and Copilot paragraph-removal experiments passed fresh confirmation at a
|
|
109
|
+
20-percentage-point preservation margin. See the
|
|
110
|
+
[measurements](https://github.com/eberkut/ithrl/blob/main/docs/measurements.md#saved-session-experiments)
|
|
111
|
+
for completed and unsuccessful outcomes, costs and qualification limits, and the
|
|
112
|
+
[worked investigation](https://github.com/eberkut/ithrl/blob/main/docs/research/ordinary-session-investigation.md)
|
|
113
|
+
for a developer's interpretation. Check
|
|
89
114
|
[native compatibility](https://github.com/eberkut/ithrl/blob/main/docs/native-runs.md#compatibility-and-measurements)
|
|
90
|
-
|
|
115
|
+
before using an installed harness.
|
|
91
116
|
|
|
92
117
|
## Documentation
|
|
93
118
|
|
|
94
119
|
Read the [documentation site](https://eberkut.github.io/ithrl/) or browse the guides below.
|
|
95
120
|
|
|
96
121
|
- [Native runs](https://github.com/eberkut/ithrl/blob/main/docs/native-runs.md): session selection,
|
|
97
|
-
|
|
122
|
+
shared prerequisites and compatibility.
|
|
123
|
+
- [Native reduction](https://github.com/eberkut/ithrl/blob/main/docs/reduction.md): prepare,
|
|
124
|
+
inspect and execute a context-removal experiment.
|
|
125
|
+
- [Context fuzzing](https://github.com/eberkut/ithrl/blob/main/docs/fuzzing.md): try the local
|
|
126
|
+
example and run a native text-append campaign.
|
|
98
127
|
- [Results and privacy](https://github.com/eberkut/ithrl/blob/main/docs/results.md): saved files,
|
|
99
128
|
result interpretation, budgets, resume and sensitive data.
|
|
100
129
|
- [Contributing](https://github.com/eberkut/ithrl/blob/main/CONTRIBUTING.md): issue-first
|