# Upgrade Guide — vNEXT

<!-- assembled-by: assemble-next-md -->
<!-- bump: patch -->

## What Changed

Prompt Gate now recognizes the exact Gemini CLI package-runner install prompt
that blocked the live mentorship cycle: an `instar` package version followed by
`Ok to proceed? (y)`. That narrow prompt is answered with the highlighted
default, so the agent can continue through its own Instar CLI command without a
manual Enter press. Arbitrary package installs are not auto-answered.

Prompt Gate also recognizes Gemini CLI execution-approval modals, but with the
opposite policy. Execution approvals ask whether model-proposed command text may
run. This change adds no approval path. When the known modal shape includes the
reject option, Prompt Gate chooses that reject option and records the rejected
command text in the server log plus an observable Prompt Gate event.

Fixed an invisible-verdict bug in the pre-send message-quality gate. When the gate
blocked an outbound message, it wrote its reasons to the wrong output channel, so
the agent saw a generic "hook error" instead of the actual findings — and would
retry blind. The reasons now land on the channel the runtime actually shows, so a
blocked message comes back with the specific quality findings to fix.

Added a Mandates tab to the dashboard — the operator's surface for the coordination
permission slips. It lists every issued mandate with live authorship verification and
state, provides PIN-gated forms to issue a new mandate or revoke an existing one, and
shows the tamper-evident decision audit with its chain status. The PIN is typed at
action time, sent once, and cleared immediately — it is never stored anywhere in the
browser. Also backfilled the agent-awareness sections for the three coordination
surfaces into existing agents' instruction files on update, so agents updated in
place learn these capabilities exist (previously only freshly-initialized agents got
them).

Gave the cutover-readiness live-comparison trigger a realistic time budget. A real
comparison downloads the full live dataset and takes a few minutes; the default
30-second request limit cut off every response mid-run, and a late failure then
crashed the response handling with no record of what happened. The trigger now has
a six-minute budget, and whatever the outcome — recorded or failed — it is always
written to the server log, even if the caller's connection already timed out.

## What to Tell Your User

Gemini can now get past the specific Instar package install prompt that was
blocking mentor cycles. If Gemini asks to run an arbitrary command, Instar will
not approve it automatically. It rejects the known approval prompt and leaves a
visible record of the command it refused, so the mentor can see why the task
changed course.

Your agent's pre-send quality check now explains itself. If it holds a message
back, the agent sees exactly why and revises, instead of appearing to hit a
mysterious error.

Your dashboard now has a Mandates tab where you manage the permission slips for
autonomous agent-to-agent work: see every slip and whether its authorship still
verifies, issue a new one with your PIN, tear one up with your PIN, and read the
tamper-evident log of every allowed and denied action under them. Your PIN is asked
for right when you act and is never remembered by the page.

Nothing changes day to day. If your agent runs live data comparisons for a
migration, those checks now finish reliably instead of getting cut off, and their
results always show up in the logs.

## Summary of New Capabilities

- Auto-answer the narrow Gemini package-runner install confirmation for Instar
  package versions.
- Auto-reject Gemini execution-approval modals with an explicit reject option.
- Record execution auto-rejects visibly so mentor diagnosis does not depend on
  guessing from a stalled terminal.

- Blocked outbound messages surface their quality findings to the agent instead
  of an opaque hook error.
- Maturity: stable; the gate's judgments are unchanged — only their visibility.

- See all coordination mandates with live authorship-verification badges and
  active/revoked/expired state at a glance.
- Issue a mandate from a form (pre-filled with the standard two-authority shape) —
  PIN required, typed at issuance, never stored.
- Revoke any active mandate inline with a reason — PIN required.
- Read the hash-chained decision audit; a broken chain is flagged loudly as possible
  tampering.
- Existing agents now learn the mandate, review-exchange, and cutover-readiness
  surfaces via the update path, not just fresh installs.

- The live parity-comparison trigger completes within a realistic six-minute
  budget instead of being cut off at thirty seconds.
- Comparison outcomes are always logged server-side, even when the requester's
  connection timed out first.
- Maturity: stable; no other route's timing changes.

## Evidence

Not reproducible in a live dev shell without driving Gemini into the exact
interactive modal, but covered by deterministic unit fixtures from the captured
terminal shapes:

- package-runner install prompt for `instar@1.3.270` auto-dismisses with Enter;
- arbitrary package-runner install prompt does not auto-dismiss;
- execution-approval modal with highlighted Allow once still auto-rejects;
- rejected execution command text is carried in the detected prompt metadata.
