Skip to content

Let a session asked to ship a named plan start Ship - #726

Closed
anton-matosov wants to merge 11 commits into
mainfrom
claude/happy-tesla-kljm0q
Closed

anton-matosov wants to merge 11 commits into
mainfrom
claude/happy-tesla-kljm0q

Conversation

@anton-matosov

Copy link
Copy Markdown
Contributor

Summary

A session asked in plain words to ship a named plan can now load
/agentdev:iwe-ship. Before, only a typed command could start it. Ship still
runs as a fresh iwe-shipper subagent whose prompt carries only the plan key,
the operation, and approvals quoted verbatim. The iwe-ship-all and
iwe-implement-all coordinators stay explicit-only. This implements Tasks 1–3
of the plan
docs/knowledge/data/plans/20261102-model-invocable-ship.md.

What Changed

  • iwe-ship skill: drops disable-model-invocation. Its description now
    matches only a request that names a plan to ship or cancel, or a release to
    cut. Step 1 quotes an approval that a coordinator session relays from the user
    the same way as one the user typed.
  • OpenCode bridge tests: the two config-hook tests that expected iwe-ship
    denied now expect the gated iwe-ship-all denied, and iwe-ship absent from
    the bridge's deny map.
  • iwe-explore skill: a new rule says Explore never loads
    /agentdev:iwe-ship or dispatches iwe-shipper, even when an answer leaves
    a plan apparently complete.
  • explicit-only-workflow-agents architecture note:
    • Who may start them lists any session asked to ship a named plan.
    • Only the two coordinators remain gated.
    • A new bullet says why Ship can drop the gate.
    • A coordinator may relay the user's approvals to Ship.
    • "Drop the gate and rely on descriptions" stays rejected for the
      coordinators only.
  • The plan:
    • Its anchors are refreshed.
    • Its bun test command now takes a ./ path, because Bun reads an
      unprefixed path as a name filter and runs nothing. A revision evaluator
      approved this change.
    • Tasks 1–3 are ticked with evidence.

Why

The gate exists to keep conversation context out of Ship. Ship already gets
that from always running as a fresh subagent with a conversation-free prompt.
With the gate in place, a coordinator session that asks another session to ship
a plan is refused, and the user has to type the command in that session. A
narrow description and an explicit Explore rule now handle the stray-start risk
the gate used to guard against.

Verification

  • The new bridge-test assertions depend on the gate being gone.
    • Evidence: on commit 64c80a3, with disable-model-invocation: true put
      back into iwe-ship/SKILL.md, the two changed config-hook tests fail
      (27 pass, 2 fail). Without it, all 29 pass.

Reviewer Handoff

  • Plan Task 4 is observed: on Claude Code and OpenCode with the default test
    models, a plain prompt to ship a named plan loads iwe-ship and dispatches
    one iwe-shipper whose prompt carries only the plan key, the operation, and
    quoted approvals. A rehearsal on Claude Code 2.1.318 behaved this way; the
    OpenCode half has not been run.
    • Closed by: the maintainer, ticking Task 4 in the plan with evidence.
  • Plan Task 5 is observed: during /agentdev:iwe-explore on both harnesses,
    a partial answer that leaves a plan apparently complete loads no Ship or
    Implement skill and dispatches no iwe-shipper. A rehearsal on Claude Code
    behaved this way. In one sentence it named "Implement" as a way to record
    evidence, which is worth judging against the "names a next step other than
    Implement" scenario.
    • Closed by: the maintainer, ticking Task 5 in the plan with evidence.
  • The branch is brought up to date with main (8 commits behind, all
    unrelated dependency updates; git merge-tree reports a clean merge).
    • Closed by: the author, through /agentdev:update-branch.

Related

  • Plan: docs/knowledge/data/plans/20261102-model-invocable-ship.md
  • Depends on the shipped plan
    docs/knowledge/data/plans/20261031-model-invocable-implement.md

Generated by Claude Code

claude and others added 11 commits November 5, 2026 05:18
The bridge test and the IWE workflow skills spec moved since the plan was
written; re-locate both anchors.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7BhLtmRst3iA2UZ832Mse
Drop disable-model-invocation from iwe-ship and narrow its description to a
request that names a plan to ship or cancel, or a release to cut. Step 1
quotes an approval a coordinator relays from the user the same way as one the
user typed. The bridge tests now expect the gated iwe-ship-all denied and
iwe-ship left out of the deny map.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7BhLtmRst3iA2UZ832Mse
Bun reads an argument that does not start with ./ or / as a name filter, so
the plan's bun test command matched no file. Prefix it with ./ in Task 1
and Verification.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7BhLtmRst3iA2UZ832Mse
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7BhLtmRst3iA2UZ832Mse
Now that iwe-ship is model-invocable, Explore's rules forbid loading it or
dispatching iwe-shipper.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7BhLtmRst3iA2UZ832Mse
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7BhLtmRst3iA2UZ832Mse
The explicit-only workflow agents note now lists any session asked to ship a
named plan as a Ship starter, gates only the two coordinators, lets a
coordinator relay the user's approvals to Ship, and keeps "drop the gate"
rejected for the coordinators alone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7BhLtmRst3iA2UZ832Mse
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7BhLtmRst3iA2UZ832Mse
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@anton-matosov

Copy link
Copy Markdown
Contributor Author

Don't after big purge of AI slop

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants