Skip to content

Reap bookkeeping commits can sweep unrelated staged files #420

@EugeneTrapeznikov

Description

@EugeneTrapeznikov

Summary

stagePlotForCommit() and stageSeedsForCommit() stage .plot/ / .seeds/ and then run a plain git commit --no-verify. If an agent run leaves unrelated files staged before reap, Warren commits those files under chore(warren): plot state or chore(warren): seeds state.

Why this matters

The bookkeeping commit title implies a narrow carrier, but plain git commit consumes the entire index. In a repo with protected-path hooks, this can also bypass local commit hooks because the Warren-authored commit uses --no-verify.

Observed downstream in kessellab/kessel: a blocked build-component run left implementation and budget files staged after the agent commit was rejected by protected-path policy; reap then committed them under chore(warren): seeds state.

Expected behavior

Warren bookkeeping commits should be path-limited:

  • plot commit should commit only .plot/
  • seeds commit should commit only .seeds/issues.jsonl and .seeds/plans.jsonl
  • unrelated staged files should remain staged/uncommitted so dropped-commit detection or operator repair can handle them

Candidate fix

Use git commit --only -- <bookkeeping pathspecs> in the two reap helpers and add regression tests that assert unrelated staged files cannot be swept into the bookkeeping commit.

A downstream fork patch has been prepared in EugeneTrapeznikov/warren: EugeneTrapeznikov#2

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions