Skip to content

v0.4.0

Latest

Choose a tag to compare

@dropdevrahul dropdevrahul released this 20 Jun 12:29
· 2 commits to main since this release
0377553

Added

  • Estimated per-tier usage recording in /nx-build so the cost report breakdown is populated with token estimates per execution tier, giving visibility into where the session's cost is incurred.
  • Per-repo routing calibration that biases /nx-plan from historical step outcomes, routing subsequent steps based on learned success rates and execution patterns rather than static tier assignments.
  • Throttled SessionStart audit nudge (scripts/audit_nudge.py, SessionStart hook) that checks ignore-config rot on session start without spamming the user, surfacing a one-line reminder when the ignore config has actionable findings (missing ignore file, unignored noise dirs, or large/binary files). Throttled to once per repo per audit_nudge_throttle_hours. Config: audit_nudge_enabled (default true), audit_nudge_throttle_hours (default 24).

Changed

  • max_steps_per_dispatch default lowered 6 → 4. A 6-step grouped Sonnet dispatch stalled the stream watchdog mid-batch (600s no-progress) and lost the whole batch; smaller batches bound both the per-dispatch context and a single failure's blast radius.
  • Size-aware dispatch batching. /nx-build now partitions a route tier with plan_preview.py --plan … --indices …, which estimates each step's context load (per-step base + declared-file bytes ÷ 4) and bounds each sub-batch by both max_dispatch_context_tokens (default 50000) and the max_steps_per_dispatch count cap — so a few large-file steps split off while a single over-budget step still dispatches alone (steps are never split). New store.partition_steps_by_size; config max_dispatch_context_tokens, dispatch_step_base_tokens. The count-only store.py plan-batches helper remains for when no plan file is available.

Fixed

  • predup freshness guard. A recorded tool_calls row only proves an output was injected once, not that it is still in the live context — subagents share the parent's DB, and compaction/resume evicts output while the row persists, so predup could deny a legitimate read whose content was no longer (or never) in context. predup now lets a call through when its prior row is older than predup_max_age_seconds (default 900; 0 restores the prior ever-recorded behaviour).