Skip to content

Say what a non-interactive agent should do at the scope check (for discussion) - #54

Open
anakanemison wants to merge 1 commit into
mschaller/d1-project-agent-instructionsfrom
mschaller/d2-non-interactive-scope-check
Open

anakanemison wants to merge 1 commit into
mschaller/d1-project-agent-instructionsfrom
mschaller/d2-non-interactive-scope-check

Conversation

@anakanemison

Copy link
Copy Markdown

Part 19 of 23 of a stacked series (tracking issue: #35). Based on D1-project-agent-instructions, the previous part: review and merge that first.

Kind: discussion. Lab proposal: P4.

What the migration runs showed

Unattended agents never honored the step-1 confirmation. With this, every migrating run recorded scope_findings.

The change

The scope check tells the agent to surface custom commands, codegen and
non-system find_package uses "and confirm before proceeding". In a
non-interactive run there is nobody to confirm with. The skill does not say what to do instead,
so the agent proceeds and the findings the gate exists to surface are not
recorded anywhere.

Measured in any2bazel-lab: the gate was passed in 13 of 13
applicable non-interactive runs on small projects, and in every larger-
project run but one (which stopped with a correct scope report). The
outcomes were mostly good; what was lost is the audit trail.

Adds the fallback the proposal suggests: if no one can answer, record the
findings and the decision taken in any2bazel.json under "scope_findings"
(record-only; config.load ignores unknown keys; listed with the other
fields) and proceed, unless the not-yet-supported list applies, where the
stop holds even unattended. The fallback replaces the confirmation, not the
stop, so for an item on that list no answer still means stop and report.

In the lab's later runs with this change, every migrating agent recorded its
scope findings, and the YugabyteDB agent stopped with a scope report.

This is a proposal for discussion: whether an unanswerable gate should
become "record and proceed", or stay a stop the agent is expected to
honor, is the maintainers' design call.

Testing

pytest tests/ at this commit: 196 passed (130 on main).

🤖 Generated with Claude Code

…scussion)

The scope check tells the agent to surface custom commands, codegen and
non-system find_package uses "and confirm before proceeding". In a
non-interactive run there is nobody to confirm with. The skill does not say what to do instead,
so the agent proceeds and the findings the gate exists to surface are not
recorded anywhere.

Measured in any2bazel-lab: the gate was passed in 13 of 13
applicable non-interactive runs on small projects, and in every larger-
project run but one (which stopped with a correct scope report). The
outcomes were mostly good; what was lost is the audit trail.

Adds the fallback the proposal suggests: if no one can answer, record the
findings and the decision taken in any2bazel.json under "scope_findings"
(record-only; config.load ignores unknown keys; listed with the other
fields) and proceed, unless the not-yet-supported list applies, where the
stop holds even unattended. The fallback replaces the confirmation, not the
stop, so for an item on that list no answer still means stop and report.

In the lab's later runs with this change, every migrating agent recorded its
scope findings, and the YugabyteDB agent stopped with a scope report.

This is a proposal for discussion: whether an unanswerable gate should
become "record and proceed", or stay a stop the agent is expected to
honor, is the maintainers' design call.

Lab-Proposal: P4

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.

1 participant