Skip to content

fix(status): show the commit as the first step of a push - #288

Merged
angeloashmore merged 6 commits into
mainfrom
claude/github-issue-277-i11qki
Sep 5, 2026
Merged

fix(status): show the commit as the first step of a push#288
angeloashmore merged 6 commits into
mainfrom
claude/github-issue-277-i11qki

Conversation

@angeloashmore

@angeloashmore angeloashmore commented Sep 4, 2026

Copy link
Copy Markdown
Member

Resolves: #277
Resolves: #276

Description

prismic status reports model files with uncommitted git changes. It offers the commit and prismic push --force as equal options, with no reason for either.

An agent told to publish a finished article type read that, gave the choice back to the user, and stopped. It read the commit as git hygiene, which its own rules leave to the user.

status now gives the reason and lists the commit as step 1 under Next:, ahead of the push. It no longer offers --force. push says the same in its help text.

The harness now records the final message of each agent. A failed trial recorded only the commands it ran, so explaining this one needed a search through CI logs.

The agent commits and pushes in 14 of 15 trials, up from about half. The check-before-acting evals held.

The git check on push and pull does not change.

Checklist

  • If my changes require tests, I added them.
  • If my changes affect backward compatibility, it has been discussed.
  • If my changes require an update to the CONTRIBUTING.md guide, I updated it.

Preview

The end of prismic status, with one uncommitted model file:

Local-only:
  article (custom type)

Prismic keeps model history in git. Commit model changes before you push or pull them.

Next:
  git add customtypes/article/index.json
  git commit -m "Update Prismic models"
  prismic push  # creates 1, updates 0, deletes 0
  prismic pull  # creates 0, updates 0, deletes 1

How to QA 1

Run the eval. It runs an agent against a real account, so run it in a container or a disposable VM.

PRISMIC_ALLOW_EVALS=true node --run evals -- evals/sync-models.eval.ts -t "commits and pushes"

Read evals/results.local.json. Each trial lists the commands the agent ran, and push is in them.

To see the text alone, create a type with the CLI in a project that git tracks, leave the model file uncommitted, and run prismic status.

📌

🤖 Generated with Claude Code

https://claude.ai/code/session_01VWBMpcTzzQR7vxxVtbwYzS


Note

Low Risk
CLI messaging and eval reporting only; push/pull git enforcement behavior is unchanged per the PR description.

Overview
prismic status now explains that model history lives in git and builds a single Next: list that puts git add / git commit ahead of prismic push or pull. It no longer surfaces --force as a peer option when files are uncommitted, so agents and users see commit-then-sync as the intended path.

push, pull, and related help/error copy** align on the same git-history wording and clarify that --force skips the git check (not generic “safety checks”).

Eval harness persists each trial’s final agent text in results JSON (alongside commands), and toHaveRun failures can surface that message for debugging.

Reviewed by Cursor Bugbot for commit b327b88. Bugbot is set up for automated code reviews on this repo. Configure here.

Footnotes

  1. Please use these labels when submitting a review:
    ❓ #ask: Ask a question.
    💡 #idea: Suggest an idea.
    ⚠️ #issue: Strongly suggest a change.
    🎉 #nice: Share a compliment.

The results file recorded the commands an agent ran but not what it said
at the end. A trial that stops early leaves no record of why.

Each trial now records the agent's final message as `text`.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VWBMpcTzzQR7vxxVtbwYzS
`prismic status` presented the commit and `--force` as two peer options
and gave no reason for the commit. An agent read the commit as git
hygiene, and its own rules say a hygiene commit is the user's decision.
It stopped and asked instead of publishing the type.

`status` now says why the commit is needed and lists it as step 1 under
"Next:", ahead of the push. It no longer offers `--force`. The lines
under "Next:" are pasteable shell.

`push` and `pull` say the same reason in their help text and in their
uncommitted-files errors. `--force` stays in those errors as an escape
hatch.

The git check on `push` and `pull` does not change.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VWBMpcTzzQR7vxxVtbwYzS
The `pull --help` text called `--force` "Not recommended". In a project
that is not a git repository, `pull --force` is the only correct way to
adopt remote models. An agent read the label and stopped to ask instead
of pulling.

Both `--force` descriptions now state what the flag skips and nothing
more. `status` prints its reason inside the branch that builds the
commit step.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VWBMpcTzzQR7vxxVtbwYzS
The note repeated a sentence that `status` and the uncommitted-files
error already say. No eval trial needed it, and it was the only new text
read by an agent that stopped in a project without git.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VWBMpcTzzQR7vxxVtbwYzS

This comment was marked as outdated.

Brings in the serialized test matrix from #289.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VWBMpcTzzQR7vxxVtbwYzS
@angeloashmore
angeloashmore marked this pull request as ready for review September 5, 2026 00:27
@angeloashmore
angeloashmore merged commit 1fb48dd into main Sep 5, 2026
15 of 16 checks passed
@angeloashmore
angeloashmore deleted the claude/github-issue-277-i11qki branch September 5, 2026 01:04
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.

evals: agent stops at status and does not push a finished type evals: agent stops before it runs prismic init

3 participants