Changelog

All notable changes to this project are documented here. The format is based on Keep a Changelog, and this project follows Semantic Versioning.

Unreleased

0.1.0 - 2026-08-31

First release.

Added

  • hf-logittilt model provider, registered through the inspect_ai entry point, so any eval resolving its model with get_model() can use it unchanged.
  • Two-context lockstep decoding: the model’s own weights run twice per step, on the conversation and on a behaviour-eliciting variant of it, and the mixed distribution is sampled from.
  • steering_prompt (system message at the start) and steering_reminder (appended to the last user message), each with a _file variant.
  • steering_strength and target_strength for weighting the two distributions, naturalness_floor for bounding how far a sampled token may stray from the unmodified model, and prefill for opening the elicited context.
  • steering_strength=0 with no instruction as a valid unsteered starting state; an instruction is required only when steering is actually on.
  • set_steering() and clear_steering(), which scope steering to the running sample, and steer_target(), a tool that lets an agent turn steering on partway through a conversation and change what it steers toward.
  • Batching of concurrent generate() calls into shared forward passes, with per-row token budgets.
  • Tool calling, parsed with Inspect’s own handler.
  • Every GenerateConfig option Inspect’s hf provider honours: max_tokens, temperature, top_p, top_k, seed, stop_seqs, logprobs and top_logprobs.
  • On-policy plausibility of each completion in output.metadata["logittilt"].

Notes

  • Logprobs are reported from the unmodified model rather than the distribution sampled from, so they measure how plausible the unsteered model finds the steered text. This differs from hf.
  • The naturalness floor does not apply when steering_strength is 0, so that setting reproduces the unmodified model exactly and works as a control arm.
  • Inspect’s generate cache keys on the messages, tools, config and model name, so it cannot see steering and two calls differing only in steering share an entry. Leave cache off when steering.
  • seed reproduces a decode for a fixed batch; batch composition depends on arrival timing.