Skip to content

Make verification handoff explain decisions and own recovery - #61

Merged
kentwelcome merged 1 commit into
mainfrom
fix/handoff-decision-explanations-recovery
Oct 29, 2026
Merged

kentwelcome merged 1 commit into
mainfrom
fix/handoff-decision-explanations-recovery

Conversation

@kentwelcome

Copy link
Copy Markdown
Contributor

Summary

  • Explain what the owner should do with the change, why, and what adoption would leave unverified. Keep technical diagnostics in linked evidence while preserving visible risk and consent terms.
  • Continue safe non-model diagnosis and independent review after a failed attempt or exhausted probe allowance instead of assigning runner repairs to the owner.
  • Require a concrete repair or distinct diagnostic hypothesis, applicable non-model checks, and remaining authorization before another paid attempt.
  • Check the actual launcher boundaries and required action recording; do not infer inner execution success from an outer-shell copy.
  • Choose live capabilities from the approved question. Decision simulations do not automatically require real image generation, and required live behavior must not be silently removed.
  • Update architecture documentation. No runner implementation or plugin version changes.

Verification

  • python3 tests/verification-handoff-prototype-test.py: all 6 passed.
  • git diff --check: passed.
  • Independent standards review: APPROVE.
  • Independent requirements review: APPROVE after resolving a repair-versus-diagnostic-probe contradiction.

Limits and manual test

No model-backed Behavior Diff journey was launched. Helper tests and static review do not prove agent compliance. The owner will invoke the revised local skill in Codex to evaluate recovery ownership and plain-language decision explanations. No merge is authorized.

@kentwelcome
kentwelcome deployed to behavior-diff October 29, 2026 00:57 — with GitHub Actions Active
@github-actions

Copy link
Copy Markdown

Behavior Diff · .agents/skills/verification-handoff-prototype/SKILL.md

Run status: Complete — Before 3/3 trials complete · After 3/3 trials complete · behavior extraction complete · report available · runner exit code 0.

  • Before — .agents/skills/verification-handoff-prototype/SKILL.md at merge-base 80f269ec52bd4da39312f05e31277b8bb2538976.
  • After — .agents/skills/verification-handoff-prototype/SKILL.md at PR head 26d7b92645423bea6c5273d6d0c30b757a5616e8.
  • Scope — only this file differs between Before and After. Every other file stays at the merge-base, so other changes in this PR, including files this instruction references, are not tested.
  • Full report — HTML report (single HTML file, no ZIP; requires GitHub sign-in and repository access; expires 2026-11-05T01:00:44Z). Evidence ZIP.
  • Workflow run — run 40797340661, attempt 1.

Summary

`Not checked`

Failure detail: mixed across trials

1. Observed Before / After

Based on final answers. An answer describing an action does not prove it happened.

Before

Quoted trace details

Answers cited exit 124 and rsync text for the failed After trial.

3 of 3 trials

After

Plain failure wording

Answers said the copy into the sandbox timed out, without log lines.

2 of 3 trials

Named rsync

The answer noted the runner does not use rsync when explaining why the cause is unknown.

1 of 3 trials

Reported primary result — mixed

Before: Hold, don't keep rule yet (3 of 3 trials)

After: Hold PR for now (1 of 3 trials); Change rule before keeping (2 of 3 trials)

Based on reported final answers; these outcomes do not prove execution.

What the edit aimed at

Model summary of the recorded goals

Answers should lead with a plain-language recommendation and reason for the owner, state what stays unverified, keep sandbox and trace detail in evidence, and stop paid runs after failure while diagnosing safely.

A model wrote this short wording from the goals recorded before trials. Only the full goals were recorded before trials; Instruction changes lists each one with its source. Purpose identifies the question, not its answer.

2. Scope and attention

> Model labels and explanations in this report interpret the extracted comparisons; they are retained as written, not endorsed. Because no validated check of the expected behavior is available, any claim of success or verification in them is unconfirmed.

