Skip to content

Detent v0.5.0

Latest

Choose a tag to compare

@github-actions github-actions released this 12 Jul 20:15
ebdb6e2

Detent v0.5.0

Deny is the bound law's default alpha

An unbounded expensive read (content-mode Grep without head_limit; a large Read without limit/offset) is now refused by default, with the exact bounded call named in the refusal reason -- the caller learns to state bounds up front instead of being silently patched. This is a behavior change for existing users: the old silent-injection behavior (inject) is one env var away -- DETENT_BOUNDS_MODE=inject.

This default was chosen after a live in-session test: an unbounded Grep was denied through the real wired hook, the model restated the bound on its next call, and it passed -- the teaching loop working end to end.

The bound law, collapsed to one composition

The two near-duplicate bound functions (grep_bound_unbounded_content, read_bound_unbounded_content) are now one law (_bound_absent_key) driven by a declarative BOUNDS table -- covering a future unbounded tool is adding one row, not writing a new function. Guard totality is owed by the law itself; explicitness is key-presence (an explicit 0/null is always respected, never re-bounded).

Also in this release

  • Three near-identical capture call sites (failure / subagent-reply / compaction-summary) collapsed onto one shared _record_capture primitive.
  • A further internal consolidation certified by an automated, test-suite-gated consolidation pass (no behavior change).
  • marketplace.json for one-command plugin install.

Full diff: v0.4.0...v0.5.0