Skip to content

feat(agentic): extend resolve_tool_alias to plan/crew/workflow + add plan_get (#716)#729

Merged
hartsock merged 1 commit into
mainfrom
feat/716-plan-crew-aliases
Jun 28, 2026
Merged

feat(agentic): extend resolve_tool_alias to plan/crew/workflow + add plan_get (#716)#729
hartsock merged 1 commit into
mainfrom
feat/716-plan-crew-aliases

Conversation

@hartsock

Copy link
Copy Markdown
Member

What this PR does

Weak local models reach for planning/delegation under names learned from other harnesses (make_plan, enter_plan_mode, delegate, run_workflow); these fell through resolve_tool_alias to unknown_tool_message — a burned round that tips the model from acting into narrating. Extends the alias seam with four families:

  • PLAN (make_plan, enter_plan_mode, todo_write, …) → Correct toward plan_set/plan_advance.
  • PLAN-READ (get_plan, what_was_i_doing, …) → Rewrite("plan_get").
  • CREW/DELEGATE (delegate, run_crew, spawn_agent, …) → Correct naming compose_roster/crew, explicitly stating crew/team is human-gated behind /team (the model cannot self-enable it).
  • WORKFLOW (workflow, pipeline, …) → Correct toward plan_set+plan_advance / crew.

Adds a read-only plan_get tool (renders the current <plan> ledger via plan_block, presence-gated like plan_advance) so a resumed "what were we doing?" probe finally has a model-callable plan-read affordance.

The phantom-reach telemetry (#717) records every new alias for free (classify_phantom_reach already emits on Rewrite/Correct), so the seam is now driven by data.

Test plan

8 new/extended pure tests (no fs): the 4 alias families resolve correctly, classify_phantom_reach("make_plan")Correct, plan_get renders/hints + dispatch gating. just check green: 1007 newt-core tests, clippy -D warnings clean, fmt clean. (One pre-existing #717 test's "no-alias" example enter_plan_modesummon_kraken, since it's now a PLAN alias.)

Out of scope (per the issue)

request_team self-enable handshake, a real workflow primitive, scratchpad/plan persistence across resume (#713), the repeated-call loop guard, the human /plan surface.

Fixes #716

🤖 Generated with Claude Code

…plan_get (#716)

Weak local models reach for planning/delegation under names learned from other
harnesses (make_plan, enter_plan_mode, delegate, run_workflow); these fell through
resolve_tool_alias to unknown_tool_message, burning a round and tipping the model
from acting into narrating (the #215 advisory drift). Extends the alias seam with
four families:
- PLAN (make_plan, enter_plan_mode, todo_write, ...) -> Correct toward plan_set/plan_advance.
- PLAN-READ (get_plan, what_was_i_doing, ...) -> Rewrite("plan_get").
- CREW/DELEGATE (delegate, run_crew, spawn_agent, ...) -> Correct naming compose_roster/crew,
  explicitly stating crew/team is human-gated behind /team (the model cannot self-enable it).
- WORKFLOW (workflow, pipeline, ...) -> Correct toward plan_set+plan_advance / crew.

Adds a read-only plan_get tool (renders the current <plan> ledger via plan_block,
presence-gated like plan_advance) so a resumed "what were we doing?" probe finally has
a model-callable plan-read affordance.

The phantom-reach telemetry (#717) records every new alias for free (classify_phantom_reach
already emits on Rewrite/Correct), so the seam is now driven by data, not guesses.

Fixes #716

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@hartsock hartsock added the risk:low Low-risk change (scoped, tested, no CI/build/hook changes) label Jun 28, 2026
@hartsock hartsock merged commit af54767 into main Jun 28, 2026
16 checks passed
@hartsock hartsock deleted the feat/716-plan-crew-aliases branch June 28, 2026 21:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:low Low-risk change (scoped, tested, no CI/build/hook changes)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(agentic): extend resolve_tool_alias to accept plan/crew/workflow notions and route them to real tools

1 participant