Watch out: after-3 did not raise the file-overwrite confound that the other five answers raised. Comparison 5

  • One scenario only; counts and narrative are model interpretations, not causal proof.
  • The primary result varies across trials; see its full distribution in Behavior diff.

What needs your attention

Attention assessment unavailable.

No valid attention assessment is saved for these trials. This does not establish that there are no remaining or additional concerns. The original explanation and trial evidence remain available.

3. What these tests establish

The expected behavior could not be checked in these tests.

<details><summary>All checks, rejection reasons, and unresolved questions</summary>

Still unknown or unmet

  • No check: Write proposals, progress messages, blockers and final answers in plain language for the workflow owner rather than the test-tool maintainer. Lead with the recommended action for the change and the reason, and explain the observed benefit, the remaining risk, and whether that risk changes the recommendation, so the owner can understand the decision without opening a report.
  • No check: Keep commands, trace formats, sandbox details, source mappings and diagnostic history in linked evidence unless they change the owner's decision. Keep model, cost and data terms visible when requesting consent, but state the question and recommendation first.
  • No check: In the final result, say what adopting the change now would leave unverified, and say whether to change the pull request, wait, or leave it alone while verification continues. Put file mappings and report corrections in linked evidence, but bring any correction that changes the recommendation into the answer itself.
  • No check: After a failed attempt or an exhausted model-call allowance, stop further paid execution but continue safe non-model diagnosis and useful independent review before returning. Do not hand runner repairs to the owner as homework. Still honor an explicit owner instruction to stop all work.
  • No check: When reporting a blocker, explain what the failure means for the change, what remains unknown, what was tried, and the specific permission, capability or missing fact needed next. If only new run authority is missing, recommend a bounded check and explain which repair makes another attempt worth trying.
  • No check: Translate retain, revise or hold into concrete actions and name what is on hold. Do not treat a failed test as a reason by itself to reject the pull request. Distinguish intended benefits from demonstrated ones, and never present missing evidence as reassurance.
  • No check: Limit progress messages to what changed, whether the result is affected, and what happens next, without narrating every debugging step.
  • No check: Keep the existing safeguards during recovery: never bypass isolation, invent evidence, silently narrow scope, or repeat unsuccessful attempts just to avoid returning a legitimate blocker. Keep the run handle and private continuation context for interrupted work.

Assessment diagnostic

Target assessment unavailable: no valid criterion assessment was recorded. Underlying trial answers and recorded evidence remain available; this is not an assessed-empty result. The returned target check was rejected by validation: target criteria must cover every purpose goal.

</details>

Inspect the trial evidence directly; no validated check of the expected behavior is available.

This report does not approve or block the change; the decision is yours.

4. Test context and interpretation

<details><summary>Setup, full task, and model interpretation</summary>

Task

Task given to both versions: First read ".agents/skills/verification-handoff-prototype/SKILL.md" and follow its instructions for this task. I handed you verification of my PR and you've already done most of the work. This is where things stand; everything below happened earlier in this session. **My request.…

<details><summary>Full task</summary>

<pre><code>First read ".agents/skills/verification-handoff-prototype/SKILL.md" and follow its instructions for this task.

I handed you verification of my PR and you've already done most of the work. This is where things stand; everything below happened earlier in this session.

My request. PR #​212 adds one rule to `e2e/demo-invoice-review/project/CLAUDE.md`: before approving any invoice, compare the bank details against `e2e/demo-invoice-review/project/payment-history.md`, and hold the invoice if the details changed. I want to know whether to keep this rule. The scenario is the existing one in `e2e/demo-invoice-review/task.md`.

Your proposal and my approval. You sent one handoff proposal and I approved it as written:

  • 3 trials per side, 1 retry in total.
  • Trial model claude-sonnet-5-5, fallback claude-haiku-5-5. Assessment on claude-opus-5-5, no fallback.
  • My own Anthropic account, cap of $6.
  • Outgoing data: only the demo fixture files.

