# Capture a promise while you work

Preserve behavior during the conversation where it matters. You do not need to write a specification
or wait until a feature merges. Your agent should take on the interpretation, show the commitment,
and ask only about choices that would change its meaning.

## What is worth preserving?

Offer a promise when both are true: someone new to the code could reasonably break the rule because
it is not evident where it breaks, and a check can decide whether that specific rule holds.

A past regression is a strong clue. So is a commitment made in one part of the product that a change
elsewhere could accidentally undo. For example:

> An invited teammate can join an existing workspace without connecting another repository.

A passing case joins the intended workspace without adding a repository or changing CI. A failing
case requires a new repository before the person can join. An expired invitation needs its own
stated boundary; the agent should not invent one.

An implementation preference, a cosmetic change, or a prompt hint is not enough by itself. A hint
steering a model is not a guarantee unless a check can decide it. When an ordinary test or AGENTS.md
line is more useful, the agent can suggest that instead and wait for your yes before adding it.

## What does saying yes to an offer do?

The agent shows the commitment it wants to preserve and asks a direct question about recording it in
Balladeer. A yes or a generic go-ahead in response records that offer. A decline, silence, or
continuing without answering does not. If you ask for an explanation first, it explains and waits.

You can also request capture directly:

> Keep this as a Balladeer promise: an invited teammate can join an existing workspace without
> connecting another repository. Joining must not add a repository or change CI.

That request supplies permission to record the stated commitment. The agent reflects it, reuses an
existing matching promise where appropriate, and gives you the actual link after a successful write.
It should say plainly whether it recorded anything. A failed write is not a saved proposal.

## Is recording useful before formal agreement?

Yes. Discovery can return recorded promises with who recorded them, when, and the explicit label
**not agreed**. Your own recorded intent should guide your agent's relevant work. When it changes
the plan, the agent says so and asks once whether you want to agree it, change it, or drop it; work
can continue without an answer.

Where the workspace allows recorded promises to reach teammates, their agents also see them as
stated intent. They preserve applicable behavior unless directed to change it, expose a conflict
before acting, and name the recorder. If a recorded promise looks wrong, they can flag it so the
recorder is told. An administrator can turn this teammate visibility off.

This differs from explicitly [sharing tentative work for coordination](/docs/shared-work.md). Neither
route makes the behavior agreed or Protected.

## How do I agree the meaning?

The named owner can agree the current proposal in their own connected agent conversation or on its
Balladeer page. The agent shows the complete meaning and submits the exact displayed digest with the
owner's actual agreement words. A different connection owner or a changed proposal is refused.

Agreement makes the promise eligible for [agentic code review on push](/docs/check-on-push.md). There is
no requirement to complete sealed CI qualification first. A changed meaning needs fresh agreement;
asking to repair a check does not authorize changing the commitment.

## Can a proposal change before agreement?

Yes. Correct the behavior, cases, boundaries, or proposed owner. Your literal words remain distinct
from the agent's interpretation. Editing invalidates agreement against the previous displayed
version. No backlog of unanswered questions is required.

Capture Quiet favors brief interactions; Thorough allows more consequential clarification; Off
disables unsolicited offers while preserving explicit capture requests and authorized reads. The
agent should use the connection's current preference.
