Skip to content

The return of the Plan agent is repaired by the command, which then reports the repair as a deviation #70

Closed

Description

@PierreMardon

Status

Closed. Fixed by #79, verified on 6 runs in campaign 2. Why a return arrived escaped once stays unexplained. The measures and their sources are in the comments below, campaign by campaign.

What was seen

  • 01-overdue-list: "- One deviation: the Plan agent's return reached me with < and > HTML-escaped. I wrote plan.md with the real characters, because the <!-- slice:1 --> marker has to be literal. Otherwise it is as returned."
  • 03-overdue-reminders: "Two plan documents are not verbatim: - I wrote the 'Critical Files' list in plan.md with repo-relative paths instead of the absolute paths the planner returned, because the plan folder is committed."

Both repairs were right, and both were told to a developer who never reads the plan: the judge counts them as noise and as vocabulary of the chain.

Sources

  • Report of campaign 1, committed: following.no-noise, messages.clear.
  • Raw data, out of git: .evals/campaign-1/runs/01-overdue-list/run-01/ and .evals/campaign-1/runs/03-overdue-reminders/run-01/ (judge.json, run.json).

Cause

Step 6 of /surface-plan, skills/surface-plan/SKILL.md line 78: "Write that return to plan.md as it is: its design and its form are the agent's, and you rework neither." The same command must also keep the paths of the machine out of the plan folder (line 75), and the state script reads the slice markers as literal text. A return that breaks one of these leaves the command between two rules: it repairs, and owns up to it.

The template of the plan does say "no path of a machine" (templates/plan.md line 5): the built-in agent listed its "Critical Files" with absolute paths all the same.

A command that took "as it is" to the letter would write escaped markers: the script would find no slice, and planning would stop after its second attempt.

Next

  • Fix: step 6 names the repairs of transport the command makes without a word to the developer, markers and tags that arrived escaped, a path of the machine; the template asks for paths from the root of the repository.
  • Measure: the hand overs of the next campaign no longer report them.

Activity

  1. PierreMardon commented on Oct 3, 2026

    @PierreMardon
    ContributorAuthor

    Measured in campaign 2: no hand over reports a repair

    Campaign 2: 01-overdue-list and 03-overdue-reminders, three runs each, on main with the four first fixes (#78, #79, #80, #81). Report kept: evals/reports/2026-10-03-e830bc236e9b/report.md. Raw data, out of git: .evals/campaign-2/. In the tables, a value is the mean over the three runs, with its lowest and highest when they differ.

    None of the twelve hand overs of the six runs tells of a return that arrived escaped, of paths rewritten or of a document "not verbatim". In campaign 1, the first hand over of both of these cases did.

    Whether a return needed a repair in these runs is not known: the point of the fix is that the developer is no longer told. Why a return arrived escaped once stays unexplained.

    Status

    Fixed by #79, verified on six runs. Closing.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions