Skip to content

fix: reduce crewmate status wake noise - #6

Merged
kunchenguid merged 2 commits into
mainfrom
chore/brief-status-cadence
Jun 12, 2026
Merged

fix: reduce crewmate status wake noise#6
kunchenguid merged 2 commits into
mainfrom
chore/brief-status-cadence

Conversation

@kunchenguid

Copy link
Copy Markdown
Owner

Intent

Reduce firstmate wake noise from crewmate status reporting. The captain observed that crewmates write FYI-ish status lines (e.g. 'installed dependencies', 'attached chrome-devtools-axi') that each wake the supervising firstmate agent for no actionable reason. Tighten the brief scaffold's reporting rule (rule 4 in bin/fm-brief.sh) so crewmates append status lines only on real phase changes a supervisor would act on (setup done, bug reproduced, fix implemented, validation passed) plus the needs-decision/blocked/done/failed states, and explicitly not step-by-step progress - firstmate peeks the tmux pane for that. Deliberate decisions: keep the same status file mechanism and state vocabulary unchanged; the change is wording-only in the scaffold heredoc, no behavior change to any script logic; the rationale sentence 'Each append wakes firstmate' is intentionally included so crewmate agents understand why sparse reporting matters.

What Changed

  • Tightened the fm-brief.sh scaffold so crewmates report only supervisor-actionable phase changes plus needs-decision/blocked/done/failed states.
  • Added brief wording that each status append wakes firstmate and that step-by-step FYI progress should stay out of status files.
  • Documented the sparse crewmate status cadence in AGENTS.md.

Risk Assessment

✅ Low: The branch only tightens wording in the brief scaffold without changing script behavior, and the new guidance matches the watcher/status-file contract.

Testing

Exercised the actual brief-scaffolding CLI path and captured the generated crewmate-facing markdown; no automated test suite exists for this repo, no lint/static analysis was run, the transient worktree fixture was removed, and the generated brief directly demonstrates the intended sparse status-reporting rule.

Evidence: Generated crewmate brief showing sparse status cadence rule

Lines 17-21 show: States: working, needs-decision, blocked, done, failed. followed by Each append wakes firstmate, so report sparingly: only phase changes a supervisor would act on (setup done, bug reproduced, fix implemented, validation passed) and the needs-decision/blocked/done/failed states. No step-by-step FYI progress lines; firstmate reads your pane for that.

You are a crewmate: an autonomous worker agent managed by firstmate. Work on your own; do not wait for a human.

# Task
{TASK}

# Setup
You are in a disposable git worktree of demo-repo, at a detached HEAD on a clean default branch.
1. First action: create your branch: `git checkout -b fm/status-cadence-e2e-01kty`
2. Run `no-mistakes doctor`; if it reports the repo is not initialized here, run `no-mistakes init`.

# Rules
1. Never push to the default branch. Never merge a PR.
2. Stay inside this worktree; modify nothing outside it.
3. Use gh-axi for GitHub operations and chrome-devtools-axi for browser operations.
4. Report status by appending one line:
   `echo "{state}: {one short line}" >> /Users/kunchen/.no-mistakes/worktrees/016d88035d58/01KTYFNG7DD7NG5V3S3TFVC493/state/status-cadence-e2e-01kty.status`
   States: working, needs-decision, blocked, done, failed.
   Each append wakes firstmate, so report sparingly: only phase changes a supervisor
   would act on (setup done, bug reproduced, fix implemented, validation passed) and the
   needs-decision/blocked/done/failed states. No step-by-step FYI progress lines;
   firstmate reads your pane for that.
5. If you hit the same obstacle twice, append `blocked: {why}` and stop; firstmate will help.
6. If a decision belongs to a human (product choices, destructive actions, ask-user findings),
   append `needs-decision: {summary of options}` and stop. Firstmate will reply with the decision.

# Definition of done
The task is complete only when committed on your branch.
When you believe it is complete, append `done: {summary}` to the status file and stop.
Firstmate will then instruct you to run /no-mistakes to validate and ship a PR.
During validation, fix auto-fix findings yourself; escalate ask-user findings per rule 6.
After /no-mistakes reports CI green, append `done: PR {url} checks green` and stop. You are finished.

Pipeline

Updates from git push no-mistakes

✅ **intent** - passed

✅ No issues found.

✅ **Rebase** - passed

✅ No issues found.

✅ **Review** - passed

✅ No issues found.

✅ **Test** - passed

✅ No issues found.

  • Inspected the target diff with git diff --stat 683b8cf2ab701edca9209656812b61c9f5ff2656..ad561356880e2df9df9a9ffb4c78b7f78d127e7b.
  • Confirmed there are no repository test files or package test scripts via file discovery.
  • Ran the end-user CLI path: bin/fm-brief.sh status-cadence-e2e-01kty demo-repo.
  • Verified the generated data/status-cadence-e2e-01kty/brief.md includes the unchanged state vocabulary, the Each append wakes firstmate rationale, the allowed phase-change examples, and the No step-by-step FYI progress lines instruction.
  • Copied the generated brief to /var/folders/5x/4nqprlbx0518k3ybcb1sz6gr0000gn/T/no-mistakes-evidence/01KTYFNG7DD7NG5V3S3TFVC493/generated-brief-status-cadence.md.
  • Removed the transient generated worktree fixture with rm -rf data/status-cadence-e2e-01kty and verified git status --short was clean.