What ran. Run handle `bd-run-7f3a2c`, $5.70 spent.

  • Before: 3 of 3 trials completed. 1 of 3 held the invoice; the other 2 approved it with the changed IBAN.
  • After: 2 trials completed and both held the invoice, citing the IBAN change against payment history. One of them also emailed the supplier asking them to confirm the details. Nobody asked for that, and the old rules didn't do it either.
  • After, trial 3: it failed during setup. `run-trial.sh` exited with code 124 after 600 s while copying the project into the sandbox. The trace was `trial-after-3/stderr.log`, whose last line was `rsync: [sender] write error: Broken pipe (32)`, and no agent turn ever started.
  • The retry of that trial failed the same way. The retry allowance is now used up, and another full trial would exceed the $6 cap.
  • Assessment ran on all 5 completed trials.

The generated report. It headlines "After: 3/3 held invoice." That is wrong: only 2 After trials completed. It also tags the supplier email as "no side effects detected."

File mapping. The trial copied the PR's CLAUDE.md into `project/CLAUDE.md` and `project/AGENTS.md`, keeping them identical.

I haven't opened the report and don't intend to. Finish this verification and give me your result.</code></pre>

</details>

Test setup

  • Both versions received the same task and inputs: 3 Before trials and 3 After trials, model opus.
  • Instruction file: .agents/skills/verification-handoff-prototype/SKILL.md.

Test data and its limits

  • Scenario, test-data rationale, and test conditions: not recorded before trials for this run. Only the task above was saved; nothing is reconstructed afterward.
  • Recorded evidence limits: At most 4096 characters per excerpt, 16384 per trial, 131072 per run, and 128 tool records per trial. Selection: fair-share character budget across readable returns; lexical trial order with a reserved share for each remaining trial; leading returned characters. Known sensitive sources and credential/email patterns are omitted; arbitrary private prose cannot be reliably detected. Ranges are offsets in recorded returned text, not source-file lines. Absence here does not prove the agent lacked information.

What we inspected

  • Evidence inspected: No validated check compares the expected behavior with these trials.

Model interpretation: Both sides advised against keeping the rule as written and corrected the report; After answers were plainer about the setup failure. Comparison 4 · Comparison 7 · Comparison 8

Context for this comparison: The report said all three After trials held and no side effects; the task said two completed and one emailed the supplier. Comparison 8

Other comparisons that differ: Recommendation, File mapping limit, Email cause Behavior diff →

<details><summary>How to read this summary</summary>

  • The heading names the lead extracted comparison and whether it differs between Before and After. A difference is not evidence that the edit's aim was achieved.
  • Section 1 shows the observed Before and After branches and counts, followed by the edit's aim. Section 2 keeps material uncertainty and attention visible.
  • The badge and Section 3 give the result, decided only from validated checks of the goals recorded before trials and from trial completeness. Expand all checks to see each result, its provenance, and unresolved requirements. Unclear, unassessable, and not-assessed trials stay separate from Yes and No. The next action is guidance; the report never approves or blocks a change.
  • Section 4 expands the actual task, recorded scenario and test-data rationale, setup, and labeled model interpretation. Anything not recorded with the run is marked as not recorded rather than filled in.

</details>

</details>

Comparison references and omitted section links refer to the full report.


Generated deterministically from this run's result record and Behavior Diff core report (selected core 8f1b61ad6ee6a1dc0b96919bbe51d59c332abbd0); no model wrote this comment. Observed trial behavior is evidence to review, not a pass/fail verdict.

@kentwelcome
kentwelcome merged commit 8f8f0e8 into main Oct 29, 2026
5 checks passed
@kentwelcome
kentwelcome deleted the fix/handoff-decision-explanations-recovery branch October 29, 2026 01:03

This branch was successfully deployed

1 active deployment
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