v0.2.0
Fixed — runs always burned their full step budget, even on simple questions:
- New
thresholds.goal_satisfied(default 0.70): a goal now counts as satisfied at this verifier score instead of requiring ~1.0, which real embedders/judges almost never return. Applied consistently in the goal scorer (satisfaction snapping), the forward-search frontier (openGoals) and dependency gating. - The grounded early-stop checks the live frontier (
openGoals === []) instead of the unreachablebackward_score >= 0.999. - Backward goal-tree expansion is now guarded: it only refines leaves the best trail has actually worked on and still failed, and is skipped when the remaining budget cannot cover the current frontier anyway — previously the tree grew faster than trails could satisfy it, making termination impossible.
RecursiveGoalScorerconstructor:satisfiedEpsilonreplaced bysatisfiedThreshold(default 0.7).
Note: superseded by v0.2.1 — the published v0.2.0 reference on Packagist pointed at a tag predating the laravel/ai ^0.8.0 bump.