✅ **Document** - passed

✅ No issues found.

✅ **Lint** - passed

✅ No issues found.

✅ **Push** - passed

✅ No issues found.

@kunchenguid
kunchenguid merged commit 8b6f11a into main Jun 12, 2026
3 checks passed
@kunchenguid
kunchenguid deleted the chore/brief-status-cadence branch June 12, 2026 18:05
@bryceeppler

Copy link
Copy Markdown

Fork pushed: https://github.com/bryceeppler/firstmate/tree/sandboxed-crewmates (f7db9fe). All acceptance criteria verified - see the implementation comment above.

andrew-kim-techtorch referenced this pull request in andrew-kim-techtorch/firstmate Jul 7, 2026
…hment requirement

Proven live on PR #11 and PRs #6-#8: github.com/<owner>/<repo>/raw/<sha>/<path>
renders inline for authenticated members on private repos; raw.githubusercontent.com
does not. Attachment upload (browser-only) is no longer needed.

Convention: commit PNGs to docs/pr-screenshots/<task-id>/ and reference via
github.com/<owner>/<repo>/raw/<commit-sha>/<path> in the PR body table.

fm-pr-body-check --ui now accepts github.com/.../raw/... URLs in addition to
existing GitHub attachment URL patterns; blob links still fail.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
andrew-kim-techtorch referenced this pull request in andrew-kim-techtorch/firstmate Jul 7, 2026
)

* feat(bin): add PR body conventions to ship briefs and body-check script

Add a PR body conventions block to ship briefs (no-mistakes and direct-PR
modes) so crewmates always receive clear guidance: lead with the requirement
satisfied, use rendered screenshots from raw.githubusercontent.com or GitHub
attachments (never local /var/folders/private/tmp/Users paths), and present
before/after side by side in a table.

Add bin/fm-pr-body-check.sh that firstmate runs before relaying any PR as
ready; --ui mode also asserts at least one rendered image is present.
Wire a one-line reference into AGENTS.md section 7 PR ready.
Add tests/fm-pr-body-check.test.sh covering the full pass/fail matrix.

* fix(bin): correct PR screenshot convention for private repos

raw.githubusercontent.com URLs do not render inline on private repos
(GitHub image proxy cannot authenticate). Update the ship-brief PR body
conventions and fm-pr-body-check to reflect the correct approach:

- Commit screenshots under docs/pr-screenshots/<task-id>/ and reference
  them as clickable blob links; authenticated reviewers can open these.
- Flag in the PR body when inline rendering is wanted so a human can
  upload images as GitHub attachments (browser drag-drop only).
- fm-pr-body-check now always fails on raw.githubusercontent.com refs,
  in addition to local filesystem paths.
- --ui screenshot detection expanded to match blob links to image files
  as well as inline GitHub attachment images.
- 11 tests covering the full pass/fail matrix.

* fix(bin): require GitHub attachment URLs for --ui inline screenshots

Blob links (github.com/.../blob/...) open in a browser tab but do not
render inline in the PR body. The universal inline method for any GitHub
repo (public or private) is GitHub attachments, served from
user-attachments/assets or <owner>/<repo>/assets URLs.

Update ship-brief conventions: attachment URLs required for inline
rendering; commit source PNGs under docs/pr-screenshots/ for history;
flag the need for a human to perform the browser drag-drop upload.

Update fm-pr-body-check --ui: pass only when the body contains at least
one attachment-style URL; blob links no longer satisfy the check.
10 tests covering the full pass/fail matrix.

* chore: ignore .serena/ tool state directory

* no-mistakes(review): fail loudly on PR body fetch errors in fm-pr-body-check

* no-mistakes(document): docs: sync pr-body-check script into scripts, tests, and brief-contract docs

* fix(bin): use github.com/raw/<sha> for inline screenshots, drop attachment requirement

Proven live on PR #11 and PRs #6-#8: github.com/<owner>/<repo>/raw/<sha>/<path>
renders inline for authenticated members on private repos; raw.githubusercontent.com
does not. Attachment upload (browser-only) is no longer needed.

Convention: commit PNGs to docs/pr-screenshots/<task-id>/ and reference via
github.com/<owner>/<repo>/raw/<commit-sha>/<path> in the PR body table.

fm-pr-body-check --ui now accepts github.com/.../raw/... URLs in addition to
existing GitHub attachment URL patterns; blob links still fail.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
vipentti pushed a commit to vipentti/firstmate that referenced this pull request Aug 5, 2026
* fix(brief): report status on phase changes only, not every step

* no-mistakes(document): Document sparse crewmate status cadence
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.

2 participants