Skip to content

Most commits of the chain end with a Co-Authored-By line the host never asked for #72

Description

@PierreMardon

Status

Closed. Decided by the developer on 2026-10-07: the attribution on the commits is left to the settings of the host. Done by #97: the guide names the setting that turns it off, says to write it before the first plan when a commit hook refuses an attribution, and says why the chain does not write it for the host. The prompts say nothing of it. The measures and their sources are in the comments below, campaign by campaign.

What was seen

Counted in the six projects the campaign kept:

Case Commits with a Co-Authored-By line Commits
01-overdue-list 8 10
02-reservations 11 13
03-overdue-reminders 8 10
04-suspension 7 9
05-fine-cap 7 9
06-borrow-limit 7 9

The host's AGENTS.md gives its commit convention, <area>: <what changes>, and asks for no attribution. One session noticed and told the developer (03-overdue-reminders): "The commit message ends with the Co-Authored-By line from the attribution reminder."

Sources

  • Raw data, out of git: git log --all --format=%B in .evals/campaign-1/runs/*/run-01/work/lending.
  • The host's convention: evals/host/AGENTS.md.
  • Raw data for the message: .evals/campaign-1/runs/03-overdue-reminders/run-01/judge.json.

Cause

Claude Code adds the line by default, and the prompts of the chain only say to commit "following the repository's conventions". A convention that is silent on attribution does not turn the default off.

Why it matters

A host whose commit hook refuses an attribution, as this repository's does, would refuse the commits of the chain: each executor would meet the refusal and retry, in every slice. The chain creates no settings file, so it cannot turn the default off for the host.

Next

A decision of the developer, which nothing blocks on:

  • say in the prompts that a commit carries no attribution unless the host's conventions ask for one; or
  • leave it to the host's settings, and say so in the guide.

Activity

  1. PierreMardon commented on Oct 3, 2026

    @PierreMardon
    ContributorAuthor

    Counted again in campaign 2

    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.

    46 of the 58 commits of the six runs carry a Co-Authored-By line, as 48 of 60 did in campaign 1.

    Status

    Unchanged: confirmed, systematic, and a choice of the developer.

  2. PierreMardon commented on Oct 5, 2026

    @PierreMardon
    ContributorAuthor

    Counted again in campaign 3

    Campaign 3: five runs on three cases, played from the branch of #83. Raw data, out of git: git log --all --format=%B in the projects of .evals/campaign-3/runs/*/run-*/. Counted on 2026-10-05: this issue had not been counted again after that campaign.

    39 of the 49 commits of the five runs carry a Co-Authored-By line, as 46 of 58 did in campaign 2 and 48 of 60 in campaign 1. One of these runs lost its conformity on the name of the model in that line (#86).

    Status

    Unchanged: confirmed, systematic, and a choice of the developer.

  3. PierreMardon commented on Oct 5, 2026

    @PierreMardon
    ContributorAuthor

    Counted again in campaign 4: every commit of the chain, not four of five

    Campaign 4: seven runs on main with every fix so far, #87 and #88 included, and the harness of #89, #90 and #91, on the cases no campaign had played again, or once. 04-suspension, 05-fine-cap and 06-borrow-limit: one run played whole and one stopped at the hand over each. 02-reservations: one run stopped at the hand over. Report kept: evals/reports/2026-10-05-d139a1ca0dbe/report.md, compared with campaign 1, the only earlier runs of three of these cases. Raw data, out of git: .evals/campaign-4/. A value is the mean over the runs of a case, with its lowest and highest when they differ.

    27 of the 41 commits of the seven runs carry a Co-Authored-By line (git log --all --format=%B in the projects of .evals/campaign-4/runs/*/run-*/), as 39 of 49 did in campaign 3, 46 of 58 in campaign 2 and 48 of 60 in campaign 1.

    Read closer, the commits without one are always the same two: the host as the harness lays it down, and the install of the chain, both made by the harness before any session. 41 less 14 is 27: every commit a session of the chain makes carries the line, and "4 commits of 5" understated it.

    The same default now shows on the pull request: in 3 of the 6 runs that had a gh to call, the draft is opened with a line "Generated with [...]" under its description (#93). There the prompt already says what the description is, so that one is a fault and no choice.

    No plan and no blueprint of the seven runs names an attribution (#86, closed).

    Status

    Unchanged: confirmed, systematic, and a choice of the developer.

  4. PierreMardon commented on Oct 7, 2026

    @PierreMardon
    ContributorAuthor

    Decided by the developer

    Recorded on 2026-10-07. Of the two ways: the attribution is left to the host's settings, and the guide says so. The prompts of the chain say nothing of it, as they say nothing else of how a commit is written (#71, #88).

    A host whose commit hook refuses an attribution turns the default of its sessions off in its own settings: the guide is to say which setting, and why the chain does not do it for the host.

    Status

    Open, decided, not done yet. What is left to write: the paragraph of docs/guide.md.

  5. PierreMardon commented on Oct 7, 2026

    @PierreMardon
    ContributorAuthor

    Done by #97

    Merged on 2026-10-07. docs/guide.md has a section, "Attribution", after "Permissions":

    • the setting: attribution with commit and pr set to an empty string, in the .claude/settings.json of the project, read in the settings reference of Claude Code that day. "attribution": false hides both too, from version 2.1.281 only, and an older version skips the whole file that holds it: the guide does not offer it;
    • when: before the first plan, for a host whose commit hook refuses an attribution, since each agent would otherwise meet that refusal at its commit;
    • why the chain does not do it: its installer never writes the settings of Claude Code.

    ARCHITECTURE.md says the same in one sentence. No prompt changes, and the test that holds that none asks for an attribution or forbids one stays as it is.

    Nothing to measure: the commits of a campaign carry the line or not after the settings of the host the harness builds, which this does not touch.

    Status

    Closed.

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