Skip to content

nfemmanuel/iranti

v0.3.31 Feature

This release adds 3 notable features for engineering teams evaluating rollout.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Summary

AI summary

Attendant can now re-score partial responses and perform one bounded extra observe() retry with extracted hints.

Full changelog

Bundle 8 — M6 sub-turn reasoning loop

Final bundle in the M-series backlog. The Attendant can now re-score its own partial assistant response on a mid-turn attend and fire one bounded extra observe() retry with broadened hints harvested from the partial text. This is A3's refinement pattern re-applied on response progress rather than initial-pass emptiness — the "most agentic" sub-turn loop from the memo.

New

  • planSubTurnLoop (pure helper in src/staff/subTurnLoop.ts) — five gates (phase, partial presence, length, budget, novelty), extracts novel tokens + type/id hints from the partial, proposes them for a widening retry, bounded to one extra observe() call. Pure, deterministic, fully unit-testable.
  • AttendInput.partialResponse — new field on mid-turn attend carrying the in-progress assistant response.
  • AttendResult.subTurnLoopPlan — echoed on all three return paths (post-response closeout, memory_not_needed, main success) so hosts can safely destructure on every attend response.

How it works

  1. Mid-turn attend arrives with partialResponse set.
  2. Baseline retrieval runs as usual.
  3. planSubTurnLoop inspects the partial text, diffs its tokens against the baseline (latest message + original hints), and extracts any novel type/id entity patterns.
  4. If any novel signal is found, the Attendant fires ONE extra observe() call with the UNION of allObserveEntityHints and the proposed hints — same preservation fix as B6's refinement retry so specific host-supplied hints are not dropped.
  5. Net-new facts are merged into the response; outcome flips from attempted_emptyattempted_added when the retry surfaces new facts.

Tests

  • 26 new unit tests in tests/staff/run_b8_subturn_loop_tests.ts covering all gates, token/hint extraction, budget caps, dedup, stopword filtering, entity-shaped baseline decomposition, and plan shape invariants.
  • Registered as npm run test:b8-subturn-loop.
  • Regression gate green across b5-b8, mid-turn-attend, a4, b4, tool-call-retrieval, m2, user-operating-rules, compliance, file-change-recall, artifact-capture, b2, mock-failure-modes, mock.

Files

  • src/staff/subTurnLoop.ts (new)
  • tests/staff/run_b8_subturn_loop_tests.ts (new)
  • src/attendant/AttendantInstance.ts (3 return paths + AttendInput/AttendResult fields)
  • package.json (+ test:b8-subturn-loop script, version bump)
  • clients/typescript/package.json, clients/python/pyproject.toml, clients/python/iranti.py, src/api/server.ts (version bump)

Backlog status

This closes the M-series backlog (B1-B8). Full sequence shipped: B1 attendant agency, B2 mock classifier, B3 host contracts, B4 skip/drift, B5 objective + auto-checkpoint, B6 refinement + tool plan, B7 reasoning budget + council mode, B8 sub-turn loop.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track nfemmanuel/iranti

Get notified when new releases ship.

Sign up free

About nfemmanuel/iranti

Persistent shared memory for AI coding agents. Stores facts as `entity/key/value` triples with hybrid semantic search, task checkpoints, and conflict resolution — shared across Claude Code, Codex CLI, and GitHub Copilot.

All releases →

Beta — feedback welcome: [email protected]